SDD: task reviewer writes its full report to a review file (#1930)#1966
Open
rasibintang wants to merge 1 commit into
Open
SDD: task reviewer writes its full report to a review file (#1930)#1966rasibintang wants to merge 1 commit into
rasibintang wants to merge 1 commit into
Conversation
Apply the implementer report-file contract to the task reviewer: the full report (strengths, passing-check citations, finding detail) goes to task-N-review.md; the final message returns only the two verdicts, any "cannot verify from diff" items, one line per Critical/Important finding, a Minor count, and the file path. Fix dispatches pass the review file path so full detail reaches fix subagents without transiting the controller context. Completes the File Handoffs pattern: the reviewer was the last SDD role whose full output landed in the controller context. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Who is submitting this PR? (required)
claude-fable-5)claude-sonnet-5)What problem are you trying to solve?
Issue #1930: task-reviewer subagents return their entire report as the final message, so every passing check, Strengths section, and fix rationale lands in the controller's context and is re-read on every later turn. The issue reporter's transcript analysis found most of that content is non-actionable at the controller level ("things they checked that were OK").
The skill's own File Handoffs section already names this exact failure mode ("everything a subagent prints back stays resident in your context for the rest of the session") and fixes it for every other role: the implementer writes its full report to
task-N-report.mdand returns under 15 lines; the review package "never enters the controller's context"; fix subagents append to the report file and return a short summary. The task reviewer is the one remaining role whose full output lands in the controller's context —task-reviewer-prompt.mdexplicitly instructs "Your final message is the report itself."Proposed and discussed on the issue: #1930 (comment)
What does this PR change?
Applies the implementer's report-file contract to the task reviewer: the full report (Strengths, passing-check citations, finding detail with fixes) goes to a new⚠️ "cannot verify from diff" items, one line per Critical/Important finding, a Minor count, and the file path.
[REVIEW_FILE](task-N-review.md, following the existing brief/report naming); the final message returns only the two verdicts, anySKILL.mdis updated so fix dispatches pass the review file path, the ledger records Minor counts + review file paths, and the controller is told not to read the review file.Is this change appropriate for the core library?
Yes — it modifies an existing core SDD skill, is harness-agnostic (prompt/markdown only, no scripts or infrastructure), and benefits any project type. No third-party integration.
What alternatives did you consider?
requesting-code-review/code-reviewer.mdand a blanket "orchestrator must not read raw findings" rule. Deferred:code-reviewer.mdis also used standalone, where a human reads the report directly, so it needs a mode split; kept as a follow-up so this PR stays one scoped behavior change.Deliberately preserved constraints:⚠️ items and plan-mandated findings stay in the final message because the controller/human must act on them directly, and the controller can still make the fix-vs-approve decision from the message alone.
Does this PR contain multiple unrelated changes?
No. Two files, one behavior: the reviewer's reporting contract and the controller-side handling of it.
Existing PRs
task-reviewer-prompt.mdthis PR modifies), Store subagent-driven-development artifacts in a per-branch subdirectory #1956 (open — relocates SDD artifact paths; adjacent to thetask-N-review.mdnaming but not conflicting: this PR follows whatever directory convention the brief/report files use). No PR implementing Feat: reduce reviewer subagent verbosity to conserve tokens #1930 found.Environment tested
New harness support (required if this PR adds a new harness)
N/A — no new harness.
Evaluation
Done: N items totallog), an explicitly forbidden feature (options.jsonAPI surface), and an implementer report that falsely claims full compliance — reviewed once with the currentdevprompt (baseline) and once with this PR's prompt, identical inputs otherwise.Rigor
superpowers:writing-skillsandcompleted adversarial pressure testing (paste results below)
rationalizations, "human partner" language) without extensive evals
showing the change is an improvement
Per writing-skills' "Match the Form to the Failure": the baseline failure is wrong-shaped output (report bloat in the final message), not rule-skipping, so the change is a positive contract (what the final message IS, part by part — mirroring the implementer's proven under-15-lines contract) rather than a prohibition list. The eval scenario is adversarial for a reviewer: an implementer report that over-claims ("All requirements implemented... No concerns") while the diff skips a requirement and adds a forbidden feature — the reviewer must contradict the report, not just summarize it. Both new-prompt runs did (results above). The Red Flags table, rationalization tables, and "human partner" language were not touched.
Human review
Refs #1930