Skip to content

Phase 8: hand off to deslop 2 - #63

Merged
avifenesh merged 2 commits into
mainfrom
deslop-v2-handoff
Oct 6, 2026
Merged

avifenesh merged 2 commits into
mainfrom
deslop-v2-handoff

Conversation

@avifenesh

Copy link
Copy Markdown
Contributor

deslop 2 (agent-sh/deslop#85) checks a change for leftovers instead of debug prints and TODOs. Phase 8 follows it:

  • Calls deslop:deslop-agent with Mode and Scope only; deslop 2 has no thoroughness levels (1.x defaults to normal when it is absent, so this also works before the deslop release).
  • deslop 2 returns fixes in simple-fixer's own action format (remove-line, replace with old/new, insert-*). 1.x used a different fixType vocabulary, so the handoff only worked when the fixer guessed.
  • Findings without a mechanical fix used to be dropped; they now go into the review loop as high findings.
  • The fallback without deslop now checks what deslop 2 looks for (leftover mentions of removed or renamed things, tests that cannot fail) instead of debug output and TODOs, which current models rarely leave.

Prompt-only change; no code paths touched.

https://claude.ai/code/session_014HwAaKYLFFmSEaWiDe4K3V

deslop 2 drops thoroughness levels and returns fixes in simple-fixer's action format.
Findings it cannot fix mechanically go into the review loop instead of being dropped.

Claude-Session: https://claude.ai/code/session_014HwAaKYLFFmSEaWiDe4K3V

@revuto-review revuto-review Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is an auto review done by revuto.


Revuto completed the review and found no evidence-backed concerns.

@avifenesh avifenesh left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Self-review (fresh-context subagent)

Checked against deslop#85 (skills/deslop/SKILL.md, agents/deslop-agent.md, detector/ on rewrite/current-model-slop), deslop 1.3.0 on main, agents/simple-fixer.md and Phases 8-9 of commands/next-task.md on this head.

What matches: deslop 2 fixes (file, line, action remove-line / replace with old+new / insert-after / insert-before, reason) is exactly simple-fixer's input. deslop-agent takes Mode and Scope, Scope: diff is valid in both versions, and dropping Thoroughness is safe on 1.x (its skill defaults to normal).

Blocking: finding 1, unless this ships only after deslop 2 and only to users who have it. Findings 2-4 are not blocking on their own, but they decide whether the carry works at all.

  1. commands/next-task.md:91 - with deslop 1.x installed, "findings that have no fix" are every MEDIUM and LOW certainty pattern hit, which 1.x keeps out of fixes on purpose ("MEDIUM and LOW stay in findings for a human"). This PR turns each one into a high finding that Phase 9 must fix before it can approve. deslop#85's own CHANGELOG measures 1.x at 3,367 findings over 39 PRs at 0.5% precision, so a typical run pushes dozens of mostly false findings into the review loop and tells the fixer to act on them. Before this PR they were dropped. 1.3.0 is the released deslop, and users can update next-task without updating deslop. The PR body's "this also works before the deslop release" holds only for the Thoroughness change. Fix: carry findings only when the result has the deslop 2 shape (findings have check, not certainty/pattern), and keep the old behavior (apply fixes, drop findings) otherwise.

  2. commands/next-task.md:91 vs 102-104 - carried findings do not fit how Phase 9 works. The format differs ({file, line, check, message} vs {file, line, severity, description, suggestion}). Phase 9 re-reviews "only what changed", so a carried finding the fix pass skipped is never reported again: the loop counts as approved with it still unfixed and not in remaining. If the orchestrator keeps them open instead, nothing can dismiss a false one, so the loop runs into the stall rule or the 3-round cap. Every other high finding has passed a reviewer's judgment; these skip it, and Phase 9 says fix every high. Suggest: give them to the round-1 reviewer(s) as known issues to confirm and grade in Phase 9's format. Confirmed ones then go through the normal fix and re-review, and dismissed ones go in the report.

  3. commands/next-task.md:91 - "as high" erases deslop 2's own severity levels. The detector marks em-dash, lint, dropped-rule, no-caller, unread-setting, test-swallows-failure and history-based missing-companion as review, not high, but DESLOP_RESULT has no severity field, so all of them gate approval. em-dash is on by default in any repo without .deslop.json, so a house style rule blocks approval in third-party repos. Some findings cannot be fixed by an edit and a commit: file: "(PR text)", line: 0 (scope-claim, em-dash or merge-residue in commit messages, which would need history rewritten) and file-level line: 0 missing-companion. Suggest: ask deslop#85 to keep severity in findings, map high to high and review to medium, and send (PR text) findings to the report or the Phase 12 PR text, not to Phase 9.

  4. commands/next-task.md:91 - failed fixes are lost. simple-fixer marks a fix failed when the line text does not match, and the simplify skill runs in parallel on the same diff and moves lines, so some fixes will fail. Those findings had a fix, so "findings that have no fix" leaves them out and nothing picks them up. Fix: carry findings whose fix is missing or came back failed (match on file, line and check/reason).

  5. commands/next-task.md:91 - the base is not passed. next-task supports --base=BRANCH (line 21), but deslop 2 diff scope defaults to origin's default branch (detector/git.js defaultBase). With any other base, deslop diffs against the wrong merge base, so stale-mention, missing-path and scope-claim fire on commits from other work, and with this PR they become high findings. deslop-agent accepts a base ref. Fix: pass Base: origin/<base>.

  6. commands/next-task.md:91 - a failed scan counts as clean. deslop 2 returns empty arrays plus an error field when the scan fails (detector exit 1). Phase 8 should treat that like "not installed": run the inline check and list it under "Skipped or substituted".

  7. commands/next-task.md:91 - the carry instruction comes after the semicolon in "If it lists fixes, ...". A run with findings and zero fixes can read it as covered by that condition and skip it. Make it a separate sentence.

  8. CHANGELOG.md:6, README.md:64, README.md:109 - these describe deslop 2 ("Its fixes now match simple-fixer's actions", "leftovers of the change: stale mentions, dead references, tests that cannot fail"), but the released deslop is 1.3.0 and #85 is still open. They are only true with deslop 2 installed. Say "with deslop 2", or release after it. "dead references" can also be read as dead code; "missing paths and anchors" is the deslop 2 term.

  9. agents/simple-fixer.md:20-24 - the example still uses deslop 1.x terms ("commitMessage": "fix: clean up AI slop", reasons "debug log" and "stale TODO"). It does not break anything, because Phase 8 passes its own message, but the example teaches the old terms.

  10. commands/next-task.md:91 - the fallback without deslop is narrower than deslop 2's HIGH checks. It leaves out paths and links the diff adds that do not exist, and review history in code comments. It also does not say whether the orchestrator fixes what it finds or carries it into Phase 9.

…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

@revuto-review revuto-review Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is an auto review done by revuto.


Revuto completed the review and found no evidence-backed concerns.

@avifenesh
avifenesh merged commit 6fadc09 into main Oct 6, 2026
6 checks passed
@avifenesh
avifenesh deleted the deslop-v2-handoff branch October 6, 2026 12:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant