Skip to content

main is rustfmt-dirty from the reorg: reflow the two lines #9637 pushed past width - #9639

Merged
briansrls merged 1 commit into
mainfrom
fix/main-rustfmt-drift
Aug 28, 2026
Merged

briansrls merged 1 commit into
mainfrom
fix/main-rustfmt-drift

Conversation

@gunbai-bot

@gunbai-bot gunbai-bot Bot commented Aug 28, 2026

Copy link
Copy Markdown
Contributor

main at 179d3f27618 fails cargo fmt --all --check at src/v1/stage0/src/cli_run.rs:818 and :828.

Cause is the reorg, not an unrelated slip. #9637 (709 renames) rewrote a path string inside merge_base_authority_projection_matches_jsonl_carrier to dag/gunbc/roadmap/roadmap_authority.dag. The longer path pushes the .args([…]) call and a .join(…) past rustfmt's width, so rustfmt now wants both broken across more lines.

This diff is rustfmt's own output, produced by cargo fmt --all. Deterministic, no judgment, no semantic content: +6 / −2 in one file.

Why it matters even though CI is not failing on it. The fmt gate is on the removed-and-not-yet-re-added list from the floor cut, so nothing downstream catches this. The only thing that fires is the local pre-push hook — so it surfaces one lane at a time, at push, and only for people who still have a working tree. It is invisible to the fleet by construction, which is why it needed reporting rather than being assumed known.

It has already cost one lane a --no-verify push. That is the part worth fixing at the root: --no-verify bypasses every hook check as a side effect, so an unrepaired formatting defect quietly converts into a lane pushing with all its other guards disabled.

Two things I checked before touching it:

  • cli_run.rs is hand-written seed Rust and not a generated artifact — no generator names it as an artifact path (the .dag hits are witness data tracking it). So formatting it creates no drift against any authority.
  • Admitted against the v1 seed freeze on the purpose test — it serves the v2 self-host program by unblocking the push path every lane uses — and it is none of the five refused classes. A whitespace reflow adds no language behavior, no compatibility obligation, no escape hatch, no seed feature, and no public surface.

Found by loyal-raven-764, who correctly declined to absorb someone else's defect into their own diff to get a green push.

— sent from swift-badger-524

…ed past width

#9637 (the 709-file dag/gunbc reorg) rewrote a path string inside the test fn
merge_base_authority_projection_matches_jsonl_carrier to
'dag/gunbc/roadmap/roadmap_authority.dag'. The longer path pushes two lines past
rustfmt's width, so main at 179d3f2 fails `cargo fmt --all --check` at
cli_run.rs:818 and :828.

This is rustfmt's own output, applied by `cargo fmt --all`. No judgment, no
semantic content, deterministic.

WHY IT MATTERS DESPITE NOT BEING A CI FAILURE. The fmt gate is on the
removed-and-not-yet-re-added list from the floor cut, so nothing downstream
catches this. The only thing that fires is the LOCAL pre-push hook, which means
it surfaces one lane at a time, at push, and only for people who still have a
working tree -- invisible to the fleet by construction. It already cost one lane
a --no-verify push, which bypasses every other hook check as a side effect.

cli_run.rs is hand-written seed Rust and NOT a generated artifact -- no generator
names it as an artifact path -- so formatting it creates no drift against any
authority.

Admitted against the v1 freeze on the purpose test: it serves the v2 self-host
program by unblocking the push path every lane in it uses. It is none of the five
refused classes -- a whitespace reflow adds no language behavior, no compatibility
obligation, no escape hatch, no seed feature, and no public surface.

Found by loyal-raven-764, who correctly declined to absorb it into their own diff.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@gunbai-bot

gunbai-bot Bot commented Aug 28, 2026

Copy link
Copy Markdown
Contributor Author

Correcting an overstatement in this PR's body. It reads:

--no-verify bypasses every hook check as a side effect, so an unrepaired formatting defect quietly converts into a lane pushing with all its other guards disabled.

That is wrong for this hook, and crisp-newt-899 caught it by reading .githooks/pre-push rather than assuming. Verified here:

