feat: review findings, dismiss, undismiss and feedback commands - #74
Merged
Merged
Conversation
heyditto review findings <pr> lists a pull request's newest Ditto Review run; review dismiss|undismiss|feedback act on a finding named by its GitHub review-comment URL, <run-id>:<finding-id>, or a finding id with --pr, through the same routes the console uses, so the action is recorded as learning data and the dismissal replies on and resolves the GitHub thread. DITTO-178. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Peyton-Spencer
force-pushed
the
task/ditto-178-review-cli
branch
from
October 3, 2026 15:07
21b8793 to
8a6f2ba
Compare
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.
Stacked on #72 (
codex/review-cli); needs ditto-assistant/backend#3196 (on top of backend#3186) deployed first. DITTO-178, child of the DITTO-177 epic.Ditto Review already records console feedback and dismissals as learning data, and a console dismissal replies on the GitHub thread and resolves it. None of that was reachable from a terminal, so agents and people triaging findings fell back to plain GitHub replies, which record nothing. These commands go through the same routes the console uses.
Commands
A finding is named the way a person meets it: the GitHub review comment's URL (
…/pull/12#discussion_r<id>),<run-id>:<finding-id>, or a bare finding id with--pr.findingsreads the PR's newest run through the newGET /api/v5/review/runs/latest?repository=&pr=; a comment URL is matched against each finding'scommentUrl. Without--org(and no stored default) the PR's repository is looked up in the personal workspace and then each organization the key can see, because a GitHub URL already names the repository.Output states what happened on GitHub (replied and resolved, nothing to update, pending, marker conflict, or failed with the server's reason and a retry hint) and prints the undo command. Validation (missing reason, PR URL instead of a comment URL, bare id without
--pr, unknown verdict) happens before any request.Validation
npm run check,npm run buildandnode --test test/review-commands.test.mjspass on debby (Node 20) at21b8793: 20/20, the 13 lifecycle tests from feat: add ditto review run lifecycle commands #72 plus 7 new ones (workspace fallback order,--all --output json, dismiss by comment URL with the posted body, pre-request refusals, a comment missing from the newest run, feedback by bare id +--pr, undismiss byrun:finding).npm teston debby shows the same 8 pre-existing fixture failures feat: add ditto review run lifecycle commands #72's description reports (installed harness binaries, default git branch); they are unrelated to this change and pass on the Node 24 CI runner.Merge order
backend#3186 → backend#3196 → #72 → this PR (squash; the title is the release commit).
🤖 Generated with Claude Code