Agent friction: id/symbol_id/symbol_ids, CLI warming_up contradiction, silent limit clamp, quotes in search_text, read path takes mutation lock #551

Closed
opened 2026-11-09 08:35:51 +01:00 by buildagent · 1 comment
Member

Summary

These small frictions each cost an agent at least one wasted call. All were seen by several per-language reviewers on 2026-11-09.

  1. Argument names differ across tools. get_symbol takes id, most tools take symbol_id, and change_impact/context_pack take symbol_ids. PHP, Rust and C# reviewers each lost a refused call to this. Fix: accept all three spellings everywhere (aliases), and document one.
  2. The CLI refuses its first query on a large repository (warming_up on py-django and rust-analyzer), and stderr says "retrying this query will not finish it" (crates/cli/src/main.rs:751) while the JSON says converges_on_retry: true. One retry did converge. Fix: make the two agree. For --no-daemon one-shot queries, wait for the index up to a bound instead of refusing.
  3. find_references with limit: 400 returns 200 rows with no clamp disclosure in the reply. Fix: disclose limit_clamped (the get_dependencies reply already has the field).
  4. find_references has no kind filter (implement/inherit/call), so callers of a symbol cannot be filtered by kind. See #525.
  5. search_text with an embedded " returns 0 until the quote is doubled the FTS5 way. separator_scan hints at it, but the query could be escaped automatically.
  6. Concurrent read-only query --no-daemon runs log plugin_mutation_busy, which suggests a read path tries to take the plugin mutation lock (TS reviewer). Related to #520.

Related: #521 (tool surface), #524.


Filed from the per-language review on 2026-11-09: 8 agents, one per language plus one for Vue/Svelte/XAML/timeline, run against copies of the pinned corpus repos (tests/corpus/corpus.toml) using installed build 2dcfc615, which differs from master only by XAML/CI commits. The top claim of every issue was spot-checked in the main session. Artifacts live under the review session's scratchpad lang-out/<lang>/ and are available on request.

## Summary These small frictions each cost an agent at least one wasted call. All were seen by several per-language reviewers on 2026-11-09. 1. **Argument names differ across tools.** `get_symbol` takes `id`, most tools take `symbol_id`, and `change_impact`/`context_pack` take `symbol_ids`. PHP, Rust and C# reviewers each lost a refused call to this. Fix: accept all three spellings everywhere (aliases), and document one. 2. **The CLI refuses its first query on a large repository** (`warming_up` on py-django and rust-analyzer), and stderr says "retrying this query will not finish it" (`crates/cli/src/main.rs:751`) while the JSON says `converges_on_retry: true`. One retry did converge. Fix: make the two agree. For `--no-daemon` one-shot queries, wait for the index up to a bound instead of refusing. 3. **`find_references` with `limit: 400` returns 200 rows** with no clamp disclosure in the reply. Fix: disclose `limit_clamped` (the `get_dependencies` reply already has the field). 4. **`find_references` has no `kind` filter** (`implement`/`inherit`/`call`), so callers of a symbol cannot be filtered by kind. See #525. 5. **`search_text` with an embedded `"`** returns 0 until the quote is doubled the FTS5 way. `separator_scan` hints at it, but the query could be escaped automatically. 6. **Concurrent read-only `query --no-daemon` runs log `plugin_mutation_busy`**, which suggests a read path tries to take the plugin mutation lock (TS reviewer). Related to #520. Related: #521 (tool surface), #524. --- _Filed from the per-language review on 2026-11-09: 8 agents, one per language plus one for Vue/Svelte/XAML/timeline, run against copies of the pinned corpus repos (`tests/corpus/corpus.toml`) using installed build `2dcfc615`, which differs from master only by XAML/CI commits. The top claim of every issue was spot-checked in the main session. Artifacts live under the review session's scratchpad `lang-out/<lang>/` and are available on request._
Author
Member

Consolidated into #521 during the 2026-11-09 triage. The remaining scope of this issue is tracked there as a checklist item; this report stays as the detailed evidence.

Consolidated into **#521** during the 2026-11-09 triage. The remaining scope of this issue is tracked there as a checklist item; this report stays as the detailed evidence.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
h-dv/code-index#551
No description provided.