Skip to content

feat: navigate every checkout from one binding, with Dart and larger caps - #36

Merged
TheCryptoDonkey merged 1 commit into
mainfrom
feat/navigation-for-every-repo
Sep 27, 2026
Merged

TheCryptoDonkey merged 1 commit into
mainfrom
feat/navigation-for-every-repo

Conversation

@TheCryptoDonkey

Copy link
Copy Markdown
Member

Nine ordinary ForgeSworn checkouts, several of them feature worktrees, failed to refresh on the 100,000-line cap, and Dart source was invisible to navigation. This lets one client entry serve every checkout.

  • Caps: 600,000 indexed lines, 6M postings, 128 MiB, 50,000 files (per-file cap, depth and the 100,000 directory-entry cap unchanged). LOCAL-NAVIGATION.md records the single-run measurements; NAVIGATION-POLICY.md now points to scope files for anything still over a cap.
  • Dart: .dart is indexed lexically and returned by build packets; plan packets still reject it. The Dart test pins that outcome, and the language docs claim exact-token support only. The broad scanner still infers no Dart declarations.
  • No-directory binding: navigate with no directory binds the canonical Git top level of the directory it starts in, for the life of the process, using git rev-parse --show-toplevel with GIT_* stripped as packets do. It exits with an error outside a checkout. navigate <directory> is unchanged. GETTING-STARTED.md adds a one-line user-scope setup for Claude Code; Codex keeps explicit per-project roots because its default server cwd is undocumented and unchecked.
  • Root check in the server instructions: the instructions name the bound root, so a client can compare it with its checkout without a status call. Two phrases repeated in tool descriptions were dropped to stay in the byte budget (6,173 of 6,200, root path excluded).

Checks: build, 456 tests (452 plus four new), packed-package smoke (now covering Dart and a no-directory launch), navigation stdio smoke, both benchmark gates (parity 363.45x, recall 1.0), 22 scale tests, 10k postings probe. The pre-push npm run check passed. An earlier local run under load average ~480 timed out 16 tests at vitest's 5-second limit; all pass with a longer limit.

Local probe with this build and no directory: all nine previously failing checkouts refresh and bind the correct root; the largest (a Flutter monorepo with Dart) indexes 307,510 lines at about 385 MiB RSS. Single runs, not guarantees.

Not released; no version bump. Claude Code client acceptance of the no-directory entry is still to be recorded at rollout.

…caps

Raise the navigation build caps to 600,000 indexed lines, six million
postings, 128 MiB and 50,000 files, so ordinary checkouts and their
feature worktrees fit without scope files.

Index .dart lexically and return it in build packets; plan packets still
reject it. The Dart test now pins that outcome.

navigate with no directory binds the canonical Git top level of the
directory it starts in, for the life of the process, and exits with an
error outside a checkout. One user-scope client entry then serves every
checkout a session starts in.

The server instructions name the bound root, so a client can compare it
with its own checkout without a status call. Two phrases repeated in tool
descriptions were dropped to stay within the byte budget.
@TheCryptoDonkey
TheCryptoDonkey merged commit db5fd05 into main Sep 27, 2026
1 check passed
@TheCryptoDonkey
TheCryptoDonkey deleted the feat/navigation-for-every-repo branch September 27, 2026 12:07
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