VERIFY · LIVE
Proof
One invariant decides whether any figure on this site may read Reconciled: the sum of every ledger entry must equal the sum of every balance. This is every run of it, passing or not.
Σ entries
206 533.35Σ balances
206 533.35The most recent run FAILED, and is published here for that reason. Nothing on this property reads Reconciled while that is true.
What failed it
- 16 balance-continuity breaks since the watermark — An entry recorded after 2026-08-14 did not begin where the previous one ended. Every write path has gone through one primitive since then, so a break here means that guard was defeated — this is the one continuity figure that is a live defect rather than history.
Drift between the two totals is 0 minor units. Offsetting errors net out, so a run can fail with the totals agreeing exactly — which is why the sum is one check here and not the only one.
Historical continuity breaks
181 entries recorded before 2026-08-14 do not begin where the previous one ended. Every write path has gone through one primitive since that date, so no new one can be created — and because the ledger is append-only, none of these can be corrected either: a mistake is fixed by posting a compensating entry, never by editing history. They are published as a closed scar rather than repaired, and they do not fail a run. One recorded on or after that date would.
| Entry | Recorded | Books said | Entry said | Gap |
|---|---|---|---|---|
| 445a7aa7-a7dd-4fef-b944-35f202ee045e | 2026-07-29 | 2 | 19,513 | 19,511 |
| 7016022f-6aa8-41ec-93c3-0261990a0023 | 2026-07-29 | 25 | 19,469 | 19,444 |
| cc22cb8b-c375-4809-8114-daa52adf32d3 | 2026-07-22 | 35 | 19,258 | 19,223 |
| 206d56b7-33a3-446b-beae-aa5a91f5f6a7 | 2026-07-22 | 10 | 19,217.25 | 19,207.25 |
| 8fa93e2f-d604-4267-86cc-47efbf7ffdb9 | 2026-07-29 | 10 | 19,190.25 | 19,180.25 |
| 2e7ad2cc-998c-4116-a868-65544997819e | 2026-07-29 | 19,074.5 | 5 | -19,069.5 |
| e157b456-c937-4c97-9a77-fbffa4b8eff6 | 2026-07-29 | 10 | 19,074.5 | 19,064.5 |
| 37ea75d2-6b57-43c4-884d-457c474f6348 | 2026-07-29 | 102 | 19,115.75 | 19,013.75 |
| a24d17dc-35bc-449f-a504-1e2efc9d5258 | 2026-07-22 | 19,036.25 | 51 | -18,985.25 |
| 088daf97-08c0-4071-a751-e7a245b27e76 | 2026-07-29 | 4 | 18,916.3 | 18,912.3 |
| 4f02c37d-92a4-4bb8-a005-27af5651f9f0 | 2026-07-29 | 20 | 18,892.25 | 18,872.25 |
| 176091a6-e0ca-498b-a6ba-7818ec8d39cf | 2026-07-29 | 410 | 19,274 | 18,864 |
| 68891313-ac78-4e9a-b2de-7280ffaf0085 | 2026-07-22 | 19,058 | 205 | -18,853 |
| f4a0f88a-e556-49a5-ace4-0cbb54888577 | 2026-07-29 | 2 | 18,833.5 | 18,831.5 |
| eb2e4ba7-2086-475c-a038-1d2ed6e3df20 | 2026-07-22 | 19,017.25 | 210 | -18,807.25 |
| 5b61e522-3cb2-41d6-83fb-79efe31d1794 | 2026-07-23 | 20 | 18,757.5 | 18,737.5 |
| 26d52b26-7a73-47f4-b69d-083861690705 | 2026-07-23 | 18,752.5 | 25 | -18,727.5 |
| 7b6a9cc1-83c5-49ab-a24e-65ded5165d61 | 2026-07-29 | 30 | 18,730.25 | 18,700.25 |
| 45727f60-c98e-4f68-9f66-4321a9894e21 | 2026-07-23 | 18,664 | 10 | -18,654 |
| 714ff142-70ee-4931-b4e8-c7fa72b81ffd | 2026-07-25 | 18,589.5 | 5 | -18,584.5 |
| 6e40945d-05a4-4324-bcda-714dcc49bf26 | 2026-07-29 | 10 | 18,589.75 | 18,579.75 |
| a38969df-f732-41c2-978c-c780a3ad9262 | 2026-07-29 | 20 | 18,488 | 18,468 |
| 3198bf43-c3ec-430c-bc64-0b216dd85c3a | 2026-07-24 | 18,467.25 | 10 | -18,457.25 |
| 8221752d-faac-4317-8267-b66e30aae925 | 2026-07-29 | 20 | 18,477.25 | 18,457.25 |
| 429ef116-3aa1-4ee1-bfdb-47ea8124f6ae | 2026-07-23 | 18,388.75 | 200 | -18,188.75 |
Exit criteria · workstream CYG-LED
| Task | Required | Today | Status |
|---|---|---|---|
| CYG-LED-1 | Integer minor units | Partly. Wallet.goldBalanceMinor (BigInt) is written in lockstep by postEntry, with backfill and verify scripts; goldBalance and the GoldLedger amount columns are still Float, so reads have not flipped ClaimYour.Gold · prisma/schema.prisma · SEAM-3 Phase A · read 2026-08-20 | IN BUILD |
| CYG-LED-2 | One write path, CI-enforced | Landed. Every movement goes through postEntry; the legacy-writer list in eslint.ledger-legacy.mjs is empty and the rule keeps it that way. SEAM-4 Phase 1 gates service-to-service calls through one guard ClaimYour.Gold · eslint.ledger-legacy.mjs · SEAM-1, SEAM-4 · read 2026-08-25 | LIVE |
| CYG-LED-6 | Nightly Σ(entries) = Σ(balances) | Installed. invariantJob runs at 04:00 UTC and writes every run — pass or fail — to ledger_invariant_runs, which this property reads ClaimYour.Gold · src/jobs/invariantJob.ts · src/services/invariantRunService.ts · read 2026-08-25 | LIVE |
Run history
The nightly job runs at 04:00 UTC and writes every result to the record, pass or fail. The most recent is above. This history shows every failure it finds, including historical ones, and is never reset — a reconciliation history with the failures taken out is not evidence, it is marketing.
What happens when it passes
A passing run is what entitles a figure to read Reconciled, and it is also the gate on the chain. A snapshot only becomes reproducible once the ledger holds integers behind one writer, and a root may only be anchored for a snapshot whose invariant passed — anchoring a ledger that does not reconcile would make the drift permanent instead of merely present. How anchoring works →