Repository navigation
EPIC: master's three inherited reds and the review-speed follow-ups (2026-10-04) #5906
Description
On 2026-10-04 PR #5902 (the t27c var (a, b) destructure fix) went red in three checks. All three are red on master with the same output, so every open pull request inherits them:
| check | master | last green run on master |
|---|---|---|
Bootstrap Test Ratchet / test-ratchet |
the same 25 tests newly failing (run 37066722367 and #5902's run: the two lists are identical) | 2026-09-07 |
Spec Guards / spec-guards |
DRIFTED ring-096-rust specs/numeric/formats.t27, 5 functions |
none since at least 2026-09-28 (200 runs) |
FPGA Build / fpga-conformance |
elaboration errors: 178 (baseline 176) |
2026-09-22 |
Why this is a review-speed problem and not only a CI one: the reviewer bee (#5776, PR #5777) must discount each inherited red on every review, and a discount that is wrong is how it approves a bad head (plan .trinity/review-speed-2026-10-04.md, B16). A human sees a red PR and waits. Green master turns "is this red the PR's fault?" from a judgement into a fact.
This issue is a GOAL, not a bee task. It has no Boundary on purpose, so the Queen does not dispatch it. Each row has a child issue with its own acceptance criteria. It closes when every row has a closed issue or a written, documented exception.
Rows
| # | item | measured | issue | who |
|---|---|---|---|---|
| 1a | C-backend tests hand cc a clang-only flag; #4832 added get_cc_args() and no test calls it |
25 tests red on gcc; 16 files still say -ferror-limit=0; 0 call the helper |
#5907 | done: PR #5930 (06aeea9) merged 07:19Z by dmitrii-f-t27; bootstrap/tests/common asks cc which flag it takes (exit 0 and empty stderr); gcc 15: 464/25 -> 488/1, the last one #5910 fixed by #5922. Test Ratchet green on master (run 37185428777, bcc95ef). Negative control: int x = ; counted 0 errors under gcc before, >=1 after |
| 1b | ring-096 disagrees with specs/numeric/formats.t27 on 5 signatures |
DRIFTED, hand fns 7, spec fns 6, differing 5 |
#5746 | PR #5921 (not merged): SSOT-MATH answers it, the spec is the truth; ring follows (f64 -> f32, 1.0 = 0x3E00). Drift CONVERGED, 0 differ. New red it exposes: the differential step now checks ring-096 and exits 2 (gen Rust uses u5/u4, spec fns have no bodies, f32 == vs NaN). Left open: gf16.t27 contradicts itself (formula 0x3E00 vs table 0x3C00), NaN 0x7F01 vs 0xFE01 |
| 1c | elaboration ratchet: ternary_isa 6 -> 7, uart 0 -> 1, adapter: 0 errors, not in baseline; baseline taken with iverilog 13.0, CI runs 12.0 |
178 vs 176 | #5908 | PR #5948 (not merged; touches bootstrap/): 176 = 176, exit 0. ternary_isa 7 -> 6: 901ed4f's test-local given stages was taken for a module array (W459), compiler binds only module-level now, new test fails before / passes after. uart 1 -> 0: 942a001 had pasted #2364's reproduction into the spec; line restored. adapter: a clean NEW module no longer fails the step. Baseline re-taken under CI's iverilog 12.0, total unchanged. Side effect: Verilog of 10 specs changed, 15 seals resealed. #2364 reopened: the compiler defect is still live (reproduced: uart.v:175: Could not find variable on_clock) |
| 2 | reviewer bee: gh pr list answering unexpected end of JSON input ends the live run |
02:14:48Z and 04:59:10Z on 2026-10-04 | #5776 (plan B19) | review loop -- done: 8214207 (a read gh cut short is asked again, then fails by name), installed; both live runs after install clean |
| 3 | merge #5777 (plan B1): 5 approved PRs unmerged for 3 h (#5663, #5755, #5756, #5757, #5780) because master's merger does not read discounted-check: yet. Before it: dismiss or re-review the bot's approvals on #5838, #5820, #5747, #5757; decide the golden labels of #5793 and #5797 |
tri review tick 05:45Z |
#5776 | owner |
| 4 | reviewer bee quality: an APPROVE whose own text names a blocking check (3 times); approvals whose first review came from the fallback model (4 times); golden score 5 of 7, 0 known-bad approved | tri review tick 05:45Z, reviewer.py eval --last |
#5776 | review loop -- done for the parse slip (plan B21, 82d81b8: blocking-check: -- (none) is no blocking check; replay 3 -> 2, both real discounts). The fallback-model approvals are the owner's two-model rule |
| 5 | t27c follow-ups #5902 lists: the named-tuple (W596) destructure path always emits const; discarded_by_ref is module-wide and never cleared per function |
from #5902's own notes; not reproduced yet | filed after reproduction | agent, PR stacked on #5902 |
| 6 | heavy checks asked at git push through lefthook, and the CI time they cost. Plan rows B22-B27 (fc334b1) |
medians on 400 PR runs: Emit Bit-Exact 9.3 min, FPGA E2E 9.2, Spec Guards 4.8 (243 s of it an uncached t27c build), Corpus 3.8, Test Ratchet 3.2. lefthook install --force here would rename the tracked .githooks/pre-push to .old and stop running it (probed). tri gates preview lacks the required parse-ratchet |
#5776 (plan B22-B26); B27 owner | agent, PRs; B25 #5918 -> PR #5924 (not merged): restore-only caches, spec-guards' t27c build 243 s -> 27-40 s, emit-bitexact's build 34 s, cancel-in-progress; spec-guards stays red on the ring-096 drift exactly as master (1b). B27 owner decided 2026-10-04: remove the NOW gate -> #5935, PR #5951 merged 57c2cfa by the owner's word 09:39Z (2 workflows and both hook calls gone, the fix( guard kept as its own fix-carries-source.yml; census 64 -> 63 workflows) |
| 7 | owner, 2026-10-04: every check is written in .t27; workflows and hooks are generated from the cards and gated by a regenerate-and-compare step. Folds in B22-B24 (lefthook from cards) and the merge of cheap gates | 64 workflows, 41 run on pull requests; a probe card (pub const + fn + test) passes t27c test-report 2/2 and its bent copy fails 2/2; specs/tools/catalog.t27 is BLOCKED in test-report, so the generator refuses BLOCKED |
#5933 | agent, PRs (P1 started) |
| 8 | other gates that cost work and catch nothing (owner, 2026-10-04: remove what gets in the way): NotebookLM sync and gate (sync.py uploads placeholders, the gate checks a tracked constant); the fpga-bitstream job labelled QMTECH XC7A100T while it builds the Arty A7-100T (csg324), contradicting fpga/HARDWARE_SSOT.md |
notebook-sync.yml swallows its failures, ~124 runner-min per 4 h; .notebook_id is committed |
#5957, #5959 | PR #5958 merged 6765d63 by the owner's word 09:53Z (census 63 -> 61 workflows, 276 -> 262 run steps). PR #5960 relabels the job to what it builds and dates an SSOT note; retargeting to the 200T needs a t27c change first (--minimal hardcodes Arty pins, bootstrap/src/main.rs:7752-7768). #5960 not merged |
Related: #5497 (four advisory gates red on master, one cause per pull request), #5886 / #5902.
Order of work: 1a, 1b, 1c, 2, 4, 5, 6 (B25 first: YAML only, the largest measured saving). Row 3 is the owner's; nothing in this epic merges a pull request, approves one by hand, or enables auto-merge. bootstrap/ changes go through a PR that the owner merges.
Activity
bees/reviewer: an answer gh cut short is read again, not the end of t…
bees/reviewer: `blocking-check: -- (none)` is no blocking check (B21)…
docs(type-conflicts): the 26 new names split 17 DRIFT / 9 DISTINCT (R…
corpus: judge 26 new type conflicts from the port batches; types ledg…