Skip to content

chore(panel-review): tighten one-comment contract; safety cap 1 -> 7#905

Merged
danielmeppiel merged 1 commit intomainfrom
chore/panel-review-max-7-comments
Apr 24, 2026
Merged

chore(panel-review): tighten one-comment contract; safety cap 1 -> 7#905
danielmeppiel merged 1 commit intomainfrom
chore/panel-review-max-7-comments

Conversation

@danielmeppiel
Copy link
Copy Markdown
Collaborator

@danielmeppiel danielmeppiel commented Apr 24, 2026

Summary

Tighten the panel-review one-comment contract at the prompt layer, and convert the safe-outputs cap from a hard fail-stop into a soft ceiling.

Changes

Prompt (Step 3 — Output contract)

  • Make it explicit that the single allowed comment must be the CEO's final synthesized verdict, not any sub-agent's intermediate output.
  • Instruct the orchestrator to tell each sub-agent persona: "do not post any comment; return your findings to the orchestrator."
  • Keep the "no GitHub API directly — use the output channel" rule.

Bloat removal

  • Drop the workflow-only ASCII rule from the prompt — it's a project source-code rule, doesn't apply to PR-comment prose.
  • Drop meta references to safe-outputs.add-comment internals — the agent doesn't need to know it runs inside gh-aw.

Safe-outputs (frontmatter)

  • safe-outputs.add-comment.max: 17. With the strengthened prompt-level contract above, the cap becomes a fail-soft ceiling: occasional LLM drift no longer aborts the run at the safe-outputs gate and loses the verdict.

Lockfile

  • .github/workflows/pr-review-panel.lock.yml — recompiled via gh aw compile pr-review-panel (0 errors / 0 warnings).

Security surface

Unchanged. Only write surface remains the safe-outputs comment channel; the permission-isolated downstream job remains the sole publisher. No new secrets, actions, or permissions. Trigger gating untouched.

Copilot AI review requested due to automatic review settings April 24, 2026 14:54
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR increases the safe-outputs.add-comment.max limit for the pr-review-panel agentic workflow so the panel can emit multiple PR comments instead of being restricted to a single comment.

Changes:

  • Bumped .github/workflows/pr-review-panel.md safe-outputs.add-comment.max from 1 to 7 and updated related workflow instructions.
  • Recompiled .github/workflows/pr-review-panel.lock.yml to propagate the new safe-outputs configuration.
Show a summary per file
File Description
.github/workflows/pr-review-panel.md Raises the safe-outputs add-comment cap and updates the prompt text about comment emission.
.github/workflows/pr-review-panel.lock.yml Mechanical regen reflecting add_comment.max: 7 in the compiled workflow prompt/config.

Copilot's findings

  • Files reviewed: 2/2 changed files
  • Comments generated: 2

Comment thread .github/workflows/pr-review-panel.md Outdated
Comment on lines +20 to +21
# - the only write surface is safe-outputs.add-comment (max 7,
# one per persona)
Copy link

Copilot AI Apr 24, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The workflow frontmatter description: still says it posts a single synthesized verdict comment, but this workflow is now configured to allow up to 7 comments. Please update the description: (and any other "single comment" wording) to match the new behavior, then recompile the lockfile so the generated header stays consistent.

Copilot uses AI. Check for mistakes.
Comment thread .github/workflows/pr-review-panel.md Outdated
Comment on lines +133 to +145
@@ -139,8 +141,8 @@ owns the review behavior; this step owns only the emission boundary.
## Step 4: Emit the safe output

Post the verdict by writing the comment body to the agent output channel.
The `safe-outputs.add-comment` job (capped at 1) will pick it up and
post it to PR #$PR.
The `safe-outputs.add-comment` job (capped at 7) will pick them up and
post them to PR #$PR.
Copy link

Copilot AI Apr 24, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Step 2 instructs the agent to follow the apm-review-panel skill's output contract exactly, but Step 3/4 now instruct emitting up to 7 safe-outputs.add-comment items. The skill currently specifies "exactly ONE comment" and references safe-outputs.add-comment.max: 1, so these instructions are contradictory and may lead to inconsistent agent behavior. To achieve the PR goal (one comment per persona), update the apm-review-panel skill output contract/verdict template to explicitly support multi-comment emission (or keep single-comment emission here and treat max: 7 only as a safety cap).

