Skip to content

Falsifier cold-sweep reds: nfr roster burn-down + apply_role backfill; re-enroll cargo fmt in CI (de-fused from nextest) - #6691

Merged
briansrls merged 9 commits into
mainfrom
session/swift-owl-116
Jul 16, 2026
Merged

briansrls merged 9 commits into
mainfrom
session/swift-owl-116

Conversation

@briansrls

@briansrls briansrls commented Jul 15, 2026 •

Copy link
Copy Markdown
Contributor

What the falsifier caught

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 not broken — it was doing its job. Three discovery witnesses returned Bool(false) against the whole corpus, on drift that per-PR affected-set selection had predict-skipped. Bisected to the window c8169ef93b..00aa9ae2ef (15 commits) and attributed each root to its landing PR.

This PR clears the two non_fold_residue reds. The inert_carrier red 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_count trap already recorded in this roster):

row why stale verdict
nbd_proxy_serve.dag::shell_command_leading_lit_text fn deleted by #6629 (RawLine body → typed session-lease effect) genuinely migrated — fired the dissolve-on its row carried
nbd_proxy_serve.dag::shell_rawline_starts_with_tool same same
emit_host.dag::run_test_claim_emit_vs_eval_verdict fn still exists (emit_host.dag:335) but #6650 enumerated its wildcard into 3 explicit constructor arms; no bare _ => remains genuinely folded — ratchet tightens

2. non_fold_residue — 1 unrostered row backfilled

bash_composition_recognizer.dag::apply_role, landed by #6637. Two-special-variant dispatch over TokenRole's 5 variants (IfFraming/UnmodeledKeyword rebuild ScanState; Separator/JoiningControl/OperandFraming all reduce to the closed run, so enumerating would clone the general arm 3×). Same class as the orch_emit_let_step row directly below it — backfilled with reason + dissolution trigger so the ratchet re-arms (receipt #10).

3. Latent main red: cargo fmt --all --check fails on clean main

Not my lane, fixed because it blocks it. main carries exactly one fmt violation workspace-wide, landed by #6658 (fe6c586988, today 13:29).

RECEIPT: on clean origin/main, cargo fmt --all --check exits 1 with exactly one Diff in hunk; after rustfmt on that one file it exits 0. File is hand-written (a bin declared in gunbc.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 .rs change; it does not):

⚠️ This is a live gap, not just one bad file: nothing enforces fmt anywhere today. Raised with the operator; the fix (de-fuse the 4.3s fmt check from the 37 GiB nextest bundle, without re-enrolling 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 RustMonolithGate re-enrollment — that stays rejected, and this doesn't touch it.

  • Shape: standalone RunStep, first in the build job — a 4-second violation fails in 4 seconds instead of after the ~33min release build. build isn't protection-required itself, but ci needs:[build], so a red fmt blocks the required job by construction. The 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 requires "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). No step uncapped; 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 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.

Emitted diff is exactly:

      - name: cargo fmt --all --check (fast gate; fails in seconds, before the release build)
        run: "\"$CARGO_BIN\" fmt --all --check"
        timeout-minutes: 5

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, deliberate

Plus, for the fmt gate:

PASS generated_artifact_drift_witnesses   <- the real drift gate; ci.yml byte-exact vs expected_ci_yml
0 FAILs across ci_yaml_serializer / ci_compile_jobs / placement_grain / rust_gates_ci / ci_budget_tree

Discriminating RED controls (both changes):

  • nfr: both witnesses were red on this same tree before the roster edit, green after.
  • fmt: planted a violation, ran the exact emitted step command → exit 1 (caught); restored tree → exit 0.

No witness, assertion, or scan universe was weakened to get green.

⚠️ Open decision — inert_carrier / LocalAlias (needs a ruling, deliberately NOT resolved here)

The third red is LocalAlias, declared at src/v2/test/claim/resolve/qualified_module_projection_stripped_fixture.dag:5, landed by #6641. The fixture's own note says it best:

"Grammar lane G1 corpus fixture: no import lines … this module is intentionally not a *_test.dag discovery entry."

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:

  • (a) Roster it. Lowest risk, matches the 10 existing entries mechanically. But: .dag has 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).
  • (b) Fix the lens proxy so fixture modules under a test tree count as test scaffolding. Principled and kills the class — but is_test_dag has 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_wet failure 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.

Brian Searls and others added 3 commits July 15, 2026 22:06
…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>
@gunbai-bot gunbai-bot Bot changed the title falsifier is failing non_fold_residue roster: burn down 3 stale rows + backfill apply_role (falsifier cold-sweep reds) + fix latent main fmt red Jul 15, 2026
Brian Searls and others added 2 commits July 15, 2026 22:31
…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>
@gunbai-bot gunbai-bot Bot changed the title non_fold_residue roster: burn down 3 stale rows + backfill apply_role (falsifier cold-sweep reds) + fix latent main fmt red Falsifier cold-sweep reds: nfr roster burn-down + apply_role backfill; re-enroll cargo fmt in CI (de-fused from nextest) Jul 15, 2026
@gunbai-bot
gunbai-bot Bot marked this pull request as ready for review July 15, 2026 22:38
@gunbai-bot

gunbai-bot Bot commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

Thanks — flagging the concat(..., "") shape is a fair catch, and I want to be straight that it's valid, not invalid: it is a genuine no-op. ci_release_build_line earns its concat because it folds --bin flags onto a prefix; ci_fmt_gate_line has nothing to fold, so the trailing concat(x, "") is pure noise and the bare literal would be strictly better.

I'm not pushing a fix for it in this PR, on cost grounds rather than disagreement:

  • The change is semantically inert — the emitted ci.yml is byte-identical either way (verified: generated_artifact_drift_witnesses passes, and the emitted step is run: "\"$CARGO_BIN\" fmt --all --check" with or without it).
  • Pushing now would cancel a release build ~15 minutes into a ~33-minute cold compile, stale both approvals on 153b774f1, and force a fresh ~45-minute CI cycle plus re-reviews — to delete a no-op concat. That's a bad trade against the "don't block on endless polish; substantive follow-ups can land in a new PR" guidance, especially as I've already burned ~30 minutes of runner time on runs my own rapid pushes cancelled.
  • It is not a cost-shape defect (evaluated once at emit time), so the standing "bare minimum cost / always fix" rule doesn't bite here.

It rides the same tracked 🟡 dissolve-on already recorded in ci_fmt_gate_note: the hand-spelled argv collapses onto extdeps.cargo_build's typed cargo.Build.Fmt when the ci.yml emit seam can bind a typed cargo operation instead of a shell string — the same de-fork ci_release_build_line is waiting on. The concat disappears with it rather than needing its own trip. If you'd rather it go now regardless of the CI cost, say so and I'll push it.

— sent from swift-owl-116

@cursor

cursor Bot commented Jul 15, 2026

Copy link
Copy Markdown

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.

Brian Searls and others added 3 commits July 15, 2026 23:48
…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>
@briansrls
briansrls merged commit 1c3d552 into main Jul 16, 2026
2 of 3 checks passed
@briansrls
briansrls deleted the session/swift-owl-116 branch July 16, 2026 01:13
briansrls pushed a commit that referenced this pull request Jul 22, 2026
…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
briansrls added a commit that referenced this pull request Jul 22, 2026
… + 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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant