Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Phase 8: route deslop findings through review, pass base, keep 1.x be…
…havior

Self-review on #63: carrying every finding without a fix would push deslop 1.x's
low-precision MEDIUM/LOW hits into the review loop as high. Only deslop 2
findings (they carry check) are carried, and they go to the round-1 reviewers to
confirm and grade instead of straight into the fix list. Failed fixes are carried
too, PR-text findings go to the PR description, the base is passed, and an error
result counts as not installed.

Claude-Session: https://claude.ai/code/session_014HwAaKYLFFmSEaWiDe4K3V
  • Loading branch information
avifenesh committed Oct 6, 2026
commit b2cf12a6a6f868aa769d9db9fe73286f4335e483
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
## [Unreleased]

### Changed
- Phase 8 calls `deslop:deslop-agent` with `Mode` and `Scope` only (deslop 2 has no thoroughness levels). Its fixes now match `simple-fixer`'s actions, and its findings without a fix go into the review loop. The fallback without deslop checks for leftover mentions of what the diff removed or renamed and for tests that cannot fail, which is what deslop 2 looks for.
- Phase 8 calls `deslop:deslop-agent` with `Mode`, `Scope` and the run's base, and treats a result with an `error` field as not installed. With deslop 2 installed, its fixes go to `simple-fixer` as they are, and findings without a fix (or whose fix failed) go to the Phase 9 round-1 reviewers to confirm and grade; findings on the PR text go into the PR description. deslop 1.x findings stay in the report as before. The fallback without deslop now checks for leftover mentions of what the diff removed or renamed, missing paths and links, review history in comments and tests that cannot fail.

## [1.3.0] - 2026-10-06

Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ The workflow has 12 phases. Phases 1-6 involve the user; phases 7-12 run autonom

**Review loop** (Phase 9) sizes the review to the change: one reviewer covering correctness, security, performance, and tests by default, up to 4 parallel reviewers (one per concern, optionally a database, API, frontend, or infra specialist) for large or risky diffs. Critical and high findings are fixed; the loop stops when none remain, on a stall, or after 3 rounds.

**Pre-review gates** (Phase 8) run deslop (leftovers of the change: stale mentions, dead references, tests that cannot fail) and test coverage checks in parallel before the review loop starts.
**Pre-review gates** (Phase 8) run deslop (with deslop 2: leftovers of the change such as stale mentions, missing paths and anchors, tests that cannot fail) and test coverage checks in parallel before the review loop starts.

**Stopping point** (Phase 12) follows the policy answer: stop after implementation, open the PR and stop, or hand off to `/ship` to merge and deploy.

