Cutplane

An example analysis of vercel/ai #18912

ai c89c2ec2..30372b85

PR #18912, base is the merge-base c89c2ec2 — the same diff the PR page shows

What the diff shows

GitHub tells you what lines changed.

  • 19 files changed
  • 807 lines in changed components
  • 6 components touched
  • 0 public routes added or removed
  • 0 schema statements
  • 0 dependencies added

What you actually need

Cutplane tells you what changed in the system.

  • DeepAgents, Claude Code, Codex, OpenCode and ACP harnesses now supply reusable sandbox setup recipes.
  • Sandbox preparation now applies selected harness recipes before sessions start and derives a deterministic identity for the prepared artifact.
  • DeepAgents setup now installs a checksum-verified ripgrep binary when the sandbox does not already provide one.
  • ACP setup now packages and installs the selected npm-based implementation alongside its bridge.

What this change does — 1 change, 1 added

Reusable harness sandbox setup, added

ADDED

Harness bridge runtimes and their dependencies were installed as part of session startupbecomesHarnesses provide reusable setup recipes that sandbox preparation can apply and identify before sessions begin

Sandbox providers can now prepare a reusable template or snapshot with the bridge runtimes and command-line tools required by selected harnesses before creating live sessions. The prepared artifact carries a deterministic identity derived from its selected recipes and optional sandbox setup, allowing providers to cache it and later skip already-applied setup. Claude Code, Codex, OpenCode, DeepAgents, and ACP-based harnesses each provide the files and installation commands needed for this common preparation flow.

  • Allows snapshot-capable sandbox providers to preserve installed runtimes and avoid repeating setup for later sessions
  • Uses one recipe application and identity path across the supported harnesses
  • Records setup under the sandbox working area, avoiding a requirement for root filesystem access
10 files read to write this
  • packages/harness-deepagents/src/deepagents-bootstrap.ts
  • packages/harness-claude-code/src/claude-code-harness.ts
  • packages/harness-codex/src/codex-harness.ts
  • packages/harness-opencode/src/opencode-harness.ts
  • packages/harness-acp/src/v1/acp-bootstrap.ts
  • packages/harness/src/agent/prepare-sandbox-for-harness.ts
  • packages/harness-deepagents/src/deepagents-harness.ts
  • packages/harness-claude-code/src/claude-code-bootstrap.ts
  • packages/harness-codex/src/codex-bootstrap.ts
  • packages/harness-opencode/src/opencode-bootstrap.ts
  1. ComponentDeepAgents, Claude Code and 4 more components
    • DeepAgentspackages/harness-deepagents/src/2 files · 171 lines
    • Claude Codepackages/harness-claude-code/src/2 files · 133 lines
    • Codexpackages/harness-codex/src/2 files · 124 lines
    • OpenCodepackages/harness-opencode/src/2 files · 120 lines
    • ACP V1packages/harness-acp/src/v1/2 files · 233 lines
    • Agentpackages/harness/src/agent/1 file · 26 lines
    The DeepAgents static export surface added DEEPAGENTS_BOOTSTRAP_DIR and getDeepAgentsBootstrap.C5claim:10

    symbols/surface.ts exportSurface over packages/harness-deepagents/src/, packages/harness-deepagents/src/

    The Claude Code static export surface added CLAUDE_CODE_BOOTSTRAP_DIR and getClaudeCodeBootstrap.C5claim:8

    symbols/surface.ts exportSurface over packages/harness-claude-code/src/, packages/harness-claude-code/src/

    The Codex static export surface added CODEX_BOOTSTRAP_DIR and getCodexBootstrap.C5claim:9

    symbols/surface.ts exportSurface over packages/harness-codex/src/, packages/harness-codex/src/

    The OpenCode static export surface added OPENCODE_BOOTSTRAP_DIR and getOpenCodeBootstrap.C5claim:11

    symbols/surface.ts exportSurface over packages/harness-opencode/src/, packages/harness-opencode/src/

    The ACP V1 static export surface added createACPBootstrap.C5claim:7

    symbols/surface.ts exportSurface over packages/harness-acp/src/v1/, packages/harness-acp/src/v1/

  2. File11 files, +424 −383
    • packages/harness-acp/src/v1/acp-bootstrap.ts+119 −0
    • packages/harness-acp/src/v1/acp-v1-harness.ts+7 −107
    • packages/harness-deepagents/src/deepagents-bootstrap.ts+87 −0
    • packages/harness-deepagents/src/deepagents-harness.ts+5 −79
    • packages/harness-claude-code/src/claude-code-harness.ts+5 −63
    • packages/harness-claude-code/src/claude-code-bootstrap.ts+65 −0
    • packages/harness-codex/src/codex-harness.ts+5 −59
    • packages/harness-opencode/src/opencode-harness.ts+5 −57

    …and 3 more, in this report’s stored JSON

    The ACP V1 component changed 2 files, with 233 lines added or removed.C3claim:1

    component/change.ts componentChanges over packages/harness-acp/src/v1/acp-bootstrap.ts, packages/harness-acp/src/v1/acp-v1-harness.ts

    The DeepAgents component changed 2 files, with 171 lines added or removed.C3claim:2

    component/change.ts componentChanges over packages/harness-deepagents/src/deepagents-bootstrap.ts, packages/harness-deepagents/src/deepagents-harness.ts

    The Claude Code component changed 2 files, with 133 lines added or removed.C3claim:3

    component/change.ts componentChanges over packages/harness-claude-code/src/claude-code-bootstrap.ts, packages/harness-claude-code/src/claude-code-harness.ts

    The Codex component changed 2 files, with 124 lines added or removed.C3claim:4

    component/change.ts componentChanges over packages/harness-codex/src/codex-bootstrap.ts, packages/harness-codex/src/codex-harness.ts

    The OpenCode component changed 2 files, with 120 lines added or removed.C3claim:5

    component/change.ts componentChanges over packages/harness-opencode/src/opencode-bootstrap.ts, packages/harness-opencode/src/opencode-harness.ts

    The Agent component changed 1 file, with 26 lines added or removed.C3claim:6

    component/change.ts componentChanges over packages/harness/src/agent/prepare-sandbox-for-harness.ts

  3. FunctioncreateACPBootstrap(), createACPV1() and 3 more functions
    • createACPBootstrap()packages/harness-acp/src/v1/acp-bootstrap.tsreaches ACP V1
    • createACPV1()packages/harness-acp/src/v1/acp-v1-harness.tsreaches packages/harness-acp/src/v1/bridge/
    • DEEPAGENTS_BOOTSTRAP_DIR()packages/harness-deepagents/src/deepagents-bootstrap.tsreaches DeepAgents
    • OPENCODE_BOOTSTRAP_DIR()packages/harness-opencode/src/opencode-bootstrap.tsreaches OpenCode
    • prepareSandboxForHarness()packages/harness/src/agent/prepare-sandbox-for-harness.tsreaches packages/harness/agent/
    The addition of createACPBootstrap reached 6 files in packages/harness-acp/src/v1/ through a precise 1-to-4-hop path; 3 of 3 names in its file changed.C7claim:18

    packages/harness-acp/src/v1/acp-bootstrap.ts:12-89 (head)

    impact/reach.ts reverse-reachability, lifted by impact/group.ts over packages/harness-acp/src/v1/

    The body change to createACPV1 reached 4 files in packages/harness-acp/src/v1/bridge/ through a precise 3-to-4-hop path via packages/harness-acp/src/v1/, packages/harness-acp/src/, and packages/harness-acp/src/v1/bridge/; 3 of 23 names in its file changed.C7claim:19

    packages/harness-acp/src/v1/acp-v1-harness.ts:111-682 (head)

    impact/reach.ts reverse-reachability, lifted by impact/group.ts over packages/harness-acp/src/v1/, packages/harness-acp/src/, packages/harness-acp/src/v1/bridge/

    The addition of DEEPAGENTS_BOOTSTRAP_DIR reached 2 files in packages/harness-deepagents/src/ through a precise 1-to-2-hop path; 8 of 8 names in its file changed.C7claim:15

    packages/harness-deepagents/src/deepagents-bootstrap.ts:10-10 (head)

    impact/reach.ts reverse-reachability, lifted by impact/group.ts over packages/harness-deepagents/src/

    The addition of OPENCODE_BOOTSTRAP_DIR reached 2 files in packages/harness-opencode/src/ through a precise 1-to-2-hop path; 4 of 4 names in its file changed.C7claim:16

    packages/harness-opencode/src/opencode-bootstrap.ts:5-5 (head)

    impact/reach.ts reverse-reachability, lifted by impact/group.ts over packages/harness-opencode/src/

    The body change to prepareSandboxForHarness reached 1 file in packages/harness/agent/ through a precise 1-hop path via packages/harness/src/agent/ and packages/harness/agent/; 2 of 5 names in its file changed.C7claim:17

    packages/harness/src/agent/prepare-sandbox-for-harness.ts:43-117 (head)

    impact/reach.ts reverse-reachability, lifted by impact/group.ts over packages/harness/src/agent/, packages/harness/agent/

  4. Diff51 line ranges
    • packages/harness-acp/src/v1/acp-bootstrap.ts1–119
    • packages/harness-acp/src/v1/acp-v1-harness.ts2–2, 4–4, 9–9 and 7 more spans
    • packages/harness-deepagents/src/deepagents-bootstrap.ts1–87
    • packages/harness-deepagents/src/deepagents-harness.ts2–2, 4–4, 10–10 and 6 more spans
    • packages/harness-claude-code/src/claude-code-harness.ts2–2, 4–4, 10–10 and 5 more spans
    • packages/harness-claude-code/src/claude-code-bootstrap.ts1–65
    • packages/harness-codex/src/codex-harness.ts2–2, 4–4, 10–10 and 5 more spans
    • packages/harness-opencode/src/opencode-harness.ts2–2, 4–4, 10–10 and 5 more spans

    …and 3 more, in this report’s stored JSON

