Skip to content

Honor requested worktree authority in routed reads - #244

Merged
flyingrobots merged 9 commits into
mainfrom
cycle/238-requested-worktree-authority
Aug 10, 2026
Merged

Honor requested worktree authority in routed reads#244
flyingrobots merged 9 commits into
mainfrom
cycle/238-requested-worktree-authority

Conversation

@flyingrobots

@flyingrobots flyingrobots commented Aug 10, 2026

Copy link
Copy Markdown
Owner

Summary

  • prove explicit cwd selects either worktree of the same repository even while another is active
  • expose requested/resolved roots and resolved workspace identities in the result and receipt
  • fail closed on missing, unauthorized, or contradictory workspace routes

Validation

  • pnpm test — 258 files, 2,051 tests
  • pnpm build
  • pnpm lint
  • pnpm typecheck
  • pnpm release:surface-gate
  • git diff --check

Closes #238

Summary by CodeRabbit

  • New Features

    • Added explicit per-call workspace routing for supported repository tools and CLI commands.
    • Responses and receipts now include requested/resolved workspace details and repository or worktree identity.
    • Added validation for client-provided workspace identity hints.
  • Bug Fixes

    • Workspace mismatches now return clear typed errors identifying conflicts.
    • Invalid or replaced workspace repositories are detected and rejected safely.
  • Compatibility

    • Updated output metadata schemas for outline operations and workspace-routed results.
    • Existing non-routed outputs retain their previous format.

@coderabbitai

coderabbitai Bot commented Aug 10, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@flyingrobots, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 47 minutes

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 069f8ae4-90a1-4af5-92b4-a97b1d19f3f0

📥 Commits

Reviewing files that changed from the base of the PR and between 6cda22e and 1cb82f2.

⛔ Files ignored due to path filters (3)
  • CHANGELOG.md is excluded by !**/*.md
  • docs/method/retro/SURFACE_requested-worktree-authority/retro.md is excluded by !**/*.md
  • docs/method/retro/SURFACE_requested-worktree-authority/witness/verification.md is excluded by !**/*.md
📒 Files selected for processing (2)
  • src/contracts/output-schema-meta.ts
  • test/unit/contracts/output-schemas.test.ts
📝 Walkthrough

Walkthrough

The change adds explicit workspace-routing contracts, validates workspace identity, records route evidence, propagates it through MCP workers and receipts, and updates output schema versions. Tests cover multiple worktrees, typed failures, identity mismatches, and schema metadata.

Changes

Workspace routing and evidence

Layer / File(s) Summary
Routing contracts and output schemas
src/contracts/capabilities.ts, src/contracts/output-schema-meta.ts, src/contracts/output-schemas.ts
Defines routed MCP tools and CLI commands. Adds schema version 3.0.0, route evidence validation, and conditional _workspace metadata.
Workspace identity resolution
src/mcp/workspace-router-model.ts, src/mcp/workspace-router-resolution.ts, src/mcp/workspace-router.ts, src/mcp/daemon-control-plane.ts
Validates client identity hints against canonical Git values. Adds typed resolution errors and route evidence to execution contexts.
Receipt and worker propagation
src/mcp/receipt.ts, src/mcp/repo-tool-job.ts, src/mcp/repo-tool-worker-context.ts, src/mcp/server-invocation.ts, src/mcp/server-tool-access.ts
Carries workspace evidence through invocation, worker jobs, receipts, and response metadata.
Routing and schema validation
test/unit/contracts/output-schemas.test.ts, test/unit/mcp/per-call-workspace-route.test.ts, test/unit/mcp/workspace-binding.test.ts
Tests schema versions, worktree-specific results, typed routing failures, replaced repositories, and identity mismatches.

Estimated code review effort: 4 (Complex) | ~45 minutes

Sequence Diagram(s)

sequenceDiagram
  participant MCPCaller
  participant WorkspaceRouter
  participant RepositoryTool
  participant ReceiptBuilder
  MCPCaller->>WorkspaceRouter: Request explicit workspace route
  WorkspaceRouter->>WorkspaceRouter: Resolve workspace and validate identity hints
  WorkspaceRouter->>RepositoryTool: Execute with workspace route evidence
  RepositoryTool->>ReceiptBuilder: Provide workspace route evidence
  ReceiptBuilder-->>MCPCaller: Return receipt and _workspace metadata
Loading

Possibly related PRs

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 16.67% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Linked Issues check ❓ Inconclusive The code and tests cover route resolution, identity checks, fail-closed errors, route evidence, and explicit-root precedence, but required documentation is excluded from review. Review docs/design/SURFACE_requested-worktree-authority.md, excluded by the !**/*.md filter, to verify root-precedence documentation.
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly identifies the main change: routed reads now honor the caller's requested worktree authority.
Out of Scope Changes check ✅ Passed All summarized changes support issue #238 through routed workspace authority, evidence, identity validation, schemas, and tests; no unrelated code changes are evident.
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch cycle/238-requested-worktree-authority

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Copy link
Copy Markdown
Owner Author

