Repository navigation
Falsifier cold-sweep reds: nfr roster burn-down + apply_role backfill; re-enroll cargo fmt in CI (de-fused from nextest) - #6691
Conversation
…6637) The affected-set-falsifier has been red on every cold sweep since 2026-07-15 04:32 UTC (last green 07-14 23:10, run 29374839251). It was doing its job: three discovery witnesses returned Bool(false) against the whole corpus that per-PR selection had predict-skipped. This clears the two non_fold_residue ones; the inert_carrier one is a separate lens-precision question, left red deliberately rather than papered over. Stale rows deleted (roster 120 unique -> live 118; each verified as genuinely migrated, NOT merely gone lens-invisible -- the converge_cli_applied_knob_count trap): - nbd_proxy_serve.dag::shell_command_leading_lit_text - nbd_proxy_serve.dag::shell_rawline_starts_with_tool both fns DELETED by #6629 (P6 Part 2: RawLine body -> typed session-lease effect), firing the dissolve-on their rows carried. - emit_host.dag::run_test_claim_emit_vs_eval_verdict fn still exists (emit_host.dag:335) but #6650 enumerated its wildcard into three explicit constructor arms -- residue genuinely folded, no bare `_ =>` remains. Ratchet tightens. Unrostered row backfilled: bash_composition_recognizer.dag::apply_role, landed by #6637. Two-special-variant dispatch over TokenRole's 5 variants; the other three all reduce to the closed run, so enumerating would clone the general arm 3x. Same class as the orch_emit_let_step row above it (receipt #10). Green-by-execution (claim_batch, local): PASS non_fold_residue_no_unrostered_or_stale (src/v2/lens) PASS non_fold_residue_clean_holds (dag/test/claim) FAIL inert_carrier_no_unrostered_or_stale <- unchanged, see PR body Discriminating RED control: both nfr witnesses were red on this same tree before the roster edit and green after; no witness or assertion was weakened. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…test bundle Operator ruling 2026-07-15. Restores fmt enforcement without re-enrolling RustMonolithGate (still rejected). WHY IT WAS GONE: tools.rust_gates_ci.run_gates welds two separable facts into one ProcessExit -- fmt (4.3s measured, parse-only, no build, green) and nextest (~37 GiB, compile+run, red on main). The 2026-07-11 ruling removed the bundle for reasons that are ALL facts about nextest; fmt was collateral damage of that fusion (DESIGN 3). WHY THE HOOK ISN'T COVERAGE: the ruling's declared replacement was the pre-push hook. That is an escape hatch (DESIGN 5) -- opt-in per clone via a manual core.hooksPath, bypassable with --no-verify, absent in container worktrees -- and PROVEN ineffective, not just theoretically weak: in this very worktree core.hooksPath points at a directory with no pre-push hook at all, and #6658 landed an unformatted .rs on main 2026-07-15 with nothing catching it. The hook stays as fast local feedback, never as the wall. SHAPE: standalone RunStep, FIRST in the build job -- a 4-second violation now fails in 4 seconds instead of after the ~33min release build. build is not protection-required itself, but ci needs:[build], so a red fmt blocks the required job by construction. Toolchain already installs the rustfmt component in ci_prelude_steps, so marginal cost is ~4s and no build. Step-budget discipline (gunbc_ci_job_timeout_policy_disposition: "the backstop is the exact step-sum + prelude"): the new step carries the aux cap and gunbc_ci_build_job_backstop_timeout_minutes() gains exactly one aux term (65 -> 70), so no step is uncapped and the sum stays exact. Authority updated, not left lying: commit_gate_rust_suite_removed_disposition declared "cargo fmt stays enforced by the pre-push hook". That claim is now retracted in-row and the fmt half marked reversed; the nextest half and the RustMonolithGate rejection are preserved verbatim. ci.yml regenerated through the emit authority (expected_ci_yml), never hand- edited; trailing-newline gotcha handled. GREEN-BY-EXECUTION: PASS generated_artifact_drift_witnesses <- the real drift gate, ci.yml byte-exact 0 FAILs across ci_yaml_serializer, ci_compile_jobs, placement_grain, rust_gates_ci, ci_budget_tree witnesses DISCRIMINATING RED: planted a fmt violation, ran the EXACT emitted step command -> exit 1 (caught); restored tree -> exit 0. The gate discriminates. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
Thanks — flagging the I'm not pushing a fix for it in this PR, on cost grounds rather than disagreement:
It rides the same tracked 🟡 dissolve-on already recorded in — sent from swift-owl-116 |
|
Bugbot is not enabled for your account, so this pull request was not reviewed. Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs. |
…t first main (#6680 lane) independently made the identical nfr roster fix while this PR was in review: same two nbd_proxy_serve stale rows deleted, same emit_host::run_test_claim_emit_vs_eval_verdict stale row deleted, and the same apply_role backfill added (its own wording, different position in the roster). Resolution takes MAIN's side wholesale. Keeping mine would have produced two apply_role rows -- harmless at use (the roster collapses to a BTreeSet) but a pointless redundancy, and re-litigating identical work for authorship is not a reason to diverge. cli_run.rs is now byte-identical to origin/main. This PR therefore reduces to the work main does NOT have, verified against origin/main: - the cargo fmt CI gate (de-fused from the nextest bundle) + its authority note amendment + regenerated ci.yml - the latent main fmt red fix (main still carries the unformatted import) Independent convergence on the roster is a receipt for the falsifier itself: two lanes hit the same cold-sweep reds and reached the same verdicts on which rows were genuinely migrated vs still live. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…n the operator TODO Rosters the 3 unrostered non-fold-residue sites that have kept the scheduled cold falsifier red since 2026-07-16 (alert #7032), each with its class reason and dissolution trigger per the #6691 shape: host_converge_slice1 host_result_all_valid / host_result_applied_count (legacy-result-bridge projections, #7009) and host_hygiene_reaper action_kills_build_cache_server (two-axis discriminating predicate, #7026). Receipts: nfr_roster_receipt unrostered=0 stale=0 (was red with exactly these 3 sites before the edit - the discriminating control), non_fold_residue_clean_holds evaluates true by execution, fmt clean. Sheet: falsifier row marked landed, wave-reds row credits #7082 for the drift close, new CI-ergonomics lane row (operator ask 2026-07-22) under item 2. ROADMAP.md regenerated via main_wet at the fixed point. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016fdkaGGLUKpLRwwqxp5sLg
… + wave-red receipts and CI-ergonomics lane on the operator TODO (#7083) * roadmap: heal the #7079-reopened ROADMAP drift + record wave-red receipts in the operator TODO #7079's branch predated #7081, so its drift cleanup hand-deleted the silent-ibex-417 paragraph from the generated ROADMAP.md while #7081 had just re-homed that paragraph into roadmap_authority.dag - post-merge main drifts the opposite way (authority has it, committed md does not) and the drift gate reds the next main run that reaches batch 4. This regenerates ROADMAP.md from the authority, closing the drift. Sheet updates: wave-red receipts row (drift-gate red healed by #7081; stale CommitWitnessClaim roster row from #7060 hotfixed by #7079 incl. the #7064 orphan; the third collision above), the stale-roster stabilization-loop instance, and #7076/#7008 marked merged. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016fdkaGGLUKpLRwwqxp5sLg * falsifier green: nfr roster burn-down (3 rows) + CI-ergonomics lane on the operator TODO Rosters the 3 unrostered non-fold-residue sites that have kept the scheduled cold falsifier red since 2026-07-16 (alert #7032), each with its class reason and dissolution trigger per the #6691 shape: host_converge_slice1 host_result_all_valid / host_result_applied_count (legacy-result-bridge projections, #7009) and host_hygiene_reaper action_kills_build_cache_server (two-axis discriminating predicate, #7026). Receipts: nfr_roster_receipt unrostered=0 stale=0 (was red with exactly these 3 sites before the edit - the discriminating control), non_fold_residue_clean_holds evaluates true by execution, fmt clean. Sheet: falsifier row marked landed, wave-reds row credits #7082 for the drift close, new CI-ergonomics lane row (operator ask 2026-07-22) under item 2. ROADMAP.md regenerated via main_wet at the fixed point. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016fdkaGGLUKpLRwwqxp5sLg --------- Co-authored-by: Claude <noreply@anthropic.com>
What the falsifier caught
The
affected-set-falsifierhas been red on every cold sweep since 2026-07-15 04:32 UTC (last green 07-14 23:10, run29374839251). It was not broken — it was doing its job. Three discovery witnesses returnedBool(false)against the whole corpus, on drift that per-PR affected-set selection had predict-skipped. Bisected to the windowc8169ef93b..00aa9ae2ef(15 commits) and attributed each root to its landing PR.This PR clears the two
non_fold_residuereds. Theinert_carrierred is left red on purpose — it is a lens-precision question, not a dead scaffold, and papering over it would be the masked-green move. See below.1. non_fold_residue — 3 stale rows burned down
Roster was 120 unique vs 118 live. Each stale row was checked for why it went stale, because "still wildcard but now lens-invisible" would mean deleting the row silently drops enforcement (the
converge_cli_applied_knob_counttrap already recorded in this roster):nbd_proxy_serve.dag::shell_command_leading_lit_textnbd_proxy_serve.dag::shell_rawline_starts_with_toolemit_host.dag::run_test_claim_emit_vs_eval_verdictemit_host.dag:335) but #6650 enumerated its wildcard into 3 explicit constructor arms; no bare_ =>remains2. non_fold_residue — 1 unrostered row backfilled
bash_composition_recognizer.dag::apply_role, landed by #6637. Two-special-variant dispatch overTokenRole's 5 variants (IfFraming/UnmodeledKeywordrebuildScanState;Separator/JoiningControl/OperandFramingall reduce to the closed run, so enumerating would clone the general arm 3×). Same class as theorch_emit_let_steprow directly below it — backfilled with reason + dissolution trigger so the ratchet re-arms (receipt #10).3. Latent main red:
cargo fmt --all --checkfails on clean mainNot my lane, fixed because it blocks it.
maincarries exactly one fmt violation workspace-wide, landed by #6658 (fe6c586988, today 13:29).RECEIPT: on clean
origin/main,cargo fmt --all --checkexits 1 with exactly oneDiff inhunk; afterrustfmton that one file it exits 0. File is hand-written (a bin declared ingunbc.ci_spec), not generated — a source fix, not a hand-edit of a generated artifact.Why nothing caught it (corrected — an earlier draft of this body wrongly claimed the CI fmt gate fires on every
.rschange; it does not):cargo fmt --all --checkIS modeled, intools.rust_gates_ci::run_gates— but fused withcargo nextest run -p v1-compiler-testsin a singleProcessExit.RustMonolithGate) was removed from CI 2026-07-11 by operator ruling (gunbc.commit_workflow:54), for good reasons that are all about nextest: ~37 GiB (the fleet's largest CI memory job), red on main, non-required → a permanent tolerated red. fmt (4.3s, parse-only, green) was collateral damage of the fusion (§3: two separable facts welded into one row).CommitCargoFmtCheckonGitPrePushHook). That coverage is provably not in effect:core.hooksPathin this worktree points at/home/briansrls/gunbc/.git/hooks, which contains no pre-push hook at all — not the repo's.githooks/that carries the fmt check. A hook is opt-in per clone, bypassable with--no-verify, and absent in fresh container worktrees — i.e. an escape hatch (§5), and Dissolve the docs-only CI floor shortcut per its named dissolve-on: replace path-prefix skip (ci_spec.dag:344-465, ci.yml:180-199) with affected-set-scoped compile-clean (Ruling 1 path grain). Context: the shortcut's skip class (docs-only diffs) exactly shadows the doc_reachability orphan wall's sub #6658 is the receipt that it failed.RustMonolithGate— which the ruling explicitly rejects) is being decided separately and is not in this PR.4. cargo fmt re-enrolled in CI, de-fused from the nextest bundle (operator ruling 2026-07-15)
The fix for #3's root cause. Not a
RustMonolithGatere-enrollment — that stays rejected, and this doesn't touch it.RunStep, first in the build job — a 4-second violation fails in 4 seconds instead of after the ~33min release build.buildisn't protection-required itself, butci needs:[build], so a red fmt blocks the required job by construction. The toolchain already installs therustfmtcomponent inci_prelude_steps, so marginal cost is ~4s and no build.gunbc_ci_job_timeout_policy_dispositionrequires "the backstop is the exact step-sum + prelude". The new step carries the aux cap andgunbc_ci_build_job_backstop_timeout_minutes()gains exactly one aux term (65 → 70). No step uncapped; sum stays exact.commit_gate_rust_suite_removed_dispositiondeclared "cargo fmt stays enforced by the pre-push hook". That claim is retracted in-row and the fmt half marked reversed. The nextest half and theRustMonolithGaterejection are preserved verbatim.ci.ymlregenerated through the emit authority (expected_ci_yml), never hand-edited; trailing-newline gotcha handled.Emitted diff is exactly:
Green-by-execution (
claim_batch, local)Plus, for the fmt gate:
Discriminating RED controls (both changes):
exit 1(caught); restored tree →exit 0.No witness, assertion, or scan universe was weakened to get green.
inert_carrier/LocalAlias(needs a ruling, deliberately NOT resolved here)The third red is
LocalAlias, declared atsrc/v2/test/claim/resolve/qualified_module_projection_stripped_fixture.dag:5, landed by #6641. The fixture's own note says it best:The inert lens computes
is_test_dag(path) = path.ends_with("_test.dag"). The fixture is deliberately not named_test.dag, so it reads as production corpus while its only consumer is a test → "declared once, self-tested, zero non-test consumers" = inert. It is a fixture, not a dead scaffold. Its real consumer is the compile-clean gate.Two defensible fixes, and I don't think this is mine to pick:
.daghas no comments, so the row would be bare — a silent escape hatch with no reason or trigger, unlike the nfr rows above. It also conflates a fixture with the modeled-ahead-of-consumption carriers the roster is for. And the namespace-only resolution lane is actively producing more stripped fixtures → this recurs forever, and the roster degrades into a fixture registry (§2).is_test_daghas 10 call sites incl. the emit audit and the nfr scan, so it is load-bearing and beyond a "falsifier is red" brief.I lean (b) on the recurrence argument, scoped to the inert lens's universe only. Escalating rather than improvising per the load-bearing bar.
Not in this PR
The
live_deploy_apply_srv1_wetfailure is a separate issue (srv1 sudoers dropin missing; deploy witnesses assert the decision function against fixture actors + emit shape, never srv1's live grant). Diagnosis reported to the operator; needs root on srv1 + a converge realizer, not a code change here.