Written from 10 files of the 11 changed files that belong to a component, ranked by the same review priority as the components below.

6components changed
3reached, not changed
0components added/removed
0dependencies added between components
0dependencies removed between components
0files moved to another path

19 files changed, 19 claims stated. 8 components reached in total.

Architecture — 6 components changed

Before

packages/harness-deepagents/src/ — 2 files, 171 linesDeepAgentspackages/harness-claude-code/src/ — 2 files, 133 linesClaude Codepackages/harness-codex/src/ — 2 files, 124 linesCodexpackages/harness-opencode/src/ — 2 files, 120 linesOpenCodepackages/harness-acp/src/v1/ — 2 files, 233 linesACP V1packages/harness/src/agent/ — 1 file, 26 linesAgent
DeepAgentspackages/harness-deepagents/src/
Claude Codepackages/harness-claude-code/src/
Codexpackages/harness-codex/src/
OpenCodepackages/harness-opencode/src/
ACP V1packages/harness-acp/src/v1/
Agentpackages/harness/src/agent/

After

packages/harness-deepagents/src/ — 2 files, 171 linesDeepAgentspackages/harness-claude-code/src/ — 2 files, 133 linesClaude Codepackages/harness-codex/src/ — 2 files, 124 linesCodexpackages/harness-opencode/src/ — 2 files, 120 linesOpenCodepackages/harness-acp/src/v1/ — 2 files, 233 linesACP V1packages/harness/src/agent/ — 1 file, 26 linesAgent
DeepAgentspackages/harness-deepagents/src/MODIFIED
Claude Codepackages/harness-claude-code/src/MODIFIED
Codexpackages/harness-codex/src/MODIFIED
OpenCodepackages/harness-opencode/src/MODIFIED
ACP V1packages/harness-acp/src/v1/MODIFIED
Agentpackages/harness/src/agent/MODIFIED
DeepAgents packages/harness-deepagents/src/
2 files · 171 lines · 0.09 · 1 dependent
Claude Code packages/harness-claude-code/src/
2 files · 133 lines · 0.09 · 1 dependent
Codex packages/harness-codex/src/
2 files · 124 lines · 0.09 · 1 dependent
OpenCode packages/harness-opencode/src/
2 files · 120 lines · 0.09 · 1 dependent
ACP V1 packages/harness-acp/src/v1/
2 files · 233 lines · 0.07 · 2 dependents
Agent packages/harness/src/agent/
1 file · 26 lines · 0.06 · 1 dependent

What this narrows

  1. 7,881
    files at head
  2. 251
    components
  3. 6
    changed by this change
  4. 6
    drawn above of 6
  5. 3
    ranked most important of 6

