Our seat of the baselines-vanishing cluster (register Cluster I; siblings: views-platform/views-pipeline-core#485, views-platform/views-models#405). Everything here should land with (not before) the pipeline-core root-binding fix — sequencing notes in the register.
- Seam test locks the current (defective) binding —
tests/test_vpc_seam_contract.py:112 AST-pins root=data_generated, so the correct per-model fix in vpc will fail our CI until we correct the locked contract in the same coordinated change. Also add one fixture using the real per-model on-disk layout (all current fixtures share a single root, which is why this class was invisible to CI). (C-215/C-192)
- Announce layer (
evaluation.py:194-202, 281) — baselines merge into the constituents list, so an absent baseline is announced under the wrong word; strict_constituents silently covers baselines; an all-comparators-absent (0-of-N) state renders like one routine absence; an undeclared baseline produces no in-report banner at all. (C-219)
- Arm-on-fix items — 17 pgm configs declare the cm baseline trio and our level/partition guard string-compares and aborts the whole report on mismatch (C-220);
_maybe_sort's fall-through sorts AP ascending, i.e. worst-first (C-225). Both must be handled in the same change that makes rows resolve.
- Vintage semantics (C-222) — the file source has no staleness check, comparison rows carry no run-date/data-version despite frames stamping them, and
reports/ has no report-of-record marker. This is why scrape-era reports with baseline rows sit beside newer ones without, with nothing saying which is authoritative.
- Corruption path (C-221) — non-atomic frame save upstream + unguarded pre-check + a retry that labels deterministic load failures "transient" + the subject's degraded status discarded into config-suggesting notes.
Full entries with evidence and tiering: reports/technical_risk_register.md (C-215–C-226, Cluster I).
🤖 Generated with Claude Code
Our seat of the baselines-vanishing cluster (register Cluster I; siblings: views-platform/views-pipeline-core#485, views-platform/views-models#405). Everything here should land with (not before) the pipeline-core root-binding fix — sequencing notes in the register.
tests/test_vpc_seam_contract.py:112AST-pinsroot=data_generated, so the correct per-model fix in vpc will fail our CI until we correct the locked contract in the same coordinated change. Also add one fixture using the real per-model on-disk layout (all current fixtures share a single root, which is why this class was invisible to CI). (C-215/C-192)evaluation.py:194-202, 281) — baselines merge into theconstituentslist, so an absent baseline is announced under the wrong word;strict_constituentssilently covers baselines; an all-comparators-absent (0-of-N) state renders like one routine absence; an undeclared baseline produces no in-report banner at all. (C-219)_maybe_sort's fall-through sorts AP ascending, i.e. worst-first (C-225). Both must be handled in the same change that makes rows resolve.reports/has no report-of-record marker. This is why scrape-era reports with baseline rows sit beside newer ones without, with nothing saying which is authoritative.Full entries with evidence and tiering:
reports/technical_risk_register.md(C-215–C-226, Cluster I).🤖 Generated with Claude Code