Soroban testnet ledger reading… ledger close 5.000000 s ± 0.000050 · measured, not assumed read-only · these pages never sign or submit

TTL decay · recorded evidence, not a simulation

One chart, both halves of the claim

The thing left alone declines; the thing watched over steps back up. Every dot is a committed observation — irregularly spaced, because that is when the readings happened. B’s expiry marker stays after the event: the timeline is evidence, not a status display.

guinea-pig B · instance

The control. Deployed 5 September, calibrated once that day with a disclosed extend, then left alone — and it expired on 21 September, as intended. Six measured readings run into the expiry; nothing extended it at any point.

warning 120,960act 17,280 expires 2026-09-21 · ledger 4,793,687 ledger 4,586,511

Each panel has its own vertical scale; the horizontal axis is always ledger numbers. Dates beside ledgers are estimates at five seconds per ledger.

Every point behind this panel, with its source
LedgerRemainingWhat happened
4,586,511207,176observed · docs/evidence/2026-09-09-scan-dedup/scan.json
4,776,40817,279observed · docs/W3-B-WATCH-CLOSING.md
4,776,48617,201observed · docs/W3-B-WATCH-CLOSING.md
4,785,1038,584observed · docs/W3-B-WATCH-CLOSING.md
4,789,3684,319observed · docs/W3-B-WATCH-CLOSING.md
4,789,4264,261observed · docs/W3-B-WATCH-CLOSING.md

guinea-pig A · instance

The watched one. Its decay was arranged by raising the alert threshold above its remaining TTL; the response was not. Each upward step names its actor and transaction.

warning 120,960act 17,280 manual CLI · e18e0822…engine, local timer · dae63da8… ledger 4,585,589

Each panel has its own vertical scale; the horizontal axis is always ledger numbers. Dates beside ledgers are estimates at five seconds per ledger.

Every point behind this panel, with its source
LedgerRemainingWhat happened
4,585,5891,440,000observed · docs/evidence/2026-09-09-guinea-pig-a-extend/README.md
4,821,4621,548,799observed · apps/web/data/snapshot.json
4,626,4231,399,166 → 1,400,168manual CLI · e18e0822d7131b6dc4ffb0953d880baf91135bc0e7a1e3ee40b4ea5071a4115a · +1,000 ledgers requested; expiry +1,002 including inclusion delay. Fee charged 5,064 stroops. docs/evidence/2026-09-12-manual-extend-proof/README.md
4,670,2611,356,330 → 1,700,000engine, local timer · dae63da8bd42dde7ca8a72ac9ff99f7d7179cc505819db337253843e60369128 · Alert threshold raised to 1,500,000 so the engine would act — arranged timing, genuine response. Fee charged 44,725 stroops. No row here is labelled scheduled cron: as far as the record goes, the production cron has never extended anything. docs/evidence/2026-09-14-scheduled-a-save/README.md

shared code entry

One entry all three contracts depend on — A, B and C were built from one Wasm. Due to be extended at W3-D18-02d; touching it touches both decay proofs, which is why the write guard refuses it by key.

warning 120,960act 17,280 expires 2026-10-20 · ledger 5,290,829 ledger 4,586,511

Each panel has its own vertical scale; the horizontal axis is always ledger numbers. Dates beside ledgers are estimates at five seconds per ledger.

Every point behind this panel, with its source
LedgerRemainingWhat happened
4,586,511704,318observed · docs/evidence/2026-09-09-scan-dedup/scan.json
4,821,462469,367observed · apps/web/data/snapshot.json

How to read this

A sawtooth is the product working: decay, then an extension, then decay again. A straight decline is the control: guinea-pig B was calibrated once on 5 September and left alone, so its two observations agree on one expiry — ledger 4,793,687, about 21 September 2026. A's steps each link to the transaction that made them; the second step's timing was arranged by raising the threshold, the response was not. The shared code entry binds all three contracts and expires about 20 October 2026 at ledger 5,290,829.