Copilot uses AI. Check for mistakes.
@danielmeppiel danielmeppiel force-pushed the chore/panel-review-max-7-comments branch 3 times, most recently from a66f98e to e799f18 Compare April 24, 2026 15:02
@danielmeppiel danielmeppiel changed the title chore(panel-review): raise safe-outputs add-comment cap from 1 to 7 chore(panel-review): tighten one-comment contract; safety cap 1 -> 7 Apr 24, 2026
Two coupled changes to the panel review workflow:

1. Output contract (Step 3): make it explicit that the single allowed
   comment MUST be the CEO's final synthesized verdict, not any
   sub-agent's intermediate output. The orchestrator is now instructed
   to tell each sub-agent: 'do not post any comment; return your
   findings to the orchestrator.'

2. Safe-outputs cap (frontmatter): bump add-comment max from 1 to 7.
   With the prompt-level contract above, the cap is just a fail-soft
   ceiling: when an LLM occasionally drifts and tries to emit an extra
   comment, the run no longer aborts at the safe-outputs gate and lose
   the verdict.

Bloat removal: dropped the workflow-only ASCII rule from the agent
prompt (it's a project source-code rule that doesn't apply to
PR-comment prose) and the meta references to safe-outputs internals
(the agent doesn't need to know it runs in gh-aw).

Recompiled pr-review-panel.lock.yml via 'gh aw compile pr-review-panel'.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@danielmeppiel danielmeppiel force-pushed the chore/panel-review-max-7-comments branch from e799f18 to 570a57f Compare April 24, 2026 15:12
@danielmeppiel danielmeppiel merged commit 1e6a621 into main Apr 24, 2026
7 checks passed
@danielmeppiel danielmeppiel deleted the chore/panel-review-max-7-comments branch April 24, 2026 15:19
danielmeppiel added a commit that referenced this pull request Apr 24, 2026
…ntract

The previous wording in #905 framed the CEO as a separate emitter and
told the orchestrator to instruct each sub-agent 'do not post any
comment'. This produced two regressions:

1. Sub-agents launched via the task tool do not have safe-outputs MCP
   access to begin with -- the no-op instruction added orchestration
   bloat without protecting anything.
2. The 'CEO synthesizes the single verdict' phrasing made the
   orchestrator wait for a CEO sub-agent that was never dispatched.
   Result: agent_output.json={"items":[]} -- zero comments posted.

Fix lives in the skill (the authoritative source), not the workflow:

- SKILL.md execution checklist step 5: orchestrator runs CEO
  arbitration as itself, never delegates to a sub-agent.
- SKILL.md execution checklist step 7: orchestrator writes the
  comment to safe-outputs.add-comment, never calls GitHub API.
- SKILL.md output contract: cap reference updated to fail-soft
  ceiling of 7 (matches workflow frontmatter).

Workflow .md is now a thin shell: gather PR context, then defer to
the skill for routing, dispatch, arbitration, emission. No more
duplicated orchestration logic at the workflow boundary.

Closes #906

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
danielmeppiel added a commit that referenced this pull request Apr 24, 2026
…ntract (#907)

The previous wording in #905 framed the CEO as a separate emitter and
told the orchestrator to instruct each sub-agent 'do not post any
comment'. This produced two regressions:

1. Sub-agents launched via the task tool do not have safe-outputs MCP
   access to begin with -- the no-op instruction added orchestration
   bloat without protecting anything.
2. The 'CEO synthesizes the single verdict' phrasing made the
   orchestrator wait for a CEO sub-agent that was never dispatched.
   Result: agent_output.json={"items":[]} -- zero comments posted.

Fix lives in the skill (the authoritative source), not the workflow:

- SKILL.md execution checklist step 5: orchestrator runs CEO
  arbitration as itself, never delegates to a sub-agent.
- SKILL.md execution checklist step 7: orchestrator writes the
  comment to safe-outputs.add-comment, never calls GitHub API.
- SKILL.md output contract: cap reference updated to fail-soft
  ceiling of 7 (matches workflow frontmatter).

Workflow .md is now a thin shell: gather PR context, then defer to
the skill for routing, dispatch, arbitration, emission. No more
duplicated orchestration logic at the workflow boundary.

Closes #906

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
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.

2 participants