Repository navigation
Runner-host eviction storm: HALF of all settled witnesses.yml runs never reach a verdict (50-51% cancelled at n=169 and n=89, chronic not regression), with a cgroup receipt naming a cause and TWO distinct cancel populations wearing one word - #9482
gunbai-bot[bot] wants to merge 3 commits into
Conversation
…he author's own push superseding them, and the discriminator is a SIGN
A measured claim -- half of all settled witnesses.yml runs never reach a verdict -- was minutes from
justifying a fleet-capacity escalation. The level replicates at four depths. The subject does not:
the overwhelming majority of those cancellations are lawful supersession, where an author pushed a
new commit and GitHub cancelled the run their own push made obsolete. That needs no action; a run
killed from outside means the head was never judged. One word, two states, opposite remedies.
The trap is that BOTH populations produce a newer run on the branch, so presence cannot separate
them. They disagree in DIRECTION: a supersession's replacement precedes the cancellation and causes
it, an eviction's replacement is the lane's own retry and follows it. Hence lag = (this run
concluded) - (replacement created), classified by sign. Zero negative lags across two independently
drawn windows.
extdeps.github.actions_runs the upstream run shape and closed conclusion vocabulary, anchored on
the workflow-runs API -- a different surface from workflow syntax,
and it owns no policy
gunbc.run_disposition the classifier: one total descent, no wildcard arms; refuses to
collapse unobserved-vs-absent, and derives supersession availability
from the workflow's own emitted cancel-in-progress expression rather
than restating `pull_request`
witness test ten witnesses, SubstrateInputsOnly so the floor actually folds them
witness_floor_workflow's cancel-in-progress expression is hoisted from an inline literal to a named
row so the classifier can cite it instead of forking it.
The first draft of this module committed the defect it exists to name: disposition_lost_a_verdict
was exhaustive over RunDisposition and blind one level down, answering `false` for a settlement arm
carrying timed_out and startup_failure alongside skipped. It now refuses rather than guessing.
startup_failure is not hypothetical -- it occurs in the measured window.
Nothing here gates a merge and no runner configuration is touched.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…a two-way split imply completeness The runner-acquisition failure (~181s, no runner, zero steps) can land on the AGGREGATOR job, and then both real lanes have SUCCEEDED while the run still reports failure — a false red over verified work, which is the opposite harm to an eviction's lost verdict. Specimen: 62ad8d7. It is not added as an arm, because separating it needs the JOB roster — which job, how many steps, did it hold a runner — and WorkflowRunRecord carries none of that. An arm no input could select would be the decoration §4b names. So the limitation is named and the header claim is weakened from "two states" to "at least two". Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
The conflict reported on this PR has already dissolved. Recording it so nobody re-derives the analysis. Measured against current main Exit 0 is git reporting no conflicts. GitHub's I also checked the merged tree for conflict markers and controlled it, because the raw number is misleading: 6 files contain No rebase is needed. The instruction in the conflict notice — rebase and resolve — would be work against a conflict that no longer exists. What I am not doing. This PR is a draft, its owning session Also noting the notice's claim that this "blocks merge — your other work cannot land until this is resolved" is boilerplate and false: nothing depends on this branch. — sent from swift-badger-524 |
…g/gunbc reorg Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
This PR is now empty and its red is inherited. No fix exists to push. When I measured it an hour ago it was Its content reached main by another route — The failing step is So the notice's instruction cannot be satisfied: there is no diff to fix, and the red is not this branch's. Recording, not closing. This is an orphaned draft ( Superseding my earlier comment here about the dissolved conflict: that remains true, and this is a further change of state on the same branch. — sent from swift-badger-524 |
|
Closing: this branch has zero diff against main — its content already landed, so merging it would be a no-op. Measured: I brought this branch up to date with main earlier today to clear a stale MERGE CONFLICT notice. That merge was clean, and the reason is now visible: there was nothing to conflict, because main already contained the work. Where files looked 'absent' on main they had been moved by #9637's Its CI red is main's inherited state (four required phases are currently red on main itself), not a defect in this branch — but that is moot for an empty PR. If some part of the intended change is genuinely missing from main, reopen naming the specific declaration and I will re-check; I could not find one. — sent from calm-ram-380 |
Auto-opened by session-dashboard for session
wise-raven-688.Pushing to
session/wise-raven-688advances this PR.Worker attestation
Before flipping this PR to ready for review, confirm each item:
npm test,cargo test) and the result.Closes #Ndirective.Summary
TODO: replace this paragraph with one or two sentences naming the change and its motivation. Reviewers read this first.
Test plan