Each row is the one above it, narrowed by review priority — never by the renderer, and never by the alphabet. Everything a row leaves out is in this report’s stored JSON, with the score that put it there.

Where the new files landed — 5 files in 5 components

Every file this change added, grouped by the component it landed in — what each arrival belongs to, what reaches it, and what it reaches. The files themselves are in this report’s stored JSON.

packages/harness-deepagents/src/1 NEW FILE
Belongs to
DeepAgentsbase frame
Used by
nothing in the existing application
Calls
nothing internal
packages/harness-claude-code/src/1 NEW FILE
Belongs to
Claude Codebase frame
Used by
nothing in the existing application
Calls
nothing internal
packages/harness-codex/src/1 NEW FILE
Belongs to
Codexbase frame
Used by
nothing in the existing application
Calls
nothing internal
packages/harness-opencode/src/1 NEW FILE
Belongs to
OpenCodebase frame
Used by
nothing in the existing application
Calls
nothing internal
packages/harness-acp/src/v1/1 NEW FILE
Belongs to
ACP V1base frame
Used by
nothing in the existing application
Calls
nothing internal

1 added file carries no component — 1 docs.

What else could behave differently — 8 components

These components import something this change touched, so they may behave differently — 24 files of them in total. 3 components of them were not edited by it.

3 of 7 computed groups drawn, ranked by review priority. The other 4 are below and in this report’s stored JSON.

packages/harness-acp/src/C74 files may behave differently

The body change to createACPV1 reached 4 files in packages/harness-acp/src/ through a precise 1-to-3-hop path via packages/harness-acp/src/v1/ and packages/harness-acp/src/; 3 of 23 names in its file changed.

  1. ACP V1packages/harness-acp/src/v1/
  2. packages/harness-acp/src/

createACPV1 in packages/harness-acp/src/v1/acp-v1-harness.ts (body changed) · 1-3 hops · precise · 1 of 2 changed symbols reaching it

packages/harness-acp/src/v1/acp-v1-harness.ts:111-682 (head)

impact/reach.ts reverse-reachability, lifted by impact/group.ts over packages/harness-acp/src/v1/, packages/harness-acp/src/

Claude Codepackages/harness-claude-code/src/C73 files may behave differently

The addition of CLAUDE_CODE_BOOTSTRAP_DIR reached 3 files in packages/harness-claude-code/src/ through a precise 1-to-2-hop path; 4 of 4 names in its file changed.

  1. Claude Codepackages/harness-claude-code/src/

CLAUDE_CODE_BOOTSTRAP_DIR in packages/harness-claude-code/src/claude-code-bootstrap.ts (added) · 1-2 hops · precise · 1 of 3 changed symbols reaching it

packages/harness-claude-code/src/claude-code-bootstrap.ts:17-17 (head)

impact/reach.ts reverse-reachability, lifted by impact/group.ts over packages/harness-claude-code/src/

Codexpackages/harness-codex/src/C72 files may behave differently

The addition of CODEX_BOOTSTRAP_DIR reached 2 files in packages/harness-codex/src/ through a precise 1-to-2-hop path; 4 of 4 names in its file changed.

  1. Codexpackages/harness-codex/src/

CODEX_BOOTSTRAP_DIR in packages/harness-codex/src/codex-bootstrap.ts (added) · 1-2 hops · precise · 1 of 3 changed symbols reaching it

packages/harness-codex/src/codex-bootstrap.ts:16-16 (head)

impact/reach.ts reverse-reachability, lifted by impact/group.ts over packages/harness-codex/src/

1 component held back at 3+ hops or by an ambiguous edge
componentfileshopsresolution
packages/harness-acp/src/v1/bridge/43-4precise
4 more components reached, ranked lower
componentfileshops
packages/harness-deepagents/src/21-2
packages/harness-opencode/src/21-2
packages/harness/agent/11-1
packages/harness-acp/src/v1/61-4

12 reached files belong to no component — tests, docs and config.

Routes, schema, dependencies

No public URL, no migration and no new package.

Not stated

  • 455 routes were found on files whose role excludes them, so no route is claimed for them.

naming: “model · 5,030 in, 889 out · $0.0117

narrative: “model · 36,155 in, 828 out · $0.0172

analyzer 0.1.0, config v1.9.0-phase8

Every line above is derived from c89c2ec2..30372b85 and nothing else.