Repository navigation
Pull request review: verdict, breaking changes, line comments, and an optional model reading - #10
harsharajkumar-273 wants to merge 7 commits into
Conversation
The comment now lists callers under the edited symbol that reaches them, riskiest edit first, so a reviewer sees which change matters. Top-level code is labelled as such, the test command is shown once with how many of the project's test files it covers, and a change that touches most of the suite says so. Co-Authored-By: Claude Sonnet 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01ENHRK3kgqcVwqwyjswRViM
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars.
|
CodeGraph: what this change can reachVerdict: 🟡 changes shared code. No argument list changed incompatibly and nothing was removed, but the behaviour of code others call is different. 18 symbols in 14 files you did not edit could be affected by the 14 existing symbols this change edits (🟢 18 proven · 🟡 0 probable · 🔴 0 guessed by name). Which edit reaches whom
Also: edits top-level code in 12 files; adds 88 new symbols. 12 of 14 test files to runThat is most of the suite: this change touches widely used code. npx vitest run packages/analysis/test/analysis.test.ts packages/cli/test/ai.test.ts packages/cli/test/cli.test.ts packages/cli/test/inline.test.ts packages/extractors/test/browser-parity.test.ts packages/extractors/test/collisions.test.ts packages/extractors/test/go.test.ts packages/extractors/test/python.test.ts packages/extractors/test/typescript.test.ts packages/extractors/test/variables.test.ts packages/web/test/model.test.ts packages/web/test/sources.test.tsStatic analysis of calls and imports (TypeScript, JavaScript, Python, Go). 🟡 and 🔴 links are name matches, so check them before relying on them. Dynamic calls are invisible to it. CodeGraph |
The first real run showed '1 symbols in 1 files', '1 of 11 test file', and a list jammed against the code fence. The action's headline pattern now accepts the singular so the fail-above limit still reads it. Co-Authored-By: Claude Sonnet 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01ENHRK3kgqcVwqwyjswRViM
The pull request comment now indexes the base commit too and lists any function that existed before, is gone now, and has a surviving caller that still calls the old name: a rename that missed a caller. A name the caller already called without resolving in the base (an external get) is not reported, which removes the main way this check could cry wolf. On 132 real commits from five repositories it flagged nothing, and on a rename injected into Requests, Hono and Gin it named the real callers. Co-Authored-By: Claude Sonnet 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01ENHRK3kgqcVwqwyjswRViM
Co-Authored-By: Claude Sonnet 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01ENHRK3kgqcVwqwyjswRViM
The comment now opens with whether existing callers can fail: likely breaking, may change public API, changes shared code, or contained or additive. A function whose argument counts changed is checked against how many arguments each call site passes, so the comment names the calls that no longer fit instead of guessing. Argument counts are recorded for TypeScript, JavaScript, Python and Go. Symbols that only moved to another file are no longer reported as removed, symbols that the base commit lacks are new even when git merges them into an edited hunk, and leading-underscore Python names are not public. Co-Authored-By: Claude Sonnet 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01ENHRK3kgqcVwqwyjswRViM
A removed function that is still called is commented on its deleted definition, since the caller that was missed sits in a file the pull request did not touch and GitHub only takes comments on diff lines. A changed signature is commented on the new signature, naming the calls that no longer fit. Public API removed is commented on the deleted lines. Comments are replaced on each push and left alone once someone has replied. The action now analyses the pull request's own commit in a worktree instead of the merge commit, so its line numbers match GitHub's diff. A note on edits to widely used code is opt-in (inline-comments: all): on 118 real commits it would have fired on about one in seven, which is noise, while the default fired on none. Co-Authored-By: Claude Sonnet 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01ENHRK3kgqcVwqwyjswRViM
With an Anthropic API key the comment gains a short reading: what the change does in plain language, whether the diff matches the author's description, and what to check. The deterministic verdict and facts go to the model as ground truth and do not depend on it. Off unless a key is set, and never used for a pull request from a fork. The title, description and diff are written by whoever opens the pull request, so they are quoted as untrusted data the model is told never to obey, closing tags inside them are neutralised, and the answer is stripped of markup, links and mentions before it is shown. A failing call never blocks the comment, and the key is never printed. Co-Authored-By: Claude Sonnet 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01ENHRK3kgqcVwqwyjswRViM
What changes
The pull request comment says whether existing callers can break, shows the evidence, puts findings on the diff, and can optionally add a model's reading of what the change is for.
Facts (deterministic, no model):
New in this push, an optional reading by a model (the reason: the facts describe the graph, they cannot say what a change is for):
anthropic-api-keyset, the comment gains: what the change does in plain language, whether the diff matches the author's description (it will notice a change the description does not mention), and up to three things to check.Evidence
--ai, the comment still posts when the API fails, and the key never appears in output or in the request body; end-to-end tests with real git commits for each verdict and each comment anchor.Not verified
🤖 Generated with Claude Code
https://claude.ai/code/session_01ENHRK3kgqcVwqwyjswRViM