Activity Summary

Issue Severity File Commit SHA Outcome
Lock #238 hill, acceptance proof, and non-goals Docs docs/design/SURFACE_requested-worktree-authority.md, docs/BEARING.md 99ee08dc Constrained the cycle to bidirectional same-repository worktree authority.
Honor explicit requested-worktree authority P1 workspace routing, receipts, schemas, and behavioral tests 4d955b58 Added fail-closed identity validation and identical result/receipt route evidence; proved both worktree directions.
Close the cycle with public and verification truth Docs changelog, operator docs, Retro, witness 3798d94a Recorded the 2,051-test full gate and the exact non-goals.

CodeRabbit reported that it could not review this exact head because its review limit was reached, so the repository fallback gate applies:

@codex review please

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 3798d94a34

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/contracts/output-schemas.ts Outdated

Copy link
Copy Markdown
Owner Author

The single P1 from the prior review is repaired in d8b5be77, its thread is resolved, and the full isolated gate repeated green at 258 files / 2,051 tests.

@codex review please

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: d8b5be779d

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/contracts/output-schema-meta.ts Outdated
@flyingrobots

Copy link
Copy Markdown
Owner Author

The outline schema-version collision is fixed on exact head 7a202c57: the already-v2 outline pair now advances to v3, with direct emitted-contract coverage and the complete local gate green (258 files / 2,051 tests, build, public surface, lint, types, whitespace).

@codex review please

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
src/contracts/output-schema-meta.ts (1)

78-88: 🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

Keep the exported common-schema helpers aligned with _workspace.

The new interface fields are not added by withMcpCommon or withCliPeerCommon. Their generated schemas therefore omit the workspace-route contract that these interfaces declare.

Add the workspace evidence schema to both helpers, or remove the duplicate helpers and use one shared implementation. Add a contract test for the exported helpers.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/contracts/output-schema-meta.ts` around lines 78 - 88, Update the
exported withMcpCommon and withCliPeerCommon helpers to include the _workspace
evidence schema declared by their corresponding interfaces, preferably by
reusing one shared implementation where appropriate. Ensure generated schemas
preserve the existing common fields and add contract coverage for both exported
helpers.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Outside diff comments:
In `@src/contracts/output-schema-meta.ts`:
- Around line 78-88: Update the exported withMcpCommon and withCliPeerCommon
helpers to include the _workspace evidence schema declared by their
corresponding interfaces, preferably by reusing one shared implementation where
appropriate. Ensure generated schemas preserve the existing common fields and
add contract coverage for both exported helpers.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 24e5a9e1-8062-4639-8d81-400e25f36ae7

📥 Commits

Reviewing files that changed from the base of the PR and between caf2938 and 7a202c5.

⛔ Files ignored due to path filters (8)
  • CHANGELOG.md is excluded by !**/*.md
  • docs/BEARING.md is excluded by !**/*.md
  • docs/MCP.md is excluded by !**/*.md
  • docs/SETUP.md is excluded by !**/*.md
  • docs/design/SURFACE_requested-worktree-authority.md is excluded by !**/*.md
  • docs/invariants/versioned-output-schemas.md is excluded by !**/*.md
  • docs/method/retro/SURFACE_requested-worktree-authority/retro.md is excluded by !**/*.md
  • docs/method/retro/SURFACE_requested-worktree-authority/witness/verification.md is excluded by !**/*.md
📒 Files selected for processing (14)
  • src/contracts/capabilities.ts
  • src/contracts/output-schema-meta.ts
  • src/contracts/output-schemas.ts
  • src/mcp/receipt.ts
  • src/mcp/repo-tool-job.ts
  • src/mcp/repo-tool-worker-context.ts
  • src/mcp/server-invocation.ts
  • src/mcp/server-tool-access.ts
  • src/mcp/workspace-router-model.ts
  • src/mcp/workspace-router-resolution.ts
  • src/mcp/workspace-router.ts
  • test/unit/contracts/output-schemas.test.ts
  • test/unit/mcp/per-call-workspace-route.test.ts
  • test/unit/mcp/workspace-binding.test.ts

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 7a202c5703

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/mcp/workspace-router.ts Outdated
@flyingrobots

Copy link
Copy Markdown
Owner Author

Fixed the exact-head CodeRabbit finding in 7147763e. The shared metadata module now owns the exact workspace-route evidence schema; both exported common-schema helpers and the product schema builders reuse it, with direct MCP/CLI regression coverage. The complete local gate is green at 258 files / 2,052 tests plus build, public surface, lint, types, and whitespace.

@codex review please

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Keep it up!

Reviewed commit: 7147763e6e

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@flyingrobots

Copy link
Copy Markdown
Owner Author

Both overlapping exact-head findings are repaired on 7dc6024e: shared schema helpers now retain exact route evidence, and active routed bindings are reused only after full repository/common-directory identity validation. The complete local gate is green at 258 files / 2,053 tests plus build, public surface, lint, types, and whitespace; all prior threads are resolved. CodeRabbit is rate-limited, so the repository fallback applies.

@codex review please

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 7dc6024e22

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/mcp/workspace-router.ts
Comment thread src/contracts/output-schemas.ts Outdated
@flyingrobots

Copy link
Copy Markdown
Owner Author

@codex review please — exact-head follow-up on 6cda22e. The two prior findings are repaired and resolved: authorization now revalidates the full resolved workspace identity, and workspace evidence is limited to routed output contracts. Local gate: 45 focused tests; 258 files / 2,055 tests isolated; build, release surface, lint, typecheck, and diff checks pass. CodeRabbit is rate-limited, so this request is the repository fallback review.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@src/contracts/output-schema-meta.ts`:
- Around line 27-33: Update workspaceRouteEvidenceSchema so requestedRoot and
resolvedRoot validate with path.isAbsolute, rejecting empty and relative paths
while preserving the existing strict object shape. Add schema tests covering
both invalid empty and relative values.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 3661e4a1-80f5-47ed-87c3-cc2f28c5c891

📥 Commits

Reviewing files that changed from the base of the PR and between 7a202c5 and 6cda22e.

⛔ Files ignored due to path filters (4)
  • CHANGELOG.md is excluded by !**/*.md
  • docs/design/SURFACE_requested-worktree-authority.md is excluded by !**/*.md
  • docs/method/retro/SURFACE_requested-worktree-authority/retro.md is excluded by !**/*.md
  • docs/method/retro/SURFACE_requested-worktree-authority/witness/verification.md is excluded by !**/*.md
📒 Files selected for processing (7)
  • src/contracts/output-schema-meta.ts
  • src/contracts/output-schemas.ts
  • src/mcp/daemon-control-plane.ts
  • src/mcp/workspace-router.ts
  • test/unit/contracts/output-schemas.test.ts
  • test/unit/mcp/per-call-workspace-route.test.ts
  • test/unit/mcp/workspace-binding.test.ts
🚧 Files skipped from review as they are similar to previous changes (3)
  • src/mcp/workspace-router.ts
  • src/contracts/output-schemas.ts
  • test/unit/contracts/output-schemas.test.ts

Comment thread src/contracts/output-schema-meta.ts
@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Nice work!

Reviewed commit: 6cda22e66f

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@flyingrobots

Copy link
Copy Markdown
Owner Author

@coderabbitai review please — final exact-head follow-up on 1cb82f2. The absolute-root schema finding is repaired and resolved. Local gate: 46 focused tests; 258 files / 2,056 tests isolated; build, release surface, lint, typecheck, and diff checks pass.

@coderabbitai

coderabbitai Bot commented Aug 10, 2026

Copy link
Copy Markdown
🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo '=== HEAD ==='
git rev-parse HEAD
echo '=== PR base ==='
base="$(git merge-base HEAD origin/main 2>/dev/null || git merge-base HEAD main)"
printf '%s\n' "$base"

echo '=== Changed files ==='
git diff --name-status "$base"...HEAD

echo '=== Diff: workspace route schemas and routing ==='
git diff --unified=80 "$base"...HEAD -- \
  src/contracts/output-schema-meta.ts \
  src/contracts/output-schemas.ts \
  src/mcp/workspace-router-model.ts \
  src/mcp/workspace-router-resolution.ts \
  src/mcp/workspace-router.ts \
  src/mcp/receipt.ts \
  src/mcp/server-invocation.ts \
  src/mcp/repo-tool-worker-context.ts \
  test/unit/contracts/output-schemas.test.ts \
  test/unit/mcp/per-call-workspace-route.test.ts \
  test/unit/mcp/workspace-binding.test.ts

echo '=== Relevant outlines ==='
ast-grep outline src/contracts/output-schema-meta.ts --items all
ast-grep outline src/contracts/output-schemas.ts --items all
ast-grep outline src/mcp/workspace-router.ts --items all
ast-grep outline src/mcp/workspace-router-resolution.ts --items all

echo '=== Root and route-evidence references ==='
rg -n -C 4 --glob '*.ts' \
  '(requestedRoot|resolvedRoot|workspaceRouteEvidenceSchema|WorkspaceRouteEvidence|_workspace)' \
  src test/unit

Length of output: 183350


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo '=== Final exact-head commit ==='
git show --stat --oneline --decorate --no-renames 1cb82f2d
git show --format=fuller --no-ext-diff --unified=60 1cb82f2d -- \
  src/contracts/output-schema-meta.ts \
  test/unit/contracts/output-schemas.test.ts

echo '=== Routed capability definitions ==='
sed -n '1,150p' src/contracts/capabilities.ts

echo '=== Invocation routing set and argument-schema references ==='
rg -n -C 5 --glob '*.ts' \
  '(workspaceRoutedRepoTools|WORKSPACE_ROUTED_MCP_TOOL_NAMES|WORKSPACE_ROUTED_CLI_COMMAND_NAMES|cwd.*z\.string|z\.string.*cwd)' \
  src test/unit

echo '=== Receipt build call sites and schema validation call sites ==='
rg -n -C 4 --glob '*.ts' \
  '(buildReceiptResult\(|MCP_OUTPUT_SCHEMAS\[|validateMcpOutput|attachMcpSchemaMeta\()' \
  src test/unit

echo '=== Output-schema exports and version references ==='
sed -n '1,65p' src/contracts/output-schemas.ts
rg -n -C 3 --glob '*.ts' \
  '(OUTPUT_SCHEMA_V3_VERSION|OUTLINE_OUTPUT_SCHEMA_VERSION|OutputSchemaVersion)' \
  src test/unit

echo '=== Documentation precedence and root wording ==='
rg -n -C 4 \
  '(requested root|resolved root|request root|session root|daemon default|precedence|absolute root|absolute path)' \
  docs/BEARING.md docs/MCP.md docs/SETUP.md docs/design/SURFACE_requested-worktree-authority.md docs/invariants/versioned-output-schemas.md

Length of output: 69999


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo '=== Workspace authorization identity check ==='
ast-grep outline src/mcp/daemon-control-plane.ts --items all
rg -n -C 12 --glob '*.ts' \
  '(getCapabilityProfile|authorizeWorkspace|workspaceAuthorizations|repoId.*worktreeRoot|gitCommonDir)' \
  src/mcp/daemon-control-plane.ts src/mcp

echo '=== Route evidence construction and all invocation contexts ==='
sed -n '535,690p' src/mcp/workspace-router.ts
sed -n '170,215p' src/mcp/server-invocation.ts
sed -n '325,370p' src/mcp/server-invocation.ts
sed -n '90,120p' src/mcp/repo-tool-worker-context.ts

echo '=== Available documentation paths ==='
fd -t f -i 'BEARING.md' -i 'MCP.md' -i 'SETUP.md' -i 'SURFACE_requested-worktree-authority.md' -i 'versioned-output-schemas.md' . || true

echo '=== Static diff checks ==='
git diff --check "$(git merge-base HEAD origin/main 2>/dev/null || git merge-base HEAD main)"...HEAD
git status --short

Length of output: 135130


@flyingrobots No blocking findings from the static review of 1cb82f2d.

The absolute-root schema now rejects relative route roots. The route producer emits absolute requested and resolved roots. Routed output schemas and receipts use the same route-evidence contract. Authorization revalidates repository ID, worktree root, and Git common directory.

git diff --check passed.

Documentation verification was inconclusive because the changed docs/... paths were not available in this sandbox. Please retry the repository inspection if documentation validation is required.


If you found this review helpful, would you consider giving us a shout-out on X?

Thank you for using CodeRabbit!

⚠️ Action not completed

Review rate limited.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@flyingrobots
flyingrobots merged commit 68959cd into main Aug 10, 2026
3 checks passed
@flyingrobots
flyingrobots deleted the cycle/238-requested-worktree-authority branch August 10, 2026 16:27
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.

Honor the requested worktree in MCP structural reads

1 participant