Skip to content

land: zoom-batch-only - #624

Merged
ualtinok merged 6 commits into
mainfrom
land/zoom-batch-only
Oct 20, 2026
Merged

ualtinok merged 6 commits into
mainfrom
land/zoom-batch-only

Conversation

@aft-alfonso

@aft-alfonso aft-alfonso Bot commented Oct 20, 2026 •

Copy link
Copy Markdown

Accepted agent delivery; branch-keyed search descriptor included.


Summary by cubic

aft_zoom switches to a single canonical batch: [{ target, symbols }] argument, so files, URLs, and GitHub references can mix in one call and targets beginning with https:// are fetched as URLs rather than read as paths. A single missing symbol now returns the lookup's guidance as text instead of throwing, and the per-symbol line names the searched file. Older spellings (targets/path/filePath/url with symbol/symbols) still run but are no longer advertised to models.

  • New Features: issue://N and pr://N targets work when GitHub reads are enabled; batch entries with a missing or conflicting target are rejected with a diagnostic naming the values.
  • Refactors: OpenCode and Pi tool definitions, schemas, and workflow hints advertise only the batch shape; read/write/edit descriptions use filePath on OpenCode V1 and path on V2. Symbols in a batch entry keep their string or array shape, so comma-separated code lists, stringified arrays, and pasted menu selectors parse without splitting Markdown/HTML headings, and multiple GitHub ordinals share one discussion fetch per entry. Translation and catalog fixtures were regenerated for the new shape.

Written for commit 7696528. Summary will update on new commits.

View guided diff Turn on auto-fix

RetriggerView in GreptileConfidence Score: 5/5

The PR appears safe to merge; no new actionable issue was found.

Summary

aft_zoom now advertises batch: [{ target, symbols }] across Rust, OpenCode, and Pi, while keeping older argument spellings working.

  • Zoom lookups use one batch for files, web pages, and discussions.

Both earlier threads were manually resolved without explanation. The current code addresses both findings: symbol lists use the existing parser, and GitHub ordinals share one lookup per entry.

Diagram

%%{init: {'theme': 'neutral'}}%%
flowchart LR
  A["batch or older arguments"] --> B["Normalize to batch"]
  B --> C["Check local read permissions"]
  C --> D["Resolve each allowed target"]
  D --> E["Parse symbols for the document language"]
  E --> F["Return results and per-lookup errors"]
Loading

Reviews (4) · Last reviewed commit: "mason: add zoom missing-target matrix sc..." · Reviewed by Greptile

ualtinok and others added 3 commits October 20, 2026 12:08
Advertise only batch entries with target/symbols and shared contextLines/callgraph. Retain quiet runtime aliases, detect HTTP targets before path resolution, and align OpenCode V1/V2 and Pi header guidance.

Preserve current shared URL policy, bounded readers, callgraph caps, and V2 per-file read authorization with individual denied outcomes. Keep subc examples canonical when adapting V1 filePath descriptions.

Regenerate zoom translation and catalog fixtures. Existing tests asserting native dispatch shapes now assert normalized batches; unequal-alias rejection remains required with a diagnostic naming both locations. Mutation controls redden the real schema, V1 header conversion, and loopback HTTP fetch independently.

Verified full Rust and host suites, Windows compile, formatting, typechecks, lint, and targeted restored controls. Remaining full OpenCode unit failures reproduce on baseline; two e2e background-notification cases require unavailable subc-core. Unchanged formatter goldens pass when TMPDIR is outside HOME.

Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
Say explicitly that every zoom call uses batch and a single lookup is a one-entry batch. Keep the rest of both host descriptions unchanged and pin the sentence in their existing surface tests. Rewrite the release fragment for users.

Regenerate the subc schema and both catalog fixtures; no other current committed description snapshots need refresh. Linux gates passed: 51 OpenCode tests, 21 Pi tests, 30 provider tests including exact catalog goldens, both builds/typechecks and root lint. Both wording assertions fail on the ambiguous wording and pass after restoration.

Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
Comment thread crates/aft/src/subc_translate.rs Outdated
Comment thread crates/aft/src/subc_translate.rs Outdated
Preserve each batch entry's symbols string or array until native per-target handling can normalize it with the resolved file language. Reuse parse_zoom_symbol_names for code lists, stringified arrays and pasted menu selectors without splitting Markdown/HTML headings or explicit array entries.

Use github_zoom_selector once per GitHub entry so multiple ordinals share one discussion fetch. Keep memoized file reads and per-file enrichment. Update internal translation assertions/goldens to retain arrays; public schemas and descriptions are unchanged.

Regression reds: tool_call_zoom_code_comma_list_returns_both_symbols returned one missing alpha, beta lookup (expected two); github_zoom_batch_ordinals_fetch_each_discussion_once observed two structured views (expected one). Mutation controls reproduce both reds while comma-heading and array-boundary controls stay green. Final affected native and Pi tests pass; two direct OpenCode adapter assertions reproduce on PR base and remain outside this fix.

Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
@ualtinok
ualtinok added this pull request to the merge queue Oct 20, 2026
A single missing symbol is now a one-entry batch: zoom answers with the
lookup's guidance as text instead of throwing, the same way call-graph
lookups already report symbol_not_found, and the per-symbol line names the
file it searched.

Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
@ualtinok
ualtinok removed this pull request from the merge queue due to a manual request Oct 20, 2026
@ualtinok
ualtinok added this pull request to the merge queue Oct 20, 2026
@ualtinok
ualtinok removed this pull request from the merge queue due to a manual request Oct 20, 2026
Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
@ualtinok
ualtinok added this pull request to the merge queue Oct 20, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Oct 20, 2026
@ualtinok
ualtinok added this pull request to the merge queue Oct 20, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Oct 20, 2026
@ualtinok
ualtinok added this pull request to the merge queue Oct 20, 2026
Merged via the queue into main with commit da592c3 Oct 20, 2026
49 checks passed
ualtinok added a commit that referenced this pull request Oct 20, 2026
On a loaded Windows runner, actor startup alone exceeded the 1 s bound and the
test failed in #624's merge-queue run. In the opening case the database never
finishes opening, so a refusal that waited for it would still hang past 15 s.

Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
ualtinok added a commit that referenced this pull request Oct 20, 2026
On a loaded Windows runner, actor startup alone exceeded the 1 s bound and the
test failed in #624's merge-queue run. In the opening case the database never
finishes opening, so a refusal that waited for it would still hang past 15 s.

Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
ualtinok added a commit that referenced this pull request Oct 21, 2026
Replay Batch E onto da592c3 while retaining #624's flat batch-only surface, symbol parsing and discussion-fetch grouping, plus #605's call-graph caps. Keep one gated top-level ref and fail clearly for URL revisions. Preserve existing historical authorization refusal assertions instead of converting them into partial-success claims.

Regenerate schema overrides, tool-provider catalogs, owned safety/zoom parity cases, config parity and vocabulary allowlist; prove repeat generation has zero drift. Teach the allowlist generator the already-sanctioned OpenCode 1 description conversion with a narrowly bounded classifier test. Three reversible mutations reddened their exact URL, authorization and classifier tests; controls remained green. Docker-hosted zoom scenarios could not run because the Linux runner lacks Docker; scenario registration validation passed.

Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
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