You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
qa-lead PR advisories are invisible to dev-lead and the approval gate: the persona marker exempts them, so even "Escalate? yes — fix before merge" is never dispositioned #2202
The QA agent's (qa-lead) PR advisory is treated as automation noise. dev-lead never responds to it, and pr-review's comment gate never requires a response, so its findings, including escalations it says must be fixed before merge, have no effect on the PR.
Unlabelled on purpose. Whether a persona advisory should count as a required-to-disposition input is a policy decision. Please rule before dev-lead takes this.
The gate skips it.scripts/lib/maintainer-comment-gate.sh:74: _MAINTAINER_GATE_AGENT_MARKERS includes persona:, so the comment is never counted as needing a response.
The prompt skips it.prompts/dev-lead/fix-reviews.md:161 lists <!-- persona:… --> among "our own" automation comments that are never answered.
No trigger fires.scripts/dev-lead-intent.sh:635-640: the author is a human account, not a TRUSTED_BOTS entry, and the body has no trigger phrase, so the result is no-trigger-or-untrusted and nothing runs.
Escalations go nowhere.prompts/qa-lead/advisory.md:90, 123-134, 164 tell qa-lead to escalate gaps that "need a maintainer's attention before merge" via **Escalate?** yes. Nothing in scripts/ or the workflows reads that line, and the pr-review prompts never mention qa-lead.
No contract requires a response.interaction-contracts/dev-lead.yml lists no obligation to respond to persona output, and qa-lead's contract emits only comment:advisory-response.
The marker is doing two jobs: preventing persona→persona loops (correct) and exempting the advisory from disposition (unintended).
Proposed acceptance criteria (pending the policy ruling)
Split the recursion guard from disposition exemption.persona: stays a recursion guard but is removed from the gate's exempt set, or exempted only when the advisory has no findings, for example Escalate? no and no HIGH/MEDIUM items.
dev-lead treats it as review input. fix-reviews dispositions a qa-lead advisory like any reviewer comment (fixed / invalid with reason / deferred to the tracking issue). Each finding gets an outcome, not just the comment.
Escalation is enforced.Escalate? yes applies the hold label, or pr-review treats it as a blocking finding, until a maintainer or a fixed disposition clears it.
The contract says so.interaction-contracts/dev-lead.yml and qa-lead's contract record the obligation.
Tests. A PR whose only open comment is a qa-lead advisory with Escalate? yes is not approvable; one with Escalate? no and no findings is.
Thanks for the detailed write-up and for tracing the mechanism through the gate, the fix-reviews prompt, and the intent script. Since you've flagged this as a policy decision, one question will help a maintainer rule on it: when a qa-lead advisory has findings (for example Escalate? yes), should it block merge until dispositioned, or should it stay informational and only be surfaced to dev-lead as input?
Activity
don-petry commentedon Oct 10, 2026
Companion issue for solution-architect: #2203. One shared fix for both is preferred.
Generated by Claude Code
github-actions commentedon Oct 10, 2026
Thanks for the detailed write-up and for tracing the mechanism through the gate, the fix-reviews prompt, and the intent script. Since you've flagged this as a policy decision, one question will help a maintainer rule on it: when a qa-lead advisory has findings (for example
Escalate? yes), should it block merge until dispositioned, or should it stay informational and only be surfaced to dev-lead as input?