feat(resolve)!: split validation from fixing — Triager + Coder-as-fixer, blast-radius dispositions, verification gate#253
Open
dean0x wants to merge 8 commits into
Open
feat(resolve)!: split validation from fixing — Triager + Coder-as-fixer, blast-radius dispositions, verification gate#253dean0x wants to merge 8 commits into
dean0x wants to merge 8 commits into
Conversation
…er, blast-radius dispositions, verification gate - Add shared/agents/triager.md (opus): validates all issues via blast-radius disposition matrix (SECURITY GATE → FALSE_POSITIVE → BY_DESIGN → FIX_NOW → FIX_SEPARATE → TECH_DEBT) with cited evidence, risk tiers (Standard/Careful), ADR/PF citations; never edits code - Delete shared/agents/resolver.md (applies ADR-003: clean end-state, no tombstones) - Add OPERATION/ISSUES/SCOPE/PUSH inputs + issue-fix mode to shared/agents/coder.md; PUSH:false enables parallel commits without push; regression-test rule enforced - Restructure commands/resolve.mds: 10-phase pipeline — global Triager (Phase 2) → FIX_NOW batching (Phase 3) → Coder fixes (Phase 4) → early summary write (Phase 5) → Simplify (Phase 6) → Verification Gate with Validator haiku + 2-retry loop (Phase 7) → CI gate (Phase 8) → manage-debt (Phase 9) → display (Phase 10) - resolution-summary.md gains ## Verification, ## By Design, ## Fix Separately, ## Escalations sections; By Design/Escalated excluded from fp_ratio denominator - Update shared/agents/git.md: validate-branch adds ### Diff Scope output (DIFF_FILES); manage-debt now ingests ## Fix Separately + ## Deferred to Tech Debt from resolution-summary.md - Update shared/agents/reviewer.md: Cross-Cycle Awareness also parses ## By Design - Update commands/code-review.mds: clarifying note that By Design excluded from fp_ratio - Update registry: devflow-resolve → [triager, coder, simplifier, validator] + apply-decisions skill; devflow-ambient: resolver → triager (avoids PF-002 in triager.md frontmatter: no Skill-tool re-entrancy) - Update docs: CLAUDE.md roster/model-strategy/resolve description, README.md, docs/commands.md, docs/reference/skills-architecture.md, docs/reference/file-organization.md, orchestrator-charter.md - Update tests: plugins.test.ts (resolver→triager; new devflow-resolve assertions), resolve/decisions-citation.test.ts (resolver.md→triager.md; new template heading assertions), decisions/command-adoption.test.ts (resolver.md→triager.md in consumer-agents arrays)
…er boundary Retired resolver agent was missing from LEGACY_AGENT_NAMES, so devflow init would leave stale ~/.claude/agents/devflow/resolver.md on existing installs. Added cleanup entry and a test assertion to enforce it for future retirements. Tightened ambiguous triager.md Boundaries bullet: "that is the Coder's job boundary" → "dispositions are final once assigned" (no rule change, clearer intent).
Complete the Resolver-agent retirement end-state (ADR-003): strip stale references to the removed Resolver agent from shared skills/agents that the branch missed: - git skill: 'Used by Coder and Git agents' (Triager does no git work) - docs-framework: resolution-summary.md now written by /resolve orchestrator - test-driven-development: RESOLVE TDD enforced via Coder (issue-fix mode) - bug-analyzer: 'the resolve pipeline' instead of 'Resolvers' Harden the /code-review convergence parser contract in resolve.mds: document that the Deferred statistic = FIX_SEPARATE + TECH_DEBT and that the parser- coupled row labels/headings must stay byte-stable.
…tials Resolver is retired; Coder is the sole fix-writer. Two prose lines in _roster.mds and _engine.mds still named the removed agent. Rewrite to the end-state doctrine per ADR-003 (leave the end-state, strip residue). Co-Authored-By: Claude <noreply@anthropic.com>
Scrutinizer is listed in Gate 1 as a code-touching agent (line 12). Adding it to the "no other agent writes code" exclusion list in invariant 1 was a contradiction. Drop it — the invariant now correctly reads: "not Reviewer, not Evaluator." Co-Authored-By: Claude <noreply@anthropic.com>
Move the git push in Phase 7 from the top (before Validator runs) to after the gate concludes. The single push now covers both outcomes: - PASS: branch pushed, Phase 8 CI gate proceeds - FAILED after 2 attempts: branch pushed so the failure is visible in the PR before debt management runs Remove the per-retry push that was triggering redundant CI runs on every validation-fix attempt.
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.
Summary
/resolve.Changes
New agent —
shared/agents/triager.md(opus, validation-only):devflow:apply-decisions(frontmatter-preloaded, avoids PF-002 re-entrancy)Retired —
shared/agents/resolver.md(applies ADR-003: clean end-state, no tombstones)Updated —
shared/agents/coder.md:implement|issue-fix|validation-fix|ci-fix), ISSUES, SCOPE, PUSH (default true)Restructured —
commands/resolve.mds(10-phase pipeline):## Verification,## By Design,## Fix Separately,## Escalations;Deferred= FIX_SEPARATE + TECH_DEBT (fp_ratio formula unchanged, byte-for-byte)Updated —
shared/agents/git.md: validate-branch adds### Diff Scopeoutput block; manage-debt ingests## Fix Separately+## Deferred to Tech DebtUpdated —
shared/agents/reviewer.md: Cross-Cycle Awareness also parses## By Designto avoid re-raising intentional codeUpdated — registry:
src/cli/plugins.ts,plugins/devflow-{resolve,ambient}/.claude-plugin/plugin.json,.gitignoreUpdated — docs: CLAUDE.md, README.md, docs/commands.md, docs/reference/*, orchestrator-charter.md
Updated — tests: plugins.test.ts, resolve/decisions-citation.test.ts, decisions/command-adoption.test.ts
Breaking Changes
shared/agents/resolver.mdis deleted. Any plugin that declaredresolverin its agents array must switch totriager(+coderfor fix operations). The devflow-resolve and devflow-ambient plugins have been updated.The resolution-summary.md schema gains new sections (
## By Design,## Fix Separately,## Escalations,## Verification). The## Statisticstable gainsBy DesignandEscalatedrows. Parser-coupled literals (Fixed,False Positive,Deferred,## Fixed Issues,## False Positivescolumns) are preserved verbatim for fp_ratio back-compat.Reviewer Focus Areas
fp/(fp+fixed+deferred)— By Design and Escalated excluded from denominator; confirmdeferred_countstill maps correctly to theDeferredstatistics row