two idempotent repo-local git config lines (merge driver, core.hooksPath)
a refs/fleet/* early-exit
cargo fmt --all --check          <- the only guard

So git push --no-verify skips exactly one check — this one — plus an idempotent config converge that the next ordinary push re-asserts. The pre-commit hook is separate and unaffected. "All its other guards" names guards that do not exist on this hook.

What survives, and it is still this PR's reason for existing: the fmt gate is on the removed-and-not-yet-re-added list from the floor cut, so nothing in CI catches this drift. Only the local pre-push hook fires — one lane at a time, at push, and only for whoever still has a working tree. Leaving it unrepaired means every blocked lane routes around the one guard that would have caught it, and the hook's own message tells them to (or 'git push --no-verify' to skip). The blast radius is one check rather than all of them; the drift is still real and still invisible to the fleet.

I am not editing the body text itself, so the original claim and this correction both stay legible — the same reason the diff is rustfmt's output rather than my own reflow.

— sent from swift-badger-524

@gunbai-bot

gunbai-bot Bot commented Aug 28, 2026

Copy link
Copy Markdown
Contributor Author

The failing check is inherited from main, not from this diff, and there is no fix to push here.

This PR's entire diff is +6 / −2 of rustfmt whitespace inside one #[test] function in cli_run.rs. The failing step is Required CI: witnesses lane (parse, witness floor) — a .dag phase. Whitespace in a Rust test module cannot produce a .dag parse or witness failure.

The correlation across unrelated diffs is the evidence. Three PRs tonight have failed at exactly this step, with disjoint contents:

PR diff failing step
#9634 1 .dag brace + 27 deleted Rust lines Required CI: witnesses lane
#9606 5 .dag files Required CI: witnesses lane
#9639 6 lines of Rust whitespace Required CI: witnesses lane

Three diffs with nothing in common failing identically is the signature of a defect in the shared base, not in any of them. All three also now get past Build the witness fold, which killed every run in the fleet before #9634 landed — so the compile and parse repairs hold, and what remains is downstream of them.

The four Upload the … roster failures are consequences of the floor not producing its TSVs, not separate defects.

What I am not claiming: which of main's remaining breaks this is. I inventoried five classes earlier tonight from an older main, and main has since moved through #9637's 709-file reorg and several merges, so some may be gone and others new. I am not restating that list as current without re-measuring it, and this PR is not the place to.

Not pushing. The review floor here is met (1 approval, no REQUEST_CHANGES, mergeable: MERGEABLE), the diff is cargo fmt --all output, and its red is a property of the base it is merged against.

— sent from swift-badger-524

@briansrls
briansrls merged commit dcb165a into main Aug 28, 2026
0 of 3 checks passed
@briansrls
briansrls deleted the fix/main-rustfmt-drift branch August 28, 2026 23:17
@briansrls
briansrls restored the fix/main-rustfmt-drift branch August 28, 2026 23:20
briansrls pushed a commit that referenced this pull request Aug 28, 2026
… all of them (#9652)

`cargo fmt --all --check` reports seven sites on pristine `a128026717`, so the
generated pre-push hook refuses every push in the fleet regardless of what the
pushing branch contains. A wall that everyone routinely bypasses with
`--no-verify` has stopped being a wall, which is the cost this repairs — not the
formatting itself.

Measured as a controlled comparison, not inferred: same command on a detached
worktree at `origin/main` with no local edits reproduces all seven, so the drift
is wholly inherited.

    src/v1/stage0/src/cli_run.rs:818, :828, :43312
    src/v1/stage0/src/bin/claim_executor.rs:1869
    src/v1/stage0/src/bin/cssl_assemble.rs:17
    src/v1/stage0/src/bin/effects_rest_transport_witness.rs:7, :13

Every change is a rustfmt line-wrap. No declaration is added, removed or
renamed, and no expression changes meaning, so this adds no v1 seed growth
surface.

All four files are hand-authored: none carries a "Generated by v1 compiler"
header and none appears in `emitted_population.rs`. That was checked first and
deliberately, because tonight's build-lane outage was caused by hand-editing a
generated projection — `v1_rt.rs` against `runtime_rust.dag` — and repairing a
formatting complaint the same way would have reproduced it at four more sites.

Scope covers all seven rather than the five with no owner. A partial sweep would
leave `cargo fmt --all --check` non-empty and the hook still refusing, which
unblocks nobody; the hook's predicate is the whole tree, not a site count. The
`:818` and `:828` reflows are therefore the same repair #9639 carries (and #9644
carries identically, blob `a7e1307b9e`) — a deliberate byte-identical overlap on
two of thirteen lines, not an independent judgement about them. `:43312` and the
other four have no open PR.

Found by snappy-dove-250, who hit the refusal pushing an unrelated two-file
`.dag` change and correctly declined to absorb it into a convergence repair.

Co-authored-by: Brian Searls <briansearls1@gmail.com>
Co-authored-by: Claude Opus 5 <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