Repository navigation
CG-8: the Codegraph reads the effects rows and answers which effects a symbol reaches - #2006
AdaWorldAPI wants to merge 2 commits into
Conversation
…bol reaches (CG-8) The Codegraph did not read <crate>.effects.tsv. effects.rs reads it read-only, keeps spans, and joins it with the call rows: Codegraph::effects_reached lists the effect rows in bodies a symbol is or reaches, graded Own / Confirmed / Possible / Unknown, with every known limit (a crate without an effects file, an incomplete harvest, callees in crates outside the store, a reachable dynamic call, an unplaced effect). A missing effects file gives a partial answer, never an empty clean one. EffectClass groups division, remainder, shift and write. The file's digest and row count identify what was read; the artifact carries no revision (CG-3). Nothing enters the call masks; impact and the ruff_charon format are unchanged. On the foundry_parity_lab store: max_quantities reaches the division at arm_b.rs:245 through cook_ops. 20 tests on real and fixture data; 29 guards disabled by a committed script, each red. Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XAqKMPJjVvasjwqhjJ6c9p
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: true
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. |
…a0562e7-hudvlz-codegraph-effects # Conflicts: # .codegraph/crates.tsv # .codegraph/crates/lance-graph-codegraph.index.md # .codegraph/freshness.tsv
|
CI at head This is not caused by this PR: the same job takes 19.7 to 29.8 minutes on No fix exists on Generated by Claude Code |
Stacked on #2004 (base is its branch). If #2004 merges first, this PR must be retargeted to
mainbefore it merges, or its commit never reachesmain. Linear: EXO-241; ruling D-CODEGRAPH-WAVE0-ACCEPTANCE, priority 2.Write-up with the real output:
.claude/probes/2026-11-11-codegraph-effects/REPORT.md.What this adds
ruff_charon already writes
<crate>.effects.tsv: one row per assert that can panic or write through a dereference, with its span. The Codegraph did not read it.src/effects.rsreads it, read-only:Effects::open,Effects::of(symbol):Witnessed,NoneWitnessed(not a purity verdict) orCrateNotRead.EffectClass::{Division, Remainder, Shift, Write}.Codegraph::effects_reached(symbol, &effects, keep): the effect rows in bodies the symbol is or reaches, gradedOwn/Confirmed/Possible/Unknownfrom the call rows, plus every knownReachLimit.cg_query … effects SYMBOL | --kind EFFECT:KIND | --reach SYMBOL (--kind … | --class LIST).Nothing enters the call masks.
Codegraph::impactand the ruff_charon format are unchanged.Acceptance
foundry_parity_labstore,max_quantitiesreaches the division atarm_b.rs:245throughcook_ops, gradedConfirmed.UNKNOWN (partial)and names each unread crate.file start end.What it shows on real data
method::execute_can_cookreaches no division, althoughcan_cook_guard(method.rs:58) is registered from it through a closure. The call rows have no edge into a closure body; that is CG-1 (EXO-233) and is not fixed or reported as a limit here.coreoralloc, so almost every answer isPARTIAL. Those bodies were not extracted.Tests
tests/effects.rs: 20 tests on real data (tests/data/effects/, 213 effect rows with their call rows) and on therev1fixture.python3 .claude/probes/2026-11-11-codegraph-effects/disable_runs.py: 29 guards patched out one at a time through an asserted anchor. The committed receipt shows 29 red, 0 not red.Not done
impact_report'sScope) do not narrow a reach answer yet.impactper candidate symbol. It is not timed and makes no latency claim.Checks run
In
crates/lance-graph-codegraph:cargo fmt --check,cargo clippy --release --all-targets -- -D warnings,cargo test --release(139 pass)..codegraph/is current.Generated by Claude Code