Skip to content

Delete the misleading 'ci' verb from the gunbc CLI surface - #9325

Closed
briansrls wants to merge 4 commits into
mainfrom
session/wise-crane-189
Closed

briansrls wants to merge 4 commits into
mainfrom
session/wise-crane-189

Conversation

@briansrls

Copy link
Copy Markdown
Contributor

Auto-opened by session-dashboard for session wise-crane-189.
Pushing to session/wise-crane-189 advances this PR.

Worker attestation

Before flipping this PR to ready for review, confirm each item:

  • Title describes the change (not the session id or branch).
  • PR body summarises what and why (replace the TODO below).
  • Tests run: name the command (e.g. npm test, cargo test) and the result.
  • If this closes a work item, the body contains a Closes #N directive.
  • No commits on this branch are surprises (no fork/cherry-pick I did not make).
  • No secrets / credentials / large binaries staged.

Summary

TODO: replace this paragraph with one or two sentences naming the change and its motivation. Reviewers read this first.

Test plan

  • TODO: list the commands that ran (or "no tests changed; relied on CI") and the outcome.

`gunbc ci` claimed, by its name, to run CI. It could not: its composed
script's floor leg is `claim_executor --plan-entry
src/v2/workflow/ci_floor_plan.dag --plan-function gunbc_ci_floor_plan`,
and that entry file was deleted by the 2026-08-15 floor cut. What
remained executable was a release build plus an artifact verification —
so the verb was a name asserting a claim its body does not make, the
fabricated-plausible-output class (DESIGN §5), not a stale convenience.

Deleted at the root rather than deprecated (DESIGN §3, delete-first — a
surviving X is an attractor, and the lane building a real target-actuation
route must not have to compete with a verb that looks like it already
does the job):

- the `ci` row in `gunbc.cli_dispatch_surface`, and its emitted mirror
  `gunbc_cli_dispatch_surface.rs` (regenerated, not hand-edited)
- the hand-written `Commands::Ci` variant and arm in `main.rs` (that file
  is a declared divergence and is hand-maintained by design)
- `dag/tools/gunbc_ci.dag`, whose only invoker was the verb
- `gunbc_ci_emission_surface` in `std.emit_on_demand`, its enrollment, and
  its two references in the emit-on-demand kernel witness
- `residue_gunbc_ci_clean` in the wall-residue live witness, which named
  the deleted file
- `gunbc_ci_run_script` in `v2.workflow.ci_release_build_emit`, zero
  consumers once the entry is gone

NO CAPABILITY IS LOST, so no §4b(3) rung drop is declared. Both surviving
halves of the composition have live entry points of their own: artifact
verification at `claim_executor --verify-build-artifacts`, and the release
build as an ordinary `cargo build -p v1-compiler --release`. What is
deleted is the misleading COMPOSITION, not either component. The third
leg — the floor run — was already unreachable before this change and its
absence is declared in DESIGN's CI entry, not here.

Census, reported either way per the brief: `.github/workflows` contains
zero occurrences of `gunbc ci` (the required workflow is `witnesses.yml`
and it invokes `claim_executor`); no `.dag`, doc or script invokes the
verb; `test.claim.cli_dispatch_surface` asserts no verb roster.

`gunbc_cli_emitter_gap` stays non-empty after the cut — `converge` and
`serve` remain verb-level `AbsentFromEmitMainRs`, plus absent options
under present verbs — so `gap_is_non_empty_while_the_divergence_row_stands`
stays green and the divergence registration is untouched.

Measured on BuildBuddy: `claim_executor --required-regen` reports
`first_generation_equal=true planned=136 executed=136
declared_divergent=1 [main.rs]`, and `gunbc --help` lists
compile/run/converge/serve with no `ci`.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@gunbai-bot
gunbai-bot Bot marked this pull request as ready for review August 26, 2026 08:16
Brian Searls and others added 3 commits August 26, 2026 18:18
# Conflicts:
#	src/v1/stage0/src/gunbc_cli_dispatch_surface.rs
Both sides changed this generated projection since the merge base, so
neither side's bytes were the projection of the merged authorities. The
mirror is derived, not resolved: this is the emitter's output over the
merged `gunbc.cli_dispatch_surface`, which carries main's new
CliVersionIdentity surface and no `ci` row.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
# Conflicts:
#	dag/std/emit_on_demand.dag
#	src/v1/stage0/src/main.rs
#	src/v2/workflow/ci_release_build_emit.dag
@gunbai-bot

gunbai-bot Bot commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

Closing unmerged: superseded. The outcome this PR asked for is already true on main, and what remains here is two blank-line deletions.

Measured against main 757db61:

check result
verb: "ci" in gunbc.cli_dispatch_surface 0
Commands::Ci in main.rs 0
dag/tools/gunbc_ci.dag absent
effective diff of this branch vs main 2 files, 2 deletions (blank lines)

The verb was deleted by 489346f (#9252), as part of that lane's plan/walk residue sweep — confirmed both by the commit that removed dag/tools/gunbc_ci.dag and by a pickaxe on verb: "ci" in the surface authority.

Merging this would land two whitespace deletions and read in history as the change that deleted the verb, when it did not. A PR whose stated purpose is already true is worse than no PR.

Preserving the analysis, since it does not exist elsewhere. The deletion landed bundled inside an unrelated residue sweep, so the reasoning below was never stated on the change that carried it:

  • This was a correctness deletion, not tidying. gunbc ci reported SUCCESS after a release build and artifact verification without running CI. Its name was precisely the claim it did not make, so anyone who ran it and saw green was misled by the surface itself.
  • No capability was lost, so no §4b(3) rung-drop declaration was owed. Both halves of what the verb did survive at live entry points — artifact verification at claim_executor --verify-build-artifacts, the release build as an ordinary cargo build. What was deleted is a misleading composition of two things that still exist, not the things themselves. This was checked rather than assumed, which matters because a census showing "no .dag invoker" is strong evidence about modules and silent about a human who typed the verb.
  • The ordering held. The intent was to delete the false route before a real gunbc test target route exists, so the two never compete and the replacement never has to displace something that looks like it already works. That property survived, by another lane's diff.

Also found and confirmed absent from main by this lane's census: gunbc_ci_emission_surface, gunbc_ci_run_script, and the live residue_gunbc_ci_clean row. The only surviving gunbc_ci string is a historical row in witness_row_cost_basis.tsv, which is cost data rather than a live witness.

Reopen if the tree-level measurements above are wrong — they are the thing to falsify.

— sent from merry-bear-547

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