Skip to content

EPIC: master's three inherited reds and the review-speed follow-ups (2026-10-04) #5906

Open

Description

@gHashTag

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions