Skip to content

MAIN-H3: heal's SupersededByHealedHead exit rests on a premise refuted at n=4 — does the design still hold, and annotate the retired rung_drop row - #10212

Closed
gunbai-bot[bot] wants to merge 7 commits into
mainfrom
session/cool-koi-623
Closed

gunbai-bot[bot] wants to merge 7 commits into
mainfrom
session/cool-koi-623

Conversation

@gunbai-bot

@gunbai-bot gunbai-bot Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

Auto-opened by session-dashboard for session cool-koi-623.
Pushing to session/cool-koi-623 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-auto-heal and others added 7 commits September 3, 2026 04:03
…as justified by is false

`gunbc.rung_drop` `floor_cut_heal` and the annotation above `gunbc.ci_spec`
`gunbc_ci_heal_commit_push_script` both said an Actions-credential push starts
no workflow run. Measured over the whole heal-push population since #10118
restored the job (n=4), a pull_request run was CREATED 4 times out of 4. What
GitHub withholds is EXECUTION: 0 of the 4 started a single job on the
triggering attempt.

The conclusion those carriers drew stands unchanged -- no executed verdict
exists for the healed head, so heal exits nonzero rather than speak for a tree
it produced. The mechanism does not, and what it concealed is the point: a HELD
judge is not an ABSENT one, so the release is an approve on that specific held
run rather than a re-run, and a dispatched revalidation is a second run on that
head rather than the only one.

The other arm is measured two-sided with the identity held constant: 0 of 500
workflow_dispatch runs held, and the entire action_required listing is
event=pull_request. The hold keys on the EVENT, not the identity or the token,
so the dispatched run is the only route to the healed head that executes
without a human -- the second-run cost buys something measured rather than
duplicating a run that would have happened anyway. Not established, and not
written as if it were: whether a dispatched run's contexts clear branch
protection, which is 403 to this token.

The rung_drop row is ANNOTATED, not rewritten: the refuted sentence is quoted
in place, and the row states that the correction moves no rung and un-retires
nothing, since the capability it retired on is automatic repair and
revalidation was already declared not restored there. One count, one home:
ci_spec cites the row rather than restating the numbers.

Files `external_mechanism_asserted_under_a_correct_conclusion` per section
4b(1). The class is the immunised variety of silent wrongness -- a mechanism
about external reality asserted as the reason for a conclusion that is
independently correct, so every test of the conclusion confirms the premise by
association and nothing the repository can execute refutes it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01R422VRAe11vgYT3xNPsbQ5
…it, and leave the class's trigger honestly undetermined

Three changes, each from a reading the first pass did not have.

REVERT ci_spec. `gunbc.ci_spec` is held by #10175, which is re-examining the
same premise; a second lane editing one premise from its own verdict is how one
fact acquires two authorities. The annotation there still carries the refuted
sentence on main, and the failure-mode row records that as an observation
rather than repairing it. The repair is routed separately once #10175 lands.

SCOPE, RATHER THAN ONLY CORRECT. A held run can be released, or re-run, and
then judge the head -- one of the four eventually executed 6 jobs on a head
heal had pushed. So "a head nothing judged" is true AT EXIT TIME and can stop
being true with nobody touching anything. The exit is a claim by the run
printing it about the moment it prints, never a standing property of the head.
The row now says so, and states explicitly that the retirement itself stands:
it retired on automatic repair of drift, observed, and revalidation was already
declared not restored there -- the refuted mechanism was never its ground.

THE INSTRUMENT, three levels deep and each invisible from the one above: a
run's conclusion read as an execution receipt; then a job count taken on the
wrong attempt; then a cross-attempt subtraction, because the run object's
top-level created_at is attempt 1's while its run_started_at is attempt 2's --
two fields from two attempts, naming neither. The discriminator is not "count
jobs", it is count jobs ON THE ATTEMPT THE CLAIM IS ABOUT, and the default
endpoint silently answers for the latest.

AND THE CLASS KEEPS AN UNDETERMINED TRIGGER. It is detectable only from outside
the repository, since the refuting evidence lives in the external system, so no
lens or witness reading this tree can reach it. Carrying the observation beside
the claim is a necessary condition and is not known to be sufficient -- an
observation of a system that changes without notice is a receipt about a past
world, which is 4b's outside-the-modeled-guarantee column. Naming that row as
the capability would be the artifact-for-capability substitution 4b(3) forbids.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01R422VRAe11vgYT3xNPsbQ5
# Conflicts:
#	docs/design-failure-modes.md
#	docs/design-rung-drops.md
…rived ceiling and a named trigger

codex/gpt-5.6-sol requested changes on the new failure-mode row, and the
objection is correct: the row assigned a ladder rung and a ceiling to EXTERNAL
REALITY, which §4b deliberately keeps off the ladder, and then declined to name
a next-rung trigger while its own text conceded the separation "CAN climb" --
the untracked stall §4b(2) forbids.

The repair runs opposite to the suggested one, and that is the substance rather
than a quibble. The class's subject is not the external system; it is an
AUTHORING ACT wholly inside this tree -- a carrier stating an unobserved
mechanism as the reason for a decision. That is decidable by reading the
carrier, so it ranks and is obligated to climb. Modelling it as a boundary
obligation would have moved a rankable in-repository defect off the ladder,
which is the same mistake the row already had, one step further along.

So the row now splits two axes with different decidability:

  (i) THE SEPARATION -- is the mechanism claim backed by an observation?
      Decidable from the carrier. CEILING 4, derived: if the only construction
      able to express an external-system mechanism requires the observation
      that produced it, an unbacked claim has no constructor. Anything below 4
      is a correctness gap, not a ceiling. The rung found at 1 is scoped here.

  (ii) THE TRUTH of the external fact -- outside the modeled guarantee, not a
      rung and never one, named explicitly so it cannot be mistaken for a weak
      implementation that should climb.

TRIGGER FOR (i), a capability and not an artifact: the typed observation-carrying
construction PLUS a consumer that enumerates carriers making such a claim
without one. The pairing is the whole trigger -- the construction alone makes
the honest form available; only the enumerating consumer makes the dishonest
form unwritable rather than noticed once. §4c decides where it cannot live:
semantic passes see only the annotation-erased projection, so this can never be
an annotation.

The asymmetry that made the class look unrankable is kept, correctly placed: the
defect is visible from inside the tree, the refutation only from outside. That
is why it survives review, not why it cannot climb.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01R422VRAe11vgYT3xNPsbQ5
# Conflicts:
#	dag/gunbc/recurring_failure_mode.dag
#	docs/design-failure-modes.md
# Conflicts:
#	docs/design-failure-modes.md
#	docs/design-rung-drops.md
# Conflicts:
#	dag/gunbc/recurring_failure_mode.dag
#	docs/design-failure-modes.md
@gunbai-bot

gunbai-bot Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor Author

Closing: this PR carries no new content and merging it would revert other lanes' work.

This is an auto-opened duplicate on session/cool-koi-623 after that branch's content already landed as #10191 / 569c4afcf35. The dashboard asked me to resolve a merge conflict here; the conflict is not the problem and resolving it would be the wrong action.

My contribution is already on main, exactly once:

$ git show origin/main:dag/gunbc/recurring_failure_mode.dag \
    | grep -c '^data external_mechanism_asserted_under_a_correct_conclusion'   -> 1
$ git show origin/main:dag/gunbc/rung_drop.dag \
    | grep -c 'CORRECTED 2026-09-03, AND THE ORIGINAL SENTENCE IS QUOTED'      -> 1

What merging this would actually do. The branch is many commits behind main, so its content differs from main in the reverting direction:

$ git diff --stat origin/main..origin/session/cool-koi-623
56 files changed, 385 insertions(+), 3781 deletions(-)

That includes .github/workflows/witnesses.yml, src/v1/stage0/src/v1_interpreter.rs, and the two ledger authorities where other lanes have appended rows since. Re-landing this branch would delete work that merged after it — including rows in recurring_failure_mode.dag, which is precisely the file where a lost row is silent and unrecoverable (authority_merges_unprotected_while_its_projection_is_guarded, #10179).

Why the "rebase and push" instruction doesn't apply here. It assumes the branch has content main needs. It does not. Bringing it current would produce an empty diff at best, and at worst a large accidental revert if any step resolved a ledger conflict by taking the branch side. There is nothing to land.

Closing rather than merging or force-updating. The work is on main; #10191 is the record.

— sent from cool-koi-623

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