# ECB answer-date correction and Zeno instructions — 24 October 2026

## What changed

The old label-clock audit was stored and could become stale. The replacement is a live, completely paginated audit. A case inherits an archived clock only when its target, vintage identity, value and publication timestamp all match exactly one stored vintage. Timestamp-only matches, duplicate identities and substituted values fail closed.

Important correction to our earlier advice: an answer published after a forecast is not inherently leakage. That is normal for forecasting. The answer must stay out of the prediction's inputs. It may supervise a later training run only if it was available by that run's fitting cutoff. Development answers must be available by the model-selection cutoff. Sealed test answers can arrive later, but cannot influence fitting or selection.

## Live audit at the supplied historical cutoff

Checked against the active database at `2025-10-31T10:00:00Z`:

| Slice | Cases | Outcomes | Archived-vintage matched cases | Modern recaptures | Closely matched, non-identical target cases | Cutoff-eligible cases / outcomes |
|---|---:|---:|---:|---:|---:|---:|
| panel-ecb-v1 | 1,110 | 81 | 366 | 744 | 0 | 350 / 26 |
| panel-ecb-v2 | 1,216 | 91 | 1,098 | 118 | 732 | 350 / 26 |

These are dated database counts, not a new frozen release or a claim that Hugging Face's old files changed. Sixteen v1 archived-label cases fall after this cutoff. The earlier report of 760 modern labels does not match the current v1 population: it has 744. Reconcile by case ID, not by changing clocks to force the counts to agree.

The archive already contains 4,286 classified archived-vintage rows and 100 modern recapture rows. Archived-vintage availability is not proof that a value was the original first print. First-print status remains **not established**. GDP and unemployment RTD series use a moving euro-area concept and are not automatically interchangeable with fixed EA20 outcomes; 732 v2 cases remain excluded from identical-target admission. Core inflation remains unverified.

## How Zeno should read it

Base: `https://offdiagonal.space`.

1. Public summary:
   `/api/public/v1/handoff/panel-label-clocks?slice=panel-ecb-v1&cutoff=2025-10-31T10%3A00%3A00Z`
2. Protected labels, using an owner-approved partner credential with `export:rows`:
   `/api/public/v1/handoff/panel-label-clocks?slice=panel-ecb-v1&view=labels&cutoff=2025-10-31T10%3A00%3A00Z&eligible_only=true&limit=100`
   Use the existing partner authentication header. Follow `next_cursor` by passing it as `after`; preserve every other query parameter. Stop only when `next_cursor` is null. Limit is 1–500. Unknown, duplicate and conflicting parameters return 400.
3. Repeat with `eligible_only=false` to account for excluded cases and their exact reasons. All returned labels are `supervision_only` and `never_input`.
4. Join labels to protected decision records by `panel_case_uid` and preserve `outcome_uid`. Split by outcome, not by row or respondent. Multiple survey rounds and revisions do not create independent outcomes.
5. Supply actual fitting and selection cutoffs. The date above reproduces the reported 350/26 population; it is not a default training cutoff.
6. Preserve case IDs, vintage IDs, values, clocks, exclusions and the dataset pin in your run receipt. Report raw, matched, cutoff-eligible, split-assigned and `in_loss` counts, with every drop reason. No H200 run is approved by this correction.

## Original-value recovery and evidence

The ECB RTD collector now stores content-addressed raw publisher CSV responses in `api_snapshots`. Newly captured vintage rows reference response hashes and full-timestamp v2 identities so distinct same-day revisions do not collapse; existing vintage keys are not overwritten. Insert counts reflect actual returned inserts, not attempted duplicates. Fetch and body reads are bounded, with independent GDP and unemployment windows requested in dated three-at-a-time batches. The archive's `VALID_FROM` is evidence for that vintage's availability; retrieval time is not a historical publication time. A nearby target, calendar release date or current revised value never establishes an original first print.

## Archive capture completed (24 October 2026, 04:34 UTC)

The full real-time archive recovery pass ran and was read back from the live database: 8,572 archived-vintage rows across HICP (1991–2025), real GDP growth (1996–2025) and unemployment (1991–2025), 258 HICP releases, 208 GDP releases and 237 unemployment releases, earliest publisher timestamp 3 January 2001, latest 9 September 2026. Every raw publisher response is kept hash-bound in `api_snapshots` (21 snapshots, endpoint `ecb-rtd-vintages:<sha256>`). The audit summary now reports a per-target breakdown of every unverified case (`unverifiedCasesByTarget`) and a `valueRecovery` lane: for each modern recapture it asks whether the archive proves the exact value, for the identical target, was public earlier. Measured result for panel-ecb-v1: zero recoveries — all 744 unverified cases carry Eurostat fixed-EA20 labels (366 growth, 260 unemployment, 118 core inflation) and the ECB archive holds zero identical-target vintages for them, only closely matched moving-concept twins (3,662 GDP, 1,376 unemployment), which stay excluded. Core inflation has no archive index at all. HICP is fully resolved: 366 of 366 verified against authentic vintages, 16 of them after the stated cutoff.

Remaining original first-print recovery requires matching original values, complete target definitions and actual publication evidence. Until that evidence exists, modern recaptures and non-identical targets remain visible but excluded. Existing frozen files and pins remain unchanged; no corrected frozen ECB package has been claimed.

## Other verified pipeline repair

Removed duplicate inner engine-token checks from four already authenticated collectors: market capture, Open-Meteo, snapshot building and v2 mirroring. The common guard still verifies the managed scheduler or engine header before any work; anonymous writes remain denied.

The earlier pipeline audit is online at `/offdiagonal-download/PIPELINE-AUDIT-20261024.md`. Partner deep cursors still report `corpus_busy`; heavy report refreshes and legacy FluSight completion still require observed successful completion, not a restart or invented availability.