Expand Down Expand Up @@ -106,7 +106,7 @@ Phases 8-10 use agents from the [prepare-delivery](https://github.com/agent-sh/p

| Plugin | Used in |
|--------|---------|
| [deslop](https://github.com/agent-sh/deslop) | Phase 8 - leftovers of the change (optional, inline fallback) |
| [deslop](https://github.com/agent-sh/deslop) | Phase 8 - leftovers of the change with deslop 2, AI slop cleanup with 1.x (optional, inline fallback) |
| [prepare-delivery](https://github.com/agent-sh/prepare-delivery) | Phases 8 and 10 - test coverage, delivery validation (optional, falls back to /delivery-approval) |
| [sync-docs](https://github.com/agent-sh/sync-docs) | Phase 11 - documentation sync (optional, inline fallback) |
| [ship](https://github.com/agent-sh/ship) | Phase 12 - PR creation, CI, merge (optional, falls back to opening the PR) |
Expand Down
6 changes: 3 additions & 3 deletions agents/simple-fixer.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,11 @@ Apply each fix in the list exactly as given, then commit. Another agent already
```json
{
"fixes": [
{ "file": "src/api.ts", "line": 42, "action": "remove-line", "reason": "debug log" },
{ "file": "src/utils.ts", "line": 15, "action": "replace", "old": "// TODO: later", "new": "", "reason": "stale TODO" },
{ "file": "src/api.ts", "line": 42, "action": "remove-line", "reason": "review-provenance" },
{ "file": "docs/setup.md", "line": 15, "action": "replace", "old": "scripts/old-install.sh", "new": "scripts/install.sh", "reason": "stale-mention" },
{ "file": "docs/README.md", "line": 10, "action": "insert-after", "new": "text", "reason": "..." }
],
"commitMessage": "fix: clean up AI slop"
"commitMessage": "fix: clean up leftovers (deslop)"
}
```

Expand Down
8 changes: 6 additions & 2 deletions commands/next-task.md
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,11 @@ Spawn `next-task:implementation-agent` with the approved plan and the worktree p

Run these in parallel where the harness allows:

- `deslop:deslop-agent` with `Mode: apply` and `Scope: diff`. It returns JSON between `=== DESLOP_RESULT ===` and `=== END_RESULT ===`. If it lists `fixes`, hand them to `next-task:simple-fixer` with the commit message `fix: clean up leftovers (deslop)`; carry its `findings` that have no fix into the review loop as high findings. Not installed: check that nothing outside the diff still names a file, flag or setting the diff removed or renamed, and that every new test can fail.
- `deslop:deslop-agent` with `Mode: apply`, `Scope: diff` and `Base: origin/<base>`. It returns JSON between `=== DESLOP_RESULT ===` and `=== END_RESULT ===`; a result with an `error` field counts as not installed. Hand its `fixes` to `next-task:simple-fixer` with the commit message `fix: clean up leftovers (deslop)`.

When the findings carry a `check` field (deslop 2), keep the ones that have no fix and the ones whose fix simple-fixer reported `failed`, and give them to the Phase 9 round-1 reviewers as known issues. Findings on `(PR text)` go into the Phase 12 PR description instead. deslop 1.x findings (they carry `certainty`) stay in the report, as before.

Not installed: check that nothing outside the diff still names a file, flag or setting the diff removed or renamed, that paths and links the diff adds exist, that new comments do not record review history, and that every new test can fail. Fix what you find before Phase 9.
- `prepare-delivery:test-coverage-checker` with the `test-gaps` context. Not installed: check that each changed source file has a test that exercises the change.
- The `simplify` skill on the diff. Not available: skip.

Expand All @@ -99,7 +103,7 @@ Review the diff against the base with the Phase 9 repo-intel context. Size the r
- Default: one reviewer covering correctness, security, performance, and tests.
- Large or risky diffs (roughly 500+ changed lines, 15+ files, or high diff-risk or security-sensitive paths): up to 4 parallel reviewers, one per concern, optionally swapping one for a specialist the diff calls for (database, API, frontend, infra).

Use `general-purpose` subagents on a fast tier (sonnet) if `Task` is available, otherwise review inline. Each reviewer returns a JSON array of `{file, line, severity: critical|high|medium|low, description, suggestion}`. Merge duplicates. Fix critical and high findings, and medium ones when the fix is small and clearly right. Commit the fixes, then re-review only what changed.
Give round-1 reviewers the known issues carried from Phase 8: each one is confirmed and graded like any finding (a deslop `high` starts as high, `review` as medium) or dismissed with a reason in the report. Use `general-purpose` subagents on a fast tier (sonnet) if `Task` is available, otherwise review inline. Each reviewer returns a JSON array of `{file, line, severity: critical|high|medium|low, description, suggestion}`. Merge duplicates. Fix critical and high findings, and medium ones when the fix is small and clearly right. Commit the fixes, then re-review only what changed.

Stop when no critical or high findings remain (approved), when the same findings come back twice (stalled), or after 3 rounds. A stalled or capped loop with open critical findings is blocked: report them and ask the user whether to continue, fix manually, or stop. Record `completePhase({ approved, iterations, remaining })`.

Expand Down
Loading