Freeze a close report against a reproducible cutoff
The April report changed after a late settlement arrived in May. Finance needs to explain what was known at close while still showing corrections in a new revision.
- Focused work estimate
- 5h + prerequisites
- Priority in the scenario
- High
- Engineering practice
- Snapshot consistency · Temporal modeling · Canonical hashing · Migration design
Estimated field mix
- Database engineering40%
- Backend40%
- Data engineering20%
Field percentages are editorial estimates of the ticket's engineering focus. They total 100%; they are not measured time, proficiency scores, or ownership evidence.
Review it, then add it to your workspace.
The board opens an editable draft; nothing is saved until you confirm it. Sign-in and workspace permissions apply, and Demo boards remain ephemeral.
Project context
A fictional subscription service invoices in USD and EUR. Finance currently compares a payment-provider CSV with database exports; late refunds and retried imports make the monthly close unreliable. Work on synthetic ledger entries only.
Setup prerequisites
- REST APIs
- SQL transactions
- Integer money representation
Preceding work
Complete these dependencies, or supply their agreed outputs before taking this ticket.
- BILL-101 · Reject ambiguous settlement amounts before import
- BILL-102 · Make repeated settlement uploads converge on one batch
- BILL-104 · Match settlement lines without combining currencies
- BILL-105 · Carry partial refunds across settlement days
- BILL-106 · Record discrepancy decisions without editing source entries
Acceptance criteria
- Freeze source identities, cutoff, calculation version, and report hash for a close revision.
- Later imports cannot mutate the frozen report.
- A correction creates a new linked revision with explicit differences.
Implementation constraints
- Distinguish provider effective time from system receipt time; document which governs inclusion.
Verification to include
- Regenerate a frozen revision and compare canonical hashes.
- Import a backdated settlement after close and prove the old revision is unchanged.
Deliverables
- Versioned close report design, implementation, and correction walkthrough
Rollout and recovery
Introduce revisioned closes in parallel with the current export; retain old readers until reconciliation agrees.
Value of the work
For the engineer: Practice monetary invariants, concurrent writes, reconciliation, and operational recovery across one service boundary.
For the team: Review how an engineer makes discrepancies explainable and recoverable before a financial workflow is trusted.
Evidence boundaries
Outcome Evidence: Tests, patches, and runbooks are requested deliverables. They become Outcome Evidence only through a qualified Mission and immutable Evidence IDs.
Ownership Evidence: Independent adaptation must be observed under a declared verification policy and cite immutable Evidence IDs. Completing a planning ticket establishes no Ownership Evidence.