Skip to content

feat(intake): let intake apply needs-human on a re-entered issue - #9093

Merged
kyle-sexton merged 2 commits into
mainfrom
feat/intake-needs-human-label
Oct 22, 2026
Merged

kyle-sexton merged 2 commits into
mainfrom
feat/intake-needs-human-label

Conversation

@kyle-sexton

@kyle-sexton kyle-sexton commented Oct 22, 2026 •

Copy link
Copy Markdown
Member

Refs: #8491 (the eval cases in its fourth checkbox are tracked by #9040)

Summary

Owner decision (2026-10-22): let the intake-triage lane apply needs-human as a plain label when an already-triaged issue comes back and still needs a human, so the run's own comment (quoted decision, new questions) is kept instead of the fixed escalation note.

Fix

  • .github/workflows/intake-triage.yml: set allowed-labels to the reusable's defaults plus needs-human. The input replaces the default list, so the defaults are repeated.
  • Re-entry step (d) now tells the run to apply needs-human with needs_human false.
  • Reusable at the pinned v0.60.0 SHA: allowed-labels input at intake-triage.yml:160; needs_human: true escalates at :1496 and the fixed note is set at :1522-1527, while an allowlisted label passes allowed.has(label) at :1501 (admission() only rejects agent-ready and work-class:*). On a non-escalated run the floor label stays unless exactly one priority: label is applied and no status:/area: security label is.

Verification

  • .github/standards/runner-policy/policy.json:232-257: the intake-triage.yml@82ca5ca9 contract lists allowed-labels in allowedInputs and compares names only, not values, so the contract is unaffected.
  • needs-human exists as a label in this repository.
  • No other file in .github/ or scripts/ pins the caller's allowed-labels value.
  • Not run end to end: effect shows on the next re-entered issue.

Related

🤖 Generated with Claude Code

kyle-sexton and others added 2 commits October 22, 2026 11:25
Add allowed-labels to the intake caller: the reusable's defaults plus
needs-human. A re-entered issue that still needs a person now gets the
plain label and keeps the run's own comment (quoted decision, new
questions) instead of the fixed escalation note.

Closes #8491

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@kyle-sexton
kyle-sexton marked this pull request as ready for review October 22, 2026 15:30
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 22, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-22T15:32:09.153286Z 604452e Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@github-actions

Copy link
Copy Markdown
Contributor

claude-security-review reviewed 604452e5aae161885cbb04f41fedb3dc1334d918: 0 finding(s), 0 as inline comments.

No security findings in PR #9093 (head 604452e). The only changed file is .github/workflows/intake-triage.yml, which adds needs-human to the re-entry run's allowed-labels and changes the instruction from setting needs_human to applying the label.

  • needs-human is a restrictive hold. The HOLDS set in label-unblocked.mjs treats it as stopping automation, and check-born-triaged.mjs lists it among role labels. Nothing I found makes it start or widen an action.
  • work-unblock lifts a lone needs-human only when the lanes App's refs-hold marker and a merged Refs PR are present (label-unblocked.mjs:62-66, 731-734). A model-applied label carries no such marker.
  • A prompt injection through issue text could at worst cause needs-human to be applied, which parks the issue for a person.
  • The allowlist adds only that one label to the existing defaults. The issues: write permission and the pinned reusable are unchanged.
  • No trigger, permission or pin change, so GitHub Actions hardening is zizmor's lane.
  • Manifests: none touched, so there are no manifest <field> lines.
  • Instruction-surface lens: the diff narrows a prompt instruction (needs_human true becomes applying the label). By consequence the same hold still applies, so no protection is lost. I did not consult docs/conventions/instruction-exception-register/README.md; this judgment is by consequence only.

Comment thread .github/workflows/intake-triage.yml
@github-actions

Copy link
Copy Markdown
Contributor

claude-review reviewed 604452e5aae161885cbb04f41fedb3dc1334d918: 1 finding(s), 1 as inline comments.

I reported one finding on this PR, a one-file change to .github/workflows/intake-triage.yml.

Finding (inline at .github/workflows/intake-triage.yml:226). The PR says Closes #8491, but #8491 asks for "an eval case for each of these, plus one where the answer settles everything". The PR adds none. I searched plugins/ and .github/ for Decision recorded and found no triage eval case. The existing reenter.test.mjs and write-issue.test.mjs cover the trigger and the comment selection, not the triage run's labels. Nothing would fail if step d regressed to needs_human: true. Either add the eval cases or change the link to Refs: #8491.

Unverified. The sandbox refused my gh api read of the reusable at the pinned v0.60.0 SHA. I could not check these claims, so they are author-claimed and unconfirmed:

  • allowed-labels replaces the defaults rather than adding to them.
  • The repeated default list matches the reusable's.
  • needs_human: true escalates, and the fixed note is set at the cited lines.

If the list is wrong, a missing default label would be rejected on every triage run.

Scope note, not a finding. allowed-labels applies to every triage run, not only re-entry. The prompt limits needs-human to the re-entry section, so I left it unflagged.

Closing issue. I read #8491 from the PR context file. Its other criteria (quote the decision, re-park, keep needs-human) are covered by the instruction text.

@github-actions

Copy link
Copy Markdown
Contributor

PR body contract — issue linkage

This PR body does not yet satisfy the issue-linkage contract:

  • Missing a native closing keyword (Closes/Fixes/Resolves #N). If this PR references an issue it must not close, put "Refs: #N" (or "Relates to: #N") on its own line. If it relates to no GitHub issue at all, state "No linked issue" (or "No related issue:") in the body instead.

Edit the body and this comment updates itself on the next run.

@kyle-sexton
kyle-sexton added this pull request to the merge queue Oct 22, 2026
Merged via the queue into main with commit aa60229 Oct 22, 2026
71 checks passed
@kyle-sexton
kyle-sexton deleted the feat/intake-needs-human-label branch October 22, 2026 15:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant