Skip to content

release: v2.1.0 — agent efficiency - #29

Merged
denfry merged 2 commits into
mainfrom
release/2.1.0
Sep 24, 2026
Merged

denfry merged 2 commits into
mainfrom
release/2.1.0

Conversation

@denfry

@denfry denfry commented Sep 24, 2026

Copy link
Copy Markdown
Owner

Problem

On a 5.9k-file Java/Rust monorepo an agent using the skill spent as many tokens as an agent using Grep/Read alone, and more tool calls. Measuring why exposed real defects:

  • refs/impact returned nothing for Class.method targets and mixed every same-named method for bare names; an empty answer came back as partial: false.
  • Call edges bound across languages and onto other types' members; Kotlin had no call edges; Rust enum variants handled in match arms were invisible.
  • Search packets were 7–10 KB of JSON whose snippets had no line numbers, so agents re-read files or grepped for lines before citing.
  • Localisation catalogues and review diffs outranked code; a class lost its page slot to its own constructor.
  • update parsed changed files serially (149 s vs 13 s for a full rebuild).

Solution

  • Call edges store their receiver (index schema 4; the first update rebuilds once). Owner.member / module::fn targets for refs, impact, symbol, describe; untypeable same-named calls are listed as possible_call with coverage.partial: true.
  • --compact agent output for search/explain/refs/impact: ranked locations with numbered matching lines, calling function and totals per refs site, build-module dependents in impact. refs --exclude-tests/--path, class cards in describe, exact-first symbol.
  • Kotlin calls, Rust variant symbols and pattern references, parallel update.
  • Three ablatable ranking signals (resource_priors, stem_match, question_pool_floor) and constructor folding.
  • Skill rewritten around --compact and 40% shorter.

Verification

  • 719 tests pass (coverage 86.5%), ruff, mypy, doctor --strict, check_versions, check_links, release_smoke.
  • Retrieval eval over 342 queries on six query sets: MRR +0.010 (p=0.031), recall@10 +0.019 (p=0.017), nDCG@10 +0.011 (p=0.005), useful@budget +0.022 (p=0.008), no corpus regressing — tests/eval/results/2026-09-24-retrieval-2.1.0.txt.
  • Agent pilot, three runs per arm: skill 83.5k tokens / 9 tool calls vs Grep/Read 103.0k / 12, all answers correct, ranges not overlapping — tests/eval/results/2026-09-24-agent-pilot.md (one private repo, five questions; scope stated there).

Compatibility

  • Index schema 3 → 4: read commands keep working on an old index; the first update rebuilds it.
  • JSON payloads gain fields (caller, target, receiver on refs sites, more_prefix_matches, modules, members/used_by/uses); nothing is removed.

…gnals

refs, impact, symbol and describe accept Owner.member / module::fn targets.
Call edges now store their receiver (index schema 4), so a call written
against a type or module resolves across files, and resolution no longer
invents edges across languages or onto another type's only member. An
Owner.member query that meets calls it cannot type lists them as
possible_call and reports coverage as partial instead of a confident empty
answer.

Agent-facing output: search/explain/refs/impact --compact print ranked
locations with numbered matching lines, refs sites carry the calling
function and a total, refs gains --exclude-tests/--path, impact reports the
build module and the build files that depend on it, describe lists a
class's members and who uses them, and symbol returns exact matches alone.

Parsing: Kotlin call edges, Rust enum-variant symbols and match-pattern
references, Java/C# enum constants. update parses changed files in a
process pool like a full build.

Ranking: resource_priors, stem_match and question_pool_floor, and a class
is returned instead of its same-named constructor. Over 342 queries:
MRR +0.010 (p=0.031), recall@10 +0.019, nDCG@10 +0.011, useful@budget
+0.022, no corpus regressing.
Version bump with every mirror synced (plugin.json, requirements.lock,
skill stamps), release notes, and the logged runs behind them: the agent
pilot (skill vs Grep/Read, three runs per arm: -19% tokens, -25% tool
calls, all answers correct) and the 2.1.0 retrieval eval.
@denfry
denfry merged commit a73bcc5 into main Sep 24, 2026
11 checks passed
@denfry
denfry deleted the release/2.1.0 branch September 24, 2026 19:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant