Repository navigation
Description
Refs: #12792
Problem
pr-verify cannot pass the last PR of an issue whose work is split across several PRs, in either body form.
- With
Closes #N, it judges the whole issue against this diff alone. It does not credit work sibling PRs already merged: "a base-state claim from a chunk delivers nothing" (chore(shared-copies): ship the medium resolver and one rendered-view reference to every view lane #12792's note at 21:54Z). - With
Refs: #Nand a## Remainingsection that says no work remains, it fails because "a refs PR must name the work that remains; this one names none and claims a whole delivery, which should close the issue" (chore(shared-copies): ship the medium resolver and one rendered-view reference to every view lane #12792's note at 22:14Z).
#12667 was delivered by #12917, #12937 and #12792. Its one done-when item holds on #12792's head tree: scripts/sync-shared-copies.sh --check passes over all 643 copies, and lib/view-settings.test.mjs runs every registered carrier copy. Both of #12792's chunks passed on code. The PR still could not pass pr-verify, and its arm gate waits on a pass. It was merged on its green ci-status.
The split happened because the review lanes could not read #12792 whole (ci-workflows#981 later fixed that). Any issue split for review size hits the same wall on its last PR.
Fix
Let a Closes #N judgment credit sibling PRs that already merged with Refs: #N and that the body names: treat the done-when items they delivered as present at the merge base, and judge this diff only for the rest. Alternatively, accept a Refs: body whose Remaining names only the hand-close of the issue.
Verification
Replay #12792 at 20e75cd, with either body, against the fixed verifier: it passes, while a split PR whose siblings did not merge still fails.
Related
- chore(shared-copies): ship the medium resolver and one rendered-view reference to every view lane #12667, feat(lib): sync the view-settings copies into adhd and ai-briefing #12917, feat(lib): sync the view-settings copies into architecture and debugging, and every rendered-view copy #12937, chore(shared-copies): ship the medium resolver and one rendered-view reference to every view lane #12792; ci-workflows#981.
This was generated by AI.
Metadata
Metadata
Assignees
Labels
Type
Fields
Work status
Activity
github-actions commentedon Nov 3, 2026
Proposed work class: work-class: scoped
Basis: automated intake triage; the lanes App applied this class.
Size: Medium
Complexity: Medium
Uncertainty: Known
Flags: none
Blocked by: none
#12965 (comment)
The decision settles the open questions, so nothing more is asked. I read the issue as a defect in pr-verify. The last
Closes #NPR of a split issue should get credit for sibling PRs that merged withRefs: #N.resolve-pr.mjswould verify each sibling and pass it to the verifier as data. ARefs:PR that names no remaining work should still fail. No likely duplicates found in the open issues.Automated triage, applied by the lanes App.
melodic-automation-lanes commentedon Nov 3, 2026
Not admitted to the issue lane yet: no trusted-human acceptance criteria: a listed human must put the confirmed
- [ ]criteria in the body or post them as their own comment, or, on an issue a listed human filed, intake's newest refinement comment must hold them unedited; intake's refinement of this body is due and may supply them.melodic-automation-lanes commentedon Nov 3, 2026
Refinement. A read-only run explored this repository, searched its issues and pull requests, and read the allowed docs to draft what follows. On an issue a listed human filed, it counts as the issue's spec once posted, while unedited; it is still model text, so check it.
Intended outcome: pr-verify credits merged sibling PRs that a Closes PR body names and that carried Refs: #N, treating their delivered done-when items as present at the merge base and judging this diff only for the rest.
Related work
Open questions
RECOMMENDED: Option 1, as intake triage also recommends. It matches the issue's Fix order and its Verification replay, and it keeps the existing rule that a Refs PR must name remaining work. Basis: .base/.github/scripts/pr-verify/prompt.md:73-80
RECOMMENDED: Credit a named PR only if it is merged in this repository and its own body has a Refs: line naming the same issue N. The lookup should happen in resolve-pr.mjs and be passed to the model as data. Never take the claim from PR body prose alone. Basis: .base/.github/scripts/pr-verify/resolve-pr.mjs:600-698
RECOMMENDED: Pass each credited sibling's number and its Refs-body delivered-part text in SPEC_TEXT_FILE as a new field. The prompt then treats those items as present at the base and judges the diff only for the rest. A sibling that is unmerged or unnamed gets no credit, so the diff is judged against the whole issue and fails as it does today. Basis: judgment
RECOMMENDED: Yes, if the gate re-derives spec inputs. The implementer should check that module, because a field the gate cannot reproduce could invalidate a pass. Basis: .base/.github/scripts/pr-verify/resolve-pr.mjs:665-667
Sources read
To answer, post a comment that starts with this line:
Automated refinement by the lanes App. Answer with a comment whose first line is
**Decision recorded.**.kyle-sexton commentedon Nov 3, 2026
Decision recorded. All four refinement questions take their RECOMMENDED answers: option 1, credit merged sibling pull requests for a
Closes #Nbody.Agent choice, not an owner answer.
Written by the Issue Triage session from the issue body and the refinement above. Option 1 over option 2: option 2 still leaves the issue open for a hand close after the last pull request merges, which this repository already has to do by hand today (
done-evidence.mjs:21: aRefs:line closes nothing; #12792's squash body: "#12667 stays open after this merges, until the owner session closes it"); option 1 lets the lastCloses #Npull request close it.Closes #Njudgment credits sibling pull requests that already merged withRefs: #Nand that the body names; their delivered done-when items count as present at the merge base, and this diff is judged only for the rest. The rule that aRefs:pull request must name remaining work stays.Refs:line naming the same issue;resolve-pr.mjsdoes the lookup and passes the result to the model as data, never from body prose alone.plugins/source-control/skills/babysit-prs/scripts/babysit_verify_evidence.pydoes not re-derive the spec text; it checks a pass's recorded closing issues and spec-comment ids against live data, so a credited-siblingclosespass needs no gate change, only a test that proves it.resolve-pr.mjscredits a sibling pull request only when it is merged in this repository, theCloses #Nbody names it, and its own body has aRefs:line naming issue N; a test covers a credited sibling, an unmerged one and one whose body does not name N.Refs: #Npull request still fails when it names no remaining work.20e75cdwith aCloses #12667body naming feat(lib): sync the view-settings copies into adhd and ai-briefing #12917 and feat(lib): sync the view-settings copies into architecture and debugging, and every rendered-view copy #12937 passes against the fixed verifier, and a split pull request whose named siblings did not merge still fails (a test fixture may stand in for the live replay).babysit_verify_evidence.py) accepts a credited-siblingclosespass without code changes, or the gate is changed so it does.github-actions commentedon Nov 3, 2026
github-actions commentedon Nov 3, 2026