REST_REDUCTION_VISIBILITY_IMPLEMENTATION_PLAN - TheDaniel166/moira GitHub Wiki
REST Reduction Visibility Implementation Plan
Status: active implementation plan
Purpose
This document defines the implementation sequence for bringing the Moira REST surface into full alignment with the reduction-visibility contract.
It is not the contract itself. It is not the audit ledger.
Those roles remain owned by:
This plan governs rollout order, transport shape decisions, verification obligations, and deferral discipline.
1. Governing Objective
The REST API must not collapse facade-visible computational truth into an opaque final-only transport when the engine already exposes meaningful reduction, policy, fallback, classification, or branch truth.
The implementation goal is therefore:
- preserve compact consumer-facing routes where useful
- add lawful reduction access without breaking existing callers
- keep transport truth summary-grade rather than exposing unstable internal implementation details
- expand route families in a controlled order, starting with foundational surfaces
2. Current Baseline
As of 2026-06-04:
positionsis the first fully remediated pilot family- compact routes remain:
/v1/positions/planet/v1/positions/sky
- sibling reduction routes now exist:
/v1/positions/planet/reduction/v1/positions/sky/reduction
- compact routes remain:
chartnow has a sibling reduction route:/v1/chart/reduction
transitsandrelationshipalready preserve substantial doctrinal truthprimary-directionsnow has a sibling reduction route on the core arc-search surface:/v1/primary-directions/arcs/reduction
primary-directionssearch-derived routes now also include:/v1/primary-directions/profile/reduction/v1/primary-directions/network/reduction
progressionschart-producing routes now have sibling reduction routes:/v1/progressions/secondary/reduction/v1/progressions/secondary-declination/reduction/v1/progressions/arc/reduction/v1/progressions/time-key/reduction
progressionsfamily completion routes now also include:/v1/progressions/house-frame/reduction/v1/progressions/house-frame/arc/reduction/v1/progressions/profile/reduction/v1/progressions/network/reduction
- several other route families are structurally healthy but inconsistent in how directly they expose reduction truth
This baseline is tracked in the live audit:
3. Rollout Strategy
The rollout proceeds in four waves.
Wave 1: Foundational Surface Closure
Goal:
- make the foundational entry surfaces reduction-visible
Status:
- implemented as of 2026-06-04 on the current admitted surface
Families:
charthousesonly as needed for symmetry with chart-level reduction transport
Primary deliverables:
- add a lawful chart reduction surface
- expose normalized datetime and Julian-day reduction
- expose observer context when present
- expose chart assembly policy actually applied
- expose per-body reduction summaries without requiring callers to reconstruct them body-by-body from separate endpoints
Preferred transport shape:
- sibling reduction endpoint
/v1/chart/reduction
Why:
- it preserves the current compact
/v1/chartcontract - chart reduction is heavier than the positions reduction payload
- the chart route is foundational enough that a separate truth surface is easier to keep stable
Exit criteria:
- a chart reduction route exists
- compact
/v1/chartremains backward-compatible - chart reduction includes enough information to explain how each returned body reached transport form
Current state:
- satisfied by
/v1/chart/reduction housesremains compact, with later sibling expansion left optional rather than required for wave closure
Wave 2: Doctrinal Tension Closure
Goal:
- resolve families whose current transport language explicitly understates engine truth
Status:
- implemented as of 2026-06-04 on the current search-derived route family
Families:
primary-directions
Primary deliverables:
- remove any transport posture that implies permanent omission of policy truth
- add a lawful path to fuller reduction or policy surfaces
- preserve current compact or opt-in ergonomics where possible
Preferred transport shape:
- likely sibling reduction routes or stronger expansion flags
- this family should not be widened casually on the main result routes
Exit criteria:
- no model or serializer language remains in open tension with the service contract
- a caller can inspect direction doctrine, policy, and branch truth without reading engine internals directly
Current state:
- satisfied on the search-derived route family through:
/v1/primary-directions/arcs/reduction/v1/primary-directions/profile/reduction/v1/primary-directions/network/reduction
speculumremains compact-first and may remain so unless a later service decision requires a sibling truth surface
Wave 3: Family Consistency Sweep
Goal:
- normalize partially compliant families so that similar truth domains are exposed through similar transport conventions
Status:
- started as of 2026-06-04 on the progression chart-producing routes
Families:
progressionstimelordsreturnsvarshaphalvisibilityphenomena
Primary deliverables:
- route-by-route audit against the now-stabilized pattern
- add reduction flags or sibling reduction routes where real gaps remain
- align field naming for:
- computation truth
- classification
- relation
- condition profile
- observer context
- policy actually applied
Exit criteria:
- no major family remains merely "accidentally partial"
- comparable route families use comparable truth vocabulary
Current state:
progressionsis now functionally closed at the family levelhouse-frame/cuspsremains intentionally compacttimelords,returns,varshaphal,visibility, andphenomenaremain unswept in Wave 3 terms
Wave 4: Aggregate Surface Integrity
Goal:
- ensure aggregate routes do not erase per-item reduction truth
Status:
- started as of 2026-06-04 on
batch/chartsandbatch/progressions
Families:
batch- any multi-result wrappers introduced later
Primary deliverables:
- preserve or embed per-result reduction where the wrapped family already has a lawful truth surface
- define when aggregate routes may intentionally omit reduction for payload economy and how the caller recovers it
Exit criteria:
- aggregation does not silently black-box already-compliant route families
Current state:
/v1/batch/charts/reductionnow preserves per-item chart reduction truth/v1/batch/progressions/reductionnow preserves per-item progression reduction truth- compact
batch/transitsand transit/ingress-stylebatch/eventsalready preserve embedded wrapped-family truth through their event payloads batch/returnsremains bounded by the weaker directreturnsfamily- heterogeneous
batch/eventsremain mixed because not every event subtype has the same admitted reduction depth - Wave 4 is therefore started but not closed
4. Transport Shape Rules
This plan freezes the following implementation preferences.
4.1 Compact Base Routes Stay Compact
Do not widen every existing response with large optional reduction fields by default.
Reason:
- backward-compatibility
- payload economy
- easier client migration
4.2 Prefer Sibling Reduction Endpoints For Heavy Foundational Routes
Preferred examples:
/v1/chart/reduction/v1/positions/planet/reduction/v1/positions/sky/reduction
Use sibling reduction endpoints when:
- the reduction payload is large
- the family is foundational
- the same request body can be reused cleanly
4.3 Use Expansion Flags Only When The Truth Surface Is Modestly Additive
Use include_* style expansions when:
- the payload increase is small
- the route already uses opt-in enrichment
- the truth being added is structurally subordinate to the main result
Likely candidates:
- parts of
primary-directions - selective
progressionsenrichments
4.4 Do Not Expose Unstable Internal Implementation State
Reduction transport should preserve:
- admitted stage sequence
- applied policy
- branch/fallback/classification truth
- normalized inputs
- observer context
Reduction transport should not promise:
- volatile helper-level internals
- debug-only intermediate vectors
- unstable substrate-private caches
5. Implementation Order
The concrete next steps are:
- Audit whether
housesneeds a sibling reduction endpoint or only chart-level embedding. - Decide whether
primary-directions/speculumshould remain compact-only or gain a sibling reduction route. - Sweep
timelords. - Sweep
varshaphal,visibility, andphenomena. (returns direct family now complete with embedded reduction contract + controls.) - Update
batch/returnsnow that direct returns has a family-level reduction contract (embedded computation_truth). - Revisit heterogeneous
batch/eventsonly after the weaker event subtypes have stronger family-level truth surfaces.
Sequencing law:
- do not start broad family consistency work until
chartis closed - do not widen aggregate routes before the embedded families stabilize
6. Verification Liturgy
Each implementation wave must satisfy both transport and behavioral checks.
6.1 Transport Checks
For each remediated route family:
- server route tests must verify compact-route backward compatibility
- server route tests must verify reduction-route truth presence
- validation-envelope behavior must remain unchanged for malformed input
- response models must remain strict (
extra="forbid")
6.2 Truth Checks
Reduction-route tests should verify, where relevant:
- normalized datetime and Julian-day truth
- observer context
- policy actually applied
- fallback or effective-system truth
- classification truth
- admitted stage sequence
- result/reduction agreement
6.3 Deferral Honesty
If a family is judged too underdetermined for immediate remediation:
- record the reason in the audit
- do not mark the family compliant prematurely
- do not hide the gap behind "future expansion" language
7. Non-Goals
This plan does not authorize:
- replacing the engine-facing facade with REST-first semantics
- exposing raw debug internals as if they were stable public doctrine
- refactoring unrelated route families for aesthetic uniformity
- breaking existing compact-route clients unless a separate compatibility decision is made explicitly
8. Completion Standard
This roadmap is complete only when:
- every foundational family has a lawful reduction path
- every partially compliant family has been either remediated or explicitly deferred with a stated reason
- no service-layer document still frames transport opacity as an intended endpoint
- batch and aggregate routes preserve, rather than erase, already-admitted reduction truth
Until then, the audit remains the live state ledger and this plan remains the governing rollout sequence.