Repository navigation
refusals name the rule, not a guess — every gate refusal carries "Nothing was pushed." whole - #122
Merged
Merged
Conversation
…ists Two refusal wordings in the host executor named what they should not and withheld what they should. The continueFrom refusal (harnessHandlers.ts ~581, after ownedSession returns nothing) guessed expiry or an executor restart; both guesses were wrong in the observed case and the wording sent the diagnosis there. The comment above it is right that the answer must be the one a session that never existed would get — naming the session as another run's confirms it exists. The refusal now states the rule without confirming anything: a kept session is owned by the run that made it, every commission is a new run, so a continueFrom can only name a session this same run made, and a session from any other run is refused as if it did not exist. A session this run made that expired or was lost to a restart is a different refusal. The gate's scanAgain (scanReceipt.ts ~184) and checkAgain (checkReceipt.ts ~181) told the reader to run host.commit.scan or host.commit.check and push with the receipt — operations the publication machinery holds and the Helmsman, the only agent that reads the refusal, is refused promotion of (out_of_scope). The remedy that exists is the publication: it scans and checks what it sends. Both refusals now say to publish the branch again as it stands, the way the other_range refusal in the same file already does, and name neither operation. The structured refusal codes are unchanged. Tests state each property: the continueFrom refusal for a session another run owns states the ownership rule and offers neither expiry nor restart as a guess; no gate refusal names host.commit.scan or host.commit.check.
The continueFrom refusal states the ownership rule — a kept session is owned by the run that made it, every commission is a new run — and the two ways a session this run made stops being held: idle past the hour, or an executor restart. It confirms nothing about the particular ref. The gate's re-scan and re-check refusals name the remedy that exists — publish the branch again as it stands — and the check_failed refusal names commissioning the fix onto the branch and publishing again; none names host.commit.scan or host.commit.check, operations the Helmsman is refused promotion of. The refusal census in pushGateRefusals.test.ts is derived from a Record over the refusal unions so a member left out fails the type-check. Structured refusal codes unchanged.
…whole The check_failed refusal keeps the invariant sentence as its own and says the rest after it: the commit the checks failed on will not start passing — commission the fix onto the branch and publish again, the publication runs the checks on what it sends.
…on ends, drop the check_failed prediction, and assert the whole sentence in the census Fix round 2 on the refusal wordings (PR #122). (a) The continueFrom refusal names the withdrawal of the folder's grant (index.ts ~446/~653, harnessHandlers.ts ~518/~1203) and the failed checkout re-preparation (~681) alongside the idle hour and the restart, and words the list as the ways a kept session ends; the test header says the same. (b) The check_failed refusal drops "That commit will not start passing" — the gate cannot know it; the rule stays: a commit is pushed only once its checks pass on it; commission the fix onto the branch and publish again. (c) The census asserts the whole sentence "Nothing was pushed." for every refusal it reaches, in one place.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fix round on the refusal-wording change (appending to commit f57450a on aflow/refusals-name-the-rule).
The folder's checks failed on the last commit: the rewritten check_failed refusal broke the invariant that every gate refusal carries the exact sentence "Nothing was pushed." as its own sentence (expectRefused in pushCheckReceipt.test.ts ~183, and the new pushGateRefusals census, agree on it).
The check_failed message (checkReceipt.ts ~250) keeps "Nothing was pushed." whole as its own sentence and says the rest after it — the commit the checks failed on will not start passing; commission the fix onto the branch and publish again, the publication runs the checks on what it sends. Every rewritten refusal in scanReceipt.ts and checkReceipt.ts carries the sentence, so the census and expectRefused pass over every member. No test is loosened; nothing else changes.