Litecoin.watch confirmation observer, protocol lw-confirmations-2026-09-27-v2 Published 2026-09-27. Code MIT; original observations CC BY 4.0. Scope One wallet-disabled Litecoin Core 0.21.5.8 mainnet node. Fixed txid sampling, approximately 1/16. Public mempool/transaction lists only, not private MWEB activity. First-seen and block-inclusion times are observer polling times, not sender or miner timestamps. Polling target 15 seconds; eligible snapshots must take <=10 seconds and continuous intervals <=30 seconds. Collection diagnostics A diagnostic chain RPC can wait 20 seconds while Core is initially synchronizing. This does not relax the 10-second measurement rule. RPC timeouts, unreachable RPC, no peers, initial sync, headers ahead, a stale tip, a tip changing during a read, capacity limits and an overdue collector update are separate states. Node fields are labelled with their last successful retrieval time. Cookies and raw RPC errors are not published. Retention and the fixed study The dashboard selects first observations in the past 7 days. The working SQLite database retains 90 days. A txid is never enrolled again while its row is retained. Initial synchronization and the startup mempool are not eligible timing observations. The first valid continuous collecting interval fixes study_start at the NEXT UTC midnight. Study_end is exactly 30 calendar days later. Gaps remain in that interval: they do not postpone its end or select better days. Daily ZIP files A closed UTC day is exported after midnight, normally on the next five-minute export cycle. The first export day can be partial because this version began mid-day. No historical states before archive activation are manufactured. manifest.json identifies the poll coverage date, actual snapshot_at, retained cohort bounds, protocol, counts and internal SHA-256 checksums. polls.csv records every stored poll in that day, with its state, covered seconds and excluded-baseline count. cohort.csv contains retained txids first seen before that day's end, with their states AS OF snapshot_at. Delayed backfills are explicitly stamped with the actual later export time; they are not midnight reconstructions. A file, once written, is not rewritten. The public index includes each ZIP's SHA-256. Subsequent files repeat earlier retained transactions. Never concatenate cohort snapshots as independent observations. Outcomes can change after a snapshot, including after reorgs; immutability is not a promise of permanent confirmation. 30-day report Generated once all 30 daily files exist and the period has ended. The last day's snapshot supplies cohort outcomes, selected by study_start <= first_seen < study_end. Every day's raw polls supply coverage, including zero-coverage days. Outcomes are explicitly labelled with the final snapshot time; follow-up between midnight and export is not called part of the exact calendar observation window. All pending/censored states are counted. Confirmed-only interpolated median and p90 require >=20 confirmations and are not completion probabilities. The fixed report is descriptive even if coverage is poor; no threshold is used to select away bad days. Empty data produces no numeric quantiles. Reproduce a report (Python 3.10+; no dependencies) 1. Download the daily ZIP files for its 30 named dates, plus the archive index. Verify each ZIP against the index SHA-256. 2. Save confirmation_archive.py.txt as confirmation_archive.py and confirmation_observer.py.txt as confirmation_observer.py in one folder. 3. python confirmation_archive.py path/to/daily-zips YYYY-MM-DD reproduced-report.json 4. Compare the JSON with /confirmation-times/?format=report. The calculation checks internal checksums and coverage. It does not make network or wallet requests. 5. The source repository package linked from /wallet-recovery/#reproduction contains automated negative/control tests for collection and archive logic. Operations Daily archives and the live database are on the same server, not an off-site backup. The existing observer service restarts on process failure. Missing output becomes overdue after 120 seconds. Export errors are disclosed separately and retried. The first report remains unavailable until the full calendar interval ends; no placeholder numerical report is published. Prepared with AI-assisted coding and scripted verification. No independent human review claimed. Corrections: https://litecoin.watch/corrections/