Epic D: Legacy vs Recalculated Scoring Truth Model
Summary
Define and implement a clear scoring truth model so migrated data can preserve legacy values while supporting recalculated accuracy with explicit governance and auditability.
Why This Epic
Migration workflows currently need both historical and corrected score views. Without an explicit truth contract, standings, UI totals, and exports can become inconsistent.
Goals
- Preserve both imported legacy scores and recalculated scores.
- Define one canonical source for active standings.
- Add traceable reconciliation and sign-off controls.
- Ensure exports and API payloads expose score source decisions.
Non-Goals
- Replacing scoring rule implementation in this phase.
- Removing legacy score visibility from migration audit surfaces.
User Stories
Story D1: Define canonical scoring truth contract for migrated records
As a product owner, I want a written scoring truth contract so all runtime and review surfaces follow the same rules.
Story D2: Persist legacy imported score alongside recalculated score
As an engineer, I want both score channels persisted so we never lose historical context.
Story D3: Define which score drives standings and UI totals
As an operator, I want one active score source selected for standings so user-visible totals are deterministic.
Story D4: Add reconciliation status and sign-off state machine
As a reviewer, I want reconciliation states and sign-off transitions so activation decisions are auditable.
Story D5: Add operator override/governance path for exceptional legacy handling
As a team lead, I want controlled override paths for edge cases so exceptions are handled without data tampering.
Story D6: Add audit fields and exports that expose both values and chosen truth source
As an auditor, I want exports to include both score values and active source metadata so decisions are defensible.
Definition of Done
- Dual score channels are persisted and queryable.
- Active standings source is explicit and consistent across API/UI/exports.
- Sign-off and override actions are auditable with actor and timestamp metadata.
Epic D: Legacy vs Recalculated Scoring Truth Model
Summary
Define and implement a clear scoring truth model so migrated data can preserve legacy values while supporting recalculated accuracy with explicit governance and auditability.
Why This Epic
Migration workflows currently need both historical and corrected score views. Without an explicit truth contract, standings, UI totals, and exports can become inconsistent.
Goals
Non-Goals
User Stories
Story D1: Define canonical scoring truth contract for migrated records
As a product owner, I want a written scoring truth contract so all runtime and review surfaces follow the same rules.
Story D2: Persist legacy imported score alongside recalculated score
As an engineer, I want both score channels persisted so we never lose historical context.
Story D3: Define which score drives standings and UI totals
As an operator, I want one active score source selected for standings so user-visible totals are deterministic.
Story D4: Add reconciliation status and sign-off state machine
As a reviewer, I want reconciliation states and sign-off transitions so activation decisions are auditable.
Story D5: Add operator override/governance path for exceptional legacy handling
As a team lead, I want controlled override paths for edge cases so exceptions are handled without data tampering.
Story D6: Add audit fields and exports that expose both values and chosen truth source
As an auditor, I want exports to include both score values and active source metadata so decisions are defensible.
Definition of Done