Skip to content

The required roster is four phases, not three: #9035 added one and DESIGN never noticed - #9085

Merged
briansrls merged 2 commits into
mainfrom
design-phase-count-four
Aug 24, 2026
Merged

briansrls merged 2 commits into
mainfrom
design-phase-count-four

Conversation

@gunbai-bot

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

Copy link
Copy Markdown
Contributor

What

DESIGN.md's CI bullet says the required run is "ONE step running THREE phases in ONE process". It is four. This corrects the count and records why the sentence is written as a measurement.

Evidence (measured, not recalled)

Run 32678275911 prints the roster from the required mode itself:

required-ci: phase parse (.dag: src/v1, dag, src/v2)
required-ci: phase regen (first generation vs committed)
required-ci: phase v2-emission (one entry, the board's producer)
required-ci: phase floor (one prepared subject, one fold)
required-ci: phases_run=4

The phase is real and enrolled, not a stray log line:

  • --required-v2-emission is parsed in claim_executor
  • gunbc.ci_layer_roots carries its entry roster and its required_v2_emission_dissolution condition
  • fixtures/v2_emission_gate/green/subject.dag carries its green subject

It landed in #9035 — "today an emission break reached main and no gate could see it" — after the 2026-08-21 operator ruling that cut the roster to three.

This is an addition, not a reversal

The five phases the 2026-08-21 ruling deleted stay deleted and stay enumerated in the bullet. #9035 restored none of them; it added a new one. The declared scope narrowing is unaffected, and merge-admission stamping stays on the unguarded list.

Why the sentence changed shape

The count has now been wrong in both directions: an earlier revision said four while enumerating a determinism pass no required run performed, that was corrected to three, and the three went stale when #9035 landed. The new text records both, because that history is the argument for stating the count as a measurement rather than a recollection — and a reader seeing only the latest correction would assume the earlier one was the careless kind.

Per the bullet's own standard, a knowingly-false recital in the canonical authority is premise contamination: every session reading it plans against a roster that does not match what runs.

Scope

One sentence-level edit to one paragraph. No code, no substrate, no .dag. Verified no residual THREE phases / remaining three phases claim survives; the surviving three measurements refers to what the deleted phases used to measure and is still correct.

Provenance

Found while diagnosing an unrelated floor red on #9020 — the run's own phases_run=4 contradicted the document, and a lane had already quoted the same figure back to me as unremarkable.

Brian Searls and others added 2 commits August 24, 2026 02:20
…is paragraph never noticed

DESIGN's CI bullet states its phase count in the present tense, on the
explicit ground that a knowingly-false recital in the canonical authority
is premise contamination. That count has been false since #9035.

MEASURED, not recalled. Run 32678275911 prints the roster from the
required mode itself:

  required-ci: phase parse (.dag: src/v1, dag, src/v2)
  required-ci: phase regen (first generation vs committed)
  required-ci: phase v2-emission (one entry, the board's producer)
  required-ci: phase floor (one prepared subject, one fold)
  required-ci: phases_run=4

`--required-v2-emission` is real and enrolled: the flag is parsed in
claim_executor, `gunbc.ci_layer_roots` carries its entry roster and its
dissolution condition, and fixtures/v2_emission_gate/ carries its green
subject. It landed in #9035 -- "today an emission break reached main and
no gate could see it" -- AFTER the 2026-08-21 ruling that cut the roster
to three.

THIS IS AN ADDITION, NOT A REVERSAL. The five phases that ruling deleted
stay deleted and stay enumerated below; #9035 restored none of them. The
scope narrowing that ruling declared is unaffected, and merge-admission
stamping remains on the unguarded list.

The sentence now records that the count has been wrong in BOTH
directions -- four, corrected to three, stale again at four -- because
that is the argument for stating it as a measurement rather than as a
recollection, and a reader who sees only the latest correction will
assume the previous one was the careless kind.

Found while diagnosing an unrelated floor red on #9020: the run's own
`phases_run=4` contradicted the document, and a lane had already quoted
the same figure back to me as if it were unremarkable.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@briansrls
briansrls merged commit dc5872e into main Aug 24, 2026
1 check passed
@briansrls
briansrls deleted the design-phase-count-four branch August 24, 2026 23:37
gunbai-bot Bot pushed a commit that referenced this pull request Aug 24, 2026
…dit into the authority

The merge driver refused DESIGN.md, which is what it is for: both sides
changed a generated path. The authority dag/gunbc/design_document.dag merged
cleanly, so there was nothing to hand-resolve; DESIGN.md is regenerated by
main_wet, run locally to a verified fixed point.

But a straight regeneration would have SILENTLY DELETED main's #9085. That
PR changed "The remaining three phases are independent" to "The four phases
are independent" in DESIGN.md ONLY -- `git show dc5872e --stat` is
`DESIGN.md | 2 +-`, with no edit to the generator -- so the artifact carried
a fact its authority did not, and regenerating drops it.

Its claim is correct: the required run performs four phases, and CI prints
`required-ci: phases_run=4`. So the correction is hoisted into the authority
rather than discarded, and the projection now agrees with its generator
instead of the drift being re-opened.

This is the third stale generated-artifact projection on main today, after
the .gitignore allow-entry and the #9132 row. Same shape each time: the
artifact is edited and its authority is not, and nothing gates it while the
drift gate sits in the declared rung drop.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
gunbai-bot Bot pushed a commit that referenced this pull request Aug 25, 2026
ONE CONFLICT, IN A GENERATED FILE, SO IT WAS NOT RESOLVED BY MERGING TEXT.
DESIGN.md is projected from gunbc.design_document. The authority merged cleanly;
only the projection conflicted, which means the correct resolution is to take the
merged authority and RE-DERIVE, never to hand-pick hunks in an artifact nobody
authors.

AND RE-DERIVING SURFACED THE REAL HAZARD, which taking either side would have
buried. #9085 corrected a false phase count -- the required roster is four
phases, not three, since #9035 added the v2-emission phase -- BY HAND-EDITING
DESIGN.md, touching only that file and never gunbc.design_document. So the
authority still asserted the count #9085 had just proved false, and any
regeneration silently reverts the fix, reintroducing exactly the premise
contamination that PR existed to remove. Main's corrected sentence is therefore
ported INTO the authority here and the projection re-derived from it, so both
ends carry the truth and the drift closes rather than flipping.

That is the SECOND projection drift in this one document tonight. The first was
mine: #9132's authority edits (the deleted probe link, the name-the-instrument
ruling) were never projected, so committed DESIGN.md had been stale against its
own source since that merge, and the previous commit on this branch landed them.
Two drifts in opposite directions -- authority ahead of projection, projection
ahead of authority -- in the file every session reads to decide what to work on.
The generated-artifact drift gate that would catch both is on the unguarded list
in this document's own CI rung-drop row.

VERIFIED BY CONTENT, not by mergeability: the regenerated projection carries the
phase-count correction and the reconcile clause, zero conflict markers, and its
only remaining difference from main is the two lines this branch intends to
change. Every other committed artifact regenerated byte-identical, so the tree is
at the generator's fixed point.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DRMbwdtHZxTiMNZD5WLS3P
gunbai-bot Bot pushed a commit that referenced this pull request Aug 25, 2026
…ves only in the authority

Same procedure as the previous merge: the driver refused DESIGN.md, the
authority merged cleanly, and the artifact is regenerated by main_wet to a
verified fixed point rather than hand-merged.

The predicted silent deletion has now happened on main. #9085 corrected
"three phases" to "four phases" in DESIGN.md alone, never in its generator.
#9153 regenerated the artifact from that generator, and main's DESIGN.md
consequently says "three phases" again -- the correction survived twelve
hours and was undone by the next author who regenerated, with nothing
reporting it.

This branch hoisted that correction into dag/gunbc/design_document.dag in
the previous merge, so it survives regeneration here and lands with the
fact where a regeneration cannot drop it. The claim is measured, not
inherited: CI prints `required-ci: phases_run=4`.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
gunbai-bot Bot pushed a commit that referenced this pull request Aug 25, 2026
… sentence it left stale

Both the authority and its projection conflicted this time. The authority is
hand-resolved; DESIGN.md is regenerated by main_wet to a verified fixed point
and was never opened in a merge tool.

On the phase-roster paragraph, main's text wins wholesale and mine is
discarded. #9035 added a fourth phase and main now carries a full measured
account of that in the AUTHORITY -- roster read off run 32678275911, with the
five phases the 2026-08-21 ruling deleted enumerated as still deleted. That
supersedes the one-word "three -> four" hoist this branch was carrying, which
existed only because #9085 had corrected the artifact and not its generator.

One sentence of this branch's is kept: "The four phases are independent".
Main's new paragraph establishes the roster is four, but the later sentence
in the same block still read "The remaining three phases are independent",
so taking main wholesale there would have re-landed a sentence main's own
text contradicts. Verified programmatically that no other sentence of main's
is dropped.

Co-Authored-By: Claude Opus 5 (1M context) <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