Repository navigation
Full-path review (codespy review-path), implementation planner, sparse checkout fix - #60
Merged
Merged
Conversation
- review-path: sparse-clone a repo path, review every file as newly added across all its scopes, deliver the report as a PR/MR opened by codespy (branch codespy/review/<slug>, .codespy/reviews/<slug>.md, report in the description, re-runs update the open PR). Caps review.full_path.max_files / max_bytes fail before any LLM call. Symlinks are never followed. - Fix: remote reviews checked out the whole repo (bare /* sparse pattern). Patterns are now ordered cone-style and applied with read-tree -mu HEAD. - Fail fast when the Deno sandbox is missing instead of reporting an empty APPROVE. - make review-path runs in Docker.
New agent turns review findings into an ordered plan, one RLM run per scope with issues (filesystem/ripgrep/treesitter tools), after the audit and given its verdict. Read-only memory, soft-fail, disabled by default. Rendered as a collapsible section in PR reviews, review-path report PRs/files, stdout, MCP and JSON.
…iew-path PR header
…ontent_filter refusal
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.
What
codespy review-path <repo-url> [--path P] [--ref BRANCH]reviews existing code with no PR. It sparse-clones a path, presents every reviewable file as newly added, identifies all scopes under it, and runs the full pipeline. There is no PR to comment on, so the report is delivered as a new PR/MR opened by codespy:codespy/review/<path-slug>, file.codespy/reviews/<path-slug>.md(full report)--no-open-pris a dry run (stdout only)Cost caps
review.full_path.max_files(300,--max-files) andmax_bytes(2 MB) count files left after all skip rules, and stop the run before any LLM call. Symlinks in the reviewed repo are never followed.make review-path REPO_URL=... [REVIEW_PATH=] [REF=] [MAX_FILES=] [OPEN_PR=false]runs it in Docker.Implementation planner (
review.plan, opt-in)A new agent turns the review's findings into an ordered implementation plan, for both PR reviews and full-path reviews. Disabled by default (
review.plan.enabled,REVIEW_PLAN_ENABLED, Action inputplan-enabled).review.max_concurrent_scopes), with filesystem, ripgrep and tree-sitter tools rooted at the scope to find the call sites and tests a fix touches. Each issue goes to the scope with the longest matching subroot (path-segment aware); issues outside every scope are planned against the repo root.recall_memory, writes no episode.🛠️ Implementation Plansection after the recommendation:review-pathreport PR description: same cap, with a link to the full plan in the report file;implementation_planfield.Fixes that affect every review
/*, which in non-cone mode matches every path, and the list was re-sorted, so!lines landed before/*and had no effect. Patterns are now ordered cone-style (/*,!/*/,/A/,!/A/*/…) and applied withgit read-tree -mu HEAD, which also shrinks old cached clones. New patterns are written beforecheckoutso treeless clones only fetch the new set.PullRequest.urlkeeps its existing values for PR/local reviews (it's the memory topic id); only path mode overrides it.Not included
review_pathtool: not requested; it would skip the report PR and isn't safe under concurrent MCP calls.action.yml) support forreview-path(the planner's Action inputs are included).Testing
tests/test_full_path_review.py(62 tests): real-git sparse checkout (bare/*reproduces the bug; PR mode, path mode, Xcode bundles, narrowing a full clone), URL parsing/rejection, synthetic patches and skip rules, symlinks, caps after skips, scope resolution in path mode, report rendering/truncation, GitHub/GitLab upsert with mocks (create / update open PR / reset stale branch / cleanup only own branch), Deno preflight.tests/test_implementation_plan.py(28 tests): config default and env, issue→scope grouping and path handling, gating (no LLM/MCP call when disabled or no issues), per-scope failure isolation, planner inputs (scope-relative issues, audit verdict) and repo-relative output paths, pipeline soft-fail, rendering (flat/nested, truncation within budget with balanced tags and overflow link), both reporters under the 60,000-char body limit with a huge plan, many issues and memories.test_not_a_signature). Lint and mypy: no new errors beyond thedspy.Signature/Modulesubclass errors every agent has.review-pathand Deno 2.9.5. A live clone ofsrc/codespy/tools/gitof this repo materialised only that path plus ancestor files. A first live run onpeaks-com/monoopened a report PR but found nothing because Deno was missing locally, which led to the preflight fix. A full LLM run that opens a PR has not been verified end-to-end yet, and the planner has not been run against a real model.