Closure Gate (#446 — 312/312) failing on seed_phi column
Symptom: Closure Gate (#446 — 312/312) workflow has failed on every run since SHA dc02f63 (4 consecutive scheduled runs, latest 25639181566 / 2026-05-10T20:37Z).
Root cause: .github/scripts/closure_gate.py line 127 references seed_phi column but the live ssot.bpb_samples table on Railway / Neon does not have that column.
psycopg2.errors.UndefinedColumn: column "seed_phi" does not exist
LINE 1: ... MIN(bpb), COUNT(*), COUNT(DISTINCT seed_phi), MAX(step) FROM ssot.bpb_samples
^
Producer side (scripts/run_priority_matrix.ts + scripts/postrun_commit_back.ts) writes seed_phi to assertions/matrix_samples.jsonl (R7-honest local ledger), but the Railway/Neon ingest path stores it under a different name (likely seed or seed_value).
Three remediation paths:
- DDL migration (preferred per R6) — add
seed_phi INT column to ssot.bpb_samples, backfill from seed. Owned by trios-railway#62.
- Producer change — rename
seed_phi → seed in closure_gate.py query if the canonical column is seed.
- R5 honest disable — mark
Closure Gate as continue-on-error: true until the SoT is reconciled.
Affected runs (all event=schedule, head_sha=dc02f63):
- 25634067779 / 25635358071 / 25636663465 / 25638024080 / 25639181566
R-rules: this is NOT attributable to Wave-29/31/32 SHAs (those merged on gHashTag/trios-trainer-igla, not gHashTag/trios). Coq-runtime-invariants v1.1 attribution rule excludes pre-existing main breakage; Apiary cron NEW-CI-failure alert fired because dc02f631 is a NEW SHA on main but the breakage is schema-drift, not Wave-32 regression.
Anchor: phi^2 + phi^-2 = 3 · DOI 10.5281/zenodo.19227877
cc trios-railway#62 (bpb_samples DDL drift), trios#446 (closure parent)
Closure Gate (#446 — 312/312) failing on
seed_phicolumnSymptom:
Closure Gate (#446 — 312/312)workflow has failed on every run since SHAdc02f63(4 consecutive scheduled runs, latest 25639181566 / 2026-05-10T20:37Z).Root cause:
.github/scripts/closure_gate.pyline 127 referencesseed_phicolumn but the livessot.bpb_samplestable on Railway / Neon does not have that column.Producer side (
scripts/run_priority_matrix.ts+scripts/postrun_commit_back.ts) writesseed_phitoassertions/matrix_samples.jsonl(R7-honest local ledger), but the Railway/Neon ingest path stores it under a different name (likelyseedorseed_value).Three remediation paths:
seed_phi INTcolumn tossot.bpb_samples, backfill fromseed. Owned by trios-railway#62.seed_phi→seedinclosure_gate.pyquery if the canonical column isseed.Closure Gateascontinue-on-error: trueuntil the SoT is reconciled.Affected runs (all
event=schedule,head_sha=dc02f63):R-rules: this is NOT attributable to Wave-29/31/32 SHAs (those merged on
gHashTag/trios-trainer-igla, notgHashTag/trios). Coq-runtime-invariants v1.1 attribution rule excludes pre-existing main breakage; Apiary cron NEW-CI-failure alert fired becausedc02f631is a NEW SHA on main but the breakage is schema-drift, not Wave-32 regression.Anchor: phi^2 + phi^-2 = 3 · DOI 10.5281/zenodo.19227877
cc trios-railway#62 (
bpb_samplesDDL drift), trios#446 (closure parent)