Skip to content

feat(implementation): dispatch phase Review: tags to /review:quality-gate at phase boundaries #8331

Description

@kyle-sexton

Parent

Refs #8326 · Source: PLAN Phase 6, topic malleable-design-defaults

Depends on

Outcome

A plan phase tagged Review: <concern> now gets that review. At the phase boundary, /implementation:implement and /implementation:implement-dispatch invoke /review:quality-gate <mode> in fresh context for each tag. They pass the phase diff, the tag, the Quality bar: line, the worktree path, the base SHA and the report-only flag, and withhold the rationale. The sequence is: review, fix inside the phase fence, one re-review scoped to the fixed hunks, then the phase-verifier last. If the same finding comes back CRITICAL a second time, it is written to DEVIATIONS.md as a blocker and escalated once; it never loops.

Key interfaces

From the plan's ## Design:

implementation skills/implement, implement-dispatch | phase-boundary dispatch of architecture, security, code-design tags to /review:quality-gate <mode> | reactive trigger

Phase-boundary dispatch: architecture → /review:quality-gate architecture; security → /review:quality-gate security; code-design → /review:quality-gate code-design; concurrency → /review:quality-gate slice concurrency (existing mode; reports nothing when the consumer has no concurrency criteria file). The review receives the phase diff, the tag and the Quality bar: line, with rationale withheld.

Dependency direction: planning cites review and implementation by /plugin:skill only; review never cites planning files; implementation reads the plan's Review: tags and invokes review. No cycle.

Lands before the principle reference so this effort's own tagged phases get reviewed.

Done when

  • grep -c "quality-gate code-design" on the implement SKILL.md returns ≥ 1, and implement-dispatch's phase-boundary section covers the same tags.
  • Eval cases (case.yaml dirs under the implementation plugin's evals/): a tagged phase dispatches its review before the commit; an untagged phase does not; a repeated CRITICAL escalates once (unattended). /evals:plugin-eval with and without; difference in the PR body.
  • After the commit, bash scripts/check-changed-skills.sh origin/main exits 0.
  • A changelog fragment for the implementation plugin.

Out of scope

  • When /planning:plan writes a Review: tag (plan-time checks item).
  • New quality-gate modes.

Activity

  1. added
    agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.
    on Oct 19, 2026
  2. kyle-sexton commented on Oct 19, 2026

    @kyle-sexton
    MemberAuthor

    Decision carried from #8327 (user, 2026-10-18): /review:quality-gate adds no git -C * allow rules, because a wildcard before the subcommand also auto-approves -c core.fsmonitor=<cmd>. Unattended phase-boundary dispatch therefore cannot rely on pre-approved git -C <worktree> commands. This item decides how the dispatcher supplies the change set under unattended permission modes (for example, the orchestrator computes the diff itself and passes it in the brief).

  3. self-assigned this
    on Oct 19, 2026
  4. kyle-sexton commented on Oct 19, 2026

    @kyle-sexton
    MemberAuthor
    No description provided.
  5. kyle-sexton commented on Oct 19, 2026

    @kyle-sexton
    MemberAuthor

    Decision: skip and log a phase-boundary review the permission mode denies.

    When an unattended run's permission mode denies the review gate's git -C <worktree> reads:

    • No allow rule is added for them (the no-git -C *-grant decision above stands).
    • The skipped review is appended to DEVIATIONS.md as a discovery entry marked unverified, naming the phase and tag.
    • The phase-verifier still runs.
    • Step 5's final report lists that phase and tag as not reviewed.
    • The review is never retried in another shape.

    This choice was made in this autonomous run after the user deferred it. It is implemented in #8394, commit aa2efeea.

    The same commit also changes the re-review rules in this issue's Outcome, on purpose:

    • The re-review runs once with the same --base as the first call, so the whole phase diff stays in scope (replacing "one re-review scoped to the fixed hunks"). A fix that missed its finding still rates it, and a defect the fix added rates too.
    • Any CRITICAL on the re-review stops the loop and is escalated once as a blocking human-decision (replacing "if the same finding comes back CRITICAL a second time"): the original finding, a regression the fix introduced, or a defect the first call missed.
    • The first phase of a fresh worker branch takes as --base the commit the branch was created from.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.

Fields

No fields configured for Feature.

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions