Verify · 007-reconciliation

Nightly reconciliation

How to run, demo, and verify this feature — aggregated from the spec and tasks, with a Run/Demo block grounded in the run that actually happened.

Generated from spec.html · tasks.html Derived status accepted (from spec.html — this view carries no status of its own) Read time

A derived view — regenerate with spectastic verify 007-reconciliation; do not hand-edit. The trace links are aggregated from the bundle; only the Run/Demo block is authored, from the real run.

1 · Run / Demo

./gradlew build ./gradlew :run --args='reconcile src/test/resources/custodian/eod-2026-09-13.csv' ./gradlew test --tests '*ReconciliationJobTest' --tests '*CorrectionsEndpointTest' ReconciliationJobTest books AAPL 90 / MSFT 250, runs the job over a custodian file saying AAPL 100 / MSFT 250 / VOD.L 0, and asserts exactly one PositionChanged (AAPL, 100, recon:<sha8>:AAPL) that Risk observed; a second run over the same file emits nothing. The reconcile subcommand on a fresh store reports 2 corrections, then 0. After change 2026-09-18-http-corrections, POST /corrections {instrument, quantity, tradeId} on the running process answers 200 and logs one PositionChanged; the same request again answers 200 and logs nothing (CorrectionsEndpointTest, FR-005)

2 · Verification trace

Every success criterion, traced to its acceptance scenario and the test task that closes it.

Success criterionAcceptanceProof (tests)
SC-001US1T-100
SC-002US2T-200

3 · Observables trace

Every reliability NFR, traced to its SLO (objective, window, SLI, signal) and — for a quantified NFR with none — a loud gap. The instrumentation evidence below grounds it in the real run.

NFRObjectiveSLISignal
NFR-001n/a