7. ✅ **Closed-period fail-fast** (2026-09-07): pyrmts `a174254` (addendum 2 in `specs/done/engine-open-period-source.md`) extends the pre-walk check to every tile the fill would read, via a new `TiledSource.present_keys(tiles)` hook: shards over an absent *closed* tile are held and, past `--max-missing`, the fill exits 4 with **nothing written** — the guard that used to fire after the 0-row shards had landed. `MonthlyRidesSource.present_keys` answers from `available_months` (its tiles are on S3; the chassis default LISTs the pyramid's R2, which only got the open-month answer right by accident). → `pyrmts-engine:a174254` → `ctbk-engine:1cc7b912` (job-def rev 15). Validation on the real prefixes, R2 listings diffed before/after: `smg-v1 -f` 42 deferred / 0 held / exit 0; `avail-v6 -f` 1 deferred / exit 0; uncapped `rides-v5-{start,end} -f` → `fill: 8 held (closed-period source absent: normalized/202608.parquet …)` + 4 deferred over `202609`, exit 4, **no new keys** on either anchor (previously 12 zero-row relics each + a sweep).
0 commit comments