Rework the PR-feedback loop's triage: move the decision to the implementer #141
Labels
No labels
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
spec
wayfinder:grilling
wayfinder:map
wayfinder:prototype
wayfinder:research
wayfinder:task
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
amaurycoudr/chess-project#141
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What to build
pnpm agent:feedback <pr>classifies every unresolved review thread and then implements thetodoones. The classification and the deciding are both done by the triage phase, and the quality of that decision-making is the problem.The mechanism is visible in
.sandcastle/feedback-triage-prompt.md, which requires eachexpectedFixto be specific about "which file and location, what to change, and why". Triage therefore pre-decides the edit down to line numbers, and the implement phase becomes a typist with no standing to disagree with a reviewer who was wrong. On PR #118, six of seven threads were "delete this comment"; triage never asked whether the reviewer was right, only how to comply.The likely fix is not a better triage prompt — it is moving the decision: triage classifies and orders, the implementer judges whether the reviewer was right and says so if not. That is the same principle ADR 0010 applies in the other direction, where the runner's implement phase is told to treat review findings as evidence rather than instructions (
.sandcastle/implement-prompt.md).Three decisions this can now inherit rather than re-decide, all landed in
claude/sandcastle-runner-contract:CONTRIBUTING.md's five commandsCODING_STANDARDS.mdlives at the repo root and is the shared review input<review-output>+ Zod), which this loop's<triage-output>predates and could align withAcceptance criteria
feedback.ts's four statuses stay separate from/triage's five canonical roles is settled explicitlyOut of scope
Merging the two vocabularies for their own sake — they were deliberately kept separate because a triage role answers "who should do this issue" and a feedback status answers "what do I do with this reviewer's comment".