You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
Added
Java + C# on the deterministic fast path (extractor v8): class/interface/enum/
record/struct discovery with visibility-as-export, owner-qualified method ids
(constructors included), Allman-brace + expression-bodied members (C#), extends /
base-list inheritance edges, control-flow phantom guards, Maven/Gradle test-layout
and *Test.java / *Tests.cs role detection, and pom.xml / build.gradle / .csproj
package boundaries. Verified on square/javapoet (497 symbols, 0 phantoms, 0.7s) and
restsharp/RestSharp (1,542 symbols, Allman style, 0.9s). Method-dispatch recall
(obj.Method()) stays precision-gated as in the JS regex tier — a tree-sitter tier
for Java/C# is the next increment.
Added (recall ceiling + ambient loop)
Tree-sitter tier default-on when web-tree-sitter is installed (--engine regex
opts out; absent dependency degrades to regex byte-identically). Class-field arrow
methods survive the AST handoff.
Barrels are dependents (the measured recall gap): export { X } from edges the
barrel's <module> to the resolved symbol; export * from chains resolve
transitively AND edge the barrel to the target module. Oracle A/B moved from
recall 0.94 to 1.00 (precision 0.94 vs grep 0.87) on both the fixed and a
fresh-seeded 30-task sample.
Ambient loop: the pre-edit hook now injects the ~1KB explain card (identity, top
callers, tests) instead of a pointer — blast radius arrives with zero agent
discipline; the MCP server auto-refreshes a stale graph inline (~1s incremental,
throttled, CODEWEB_NO_AUTOREFRESH=1 opts out) before structural queries, and
per-DIRECTORY mtime stamps make brand-new files trip the staleness check (per-file
stamps cannot see a file that didn't exist).
Added (the proof, the surfaces, the last query family)
codeweb bench (scripts/bench.mjs, npm run bench): the oracle A/B packaged as a
one-command benchmark on YOUR repo — context cost per dependents task + blast-radius cost
always; recall/precision graded by the TypeScript LanguageService when typescript is
resolvable; ripgrep optional. The engine moved verbatim into scripts/lib/bench-core.mjs
(the paper experiment is now a thin wrapper over it — reproduction against the committed
canonical run is byte-identical), so published numbers and user-generated numbers can
never measure different things.
The gate now posts its review: ci-gate --md renders the structural delta (blocking
regressions, new cycles/duplications, symbols that lost all callers, renames-not-churn)
as a budgeted digest and the codeweb gate workflow posts/updates it as a sticky PR
comment on pass AND fail — visible where reviewers already look, verdict unchanged.
Editor CodeLens (editor/vscode-codeweb): zero-dependency VS Code extension showing N callers · blast M above every mapped symbol from the nearest .codeweb/graph.json
(identical semantics to codeweb_callers/codeweb_impact), click-through to report.html#s=<id>.
codeweb_find — concept search (23rd MCP tool + scripts/find.mjs): free text
("where is retry handled?") → ranked symbols, deterministically — camelCase/snake_case
token match with light stemming over identifiers/files/domains, weighted by exports,
role (tests only when asked for), and fan-in. Served in-process from the cached graph,
budgeted, staleness-annotated. Closes the last gap: every other query tool needs a name;
this one turns an idea into the right starting symbol.
Research
Oracle A/B (paper/experiments/oracle-ab.mjs, results in paper/results/oracle-ab.json): dependents-discovery graded by the TypeScript
compiler's own reference finder over 30 seeded vite symbols — codeweb recall 0.94 /
precision 0.89 at 1/3 of an idealized grep's context cost (0.8KB vs 2.5KB per
task); blast-radius ("what transitively breaks") in one ~1KB call vs a recursive
grep loop's ~130KB (126× on the canonical run, simulated generously for grep). Mechanical and
reproducible — complements (does not replace) the frozen frontier-agent pilot,
whose run stays the evidence for agent-loop behavior (+0.27 recall, ~44% fewer
tokens). The 6/30 under-recalled symbols are the known dispatch/re-export gap.