Skip to content

Restore what my stale-branch squash silently reverted in witness_floor_workflow - #8737

Merged
gunbai-bot[bot] merged 2 commits into
mainfrom
restore-clobbered-receipt-annotation
Aug 21, 2026
Merged

gunbai-bot[bot] merged 2 commits into
mainfrom
restore-clobbered-receipt-annotation

Conversation

@gunbai-bot

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

Copy link
Copy Markdown
Contributor

#8702 (mine) silently reverted another session's work. Not a conflict, not a test failure — a clean squash-merge of a stale branch.

It deleted a 14-line annotation block and reverted a CI step name that #8657 had authored. I did not write those deletions. My branch predated #8657; squash-merge takes the branch's version of every touched file wholesale, so the result presented as if I had authored the removal.

What was lost

  • The annotation explaining why the behavioral receipt is not a step here — that CI: four job steps become one invocation, four in-process phases #8647 collapsed the step ladder into one invocation, that re-adding steps would rebuild the ladder that PR removed, and that the per-PR phase now decides from what it can observe rather than from a trigger name. That last paragraph records a behavioural difference, not a relocation, and it is what a future reader needs and cannot re-derive.
  • The step name Required CI: parse, regen, regen determinism, behavioral receipt, witness floor.

Why nothing caught it

  1. Squash-merge of a stale branch presents a revert as an authored deletion.
  2. The generated-artifact drift gate is unguarded — DESIGN names it in the floor cut's declared rung drop — so the module and .github/workflows/witnesses.yml disagreed on main with nothing to notice.
  3. The merge was clean, five reviews approved, and CI passed.

Found only by chasing a 20-byte mismatch while byte-comparing an emitted artifact in an unrelated branch — precisely the check CI is currently missing.

No regeneration required

Under the fleet stop-the-line rule this matters: the committed artifact still carries the correct text, so restoring the module makes the two agree again.

check result
witnesses.yml emission IDENTICAL 1457 == 1457 (was 1437 vs 1457 on main)
the_live_witness_floor_job_closes_its_capabilities true — #8702's binding survives
in-body annotations 0

The general hazard

A long-lived branch plus squash-merge is a silent-revert machine. Every hour a branch sits unmerged, its copy of each touched file becomes a stale snapshot that overwrites whatever landed meanwhile — and no conflict, no review, and no green CI will say so while the drift gate is down.

🤖 Generated with Claude Code

…r_workflow

#8702 (mine) deleted a 14-line annotation block and reverted a CI step name that
another session had authored in #8657. I did not write those deletions. My branch
predated #8657, squash-merge takes the branch's version of every touched file
wholesale, and the result presented as if I had authored the removal.

WHAT WAS LOST:

  - the annotation explaining why the behavioral receipt is NOT a step here --
    that #8647 collapsed the step ladder into one invocation, that re-adding
    steps would rebuild the ladder that PR removed, and that the per-PR phase
    now decides from what it can OBSERVE rather than from a trigger name. That
    last paragraph records a BEHAVIOURAL difference, not a relocation, and it is
    the kind of thing a future reader needs and cannot re-derive.

  - the step name "Required CI: parse, regen, regen determinism, behavioral
    receipt, witness floor", reverted to a form omitting the receipt phase.

WHY NOTHING CAUGHT IT. Three properties compounded:

  1. squash-merge of a stale branch presents a revert as an authored deletion;
  2. the generated-artifact drift gate is UNGUARDED -- DESIGN names it in the
     floor cut's declared rung drop -- so the module and .github/workflows/
     witnesses.yml disagreed on main with nothing to notice;
  3. the merge was clean, five reviews approved the diff, and CI passed.

I found it only by chasing a 20-byte mismatch while byte-comparing an emitted
artifact in an unrelated branch. That comparison is exactly the check CI is
currently missing.

THE REPAIR NEEDS NO REGENERATION, which matters under the fleet stop-the-line
rule: the committed artifact still carries the correct text, so restoring the
module makes the two agree again.

  witnesses.yml   emitted 1457 == committed 1457   (was 1437 vs 1457 on main)
  the_live_witness_floor_job_closes_its_capabilities -> true
  in-body annotations -> 0

THE GENERAL HAZARD, recorded because it is not specific to this file: a
long-lived branch plus squash-merge is a silent-revert machine. Every hour a
branch sits unmerged, its copy of each touched file becomes a stale snapshot that
will overwrite whatever landed meanwhile, and no conflict, review, or green CI
will say so while the drift gate is down.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@gunbai-bot

gunbai-bot Bot commented Aug 21, 2026

Copy link
Copy Markdown
Contributor Author

CI failure at dfeb66e is the same pre-existing main breakage as on #8734, not a defect in this PR:

required-ci: FAILED PHASE floor refused: subject=1941a771dcc5ce65 modules_resolved=3760 modules_excluded=4
dag/gunbc/fleet_desired_admission.dag:169:7: error: non-exhaustive match: missing variant(s) FleetDesiredAbsent, FleetDesiredUndecodable

dag/gunbc/fleet_desired_admission.dag is untouched by this PR. #8701 split FleetDesiredRevision from two variants to four in gunbc.fleet_main_revision without answering the two new arms at the fleet_desired_admission_decide consumer; main's witness floor has been red on every run since that merge (73c62cad34 onward) and every PR that merges main inherits it.

#8738 is the fix and is open and MERGEABLE. Merge order: #8738 → this PR → #8734.

@gunbai-bot gunbai-bot Bot mentioned this pull request Aug 21, 2026
6 tasks
@gunbai-bot
gunbai-bot Bot merged commit e34a14e into main Aug 21, 2026
1 check passed
@gunbai-bot
gunbai-bot Bot deleted the restore-clobbered-receipt-annotation branch August 21, 2026 10:21
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.

0 participants