Repository navigation
feat(pr-pipeline): admit marked decided issues by the admission rules and re-fire stranded ones - #9566
Conversation
… and re-fire stranded ones A listed human adding admission-deferred to an issue with status: ready now has work-unblock's hourly sweep run admit.mjs decide() on the issue's own work-class label and Size, Complexity and Uncertainty fields, and admit it within the room only on an admit verdict (owner decision Q75). The sweep also re-fires an agent-ready issue with no run and no report for 3 hours, once per version of the lane workflow files with the existing re-fire record, then hands it to a person. Admission now refuses an issue with no trusted-human acceptance criteria, the only text pr-verify judges against (owner decision Q9, #8999). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ark-stranded-check
The task-list check read the body plus the lanes App's refinement comments, while the trusted-spec check passed on any listed human's text. An App-drafted task list plus a short owner comment passed both, and pr-verify then never saw the criteria. decide() now reads the task list only from the body and comments a listed human wrote and last edited (resolve-pr.mjs written()), under one refusal. The spec read carries each text's body; refinement comments no longer count for criterion 7. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ark-stranded-check # Conflicts: # .github/scripts/intake-triage/admit.mjs # .github/scripts/intake-triage/admit.test.mjs
…s open-PR check Merges origin/main (c5a82db, #9560). The marked admission path and the deferred sweep both read open pull requests through openPullsFor: one GitHub says closes the issue, or whose body has its Refs line. A pull request that only mentions the issue no longer holds a marked admission; a closing one keeps it waiting and deferred. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- A refusal posts status: needs-decision before it removes status: ready, in the sweep and in intake, so a failed write never leaves an issue the sweep admits. - A field-values or field-setters read of an unexpected shape throws instead of reading every dimension as unset. - Intake refuses an issue with more comments than the 100 pr-verify reads. - A marked issue's status: ready and work-class label count only when a listed human or the lanes App added them. - The stranded no-report and failed-again clocks start when the run ended. - A skip on a marked issue tells the person why with a comment. - admissionFacts drops its unused appId; docs and comments match Q9. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
claude-security-review needs no new review of I found no security issues in this pull request. I read the full diff (10 files) and the PR context, and checked What I checked
manifest: not applicable. The diff changes no Trust-gate paths ( critical-findings: 0 |
|
claude-review needs no new review of Code review: PR #9566 (head dde7e3e)No findings. I read the full 1650-line diff and the PR context. I also read the surrounding code in What I checked, and found sound
Manifests: no Closing issue: the PR states no related issue (owner decision Q75). Hold (cost): this PR does not add a model call directly, but it adds two automatic paths in the hourly
Both are bounded by the admission room and |
comment-hygiene read "issue 25" in a label-unblocked test comment as a tracker reference and failed lint-repo. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ark-stranded-check
Admission criterion 7 reads the task list only from a listed human's text (owner decision Q9), so re-triaging an exact refinement whose only task list is the lanes App's comment always refused again and re-added status: needs-decision. refine.mjs now asks for the re-triage, on both the App-needs-decision and the status: ready branches, only when admit.mjs hasTrustedCriteria (the test decide() uses) finds one in the spec specOf reads; otherwise the labels stay and the comment asks a listed human to post the criteria as their own decision comment. A malformed spec read throws before any label write. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ark-stranded-check
|
claude-review holds this pull request for a person (cost) at
claude-lane: claude-review |
…k change pr-verify fails any change to the resolve-config action, which is in its takeover set, whatever the spec says. Restore resolve-config.mjs and models.test.mjs to main; the fieldSetters fail-closed tightening moves to its own issue. The label-unblocked field-values check stays. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Cost hold lifted (Issue Triage session). Basis: the owner's Q75 flow design (2026-10-24), recorded by the GitHub Support hub. The owner's mark ( The two triggers claude-review named are that design. They admit within the existing WIP 12 / held 10 caps and replace the manual admissions |
No related issue: owner decision Q75 (2026-10-24)
Summary
The mark: add the
admission-deferredlabel to a decided issue that hasstatus: ready; the hourly work-unblock sweep checks it against the admission rules and admits it when there is room.admission-deferredadd is by a listed human and the issue hasstatus: ready, work-unblock's deferred pass reads the issue's ownwork-class:label and its Size, Complexity and Uncertainty fields. It runs admit.mjsdecide()on them and admits within the room only on an admit verdict. Intake's own deferrals (added by the lanes App) keep the room-only path.resolve-pr.mjswritten()).decide()'s task-list check (criterion 7) now reads only those texts.- [ ]criteria in the body or post them as their own comment (owner Q9, feat(source-control): adopt idle owner pull requests in the pr-merge lane #8999)". The issue moves tostatus: needs-decision.needs-human.Fix
admit.mjs:admissionFacts()(the fact readsadmit()did inline, now shared),sayWhy,READYandNEEDS_DECISION.decide(), so nothing is written.trustedSpecTexts()keeps onlywritten()texts, and the task-list and unrunnable-item checks read those.refinementsOfis removed. The refusal comment reuses main'srefusalText(feat(pr-pipeline): file the split for a lane-unrunnable done-when at refine #9439).openPullsNamingandopenPullsForare unchanged.label-unblocked.mjs:admitMarked,issueVerdict) reads fields the way the lanes do (RESTissue-field-valuesplus resolve-configfieldSetters), counting only values a listed human or the App set. An unset field readsunset, never the lanes' default.status: readyforstatus: needs-decision, then removesadmission-deferred. A wait on an open PR stays deferred; a wait on a blocker drops the deferral..base), so the sweep needs no workflow change: the job's resolve-config step already installs its packages.<!-- work-unblock refired <key> -->, and its once-per-key counter, so no issue is re-fired by two rules. The hand-off has its own<!-- work-unblock stranded <key> -->marker, posted once per label add. Both sharelimits.restarts-per-run.refine.mjs: the header comment now says its task list counts only once a listed human posts it..github/workflows/is not touched.Verification
node --testin.github/scripts/work-unblock: 143 pass, 0 fail.status: ready, and the next sweep admits nothing.fieldSetterswas taken out because resolve-config is in pr-verify's takeover set; it moves to fix(pr-pipeline): apply-verdict readFields reads a malformed field-values answer as no fields set #9598.)status: readyand of the work-class label.admission-deferredwith the admission comment.admission-deferredwith a comment saying why.node --testin.github/scripts/intake-triage: 233 pass, 0 fail.admit()refuses to needs-decision, and writes nothing on a bad-shape text read.admit()refusal whose needs-decision write fails removes no label.decide()and inadmit().scripts/check-affected.sh --tests: 10 passed, 4 skipped.Left out: no live sweep run against GitHub; the admission and stranded paths are covered by the fake-API tests only.
Related
openPullsFor); merged in at 622f175; the marked path and the deferred pass both use its closing/Refs-only check🤖 Generated with Claude Code