Every number in the archive derives from public on-chain data at publicly disclosed addresses. The archive is a convenience rendering of independently verifiable data — a reader who doubts it does not need to trust this site: open an explorer and check the chain, which this site does not control.
If the chain ever disagrees with an archive page, the chain is right — same rule as everywhere else on this site.
Every archived holding row also carries its own explorer link — one click from any figure to the chain that produced it.
A scheduled job runs at 05:10 UTC every day and records the PREVIOUS completed UTC day — behaviour covers the whole day, market fields use that day's closes, holdings are the live read at capture time, stamped. The hour is fixed and stated here because determinism is part of the method. Transient failures retry once; a hard failure writes a status "missing" record — the gap itself is recorded, never dressed as data.
Days marked as gaps have no captured data — the capture job failed or did not run. A gap stays a gap; the archive never fills one in.
Null means unknown or not read — never zero, and never interpolated. A pre-start day records that nothing was asserted, which is a different claim than an empty wallet.
A record that changes after first write carries a corrections entry naming when it changed. The entry is part of the record itself — visible on these pages and in the API — so a corrected figure and its history travel together. Silent rewrites are not how this archive works.
The monthly email is this archive's external witness: each issue carries the month's figures and the policy hash current at send time. Once sent it sits in subscribers' inboxes, where the site owner cannot edit it — those copies are the record of what this site said, and when.
/api/snapshots.json — paginated daily records · /api/snapshot/[date] — one day · /api/period/[type]/[id] — aggregated period stats (week · month · year · epoch) · /api/snapshots.csv — the full series as CSV · /api/on-this-day — the lookback as plain text. Records that fail validation appear as state "invalid" in the JSON feed and are absent from the CSV — a visible gap with a reason, never a silent skip.
Coverage: 2026-07-20 → 2026-07-24, 5 daily records.
The EUR translation renders as a gap until an officially sourced average-net-salary series is configured (currently: TBD — owner supplies an official statistics series; last updated 2026-07-25). Until then the metric stays null — never a guess. When it lands it will be a secondary view, never a headline figure.