Feat/symbol graph - #25
Conversation
Tier-1 detectors get base 5; heuristic detectors base 3; LLM-authored findings default to 4. Optional BYOK LLM judge re-scores findings with a rationale; drop_ungrounded filters confidence <= 1. v18 migration adds confidence + judge_rationale to findings. New [confidence] config. Signed-off-by: Lohit Kolluri <lohitkolluri@gmail.com>
…ooltip Signed-off-by: Lohit Kolluri <lohitkolluri@gmail.com>
Add a whole-repo symbol graph (repo_symbols, repo_edges, index_status via v19 migration) with per-language tree-sitter extraction for Rust, Go, Python, JS/TS. IndexConfig gates languages and file caps under [index]. Symbols and CALLS/IMPORTS/EXTENDS/DEFINES edges feed review-time blast-radius retrieval (impact command and review walkthrough). Signed-off-by: Lohit Kolluri <lohitkolluri@gmail.com>
- replace_file_index now deletes DEFINES/IMPORTS edges (from_symbol is the file path, not a symbol name) so incremental rebuilds leave no stale rows - Rust impl_item and Python class methods qualify as Type::method; scope stack carries qualified names so CALLS edges inside methods point at the method, not a bare name - JS member_expression calls resolve to the property name, not the full member text - list_repo_files filters to indexed languages before truncating max_files so the cap is not spent on non-code blobs Signed-off-by: Lohit Kolluri <lohitkolluri@gmail.com>
Re-parse added/modified source files after each push, reusing the index store. Skips deleted branches (all-zero head SHA) and non-indexed extensions. Best-effort: token or fetch failures log and skip. Signed-off-by: Lohit Kolluri <lohitkolluri@gmail.com>
@impact and the review blast-radius section now append indexed callers of symbols defined in changed files (CALLS/EXTENDS edges from the symbol graph), showing callers across the whole repo instead of just the diff. Empty index falls back to the existing diff-only report. Signed-off-by: Lohit Kolluri <lohitkolluri@gmail.com>
CodasaurusThis PR updates 39 files across Findings
Copy this into your AI coding agentPaste this prompt into Cursor, Copilot, or another coding agent: Changes
All files (39)
|
ContextBlast radiusSensitive path: Blast detailsHigh-sensitivity paths:
Top imports in this PR:
Bounded estimate from PR imports only. DependenciesDependency delta
From manifest diffs only. Related pull requests
|
ChecksBefore merge
Reviewer time ~50 min (5/5 · Critical · 39 files) CommandsType as plain text (GitHub Apps are not @-mentionable):
Full list: |
| //! CALLS / IMPORTS / EXTENDS / DEFINES edges. Unresolvable names are kept as | ||
| //! plain text — the graph is best-effort and query time does the matching. | ||
|
|
||
| use tree_sitter::{Language, Node, Parser}; |
There was a problem hiding this comment.
Needs fix · Import not listed in the project (tree_sitter)
Do this: Add tree_sitter to your package manager's dependency file.
Why it matters
tree_sitter is imported but missing from the project manifest. Fresh installs and CI will break.
detector: phantom-deps
source: tier1
evidence: https://crates.io/search?q=tree_sitter
snippet: tree_sitter::
| use tree_sitter::{Language, Node, Parser}; | |
| cargo add tree_sitter |
Dismiss / fix commands
fingerprint: 01baf6b990e3
@codasaurus ignore 01baf6b990e3 · 👎 to dismiss · @codasaurus fix 01baf6b990e3 (needs Contents Write + allow_auto_fix)
| pub mod store; | ||
|
|
||
| use crate::config::IndexConfig; | ||
| use extract::FileIndex; |
There was a problem hiding this comment.
Needs fix · Import not listed in the project (extract)
Do this: Add extract to your package manager's dependency file.
Why it matters
extract is imported but missing from the project manifest. Fresh installs and CI will break.
detector: phantom-deps
source: tier1
evidence: https://crates.io/search?q=extract
snippet: extract::FileIndex
| use extract::FileIndex; | |
| cargo add extract |
Dismiss / fix commands
fingerprint: b690af097e0c
@codasaurus ignore b690af097e0c · 👎 to dismiss · @codasaurus fix b690af097e0c (needs Contents Write + allow_auto_fix)
|
|
||
| use crate::db::DbPool; | ||
| use crate::index::extract::FileIndex; | ||
| use sqlx::Row; |
There was a problem hiding this comment.
Needs fix · Import not listed in the project (sqlx)
Do this: Add sqlx to your package manager's dependency file.
Why it matters
sqlx is imported but missing from the project manifest. Fresh installs and CI will break.
detector: phantom-deps
source: tier1
evidence: https://crates.io/search?q=sqlx
snippet: sqlx::Row
| use sqlx::Row; | |
| cargo add sqlx |
Dismiss / fix commands
fingerprint: 294050218c7d
@codasaurus ignore 294050218c7d · 👎 to dismiss · @codasaurus fix 294050218c7d (needs Contents Write + allow_auto_fix)
| | "risky-patterns" => 5, | ||
| "vulnerabilities" => 3, | ||
| "boilerplate" | "over-engineering" | "slop-detection" | "stale-api" | "graph" | ||
| | "guidelines" | "todo-leaks" | "policy" => 3, |
There was a problem hiding this comment.
Note · Unfinished TODO left in
Do this: Complete the implementation or remove the placeholder.
Why it matters
A TODO / FIXME marker was committed. Finish the work or remove the marker before merge.
detector: todo-leaks
source: tier1
snippet: | "guidelines" | "todo-leaks" | "policy" => 3,
Dismiss / fix commands
fingerprint: a44b36868e15
@codasaurus ignore a44b36868e15 · 👎 to dismiss
No description provided.