fix(dispatcher): recover durable pushed heads - #2342
Merged
Merged
Conversation
Co-Authored-By: coreplane-switchboard[bot] <318072483+coreplane-switchboard[bot]@users.noreply.github.com>
coreplane-switchboard
Bot
requested a review
from justinhelmer
as a code owner
September 24, 2026 14:56
Contributor
Author
There was a problem hiding this comment.
LGTM: The pushed-head recovery remains fail-closed and the expanded tests cover the required whole-path authorization and ownership behavior.
Note
Approved · head ae8c6fb · no findings
Full review
No findings. The recovery remains fail-closed while supporting the durable branch-specific pushed[] evidence shape.
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.
Legacy merge-ready continuations can now recognize the durable branch push that a completed unit actually recorded, even when its synthesized final-head field is absent. The existing exact-unit, reviewed-head, live-head, budget, CAS, and ownership fences remain unchanged.
Why: Merged PR #2336 could not recover the production record shape behind #2265: findings children retained the published SHA in
pushed[], notheadSha. This closes only that residual and does not retry or unblock nominal#3589.Where to look
pushed[]without synthesizingheadSha, matching the retained U1 evidence shape.Feedback wanted: Check that
pushed[]is admitted only as exact unit-branch evidence and that the expanded whole-path matrix leaves no route for moved or foreign heads.Risk: Incorrect filtering could attach an unrelated SHA to a legacy unit and grant publication authority. Roll back this commit to restore the stricter
headSha-only refusal; no migration, state injection, or production mutation is included.Verified: 563 dispatcher tests and scoped format, type, hygiene, and spec checks passed; all 30 current-head CI checks passed. Merge, release, deployment, and live validation are human-gated.
Decisions (3)
pushed[]as publication evidence, not thread context. It is the durable projection of a proven push; the entry must name the exact unit branch and still pass every parent, idempotency, requester, repository, and PR check.Validation (6 criteria)
pushed[]evidence recovers its posted approved headdispatcher.test.ts::a legacy merge-ready row recovers one exact approved child head…; red-first and final-pass receipt in coding runheadShaevidence remains compatibledispatcher.test.ts::legacy merge-ready recovery retains a coding record's exact final-head evidencedispatcher.test.ts::a real reissue transfers…For agents
The triggering production-shaped evidence is recorded in
/Users/justin/worklog/resume/3589-post2336-refusal.md, outside the repository. The implementation deliberately does not add review-only current-head recovery, loosen parent binding, inject state, grant new authority, or claim nominal#3589 readiness. A body-only follow-up failed to update GitHub metadata and changed no code or head; this description was applied afterward through the shepherd's GitHub-bookkeeping path.