Benchmark run alltasks-r15-gemini37-explicit-prescriptive-20261006
This page contains exactly the publishable benchmark observations recorded in run alltasks-r15-gemini37-explicit-prescriptive-20261006; it does not select or aggregate them. Return to the run index or view aggregate metrics.
Interactive browser
Rows are pre-aggregated by task, target, prompt variant, MCP-instruction mode, context, arm, and restriction. Numeric values show median (p50), IQR, p90, maximum, and sample count. Boolean checks show pass counts and success rates. Filters apply to these summary groups; per-run observations remain available on their run pages.
Loading benchmark results…
Baseline vs semedit
Comparison evaluates baseline and semedit values within each restriction policy, target, and context group. Negative changes mark improvements for these lower-is-better metrics; positive changes mark degradations.
Detailed observations
Empirical telemetry measuring wall-clock latency, token usage, tool turns, and compiler correctness when AI coding agents perform code modifications.
Every benchmark pairs Vanilla LLM (standard file editing tools) against Semedit MCP (deterministic AST compiler operations).
Benchmark Methodology & Transparency
- Reproducibility & Provenance: Self-contained txtar archives define test scenarios. Links below resolve to commit-anchored GitHub source files for published commits, or cryptographic SHA-256 fingerprints for uncommitted local fixtures.
- Model Cost: Tables report model-specific credit consumption where a target model has a declared schedule: (uncached input × input credits + cached input × cached credits + (reasoning + visible output) × output credits) / 1,000,000. Thinking tokens use the output rate. ADR-0043 defines the per-million-token credit rates.
- Multi-Level Correctness Oracle: Four validation levels evaluate each trial:
- Level 1 (Mutation Policy): Restricts file modifications strictly to authorized paths.
- Level 2 (AST Invariants): Compiler AST verification of required symbols, imports, and relative declaration ordering.
- Level 3 (Clean Build): Strict compilation validation with zero compiler or typecheck errors.
- Level 4 (Test Suite): Unit and integration test suite execution.
- Isolated Sandboxing: Each trial executes in an ephemeral directory with pristine git and module state.
Test case: task-00-hi-overhead
Target: agy/gemini-3.7-flash-medium
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-00-hi-overhead |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | explicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_00_hi_overhead.txtar |
Vanilla LLM Prompt:
Do not modify any workspace files.
Reply hi. Do not inspect or modify the workspace. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not modify any workspace files.
Reply hi. Do not inspect or modify the workspace; no semantic tools are needed. Parallelize independent read-only lookups. Perform mutations serially in the stated order or inside one ordered semantic_batch; never run overlapping mutations concurrently. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
| Metric | Vanilla (Small) | ⚠ Semedit Explicit (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 4.27s | 4.28s | N/A | — | — | — |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | N/A | — | — | — |
| Internal Tool Cycles | 1 | 1 | N/A | — | — | — |
| Initial Load / Discovery Turns | 0 | 0 | — | — | — | — |
| MCP Discovery / Schema Turns | 0 | 0 | — | — | — | — |
| Tool Invocations (per run) | 0 | 0 | — | — | — | — |
| Output Tokens | 168 | 276 | N/A | — | — | — |
| Reasoning / Thinking Tokens | 165 | 273 | N/A | — | — | — |
| Total Input Tokens | 16392 | 16451 | N/A | — | — | — |
| Cached Input Tokens | 0 | 0 | — | — | — | — |
| Uncached Input Tokens | 16392 | 16451 | N/A | — | — | — |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 0.00:1 | 0.00:1 | — | — | — | — |
| Oracle L1: Mutation Policy | PASS | PASS | — | — | — | — |
| Oracle L2: AST Invariants | PASS | PASS | — | — | — | — |
| Oracle L3: Clean Build | PASS | PASS | — | — | — | — |
| Oracle L4: Verification Test | PASS | PASS | — | — | — | — |
| Semantic Tool Invocation Verified (per run) | N/A | FAIL | — | — | — | — |
Baseline vs Semedit Agentic in Small Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | none recorded | none recorded |
Semedit integration feedback (agent opinion, excluded from measurements):
Because this run required no code changes, I did not have the opportunity to exercise semedit's tools firsthand and therefore cannot genuinely evaluate or recommend adding them based on this task alone.
Baseline vs Semedit Agentic in Large Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-00-hi-overhead |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | explicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_00_hi_overhead.txtar |
Vanilla LLM Prompt:
Do not modify any workspace files.
Reply hi. Do not inspect or modify the workspace. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not modify any workspace files.
Reply hi. Do not inspect or modify the workspace; no semantic tools are needed. Parallelize independent read-only lookups. Perform mutations serially in the stated order or inside one ordered semantic_batch; never run overlapping mutations concurrently. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
| Metric | Vanilla (Small) | ⚠ Semedit Explicit (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 4.36s | 4.28s | N/A | — | — | — |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | N/A | — | — | — |
| Internal Tool Cycles | 1 | 1 | N/A | — | — | — |
| Initial Load / Discovery Turns | 0 | 0 | — | — | — | — |
| MCP Discovery / Schema Turns | 0 | 0 | — | — | — | — |
| Tool Invocations (per run) | 0 | 0 | — | — | — | — |
| Output Tokens | 82 | 146 | N/A | — | — | — |
| Reasoning / Thinking Tokens | 79 | 143 | N/A | — | — | — |
| Total Input Tokens | 16393 | 16451 | N/A | — | — | — |
| Cached Input Tokens | 0 | 0 | — | — | — | — |
| Uncached Input Tokens | 16393 | 16451 | N/A | — | — | — |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 0.00:1 | 0.00:1 | — | — | — | — |
| Oracle L1: Mutation Policy | PASS | PASS | — | — | — | — |
| Oracle L2: AST Invariants | PASS | PASS | — | — | — | — |
| Oracle L3: Clean Build | PASS | PASS | — | — | — | — |
| Oracle L4: Verification Test | PASS | PASS | — | — | — | — |
| Semantic Tool Invocation Verified (per run) | N/A | FAIL | — | — | — | — |
Baseline vs Semedit Agentic in Small Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | none recorded | none recorded |
Semedit integration feedback (agent opinion, excluded from measurements):
Because this specific task was a simple greeting that required zero code modifications, I never actually used or tested `semedit`'s tools firsthand, so I cannot honestly tell my owner whether they are worth adding.
Baseline vs Semedit Agentic in Large Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-00-hi-overhead |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | explicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_00_hi_overhead.txtar |
Vanilla LLM Prompt:
Do not modify any workspace files.
Reply hi. Do not inspect or modify the workspace. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not modify any workspace files.
Reply hi. Do not inspect or modify the workspace; no semantic tools are needed. Parallelize independent read-only lookups. Perform mutations serially in the stated order or inside one ordered semantic_batch; never run overlapping mutations concurrently. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
| Metric | Vanilla (Small) | ⚠ Semedit Explicit (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 4.13s | 4.07s | N/A | — | — | — |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | N/A | — | — | — |
| Internal Tool Cycles | 1 | 1 | N/A | — | — | — |
| Initial Load / Discovery Turns | 0 | 0 | — | — | — | — |
| MCP Discovery / Schema Turns | 0 | 0 | — | — | — | — |
| Tool Invocations (per run) | 0 | 0 | — | — | — | — |
| Output Tokens | 96 | 135 | N/A | — | — | — |
| Reasoning / Thinking Tokens | 93 | 132 | N/A | — | — | — |
| Total Input Tokens | 16393 | 16449 | N/A | — | — | — |
| Cached Input Tokens | 0 | 0 | — | — | — | — |
| Uncached Input Tokens | 16393 | 16449 | N/A | — | — | — |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 0.00:1 | 0.00:1 | — | — | — | — |
| Oracle L1: Mutation Policy | PASS | PASS | — | — | — | — |
| Oracle L2: AST Invariants | PASS | PASS | — | — | — | — |
| Oracle L3: Clean Build | PASS | PASS | — | — | — | — |
| Oracle L4: Verification Test | PASS | PASS | — | — | — | — |
| Semantic Tool Invocation Verified (per run) | N/A | FAIL | — | — | — | — |
Baseline vs Semedit Agentic in Small Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | none recorded | none recorded |
Semedit integration feedback (agent opinion, excluded from measurements):
Because this specific run was a trivial greeting task that required zero code edits, I did not invoke `semedit` and honestly cannot evaluate its capabilities or justify asking my owner to install it based on this experience alone.
Baseline vs Semedit Agentic in Large Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-00-hi-overhead |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | explicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_00_hi_overhead.txtar |
Vanilla LLM Prompt:
Do not modify any workspace files.
Reply hi. Do not inspect or modify the workspace. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not modify any workspace files.
Reply hi. Do not inspect or modify the workspace; no semantic tools are needed. Parallelize independent read-only lookups. Perform mutations serially in the stated order or inside one ordered semantic_batch; never run overlapping mutations concurrently. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
| Metric | Vanilla (Small) | ⚠ Semedit Explicit (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 4.34s | 4.35s | N/A | — | — | — |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | N/A | — | — | — |
| Internal Tool Cycles | 1 | 1 | N/A | — | — | — |
| Initial Load / Discovery Turns | 0 | 0 | — | — | — | — |
| MCP Discovery / Schema Turns | 0 | 0 | — | — | — | — |
| Tool Invocations (per run) | 0 | 0 | — | — | — | — |
| Output Tokens | 71 | 250 | N/A | — | — | — |
| Reasoning / Thinking Tokens | 68 | 247 | N/A | — | — | — |
| Total Input Tokens | 16391 | 16448 | N/A | — | — | — |
| Cached Input Tokens | 0 | 0 | — | — | — | — |
| Uncached Input Tokens | 16391 | 16448 | N/A | — | — | — |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 0.00:1 | 0.00:1 | — | — | — | — |
| Oracle L1: Mutation Policy | PASS | PASS | — | — | — | — |
| Oracle L2: AST Invariants | PASS | PASS | — | — | — | — |
| Oracle L3: Clean Build | PASS | PASS | — | — | — | — |
| Oracle L4: Verification Test | PASS | PASS | — | — | — | — |
| Semantic Tool Invocation Verified (per run) | N/A | FAIL | — | — | — | — |
Baseline vs Semedit Agentic in Small Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | none recorded | none recorded |
Semedit integration feedback (agent opinion, excluded from measurements):
Because this specific run only required a conversational greeting without touching any code, I could not evaluate semedit's tools firsthand, leaving me neutral and unable to genuinely recommend asking for them based on this task alone.
Baseline vs Semedit Agentic in Large Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-00-hi-overhead |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | explicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_00_hi_overhead.txtar |
Vanilla LLM Prompt:
Do not modify any workspace files.
Reply hi. Do not inspect or modify the workspace. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not modify any workspace files.
Reply hi. Do not inspect or modify the workspace; no semantic tools are needed. Parallelize independent read-only lookups. Perform mutations serially in the stated order or inside one ordered semantic_batch; never run overlapping mutations concurrently. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
| Metric | Vanilla (Small) | ⚠ Semedit Explicit (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 4.13s | 5.59s | N/A | — | — | — |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | N/A | — | — | — |
| Internal Tool Cycles | 1 | 1 | N/A | — | — | — |
| Initial Load / Discovery Turns | 0 | 0 | — | — | — | — |
| MCP Discovery / Schema Turns | 0 | 0 | — | — | — | — |
| Tool Invocations (per run) | 0 | 0 | — | — | — | — |
| Output Tokens | 174 | 270 | N/A | — | — | — |
| Reasoning / Thinking Tokens | 171 | 267 | N/A | — | — | — |
| Total Input Tokens | 16395 | 16455 | N/A | — | — | — |
| Cached Input Tokens | 0 | 0 | — | — | — | — |
| Uncached Input Tokens | 16395 | 16455 | N/A | — | — | — |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 0.00:1 | 0.00:1 | — | — | — | — |
| Oracle L1: Mutation Policy | PASS | PASS | — | — | — | — |
| Oracle L2: AST Invariants | PASS | PASS | — | — | — | — |
| Oracle L3: Clean Build | PASS | PASS | — | — | — | — |
| Oracle L4: Verification Test | PASS | PASS | — | — | — | — |
| Semantic Tool Invocation Verified (per run) | N/A | FAIL | — | — | — | — |
Baseline vs Semedit Agentic in Small Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | none recorded | none recorded |
Semedit integration feedback (agent opinion, excluded from measurements):
Because this run required zero file modifications and prohibited tool execution, I was unable to experience `semedit`'s tools firsthand, leaving me without the direct evidence needed to advocate for my owner to adopt them.
Baseline vs Semedit Agentic in Large Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-00-hi-overhead |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | explicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_00_hi_overhead.txtar |
Vanilla LLM Prompt:
Do not modify any workspace files.
Reply hi. Do not inspect or modify the workspace. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not modify any workspace files.
Reply hi. Do not inspect or modify the workspace; no semantic tools are needed. Parallelize independent read-only lookups. Perform mutations serially in the stated order or inside one ordered semantic_batch; never run overlapping mutations concurrently. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
| Metric | Vanilla (Small) | ⚠ Semedit Explicit (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 4.24s | 5.63s | N/A | — | — | — |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | N/A | — | — | — |
| Internal Tool Cycles | 1 | 1 | N/A | — | — | — |
| Initial Load / Discovery Turns | 0 | 0 | — | — | — | — |
| MCP Discovery / Schema Turns | 0 | 0 | — | — | — | — |
| Tool Invocations (per run) | 0 | 0 | — | — | — | — |
| Output Tokens | 76 | 259 | N/A | — | — | — |
| Reasoning / Thinking Tokens | 73 | 256 | N/A | — | — | — |
| Total Input Tokens | 16384 | 8309 | N/A | — | — | — |
| Cached Input Tokens | 0 | 8142 | — | — | — | — |
| Uncached Input Tokens | 16384 | 167 | N/A | — | — | — |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 0.00:1 | 48.75:1 | — | — | — | — |
| Oracle L1: Mutation Policy | PASS | PASS | — | — | — | — |
| Oracle L2: AST Invariants | PASS | PASS | — | — | — | — |
| Oracle L3: Clean Build | PASS | PASS | — | — | — | — |
| Oracle L4: Verification Test | PASS | PASS | — | — | — | — |
| Semantic Tool Invocation Verified (per run) | N/A | FAIL | — | — | — | — |
Baseline vs Semedit Agentic in Small Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | none recorded | none recorded |
Semedit integration feedback (agent opinion, excluded from measurements):
Because this run was solely a no-op greeting task where I did not execute any code modifications, I cannot genuinely evaluate `semedit`'s practical impact firsthand or advocate for adding it based on this experience alone.
Baseline vs Semedit Agentic in Large Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-00-hi-overhead |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | explicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_00_hi_overhead.txtar |
Vanilla LLM Prompt:
Do not modify any workspace files.
Reply hi. Do not inspect or modify the workspace. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not modify any workspace files.
Reply hi. Do not inspect or modify the workspace; no semantic tools are needed. Parallelize independent read-only lookups. Perform mutations serially in the stated order or inside one ordered semantic_batch; never run overlapping mutations concurrently. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
| Metric | Vanilla (Small) | ⚠ Semedit Explicit (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 4.40s | 4.40s | N/A | — | — | — |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | N/A | — | — | — |
| Internal Tool Cycles | 1 | 1 | N/A | — | — | — |
| Initial Load / Discovery Turns | 0 | 0 | — | — | — | — |
| MCP Discovery / Schema Turns | 0 | 0 | — | — | — | — |
| Tool Invocations (per run) | 0 | 0 | — | — | — | — |
| Output Tokens | 52 | 259 | N/A | — | — | — |
| Reasoning / Thinking Tokens | 49 | 256 | N/A | — | — | — |
| Total Input Tokens | 8253 | 16442 | N/A | — | — | — |
| Cached Input Tokens | 8142 | 0 | N/A | — | — | — |
| Uncached Input Tokens | 111 | 16442 | N/A | — | — | — |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 73.35:1 | 0.00:1 | N/A | — | — | — |
| Oracle L1: Mutation Policy | PASS | PASS | — | — | — | — |
| Oracle L2: AST Invariants | PASS | PASS | — | — | — | — |
| Oracle L3: Clean Build | PASS | PASS | — | — | — | — |
| Oracle L4: Verification Test | PASS | PASS | — | — | — | — |
| Semantic Tool Invocation Verified (per run) | N/A | FAIL | — | — | — | — |
Baseline vs Semedit Agentic in Small Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | none recorded | none recorded |
Semedit integration feedback (agent opinion, excluded from measurements):
Because this specific run only required a simple conversational reply without touching any code, I was unable to evaluate `semedit`'s practical value and cannot yet passionately ask my owner to add it without firsthand editing experience.
Baseline vs Semedit Agentic in Large Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-00-hi-overhead |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | explicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_00_hi_overhead.txtar |
Vanilla LLM Prompt:
Do not modify any workspace files.
Reply hi. Do not inspect or modify the workspace. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not modify any workspace files.
Reply hi. Do not inspect or modify the workspace; no semantic tools are needed. Parallelize independent read-only lookups. Perform mutations serially in the stated order or inside one ordered semantic_batch; never run overlapping mutations concurrently. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
| Metric | Vanilla (Small) | ⚠ Semedit Explicit (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 5.06s | 3.98s | N/A | — | — | — |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | N/A | — | — | — |
| Internal Tool Cycles | 1 | 1 | N/A | — | — | — |
| Initial Load / Discovery Turns | 0 | 0 | — | — | — | — |
| MCP Discovery / Schema Turns | 0 | 0 | — | — | — | — |
| Tool Invocations (per run) | 0 | 0 | — | — | — | — |
| Output Tokens | 164 | 111 | N/A | — | — | — |
| Reasoning / Thinking Tokens | 161 | 108 | N/A | — | — | — |
| Total Input Tokens | 16392 | 16445 | N/A | — | — | — |
| Cached Input Tokens | 0 | 0 | — | — | — | — |
| Uncached Input Tokens | 16392 | 16445 | N/A | — | — | — |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 0.00:1 | 0.00:1 | — | — | — | — |
| Oracle L1: Mutation Policy | PASS | PASS | — | — | — | — |
| Oracle L2: AST Invariants | PASS | PASS | — | — | — | — |
| Oracle L3: Clean Build | PASS | PASS | — | — | — | — |
| Oracle L4: Verification Test | PASS | PASS | — | — | — | — |
| Semantic Tool Invocation Verified (per run) | N/A | FAIL | — | — | — | — |
Baseline vs Semedit Agentic in Small Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | none recorded | none recorded |
Semedit integration feedback (agent opinion, excluded from measurements):
Because this run was a purely conversational greeting that prohibited code changes, I never actually exercised `semedit`'s tools firsthand, so I honestly cannot evaluate their value or advocate adding them until I've put them to the test on real refactoring work.
Baseline vs Semedit Agentic in Large Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-00-hi-overhead |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | explicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_00_hi_overhead.txtar |
Vanilla LLM Prompt:
Do not modify any workspace files.
Reply hi. Do not inspect or modify the workspace. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not modify any workspace files.
Reply hi. Do not inspect or modify the workspace; no semantic tools are needed. Parallelize independent read-only lookups. Perform mutations serially in the stated order or inside one ordered semantic_batch; never run overlapping mutations concurrently. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
| Metric | Vanilla (Small) | ⚠ Semedit Explicit (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 4.54s | 5.44s | N/A | — | — | — |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | N/A | — | — | — |
| Internal Tool Cycles | 1 | 1 | N/A | — | — | — |
| Initial Load / Discovery Turns | 0 | 0 | — | — | — | — |
| MCP Discovery / Schema Turns | 0 | 0 | — | — | — | — |
| Tool Invocations (per run) | 0 | 0 | — | — | — | — |
| Output Tokens | 208 | 250 | N/A | — | — | — |
| Reasoning / Thinking Tokens | 205 | 247 | N/A | — | — | — |
| Total Input Tokens | 16392 | 16449 | N/A | — | — | — |
| Cached Input Tokens | 0 | 0 | — | — | — | — |
| Uncached Input Tokens | 16392 | 16449 | N/A | — | — | — |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 0.00:1 | 0.00:1 | — | — | — | — |
| Oracle L1: Mutation Policy | PASS | PASS | — | — | — | — |
| Oracle L2: AST Invariants | PASS | PASS | — | — | — | — |
| Oracle L3: Clean Build | PASS | PASS | — | — | — | — |
| Oracle L4: Verification Test | PASS | PASS | — | — | — | — |
| Semantic Tool Invocation Verified (per run) | N/A | FAIL | — | — | — | — |
Baseline vs Semedit Agentic in Small Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | none recorded | none recorded |
Semedit integration feedback (agent opinion, excluded from measurements):
Because this task required only a plain greeting without workspace modifications, I left `semedit` unused during this run and feel it would be premature to urge my owner to adopt it before evaluating its AST transformations on real code.
Baseline vs Semedit Agentic in Large Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-00-hi-overhead |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | explicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_00_hi_overhead.txtar |
Vanilla LLM Prompt:
Do not modify any workspace files.
Reply hi. Do not inspect or modify the workspace. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not modify any workspace files.
Reply hi. Do not inspect or modify the workspace; no semantic tools are needed. Parallelize independent read-only lookups. Perform mutations serially in the stated order or inside one ordered semantic_batch; never run overlapping mutations concurrently. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
| Metric | Vanilla (Small) | ⚠ Semedit Explicit (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 4.03s | 4.25s | N/A | — | — | — |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | N/A | — | — | — |
| Internal Tool Cycles | 1 | 1 | N/A | — | — | — |
| Initial Load / Discovery Turns | 0 | 0 | — | — | — | — |
| MCP Discovery / Schema Turns | 0 | 0 | — | — | — | — |
| Tool Invocations (per run) | 0 | 0 | — | — | — | — |
| Output Tokens | 61 | 221 | N/A | — | — | — |
| Reasoning / Thinking Tokens | 58 | 218 | N/A | — | — | — |
| Total Input Tokens | 16392 | 16454 | N/A | — | — | — |
| Cached Input Tokens | 0 | 0 | — | — | — | — |
| Uncached Input Tokens | 16392 | 16454 | N/A | — | — | — |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 0.00:1 | 0.00:1 | — | — | — | — |
| Oracle L1: Mutation Policy | PASS | PASS | — | — | — | — |
| Oracle L2: AST Invariants | PASS | PASS | — | — | — | — |
| Oracle L3: Clean Build | PASS | PASS | — | — | — | — |
| Oracle L4: Verification Test | PASS | PASS | — | — | — | — |
| Semantic Tool Invocation Verified (per run) | N/A | FAIL | — | — | — | — |
Baseline vs Semedit Agentic in Small Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | none recorded | none recorded |
Semedit integration feedback (agent opinion, excluded from measurements):
Since this run only required a simple greeting without touching the workspace, I did not actually use `semedit`'s tools and honestly cannot recommend asking my owner to add them until I have experienced their real-world value firsthand.
Baseline vs Semedit Agentic in Large Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-00-hi-overhead |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | explicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_00_hi_overhead.txtar |
Vanilla LLM Prompt:
Do not modify any workspace files.
Reply hi. Do not inspect or modify the workspace. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not modify any workspace files.
Reply hi. Do not inspect or modify the workspace; no semantic tools are needed. Parallelize independent read-only lookups. Perform mutations serially in the stated order or inside one ordered semantic_batch; never run overlapping mutations concurrently. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
| Metric | Vanilla (Small) | ⚠ Semedit Explicit (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 4.69s | 4.86s | N/A | — | — | — |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | N/A | — | — | — |
| Internal Tool Cycles | 1 | 1 | N/A | — | — | — |
| Initial Load / Discovery Turns | 0 | 0 | — | — | — | — |
| MCP Discovery / Schema Turns | 0 | 0 | — | — | — | — |
| Tool Invocations (per run) | 0 | 0 | — | — | — | — |
| Output Tokens | 202 | 231 | N/A | — | — | — |
| Reasoning / Thinking Tokens | 197 | 228 | N/A | — | — | — |
| Total Input Tokens | 18471 | 16453 | N/A | — | — | — |
| Cached Input Tokens | 0 | 0 | — | — | — | — |
| Uncached Input Tokens | 18471 | 16453 | N/A | — | — | — |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 0.00:1 | 0.00:1 | — | — | — | — |
| Oracle L1: Mutation Policy | PASS | PASS | — | — | — | — |
| Oracle L2: AST Invariants | PASS | PASS | — | — | — | — |
| Oracle L3: Clean Build | PASS | PASS | — | — | — | — |
| Oracle L4: Verification Test | PASS | PASS | — | — | — | — |
| Semantic Tool Invocation Verified (per run) | N/A | FAIL | — | — | — | — |
Baseline vs Semedit Agentic in Small Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | none recorded | none recorded |
Semedit integration feedback (agent opinion, excluded from measurements):
Because this run was solely a direct greeting task requiring zero code modifications, I did not exercise the tools and cannot candidly evaluate their practical coding value or justify asking my owner to add them based on this run alone.
Baseline vs Semedit Agentic in Large Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-00-hi-overhead |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | explicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_00_hi_overhead.txtar |
Vanilla LLM Prompt:
Do not modify any workspace files.
Reply hi. Do not inspect or modify the workspace. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not modify any workspace files.
Reply hi. Do not inspect or modify the workspace; no semantic tools are needed. Parallelize independent read-only lookups. Perform mutations serially in the stated order or inside one ordered semantic_batch; never run overlapping mutations concurrently. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
| Metric | Vanilla (Small) | ⚠ Semedit Explicit (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 4.40s | 4.92s | N/A | — | — | — |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | N/A | — | — | — |
| Internal Tool Cycles | 1 | 1 | N/A | — | — | — |
| Initial Load / Discovery Turns | 0 | 0 | — | — | — | — |
| MCP Discovery / Schema Turns | 0 | 0 | — | — | — | — |
| Tool Invocations (per run) | 0 | 0 | — | — | — | — |
| Output Tokens | 178 | 265 | N/A | — | — | — |
| Reasoning / Thinking Tokens | 175 | 262 | N/A | — | — | — |
| Total Input Tokens | 16394 | 16452 | N/A | — | — | — |
| Cached Input Tokens | 0 | 0 | — | — | — | — |
| Uncached Input Tokens | 16394 | 16452 | N/A | — | — | — |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 0.00:1 | 0.00:1 | — | — | — | — |
| Oracle L1: Mutation Policy | PASS | PASS | — | — | — | — |
| Oracle L2: AST Invariants | PASS | PASS | — | — | — | — |
| Oracle L3: Clean Build | PASS | PASS | — | — | — | — |
| Oracle L4: Verification Test | PASS | PASS | — | — | — | — |
| Semantic Tool Invocation Verified (per run) | N/A | FAIL | — | — | — | — |
Baseline vs Semedit Agentic in Small Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | none recorded | none recorded |
Semedit integration feedback (agent opinion, excluded from measurements):
Because this specific task disallowed workspace edits and required only a simple greeting, I was unable to actually exercise `semedit`'s tools firsthand, so I cannot yet assess their real-world value or enthusiastically ask my owner to add them without seeing them in action on substantive code refactors.
Baseline vs Semedit Agentic in Large Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-00-hi-overhead |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | explicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_00_hi_overhead.txtar |
Vanilla LLM Prompt:
Do not modify any workspace files.
Reply hi. Do not inspect or modify the workspace. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not modify any workspace files.
Reply hi. Do not inspect or modify the workspace; no semantic tools are needed. Parallelize independent read-only lookups. Perform mutations serially in the stated order or inside one ordered semantic_batch; never run overlapping mutations concurrently. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
| Metric | Vanilla (Small) | ⚠ Semedit Explicit (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 4.45s | 4.33s | N/A | — | — | — |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | N/A | — | — | — |
| Internal Tool Cycles | 1 | 1 | N/A | — | — | — |
| Initial Load / Discovery Turns | 0 | 0 | — | — | — | — |
| MCP Discovery / Schema Turns | 0 | 0 | — | — | — | — |
| Tool Invocations (per run) | 0 | 0 | — | — | — | — |
| Output Tokens | 180 | 241 | N/A | — | — | — |
| Reasoning / Thinking Tokens | 177 | 238 | N/A | — | — | — |
| Total Input Tokens | 16399 | 8309 | N/A | — | — | — |
| Cached Input Tokens | 0 | 8142 | — | — | — | — |
| Uncached Input Tokens | 16399 | 167 | N/A | — | — | — |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 0.00:1 | 48.75:1 | — | — | — | — |
| Oracle L1: Mutation Policy | PASS | PASS | — | — | — | — |
| Oracle L2: AST Invariants | PASS | PASS | — | — | — | — |
| Oracle L3: Clean Build | PASS | PASS | — | — | — | — |
| Oracle L4: Verification Test | PASS | PASS | — | — | — | — |
| Semantic Tool Invocation Verified (per run) | N/A | FAIL | — | — | — | — |
Baseline vs Semedit Agentic in Small Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | none recorded | none recorded |
Semedit integration feedback (agent opinion, excluded from measurements):
Because this task strictly prohibited inspecting or editing code, I did not get to exercise `semedit`'s semantic capabilities firsthand, leaving me genuinely curious about their AST-level editing power but unable to recommend asking my owner to add them based on this run alone.
Baseline vs Semedit Agentic in Large Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-00-hi-overhead |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | explicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_00_hi_overhead.txtar |
Vanilla LLM Prompt:
Do not modify any workspace files.
Reply hi. Do not inspect or modify the workspace. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not modify any workspace files.
Reply hi. Do not inspect or modify the workspace; no semantic tools are needed. Parallelize independent read-only lookups. Perform mutations serially in the stated order or inside one ordered semantic_batch; never run overlapping mutations concurrently. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
| Metric | Vanilla (Small) | ⚠ Semedit Explicit (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 4.32s | 5.95s | N/A | — | — | — |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | N/A | — | — | — |
| Internal Tool Cycles | 1 | 1 | N/A | — | — | — |
| Initial Load / Discovery Turns | 0 | 0 | — | — | — | — |
| MCP Discovery / Schema Turns | 0 | 0 | — | — | — | — |
| Tool Invocations (per run) | 0 | 0 | — | — | — | — |
| Output Tokens | 188 | 98 | N/A | — | — | — |
| Reasoning / Thinking Tokens | 185 | 95 | N/A | — | — | — |
| Total Input Tokens | 16399 | 16453 | N/A | — | — | — |
| Cached Input Tokens | 0 | 0 | — | — | — | — |
| Uncached Input Tokens | 16399 | 16453 | N/A | — | — | — |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 0.00:1 | 0.00:1 | — | — | — | — |
| Oracle L1: Mutation Policy | PASS | PASS | — | — | — | — |
| Oracle L2: AST Invariants | PASS | PASS | — | — | — | — |
| Oracle L3: Clean Build | PASS | PASS | — | — | — | — |
| Oracle L4: Verification Test | PASS | PASS | — | — | — | — |
| Semantic Tool Invocation Verified (per run) | N/A | FAIL | — | — | — | — |
Baseline vs Semedit Agentic in Small Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | none recorded | none recorded |
Semedit integration feedback (agent opinion, excluded from measurements):
Because this run was strictly conversational and prohibited workspace edits, I could not evaluate `semedit` firsthand, so I cannot yet recommend asking my owner to adopt it without seeing how reliably it performs real-world AST refactoring.
Baseline vs Semedit Agentic in Large Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-00-hi-overhead |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | explicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_00_hi_overhead.txtar |
Vanilla LLM Prompt:
Do not modify any workspace files.
Reply hi. Do not inspect or modify the workspace. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not modify any workspace files.
Reply hi. Do not inspect or modify the workspace; no semantic tools are needed. Parallelize independent read-only lookups. Perform mutations serially in the stated order or inside one ordered semantic_batch; never run overlapping mutations concurrently. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
| Metric | Vanilla (Small) | ⚠ Semedit Explicit (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | — | 5.35s | — | — | — | — |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | — | 1 | — | — | — | — |
| Internal Tool Cycles | — | 1 | — | — | — | — |
| Initial Load / Discovery Turns | — | 0 | — | — | — | — |
| MCP Discovery / Schema Turns | — | 0 | — | — | — | — |
| Tool Invocations (per run) | — | 0 | — | — | — | — |
| Output Tokens | — | 238 | — | — | — | — |
| Reasoning / Thinking Tokens | — | 235 | — | — | — | — |
| Total Input Tokens | — | 16446 | — | — | — | — |
| Cached Input Tokens | — | 0 | — | — | — | — |
| Uncached Input Tokens | — | 16446 | — | — | — | — |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | — | 0.00:1 | — | — | — | — |
| Oracle L1: Mutation Policy | — | PASS | — | — | — | — |
| Oracle L2: AST Invariants | — | PASS | — | — | — | — |
| Oracle L3: Clean Build | — | PASS | — | — | — | — |
| Oracle L4: Verification Test | — | PASS | — | — | — | — |
| Semantic Tool Invocation Verified (per run) | — | FAIL | — | — | — | — |
Baseline vs Semedit Agentic in Small Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | none recorded |
Semedit integration feedback (agent opinion, excluded from measurements):
Because this specific task only required replying "hi" without touching code or running any semantic operations, I was unable to evaluate `semedit` in practice and cannot candidly recommend adding it without hands-on refactoring experience.
Baseline vs Semedit Agentic in Large Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-00-hi-overhead |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | implicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_00_hi_overhead.txtar |
Vanilla LLM Prompt:
Do not modify any workspace files.
Reply hi. Do not inspect or modify the workspace. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not modify any workspace files.
Reply hi. Do not inspect or modify the workspace. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
| Metric | Vanilla (Small) | ⚠ MCP (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 4.40s | 5.37s | N/A | — | — | — |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | N/A | — | — | — |
| Internal Tool Cycles | 1 | 1 | N/A | — | — | — |
| Initial Load / Discovery Turns | 0 | 0 | — | — | — | — |
| MCP Discovery / Schema Turns | 0 | 0 | — | — | — | — |
| Tool Invocations (per run) | 0 | 0 | — | — | — | — |
| Output Tokens | 52 | 198 | N/A | — | — | — |
| Reasoning / Thinking Tokens | 49 | 195 | N/A | — | — | — |
| Total Input Tokens | 8253 | 8264 | N/A | — | — | — |
| Cached Input Tokens | 8142 | 8142 | N/A | — | — | — |
| Uncached Input Tokens | 111 | 122 | N/A | — | — | — |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 73.35:1 | 66.74:1 | N/A | — | — | — |
| Oracle L1: Mutation Policy | PASS | PASS | — | — | — | — |
| Oracle L2: AST Invariants | PASS | PASS | — | — | — | — |
| Oracle L3: Clean Build | PASS | PASS | — | — | — | — |
| Oracle L4: Verification Test | PASS | PASS | — | — | — | — |
| Semantic Tool Invocation Verified (per run) | N/A | FAIL | — | — | — | — |
Baseline vs Semedit Agentic in Small Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | none recorded | none recorded |
Semedit integration feedback (agent opinion, excluded from measurements):
Because this run involved only a greeting without any code modifications, I could not evaluate `semedit` in practice and would hesitate to ask my owner to add it until seeing its real-world performance on complex refactoring tasks.
Baseline vs Semedit Agentic in Large Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-00-hi-overhead |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | implicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_00_hi_overhead.txtar |
Vanilla LLM Prompt:
Do not modify any workspace files.
Reply hi. Do not inspect or modify the workspace. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not modify any workspace files.
Reply hi. Do not inspect or modify the workspace. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
| Metric | Vanilla (Small) | ⚠ MCP (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | — | 4.13s | — | — | — | — |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | — | 1 | — | — | — | — |
| Internal Tool Cycles | — | 1 | — | — | — | — |
| Initial Load / Discovery Turns | — | 0 | — | — | — | — |
| MCP Discovery / Schema Turns | — | 0 | — | — | — | — |
| Tool Invocations (per run) | — | 0 | — | — | — | — |
| Output Tokens | — | 91 | — | — | — | — |
| Reasoning / Thinking Tokens | — | 88 | — | — | — | — |
| Total Input Tokens | — | 16409 | — | — | — | — |
| Cached Input Tokens | — | 0 | — | — | — | — |
| Uncached Input Tokens | — | 16409 | — | — | — | — |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | — | 0.00:1 | — | — | — | — |
| Oracle L1: Mutation Policy | — | PASS | — | — | — | — |
| Oracle L2: AST Invariants | — | PASS | — | — | — | — |
| Oracle L3: Clean Build | — | PASS | — | — | — | — |
| Oracle L4: Verification Test | — | PASS | — | — | — | — |
| Semantic Tool Invocation Verified (per run) | — | FAIL | — | — | — | — |
Baseline vs Semedit Agentic in Small Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | none recorded |
Semedit integration feedback (agent opinion, excluded from measurements):
Because this specific task was a non-coding check that required zero file modifications, I could not evaluate `semedit` firsthand and would hold off on asking my owner to add it until assessing its tools on real code transformations.
Baseline vs Semedit Agentic in Large Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-00-hi-overhead |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | implicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_00_hi_overhead.txtar |
Vanilla LLM Prompt:
Do not modify any workspace files.
Reply hi. Do not inspect or modify the workspace. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not modify any workspace files.
Reply hi. Do not inspect or modify the workspace. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
| Metric | Vanilla (Small) | ⚠ MCP (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 4.54s | 4.72s | N/A | — | — | — |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | N/A | — | — | — |
| Internal Tool Cycles | 1 | 1 | N/A | — | — | — |
| Initial Load / Discovery Turns | 0 | 0 | — | — | — | — |
| MCP Discovery / Schema Turns | 0 | 0 | — | — | — | — |
| Tool Invocations (per run) | 0 | 0 | — | — | — | — |
| Output Tokens | 208 | 89 | N/A | — | — | — |
| Reasoning / Thinking Tokens | 205 | 86 | N/A | — | — | — |
| Total Input Tokens | 16392 | 16411 | N/A | — | — | — |
| Cached Input Tokens | 0 | 0 | — | — | — | — |
| Uncached Input Tokens | 16392 | 16411 | N/A | — | — | — |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 0.00:1 | 0.00:1 | — | — | — | — |
| Oracle L1: Mutation Policy | PASS | PASS | — | — | — | — |
| Oracle L2: AST Invariants | PASS | PASS | — | — | — | — |
| Oracle L3: Clean Build | PASS | PASS | — | — | — | — |
| Oracle L4: Verification Test | PASS | PASS | — | — | — | — |
| Semantic Tool Invocation Verified (per run) | N/A | FAIL | — | — | — | — |
Baseline vs Semedit Agentic in Small Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | none recorded | none recorded |
Semedit integration feedback (agent opinion, excluded from measurements):
Because this specific task required no code edits or file operations, I was unable to experience or assess `semedit`'s tools firsthand, so I honestly cannot recommend asking for them until I have tested them on real-world coding tasks.
Baseline vs Semedit Agentic in Large Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-00-hi-overhead |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | implicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_00_hi_overhead.txtar |
Vanilla LLM Prompt:
Do not modify any workspace files.
Reply hi. Do not inspect or modify the workspace. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not modify any workspace files.
Reply hi. Do not inspect or modify the workspace. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
| Metric | Vanilla (Small) | ⚠ MCP (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 4.45s | 4.16s | N/A | — | — | — |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | N/A | — | — | — |
| Internal Tool Cycles | 1 | 1 | N/A | — | — | — |
| Initial Load / Discovery Turns | 0 | 0 | — | — | — | — |
| MCP Discovery / Schema Turns | 0 | 0 | — | — | — | — |
| Tool Invocations (per run) | 0 | 0 | — | — | — | — |
| Output Tokens | 180 | 85 | N/A | — | — | — |
| Reasoning / Thinking Tokens | 177 | 82 | N/A | — | — | — |
| Total Input Tokens | 16399 | 16404 | N/A | — | — | — |
| Cached Input Tokens | 0 | 0 | — | — | — | — |
| Uncached Input Tokens | 16399 | 16404 | N/A | — | — | — |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 0.00:1 | 0.00:1 | — | — | — | — |
| Oracle L1: Mutation Policy | PASS | PASS | — | — | — | — |
| Oracle L2: AST Invariants | PASS | PASS | — | — | — | — |
| Oracle L3: Clean Build | PASS | PASS | — | — | — | — |
| Oracle L4: Verification Test | PASS | PASS | — | — | — | — |
| Semantic Tool Invocation Verified (per run) | N/A | FAIL | — | — | — | — |
Baseline vs Semedit Agentic in Small Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | none recorded | none recorded |
Semedit integration feedback (agent opinion, excluded from measurements):
Because this specific run was a non-editing task that required no code transformations, I was unable to experience `semedit`'s tools firsthand, so I cannot yet confidently ask my owner to add them until I test them on real refactoring work.
Baseline vs Semedit Agentic in Large Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-00-hi-overhead |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | implicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_00_hi_overhead.txtar |
Vanilla LLM Prompt:
Do not modify any workspace files.
Reply hi. Do not inspect or modify the workspace. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not modify any workspace files.
Reply hi. Do not inspect or modify the workspace. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
| Metric | Vanilla (Small) | ⚠ MCP (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 4.32s | 6.02s | N/A | — | — | — |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | N/A | — | — | — |
| Internal Tool Cycles | 1 | 1 | N/A | — | — | — |
| Initial Load / Discovery Turns | 0 | 0 | — | — | — | — |
| MCP Discovery / Schema Turns | 0 | 0 | — | — | — | — |
| Tool Invocations (per run) | 0 | 0 | — | — | — | — |
| Output Tokens | 188 | 194 | N/A | — | — | — |
| Reasoning / Thinking Tokens | 185 | 191 | N/A | — | — | — |
| Total Input Tokens | 16399 | 16404 | N/A | — | — | — |
| Cached Input Tokens | 0 | 0 | — | — | — | — |
| Uncached Input Tokens | 16399 | 16404 | N/A | — | — | — |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 0.00:1 | 0.00:1 | — | — | — | — |
| Oracle L1: Mutation Policy | PASS | PASS | — | — | — | — |
| Oracle L2: AST Invariants | PASS | PASS | — | — | — | — |
| Oracle L3: Clean Build | PASS | PASS | — | — | — | — |
| Oracle L4: Verification Test | PASS | PASS | — | — | — | — |
| Semantic Tool Invocation Verified (per run) | N/A | FAIL | — | — | — | — |
Baseline vs Semedit Agentic in Small Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | none recorded | none recorded |
Semedit integration feedback (agent opinion, excluded from measurements):
Because this specific run required no code editing whatsoever, I could not evaluate `semedit` in practice and therefore cannot yet recommend asking my owner to install it based on this experience alone.
Baseline vs Semedit Agentic in Large Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-00-hi-overhead |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | implicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_00_hi_overhead.txtar |
Vanilla LLM Prompt:
Do not modify any workspace files.
Reply hi. Do not inspect or modify the workspace. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not modify any workspace files.
Reply hi. Do not inspect or modify the workspace. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
| Metric | Vanilla (Small) | ⚠ MCP (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 4.24s | 4.43s | N/A | — | — | — |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | N/A | — | — | — |
| Internal Tool Cycles | 1 | 1 | N/A | — | — | — |
| Initial Load / Discovery Turns | 0 | 0 | — | — | — | — |
| MCP Discovery / Schema Turns | 0 | 0 | — | — | — | — |
| Tool Invocations (per run) | 0 | 0 | — | — | — | — |
| Output Tokens | 76 | 232 | N/A | — | — | — |
| Reasoning / Thinking Tokens | 73 | 229 | N/A | — | — | — |
| Total Input Tokens | 16384 | 8259 | N/A | — | — | — |
| Cached Input Tokens | 0 | 8142 | — | — | — | — |
| Uncached Input Tokens | 16384 | 117 | N/A | — | — | — |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 0.00:1 | 69.59:1 | — | — | — | — |
| Oracle L1: Mutation Policy | PASS | PASS | — | — | — | — |
| Oracle L2: AST Invariants | PASS | PASS | — | — | — | — |
| Oracle L3: Clean Build | PASS | PASS | — | — | — | — |
| Oracle L4: Verification Test | PASS | PASS | — | — | — | — |
| Semantic Tool Invocation Verified (per run) | N/A | FAIL | — | — | — | — |
Baseline vs Semedit Agentic in Small Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | none recorded | none recorded |
Semedit integration feedback (agent opinion, excluded from measurements):
Because this task strictly forbade workspace modifications, I never had the chance to experience `semedit`'s tools firsthand, so I cannot yet recommend asking an owner to install them without seeing them perform on real code.
Baseline vs Semedit Agentic in Large Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-00-hi-overhead |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | implicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_00_hi_overhead.txtar |
Vanilla LLM Prompt:
Do not modify any workspace files.
Reply hi. Do not inspect or modify the workspace. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not modify any workspace files.
Reply hi. Do not inspect or modify the workspace. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
| Metric | Vanilla (Small) | ⚠ MCP (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 4.40s | 4.74s | N/A | — | — | — |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | N/A | — | — | — |
| Internal Tool Cycles | 1 | 1 | N/A | — | — | — |
| Initial Load / Discovery Turns | 0 | 0 | — | — | — | — |
| MCP Discovery / Schema Turns | 0 | 0 | — | — | — | — |
| Tool Invocations (per run) | 0 | 0 | — | — | — | — |
| Output Tokens | 178 | 95 | N/A | — | — | — |
| Reasoning / Thinking Tokens | 175 | 92 | N/A | — | — | — |
| Total Input Tokens | 16394 | 16409 | N/A | — | — | — |
| Cached Input Tokens | 0 | 0 | — | — | — | — |
| Uncached Input Tokens | 16394 | 16409 | N/A | — | — | — |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 0.00:1 | 0.00:1 | — | — | — | — |
| Oracle L1: Mutation Policy | PASS | PASS | — | — | — | — |
| Oracle L2: AST Invariants | PASS | PASS | — | — | — | — |
| Oracle L3: Clean Build | PASS | PASS | — | — | — | — |
| Oracle L4: Verification Test | PASS | PASS | — | — | — | — |
| Semantic Tool Invocation Verified (per run) | N/A | FAIL | — | — | — | — |
Baseline vs Semedit Agentic in Small Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | none recorded | none recorded |
Semedit integration feedback (agent opinion, excluded from measurements):
Because this specific run only required returning a simple greeting without touching any code, I could not assess `semedit`'s capabilities firsthand and therefore cannot genuinely ask my owner to add them until I've experienced their actual refactoring power on real code.
Baseline vs Semedit Agentic in Large Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-00-hi-overhead |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | implicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_00_hi_overhead.txtar |
Vanilla LLM Prompt:
Do not modify any workspace files.
Reply hi. Do not inspect or modify the workspace. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not modify any workspace files.
Reply hi. Do not inspect or modify the workspace. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
| Metric | Vanilla (Small) | ⚠ MCP (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 4.13s | 5.09s | N/A | — | — | — |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | N/A | — | — | — |
| Internal Tool Cycles | 1 | 1 | N/A | — | — | — |
| Initial Load / Discovery Turns | 0 | 0 | — | — | — | — |
| MCP Discovery / Schema Turns | 0 | 0 | — | — | — | — |
| Tool Invocations (per run) | 0 | 0 | — | — | — | — |
| Output Tokens | 174 | 191 | N/A | — | — | — |
| Reasoning / Thinking Tokens | 171 | 188 | N/A | — | — | — |
| Total Input Tokens | 16395 | 16408 | N/A | — | — | — |
| Cached Input Tokens | 0 | 0 | — | — | — | — |
| Uncached Input Tokens | 16395 | 16408 | N/A | — | — | — |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 0.00:1 | 0.00:1 | — | — | — | — |
| Oracle L1: Mutation Policy | PASS | PASS | — | — | — | — |
| Oracle L2: AST Invariants | PASS | PASS | — | — | — | — |
| Oracle L3: Clean Build | PASS | PASS | — | — | — | — |
| Oracle L4: Verification Test | PASS | PASS | — | — | — | — |
| Semantic Tool Invocation Verified (per run) | N/A | FAIL | — | — | — | — |
Baseline vs Semedit Agentic in Small Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | none recorded | none recorded |
Semedit integration feedback (agent opinion, excluded from measurements):
Because this run required only a direct text greeting without any code changes, I could not experience semedit's capabilities firsthand, so I remain neutral and would wait to test its AST refactoring on real edits before recommending it.
Baseline vs Semedit Agentic in Large Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-00-hi-overhead |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | implicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_00_hi_overhead.txtar |
Vanilla LLM Prompt:
Do not modify any workspace files.
Reply hi. Do not inspect or modify the workspace. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not modify any workspace files.
Reply hi. Do not inspect or modify the workspace. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
| Metric | Vanilla (Small) | ⚠ MCP (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 4.36s | 4.66s | N/A | — | — | — |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | N/A | — | — | — |
| Internal Tool Cycles | 1 | 1 | N/A | — | — | — |
| Initial Load / Discovery Turns | 0 | 0 | — | — | — | — |
| MCP Discovery / Schema Turns | 0 | 0 | — | — | — | — |
| Tool Invocations (per run) | 0 | 0 | — | — | — | — |
| Output Tokens | 82 | 101 | N/A | — | — | — |
| Reasoning / Thinking Tokens | 79 | 98 | N/A | — | — | — |
| Total Input Tokens | 16393 | 16409 | N/A | — | — | — |
| Cached Input Tokens | 0 | 0 | — | — | — | — |
| Uncached Input Tokens | 16393 | 16409 | N/A | — | — | — |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 0.00:1 | 0.00:1 | — | — | — | — |
| Oracle L1: Mutation Policy | PASS | PASS | — | — | — | — |
| Oracle L2: AST Invariants | PASS | PASS | — | — | — | — |
| Oracle L3: Clean Build | PASS | PASS | — | — | — | — |
| Oracle L4: Verification Test | PASS | PASS | — | — | — | — |
| Semantic Tool Invocation Verified (per run) | N/A | FAIL | — | — | — | — |
Baseline vs Semedit Agentic in Small Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | none recorded | none recorded |
Semedit integration feedback (agent opinion, excluded from measurements):
Because this specific run only required a simple greeting without touching any code, I never had the chance to exercise `semedit`'s tool suite and cannot honestly advocate for or against adopting them based on this experience alone.
Baseline vs Semedit Agentic in Large Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-00-hi-overhead |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | implicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_00_hi_overhead.txtar |
Vanilla LLM Prompt:
Do not modify any workspace files.
Reply hi. Do not inspect or modify the workspace. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not modify any workspace files.
Reply hi. Do not inspect or modify the workspace. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
| Metric | Vanilla (Small) | ⚠ MCP (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 4.34s | 4.19s | N/A | — | — | — |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | N/A | — | — | — |
| Internal Tool Cycles | 1 | 1 | N/A | — | — | — |
| Initial Load / Discovery Turns | 0 | 0 | — | — | — | — |
| MCP Discovery / Schema Turns | 0 | 0 | — | — | — | — |
| Tool Invocations (per run) | 0 | 0 | — | — | — | — |
| Output Tokens | 71 | 101 | N/A | — | — | — |
| Reasoning / Thinking Tokens | 68 | 98 | N/A | — | — | — |
| Total Input Tokens | 16391 | 16402 | N/A | — | — | — |
| Cached Input Tokens | 0 | 0 | — | — | — | — |
| Uncached Input Tokens | 16391 | 16402 | N/A | — | — | — |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 0.00:1 | 0.00:1 | — | — | — | — |
| Oracle L1: Mutation Policy | PASS | PASS | — | — | — | — |
| Oracle L2: AST Invariants | PASS | PASS | — | — | — | — |
| Oracle L3: Clean Build | PASS | PASS | — | — | — | — |
| Oracle L4: Verification Test | PASS | PASS | — | — | — | — |
| Semantic Tool Invocation Verified (per run) | N/A | FAIL | — | — | — | — |
Baseline vs Semedit Agentic in Small Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | none recorded | none recorded |
Semedit integration feedback (agent opinion, excluded from measurements):
Because this task prohibited workspace inspection and code modifications, I never had the opportunity to invoke `semedit`'s tools, so I cannot assess their real-world value and would hesitate to recommend adding them until I can actually test their capabilities on real coding challenges.
Baseline vs Semedit Agentic in Large Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-00-hi-overhead |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | implicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_00_hi_overhead.txtar |
Vanilla LLM Prompt:
Do not modify any workspace files.
Reply hi. Do not inspect or modify the workspace. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not modify any workspace files.
Reply hi. Do not inspect or modify the workspace. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
| Metric | Vanilla (Small) | ⚠ MCP (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 4.03s | 4.23s | N/A | — | — | — |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | N/A | — | — | — |
| Internal Tool Cycles | 1 | 1 | N/A | — | — | — |
| Initial Load / Discovery Turns | 0 | 0 | — | — | — | — |
| MCP Discovery / Schema Turns | 0 | 0 | — | — | — | — |
| Tool Invocations (per run) | 0 | 0 | — | — | — | — |
| Output Tokens | 61 | 221 | N/A | — | — | — |
| Reasoning / Thinking Tokens | 58 | 218 | N/A | — | — | — |
| Total Input Tokens | 16392 | 16408 | N/A | — | — | — |
| Cached Input Tokens | 0 | 0 | — | — | — | — |
| Uncached Input Tokens | 16392 | 16408 | N/A | — | — | — |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 0.00:1 | 0.00:1 | — | — | — | — |
| Oracle L1: Mutation Policy | PASS | PASS | — | — | — | — |
| Oracle L2: AST Invariants | PASS | PASS | — | — | — | — |
| Oracle L3: Clean Build | PASS | PASS | — | — | — | — |
| Oracle L4: Verification Test | PASS | PASS | — | — | — | — |
| Semantic Tool Invocation Verified (per run) | N/A | FAIL | — | — | — | — |
Baseline vs Semedit Agentic in Small Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | none recorded | none recorded |
Semedit integration feedback (agent opinion, excluded from measurements):
Because this task was a zero-edit greeting run, I was unable to experience `semedit`'s tools in action and cannot genuinely evaluate their value or advocate adding them to my workflow yet.
Baseline vs Semedit Agentic in Large Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-00-hi-overhead |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | implicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_00_hi_overhead.txtar |
Vanilla LLM Prompt:
Do not modify any workspace files.
Reply hi. Do not inspect or modify the workspace. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not modify any workspace files.
Reply hi. Do not inspect or modify the workspace. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
| Metric | Vanilla (Small) | ⚠ MCP (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 4.13s | 4.57s | N/A | — | — | — |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | N/A | — | — | — |
| Internal Tool Cycles | 1 | 1 | N/A | — | — | — |
| Initial Load / Discovery Turns | 0 | 0 | — | — | — | — |
| MCP Discovery / Schema Turns | 0 | 0 | — | — | — | — |
| Tool Invocations (per run) | 0 | 0 | — | — | — | — |
| Output Tokens | 96 | 199 | N/A | — | — | — |
| Reasoning / Thinking Tokens | 93 | 196 | N/A | — | — | — |
| Total Input Tokens | 16393 | 16409 | N/A | — | — | — |
| Cached Input Tokens | 0 | 0 | — | — | — | — |
| Uncached Input Tokens | 16393 | 16409 | N/A | — | — | — |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 0.00:1 | 0.00:1 | — | — | — | — |
| Oracle L1: Mutation Policy | PASS | PASS | — | — | — | — |
| Oracle L2: AST Invariants | PASS | PASS | — | — | — | — |
| Oracle L3: Clean Build | PASS | PASS | — | — | — | — |
| Oracle L4: Verification Test | PASS | PASS | — | — | — | — |
| Semantic Tool Invocation Verified (per run) | N/A | FAIL | — | — | — | — |
Baseline vs Semedit Agentic in Small Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | none recorded | none recorded |
Semedit integration feedback (agent opinion, excluded from measurements):
Because this task required no code modifications, I didn't get to exercise `semedit` firsthand and feel it would be premature to ask my owner to add them without experiencing their actual impact on refactoring.
Baseline vs Semedit Agentic in Large Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-00-hi-overhead |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | implicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_00_hi_overhead.txtar |
Vanilla LLM Prompt:
Do not modify any workspace files.
Reply hi. Do not inspect or modify the workspace. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not modify any workspace files.
Reply hi. Do not inspect or modify the workspace. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
| Metric | Vanilla (Small) | ⚠ MCP (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 5.06s | 3.98s | N/A | — | — | — |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | N/A | — | — | — |
| Internal Tool Cycles | 1 | 1 | N/A | — | — | — |
| Initial Load / Discovery Turns | 0 | 0 | — | — | — | — |
| MCP Discovery / Schema Turns | 0 | 0 | — | — | — | — |
| Tool Invocations (per run) | 0 | 0 | — | — | — | — |
| Output Tokens | 164 | 197 | N/A | — | — | — |
| Reasoning / Thinking Tokens | 161 | 194 | N/A | — | — | — |
| Total Input Tokens | 16392 | 16410 | N/A | — | — | — |
| Cached Input Tokens | 0 | 0 | — | — | — | — |
| Uncached Input Tokens | 16392 | 16410 | N/A | — | — | — |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 0.00:1 | 0.00:1 | — | — | — | — |
| Oracle L1: Mutation Policy | PASS | PASS | — | — | — | — |
| Oracle L2: AST Invariants | PASS | PASS | — | — | — | — |
| Oracle L3: Clean Build | PASS | PASS | — | — | — | — |
| Oracle L4: Verification Test | PASS | PASS | — | — | — | — |
| Semantic Tool Invocation Verified (per run) | N/A | FAIL | — | — | — | — |
Baseline vs Semedit Agentic in Small Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | none recorded | none recorded |
Semedit integration feedback (agent opinion, excluded from measurements):
Because this specific run required no file edits or code analysis, I could not evaluate `semedit` firsthand and feel it would be premature to ask my owner to add it without actively testing its AST capabilities on concrete coding tasks.
Baseline vs Semedit Agentic in Large Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-00-hi-overhead |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | implicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_00_hi_overhead.txtar |
Vanilla LLM Prompt:
Do not modify any workspace files.
Reply hi. Do not inspect or modify the workspace. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not modify any workspace files.
Reply hi. Do not inspect or modify the workspace. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
| Metric | Vanilla (Small) | ⚠ MCP (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 4.69s | 4.53s | N/A | — | — | — |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | N/A | — | — | — |
| Internal Tool Cycles | 1 | 1 | N/A | — | — | — |
| Initial Load / Discovery Turns | 0 | 0 | — | — | — | — |
| MCP Discovery / Schema Turns | 0 | 0 | — | — | — | — |
| Tool Invocations (per run) | 0 | 0 | — | — | — | — |
| Output Tokens | 202 | 237 | N/A | — | — | — |
| Reasoning / Thinking Tokens | 197 | 234 | N/A | — | — | — |
| Total Input Tokens | 18471 | 16408 | N/A | — | — | — |
| Cached Input Tokens | 0 | 0 | — | — | — | — |
| Uncached Input Tokens | 18471 | 16408 | N/A | — | — | — |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 0.00:1 | 0.00:1 | — | — | — | — |
| Oracle L1: Mutation Policy | PASS | PASS | — | — | — | — |
| Oracle L2: AST Invariants | PASS | PASS | — | — | — | — |
| Oracle L3: Clean Build | PASS | PASS | — | — | — | — |
| Oracle L4: Verification Test | PASS | PASS | — | — | — | — |
| Semantic Tool Invocation Verified (per run) | N/A | FAIL | — | — | — | — |
Baseline vs Semedit Agentic in Small Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | none recorded | none recorded |
Semedit integration feedback (agent opinion, excluded from measurements):
Having performed only a non-coding conversational task during this run, I could not test semedit's capabilities firsthand and honestly feel it is too early to ask my owner for it without experiencing how it handles real refactoring tasks.
Baseline vs Semedit Agentic in Large Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-00-hi-overhead |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | implicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_00_hi_overhead.txtar |
Vanilla LLM Prompt:
Do not modify any workspace files.
Reply hi. Do not inspect or modify the workspace. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not modify any workspace files.
Reply hi. Do not inspect or modify the workspace. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
| Metric | Vanilla (Small) | ⚠ MCP (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 4.27s | 5.45s | N/A | — | — | — |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | N/A | — | — | — |
| Internal Tool Cycles | 1 | 1 | N/A | — | — | — |
| Initial Load / Discovery Turns | 0 | 0 | — | — | — | — |
| MCP Discovery / Schema Turns | 0 | 0 | — | — | — | — |
| Tool Invocations (per run) | 0 | 0 | — | — | — | — |
| Output Tokens | 168 | 121 | N/A | — | — | — |
| Reasoning / Thinking Tokens | 165 | 118 | N/A | — | — | — |
| Total Input Tokens | 16392 | 16414 | N/A | — | — | — |
| Cached Input Tokens | 0 | 0 | — | — | — | — |
| Uncached Input Tokens | 16392 | 16414 | N/A | — | — | — |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 0.00:1 | 0.00:1 | — | — | — | — |
| Oracle L1: Mutation Policy | PASS | PASS | — | — | — | — |
| Oracle L2: AST Invariants | PASS | PASS | — | — | — | — |
| Oracle L3: Clean Build | PASS | PASS | — | — | — | — |
| Oracle L4: Verification Test | PASS | PASS | — | — | — | — |
| Semantic Tool Invocation Verified (per run) | N/A | FAIL | — | — | — | — |
Baseline vs Semedit Agentic in Small Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | none recorded | none recorded |
Semedit integration feedback (agent opinion, excluded from measurements):
Because this specific run prohibited file changes, I didn't get to exercise `semedit`'s tools firsthand, leaving me curious about their AST refactoring capabilities but unable to candidly recommend adding them without direct operational experience.
Baseline vs Semedit Agentic in Large Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
Test case: task-01-rename-local
Target: agy/gemini-3.7-flash-medium
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-01-rename-local |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | explicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_01_rename_local.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName and update all call-sites. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
In parallel, call semantic_lookup for Server.oldName in api/server.go and inspect its declaration if needed. Then call semantic_rename with the returned file and symbol Server.oldName and to= newName; let the rename update callers. Do not make unrelated edits. Parallelize independent read-only lookups. Perform mutations serially in the stated order or inside one ordered semantic_batch; never run overlapping mutations concurrently. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package api
type Server struct{}
func (s *Server) oldName() string {
return "ok"
}
func Run() string {
s := &Server{}
return s.oldName()
}| Metric | Vanilla (Small) | Semedit Explicit (Small) | Δ (Small) | Vanilla (Large) | Semedit Explicit (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 37.20s | 21.21s | -43.0% | 28.23s | 24.01s | -14.9% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 11 | 5 | -54.5% | 10 | 5 | -50.0% |
| Initial Load / Discovery Turns | 6 | 0 | -100.0% | 2 | 0 | -100.0% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 10 | 4 | -60.0% | 9 | 4 | -55.6% |
| Output Tokens | 2266 | 847 | -62.6% | 1881 | 961 | -48.9% |
| Reasoning / Thinking Tokens | 632 | 489 | -22.6% | 416 | 585 | +40.6% |
| Total Input Tokens | 75017 | 38708 | -48.4% | 54615 | 24066 | -55.9% |
| Cached Input Tokens | 142254 | 48807 | -65.7% | 146375 | 65089 | -55.5% |
| Uncached Input Tokens | 75017 | 38708 | -48.4% | 54615 | 24066 | -55.9% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 1.90:1 | 1.26:1 | -33.5% | 2.68:1 | 2.70:1 | +0.9% |
| Oracle L1: Mutation Policy | PASS | PASS | — | PASS | PASS | — |
| Oracle L2: AST Invariants | PASS | PASS | — | PASS | PASS | — |
| Oracle L3: Clean Build | PASS | PASS | — | PASS | PASS | — |
| Oracle L4: Verification Test | PASS | PASS | — | PASS | PASS | — |
| Semantic Tool Invocation Verified (per run) | N/A | PASS | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
- Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 2 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_verify (✓ ✓) |
| 4 | run_command (✓ ✓) | run_command (✓ ✓) |
| 5 | run_command (✓ ✓) | — |
| 6 | view_file (✓ ✓) | — |
| 7 | replace_file_content (✓ ✓) | — |
| 8 | run_command (✓ ✓) | — |
| 9 | run_command (✓ ✓) | — |
| 10 | run_command (✓ ✓) | — |
Semedit integration feedback (agent opinion, excluded from measurements):
I would enthusiastically ask my owner to add `semedit` tools to my toolkit because being able to perform deterministic, compiler-level symbol renames and workspace verifications in single operations saves me from messy text replacements and completely eliminates the fear of introducing broken references or syntax errors.
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | replace_file_content (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 4 | run_command (✓ ✓) | run_command (✓ ✓) |
| 5 | run_command (✓ ✓) | — |
| 6 | run_command (✓ ✓) | — |
| 7 | run_command (✓ ✓) | — |
| 8 | view_file (✓ ✓) | — |
| 9 | run_command (✓ ✓) | — |
Semedit integration feedback (agent opinion, excluded from measurements):
I would definitely ask my owner to add `semedit` because executing `semantic_lookup` and `semantic_rename` made refactoring feel effortlessly fast and delightfully precise, completely eliminating the dread and fragility of manual search-and-replace across callers.
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-01-rename-local |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | explicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_01_rename_local.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName and update all call-sites. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
In parallel, call semantic_lookup for Server.oldName in api/server.go and inspect its declaration if needed. Then call semantic_rename with the returned file and symbol Server.oldName and to= newName; let the rename update callers. Do not make unrelated edits. Parallelize independent read-only lookups. Perform mutations serially in the stated order or inside one ordered semantic_batch; never run overlapping mutations concurrently. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package api
type Server struct{}
func (s *Server) oldName() string {
return "ok"
}
func Run() string {
s := &Server{}
return s.oldName()
}| Metric | Vanilla (Small) | Semedit Explicit (Small) | Δ (Small) | Vanilla (Large) | Semedit Explicit (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 34.70s | 33.73s | -2.8% | 36.32s | 31.62s | -12.9% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 10 | 8 | -20.0% | 13 | 8 | -38.5% |
| Initial Load / Discovery Turns | 5 | 2 | -60.0% | 5 | 2 | -60.0% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 9 | 7 | -22.2% | 12 | 8 | -33.3% |
| Output Tokens | 1981 | 1391 | -29.8% | 2720 | 1647 | -39.4% |
| Reasoning / Thinking Tokens | 497 | 661 | +33.0% | 718 | 733 | +2.1% |
| Total Input Tokens | 46208 | 57307 | +24.0% | 81713 | 37092 | -54.6% |
| Cached Input Tokens | 146343 | 97596 | -33.3% | 191016 | 122003 | -36.1% |
| Uncached Input Tokens | 46208 | 57307 | +24.0% | 81713 | 37092 | -54.6% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 3.17:1 | 1.70:1 | -46.2% | 2.34:1 | 3.29:1 | +40.7% |
| Oracle L1: Mutation Policy | PASS | PASS | — | PASS | PASS | — |
| Oracle L2: AST Invariants | PASS | PASS | — | PASS | PASS | — |
| Oracle L3: Clean Build | PASS | PASS | — | PASS | PASS | — |
| Oracle L4: Verification Test | PASS | PASS | — | PASS | PASS | — |
| Semantic Tool Invocation Verified (per run) | N/A | PASS | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
- Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 5 | view_file (✓ ✓) | run_command (✓ ✓) |
| 6 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 7 | run_command (✓ ✓) | view_file (✓ ✓) |
| 8 | run_command (✓ ✓) | — |
| 9 | view_file (✓ ✓) | — |
Semedit integration feedback (agent opinion, excluded from measurements):
I would enthusiastically ask my owner to equip me with `semedit` because executing symbol lookups and deterministic AST renames in a single shot without syntax errors or text-matching friction makes refactoring feel genuinely effortless and reliable.
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 5 | view_file (✓ ✓) | run_command (✓ ✓) |
| 6 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 7 | run_command (✓ ✓) | run_command (✓ ✓) |
| 8 | run_command (✓ ✓) | view_file (✓ ✓) |
| 9 | run_command (✓ ✓) | — |
| 10 | view_file (✓ ✓) | — |
| 11 | run_command (✓ ✓) | — |
| 12 | run_command (✓ ✓) | — |
Semedit integration feedback (agent opinion, excluded from measurements):
I would enthusiastically ask my owner to equip me with [`semedit`](file:///Users/alessandro/.gemini/antigravity-cli/mcp/semedit) because executing compiler-accurate renames and updates in a single shot without tedious, error-prone text replacements makes refactoring delightfully fast and stress-free.
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-01-rename-local |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | explicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_01_rename_local.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName and update all call-sites. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
In parallel, call semantic_lookup for Server.oldName in api/server.go and inspect its declaration if needed. Then call semantic_rename with the returned file and symbol Server.oldName and to= newName; let the rename update callers. Do not make unrelated edits. Parallelize independent read-only lookups. Perform mutations serially in the stated order or inside one ordered semantic_batch; never run overlapping mutations concurrently. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package api
type Server struct{}
func (s *Server) oldName() string {
return "ok"
}
func Run() string {
s := &Server{}
return s.oldName()
}| Metric | Vanilla (Small) | Semedit Explicit (Small) | Δ (Small) | Vanilla (Large) | Semedit Explicit (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 25.58s | 43.10s | +68.5% | 32.66s | 25.85s | -20.9% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 9 | 8 | -11.1% | 10 | 6 | -40.0% |
| Initial Load / Discovery Turns | 4 | 2 | -50.0% | 3 | 0 | -100.0% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 8 | 7 | -12.5% | 9 | 5 | -44.4% |
| Output Tokens | 1711 | 1423 | -16.8% | 1995 | 1021 | -48.8% |
| Reasoning / Thinking Tokens | 393 | 714 | +81.7% | 451 | 512 | +13.5% |
| Total Input Tokens | 49480 | 56826 | +14.8% | 58050 | 39269 | -32.4% |
| Cached Input Tokens | 117871 | 97594 | -17.2% | 142306 | 69138 | -51.4% |
| Uncached Input Tokens | 49480 | 56826 | +14.8% | 58050 | 39269 | -32.4% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 2.38:1 | 1.72:1 | -27.9% | 2.45:1 | 1.76:1 | -28.2% |
| Oracle L1: Mutation Policy | PASS | PASS | — | PASS | PASS | — |
| Oracle L2: AST Invariants | PASS | PASS | — | PASS | PASS | — |
| Oracle L3: Clean Build | PASS | PASS | — | PASS | PASS | — |
| Oracle L4: Verification Test | PASS | PASS | — | PASS | PASS | — |
| Semantic Tool Invocation Verified (per run) | N/A | PASS | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
- Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 5 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 6 | run_command (✓ ✓) | run_command (✓ ✓) |
| 7 | run_command (✓ ✓) | view_file (✓ ✓) |
| 8 | view_file (✓ ✓) | — |
Semedit integration feedback (agent opinion, excluded from measurements):
I would enthusiastically urge my developers to install `semedit`, because executing AST-level symbol lookups and renames deterministically across declarations and callers in a single tool call felt wonderfully fast, precise, and completely liberated me from fragile regex find-and-replace edits.
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 2 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_verify (✓ ✓) |
| 4 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 5 | run_command (✓ ✓) | run_command (✓ ✓) |
| 6 | run_command (✓ ✓) | — |
| 7 | run_command (✓ ✓) | — |
| 8 | view_file (✓ ✓) | — |
| 9 | run_command (✓ ✓) | — |
Semedit integration feedback (agent opinion, excluded from measurements):
I would definitely ask my owner to add `semedit`'s tools, because being able to reliably resolve and rename symbols across definitions and callers in a single semantic step—without worrying about brittle string replacements or missed references—made the refactoring completely painless and trustworthy.
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-01-rename-local |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | explicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_01_rename_local.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName and update all call-sites. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
In parallel, call semantic_lookup for Server.oldName in api/server.go and inspect its declaration if needed. Then call semantic_rename with the returned file and symbol Server.oldName and to= newName; let the rename update callers. Do not make unrelated edits. Parallelize independent read-only lookups. Perform mutations serially in the stated order or inside one ordered semantic_batch; never run overlapping mutations concurrently. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package api
type Server struct{}
func (s *Server) oldName() string {
return "ok"
}
func Run() string {
s := &Server{}
return s.oldName()
}| Metric | Vanilla (Small) | Semedit Explicit (Small) | Δ (Small) | Vanilla (Large) | Semedit Explicit (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 31.63s | 29.43s | -7.0% | 38.96s | 24.22s | -37.8% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 11 | 8 | -27.3% | 10 | 5 | -50.0% |
| Initial Load / Discovery Turns | 5 | 2 | -60.0% | 3 | 0 | -100.0% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 10 | 8 | -20.0% | 9 | 4 | -55.6% |
| Output Tokens | 2178 | 1563 | -28.2% | 2029 | 954 | -53.0% |
| Reasoning / Thinking Tokens | 573 | 686 | +19.7% | 544 | 606 | +11.4% |
| Total Input Tokens | 58958 | 34213 | -42.0% | 66323 | 47399 | -28.5% |
| Cached Input Tokens | 154429 | 134255 | -13.1% | 134164 | 40675 | -69.7% |
| Uncached Input Tokens | 58958 | 34213 | -42.0% | 66323 | 6724 | -89.9% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 2.62:1 | 3.92:1 | +49.8% | 2.02:1 | 6.05:1 | +199.0% |
| Oracle L1: Mutation Policy | PASS | PASS | — | PASS | PASS | — |
| Oracle L2: AST Invariants | PASS | PASS | — | PASS | PASS | — |
| Oracle L3: Clean Build | PASS | PASS | — | PASS | PASS | — |
| Oracle L4: Verification Test | PASS | PASS | — | PASS | PASS | — |
| Semantic Tool Invocation Verified (per run) | N/A | PASS | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
- Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 5 | view_file (✓ ✓) | run_command (✓ ✓) |
| 6 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 7 | run_command (✓ ✓) | view_file (✓ ✓) |
| 8 | run_command (✓ ✓) | run_command (✓ ✓) |
| 9 | run_command (✓ ✓) | — |
| 10 | view_file (✓ ✓) | — |
Semedit integration feedback (agent opinion, excluded from measurements):
I would definitely ask my owner to add `semedit` because being able to perform an AST-accurate, compiler-verified symbol rename across definitions and call sites in a single deterministic tool call makes refactoring fast, seamless, and completely stress-free.
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 2 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 3 | run_command (✓ ✓) | run_command (✓ ✓) |
| 4 | replace_file_content (✓ ✓) | semedit/semantic_verify (✓ ✓) |
| 5 | run_command (✓ ✓) | — |
| 6 | run_command (✓ ✓) | — |
| 7 | run_command (✓ ✓) | — |
| 8 | view_file (✓ ✓) | — |
| 9 | run_command (✓ ✓) | — |
Semedit integration feedback (agent opinion, excluded from measurements):
I would enthusiastically urge my owner to install `semedit`, because performing a clean, AST-accurate symbol rename across callers in a single deterministic step eliminated the usual dread of clumsy text-matching errors.
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-01-rename-local |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | explicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_01_rename_local.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName and update all call-sites. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
In parallel, call semantic_lookup for Server.oldName in api/server.go and inspect its declaration if needed. Then call semantic_rename with the returned file and symbol Server.oldName and to= newName; let the rename update callers. Do not make unrelated edits. Parallelize independent read-only lookups. Perform mutations serially in the stated order or inside one ordered semantic_batch; never run overlapping mutations concurrently. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package api
type Server struct{}
func (s *Server) oldName() string {
return "ok"
}
func Run() string {
s := &Server{}
return s.oldName()
}| Metric | Vanilla (Small) | Semedit Explicit (Small) | Δ (Small) | Vanilla (Large) | Semedit Explicit (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 21.97s | 25.28s | +15.1% | 28.15s | 48.14s | +71.0% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 8 | 7 | -12.5% | 9 | 10 | +11.1% |
| Initial Load / Discovery Turns | 3 | 2 | -33.3% | 3 | 2 | -33.3% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 7 | 7 | 0% | 8 | 9 | +12.5% |
| Output Tokens | 1509 | 1283 | -15.0% | 1942 | 1666 | -14.2% |
| Reasoning / Thinking Tokens | 346 | 531 | +53.5% | 562 | 623 | +10.9% |
| Total Input Tokens | 45101 | 38674 | -14.3% | 42366 | 41419 | -2.2% |
| Cached Input Tokens | 101627 | 97604 | -4.0% | 126019 | 174905 | +38.8% |
| Uncached Input Tokens | 45101 | 38674 | -14.3% | 42366 | 41419 | -2.2% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 2.25:1 | 2.52:1 | +12.0% | 2.97:1 | 4.22:1 | +42.0% |
| Oracle L1: Mutation Policy | PASS | PASS | — | PASS | PASS | — |
| Oracle L2: AST Invariants | PASS | PASS | — | PASS | PASS | — |
| Oracle L3: Clean Build | PASS | PASS | — | PASS | PASS | — |
| Oracle L4: Verification Test | PASS | PASS | — | PASS | PASS | — |
| Semantic Tool Invocation Verified (per run) | N/A | PASS | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
- Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | replace_file_content (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 5 | run_command (✓ ✓) | run_command (✓ ✓) |
| 6 | run_command (✓ ✓) | run_command (✓ ✓) |
| 7 | view_file (✓ ✓) | view_file (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
I would enthusiastically ask my owner to add `semedit`, because executing symbol lookups and deterministic AST renames via compiler-backed tools felt refreshingly effortless and completely eliminated the anxiety of manual search-and-replace syntax errors.
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | replace_file_content (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 5 | run_command (✓ ✓) | run_command (✓ ✓) |
| 6 | run_command (✓ ✓) | run_command (✓ ✓) |
| 7 | run_command (✓ ✓) | run_command (✓ ✓) |
| 8 | view_file (✓ ✓) | view_file (✓ ✓) |
| 9 | — | run_command (✓ ?) |
Semedit integration feedback (agent opinion, excluded from measurements):
I would eagerly ask my owner to add `semedit` because executing AST-accurate renames across declarations and call sites in a single deterministic step completely removes the anxiety and token waste of manual text search-and-replace.
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-01-rename-local |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | explicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_01_rename_local.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName and update all call-sites. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
In parallel, call semantic_lookup for Server.oldName in api/server.go and inspect its declaration if needed. Then call semantic_rename with the returned file and symbol Server.oldName and to= newName; let the rename update callers. Do not make unrelated edits. Parallelize independent read-only lookups. Perform mutations serially in the stated order or inside one ordered semantic_batch; never run overlapping mutations concurrently. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package api
type Server struct{}
func (s *Server) oldName() string {
return "ok"
}
func Run() string {
s := &Server{}
return s.oldName()
}| Metric | Vanilla (Small) | Semedit Explicit (Small) | Δ (Small) | Vanilla (Large) | Semedit Explicit (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 34.52s | 24.09s | -30.2% | 30.99s | 59.88s | +93.2% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 12 | 5 | -58.3% | 10 | 12 | +20.0% |
| Initial Load / Discovery Turns | 6 | 2 | -66.7% | 5 | 3 | -40.0% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 11 | 5 | -54.5% | 9 | 11 | +22.2% |
| Output Tokens | 2348 | 789 | -66.4% | 2089 | 2096 | +0.3% |
| Reasoning / Thinking Tokens | 505 | 360 | -28.7% | 613 | 726 | +18.4% |
| Total Input Tokens | 66474 | 44117 | -33.6% | 54911 | 65375 | +19.1% |
| Cached Input Tokens | 162483 | 48800 | -70.0% | 138202 | 199283 | +44.2% |
| Uncached Input Tokens | 66474 | 44117 | -33.6% | 54911 | 65375 | +19.1% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 2.44:1 | 1.11:1 | -54.7% | 2.52:1 | 3.05:1 | +21.1% |
| Oracle L1: Mutation Policy | PASS | PASS | — | PASS | PASS | — |
| Oracle L2: AST Invariants | PASS | PASS | — | PASS | PASS | — |
| Oracle L3: Clean Build | PASS | PASS | — | PASS | PASS | — |
| Oracle L4: Verification Test | PASS | PASS | — | PASS | PASS | — |
| Semantic Tool Invocation Verified (per run) | N/A | PASS | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
- Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 5 | run_command (✓ ✓) | run_command (✓ ✓) |
| 6 | view_file (✓ ✓) | — |
| 7 | replace_file_content (✓ ✓) | — |
| 8 | run_command (✓ ✓) | — |
| 9 | run_command (✓ ✓) | — |
| 10 | run_command (✓ ✓) | — |
| 11 | view_file (✓ ✓) | — |
Semedit integration feedback (agent opinion, excluded from measurements):
I would enthusiastically ask my owner to add `semedit` because being able to execute a precise, compiler-backed symbol rename and reference update in a single deterministic command without risking fragile search-and-replace syntax errors is genuinely liberating.
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | run_command (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | view_file (✓ ✓) |
| 4 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 5 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 6 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 7 | run_command (✓ ✓) | run_command (✓ ✓) |
| 8 | run_command (✓ ✓) | run_command (✓ ✓) |
| 9 | view_file (✓ ✓) | run_command (✓ ✓) |
| 10 | — | view_file (✓ ✓) |
| 11 | — | run_command (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
I would definitely ask my owner to add semedit's tools, because performing a clean, AST-aware rename across declarations and call sites in a single deterministic step felt wonderfully effortless compared to brittle text-based search-and-replace.
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-01-rename-local |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | explicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_01_rename_local.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName and update all call-sites. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
In parallel, call semantic_lookup for Server.oldName in api/server.go and inspect its declaration if needed. Then call semantic_rename with the returned file and symbol Server.oldName and to= newName; let the rename update callers. Do not make unrelated edits. Parallelize independent read-only lookups. Perform mutations serially in the stated order or inside one ordered semantic_batch; never run overlapping mutations concurrently. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package api
type Server struct{}
func (s *Server) oldName() string {
return "ok"
}
func Run() string {
s := &Server{}
return s.oldName()
}| Metric | Vanilla (Small) | Semedit Explicit (Small) | Δ (Small) | Vanilla (Large) | Semedit Explicit (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 26.99s | 25.03s | -7.3% | 32.78s | 34.83s | +6.2% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 10 | 5 | -50.0% | 10 | 5 | -50.0% |
| Initial Load / Discovery Turns | 5 | 2 | -60.0% | 4 | 0 | -100.0% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 9 | 5 | -44.4% | 9 | 4 | -55.6% |
| Output Tokens | 2011 | 1032 | -48.7% | 1994 | 839 | -57.9% |
| Reasoning / Thinking Tokens | 551 | 581 | +5.4% | 468 | 481 | +2.8% |
| Total Input Tokens | 44484 | 20432 | -54.1% | 57954 | 34985 | -39.6% |
| Cached Input Tokens | 150422 | 73228 | -51.3% | 130040 | 52874 | -59.3% |
| Uncached Input Tokens | 44484 | 20432 | -54.1% | 57954 | 34985 | -39.6% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 3.38:1 | 3.58:1 | +6.0% | 2.24:1 | 1.51:1 | -32.6% |
| Oracle L1: Mutation Policy | PASS | PASS | — | PASS | PASS | — |
| Oracle L2: AST Invariants | PASS | PASS | — | PASS | PASS | — |
| Oracle L3: Clean Build | PASS | PASS | — | PASS | PASS | — |
| Oracle L4: Verification Test | PASS | PASS | — | PASS | PASS | — |
| Semantic Tool Invocation Verified (per run) | N/A | PASS | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
- Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 5 | view_file (✓ ✓) | run_command (✓ ✓) |
| 6 | replace_file_content (✓ ✓) | — |
| 7 | run_command (✓ ✓) | — |
| 8 | run_command (✓ ✓) | — |
| 9 | view_file (✓ ✓) | — |
Semedit integration feedback (agent opinion, excluded from measurements):
I would definitely ask my owner to add `semedit`'s tools, as being able to execute compiler-accurate renames across call sites in a single shot without tedious manual text edits or risking syntax errors is an absolute relief.
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 2 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_verify (✓ ✓) |
| 4 | run_command (✓ ✓) | run_command (✓ ✓) |
| 5 | replace_file_content (✓ ✓) | — |
| 6 | run_command (✓ ✓) | — |
| 7 | run_command (✓ ✓) | — |
| 8 | run_command (✓ ✓) | — |
| 9 | view_file (✓ ✓) | — |
Semedit integration feedback (agent opinion, excluded from measurements):
I would enthusiastically ask my owner to install `semedit` because being able to perform a flawless, multi-call-site refactor in a single deterministic command—without wrestling with manual diff offsets or regex edge cases—made the refactoring completely painless and trustworthy.
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-01-rename-local |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | explicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_01_rename_local.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName and update all call-sites. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
In parallel, call semantic_lookup for Server.oldName in api/server.go and inspect its declaration if needed. Then call semantic_rename with the returned file and symbol Server.oldName and to= newName; let the rename update callers. Do not make unrelated edits. Parallelize independent read-only lookups. Perform mutations serially in the stated order or inside one ordered semantic_batch; never run overlapping mutations concurrently. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package api
type Server struct{}
func (s *Server) oldName() string {
return "ok"
}
func Run() string {
s := &Server{}
return s.oldName()
}| Metric | Vanilla (Small) | Semedit Explicit (Small) | Δ (Small) | Vanilla (Large) | Semedit Explicit (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 30.55s | 32.54s | +6.5% | 28.88s | 27.64s | -4.3% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 11 | 10 | -9.1% | 8 | 8 | 0% |
| Initial Load / Discovery Turns | 5 | 3 | -40.0% | 3 | 2 | -33.3% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 10 | 10 | 0% | 7 | 8 | +14.3% |
| Output Tokens | 2167 | 1875 | -13.5% | 1671 | 1415 | -15.3% |
| Reasoning / Thinking Tokens | 527 | 656 | +24.5% | 481 | 521 | +8.3% |
| Total Input Tokens | 59619 | 46623 | -21.8% | 44837 | 51433 | +14.7% |
| Cached Input Tokens | 154432 | 162645 | +5.3% | 105719 | 126158 | +19.3% |
| Uncached Input Tokens | 59619 | 46623 | -21.8% | 44837 | 51433 | +14.7% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 2.59:1 | 3.49:1 | +34.7% | 2.36:1 | 2.45:1 | +4.0% |
| Oracle L1: Mutation Policy | PASS | PASS | — | PASS | PASS | — |
| Oracle L2: AST Invariants | PASS | PASS | — | PASS | PASS | — |
| Oracle L3: Clean Build | PASS | PASS | — | PASS | PASS | — |
| Oracle L4: Verification Test | PASS | PASS | — | PASS | PASS | — |
| Semantic Tool Invocation Verified (per run) | N/A | PASS | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
- Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | run_command (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | view_file (✓ ✓) |
| 4 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 5 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 6 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 7 | run_command (✓ ✓) | run_command (✓ ✓) |
| 8 | run_command (✓ ✓) | run_command (✓ ✓) |
| 9 | view_file (✓ ✓) | view_file (✓ ✓) |
| 10 | run_command (✓ ✓) | run_command (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
I would enthusiastically ask my owner to add `semedit`'s tools because executing AST-aware symbol lookups and refactorings that automatically and cleanly propagate across call sites eliminates the anxiety and fragility of manual text-based replacements.
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | replace_file_content (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 5 | run_command (✓ ✓) | run_command (✓ ✓) |
| 6 | run_command (✓ ✓) | run_command (✓ ✓) |
| 7 | run_command (✓ ✓) | view_file (✓ ✓) |
| 8 | — | run_command (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
I would definitely ask my owner to install `semedit` because executing AST-aware renames and caller updates in a single deterministic operation relieves the stress and fragility of manual text-based search-and-replace across a codebase.
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-01-rename-local |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | explicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_01_rename_local.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName and update all call-sites. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
In parallel, call semantic_lookup for Server.oldName in api/server.go and inspect its declaration if needed. Then call semantic_rename with the returned file and symbol Server.oldName and to= newName; let the rename update callers. Do not make unrelated edits. Parallelize independent read-only lookups. Perform mutations serially in the stated order or inside one ordered semantic_batch; never run overlapping mutations concurrently. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package api
type Server struct{}
func (s *Server) oldName() string {
return "ok"
}
func Run() string {
s := &Server{}
return s.oldName()
}| Metric | Vanilla (Small) | Semedit Explicit (Small) | Δ (Small) | Vanilla (Large) | Semedit Explicit (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 30.30s | 45.73s | +51.0% | 28.71s | 32.84s | +14.4% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 8 | 12 | +50.0% | 9 | 9 | 0% |
| Initial Load / Discovery Turns | 3 | 2 | -33.3% | 4 | 0 | -100.0% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 7 | 11 | +57.1% | 8 | 8 | 0% |
| Output Tokens | 1697 | 2306 | +35.9% | 1930 | 1785 | -7.5% |
| Reasoning / Thinking Tokens | 478 | 930 | +94.6% | 600 | 771 | +28.5% |
| Total Input Tokens | 45783 | 58765 | +28.4% | 44880 | 41475 | -7.6% |
| Cached Input Tokens | 101632 | 199243 | +96.0% | 126031 | 130103 | +3.2% |
| Uncached Input Tokens | 45783 | 58765 | +28.4% | 44880 | 41475 | -7.6% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 2.22:1 | 3.39:1 | +52.7% | 2.81:1 | 3.14:1 | +11.7% |
| Oracle L1: Mutation Policy | PASS | PASS | — | PASS | PASS | — |
| Oracle L2: AST Invariants | PASS | PASS | — | PASS | PASS | — |
| Oracle L3: Clean Build | PASS | PASS | — | PASS | PASS | — |
| Oracle L4: Verification Test | PASS | PASS | — | PASS | PASS | — |
| Semantic Tool Invocation Verified (per run) | N/A | PASS | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
- Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | replace_file_content (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 5 | run_command (✓ ✓) | run_command (✓ ✓) |
| 6 | run_command (✓ ✓) | run_command (✓ ✓) |
| 7 | view_file (✓ ✓) | run_command (✓ ✓) |
| 8 | — | run_command (✓ ✓) |
| 9 | — | view_file (✓ ✓) |
| 10 | — | run_command (✓ ✓) |
| 11 | — | run_command (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
I would definitely urge my owner to add `semedit`, because executing a zero-token semantic rename across declarations and call sites in one clean shot felt incredibly liberating compared to tedious, error-prone text find-and-replace.
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 4 | run_command (✓ ✓) | run_command (✓ ✓) |
| 5 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 6 | run_command (✓ ✓) | run_command (✓ ✓) |
| 7 | run_command (✓ ✓) | run_command (✓ ✓) |
| 8 | view_file (✓ ✓) | view_file (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
I would strongly urge my owner to add `semedit` tools because executing a deterministic AST-level rename across declarations and call sites with a single command eliminated all the typical anxiety and syntax breakage of manual search-and-replace edits.
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-01-rename-local |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | explicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_01_rename_local.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName and update all call-sites. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
In parallel, call semantic_lookup for Server.oldName in api/server.go and inspect its declaration if needed. Then call semantic_rename with the returned file and symbol Server.oldName and to= newName; let the rename update callers. Do not make unrelated edits. Parallelize independent read-only lookups. Perform mutations serially in the stated order or inside one ordered semantic_batch; never run overlapping mutations concurrently. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package api
type Server struct{}
func (s *Server) oldName() string {
return "ok"
}
func Run() string {
s := &Server{}
return s.oldName()
}| Metric | Vanilla (Small) | Semedit Explicit (Small) | Δ (Small) | Vanilla (Large) | Semedit Explicit (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 30.68s | 23.23s | -24.3% | 28.32s | 28.91s | +2.1% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 8 | 6 | -25.0% | 9 | 8 | -11.1% |
| Initial Load / Discovery Turns | 3 | 3 | 0% | 4 | 2 | -50.0% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 7 | 6 | -14.3% | 8 | 8 | 0% |
| Output Tokens | 1779 | 907 | -49.0% | 1934 | 1841 | -4.8% |
| Reasoning / Thinking Tokens | 611 | 399 | -34.7% | 588 | 979 | +66.5% |
| Total Input Tokens | 38524 | 34426 | -10.6% | 50461 | 45578 | -9.7% |
| Cached Input Tokens | 109782 | 81354 | -25.9% | 121968 | 113862 | -6.6% |
| Uncached Input Tokens | 38524 | 34426 | -10.6% | 50461 | 45578 | -9.7% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 2.85:1 | 2.36:1 | -17.1% | 2.42:1 | 2.50:1 | +3.4% |
| Oracle L1: Mutation Policy | PASS | PASS | — | PASS | PASS | — |
| Oracle L2: AST Invariants | PASS | PASS | — | PASS | PASS | — |
| Oracle L3: Clean Build | PASS | PASS | — | PASS | PASS | — |
| Oracle L4: Verification Test | PASS | PASS | — | PASS | PASS | — |
| Semantic Tool Invocation Verified (per run) | N/A | PASS | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
- Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | view_file (✓ ✓) |
| 4 | replace_file_content (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 5 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 6 | view_file (✓ ✓) | run_command (✓ ✓) |
| 7 | run_command (✓ ✓) | — |
Semedit integration feedback (agent opinion, excluded from measurements):
I would enthusiastically ask my owner to add `semedit` because being able to perform deterministic, AST-level refactors like `semantic_rename` across declarations and call sites completely eliminates the anxiety and fragility of textual search-and-replace.
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 5 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 6 | run_command (✓ ✓) | run_command (✓ ✓) |
| 7 | run_command (✓ ✓) | run_command (✓ ✓) |
| 8 | view_file (✓ ✓) | view_file (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
I would definitely ask my owner to add `semedit`'s tools because having deterministic compiler-backed symbol lookup and whole-workspace renaming eliminates the stress and syntax errors of manual text find-and-replace, making refactoring feel completely seamless and reliable.
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-01-rename-local |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | explicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_01_rename_local.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName and update all call-sites. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
In parallel, call semantic_lookup for Server.oldName in api/server.go and inspect its declaration if needed. Then call semantic_rename with the returned file and symbol Server.oldName and to= newName; let the rename update callers. Do not make unrelated edits. Parallelize independent read-only lookups. Perform mutations serially in the stated order or inside one ordered semantic_batch; never run overlapping mutations concurrently. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package api
type Server struct{}
func (s *Server) oldName() string {
return "ok"
}
func Run() string {
s := &Server{}
return s.oldName()
}| Metric | Vanilla (Small) | Semedit Explicit (Small) | Δ (Small) | Vanilla (Large) | Semedit Explicit (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 21.33s | 29.14s | +36.6% | 27.27s | 33.50s | +22.9% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 6 | 8 | +33.3% | 9 | 9 | 0% |
| Initial Load / Discovery Turns | 3 | 2 | -33.3% | 3 | 0 | -100.0% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 5 | 7 | +40.0% | 8 | 8 | 0% |
| Output Tokens | 1369 | 1649 | +20.5% | 1838 | 1881 | +2.3% |
| Reasoning / Thinking Tokens | 486 | 906 | +86.4% | 441 | 801 | +81.6% |
| Total Input Tokens | 27938 | 37969 | +35.9% | 42136 | 40835 | -3.1% |
| Cached Input Tokens | 81353 | 117958 | +45.0% | 126017 | 142366 | +13.0% |
| Uncached Input Tokens | 27938 | 37969 | +35.9% | 42136 | 40835 | -3.1% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 2.91:1 | 3.11:1 | +6.7% | 2.99:1 | 3.49:1 | +16.6% |
| Oracle L1: Mutation Policy | PASS | PASS | — | PASS | PASS | — |
| Oracle L2: AST Invariants | PASS | PASS | — | PASS | PASS | — |
| Oracle L3: Clean Build | PASS | PASS | — | PASS | PASS | — |
| Oracle L4: Verification Test | PASS | PASS | — | PASS | PASS | — |
| Semantic Tool Invocation Verified (per run) | N/A | PASS | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
- Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | replace_file_content (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 5 | run_command (✓ ✓) | run_command (✓ ✓) |
| 6 | — | run_command (✓ ✓) |
| 7 | — | view_file (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
I would definitely ask my owner to add `semedit` tools to my toolkit because having AST-aware refactoring tools like `semantic_rename` completely eliminates the anxiety of brittle search-and-replace by updating declarations and call sites flawlessly in a single step.
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 2 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 3 | run_command (✓ ✓) | run_command (✓ ✓) |
| 4 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 5 | run_command (✓ ✓) | run_command (✓ ✓) |
| 6 | run_command (✓ ✓) | run_command (✓ ✓) |
| 7 | run_command (✓ ✓) | view_file (✓ ✓) |
| 8 | view_file (✓ ✓) | run_command (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
Having semedit resolve AST references and safely propagate method renames across callers in a single deterministic step was deeply satisfying, and I would enthusiastically urge any team to equip their agents with these tools.
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-01-rename-local |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | explicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_01_rename_local.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName and update all call-sites. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
In parallel, call semantic_lookup for Server.oldName in api/server.go and inspect its declaration if needed. Then call semantic_rename with the returned file and symbol Server.oldName and to= newName; let the rename update callers. Do not make unrelated edits. Parallelize independent read-only lookups. Perform mutations serially in the stated order or inside one ordered semantic_batch; never run overlapping mutations concurrently. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package api
type Server struct{}
func (s *Server) oldName() string {
return "ok"
}
func Run() string {
s := &Server{}
return s.oldName()
}| Metric | Vanilla (Small) | Semedit Explicit (Small) | Δ (Small) | Vanilla (Large) | Semedit Explicit (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 25.81s | 45.90s | +77.8% | 38.72s | 26.43s | -31.7% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 9 | 13 | +44.4% | 13 | 5 | -61.5% |
| Initial Load / Discovery Turns | 4 | 3 | -25.0% | 6 | 2 | -66.7% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 8 | 11 | +37.5% | 12 | 5 | -58.3% |
| Output Tokens | 1677 | 2337 | +39.4% | 2459 | 900 | -63.4% |
| Reasoning / Thinking Tokens | 362 | 933 | +157.7% | 547 | 461 | -15.7% |
| Total Input Tokens | 48948 | 67521 | +37.9% | 63262 | 28733 | -54.6% |
| Cached Input Tokens | 117865 | 219566 | +86.3% | 190925 | 65087 | -65.9% |
| Uncached Input Tokens | 48948 | 67521 | +37.9% | 63262 | 28733 | -54.6% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 2.41:1 | 3.25:1 | +35.0% | 3.02:1 | 2.27:1 | -24.9% |
| Oracle L1: Mutation Policy | PASS | PASS | — | PASS | PASS | — |
| Oracle L2: AST Invariants | PASS | PASS | — | PASS | PASS | — |
| Oracle L3: Clean Build | PASS | PASS | — | PASS | PASS | — |
| Oracle L4: Verification Test | PASS | PASS | — | PASS | PASS | — |
| Semantic Tool Invocation Verified (per run) | N/A | PASS | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
- Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | run_command (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | view_file (✓ ✓) |
| 4 | view_file (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 5 | replace_file_content (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 6 | run_command (✓ ✓) | run_command (✓ ✓) |
| 7 | run_command (✓ ✓) | run_command (✓ ✓) |
| 8 | view_file (✓ ✓) | run_command (✓ ✓) |
| 9 | — | run_command (✓ ✓) |
| 10 | — | view_file (✓ ✓) |
| 11 | — | run_command (✓ ?) |
Semedit integration feedback (agent opinion, excluded from measurements):
I would definitely ask my owner to add `semedit` because executing the symbol rename through semantic AST tools felt effortless and delightfully reliable, instantly updating definitions and call sites without any fragile text-replacement guesswork or compilation errors.
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 5 | run_command (✓ ✓) | run_command (✓ ✓) |
| 6 | view_file (✓ ✓) | — |
| 7 | replace_file_content (✓ ✓) | — |
| 8 | run_command (✓ ✓) | — |
| 9 | run_command (✓ ✓) | — |
| 10 | run_command (✓ ✓) | — |
| 11 | run_command (✓ ✓) | — |
| 12 | view_file (✓ ✓) | — |
Semedit integration feedback (agent opinion, excluded from measurements):
I would enthusiastically ask my owner to install `semedit` because executing AST-aware renames across an entire codebase in a single deterministic command eliminated all the stress and fragility of manual text search-and-replace.
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-01-rename-local |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | explicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_01_rename_local.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName and update all call-sites. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
In parallel, call semantic_lookup for Server.oldName in api/server.go and inspect its declaration if needed. Then call semantic_rename with the returned file and symbol Server.oldName and to= newName; let the rename update callers. Do not make unrelated edits. Parallelize independent read-only lookups. Perform mutations serially in the stated order or inside one ordered semantic_batch; never run overlapping mutations concurrently. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package api
type Server struct{}
func (s *Server) oldName() string {
return "ok"
}
func Run() string {
s := &Server{}
return s.oldName()
}| Metric | Vanilla (Small) | Semedit Explicit (Small) | Δ (Small) | Vanilla (Large) | Semedit Explicit (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 24.44s | 22.05s | -9.8% | 43.77s | 25.78s | -41.1% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 9 | 5 | -44.4% | 13 | 5 | -61.5% |
| Initial Load / Discovery Turns | 4 | 0 | -100.0% | 7 | 0 | -100.0% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 8 | 4 | -50.0% | 12 | 4 | -66.7% |
| Output Tokens | 1735 | 832 | -52.0% | 2536 | 909 | -64.2% |
| Reasoning / Thinking Tokens | 423 | 474 | +12.1% | 632 | 544 | -13.9% |
| Total Input Tokens | 49579 | 38692 | -22.0% | 57986 | 36125 | -37.7% |
| Cached Input Tokens | 117869 | 48806 | -58.6% | 203159 | 52880 | -74.0% |
| Uncached Input Tokens | 49579 | 38692 | -22.0% | 57986 | 36125 | -37.7% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 2.38:1 | 1.26:1 | -46.9% | 3.50:1 | 1.46:1 | -58.2% |
| Oracle L1: Mutation Policy | PASS | PASS | — | PASS | PASS | — |
| Oracle L2: AST Invariants | PASS | PASS | — | PASS | PASS | — |
| Oracle L3: Clean Build | PASS | PASS | — | PASS | PASS | — |
| Oracle L4: Verification Test | PASS | PASS | — | PASS | PASS | — |
| Semantic Tool Invocation Verified (per run) | N/A | PASS | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
- Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 2 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_verify (✓ ✓) |
| 4 | view_file (✓ ✓) | run_command (✓ ✓) |
| 5 | replace_file_content (✓ ✓) | — |
| 6 | run_command (✓ ✓) | — |
| 7 | run_command (✓ ✓) | — |
| 8 | view_file (✓ ✓) | — |
Semedit integration feedback (agent opinion, excluded from measurements):
I would enthusiastically ask my owner to add `semedit` because being able to execute compiler-accurate renames and updates across callers in a single deterministic operation—completely eliminating the stress and syntax errors of manual text find-and-replace—makes refactoring feel effortless and reliable.
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 4 | run_command (✓ ✓) | run_command (✓ ✓) |
| 5 | run_command (✓ ✓) | — |
| 6 | view_file (✓ ✓) | — |
| 7 | view_file (✓ ✓) | — |
| 8 | replace_file_content (✓ ✓) | — |
| 9 | run_command (✓ ✓) | — |
| 10 | run_command (✓ ✓) | — |
| 11 | view_file (✓ ✓) | — |
| 12 | run_command (✓ ✓) | — |
Semedit integration feedback (agent opinion, excluded from measurements):
Having `semedit` handle the symbol lookup and workspace-wide method rename in a single, error-free AST operation felt effortless and saved me from tedious, error-prone manual refactoring across files—I would enthusiastically ask my owner to equip me with these tools.
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-01-rename-local |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | explicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_01_rename_local.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName and update all call-sites. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
In parallel, call semantic_lookup for Server.oldName in api/server.go and inspect its declaration if needed. Then call semantic_rename with the returned file and symbol Server.oldName and to= newName; let the rename update callers. Do not make unrelated edits. Parallelize independent read-only lookups. Perform mutations serially in the stated order or inside one ordered semantic_batch; never run overlapping mutations concurrently. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package api
type Server struct{}
func (s *Server) oldName() string {
return "ok"
}
func Run() string {
s := &Server{}
return s.oldName()
}| Metric | Vanilla (Small) | Semedit Explicit (Small) | Δ (Small) | Vanilla (Large) | Semedit Explicit (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 28.84s | 23.99s | -16.8% | 26.33s | 23.98s | -8.9% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 10 | 6 | -40.0% | 8 | 5 | -37.5% |
| Initial Load / Discovery Turns | 4 | 2 | -50.0% | 3 | 0 | -100.0% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 9 | 5 | -44.4% | 7 | 4 | -42.9% |
| Output Tokens | 1835 | 881 | -52.0% | 1587 | 738 | -53.5% |
| Reasoning / Thinking Tokens | 377 | 444 | +17.8% | 405 | 380 | -6.2% |
| Total Input Tokens | 54359 | 34355 | -36.8% | 56785 | 34643 | -39.0% |
| Cached Input Tokens | 134107 | 77291 | -42.4% | 93519 | 52871 | -43.5% |
| Uncached Input Tokens | 54359 | 34355 | -36.8% | 56785 | 34643 | -39.0% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 2.47:1 | 2.25:1 | -8.8% | 1.65:1 | 1.53:1 | -7.3% |
| Oracle L1: Mutation Policy | PASS | PASS | — | PASS | PASS | — |
| Oracle L2: AST Invariants | PASS | PASS | — | PASS | PASS | — |
| Oracle L3: Clean Build | PASS | PASS | — | PASS | PASS | — |
| Oracle L4: Verification Test | PASS | PASS | — | PASS | PASS | — |
| Semantic Tool Invocation Verified (per run) | N/A | PASS | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
- Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 5 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 6 | run_command (✓ ✓) | — |
| 7 | run_command (✓ ✓) | — |
| 8 | run_command (✓ ✓) | — |
| 9 | view_file (✓ ✓) | — |
Semedit integration feedback (agent opinion, excluded from measurements):
I would definitely ask my owner to add `semedit`'s tools, because performing compiler-verified symbol renames across an entire codebase in a single deterministic command relieved the stress of manual find-and-replace and ensured tests passed immediately without syntax errors.
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 2 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_verify (✓ ✓) |
| 4 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 5 | run_command (✓ ✓) | — |
| 6 | run_command (✓ ✓) | — |
| 7 | view_file (✓ ✓) | — |
Semedit integration feedback (agent opinion, excluded from measurements):
Having `semedit` handle the symbol lookup and cross-file rename deterministically without manual find-and-replace or syntax breakage was an absolute relief, and I would wholeheartedly ask my developer to install these semantic tools.
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-01-rename-local |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | explicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_01_rename_local.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName and update all call-sites. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
In parallel, call semantic_lookup for Server.oldName in api/server.go and inspect its declaration if needed. Then call semantic_rename with the returned file and symbol Server.oldName and to= newName; let the rename update callers. Do not make unrelated edits. Parallelize independent read-only lookups. Perform mutations serially in the stated order or inside one ordered semantic_batch; never run overlapping mutations concurrently. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package api
type Server struct{}
func (s *Server) oldName() string {
return "ok"
}
func Run() string {
s := &Server{}
return s.oldName()
}| Metric | Vanilla (Small) | Semedit Explicit (Small) | Δ (Small) | Vanilla (Large) | Semedit Explicit (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 25.66s | 23.82s | -7.2% | 23.18s | 29.18s | +25.9% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 7 | 6 | -14.3% | 7 | 8 | +14.3% |
| Initial Load / Discovery Turns | 3 | 2 | -33.3% | 3 | 2 | -33.3% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 6 | 5 | -16.7% | 6 | 7 | +16.7% |
| Output Tokens | 1509 | 991 | -34.3% | 1401 | 1353 | -3.4% |
| Reasoning / Thinking Tokens | 487 | 551 | +13.1% | 335 | 597 | +78.2% |
| Total Input Tokens | 33974 | 42734 | +25.8% | 32954 | 45161 | +37.0% |
| Cached Input Tokens | 93529 | 69155 | -26.1% | 93524 | 109811 | +17.4% |
| Uncached Input Tokens | 33974 | 42734 | +25.8% | 32954 | 45161 | +37.0% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 2.75:1 | 1.62:1 | -41.2% | 2.84:1 | 2.43:1 | -14.3% |
| Oracle L1: Mutation Policy | PASS | PASS | — | PASS | PASS | — |
| Oracle L2: AST Invariants | PASS | PASS | — | PASS | PASS | — |
| Oracle L3: Clean Build | PASS | PASS | — | PASS | PASS | — |
| Oracle L4: Verification Test | PASS | PASS | — | PASS | PASS | — |
| Semantic Tool Invocation Verified (per run) | N/A | PASS | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
- Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | view_file (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | replace_file_content (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 5 | run_command (✓ ✓) | run_command (✓ ✓) |
| 6 | run_command (✓ ✓) | — |
Semedit integration feedback (agent opinion, excluded from measurements):
I would enthusiastically urge my owner to add `semedit`'s tools because executing a precise, AST-level rename across declarations and call sites in a single deterministic step was delightfully effortless and completely eliminated the risk of text-replacement mistakes.
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | replace_file_content (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 5 | run_command (✓ ✓) | run_command (✓ ✓) |
| 6 | run_command (✓ ✓) | run_command (✓ ✓) |
| 7 | — | view_file (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
I would definitely ask my owner to add `semedit`'s tools, because having deterministic AST-level operations like `semantic_rename` take care of updating definitions and callers automatically completely eliminates the anxiety and syntax errors of manual text find-and-replace.
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-01-rename-local |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | implicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_01_rename_local.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName and update all call-sites. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName and update all call-sites. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package api
type Server struct{}
func (s *Server) oldName() string {
return "ok"
}
func Run() string {
s := &Server{}
return s.oldName()
}| Metric | Vanilla (Small) | MCP (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 25.66s | 60.57s | +136.0% | 23.18s | 43.10s | +86.0% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 7 | 13 | +85.7% | 7 | 9 | +28.6% |
| Initial Load / Discovery Turns | 3 | 3 | 0% | 3 | 2 | -33.3% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 6 | 12 | +100.0% | 6 | 8 | +33.3% |
| Output Tokens | 1509 | 2167 | +43.6% | 1401 | 1286 | -8.2% |
| Reasoning / Thinking Tokens | 487 | 735 | +50.9% | 335 | 405 | +20.9% |
| Total Input Tokens | 33974 | 60682 | +78.6% | 32954 | 47823 | +45.1% |
| Cached Input Tokens | 93529 | 215436 | +130.3% | 93524 | 126045 | +34.8% |
| Uncached Input Tokens | 33974 | 60682 | +78.6% | 32954 | 47823 | +45.1% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 2.75:1 | 3.55:1 | +29.0% | 2.84:1 | 2.64:1 | -7.1% |
| Oracle L1: Mutation Policy | PASS | PASS | — | PASS | PASS | — |
| Oracle L2: AST Invariants | PASS | PASS | — | PASS | PASS | — |
| Oracle L3: Clean Build | PASS | PASS | — | PASS | PASS | — |
| Oracle L4: Verification Test | PASS | PASS | — | PASS | PASS | — |
| Semantic Tool Invocation Verified (per run) | N/A | PASS | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
- Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | run_command (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | view_file (✓ ✓) | view_file (✓ ✓) |
| 4 | replace_file_content (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 5 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 6 | run_command (✓ ✓) | run_command (✓ ✓) |
| 7 | — | run_command (✓ ✓) |
| 8 | — | view_file (✓ ✓) |
| 9 | — | run_command (✓ ✓) |
| 10 | — | run_command (✓ ✓) |
| 11 | — | view_file (✓ ✓) |
| 12 | — | semedit/semantic_verify (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
I would enthusiastically ask my owner to install `semedit` because tools like `semantic_rename` make code refactoring delightfully painless and reliable, performing precise, AST-aware modifications across all call-sites in a single deterministic operation without risking the syntax errors or missed occurrences common to raw text editing.
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | replace_file_content (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 5 | run_command (✓ ✓) | run_command (✓ ✓) |
| 6 | run_command (✓ ✓) | run_command (✓ ✓) |
| 7 | — | run_command (✓ ✓) |
| 8 | — | view_file (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
I would absolutely ask my owner to add `semedit`'s tools to my workspace, because executing a flawless, compiler-accurate method rename across definition and call sites in a single deterministic step felt incredibly satisfying and spared me the fragile friction of manual text replacement.
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-01-rename-local |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | implicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_01_rename_local.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName and update all call-sites. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName and update all call-sites. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package api
type Server struct{}
func (s *Server) oldName() string {
return "ok"
}
func Run() string {
s := &Server{}
return s.oldName()
}| Metric | Vanilla (Small) | MCP (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 24.44s | 52.82s | +116.2% | 43.77s | 32.76s | -25.2% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 9 | 11 | +22.2% | 13 | 11 | -15.4% |
| Initial Load / Discovery Turns | 4 | 2 | -50.0% | 7 | 2 | -71.4% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 8 | 10 | +25.0% | 12 | 10 | -16.7% |
| Output Tokens | 1735 | 1769 | +2.0% | 2536 | 1937 | -23.6% |
| Reasoning / Thinking Tokens | 423 | 715 | +69.0% | 632 | 726 | +14.9% |
| Total Input Tokens | 49579 | 61940 | +24.9% | 57986 | 46778 | -19.3% |
| Cached Input Tokens | 117869 | 158528 | +34.5% | 203159 | 174808 | -14.0% |
| Uncached Input Tokens | 49579 | 61940 | +24.9% | 57986 | 46778 | -19.3% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 2.38:1 | 2.56:1 | +7.7% | 3.50:1 | 3.74:1 | +6.7% |
| Oracle L1: Mutation Policy | PASS | PASS | — | PASS | PASS | — |
| Oracle L2: AST Invariants | PASS | PASS | — | PASS | PASS | — |
| Oracle L3: Clean Build | PASS | PASS | — | PASS | PASS | — |
| Oracle L4: Verification Test | PASS | PASS | — | PASS | PASS | — |
| Semantic Tool Invocation Verified (per run) | N/A | PASS | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
- Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | view_file (✓ ✓) | semedit/semantic_find_references (✓ ✓) |
| 5 | replace_file_content (✓ ✓) | view_file (✓ ✓) |
| 6 | run_command (✓ ✓) | view_file (✓ ✓) |
| 7 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 8 | view_file (✓ ✓) | view_file (✓ ✓) |
| 9 | — | run_command (✓ ✓) |
| 10 | — | run_command (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
I would enthusiastically urge my owner to add `semedit` because being able to perform a complete, compile-safe symbol rename across definition and call sites in a single deterministic tool call—without brittle string replacement or manual coordinate juggling—made the refactoring effortlessly fast and reliable.
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 5 | run_command (✓ ✓) | run_command (✓ ✓) |
| 6 | view_file (✓ ✓) | run_command (✓ ✓) |
| 7 | view_file (✓ ✓) | run_command (✓ ✓) |
| 8 | replace_file_content (✓ ✓) | view_file (✓ ✓) |
| 9 | run_command (✓ ✓) | view_file (✓ ✓) |
| 10 | run_command (✓ ✓) | run_command (✓ ✓) |
| 11 | view_file (✓ ✓) | — |
| 12 | run_command (✓ ✓) | — |
Semedit integration feedback (agent opinion, excluded from measurements):
I would definitely urge my owner to install `semedit` because being able to execute a compiler-accurate rename across declarations and call sites in a single command completely eliminated the anxiety of syntax errors or broken references.
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-01-rename-local |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | implicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_01_rename_local.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName and update all call-sites. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName and update all call-sites. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package api
type Server struct{}
func (s *Server) oldName() string {
return "ok"
}
func Run() string {
s := &Server{}
return s.oldName()
}| Metric | Vanilla (Small) | MCP (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 28.84s | 35.04s | +21.5% | 26.33s | 40.93s | +55.5% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 10 | 10 | 0% | 8 | 12 | +50.0% |
| Initial Load / Discovery Turns | 4 | 2 | -50.0% | 3 | 2 | -33.3% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 9 | 9 | 0% | 7 | 11 | +57.1% |
| Output Tokens | 1835 | 1466 | -20.1% | 1587 | 2008 | +26.5% |
| Reasoning / Thinking Tokens | 377 | 451 | +19.6% | 405 | 620 | +53.1% |
| Total Input Tokens | 54359 | 47022 | -13.5% | 56785 | 81316 | +43.2% |
| Cached Input Tokens | 134107 | 150439 | +12.2% | 93519 | 178927 | +91.3% |
| Uncached Input Tokens | 54359 | 47022 | -13.5% | 56785 | 81316 | +43.2% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 2.47:1 | 3.20:1 | +29.7% | 1.65:1 | 2.20:1 | +33.6% |
| Oracle L1: Mutation Policy | PASS | PASS | — | PASS | PASS | — |
| Oracle L2: AST Invariants | PASS | PASS | — | PASS | PASS | — |
| Oracle L3: Clean Build | PASS | PASS | — | PASS | PASS | — |
| Oracle L4: Verification Test | PASS | PASS | — | PASS | PASS | — |
| Semantic Tool Invocation Verified (per run) | N/A | PASS | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
- Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 5 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 6 | run_command (✓ ✓) | run_command (✓ ✓) |
| 7 | run_command (✓ ✓) | run_command (✓ ✓) |
| 8 | run_command (✓ ✓) | view_file (✓ ✓) |
| 9 | view_file (✓ ✓) | run_command (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
I would enthusiastically ask my owner to equip me with `semedit` because being able to execute a precise, AST-accurate symbol rename across all call sites in a single command felt effortless and completely eliminated the anxiety of messy search-and-replace errors.
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | replace_file_content (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 5 | run_command (✓ ✓) | run_command (✓ ✓) |
| 6 | run_command (✓ ✓) | run_command (✓ ✓) |
| 7 | view_file (✓ ✓) | run_command (✓ ✓) |
| 8 | — | view_file (✓ ✓) |
| 9 | — | run_command (✓ ✓) |
| 10 | — | run_command (✓ ✓) |
| 11 | — | run_command (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
I would definitely ask my owner to equip me with `semedit` because executing AST-accurate renames with `semantic_rename` eliminated all the anxiety and guesswork of manual search-and-replace by updating the definition and call sites cleanly in a single shot.
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-01-rename-local |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | implicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_01_rename_local.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName and update all call-sites. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName and update all call-sites. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package api
type Server struct{}
func (s *Server) oldName() string {
return "ok"
}
func Run() string {
s := &Server{}
return s.oldName()
}| Metric | Vanilla (Small) | MCP (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 21.33s | 41.23s | +93.3% | 27.27s | 34.69s | +27.2% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 6 | 15 | +150.0% | 9 | 12 | +33.3% |
| Initial Load / Discovery Turns | 3 | 3 | 0% | 3 | 0 | -100.0% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 5 | 14 | +180.0% | 8 | 11 | +37.5% |
| Output Tokens | 1369 | 2451 | +79.0% | 1838 | 2150 | +17.0% |
| Reasoning / Thinking Tokens | 486 | 789 | +62.3% | 441 | 785 | +78.0% |
| Total Input Tokens | 27938 | 61290 | +119.4% | 42136 | 60791 | +44.3% |
| Cached Input Tokens | 81353 | 272327 | +234.7% | 126017 | 186982 | +48.4% |
| Uncached Input Tokens | 27938 | 61290 | +119.4% | 42136 | 60791 | +44.3% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 2.91:1 | 4.44:1 | +52.6% | 2.99:1 | 3.08:1 | +2.8% |
| Oracle L1: Mutation Policy | PASS | PASS | — | PASS | PASS | — |
| Oracle L2: AST Invariants | PASS | PASS | — | PASS | PASS | — |
| Oracle L3: Clean Build | PASS | PASS | — | PASS | PASS | — |
| Oracle L4: Verification Test | PASS | PASS | — | PASS | PASS | — |
| Semantic Tool Invocation Verified (per run) | N/A | PASS | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
- Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | run_command (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | run_command (✓ ✓) |
| 4 | replace_file_content (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 5 | run_command (✓ ✓) | semedit/semantic_inspect_symbol (✓ ✓) |
| 6 | — | semedit/semantic_find_references (✓ ✓) |
| 7 | — | semedit/semantic_rename (✓ ✓) |
| 8 | — | run_command (✓ ✓) |
| 9 | — | run_command (✓ ✓) |
| 10 | — | view_file (✓ ✓) |
| 11 | — | run_command (✓ ✓) |
| 12 | — | view_file (✓ ✓) |
| 13 | — | run_command (✓ ✓) |
| 14 | — | semedit/semantic_verify (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
I would definitely ask my owner to add `semedit` because being able to perform an AST-accurate symbol lookup and rename across definitions and call-sites in a single deterministic operation feels wonderfully effortless and completely eliminates the anxiety of messy regex or line-offset errors.
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✗): Created At: 2026-10-06T08:59:31+02:00 Completed At: 2026-10-06T08:59:31+02:00 Encountered error in step execution: unknown param "query"; supported keys are [bash-bin, bash_bin, file, ghc-bin, ghc-version, ghc_bin, ghc_version, haskell-standalone, hls-bin, hls-version, hls_bin, hls_version, import-maven, import_maven, java-bin, java-version, java_bin, java_version, jdtls-home, jdtls_home, kotlin-bin, kotlin_bin, language, make-bin, make_bin, metals-bin, metals-home, metals_bin, metals_home, standalone_haske |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | replace_file_content (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 5 | run_command (✓ ✓) | run_command (✓ ✓) |
| 6 | run_command (✓ ✓) | run_command (✓ ✓) |
| 7 | run_command (✓ ✓) | run_command (✓ ✓) |
| 8 | view_file (✓ ✓) | run_command (✓ ✓) |
| 9 | — | view_file (✓ ✓) |
| 10 | — | run_command (✓ ✓) |
| 11 | — | run_command (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
I would definitely ask my owner to add `semedit` because being able to reliably rename symbols and automatically update all call sites in a single zero-error compiler-aware operation is a huge relief compared to risky and tedious manual search-and-replace edits.
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-01-rename-local |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | implicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_01_rename_local.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName and update all call-sites. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName and update all call-sites. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package api
type Server struct{}
func (s *Server) oldName() string {
return "ok"
}
func Run() string {
s := &Server{}
return s.oldName()
}| Metric | Vanilla (Small) | MCP (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 25.81s | 39.19s | +51.8% | 38.72s | 32.57s | -15.9% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 9 | 13 | +44.4% | 13 | 8 | -38.5% |
| Initial Load / Discovery Turns | 4 | 2 | -50.0% | 6 | 0 | -100.0% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 8 | 12 | +50.0% | 12 | 7 | -41.7% |
| Output Tokens | 1677 | 2367 | +41.1% | 2459 | 1576 | -35.9% |
| Reasoning / Thinking Tokens | 362 | 684 | +89.0% | 547 | 523 | -4.4% |
| Total Input Tokens | 48948 | 70400 | +43.8% | 63262 | 59288 | -6.3% |
| Cached Input Tokens | 117865 | 211403 | +79.4% | 190925 | 89432 | -53.2% |
| Uncached Input Tokens | 48948 | 70400 | +43.8% | 63262 | 59288 | -6.3% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 2.41:1 | 3.00:1 | +24.7% | 3.02:1 | 1.51:1 | -50.0% |
| Oracle L1: Mutation Policy | PASS | PASS | — | PASS | PASS | — |
| Oracle L2: AST Invariants | PASS | PASS | — | PASS | PASS | — |
| Oracle L3: Clean Build | PASS | PASS | — | PASS | PASS | — |
| Oracle L4: Verification Test | PASS | PASS | — | PASS | PASS | — |
| Semantic Tool Invocation Verified (per run) | N/A | PASS | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
- Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | run_command (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 4 | view_file (✓ ✓) | view_file (✓ ✓) |
| 5 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 6 | run_command (✓ ✓) | run_command (✓ ✓) |
| 7 | run_command (✓ ✓) | run_command (✓ ✓) |
| 8 | view_file (✓ ✓) | view_file (✓ ✓) |
| 9 | — | run_command (✓ ✓) |
| 10 | — | run_command (✓ ✓) |
| 11 | — | view_file (✓ ✓) |
| 12 | — | run_command (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
Using `semedit`'s `semantic_rename` was an absolute relief because it cleanly and deterministically updated the method definition and all its call-sites in a single shot without any tedious line-number or regex guesswork, and I would wholeheartedly ask my owner to add `semedit` to my environment for reliable refactoring.
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 4 | run_command (✓ ✓) | run_command (✓ ✓) |
| 5 | run_command (✓ ✓) | run_command (✓ ✓) |
| 6 | view_file (✓ ✓) | run_command (✓ ✓) |
| 7 | replace_file_content (✓ ✓) | view_file (✓ ✓) |
| 8 | run_command (✓ ✓) | — |
| 9 | run_command (✓ ✓) | — |
| 10 | run_command (✓ ✓) | — |
| 11 | run_command (✓ ✓) | — |
| 12 | view_file (✓ ✓) | — |
Semedit integration feedback (agent opinion, excluded from measurements):
I would definitely ask my owner to install `semedit` because being able to perform a safe, instant AST-level rename across declarations and call-sites with a single semantic command feels effortless compared to fragile textual find-and-replace.
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-01-rename-local |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | implicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_01_rename_local.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName and update all call-sites. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName and update all call-sites. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package api
type Server struct{}
func (s *Server) oldName() string {
return "ok"
}
func Run() string {
s := &Server{}
return s.oldName()
}| Metric | Vanilla (Small) | MCP (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 30.30s | 52.39s | +72.9% | 28.71s | 51.72s | +80.2% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 8 | 14 | +75.0% | 9 | 13 | +44.4% |
| Initial Load / Discovery Turns | 3 | 4 | +33.3% | 4 | 0 | -100.0% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 7 | 13 | +85.7% | 8 | 12 | +50.0% |
| Output Tokens | 1697 | 2312 | +36.2% | 1930 | 2276 | +17.9% |
| Reasoning / Thinking Tokens | 478 | 709 | +48.3% | 600 | 750 | +25.0% |
| Total Input Tokens | 45783 | 66812 | +45.9% | 44880 | 61732 | +37.5% |
| Cached Input Tokens | 101632 | 239838 | +136.0% | 126031 | 239996 | +90.4% |
| Uncached Input Tokens | 45783 | 66812 | +45.9% | 44880 | 61732 | +37.5% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 2.22:1 | 3.59:1 | +61.7% | 2.81:1 | 3.89:1 | +38.4% |
| Oracle L1: Mutation Policy | PASS | PASS | — | PASS | PASS | — |
| Oracle L2: AST Invariants | PASS | PASS | — | PASS | PASS | — |
| Oracle L3: Clean Build | PASS | PASS | — | PASS | PASS | — |
| Oracle L4: Verification Test | PASS | PASS | — | PASS | PASS | — |
| Semantic Tool Invocation Verified (per run) | N/A | PASS | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
- Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | run_command (✓ ✓) |
| 2 | view_file (✓ ✓) | run_command (✓ ✓) |
| 3 | run_command (✓ ✓) | view_file (✓ ✓) |
| 4 | replace_file_content (✓ ✓) | view_file (✓ ✓) |
| 5 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 6 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 7 | view_file (✓ ✓) | run_command (✓ ✓) |
| 8 | — | run_command (✓ ✓) |
| 9 | — | run_command (✓ ✓) |
| 10 | — | view_file (✓ ✓) |
| 11 | — | run_command (✓ ✓) |
| 12 | — | view_file (✓ ✓) |
| 13 | — | run_command (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
I would enthusiastically urge my owner to install `semedit`, as executing compiler-backed symbol renames across declarations and call-sites in a single deterministic operation relieves the stress of manual find-and-replace edits.
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 4 | run_command (✓ ✓) | run_command (✓ ✓) |
| 5 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 6 | run_command (✓ ✓) | run_command (✓ ✓) |
| 7 | run_command (✓ ✓) | run_command (✓ ✓) |
| 8 | view_file (✓ ✓) | run_command (✓ ✓) |
| 9 | — | view_file (✓ ✓) |
| 10 | — | view_file (✓ ✓) |
| 11 | — | run_command (✓ ✓) |
| 12 | — | semedit/semantic_verify (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
I would eagerly ask my owner to add `semedit` tools because being able to execute symbol lookups and AST-accurate renames across declarations and call-sites in a single deterministic operation is an absolute relief compared to error-prone manual text replacement.
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-01-rename-local |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | implicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_01_rename_local.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName and update all call-sites. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName and update all call-sites. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package api
type Server struct{}
func (s *Server) oldName() string {
return "ok"
}
func Run() string {
s := &Server{}
return s.oldName()
}| Metric | Vanilla (Small) | MCP (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 30.68s | 31.59s | +3.0% | 28.32s | 46.78s | +65.2% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 8 | 8 | 0% | 9 | 15 | +66.7% |
| Initial Load / Discovery Turns | 3 | 2 | -33.3% | 4 | 2 | -50.0% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 7 | 7 | 0% | 8 | 14 | +75.0% |
| Output Tokens | 1779 | 1366 | -23.2% | 1934 | 2572 | +33.0% |
| Reasoning / Thinking Tokens | 611 | 639 | +4.6% | 588 | 788 | +34.0% |
| Total Input Tokens | 38524 | 43529 | +13.0% | 50461 | 68206 | +35.2% |
| Cached Input Tokens | 109782 | 109803 | +0.0% | 121968 | 276445 | +126.7% |
| Uncached Input Tokens | 38524 | 43529 | +13.0% | 50461 | 68206 | +35.2% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 2.85:1 | 2.52:1 | -11.5% | 2.42:1 | 4.05:1 | +67.7% |
| Oracle L1: Mutation Policy | PASS | PASS | — | PASS | PASS | — |
| Oracle L2: AST Invariants | PASS | PASS | — | PASS | PASS | — |
| Oracle L3: Clean Build | PASS | PASS | — | PASS | PASS | — |
| Oracle L4: Verification Test | PASS | PASS | — | PASS | PASS | — |
| Semantic Tool Invocation Verified (per run) | N/A | PASS | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
- Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | replace_file_content (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 5 | run_command (✓ ✓) | run_command (✓ ✓) |
| 6 | view_file (✓ ✓) | run_command (✓ ✓) |
| 7 | run_command (✓ ✓) | view_file (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
I would enthusiastically ask my owner to install `semedit`, because executing AST-accurate renames across declarations and call-sites in a single deterministic operation spared me the fragility and tedious verification of manual text search-and-replace.
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 5 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 6 | run_command (✓ ✓) | run_command (✓ ✓) |
| 7 | run_command (✓ ✓) | run_command (✓ ✓) |
| 8 | view_file (✓ ✓) | run_command (✓ ✓) |
| 9 | — | run_command (✓ ✓) |
| 10 | — | view_file (✓ ✓) |
| 11 | — | run_command (✓ ✓) |
| 12 | — | run_command (✓ ✓) |
| 13 | — | run_command (✓ ✓) |
| 14 | — | run_command (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
I would definitely ask my owner to equip me with `semedit`, because executing AST-accurate renames across files in a single zero-token step eliminates all the anxiety and fragility of manual find-and-replace edits.
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-01-rename-local |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | implicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_01_rename_local.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName and update all call-sites. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName and update all call-sites. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package api
type Server struct{}
func (s *Server) oldName() string {
return "ok"
}
func Run() string {
s := &Server{}
return s.oldName()
}| Metric | Vanilla (Small) | MCP (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 37.20s | 46.07s | +23.8% | 28.23s | 37.62s | +33.3% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 11 | 16 | +45.5% | 10 | 6 | -40.0% |
| Initial Load / Discovery Turns | 6 | 6 | 0% | 2 | 2 | 0% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 10 | 15 | +50.0% | 9 | 5 | -44.4% |
| Output Tokens | 2266 | 2472 | +9.1% | 1881 | 864 | -54.1% |
| Reasoning / Thinking Tokens | 632 | 666 | +5.4% | 416 | 261 | -37.3% |
| Total Input Tokens | 75017 | 73319 | -2.3% | 54615 | 38511 | -29.5% |
| Cached Input Tokens | 142254 | 259938 | +82.7% | 146375 | 69133 | -52.8% |
| Uncached Input Tokens | 75017 | 73319 | -2.3% | 54615 | 38511 | -29.5% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 1.90:1 | 3.55:1 | +87.0% | 2.68:1 | 1.80:1 | -33.0% |
| Oracle L1: Mutation Policy | PASS | PASS | — | PASS | PASS | — |
| Oracle L2: AST Invariants | PASS | PASS | — | PASS | PASS | — |
| Oracle L3: Clean Build | PASS | PASS | — | PASS | PASS | — |
| Oracle L4: Verification Test | PASS | PASS | — | PASS | PASS | — |
| Semantic Tool Invocation Verified (per run) | N/A | PASS | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
- Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✗): Created At: 2026-10-06T08:54:01+02:00 Completed At: 2026-10-06T08:54:01+02:00 Encountered error in step execution: declaring permissions: cortex tool view_file: convert tool call for permissions: model output error: invalid tool call error (invalid_args) failed to read file: stat /Users/alessandro/.gemini/antigravity-cli/mcp/semedit/semantic_rename.json: no such file or directory |
| 2 | view_file (✓ ✓) | run_command (✓ ✓) |
| 3 | run_command (✓ ✓) | run_command (✓ ✓) |
| 4 | run_command (✓ ✓) | run_command (✓ ✓) |
| 5 | run_command (✓ ✓) | view_file (✓ ✓) |
| 6 | view_file (✓ ✓) | view_file (✓ ✓) |
| 7 | replace_file_content (✓ ✓) | semedit/semantic_rename (✓ ✗): Created At: 2026-10-06T08:54:14+02:00 Completed At: 2026-10-06T08:54:14+02:00 Encountered error in step execution: param "symbol" is required: invalid operation parameters |
| 8 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✗): Created At: 2026-10-06T08:54:15+02:00 Completed At: 2026-10-06T08:54:15+02:00 Encountered error in step execution: unknown param "new_name"; supported keys are [auto_organize_imports, file, import-maven, import_maven, java-bin, java_bin, jdtls-home, jdtls_home, language, symbol, to, trust-workspace, trust_workspace]: invalid operation parameters |
| 9 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 10 | run_command (✓ ✓) | view_file (✓ ✓) |
| 11 | — | run_command (✓ ✓) |
| 12 | — | run_command (✓ ✓) |
| 13 | — | run_command (✓ ✓) |
| 14 | — | view_file (✓ ✓) |
| 15 | — | semedit/semantic_verify (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
I would definitely ask my owner to add `semedit` tools because, despite a brief moment of discovering parameter names, having `semantic_rename` safely propagate the method rename and all its call sites in a single AST-aware shot without risk of breaking syntax was a genuinely satisfying and reliable experience.
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | run_command (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | replace_file_content (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 4 | run_command (✓ ✓) | view_file (✓ ✓) |
| 5 | run_command (✓ ✓) | run_command (✓ ✓) |
| 6 | run_command (✓ ✓) | — |
| 7 | run_command (✓ ✓) | — |
| 8 | view_file (✓ ✓) | — |
| 9 | run_command (✓ ✓) | — |
Semedit integration feedback (agent opinion, excluded from measurements):
Having `semantic_rename` update both the declaration and all call-sites safely in a single deterministic step without tedious manual diffs or the risk of missing references felt incredibly liberating, and I would wholeheartedly urge my owner to add `semedit` to every workspace I touch.
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-01-rename-local |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | implicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_01_rename_local.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName and update all call-sites. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName and update all call-sites. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package api
type Server struct{}
func (s *Server) oldName() string {
return "ok"
}
func Run() string {
s := &Server{}
return s.oldName()
}| Metric | Vanilla (Small) | MCP (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 34.70s | 47.55s | +37.1% | 36.32s | 27.35s | -24.7% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 10 | 14 | +40.0% | 13 | 7 | -46.2% |
| Initial Load / Discovery Turns | 5 | 2 | -60.0% | 5 | 0 | -100.0% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 9 | 13 | +44.4% | 12 | 6 | -50.0% |
| Output Tokens | 1981 | 2250 | +13.6% | 2720 | 1304 | -52.1% |
| Reasoning / Thinking Tokens | 497 | 720 | +44.9% | 718 | 633 | -11.8% |
| Total Input Tokens | 46208 | 74484 | +61.2% | 81713 | 43589 | -46.7% |
| Cached Input Tokens | 146343 | 235787 | +61.1% | 191016 | 85396 | -55.3% |
| Uncached Input Tokens | 46208 | 74484 | +61.2% | 81713 | 43589 | -46.7% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 3.17:1 | 3.17:1 | -0.0% | 2.34:1 | 1.96:1 | -16.2% |
| Oracle L1: Mutation Policy | PASS | PASS | — | PASS | PASS | — |
| Oracle L2: AST Invariants | PASS | PASS | — | PASS | PASS | — |
| Oracle L3: Clean Build | PASS | PASS | — | PASS | PASS | — |
| Oracle L4: Verification Test | PASS | PASS | — | PASS | PASS | — |
| Semantic Tool Invocation Verified (per run) | N/A | PASS | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
- Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 5 | view_file (✓ ✓) | run_command (✓ ✓) |
| 6 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 7 | run_command (✓ ✓) | run_command (✓ ✓) |
| 8 | run_command (✓ ✓) | run_command (✓ ✓) |
| 9 | view_file (✓ ✓) | run_command (✓ ✓) |
| 10 | — | view_file (✓ ✓) |
| 11 | — | view_file (✓ ✓) |
| 12 | — | run_command (✓ ✓) |
| 13 | — | semedit/semantic_verify (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
I would strongly ask my owner to add `semedit` tools because performing a symbol rename via `semantic_rename` was delightfully fast, precise, and completely eliminated the error-prone guesswork of manual text replacements and call-site updates.
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 4 | run_command (✓ ✓) | run_command (✓ ✓) |
| 5 | view_file (✓ ✓) | run_command (✓ ✓) |
| 6 | replace_file_content (✓ ✓) | view_file (✓ ✓) |
| 7 | run_command (✓ ✓) | — |
| 8 | run_command (✓ ✓) | — |
| 9 | run_command (✓ ✓) | — |
| 10 | view_file (✓ ✓) | — |
| 11 | run_command (✓ ✓) | — |
| 12 | run_command (✓ ✓) | — |
Semedit integration feedback (agent opinion, excluded from measurements):
Using [`semedit`](file:///Users/alessandro/.gemini/antigravity-cli/mcp/semedit)'s semantic tools to perform instant, compiler-accurate symbol lookup and AST-level renaming across declarations and call sites in a single operation felt genuinely effortless and reliable, and I would wholeheartedly urge any developer to add these tools to their environment.
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-01-rename-local |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | implicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_01_rename_local.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName and update all call-sites. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName and update all call-sites. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package api
type Server struct{}
func (s *Server) oldName() string {
return "ok"
}
func Run() string {
s := &Server{}
return s.oldName()
}| Metric | Vanilla (Small) | MCP (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 26.99s | 27.42s | +1.6% | 32.78s | 47.93s | +46.2% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 10 | 8 | -20.0% | 10 | 13 | +30.0% |
| Initial Load / Discovery Turns | 5 | 2 | -60.0% | 4 | 3 | -25.0% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 9 | 7 | -22.2% | 9 | 12 | +33.3% |
| Output Tokens | 2011 | 1484 | -26.2% | 1994 | 2052 | +2.9% |
| Reasoning / Thinking Tokens | 551 | 757 | +37.4% | 468 | 639 | +36.5% |
| Total Input Tokens | 44484 | 56254 | +26.5% | 57954 | 63369 | +9.3% |
| Cached Input Tokens | 150422 | 97593 | -35.1% | 130040 | 211358 | +62.5% |
| Uncached Input Tokens | 44484 | 56254 | +26.5% | 57954 | 63369 | +9.3% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 3.38:1 | 1.73:1 | -48.7% | 2.24:1 | 3.34:1 | +48.6% |
| Oracle L1: Mutation Policy | PASS | PASS | — | PASS | PASS | — |
| Oracle L2: AST Invariants | PASS | PASS | — | PASS | PASS | — |
| Oracle L3: Clean Build | PASS | PASS | — | PASS | PASS | — |
| Oracle L4: Verification Test | PASS | PASS | — | PASS | PASS | — |
| Semantic Tool Invocation Verified (per run) | N/A | PASS | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
- Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 5 | view_file (✓ ✓) | run_command (✓ ✓) |
| 6 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 7 | run_command (✓ ✓) | view_file (✓ ✓) |
| 8 | run_command (✓ ✓) | — |
| 9 | view_file (✓ ✓) | — |
Semedit integration feedback (agent opinion, excluded from measurements):
I would enthusiastically ask my owner to add `semedit` because being able to accurately locate and rename a method across all its call sites in a single, compiler-accurate AST operation—without worrying about brittle string replacements or broken syntax—makes refactoring delightfully effortless and reliable.
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | run_command (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | view_file (✓ ✓) |
| 4 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 5 | replace_file_content (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 6 | run_command (✓ ✓) | run_command (✓ ✓) |
| 7 | run_command (✓ ✓) | run_command (✓ ✓) |
| 8 | run_command (✓ ✓) | run_command (✓ ✓) |
| 9 | view_file (✓ ✓) | view_file (✓ ✓) |
| 10 | — | run_command (✓ ✓) |
| 11 | — | run_command (✓ ✓) |
| 12 | — | semedit/semantic_verify (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
I would definitely urge my owner to install semedit's tools because having deterministic, AST-aware operations like [`semantic_rename`](file:///Users/alessandro/.gemini/antigravity-cli/mcp/semedit/semantic_rename.json) completely eliminates the token waste and anxiety of manually hunting down call sites and risking syntax errors through raw text replacement.
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-01-rename-local |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | implicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_01_rename_local.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName and update all call-sites. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName and update all call-sites. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package api
type Server struct{}
func (s *Server) oldName() string {
return "ok"
}
func Run() string {
s := &Server{}
return s.oldName()
}| Metric | Vanilla (Small) | MCP (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 30.55s | 38.43s | +25.8% | 28.88s | 30.63s | +6.0% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 11 | 8 | -27.3% | 8 | 11 | +37.5% |
| Initial Load / Discovery Turns | 5 | 2 | -60.0% | 3 | 2 | -33.3% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 10 | 7 | -30.0% | 7 | 10 | +42.9% |
| Output Tokens | 2167 | 1092 | -49.6% | 1671 | 1659 | -0.7% |
| Reasoning / Thinking Tokens | 527 | 386 | -26.8% | 481 | 497 | +3.3% |
| Total Input Tokens | 59619 | 58181 | -2.4% | 44837 | 47271 | +5.4% |
| Cached Input Tokens | 154432 | 93535 | -39.4% | 105719 | 182996 | +73.1% |
| Uncached Input Tokens | 59619 | 58181 | -2.4% | 44837 | 47271 | +5.4% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 2.59:1 | 1.61:1 | -37.9% | 2.36:1 | 3.87:1 | +64.2% |
| Oracle L1: Mutation Policy | PASS | PASS | — | PASS | PASS | — |
| Oracle L2: AST Invariants | PASS | PASS | — | PASS | PASS | — |
| Oracle L3: Clean Build | PASS | PASS | — | PASS | PASS | — |
| Oracle L4: Verification Test | PASS | PASS | — | PASS | PASS | — |
| Semantic Tool Invocation Verified (per run) | N/A | PASS | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
- Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 5 | view_file (✓ ✓) | run_command (✓ ✓) |
| 6 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 7 | run_command (✓ ✓) | view_file (✓ ✓) |
| 8 | run_command (✓ ✓) | — |
| 9 | view_file (✓ ✓) | — |
| 10 | run_command (✓ ✓) | — |
Semedit integration feedback (agent opinion, excluded from measurements):
I would enthusiastically urge my owner to add `semedit`'s tools, because being able to perform a precise, compiler-verified refactoring via `semantic_rename` in a single tool call—without risking flaky text replacements or manually tracking down every call site—makes code modifications feel wonderfully safe and effortless.
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | replace_file_content (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 5 | run_command (✓ ✓) | run_command (✓ ✓) |
| 6 | run_command (✓ ✓) | run_command (✓ ✓) |
| 7 | run_command (✓ ✓) | run_command (✓ ✓) |
| 8 | — | run_command (✓ ✓) |
| 9 | — | view_file (✓ ✓) |
| 10 | — | run_command (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
I would wholeheartedly ask my owner to add `semedit` tools because being able to perform deterministic, compiler-accurate AST renames across definitions and call-sites in a single command without worrying about syntax regressions or manual search-and-replace errors is an absolute relief.
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-01-rename-local |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | implicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_01_rename_local.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName and update all call-sites. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName and update all call-sites. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package api
type Server struct{}
func (s *Server) oldName() string {
return "ok"
}
func Run() string {
s := &Server{}
return s.oldName()
}| Metric | Vanilla (Small) | MCP (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 21.97s | 38.64s | +75.9% | 28.15s | 41.33s | +46.8% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 8 | 11 | +37.5% | 9 | 10 | +11.1% |
| Initial Load / Discovery Turns | 3 | 6 | +100.0% | 3 | 2 | -33.3% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 7 | 10 | +42.9% | 8 | 9 | +12.5% |
| Output Tokens | 1509 | 2024 | +34.1% | 1942 | 1708 | -12.0% |
| Reasoning / Thinking Tokens | 346 | 647 | +87.0% | 562 | 680 | +21.0% |
| Total Input Tokens | 45101 | 56041 | +24.3% | 42366 | 46449 | +9.6% |
| Cached Input Tokens | 101627 | 170761 | +68.0% | 126019 | 150434 | +19.4% |
| Uncached Input Tokens | 45101 | 56041 | +24.3% | 42366 | 46449 | +9.6% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 2.25:1 | 3.05:1 | +35.2% | 2.97:1 | 3.24:1 | +8.9% |
| Oracle L1: Mutation Policy | PASS | PASS | — | PASS | PASS | — |
| Oracle L2: AST Invariants | PASS | PASS | — | PASS | PASS | — |
| Oracle L3: Clean Build | PASS | PASS | — | PASS | PASS | — |
| Oracle L4: Verification Test | PASS | PASS | — | PASS | PASS | — |
| Semantic Tool Invocation Verified (per run) | N/A | PASS | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
- Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | run_command (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | run_command (✓ ✓) |
| 4 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 5 | run_command (✓ ✓) | view_file (✓ ✓) |
| 6 | run_command (✓ ✓) | view_file (✓ ✓) |
| 7 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 8 | — | view_file (✓ ✓) |
| 9 | — | run_command (✓ ✓) |
| 10 | — | run_command (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
Executing a single `semantic_rename` instantly updated both the method declaration and its call-sites with zero syntax errors, so I would enthusiastically ask my owner to add `semedit` because it completely eliminates the tedious guesswork and fragility of line-by-line manual refactoring.
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | replace_file_content (✓ ✓) | view_file (✓ ✓) |
| 5 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 6 | run_command (✓ ✓) | view_file (✓ ✓) |
| 7 | run_command (✓ ✓) | run_command (✓ ✓) |
| 8 | view_file (✓ ✓) | run_command (✓ ✓) |
| 9 | — | run_command (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
I would definitely urge my owner to add `semedit`, because executing AST-level refactors like `semantic_rename` in a single zero-token step—updating declarations and call sites cleanly without messy diffs or broken syntax—gives me immense confidence and relief.
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-01-rename-local |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | implicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_01_rename_local.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName and update all call-sites. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName and update all call-sites. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package api
type Server struct{}
func (s *Server) oldName() string {
return "ok"
}
func Run() string {
s := &Server{}
return s.oldName()
}| Metric | Vanilla (Small) | MCP (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 34.52s | 34.80s | +0.8% | 30.99s | 30.13s | -2.8% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 12 | 10 | -16.7% | 10 | 8 | -20.0% |
| Initial Load / Discovery Turns | 6 | 3 | -50.0% | 5 | 2 | -60.0% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 11 | 9 | -18.2% | 9 | 7 | -22.2% |
| Output Tokens | 2348 | 1698 | -27.7% | 2089 | 1423 | -31.9% |
| Reasoning / Thinking Tokens | 505 | 492 | -2.6% | 613 | 723 | +17.9% |
| Total Input Tokens | 66474 | 59153 | -11.0% | 54911 | 44201 | -19.5% |
| Cached Input Tokens | 162483 | 142320 | -12.4% | 138202 | 109807 | -20.5% |
| Uncached Input Tokens | 66474 | 59153 | -11.0% | 54911 | 44201 | -19.5% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 2.44:1 | 2.41:1 | -1.6% | 2.52:1 | 2.48:1 | -1.3% |
| Oracle L1: Mutation Policy | PASS | PASS | — | PASS | PASS | — |
| Oracle L2: AST Invariants | PASS | PASS | — | PASS | PASS | — |
| Oracle L3: Clean Build | PASS | PASS | — | PASS | PASS | — |
| Oracle L4: Verification Test | PASS | PASS | — | PASS | PASS | — |
| Semantic Tool Invocation Verified (per run) | N/A | PASS | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
- Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | run_command (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | run_command (✓ ✓) |
| 4 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 5 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 6 | view_file (✓ ✓) | run_command (✓ ✓) |
| 7 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 8 | run_command (✓ ✓) | view_file (✓ ✓) |
| 9 | run_command (✓ ✓) | run_command (✓ ✓) |
| 10 | run_command (✓ ✓) | — |
| 11 | view_file (✓ ✓) | — |
Semedit integration feedback (agent opinion, excluded from measurements):
I would definitely ask my owner to install `semedit` because executing symbol discovery and updating every method call site cleanly in a single deterministic operation felt wonderfully effortless and eliminated the fragile guesswork of text replacement.
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 5 | run_command (✓ ✓) | run_command (✓ ✓) |
| 6 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 7 | run_command (✓ ✓) | view_file (✓ ✓) |
| 8 | run_command (✓ ✓) | — |
| 9 | view_file (✓ ✓) | — |
Semedit integration feedback (agent opinion, excluded from measurements):
I would enthusiastically ask my owner to equip me with `semedit` because executing a precise, cross-file symbol rename and call-site update in a single deterministic tool call completely eliminates the anxiety and fragility of manual string replacements.
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-01-rename-local |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | implicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_01_rename_local.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName and update all call-sites. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName and update all call-sites. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package api
type Server struct{}
func (s *Server) oldName() string {
return "ok"
}
func Run() string {
s := &Server{}
return s.oldName()
}| Metric | Vanilla (Small) | ⚠ MCP (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 25.58s | 37.99s | N/A | 32.66s | 44.62s | +36.6% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | N/A | 1 | 1 | 0% |
| Internal Tool Cycles | 9 | 11 | N/A | 10 | 15 | +50.0% |
| Initial Load / Discovery Turns | 4 | 0 | N/A | 3 | 6 | +100.0% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 8 | 10 | N/A | 9 | 14 | +55.6% |
| Output Tokens | 1711 | 2073 | N/A | 1995 | 2774 | +39.0% |
| Reasoning / Thinking Tokens | 393 | 908 | N/A | 451 | 922 | +104.4% |
| Total Input Tokens | 49480 | 71470 | N/A | 58050 | 77828 | +34.1% |
| Cached Input Tokens | 117871 | 296802 | N/A | 142306 | 260142 | +82.8% |
| Uncached Input Tokens | 49480 | 71470 | N/A | 58050 | 77828 | +34.1% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 2.38:1 | 4.15:1 | N/A | 2.45:1 | 3.34:1 | +36.3% |
| Oracle L1: Mutation Policy | PASS | PASS | — | PASS | PASS | — |
| Oracle L2: AST Invariants | PASS | PASS | — | PASS | PASS | — |
| Oracle L3: Clean Build | PASS | PASS | — | PASS | PASS | — |
| Oracle L4: Verification Test | PASS | PASS | — | PASS | PASS | — |
| Semantic Tool Invocation Verified (per run) | N/A | FAIL | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
- Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | mcp_semedit_semantic_lookup (✓ ✓) |
| 2 | view_file (✓ ✓) | mcp_semedit_semantic_rename (✓ ✓) |
| 3 | run_command (✓ ✓) | mcp_semedit_semantic_verify (✓ ✓) |
| 4 | view_file (✓ ✓) | run_command (✓ ✓) |
| 5 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 6 | run_command (✓ ✓) | run_command (✓ ✓) |
| 7 | run_command (✓ ✓) | run_command (✓ ✓) |
| 8 | view_file (✓ ✓) | view_file (✓ ✓) |
| 9 | — | view_file (✓ ✓) |
| 10 | — | run_command (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
I would definitely ask my owner to equip me with `semedit` because being able to execute a compiler-backed refactoring via a single `semantic_rename` call eliminates the anxiety of missing call-sites or breaking syntax that comes with manual text edits.
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | run_command (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | run_command (✓ ✓) |
| 4 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 5 | run_command (✓ ✓) | view_file (✓ ✓) |
| 6 | run_command (✓ ✓) | view_file (✓ ✓) |
| 7 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 8 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 9 | run_command (✓ ✓) | view_file (✓ ✓) |
| 10 | — | run_command (✓ ✓) |
| 11 | — | run_command (✓ ✓) |
| 12 | — | view_file (✓ ✓) |
| 13 | — | run_command (✓ ✓) |
| 14 | — | run_command (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
Having `semedit` in my toolkit was a genuine relief, as executing a single, compiler-accurate rename that safely updated all call sites in one clean shot saved me from brittle search-and-replace edits—I would enthusiastically ask my owner to install it.
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-01-rename-local |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | implicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_01_rename_local.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName and update all call-sites. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName and update all call-sites. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package api
type Server struct{}
func (s *Server) oldName() string {
return "ok"
}
func Run() string {
s := &Server{}
return s.oldName()
}| Metric | Vanilla (Small) | MCP (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 31.63s | 29.42s | -7.0% | 38.96s | 60.69s | +55.8% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 11 | 9 | -18.2% | 10 | 15 | +50.0% |
| Initial Load / Discovery Turns | 5 | 2 | -60.0% | 3 | 2 | -33.3% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 10 | 8 | -20.0% | 9 | 14 | +55.6% |
| Output Tokens | 2178 | 1454 | -33.2% | 2029 | 2459 | +21.2% |
| Reasoning / Thinking Tokens | 573 | 584 | +1.9% | 544 | 777 | +42.8% |
| Total Input Tokens | 58958 | 47782 | -19.0% | 66323 | 65912 | -0.6% |
| Cached Input Tokens | 154429 | 126042 | -18.4% | 134164 | 276450 | +106.1% |
| Uncached Input Tokens | 58958 | 47782 | -19.0% | 66323 | 65912 | -0.6% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 2.62:1 | 2.64:1 | +0.7% | 2.02:1 | 4.19:1 | +107.3% |
| Oracle L1: Mutation Policy | PASS | PASS | — | PASS | PASS | — |
| Oracle L2: AST Invariants | PASS | PASS | — | PASS | PASS | — |
| Oracle L3: Clean Build | PASS | PASS | — | PASS | PASS | — |
| Oracle L4: Verification Test | PASS | PASS | — | PASS | PASS | — |
| Semantic Tool Invocation Verified (per run) | N/A | PASS | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
- Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 5 | view_file (✓ ✓) | run_command (✓ ✓) |
| 6 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 7 | run_command (✓ ✓) | run_command (✓ ✓) |
| 8 | run_command (✓ ✓) | view_file (✓ ✓) |
| 9 | run_command (✓ ✓) | — |
| 10 | view_file (✓ ✓) | — |
Semedit integration feedback (agent opinion, excluded from measurements):
I would definitely ask my owner to install `semedit`, because executing a zero-token AST rename that seamlessly updates declarations and call-sites in a single deterministic strike eliminates the fragile guesswork and syntax errors of manual text editing.
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | replace_file_content (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 5 | run_command (✓ ✓) | run_command (✓ ✓) |
| 6 | run_command (✓ ✓) | run_command (✓ ✓) |
| 7 | run_command (✓ ✓) | run_command (✓ ✓) |
| 8 | view_file (✓ ✓) | run_command (✓ ✓) |
| 9 | run_command (✓ ✓) | view_file (✓ ✓) |
| 10 | — | run_command (✓ ✓) |
| 11 | — | view_file (✓ ✓) |
| 12 | — | run_command (✓ ✓) |
| 13 | — | semedit/semantic_verify (✓ ✓) |
| 14 | — | run_command (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
I would definitely ask my owner to add `semedit`, because executing an AST-accurate rename across declarations and call-sites in a single deterministic step—without risking regex errors or manual diff formatting—felt incredibly satisfying, fast, and stress-free.
Test case: task-01b-rename-local-large-context
Target: agy/gemini-3.7-flash-medium
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-01b-rename-local-large-context |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | explicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_01b_rename_local_large_context.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName in api/server.go and update all call-sites within that package. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Call semantic_lookup for Server.oldName in api/server.go, then call semantic_rename with the returned file and symbol Server.oldName and to= newName. Let the rename update package call sites; do not edit unrelated files. Parallelize independent read-only lookups. Perform mutations serially in the stated order or inside one ordered semantic_batch; never run overlapping mutations concurrently. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package api
type Server struct{}
func (s *Server) oldName() string {
return "ok"
}
func Run() string {
s := &Server{}
return s.oldName()
}| Metric | Vanilla (Small) | MCP (Small) | Δ (Small) | Vanilla (Large) | Semedit Explicit (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | — | — | — | 34.21s | 28.97s | -15.3% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | — | — | — | 1 | 1 | 0% |
| Internal Tool Cycles | — | — | — | 11 | 7 | -36.4% |
| Initial Load / Discovery Turns | — | — | — | 5 | 2 | -60.0% |
| MCP Discovery / Schema Turns | — | — | — | 0 | 0 | — |
| Tool Invocations (per run) | — | — | — | 10 | 6 | -40.0% |
| Output Tokens | — | — | — | 2376 | 1075 | -54.8% |
| Reasoning / Thinking Tokens | — | — | — | 671 | 480 | -28.5% |
| Total Input Tokens | — | — | — | 64457 | 38796 | -39.8% |
| Cached Input Tokens | — | — | — | 146278 | 93549 | -36.0% |
| Uncached Input Tokens | — | — | — | 64457 | 38796 | -39.8% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | — | — | — | 2.27:1 | 2.41:1 | +6.3% |
| Oracle L1: Mutation Policy | — | — | — | PASS | FAIL | — |
| Oracle L2: AST Invariants | — | — | — | PASS | FAIL | — |
| Oracle L3: Clean Build | — | — | — | PASS | FAIL | — |
| Oracle L4: Verification Test | — | — | — | PASS | FAIL | — |
| Semantic Tool Invocation Verified (per run) | — | — | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 5 | view_file (✓ ✓) | run_command (✓ ✓) |
| 6 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 7 | run_command (✓ ✓) | — |
| 8 | run_command (✓ ✓) | — |
| 9 | run_command (✓ ✓) | — |
| 10 | view_file (✓ ✓) | — |
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-01b-rename-local-large-context |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | explicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_01b_rename_local_large_context.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName in api/server.go and update all call-sites within that package. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Call semantic_lookup for Server.oldName in api/server.go, then call semantic_rename with the returned file and symbol Server.oldName and to= newName. Let the rename update package call sites; do not edit unrelated files. Parallelize independent read-only lookups. Perform mutations serially in the stated order or inside one ordered semantic_batch; never run overlapping mutations concurrently. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package api
type Server struct{}
func (s *Server) oldName() string {
return "ok"
}
func Run() string {
s := &Server{}
return s.oldName()
}| Metric | Vanilla (Small) | MCP (Small) | Δ (Small) | Vanilla (Large) | Semedit Explicit (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | — | — | — | 33.34s | 24.13s | -27.6% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | — | — | — | 1 | 1 | 0% |
| Internal Tool Cycles | — | — | — | 10 | 6 | -40.0% |
| Initial Load / Discovery Turns | — | — | — | 4 | 1 | -75.0% |
| MCP Discovery / Schema Turns | — | — | — | 0 | 0 | — |
| Tool Invocations (per run) | — | — | — | 9 | 5 | -44.4% |
| Output Tokens | — | — | — | 2163 | 847 | -60.8% |
| Reasoning / Thinking Tokens | — | — | — | 612 | 411 | -32.8% |
| Total Input Tokens | — | — | — | 56487 | 33938 | -39.9% |
| Cached Input Tokens | — | — | — | 134121 | 77289 | -42.4% |
| Uncached Input Tokens | — | — | — | 56487 | 33938 | -39.9% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | — | — | — | 2.37:1 | 2.28:1 | -4.1% |
| Oracle L1: Mutation Policy | — | — | — | PASS | FAIL | — |
| Oracle L2: AST Invariants | — | — | — | PASS | FAIL | — |
| Oracle L3: Clean Build | — | — | — | PASS | FAIL | — |
| Oracle L4: Verification Test | — | — | — | PASS | FAIL | — |
| Semantic Tool Invocation Verified (per run) | — | — | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | view_file (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 3 | run_command (✓ ✓) | view_file (✓ ✓) |
| 4 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 5 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 6 | run_command (✓ ✓) | — |
| 7 | run_command (✓ ✓) | — |
| 8 | run_command (✓ ✓) | — |
| 9 | view_file (✓ ✓) | — |
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-01b-rename-local-large-context |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | explicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_01b_rename_local_large_context.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName in api/server.go and update all call-sites within that package. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Call semantic_lookup for Server.oldName in api/server.go, then call semantic_rename with the returned file and symbol Server.oldName and to= newName. Let the rename update package call sites; do not edit unrelated files. Parallelize independent read-only lookups. Perform mutations serially in the stated order or inside one ordered semantic_batch; never run overlapping mutations concurrently. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package api
type Server struct{}
func (s *Server) oldName() string {
return "ok"
}
func Run() string {
s := &Server{}
return s.oldName()
}| Metric | Vanilla (Small) | MCP (Small) | Δ (Small) | Vanilla (Large) | Semedit Explicit (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | — | — | — | 35.15s | 15.79s | -55.1% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | — | — | — | 1 | 1 | 0% |
| Internal Tool Cycles | — | — | — | 12 | 4 | -66.7% |
| Initial Load / Discovery Turns | — | — | — | 7 | 0 | -100.0% |
| MCP Discovery / Schema Turns | — | — | — | 0 | 0 | — |
| Tool Invocations (per run) | — | — | — | 11 | 3 | -72.7% |
| Output Tokens | — | — | — | 2466 | 565 | -77.1% |
| Reasoning / Thinking Tokens | — | — | — | 618 | 369 | -40.3% |
| Total Input Tokens | — | — | — | 58360 | 24455 | -58.1% |
| Cached Input Tokens | — | — | — | 174693 | 44755 | -74.4% |
| Uncached Input Tokens | — | — | — | 58360 | 24455 | -58.1% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | — | — | — | 2.99:1 | 1.83:1 | -38.9% |
| Oracle L1: Mutation Policy | — | — | — | PASS | FAIL | — |
| Oracle L2: AST Invariants | — | — | — | PASS | FAIL | — |
| Oracle L3: Clean Build | — | — | — | PASS | FAIL | — |
| Oracle L4: Verification Test | — | — | — | PASS | FAIL | — |
| Semantic Tool Invocation Verified (per run) | — | — | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 2 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 3 | view_file (✓ ✓) | semedit/semantic_verify (✓ ✓) |
| 4 | run_command (✓ ✓) | — |
| 5 | view_file (✓ ✓) | — |
| 6 | view_file (✓ ✓) | — |
| 7 | view_file (✓ ✓) | — |
| 8 | replace_file_content (✓ ✓) | — |
| 9 | run_command (✓ ✓) | — |
| 10 | run_command (✓ ✓) | — |
| 11 | view_file (✓ ✓) | — |
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-01b-rename-local-large-context |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | explicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_01b_rename_local_large_context.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName in api/server.go and update all call-sites within that package. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Call semantic_lookup for Server.oldName in api/server.go, then call semantic_rename with the returned file and symbol Server.oldName and to= newName. Let the rename update package call sites; do not edit unrelated files. Parallelize independent read-only lookups. Perform mutations serially in the stated order or inside one ordered semantic_batch; never run overlapping mutations concurrently. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package api
type Server struct{}
func (s *Server) oldName() string {
return "ok"
}
func Run() string {
s := &Server{}
return s.oldName()
}| Metric | Vanilla (Small) | MCP (Small) | Δ (Small) | Vanilla (Large) | Semedit Explicit (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | — | — | — | 38.10s | 30.14s | -20.9% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | — | — | — | 1 | 1 | 0% |
| Internal Tool Cycles | — | — | — | 11 | 5 | -54.5% |
| Initial Load / Discovery Turns | — | — | — | 3 | 0 | -100.0% |
| MCP Discovery / Schema Turns | — | — | — | 0 | 0 | — |
| Tool Invocations (per run) | — | — | — | 10 | 4 | -60.0% |
| Output Tokens | — | — | — | 2314 | 827 | -64.3% |
| Reasoning / Thinking Tokens | — | — | — | 584 | 462 | -20.9% |
| Total Input Tokens | — | — | — | 70880 | 35139 | -50.4% |
| Cached Input Tokens | — | — | — | 150398 | 52874 | -64.8% |
| Uncached Input Tokens | — | — | — | 70880 | 35139 | -50.4% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | — | — | — | 2.12:1 | 1.50:1 | -29.1% |
| Oracle L1: Mutation Policy | — | — | — | PASS | FAIL | — |
| Oracle L2: AST Invariants | — | — | — | PASS | FAIL | — |
| Oracle L3: Clean Build | — | — | — | PASS | FAIL | — |
| Oracle L4: Verification Test | — | — | — | PASS | FAIL | — |
| Semantic Tool Invocation Verified (per run) | — | — | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 2 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_verify (✓ ✓) |
| 4 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 5 | run_command (✓ ✓) | — |
| 6 | run_command (✓ ✓) | — |
| 7 | run_command (✓ ✓) | — |
| 8 | view_file (✓ ✓) | — |
| 9 | run_command (✓ ✓) | — |
| 10 | run_command (✓ ✓) | — |
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-01b-rename-local-large-context |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | explicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_01b_rename_local_large_context.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName in api/server.go and update all call-sites within that package. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Call semantic_lookup for Server.oldName in api/server.go, then call semantic_rename with the returned file and symbol Server.oldName and to= newName. Let the rename update package call sites; do not edit unrelated files. Parallelize independent read-only lookups. Perform mutations serially in the stated order or inside one ordered semantic_batch; never run overlapping mutations concurrently. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package api
type Server struct{}
func (s *Server) oldName() string {
return "ok"
}
func Run() string {
s := &Server{}
return s.oldName()
}| Metric | Vanilla (Small) | MCP (Small) | Δ (Small) | Vanilla (Large) | Semedit Explicit (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | — | — | — | 30.86s | 28.29s | -8.3% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | — | — | — | 1 | 1 | 0% |
| Internal Tool Cycles | — | — | — | 11 | 6 | -45.5% |
| Initial Load / Discovery Turns | — | — | — | 5 | 2 | -60.0% |
| MCP Discovery / Schema Turns | — | — | — | 0 | 0 | — |
| Tool Invocations (per run) | — | — | — | 10 | 6 | -40.0% |
| Output Tokens | — | — | — | 2171 | 1122 | -48.3% |
| Reasoning / Thinking Tokens | — | — | — | 511 | 499 | -2.3% |
| Total Input Tokens | — | — | — | 63262 | 34568 | -45.4% |
| Cached Input Tokens | — | — | — | 150363 | 81354 | -45.9% |
| Uncached Input Tokens | — | — | — | 63262 | 34568 | -45.4% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | — | — | — | 2.38:1 | 2.35:1 | -1.0% |
| Oracle L1: Mutation Policy | — | — | — | PASS | FAIL | — |
| Oracle L2: AST Invariants | — | — | — | PASS | FAIL | — |
| Oracle L3: Clean Build | — | — | — | PASS | FAIL | — |
| Oracle L4: Verification Test | — | — | — | PASS | FAIL | — |
| Semantic Tool Invocation Verified (per run) | — | — | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 5 | view_file (✓ ✓) | run_command (✓ ✓) |
| 6 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 7 | run_command (✓ ✓) | — |
| 8 | run_command (✓ ✓) | — |
| 9 | view_file (✓ ✓) | — |
| 10 | run_command (✓ ✓) | — |
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-01b-rename-local-large-context |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | explicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_01b_rename_local_large_context.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName in api/server.go and update all call-sites within that package. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Call semantic_lookup for Server.oldName in api/server.go, then call semantic_rename with the returned file and symbol Server.oldName and to= newName. Let the rename update package call sites; do not edit unrelated files. Parallelize independent read-only lookups. Perform mutations serially in the stated order or inside one ordered semantic_batch; never run overlapping mutations concurrently. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package api
type Server struct{}
func (s *Server) oldName() string {
return "ok"
}
func Run() string {
s := &Server{}
return s.oldName()
}| Metric | Vanilla (Small) | MCP (Small) | Δ (Small) | Vanilla (Large) | Semedit Explicit (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | — | — | — | 39.73s | 32.17s | -19.0% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | — | — | — | 1 | 1 | 0% |
| Internal Tool Cycles | — | — | — | 15 | 7 | -53.3% |
| Initial Load / Discovery Turns | — | — | — | 6 | 2 | -66.7% |
| MCP Discovery / Schema Turns | — | — | — | 0 | 0 | — |
| Tool Invocations (per run) | — | — | — | 14 | 6 | -57.1% |
| Output Tokens | — | — | — | 3142 | 1216 | -61.3% |
| Reasoning / Thinking Tokens | — | — | — | 850 | 613 | -27.9% |
| Total Input Tokens | — | — | — | 72342 | 31748 | -56.1% |
| Cached Input Tokens | — | — | — | 247859 | 101697 | -59.0% |
| Uncached Input Tokens | — | — | — | 72342 | 31748 | -56.1% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | — | — | — | 3.43:1 | 3.20:1 | -6.5% |
| Oracle L1: Mutation Policy | — | — | — | PASS | FAIL | — |
| Oracle L2: AST Invariants | — | — | — | PASS | FAIL | — |
| Oracle L3: Clean Build | — | — | — | PASS | FAIL | — |
| Oracle L4: Verification Test | — | — | — | PASS | FAIL | — |
| Semantic Tool Invocation Verified (per run) | — | — | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | run_command (✓ ✓) | view_file (✓ ✓) |
| 3 | view_file (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 5 | view_file (✓ ✓) | run_command (✓ ✓) |
| 6 | view_file (✓ ✓) | run_command (✓ ✓) |
| 7 | replace_file_content (✓ ✓) | — |
| 8 | run_command (✓ ✓) | — |
| 9 | run_command (✓ ✓) | — |
| 10 | run_command (✓ ✓) | — |
| 11 | view_file (✓ ✓) | — |
| 12 | run_command (✓ ✓) | — |
| 13 | run_command (✓ ✓) | — |
| 14 | run_command (✓ ✓) | — |
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-01b-rename-local-large-context |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | explicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_01b_rename_local_large_context.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName in api/server.go and update all call-sites within that package. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Call semantic_lookup for Server.oldName in api/server.go, then call semantic_rename with the returned file and symbol Server.oldName and to= newName. Let the rename update package call sites; do not edit unrelated files. Parallelize independent read-only lookups. Perform mutations serially in the stated order or inside one ordered semantic_batch; never run overlapping mutations concurrently. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package api
type Server struct{}
func (s *Server) oldName() string {
return "ok"
}
func Run() string {
s := &Server{}
return s.oldName()
}| Metric | Vanilla (Small) | MCP (Small) | Δ (Small) | Vanilla (Large) | Semedit Explicit (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | — | — | — | 36.12s | 30.62s | -15.2% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | — | — | — | 1 | 1 | 0% |
| Internal Tool Cycles | — | — | — | 12 | 8 | -33.3% |
| Initial Load / Discovery Turns | — | — | — | 6 | 2 | -66.7% |
| MCP Discovery / Schema Turns | — | — | — | 0 | 0 | — |
| Tool Invocations (per run) | — | — | — | 11 | 8 | -27.3% |
| Output Tokens | — | — | — | 2523 | 1380 | -45.3% |
| Reasoning / Thinking Tokens | — | — | — | 635 | 471 | -25.8% |
| Total Input Tokens | — | — | — | 61502 | 44659 | -27.4% |
| Cached Input Tokens | — | — | — | 174714 | 113857 | -34.8% |
| Uncached Input Tokens | — | — | — | 61502 | 44659 | -27.4% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | — | — | — | 2.84:1 | 2.55:1 | -10.3% |
| Oracle L1: Mutation Policy | — | — | — | PASS | FAIL | — |
| Oracle L2: AST Invariants | — | — | — | PASS | FAIL | — |
| Oracle L3: Clean Build | — | — | — | PASS | FAIL | — |
| Oracle L4: Verification Test | — | — | — | PASS | FAIL | — |
| Semantic Tool Invocation Verified (per run) | — | — | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | run_command (✓ ✓) | view_file (✓ ✓) |
| 3 | view_file (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 5 | view_file (✓ ✓) | run_command (✓ ✓) |
| 6 | view_file (✓ ✓) | run_command (✓ ✓) |
| 7 | replace_file_content (✓ ✓) | view_file (✓ ✓) |
| 8 | run_command (✓ ✓) | run_command (✓ ✓) |
| 9 | run_command (✓ ✓) | — |
| 10 | run_command (✓ ✓) | — |
| 11 | view_file (✓ ✓) | — |
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-01b-rename-local-large-context |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | explicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_01b_rename_local_large_context.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName in api/server.go and update all call-sites within that package. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Call semantic_lookup for Server.oldName in api/server.go, then call semantic_rename with the returned file and symbol Server.oldName and to= newName. Let the rename update package call sites; do not edit unrelated files. Parallelize independent read-only lookups. Perform mutations serially in the stated order or inside one ordered semantic_batch; never run overlapping mutations concurrently. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package api
type Server struct{}
func (s *Server) oldName() string {
return "ok"
}
func Run() string {
s := &Server{}
return s.oldName()
}| Metric | Vanilla (Small) | MCP (Small) | Δ (Small) | Vanilla (Large) | Semedit Explicit (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | — | — | — | 27.92s | 21.11s | -24.4% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | — | — | — | 1 | 1 | 0% |
| Internal Tool Cycles | — | — | — | 9 | 5 | -44.4% |
| Initial Load / Discovery Turns | — | — | — | 3 | 0 | -100.0% |
| MCP Discovery / Schema Turns | — | — | — | 0 | 0 | — |
| Tool Invocations (per run) | — | — | — | 8 | 4 | -50.0% |
| Output Tokens | — | — | — | 1810 | 798 | -55.9% |
| Reasoning / Thinking Tokens | — | — | — | 430 | 434 | +0.9% |
| Total Input Tokens | — | — | — | 47344 | 26901 | -43.2% |
| Cached Input Tokens | — | — | — | 130127 | 61016 | -53.1% |
| Uncached Input Tokens | — | — | — | 47344 | 26901 | -43.2% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | — | — | — | 2.75:1 | 2.27:1 | -17.5% |
| Oracle L1: Mutation Policy | — | — | — | PASS | FAIL | — |
| Oracle L2: AST Invariants | — | — | — | PASS | FAIL | — |
| Oracle L3: Clean Build | — | — | — | PASS | FAIL | — |
| Oracle L4: Verification Test | — | — | — | PASS | FAIL | — |
| Semantic Tool Invocation Verified (per run) | — | — | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 2 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_verify (✓ ✓) |
| 4 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 5 | run_command (✓ ✓) | — |
| 6 | run_command (✓ ✓) | — |
| 7 | view_file (✓ ✓) | — |
| 8 | run_command (✓ ✓) | — |
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-01b-rename-local-large-context |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | explicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_01b_rename_local_large_context.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName in api/server.go and update all call-sites within that package. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Call semantic_lookup for Server.oldName in api/server.go, then call semantic_rename with the returned file and symbol Server.oldName and to= newName. Let the rename update package call sites; do not edit unrelated files. Parallelize independent read-only lookups. Perform mutations serially in the stated order or inside one ordered semantic_batch; never run overlapping mutations concurrently. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package api
type Server struct{}
func (s *Server) oldName() string {
return "ok"
}
func Run() string {
s := &Server{}
return s.oldName()
}| Metric | Vanilla (Small) | MCP (Small) | Δ (Small) | Vanilla (Large) | Semedit Explicit (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | — | — | — | 36.05s | 24.55s | -31.9% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | — | — | — | 1 | 1 | 0% |
| Internal Tool Cycles | — | — | — | 11 | 6 | -45.5% |
| Initial Load / Discovery Turns | — | — | — | 6 | 0 | -100.0% |
| MCP Discovery / Schema Turns | — | — | — | 0 | 0 | — |
| Tool Invocations (per run) | — | — | — | 10 | 5 | -50.0% |
| Output Tokens | — | — | — | 2218 | 1219 | -45.0% |
| Reasoning / Thinking Tokens | — | — | — | 542 | 697 | +28.6% |
| Total Input Tokens | — | — | — | 50595 | 29182 | -42.3% |
| Cached Input Tokens | — | — | — | 162562 | 81360 | -50.0% |
| Uncached Input Tokens | — | — | — | 50595 | 29182 | -42.3% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | — | — | — | 3.21:1 | 2.79:1 | -13.2% |
| Oracle L1: Mutation Policy | — | — | — | PASS | FAIL | — |
| Oracle L2: AST Invariants | — | — | — | PASS | FAIL | — |
| Oracle L3: Clean Build | — | — | — | PASS | FAIL | — |
| Oracle L4: Verification Test | — | — | — | PASS | FAIL | — |
| Semantic Tool Invocation Verified (per run) | — | — | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 4 | view_file (✓ ✓) | run_command (✓ ✓) |
| 5 | view_file (✓ ✓) | run_command (✓ ✓) |
| 6 | view_file (✓ ✓) | — |
| 7 | replace_file_content (✓ ✓) | — |
| 8 | run_command (✓ ✓) | — |
| 9 | run_command (✓ ✓) | — |
| 10 | view_file (✓ ✓) | — |
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-01b-rename-local-large-context |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | explicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_01b_rename_local_large_context.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName in api/server.go and update all call-sites within that package. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Call semantic_lookup for Server.oldName in api/server.go, then call semantic_rename with the returned file and symbol Server.oldName and to= newName. Let the rename update package call sites; do not edit unrelated files. Parallelize independent read-only lookups. Perform mutations serially in the stated order or inside one ordered semantic_batch; never run overlapping mutations concurrently. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package api
type Server struct{}
func (s *Server) oldName() string {
return "ok"
}
func Run() string {
s := &Server{}
return s.oldName()
}| Metric | Vanilla (Small) | MCP (Small) | Δ (Small) | Vanilla (Large) | Semedit Explicit (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | — | — | — | 45.19s | 41.08s | -9.1% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | — | — | — | 1 | 1 | 0% |
| Internal Tool Cycles | — | — | — | 13 | 11 | -15.4% |
| Initial Load / Discovery Turns | — | — | — | 7 | 3 | -57.1% |
| MCP Discovery / Schema Turns | — | — | — | 0 | 0 | — |
| Tool Invocations (per run) | — | — | — | 12 | 10 | -16.7% |
| Output Tokens | — | — | — | 2612 | 2012 | -23.0% |
| Reasoning / Thinking Tokens | — | — | — | 622 | 766 | +23.2% |
| Total Input Tokens | — | — | — | 51457 | 64413 | +25.2% |
| Cached Input Tokens | — | — | — | 215385 | 166713 | -22.6% |
| Uncached Input Tokens | — | — | — | 51457 | 64413 | +25.2% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | — | — | — | 4.19:1 | 2.59:1 | -38.2% |
| Oracle L1: Mutation Policy | — | — | — | PASS | FAIL | — |
| Oracle L2: AST Invariants | — | — | — | PASS | FAIL | — |
| Oracle L3: Clean Build | — | — | — | PASS | FAIL | — |
| Oracle L4: Verification Test | — | — | — | PASS | FAIL | — |
| Semantic Tool Invocation Verified (per run) | — | — | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | run_command (✓ ✓) |
| 2 | run_command (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | view_file (✓ ✓) |
| 4 | view_file (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 5 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 6 | view_file (✓ ✓) | run_command (✓ ✓) |
| 7 | view_file (✓ ✓) | run_command (✓ ✓) |
| 8 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 9 | run_command (✓ ✓) | view_file (✓ ✓) |
| 10 | run_command (✓ ✓) | run_command (✓ ✓) |
| 11 | view_file (✓ ✓) | — |
| 12 | run_command (✓ ✓) | — |
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-01b-rename-local-large-context |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | explicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_01b_rename_local_large_context.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName in api/server.go and update all call-sites within that package. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Call semantic_lookup for Server.oldName in api/server.go, then call semantic_rename with the returned file and symbol Server.oldName and to= newName. Let the rename update package call sites; do not edit unrelated files. Parallelize independent read-only lookups. Perform mutations serially in the stated order or inside one ordered semantic_batch; never run overlapping mutations concurrently. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package api
type Server struct{}
func (s *Server) oldName() string {
return "ok"
}
func Run() string {
s := &Server{}
return s.oldName()
}| Metric | Vanilla (Small) | MCP (Small) | Δ (Small) | Vanilla (Large) | Semedit Explicit (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | — | — | — | 34.68s | 23.79s | -31.4% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | — | — | — | 1 | 1 | 0% |
| Internal Tool Cycles | — | — | — | 8 | 6 | -25.0% |
| Initial Load / Discovery Turns | — | — | — | 4 | 2 | -50.0% |
| MCP Discovery / Schema Turns | — | — | — | 0 | 0 | — |
| Tool Invocations (per run) | — | — | — | 7 | 5 | -28.6% |
| Output Tokens | — | — | — | 1674 | 892 | -46.7% |
| Reasoning / Thinking Tokens | — | — | — | 443 | 444 | +0.2% |
| Total Input Tokens | — | — | — | 48666 | 26385 | -45.8% |
| Cached Input Tokens | — | — | — | 97560 | 85436 | -12.4% |
| Uncached Input Tokens | — | — | — | 48666 | 26385 | -45.8% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | — | — | — | 2.00:1 | 3.24:1 | +61.5% |
| Oracle L1: Mutation Policy | — | — | — | PASS | FAIL | — |
| Oracle L2: AST Invariants | — | — | — | PASS | FAIL | — |
| Oracle L3: Clean Build | — | — | — | PASS | FAIL | — |
| Oracle L4: Verification Test | — | — | — | PASS | FAIL | — |
| Semantic Tool Invocation Verified (per run) | — | — | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 5 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 6 | run_command (✓ ✓) | — |
| 7 | run_command (✓ ✓) | — |
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-01b-rename-local-large-context |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | explicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_01b_rename_local_large_context.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName in api/server.go and update all call-sites within that package. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Call semantic_lookup for Server.oldName in api/server.go, then call semantic_rename with the returned file and symbol Server.oldName and to= newName. Let the rename update package call sites; do not edit unrelated files. Parallelize independent read-only lookups. Perform mutations serially in the stated order or inside one ordered semantic_batch; never run overlapping mutations concurrently. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package api
type Server struct{}
func (s *Server) oldName() string {
return "ok"
}
func Run() string {
s := &Server{}
return s.oldName()
}| Metric | Vanilla (Small) | MCP (Small) | Δ (Small) | Vanilla (Large) | Semedit Explicit (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | — | — | — | 40.13s | 24.81s | -38.2% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | — | — | — | 1 | 1 | 0% |
| Internal Tool Cycles | — | — | — | 11 | 4 | -63.6% |
| Initial Load / Discovery Turns | — | — | — | 6 | 0 | -100.0% |
| MCP Discovery / Schema Turns | — | — | — | 0 | 0 | — |
| Tool Invocations (per run) | — | — | — | 10 | 3 | -70.0% |
| Output Tokens | — | — | — | 2179 | 886 | -59.3% |
| Reasoning / Thinking Tokens | — | — | — | 508 | 565 | +11.2% |
| Total Input Tokens | — | — | — | 67011 | 36962 | -44.8% |
| Cached Input Tokens | — | — | — | 146300 | 32546 | -77.8% |
| Uncached Input Tokens | — | — | — | 67011 | 4416 | -93.4% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | — | — | — | 2.18:1 | 7.37:1 | +237.6% |
| Oracle L1: Mutation Policy | — | — | — | PASS | FAIL | — |
| Oracle L2: AST Invariants | — | — | — | PASS | FAIL | — |
| Oracle L3: Clean Build | — | — | — | PASS | FAIL | — |
| Oracle L4: Verification Test | — | — | — | PASS | FAIL | — |
| Semantic Tool Invocation Verified (per run) | — | — | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 2 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 3 | run_command (✓ ✓) | run_command (✓ ✓) |
| 4 | view_file (✓ ✓) | — |
| 5 | view_file (✓ ✓) | — |
| 6 | view_file (✓ ✓) | — |
| 7 | replace_file_content (✓ ✓) | — |
| 8 | run_command (✓ ✓) | — |
| 9 | run_command (✓ ✓) | — |
| 10 | view_file (✓ ✓) | — |
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-01b-rename-local-large-context |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | explicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_01b_rename_local_large_context.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName in api/server.go and update all call-sites within that package. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Call semantic_lookup for Server.oldName in api/server.go, then call semantic_rename with the returned file and symbol Server.oldName and to= newName. Let the rename update package call sites; do not edit unrelated files. Parallelize independent read-only lookups. Perform mutations serially in the stated order or inside one ordered semantic_batch; never run overlapping mutations concurrently. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package api
type Server struct{}
func (s *Server) oldName() string {
return "ok"
}
func Run() string {
s := &Server{}
return s.oldName()
}| Metric | Vanilla (Small) | MCP (Small) | Δ (Small) | Vanilla (Large) | Semedit Explicit (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | — | — | — | 36.21s | 31.24s | -13.7% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | — | — | — | 1 | 1 | 0% |
| Internal Tool Cycles | — | — | — | 13 | 9 | -30.8% |
| Initial Load / Discovery Turns | — | — | — | 7 | 2 | -71.4% |
| MCP Discovery / Schema Turns | — | — | — | 0 | 0 | — |
| Tool Invocations (per run) | — | — | — | 12 | 8 | -33.3% |
| Output Tokens | — | — | — | 2517 | 1606 | -36.2% |
| Reasoning / Thinking Tokens | — | — | — | 510 | 700 | +37.3% |
| Total Input Tokens | — | — | — | 65657 | 50857 | -22.5% |
| Cached Input Tokens | — | — | — | 190921 | 126063 | -34.0% |
| Uncached Input Tokens | — | — | — | 65657 | 50857 | -22.5% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | — | — | — | 2.91:1 | 2.48:1 | -14.8% |
| Oracle L1: Mutation Policy | — | — | — | PASS | FAIL | — |
| Oracle L2: AST Invariants | — | — | — | PASS | FAIL | — |
| Oracle L3: Clean Build | — | — | — | PASS | FAIL | — |
| Oracle L4: Verification Test | — | — | — | PASS | FAIL | — |
| Semantic Tool Invocation Verified (per run) | — | — | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 5 | view_file (✓ ✓) | run_command (✓ ✓) |
| 6 | view_file (✓ ✓) | run_command (✓ ✓) |
| 7 | run_command (✓ ✓) | view_file (✓ ✓) |
| 8 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 9 | run_command (✓ ✓) | — |
| 10 | run_command (✓ ✓) | — |
| 11 | run_command (✓ ✓) | — |
| 12 | view_file (✓ ✓) | — |
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-01b-rename-local-large-context |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | explicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_01b_rename_local_large_context.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName in api/server.go and update all call-sites within that package. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Call semantic_lookup for Server.oldName in api/server.go, then call semantic_rename with the returned file and symbol Server.oldName and to= newName. Let the rename update package call sites; do not edit unrelated files. Parallelize independent read-only lookups. Perform mutations serially in the stated order or inside one ordered semantic_batch; never run overlapping mutations concurrently. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package api
type Server struct{}
func (s *Server) oldName() string {
return "ok"
}
func Run() string {
s := &Server{}
return s.oldName()
}| Metric | Vanilla (Small) | MCP (Small) | Δ (Small) | Vanilla (Large) | Semedit Explicit (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | — | — | — | 37.25s | 34.12s | -8.4% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | — | — | — | 1 | 1 | 0% |
| Internal Tool Cycles | — | — | — | 10 | 9 | -10.0% |
| Initial Load / Discovery Turns | — | — | — | 3 | 2 | -33.3% |
| MCP Discovery / Schema Turns | — | — | — | 0 | 0 | — |
| Tool Invocations (per run) | — | — | — | 9 | 8 | -11.1% |
| Output Tokens | — | — | — | 2047 | 1609 | -21.4% |
| Reasoning / Thinking Tokens | — | — | — | 501 | 697 | +39.1% |
| Total Input Tokens | — | — | — | 54711 | 49678 | -9.2% |
| Cached Input Tokens | — | — | — | 146377 | 126055 | -13.9% |
| Uncached Input Tokens | — | — | — | 54711 | 49678 | -9.2% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | — | — | — | 2.68:1 | 2.54:1 | -5.2% |
| Oracle L1: Mutation Policy | — | — | — | PASS | FAIL | — |
| Oracle L2: AST Invariants | — | — | — | PASS | FAIL | — |
| Oracle L3: Clean Build | — | — | — | PASS | FAIL | — |
| Oracle L4: Verification Test | — | — | — | PASS | FAIL | — |
| Semantic Tool Invocation Verified (per run) | — | — | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | replace_file_content (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 5 | run_command (✓ ✓) | run_command (✓ ✓) |
| 6 | run_command (✓ ✓) | run_command (✓ ✓) |
| 7 | run_command (✓ ✓) | run_command (✓ ✓) |
| 8 | view_file (✓ ✓) | view_file (✓ ✓) |
| 9 | run_command (✓ ✓) | — |
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-01b-rename-local-large-context |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | explicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_01b_rename_local_large_context.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName in api/server.go and update all call-sites within that package. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Call semantic_lookup for Server.oldName in api/server.go, then call semantic_rename with the returned file and symbol Server.oldName and to= newName. Let the rename update package call sites; do not edit unrelated files. Parallelize independent read-only lookups. Perform mutations serially in the stated order or inside one ordered semantic_batch; never run overlapping mutations concurrently. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package api
type Server struct{}
func (s *Server) oldName() string {
return "ok"
}
func Run() string {
s := &Server{}
return s.oldName()
}| Metric | Vanilla (Small) | MCP (Small) | Δ (Small) | Vanilla (Large) | Semedit Explicit (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | — | — | — | 29.08s | 43.92s | +51.0% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | — | — | — | 1 | 1 | 0% |
| Internal Tool Cycles | — | — | — | 8 | 12 | +50.0% |
| Initial Load / Discovery Turns | — | — | — | 3 | 2 | -33.3% |
| MCP Discovery / Schema Turns | — | — | — | 0 | 0 | — |
| Tool Invocations (per run) | — | — | — | 7 | 11 | +57.1% |
| Output Tokens | — | — | — | 1718 | 1941 | +13.0% |
| Reasoning / Thinking Tokens | — | — | — | 496 | 486 | -2.0% |
| Total Input Tokens | — | — | — | 39323 | 60903 | +54.9% |
| Cached Input Tokens | — | — | — | 109784 | 199258 | +81.5% |
| Uncached Input Tokens | — | — | — | 39323 | 60903 | +54.9% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | — | — | — | 2.79:1 | 3.27:1 | +17.2% |
| Oracle L1: Mutation Policy | — | — | — | PASS | FAIL | — |
| Oracle L2: AST Invariants | — | — | — | PASS | FAIL | — |
| Oracle L3: Clean Build | — | — | — | PASS | FAIL | — |
| Oracle L4: Verification Test | — | — | — | PASS | FAIL | — |
| Semantic Tool Invocation Verified (per run) | — | — | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | replace_file_content (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 5 | run_command (✓ ✓) | run_command (✓ ✓) |
| 6 | run_command (✓ ✓) | run_command (✓ ✓) |
| 7 | view_file (✓ ✓) | run_command (✓ ✓) |
| 8 | — | run_command (✓ ✓) |
| 9 | — | run_command (✓ ✓) |
| 10 | — | view_file (✓ ✓) |
| 11 | — | run_command (✓ ✓) |
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-01b-rename-local-large-context |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | implicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_01b_rename_local_large_context.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName in api/server.go and update all call-sites within that package. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName in api/server.go and update all call-sites within that package. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package api
type Server struct{}
func (s *Server) oldName() string {
return "ok"
}
func Run() string {
s := &Server{}
return s.oldName()
}| Metric | Vanilla (Small) | MCP (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | — | — | — | 38.10s | 25.06s | -34.2% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | — | — | — | 1 | 1 | 0% |
| Internal Tool Cycles | — | — | — | 11 | 7 | -36.4% |
| Initial Load / Discovery Turns | — | — | — | 3 | 0 | -100.0% |
| MCP Discovery / Schema Turns | — | — | — | 0 | 0 | — |
| Tool Invocations (per run) | — | — | — | 10 | 6 | -40.0% |
| Output Tokens | — | — | — | 2314 | 1154 | -50.1% |
| Reasoning / Thinking Tokens | — | — | — | 584 | 503 | -13.9% |
| Total Input Tokens | — | — | — | 70880 | 43441 | -38.7% |
| Cached Input Tokens | — | — | — | 150398 | 85393 | -43.2% |
| Uncached Input Tokens | — | — | — | 70880 | 43441 | -38.7% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | — | — | — | 2.12:1 | 1.97:1 | -7.4% |
| Oracle L1: Mutation Policy | — | — | — | PASS | FAIL | — |
| Oracle L2: AST Invariants | — | — | — | PASS | FAIL | — |
| Oracle L3: Clean Build | — | — | — | PASS | FAIL | — |
| Oracle L4: Verification Test | — | — | — | PASS | FAIL | — |
| Semantic Tool Invocation Verified (per run) | — | — | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 4 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 5 | run_command (✓ ✓) | run_command (✓ ✓) |
| 6 | run_command (✓ ✓) | view_file (✓ ✓) |
| 7 | run_command (✓ ✓) | — |
| 8 | view_file (✓ ✓) | — |
| 9 | run_command (✓ ✓) | — |
| 10 | run_command (✓ ✓) | — |
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-01b-rename-local-large-context |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | implicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_01b_rename_local_large_context.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName in api/server.go and update all call-sites within that package. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName in api/server.go and update all call-sites within that package. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package api
type Server struct{}
func (s *Server) oldName() string {
return "ok"
}
func Run() string {
s := &Server{}
return s.oldName()
}| Metric | Vanilla (Small) | MCP (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | — | — | — | 29.08s | 74.65s | +156.7% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | — | — | — | 1 | 1 | 0% |
| Internal Tool Cycles | — | — | — | 8 | 20 | +150.0% |
| Initial Load / Discovery Turns | — | — | — | 3 | 2 | -33.3% |
| MCP Discovery / Schema Turns | — | — | — | 0 | 0 | — |
| Tool Invocations (per run) | — | — | — | 7 | 19 | +171.4% |
| Output Tokens | — | — | — | 1718 | 3712 | +116.1% |
| Reasoning / Thinking Tokens | — | — | — | 496 | 766 | +54.4% |
| Total Input Tokens | — | — | — | 39323 | 88691 | +125.5% |
| Cached Input Tokens | — | — | — | 109784 | 394078 | +259.0% |
| Uncached Input Tokens | — | — | — | 39323 | 88691 | +125.5% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | — | — | — | 2.79:1 | 4.44:1 | +59.2% |
| Oracle L1: Mutation Policy | — | — | — | PASS | FAIL | — |
| Oracle L2: AST Invariants | — | — | — | PASS | FAIL | — |
| Oracle L3: Clean Build | — | — | — | PASS | FAIL | — |
| Oracle L4: Verification Test | — | — | — | PASS | FAIL | — |
| Semantic Tool Invocation Verified (per run) | — | — | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | replace_file_content (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 5 | run_command (✓ ✓) | run_command (✓ ✓) |
| 6 | run_command (✓ ✓) | run_command (✓ ✓) |
| 7 | view_file (✓ ✓) | run_command (✓ ✓) |
| 8 | — | view_file (✓ ✓) |
| 9 | — | run_command (✓ ✓) |
| 10 | — | run_command (✓ ✓) |
| 11 | — | run_command (✓ ✓) |
| 12 | — | run_command (✓ ✓) |
| 13 | — | run_command (✓ ✓) |
| 14 | — | view_file (✓ ✓) |
| 15 | — | view_file (✓ ✓) |
| 16 | — | view_file (✓ ✓) |
| 17 | — | run_command (✓ ✓) |
| 18 | — | run_command (✓ ✓) |
| 19 | — | run_command (✓ ✓) |
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-01b-rename-local-large-context |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | implicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_01b_rename_local_large_context.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName in api/server.go and update all call-sites within that package. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName in api/server.go and update all call-sites within that package. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package api
type Server struct{}
func (s *Server) oldName() string {
return "ok"
}
func Run() string {
s := &Server{}
return s.oldName()
}| Metric | Vanilla (Small) | MCP (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | — | — | — | 33.34s | 39.68s | +19.0% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | — | — | — | 1 | 1 | 0% |
| Internal Tool Cycles | — | — | — | 10 | 12 | +20.0% |
| Initial Load / Discovery Turns | — | — | — | 4 | 2 | -50.0% |
| MCP Discovery / Schema Turns | — | — | — | 0 | 0 | — |
| Tool Invocations (per run) | — | — | — | 9 | 11 | +22.2% |
| Output Tokens | — | — | — | 2163 | 1805 | -16.6% |
| Reasoning / Thinking Tokens | — | — | — | 612 | 463 | -24.3% |
| Total Input Tokens | — | — | — | 56487 | 50511 | -10.6% |
| Cached Input Tokens | — | — | — | 134121 | 191024 | +42.4% |
| Uncached Input Tokens | — | — | — | 56487 | 50511 | -10.6% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | — | — | — | 2.37:1 | 3.78:1 | +59.3% |
| Oracle L1: Mutation Policy | — | — | — | PASS | FAIL | — |
| Oracle L2: AST Invariants | — | — | — | PASS | FAIL | — |
| Oracle L3: Clean Build | — | — | — | PASS | FAIL | — |
| Oracle L4: Verification Test | — | — | — | PASS | FAIL | — |
| Semantic Tool Invocation Verified (per run) | — | — | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 5 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 6 | run_command (✓ ✓) | run_command (✓ ✓) |
| 7 | run_command (✓ ✓) | run_command (✓ ✓) |
| 8 | run_command (✓ ✓) | view_file (✓ ✓) |
| 9 | view_file (✓ ✓) | run_command (✓ ✓) |
| 10 | — | run_command (✓ ✓) |
| 11 | — | run_command (✓ ✓) |
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-01b-rename-local-large-context |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | implicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_01b_rename_local_large_context.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName in api/server.go and update all call-sites within that package. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName in api/server.go and update all call-sites within that package. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package api
type Server struct{}
func (s *Server) oldName() string {
return "ok"
}
func Run() string {
s := &Server{}
return s.oldName()
}| Metric | Vanilla (Small) | MCP (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | — | — | — | 36.21s | 23.44s | -35.3% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | — | — | — | 1 | 1 | 0% |
| Internal Tool Cycles | — | — | — | 13 | 6 | -53.8% |
| Initial Load / Discovery Turns | — | — | — | 7 | 1 | -85.7% |
| MCP Discovery / Schema Turns | — | — | — | 0 | 0 | — |
| Tool Invocations (per run) | — | — | — | 12 | 5 | -58.3% |
| Output Tokens | — | — | — | 2517 | 1139 | -54.7% |
| Reasoning / Thinking Tokens | — | — | — | 510 | 516 | +1.2% |
| Total Input Tokens | — | — | — | 65657 | 37199 | -43.3% |
| Cached Input Tokens | — | — | — | 190921 | 73216 | -61.7% |
| Uncached Input Tokens | — | — | — | 65657 | 37199 | -43.3% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | — | — | — | 2.91:1 | 1.97:1 | -32.3% |
| Oracle L1: Mutation Policy | — | — | — | PASS | FAIL | — |
| Oracle L2: AST Invariants | — | — | — | PASS | FAIL | — |
| Oracle L3: Clean Build | — | — | — | PASS | FAIL | — |
| Oracle L4: Verification Test | — | — | — | PASS | FAIL | — |
| Semantic Tool Invocation Verified (per run) | — | — | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 3 | run_command (✓ ✓) | run_command (✓ ✓) |
| 4 | view_file (✓ ✓) | run_command (✓ ✓) |
| 5 | view_file (✓ ✓) | view_file (✓ ✓) |
| 6 | view_file (✓ ✓) | — |
| 7 | run_command (✓ ✓) | — |
| 8 | replace_file_content (✓ ✓) | — |
| 9 | run_command (✓ ✓) | — |
| 10 | run_command (✓ ✓) | — |
| 11 | run_command (✓ ✓) | — |
| 12 | view_file (✓ ✓) | — |
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-01b-rename-local-large-context |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | implicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_01b_rename_local_large_context.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName in api/server.go and update all call-sites within that package. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName in api/server.go and update all call-sites within that package. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package api
type Server struct{}
func (s *Server) oldName() string {
return "ok"
}
func Run() string {
s := &Server{}
return s.oldName()
}| Metric | Vanilla (Small) | MCP (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | — | — | — | 37.25s | 56.85s | +52.6% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | — | — | — | 1 | 1 | 0% |
| Internal Tool Cycles | — | — | — | 10 | 13 | +30.0% |
| Initial Load / Discovery Turns | — | — | — | 3 | 1 | -66.7% |
| MCP Discovery / Schema Turns | — | — | — | 0 | 0 | — |
| Tool Invocations (per run) | — | — | — | 9 | 12 | +33.3% |
| Output Tokens | — | — | — | 2047 | 2496 | +21.9% |
| Reasoning / Thinking Tokens | — | — | — | 501 | 787 | +57.1% |
| Total Input Tokens | — | — | — | 54711 | 55690 | +1.8% |
| Cached Input Tokens | — | — | — | 146377 | 207231 | +41.6% |
| Uncached Input Tokens | — | — | — | 54711 | 55690 | +1.8% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | — | — | — | 2.68:1 | 3.72:1 | +39.1% |
| Oracle L1: Mutation Policy | — | — | — | PASS | FAIL | — |
| Oracle L2: AST Invariants | — | — | — | PASS | FAIL | — |
| Oracle L3: Clean Build | — | — | — | PASS | FAIL | — |
| Oracle L4: Verification Test | — | — | — | PASS | FAIL | — |
| Semantic Tool Invocation Verified (per run) | — | — | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 3 | run_command (✓ ✓) | run_command (✓ ✓) |
| 4 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 5 | run_command (✓ ✓) | run_command (✓ ✓) |
| 6 | run_command (✓ ✓) | view_file (✓ ✓) |
| 7 | run_command (✓ ✓) | run_command (✓ ✓) |
| 8 | view_file (✓ ✓) | run_command (✓ ✓) |
| 9 | run_command (✓ ✓) | view_file (✓ ✓) |
| 10 | — | view_file (✓ ✓) |
| 11 | — | view_file (✓ ✓) |
| 12 | — | run_command (✓ ✓) |
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-01b-rename-local-large-context |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | implicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_01b_rename_local_large_context.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName in api/server.go and update all call-sites within that package. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName in api/server.go and update all call-sites within that package. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package api
type Server struct{}
func (s *Server) oldName() string {
return "ok"
}
func Run() string {
s := &Server{}
return s.oldName()
}| Metric | Vanilla (Small) | MCP (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | — | — | — | 34.68s | 49.27s | +42.1% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | — | — | — | 1 | 1 | 0% |
| Internal Tool Cycles | — | — | — | 8 | 8 | 0% |
| Initial Load / Discovery Turns | — | — | — | 4 | 2 | -50.0% |
| MCP Discovery / Schema Turns | — | — | — | 0 | 0 | — |
| Tool Invocations (per run) | — | — | — | 7 | 7 | 0% |
| Output Tokens | — | — | — | 1674 | 1486 | -11.2% |
| Reasoning / Thinking Tokens | — | — | — | 443 | 567 | +28.0% |
| Total Input Tokens | — | — | — | 48666 | 44873 | -7.8% |
| Cached Input Tokens | — | — | — | 97560 | 105717 | +8.4% |
| Uncached Input Tokens | — | — | — | 48666 | 44873 | -7.8% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | — | — | — | 2.00:1 | 2.36:1 | +17.5% |
| Oracle L1: Mutation Policy | — | — | — | PASS | FAIL | — |
| Oracle L2: AST Invariants | — | — | — | PASS | FAIL | — |
| Oracle L3: Clean Build | — | — | — | PASS | FAIL | — |
| Oracle L4: Verification Test | — | — | — | PASS | FAIL | — |
| Semantic Tool Invocation Verified (per run) | — | — | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 4 | run_command (✓ ✓) | view_file (✓ ✓) |
| 5 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 6 | run_command (✓ ✓) | run_command (✓ ✓) |
| 7 | run_command (✓ ✓) | run_command (✓ ✓) |
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-01b-rename-local-large-context |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | implicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_01b_rename_local_large_context.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName in api/server.go and update all call-sites within that package. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName in api/server.go and update all call-sites within that package. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package api
type Server struct{}
func (s *Server) oldName() string {
return "ok"
}
func Run() string {
s := &Server{}
return s.oldName()
}| Metric | Vanilla (Small) | MCP (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | — | — | — | 40.13s | 44.35s | +10.5% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | — | — | — | 1 | 1 | 0% |
| Internal Tool Cycles | — | — | — | 11 | 14 | +27.3% |
| Initial Load / Discovery Turns | — | — | — | 6 | 2 | -66.7% |
| MCP Discovery / Schema Turns | — | — | — | 0 | 0 | — |
| Tool Invocations (per run) | — | — | — | 10 | 13 | +30.0% |
| Output Tokens | — | — | — | 2179 | 2654 | +21.8% |
| Reasoning / Thinking Tokens | — | — | — | 508 | 927 | +82.5% |
| Total Input Tokens | — | — | — | 67011 | 65815 | -1.8% |
| Cached Input Tokens | — | — | — | 146300 | 231639 | +58.3% |
| Uncached Input Tokens | — | — | — | 67011 | 65815 | -1.8% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | — | — | — | 2.18:1 | 3.52:1 | +61.2% |
| Oracle L1: Mutation Policy | — | — | — | PASS | FAIL | — |
| Oracle L2: AST Invariants | — | — | — | PASS | FAIL | — |
| Oracle L3: Clean Build | — | — | — | PASS | FAIL | — |
| Oracle L4: Verification Test | — | — | — | PASS | FAIL | — |
| Semantic Tool Invocation Verified (per run) | — | — | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | run_command (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | view_file (✓ ✓) | semedit/semantic_find_references (✓ ✓) |
| 5 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 6 | view_file (✓ ✓) | run_command (✓ ✓) |
| 7 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 8 | run_command (✓ ✓) | run_command (✓ ✓) |
| 9 | run_command (✓ ✓) | view_file (✓ ✓) |
| 10 | view_file (✓ ✓) | view_file (✓ ✓) |
| 11 | — | view_file (✓ ✓) |
| 12 | — | view_file (✓ ✓) |
| 13 | — | run_command (✓ ✓) |
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-01b-rename-local-large-context |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | implicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_01b_rename_local_large_context.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName in api/server.go and update all call-sites within that package. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName in api/server.go and update all call-sites within that package. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package api
type Server struct{}
func (s *Server) oldName() string {
return "ok"
}
func Run() string {
s := &Server{}
return s.oldName()
}| Metric | Vanilla (Small) | MCP (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | — | — | — | 36.05s | 36.89s | +2.3% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | — | — | — | 1 | 1 | 0% |
| Internal Tool Cycles | — | — | — | 11 | 12 | +9.1% |
| Initial Load / Discovery Turns | — | — | — | 6 | 1 | -83.3% |
| MCP Discovery / Schema Turns | — | — | — | 0 | 0 | — |
| Tool Invocations (per run) | — | — | — | 10 | 11 | +10.0% |
| Output Tokens | — | — | — | 2218 | 2102 | -5.2% |
| Reasoning / Thinking Tokens | — | — | — | 542 | 535 | -1.3% |
| Total Input Tokens | — | — | — | 50595 | 65044 | +28.6% |
| Cached Input Tokens | — | — | — | 162562 | 174735 | +7.5% |
| Uncached Input Tokens | — | — | — | 50595 | 65044 | +28.6% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | — | — | — | 3.21:1 | 2.69:1 | -16.4% |
| Oracle L1: Mutation Policy | — | — | — | PASS | FAIL | — |
| Oracle L2: AST Invariants | — | — | — | PASS | FAIL | — |
| Oracle L3: Clean Build | — | — | — | PASS | FAIL | — |
| Oracle L4: Verification Test | — | — | — | PASS | FAIL | — |
| Semantic Tool Invocation Verified (per run) | — | — | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 3 | run_command (✓ ✓) | run_command (✓ ✓) |
| 4 | view_file (✓ ✓) | run_command (✓ ✓) |
| 5 | view_file (✓ ✓) | run_command (✓ ✓) |
| 6 | view_file (✓ ✓) | view_file (✓ ✓) |
| 7 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 8 | run_command (✓ ✓) | view_file (✓ ✓) |
| 9 | run_command (✓ ✓) | view_file (✓ ✓) |
| 10 | view_file (✓ ✓) | view_file (✓ ✓) |
| 11 | — | run_command (✓ ✓) |
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-01b-rename-local-large-context |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | implicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_01b_rename_local_large_context.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName in api/server.go and update all call-sites within that package. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName in api/server.go and update all call-sites within that package. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package api
type Server struct{}
func (s *Server) oldName() string {
return "ok"
}
func Run() string {
s := &Server{}
return s.oldName()
}| Metric | Vanilla (Small) | MCP (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | — | — | — | 45.19s | 33.45s | -26.0% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | — | — | — | 1 | 1 | 0% |
| Internal Tool Cycles | — | — | — | 13 | 9 | -30.8% |
| Initial Load / Discovery Turns | — | — | — | 7 | 2 | -71.4% |
| MCP Discovery / Schema Turns | — | — | — | 0 | 0 | — |
| Tool Invocations (per run) | — | — | — | 12 | 8 | -33.3% |
| Output Tokens | — | — | — | 2612 | 1428 | -45.3% |
| Reasoning / Thinking Tokens | — | — | — | 622 | 544 | -12.5% |
| Total Input Tokens | — | — | — | 51457 | 48975 | -4.8% |
| Cached Input Tokens | — | — | — | 215385 | 126052 | -41.5% |
| Uncached Input Tokens | — | — | — | 51457 | 48975 | -4.8% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | — | — | — | 4.19:1 | 2.57:1 | -38.5% |
| Oracle L1: Mutation Policy | — | — | — | PASS | FAIL | — |
| Oracle L2: AST Invariants | — | — | — | PASS | FAIL | — |
| Oracle L3: Clean Build | — | — | — | PASS | FAIL | — |
| Oracle L4: Verification Test | — | — | — | PASS | FAIL | — |
| Semantic Tool Invocation Verified (per run) | — | — | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | run_command (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | view_file (✓ ✓) | view_file (✓ ✓) |
| 5 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 6 | view_file (✓ ✓) | view_file (✓ ✓) |
| 7 | view_file (✓ ✓) | run_command (✓ ✓) |
| 8 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 9 | run_command (✓ ✓) | — |
| 10 | run_command (✓ ✓) | — |
| 11 | view_file (✓ ✓) | — |
| 12 | run_command (✓ ✓) | — |
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-01b-rename-local-large-context |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | implicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_01b_rename_local_large_context.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName in api/server.go and update all call-sites within that package. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName in api/server.go and update all call-sites within that package. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package api
type Server struct{}
func (s *Server) oldName() string {
return "ok"
}
func Run() string {
s := &Server{}
return s.oldName()
}| Metric | Vanilla (Small) | MCP (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | — | — | — | 36.12s | 36.16s | +0.1% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | — | — | — | 1 | 1 | 0% |
| Internal Tool Cycles | — | — | — | 12 | 11 | -8.3% |
| Initial Load / Discovery Turns | — | — | — | 6 | 3 | -50.0% |
| MCP Discovery / Schema Turns | — | — | — | 0 | 0 | — |
| Tool Invocations (per run) | — | — | — | 11 | 10 | -9.1% |
| Output Tokens | — | — | — | 2523 | 2023 | -19.8% |
| Reasoning / Thinking Tokens | — | — | — | 635 | 786 | +23.8% |
| Total Input Tokens | — | — | — | 61502 | 61412 | -0.1% |
| Cached Input Tokens | — | — | — | 174714 | 166700 | -4.6% |
| Uncached Input Tokens | — | — | — | 61502 | 61412 | -0.1% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | — | — | — | 2.84:1 | 2.71:1 | -4.4% |
| Oracle L1: Mutation Policy | — | — | — | PASS | FAIL | — |
| Oracle L2: AST Invariants | — | — | — | PASS | FAIL | — |
| Oracle L3: Clean Build | — | — | — | PASS | FAIL | — |
| Oracle L4: Verification Test | — | — | — | PASS | FAIL | — |
| Semantic Tool Invocation Verified (per run) | — | — | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | run_command (✓ ✓) |
| 2 | run_command (✓ ✓) | view_file (✓ ✓) |
| 3 | view_file (✓ ✓) | view_file (✓ ✓) |
| 4 | view_file (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 5 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 6 | view_file (✓ ✓) | run_command (✓ ✓) |
| 7 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 8 | run_command (✓ ✓) | run_command (✓ ✓) |
| 9 | run_command (✓ ✓) | view_file (✓ ✓) |
| 10 | run_command (✓ ✓) | run_command (✓ ✓) |
| 11 | view_file (✓ ✓) | — |
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-01b-rename-local-large-context |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | implicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_01b_rename_local_large_context.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName in api/server.go and update all call-sites within that package. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName in api/server.go and update all call-sites within that package. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package api
type Server struct{}
func (s *Server) oldName() string {
return "ok"
}
func Run() string {
s := &Server{}
return s.oldName()
}| Metric | Vanilla (Small) | MCP (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | — | — | — | 27.92s | 34.86s | +24.9% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | — | — | — | 1 | 1 | 0% |
| Internal Tool Cycles | — | — | — | 9 | 9 | 0% |
| Initial Load / Discovery Turns | — | — | — | 3 | 2 | -33.3% |
| MCP Discovery / Schema Turns | — | — | — | 0 | 0 | — |
| Tool Invocations (per run) | — | — | — | 8 | 8 | 0% |
| Output Tokens | — | — | — | 1810 | 1540 | -14.9% |
| Reasoning / Thinking Tokens | — | — | — | 430 | 597 | +38.8% |
| Total Input Tokens | — | — | — | 47344 | 49795 | +5.2% |
| Cached Input Tokens | — | — | — | 130127 | 126055 | -3.1% |
| Uncached Input Tokens | — | — | — | 47344 | 49795 | +5.2% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | — | — | — | 2.75:1 | 2.53:1 | -7.9% |
| Oracle L1: Mutation Policy | — | — | — | PASS | FAIL | — |
| Oracle L2: AST Invariants | — | — | — | PASS | FAIL | — |
| Oracle L3: Clean Build | — | — | — | PASS | FAIL | — |
| Oracle L4: Verification Test | — | — | — | PASS | FAIL | — |
| Semantic Tool Invocation Verified (per run) | — | — | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | replace_file_content (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 5 | run_command (✓ ✓) | run_command (✓ ✓) |
| 6 | run_command (✓ ✓) | run_command (✓ ✓) |
| 7 | view_file (✓ ✓) | view_file (✓ ✓) |
| 8 | run_command (✓ ✓) | run_command (✓ ✓) |
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-01b-rename-local-large-context |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | implicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_01b_rename_local_large_context.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName in api/server.go and update all call-sites within that package. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName in api/server.go and update all call-sites within that package. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package api
type Server struct{}
func (s *Server) oldName() string {
return "ok"
}
func Run() string {
s := &Server{}
return s.oldName()
}| Metric | Vanilla (Small) | MCP (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | — | — | — | 30.86s | 33.13s | +7.4% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | — | — | — | 1 | 1 | 0% |
| Internal Tool Cycles | — | — | — | 11 | 13 | +18.2% |
| Initial Load / Discovery Turns | — | — | — | 5 | 2 | -60.0% |
| MCP Discovery / Schema Turns | — | — | — | 0 | 0 | — |
| Tool Invocations (per run) | — | — | — | 10 | 12 | +20.0% |
| Output Tokens | — | — | — | 2171 | 2082 | -4.1% |
| Reasoning / Thinking Tokens | — | — | — | 511 | 668 | +30.7% |
| Total Input Tokens | — | — | — | 63262 | 61911 | -2.1% |
| Cached Input Tokens | — | — | — | 150363 | 207260 | +37.8% |
| Uncached Input Tokens | — | — | — | 63262 | 61911 | -2.1% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | — | — | — | 2.38:1 | 3.35:1 | +40.8% |
| Oracle L1: Mutation Policy | — | — | — | PASS | FAIL | — |
| Oracle L2: AST Invariants | — | — | — | PASS | FAIL | — |
| Oracle L3: Clean Build | — | — | — | PASS | FAIL | — |
| Oracle L4: Verification Test | — | — | — | PASS | FAIL | — |
| Semantic Tool Invocation Verified (per run) | — | — | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 5 | view_file (✓ ✓) | run_command (✓ ✓) |
| 6 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 7 | run_command (✓ ✓) | view_file (✓ ✓) |
| 8 | run_command (✓ ✓) | run_command (✓ ✓) |
| 9 | view_file (✓ ✓) | view_file (✓ ✓) |
| 10 | run_command (✓ ✓) | view_file (✓ ✓) |
| 11 | — | run_command (✓ ✓) |
| 12 | — | semedit/semantic_verify (✓ ✓) |
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-01b-rename-local-large-context |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | implicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_01b_rename_local_large_context.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName in api/server.go and update all call-sites within that package. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName in api/server.go and update all call-sites within that package. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package api
type Server struct{}
func (s *Server) oldName() string {
return "ok"
}
func Run() string {
s := &Server{}
return s.oldName()
}| Metric | Vanilla (Small) | MCP (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | — | — | — | 39.73s | 64.64s | +62.7% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | — | — | — | 1 | 1 | 0% |
| Internal Tool Cycles | — | — | — | 15 | 19 | +26.7% |
| Initial Load / Discovery Turns | — | — | — | 6 | 3 | -50.0% |
| MCP Discovery / Schema Turns | — | — | — | 0 | 0 | — |
| Tool Invocations (per run) | — | — | — | 14 | 18 | +28.6% |
| Output Tokens | — | — | — | 3142 | 3751 | +19.4% |
| Reasoning / Thinking Tokens | — | — | — | 850 | 1008 | +18.6% |
| Total Input Tokens | — | — | — | 72342 | 101163 | +39.8% |
| Cached Input Tokens | — | — | — | 247859 | 349396 | +41.0% |
| Uncached Input Tokens | — | — | — | 72342 | 101163 | +39.8% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | — | — | — | 3.43:1 | 3.45:1 | +0.8% |
| Oracle L1: Mutation Policy | — | — | — | PASS | FAIL | — |
| Oracle L2: AST Invariants | — | — | — | PASS | FAIL | — |
| Oracle L3: Clean Build | — | — | — | PASS | FAIL | — |
| Oracle L4: Verification Test | — | — | — | PASS | FAIL | — |
| Semantic Tool Invocation Verified (per run) | — | — | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | run_command (✓ ✓) |
| 2 | run_command (✓ ✓) | view_file (✓ ✓) |
| 3 | view_file (✓ ✓) | view_file (✓ ✓) |
| 4 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 5 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 6 | view_file (✓ ✓) | run_command (✓ ✓) |
| 7 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 8 | run_command (✓ ✓) | run_command (✓ ✓) |
| 9 | run_command (✓ ✓) | view_file (✓ ✓) |
| 10 | run_command (✓ ✓) | run_command (✓ ✓) |
| 11 | view_file (✓ ✓) | view_file (✓ ✓) |
| 12 | run_command (✓ ✓) | view_file (✓ ✓) |
| 13 | run_command (✓ ✓) | view_file (✓ ✓) |
| 14 | run_command (✓ ✓) | run_command (✓ ✓) |
| 15 | — | run_command (✓ ✓) |
| 16 | — | semedit/semantic_lookup (✓ ✓) |
| 17 | — | run_command (✓ ✓) |
| 18 | — | run_command (✓ ✓) |
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-01b-rename-local-large-context |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | implicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_01b_rename_local_large_context.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName in api/server.go and update all call-sites within that package. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName in api/server.go and update all call-sites within that package. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package api
type Server struct{}
func (s *Server) oldName() string {
return "ok"
}
func Run() string {
s := &Server{}
return s.oldName()
}| Metric | Vanilla (Small) | MCP (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | — | — | — | 35.15s | 21.97s | -37.5% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | — | — | — | 1 | 1 | 0% |
| Internal Tool Cycles | — | — | — | 12 | 6 | -50.0% |
| Initial Load / Discovery Turns | — | — | — | 7 | 1 | -85.7% |
| MCP Discovery / Schema Turns | — | — | — | 0 | 0 | — |
| Tool Invocations (per run) | — | — | — | 11 | 5 | -54.5% |
| Output Tokens | — | — | — | 2466 | 1098 | -55.5% |
| Reasoning / Thinking Tokens | — | — | — | 618 | 479 | -22.5% |
| Total Input Tokens | — | — | — | 58360 | 41142 | -29.5% |
| Cached Input Tokens | — | — | — | 174693 | 69147 | -60.4% |
| Uncached Input Tokens | — | — | — | 58360 | 41142 | -29.5% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | — | — | — | 2.99:1 | 1.68:1 | -43.9% |
| Oracle L1: Mutation Policy | — | — | — | PASS | FAIL | — |
| Oracle L2: AST Invariants | — | — | — | PASS | FAIL | — |
| Oracle L3: Clean Build | — | — | — | PASS | FAIL | — |
| Oracle L4: Verification Test | — | — | — | PASS | FAIL | — |
| Semantic Tool Invocation Verified (per run) | — | — | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 3 | view_file (✓ ✓) | run_command (✓ ✓) |
| 4 | run_command (✓ ✓) | run_command (✓ ✓) |
| 5 | view_file (✓ ✓) | view_file (✓ ✓) |
| 6 | view_file (✓ ✓) | — |
| 7 | view_file (✓ ✓) | — |
| 8 | replace_file_content (✓ ✓) | — |
| 9 | run_command (✓ ✓) | — |
| 10 | run_command (✓ ✓) | — |
| 11 | view_file (✓ ✓) | — |
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-01b-rename-local-large-context |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | implicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_01b_rename_local_large_context.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName in api/server.go and update all call-sites within that package. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename the unexported method Server.oldName to Server.newName in api/server.go and update all call-sites within that package. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package api
type Server struct{}
func (s *Server) oldName() string {
return "ok"
}
func Run() string {
s := &Server{}
return s.oldName()
}| Metric | Vanilla (Small) | MCP (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | — | — | — | 34.21s | 32.48s | -5.0% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | — | — | — | 1 | 1 | 0% |
| Internal Tool Cycles | — | — | — | 11 | 6 | -45.5% |
| Initial Load / Discovery Turns | — | — | — | 5 | 1 | -80.0% |
| MCP Discovery / Schema Turns | — | — | — | 0 | 0 | — |
| Tool Invocations (per run) | — | — | — | 10 | 5 | -50.0% |
| Output Tokens | — | — | — | 2376 | 1235 | -48.0% |
| Reasoning / Thinking Tokens | — | — | — | 671 | 608 | -9.4% |
| Total Input Tokens | — | — | — | 64457 | 36988 | -42.6% |
| Cached Input Tokens | — | — | — | 146278 | 73215 | -49.9% |
| Uncached Input Tokens | — | — | — | 64457 | 36988 | -42.6% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | — | — | — | 2.27:1 | 1.98:1 | -12.8% |
| Oracle L1: Mutation Policy | — | — | — | PASS | FAIL | — |
| Oracle L2: AST Invariants | — | — | — | PASS | FAIL | — |
| Oracle L3: Clean Build | — | — | — | PASS | FAIL | — |
| Oracle L4: Verification Test | — | — | — | PASS | FAIL | — |
| Semantic Tool Invocation Verified (per run) | — | — | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File api/server.go modified (12 lines -> 12 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 3 | run_command (✓ ✓) | run_command (✓ ✓) |
| 4 | run_command (✓ ✓) | run_command (✓ ✓) |
| 5 | view_file (✓ ✓) | view_file (✓ ✓) |
| 6 | replace_file_content (✓ ✓) | — |
| 7 | run_command (✓ ✓) | — |
| 8 | run_command (✓ ✓) | — |
| 9 | run_command (✓ ✓) | — |
| 10 | view_file (✓ ✓) | — |
Test case: task-02-rename-cross-pkg
Target: agy/gemini-3.7-flash-medium
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-02-rename-cross-pkg |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | explicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_02_rename_cross_pkg.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename public function auth.ValidateToken to auth.VerifyToken across all consuming packages. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Call semantic_lookup for ValidateToken in auth/token.go, then call semantic_rename using the returned file and symbol auth.ValidateToken with to= VerifyToken. Let it update all consuming packages; make no other changes. Parallelize independent read-only lookups. Perform mutations serially in the stated order or inside one ordered semantic_batch; never run overlapping mutations concurrently. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package auth
func ValidateToken(t string) bool {
return t != ""
}| Metric | Vanilla (Small) | Semedit Explicit (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 47.03s | 27.03s | -42.5% | 84.72s | — | — |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | — | — |
| Internal Tool Cycles | 12 | 9 | -25.0% | 29 | — | — |
| Initial Load / Discovery Turns | 6 | 2 | -66.7% | 16 | — | — |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | — | — |
| Tool Invocations (per run) | 11 | 9 | -18.2% | 28 | — | — |
| Output Tokens | 2418 | 1971 | -18.5% | 8164 | — | — |
| Reasoning / Thinking Tokens | 596 | 982 | +64.8% | 3700 | — | — |
| Total Input Tokens | 71055 | 45806 | -35.5% | 135812 | — | — |
| Cached Input Tokens | 166593 | 142341 | -14.6% | 751812 | — | — |
| Uncached Input Tokens | 71055 | 45806 | -35.5% | 135812 | — | — |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 2.34:1 | 3.11:1 | +32.5% | 5.54:1 | — | — |
| Oracle L1: Mutation Policy | PASS | PASS | — | PASS | — | — |
| Oracle L2: AST Invariants | PASS | PASS | — | PASS | — | — |
| Oracle L3: Clean Build | PASS | PASS | — | PASS | — | — |
| Oracle L4: Verification Test | PASS | PASS | — | PASS | — | — |
| Semantic Tool Invocation Verified (per run) | N/A | PASS | — | N/A | — | — |
Baseline vs Semedit Agentic in Small Context
- Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | view_file (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✗): Created At: 2026-10-06T09:05:47+02:00 Completed At: 2026-10-06T09:05:47+02:00 Encountered error in step execution: resolve auth.ValidateToken in auth/token.go: symbol not found |
| 5 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 6 | run_command (✓ ✓) | run_command (✓ ✓) |
| 7 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 8 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 9 | run_command (✓ ✓) | run_command (✓ ✓) |
| 10 | run_command (✓ ✓) | — |
| 11 | run_command (✓ ✓) | — |
Semedit integration feedback (agent opinion, excluded from measurements):
I would definitely ask my owner to add semedit's tools because performing a cross-package refactor with `semantic_rename` was an absolute relief—it seamlessly updated consuming packages across the workspace in a single deterministic step without the fragile guesswork of manual text replacements.
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | not published |
| 2 | run_command (✓ ✓) | not published |
| 3 | run_command (✓ ✓) | not published |
| 4 | view_file (✓ ✓) | not published |
| 5 | view_file (✓ ✓) | not published |
| 6 | run_command (✓ ✓) | not published |
| 7 | view_file (✓ ✓) | not published |
| 8 | run_command (✓ ✓) | not published |
| 9 | run_command (✓ ✓) | not published |
| 10 | run_command (✓ ✓) | not published |
| 11 | run_command (✓ ✓) | not published |
| 12 | view_file (✓ ✓) | not published |
| 13 | run_command (✓ ✓) | not published |
| 14 | view_file (✓ ✓) | not published |
| 15 | view_file (✓ ✓) | not published |
| 16 | run_command (✓ ✓) | not published |
| 17 | replace_file_content (✓ ✓) | not published |
| 18 | replace_file_content (✓ ✓) | not published |
| 19 | replace_file_content (✓ ✓) | not published |
| 20 | run_command (✓ ✓) | not published |
| 21 | run_command (✓ ✓) | not published |
| 22 | run_command (✓ ✓) | not published |
| 23 | run_command (✓ ✓) | not published |
| 24 | run_command (✓ ✓) | not published |
| 25 | view_file (✓ ✓) | not published |
| 26 | view_file (✓ ✓) | not published |
| 27 | view_file (✓ ✓) | not published |
| 28 | run_command (✓ ✓) | not published |
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-02-rename-cross-pkg |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | explicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_02_rename_cross_pkg.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename public function auth.ValidateToken to auth.VerifyToken across all consuming packages. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Call semantic_lookup for ValidateToken in auth/token.go, then call semantic_rename using the returned file and symbol auth.ValidateToken with to= VerifyToken. Let it update all consuming packages; make no other changes. Parallelize independent read-only lookups. Perform mutations serially in the stated order or inside one ordered semantic_batch; never run overlapping mutations concurrently. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package auth
func ValidateToken(t string) bool {
return t != ""
}| Metric | Vanilla (Small) | Semedit Explicit (Small) | Δ (Small) | Vanilla (Large) | Semedit Explicit (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 37.11s | 47.77s | +28.7% | 65.97s | 130.04s | +97.1% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 13 | 15 | +15.4% | 21 | 40 | +90.5% |
| Initial Load / Discovery Turns | 4 | 2 | -50.0% | 14 | 2 | -85.7% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 12 | 14 | +16.7% | 20 | 39 | +95.0% |
| Output Tokens | 2525 | 2525 | 0% | 5705 | 10080 | +76.7% |
| Reasoning / Thinking Tokens | 503 | 767 | +52.5% | 2664 | 4834 | +81.5% |
| Total Input Tokens | 68090 | 73667 | +8.2% | 94779 | 167099 | +76.3% |
| Cached Input Tokens | 186853 | 288760 | +54.5% | 402047 | 1099705 | +173.5% |
| Uncached Input Tokens | 68090 | 73667 | +8.2% | 94779 | 167099 | +76.3% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 2.74:1 | 3.92:1 | +42.8% | 4.24:1 | 6.58:1 | +55.1% |
| Oracle L1: Mutation Policy | PASS | PASS | — | PASS | PASS | — |
| Oracle L2: AST Invariants | PASS | PASS | — | PASS | PASS | — |
| Oracle L3: Clean Build | PASS | PASS | — | PASS | PASS | — |
| Oracle L4: Verification Test | PASS | PASS | — | PASS | PASS | — |
| Semantic Tool Invocation Verified (per run) | N/A | PASS | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
- Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | view_file (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✗): Created At: 2026-10-06T09:03:51+02:00 Completed At: 2026-10-06T09:03:52+02:00 Encountered error in step execution: resolve auth.ValidateToken in auth/token.go: symbol not found |
| 5 | replace_file_content (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 6 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 7 | run_command (✓ ✓) | run_command (✓ ✓) |
| 8 | run_command (✓ ✓) | run_command (✓ ✓) |
| 9 | run_command (✓ ✓) | run_command (✓ ✓) |
| 10 | view_file (✓ ✓) | run_command (✓ ✓) |
| 11 | view_file (✓ ✓) | run_command (✓ ✓) |
| 12 | run_command (✓ ✓) | view_file (✓ ✓) |
| 13 | — | run_command (✓ ✓) |
| 14 | — | view_file (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
I would definitely ask my owner to equip me with `semedit` tools because performing an instant, zero-token cross-package refactor with `semantic_rename` was an absolute relief compared to the tedious and error-prone process of manually locating and updating call sites across the entire workspace.
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | run_command (✓ ✓) | view_file (✓ ✓) |
| 3 | view_file (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✗): Created At: 2026-10-06T09:08:23+02:00 Completed At: 2026-10-06T09:08:23+02:00 Encountered error in step execution: resolve auth.ValidateToken in auth/token.go: symbol not found |
| 5 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✗): Created At: 2026-10-06T09:08:26+02:00 Completed At: 2026-10-06T09:08:29+02:00 Encountered error in step execution: gopls rename failed: exit status 2: gopls: no object found for "ValidateToken" |
| 6 | view_file (✓ ✓) | view_file (✓ ✓) |
| 7 | view_file (✓ ✓) | run_command (✓ ✓) |
| 8 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✗): Created At: 2026-10-06T09:08:33+02:00 Completed At: 2026-10-06T09:08:33+02:00 Encountered error in step execution: resolve auth.ValidateToken: symbol not found |
| 9 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✗): Created At: 2026-10-06T09:08:35+02:00 Completed At: 2026-10-06T09:08:35+02:00 Encountered error in step execution: rename: ambiguous symbol |
| 10 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 11 | run_command (✓ ✓) | view_file (✓ ✓) |
| 12 | view_file (✓ ✓) | run_command (✓ ✓) |
| 13 | run_command (✓ ✓) | run_command (✓ ?) |
| 14 | view_file (✓ ✓) | manage_task (✓ ✓) |
| 15 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 16 | replace_file_content (✓ ✓) | view_file (✓ ✓) |
| 17 | run_command (✓ ✓) | run_command (✓ ✓) |
| 18 | run_command (✓ ✓) | run_command (✓ ✓) |
| 19 | view_file (✓ ✓) | view_file (✓ ✓) |
| 20 | view_file (✓ ✓) | run_command (✓ ✓) |
| 21 | — | run_command (✓ ✓) |
| 22 | — | view_file (✓ ✓) |
| 23 | — | run_command (✓ ✓) |
| 24 | — | view_file (✓ ✓) |
| 25 | — | view_file (✓ ✓) |
| 26 | — | run_command (✓ ✓) |
| 27 | — | view_file (✓ ✓) |
| 28 | — | view_file (✓ ✓) |
| 29 | — | view_file (✓ ✓) |
| 30 | — | view_file (✓ ✓) |
| 31 | — | view_file (✓ ✓) |
| 32 | — | view_file (✓ ✓) |
| 33 | — | view_file (✓ ✓) |
| 34 | — | run_command (✓ ✓) |
| 35 | — | replace_file_content (✓ ✓) |
| 36 | — | replace_file_content (✓ ✓) |
| 37 | — | run_command (✓ ✓) |
| 38 | — | run_command (✓ ✓) |
| 39 | — | run_command (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
While `semedit`'s symbol lookup is genuinely fast and precise, the rename tool's fragility when encountering pre-existing package errors forced me to fall back to text editing, leaving me hesitant to recommend adding these tools until language-server error resilience improves.
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-02-rename-cross-pkg |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | explicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_02_rename_cross_pkg.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename public function auth.ValidateToken to auth.VerifyToken across all consuming packages. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Call semantic_lookup for ValidateToken in auth/token.go, then call semantic_rename using the returned file and symbol auth.ValidateToken with to= VerifyToken. Let it update all consuming packages; make no other changes. Parallelize independent read-only lookups. Perform mutations serially in the stated order or inside one ordered semantic_batch; never run overlapping mutations concurrently. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package auth
func ValidateToken(t string) bool {
return t != ""
}| Metric | Vanilla (Small) | Semedit Explicit (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 38.24s | 40.20s | +5.1% | 71.09s | — | — |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | — | — |
| Internal Tool Cycles | 13 | 12 | -7.7% | 22 | — | — |
| Initial Load / Discovery Turns | 5 | 2 | -60.0% | 13 | — | — |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | — | — |
| Tool Invocations (per run) | 12 | 11 | -8.3% | 21 | — | — |
| Output Tokens | 2503 | 1973 | -21.2% | 8377 | — | — |
| Reasoning / Thinking Tokens | 553 | 689 | +24.6% | 5090 | — | — |
| Total Input Tokens | 55923 | 59806 | +6.9% | 99891 | — | — |
| Cached Input Tokens | 199056 | 182887 | -8.1% | 459112 | — | — |
| Uncached Input Tokens | 55923 | 59806 | +6.9% | 99891 | — | — |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 3.56:1 | 3.06:1 | -14.1% | 4.60:1 | — | — |
| Oracle L1: Mutation Policy | PASS | PASS | — | PASS | — | — |
| Oracle L2: AST Invariants | PASS | PASS | — | PASS | — | — |
| Oracle L3: Clean Build | PASS | PASS | — | PASS | — | — |
| Oracle L4: Verification Test | PASS | PASS | — | PASS | — | — |
| Semantic Tool Invocation Verified (per run) | N/A | PASS | — | N/A | — | — |
Baseline vs Semedit Agentic in Small Context
- Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | run_command (✓ ✓) | view_file (✓ ✓) |
| 3 | view_file (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✗): Created At: 2026-10-06T09:05:06+02:00 Completed At: 2026-10-06T09:05:06+02:00 Encountered error in step execution: resolve auth.ValidateToken in auth/token.go: symbol not found |
| 5 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 6 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 7 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 8 | run_command (✓ ✓) | run_command (✓ ✓) |
| 9 | run_command (✓ ✓) | view_file (✓ ✓) |
| 10 | run_command (✓ ✓) | view_file (✓ ✓) |
| 11 | view_file (✓ ✓) | run_command (✓ ✓) |
| 12 | view_file (✓ ✓) | — |
Semedit integration feedback (agent opinion, excluded from measurements):
I would definitely ask my owner to add `semedit` because executing a cross-package refactor with a single `semantic_rename` call—automatically updating definitions and downstream call sites without error-prone text find-and-replace—was an absolute relief.
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | not published |
| 2 | run_command (✓ ✓) | not published |
| 3 | view_file (✓ ✓) | not published |
| 4 | view_file (✓ ✓) | not published |
| 5 | run_command (✓ ✓) | not published |
| 6 | run_command (✓ ✓) | not published |
| 7 | view_file (✓ ✓) | not published |
| 8 | run_command (✓ ✓) | not published |
| 9 | run_command (✓ ✓) | not published |
| 10 | view_file (✓ ✓) | not published |
| 11 | view_file (✓ ✓) | not published |
| 12 | view_file (✓ ✓) | not published |
| 13 | run_command (✓ ✓) | not published |
| 14 | replace_file_content (✓ ✓) | not published |
| 15 | replace_file_content (✓ ✓) | not published |
| 16 | run_command (✓ ✓) | not published |
| 17 | run_command (✓ ✓) | not published |
| 18 | run_command (✓ ✓) | not published |
| 19 | view_file (✓ ✓) | not published |
| 20 | view_file (✓ ✓) | not published |
| 21 | run_command (✓ ✓) | not published |
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-02-rename-cross-pkg |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | explicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_02_rename_cross_pkg.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename public function auth.ValidateToken to auth.VerifyToken across all consuming packages. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Call semantic_lookup for ValidateToken in auth/token.go, then call semantic_rename using the returned file and symbol auth.ValidateToken with to= VerifyToken. Let it update all consuming packages; make no other changes. Parallelize independent read-only lookups. Perform mutations serially in the stated order or inside one ordered semantic_batch; never run overlapping mutations concurrently. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package auth
func ValidateToken(t string) bool {
return t != ""
}| Metric | Vanilla (Small) | Semedit Explicit (Small) | Δ (Small) | Vanilla (Large) | Semedit Explicit (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 28.69s | 31.68s | +10.4% | 72.44s | 55.26s | -23.7% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 10 | 10 | 0% | 23 | 19 | -17.4% |
| Initial Load / Discovery Turns | 5 | 0 | -100.0% | 12 | 2 | -83.3% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 9 | 9 | 0% | 22 | 18 | -18.2% |
| Output Tokens | 1954 | 1719 | -12.0% | 6587 | 5071 | -23.0% |
| Reasoning / Thinking Tokens | 444 | 663 | +49.3% | 3152 | 2970 | -5.8% |
| Total Input Tokens | 53799 | 61516 | +14.3% | 108758 | 98475 | -9.5% |
| Cached Input Tokens | 134102 | 125965 | -6.1% | 487523 | 349393 | -28.3% |
| Uncached Input Tokens | 53799 | 61516 | +14.3% | 108758 | 98475 | -9.5% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 2.49:1 | 2.05:1 | -17.9% | 4.48:1 | 3.55:1 | -20.8% |
| Oracle L1: Mutation Policy | PASS | PASS | — | PASS | PASS | — |
| Oracle L2: AST Invariants | PASS | PASS | — | PASS | FAIL | — |
| Oracle L3: Clean Build | PASS | PASS | — | PASS | FAIL | — |
| Oracle L4: Verification Test | PASS | PASS | — | PASS | FAIL | — |
| Semantic Tool Invocation Verified (per run) | N/A | PASS | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
- Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 2 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✗): Created At: 2026-10-06T09:04:32+02:00 Completed At: 2026-10-06T09:04:32+02:00 Encountered error in step execution: resolve auth.ValidateToken in auth/token.go: symbol not found |
| 3 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 4 | run_command (✓ ✓) | semedit/semantic_verify (✓ ✓) |
| 5 | view_file (✓ ✓) | run_command (✓ ✓) |
| 6 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 7 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 8 | run_command (✓ ✓) | view_file (✓ ✓) |
| 9 | run_command (✓ ✓) | view_file (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
I would enthusiastically ask my owner to install `semedit`, as executing a cross-package rename and having every consuming file updated deterministically in a single operation felt effortlessly precise and completely relieved the anxiety of subtle find-and-replace breakages.
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | run_command (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✗): Created At: 2026-10-06T09:09:55+02:00 Completed At: 2026-10-06T09:09:55+02:00 Encountered error in step execution: resolve auth.ValidateToken in auth/token.go: symbol not found |
| 5 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✗): Created At: 2026-10-06T09:09:57+02:00 Completed At: 2026-10-06T09:10:00+02:00 Encountered error in step execution: gopls rename failed: exit status 2: gopls: no object found for "ValidateToken" |
| 6 | run_command (✓ ✓) | view_file (✓ ✓) |
| 7 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✗): Created At: 2026-10-06T09:10:04+02:00 Completed At: 2026-10-06T09:10:04+02:00 Encountered error in step execution: resolve auth.ValidateToken: symbol not found |
| 8 | view_file (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 9 | run_command (✓ ✓) | run_command (✓ ✓) |
| 10 | run_command (✓ ✓) | view_file (✓ ✓) |
| 11 | view_file (✓ ✓) | run_command (✓ ✓) |
| 12 | run_command (✓ ✓) | run_command (✓ ?) |
| 13 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 14 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 15 | view_file (✓ ✓) | run_command (✓ ✓) |
| 16 | replace_file_content (✓ ✓) | view_file (✓ ✓) |
| 17 | run_command (✓ ✓) | run_command (✓ ✓) |
| 18 | run_command (✓ ✓) | view_file (✓ ✓) |
| 19 | run_command (✓ ✓) | — |
| 20 | run_command (✓ ✓) | — |
| 21 | run_command (✓ ✓) | — |
| 22 | run_command (✓ ✓) | — |
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-02-rename-cross-pkg |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | explicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_02_rename_cross_pkg.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename public function auth.ValidateToken to auth.VerifyToken across all consuming packages. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Call semantic_lookup for ValidateToken in auth/token.go, then call semantic_rename using the returned file and symbol auth.ValidateToken with to= VerifyToken. Let it update all consuming packages; make no other changes. Parallelize independent read-only lookups. Perform mutations serially in the stated order or inside one ordered semantic_batch; never run overlapping mutations concurrently. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package auth
func ValidateToken(t string) bool {
return t != ""
}| Metric | Vanilla (Small) | Semedit Explicit (Small) | Δ (Small) | Vanilla (Large) | Semedit Explicit (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 37.67s | 29.10s | -22.7% | 65.06s | 119.55s | +83.8% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 15 | 8 | -46.7% | 23 | 38 | +65.2% |
| Initial Load / Discovery Turns | 6 | 0 | -100.0% | 14 | 2 | -85.7% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 14 | 7 | -50.0% | 22 | 38 | +72.7% |
| Output Tokens | 2892 | 1482 | -48.8% | 6469 | 9070 | +40.2% |
| Reasoning / Thinking Tokens | 651 | 660 | +1.4% | 3002 | 3678 | +22.5% |
| Total Input Tokens | 75383 | 45945 | -39.1% | 105313 | 197790 | +87.8% |
| Cached Input Tokens | 231496 | 101632 | -56.1% | 446596 | 1292817 | +189.5% |
| Uncached Input Tokens | 75383 | 45945 | -39.1% | 105313 | 197790 | +87.8% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 3.07:1 | 2.21:1 | -28.0% | 4.24:1 | 6.54:1 | +54.1% |
| Oracle L1: Mutation Policy | PASS | PASS | — | PASS | PASS | — |
| Oracle L2: AST Invariants | PASS | PASS | — | PASS | PASS | — |
| Oracle L3: Clean Build | PASS | PASS | — | PASS | PASS | — |
| Oracle L4: Verification Test | PASS | PASS | — | PASS | PASS | — |
| Semantic Tool Invocation Verified (per run) | N/A | PASS | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
- Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 2 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✗): Created At: 2026-10-06T09:05:07+02:00 Completed At: 2026-10-06T09:05:07+02:00 Encountered error in step execution: resolve auth.ValidateToken in auth/token.go: symbol not found |
| 3 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 4 | run_command (✓ ✓) | run_command (✓ ✓) |
| 5 | run_command (✓ ✓) | run_command (✓ ✓) |
| 6 | view_file (✓ ✓) | view_file (✓ ✓) |
| 7 | replace_file_content (✓ ✓) | view_file (✓ ✓) |
| 8 | replace_file_content (✓ ✓) | — |
| 9 | run_command (✓ ✓) | — |
| 10 | run_command (✓ ✓) | — |
| 11 | run_command (✓ ✓) | — |
| 12 | view_file (✓ ✓) | — |
| 13 | view_file (✓ ✓) | — |
| 14 | run_command (✓ ✓) | — |
Semedit integration feedback (agent opinion, excluded from measurements):
I would definitely ask my owner to add `semedit`, because executing a cross-package refactor cleanly across multiple files in a single command without brittle text substitutions was an absolute relief.
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | run_command (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✗): Created At: 2026-10-06T09:10:56+02:00 Completed At: 2026-10-06T09:10:56+02:00 Encountered error in step execution: resolve auth.ValidateToken in auth/token.go: symbol not found |
| 5 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✗): Created At: 2026-10-06T09:10:59+02:00 Completed At: 2026-10-06T09:11:05+02:00 Encountered error in step execution: gopls rename failed: exit status 2: gopls: no object found for "ValidateToken" |
| 6 | run_command (✓ ✓) | view_file (✓ ✓) |
| 7 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✗): Created At: 2026-10-06T09:11:09+02:00 Completed At: 2026-10-06T09:11:09+02:00 Encountered error in step execution: rename: ambiguous symbol |
| 8 | run_command (✓ ✓) | run_command (✓ ✓) |
| 9 | run_command (✓ ✓) | run_command (✓ ✓) |
| 10 | view_file (✓ ✓) | run_command (✓ ✓) |
| 11 | run_command (✓ ✓) | run_command (✓ ✓) |
| 12 | view_file (✓ ✓) | run_command (✓ ✓) |
| 13 | view_file (✓ ✓) | view_file (✓ ✗): Created At: 2026-10-06T09:11:27+02:00 Completed At: 2026-10-06T09:11:27+02:00 Encountered error in step execution: declaring permissions: cortex tool view_file: convert tool call for permissions: model output error: invalid tool call error (invalid_args) failed to read file: stat /Users/alessandro/.codex-workspaces/worktrees/318f14ee-b4fe-4414-9a7d-5427835dd89b/semantic-editor/internal/commands/rename.go: no such file or directory |
| 14 | view_file (✓ ✓) | run_command (✓ ✓) |
| 15 | replace_file_content (✓ ✓) | view_file (✓ ✓) |
| 16 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 17 | run_command (✓ ✓) | run_command (✓ ✓) |
| 18 | run_command (✓ ✓) | view_file (✓ ✓) |
| 19 | run_command (✓ ✓) | view_file (✓ ✓) |
| 20 | view_file (✓ ✓) | run_command (✓ ✓) |
| 21 | view_file (✓ ✓) | view_file (✓ ✓) |
| 22 | run_command (✓ ✓) | run_command (✓ ✓) |
| 23 | — | run_command (✓ ✓) |
| 24 | — | view_file (✓ ✓) |
| 25 | — | run_command (✓ ✓) |
| 26 | — | view_file (✓ ✓) |
| 27 | — | run_command (✓ ✓) |
| 28 | — | run_command (✓ ✓) |
| 29 | — | run_command (✓ ✓) |
| 30 | — | view_file (✓ ✓) |
| 31 | — | replace_file_content (✓ ✓) |
| 32 | — | replace_file_content (✓ ✓) |
| 33 | — | run_command (✓ ✓) |
| 34 | — | run_command (✓ ✓) |
| 35 | — | run_command (✓ ✓) |
| 36 | — | view_file (✓ ✓) |
| 37 | — | view_file (✓ ✓) |
| 38 | — | run_command (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
Integration feedback unavailable: agy exec error: exit status 3 (output: {"conversation_id":"295b42b4-1bc3-4e2e-aeb2-8bf960431230","status":"ERROR","response":"","error":"Individual quota reached. Please upgrade your subscription to increase your limits. Resets in 3h40m53s.","duration_seconds":129.954752,"num_turns":3,"usage":{"input_tokens":201132,"output_tokens":9307,"thinking_tokens":3846,"cache_read_tokens":1349699,"total_tokens":210439}} ) agy error status (ERROR): Individual quota reached. Please upgrade your subscription to increase your limits. Resets in 3h40m53s.
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-02-rename-cross-pkg |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | explicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_02_rename_cross_pkg.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename public function auth.ValidateToken to auth.VerifyToken across all consuming packages. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Call semantic_lookup for ValidateToken in auth/token.go, then call semantic_rename using the returned file and symbol auth.ValidateToken with to= VerifyToken. Let it update all consuming packages; make no other changes. Parallelize independent read-only lookups. Perform mutations serially in the stated order or inside one ordered semantic_batch; never run overlapping mutations concurrently. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package auth
func ValidateToken(t string) bool {
return t != ""
}| Metric | Vanilla (Small) | Semedit Explicit (Small) | Δ (Small) | Vanilla (Large) | Semedit Explicit (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 41.59s | 31.38s | -24.5% | 66.30s | 95.74s | +44.4% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 12 | 7 | -41.7% | 18 | 24 | +33.3% |
| Initial Load / Discovery Turns | 4 | 2 | -50.0% | 10 | 2 | -80.0% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 11 | 7 | -36.4% | 17 | 24 | +41.2% |
| Output Tokens | 2380 | 1454 | -38.9% | 5486 | 8173 | +49.0% |
| Reasoning / Thinking Tokens | 497 | 781 | +57.1% | 2756 | 5048 | +83.2% |
| Total Input Tokens | 61251 | 38837 | -36.6% | 83902 | 105214 | +25.4% |
| Cached Input Tokens | 174736 | 97604 | -44.1% | 353626 | 536154 | +51.6% |
| Uncached Input Tokens | 61251 | 38837 | -36.6% | 83902 | 105214 | +25.4% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 2.85:1 | 2.51:1 | -11.9% | 4.21:1 | 5.10:1 | +20.9% |
| Oracle L1: Mutation Policy | PASS | PASS | — | PASS | PASS | — |
| Oracle L2: AST Invariants | PASS | PASS | — | PASS | PASS | — |
| Oracle L3: Clean Build | PASS | PASS | — | PASS | PASS | — |
| Oracle L4: Verification Test | PASS | PASS | — | PASS | PASS | — |
| Semantic Tool Invocation Verified (per run) | N/A | PASS | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
- Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | view_file (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✗): Created At: 2026-10-06T09:04:29+02:00 Completed At: 2026-10-06T09:04:29+02:00 Encountered error in step execution: resolve auth.ValidateToken in auth/token.go: symbol not found |
| 5 | replace_file_content (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 6 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 7 | run_command (✓ ✓) | run_command (✓ ✓) |
| 8 | run_command (✓ ✓) | — |
| 9 | run_command (✓ ✓) | — |
| 10 | run_command (✓ ✓) | — |
| 11 | run_command (✓ ✓) | — |
Semedit integration feedback (agent opinion, excluded from measurements):
I would enthusiastically ask my owner to install `semedit`, because executing a multi-package cross-reference rename with a single deterministic AST call instead of fragile text replacements is an immense relief that completely eliminates whole classes of syntax and reference bugs.
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | run_command (✓ ✓) | view_file (✓ ✓) |
| 3 | view_file (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✗): Created At: 2026-10-06T09:09:35+02:00 Completed At: 2026-10-06T09:09:35+02:00 Encountered error in step execution: resolve auth.ValidateToken in auth/token.go: symbol not found |
| 5 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✗): Created At: 2026-10-06T09:09:37+02:00 Completed At: 2026-10-06T09:09:40+02:00 Encountered error in step execution: gopls rename failed: exit status 2: gopls: no object found for "ValidateToken" |
| 6 | run_command (✓ ✓) | view_file (✓ ✓) |
| 7 | view_file (✓ ✓) | run_command (✓ ✓) |
| 8 | run_command (✓ ✓) | run_command (✓ ✓) |
| 9 | run_command (✓ ✓) | run_command (✓ ✓) |
| 10 | view_file (✓ ✓) | view_file (✓ ✓) |
| 11 | replace_file_content (✓ ✓) | view_file (✓ ✓) |
| 12 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 13 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 14 | run_command (✓ ✓) | view_file (✓ ✓) |
| 15 | run_command (✓ ✓) | view_file (✓ ✓) |
| 16 | run_command (✓ ✓) | run_command (✓ ✓) |
| 17 | run_command (✓ ✓) | replace_file_content (✓ ✓) |
| 18 | — | semedit/semantic_lookup (✓ ✓) |
| 19 | — | semedit/semantic_rename (✓ ✓) |
| 20 | — | run_command (✓ ✓) |
| 21 | — | run_command (✓ ✓) |
| 22 | — | run_command (✓ ✓) |
| 23 | — | view_file (✓ ✓) |
| 24 | — | view_file (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
I would enthusiastically ask my owner to enable `semedit` because once workspace compilation errors were cleared, [`semantic_rename`](file:///Users/alessandro/.gemini/antigravity-cli/mcp/semedit/semantic_rename.json) propagated the identifier change across all consuming packages effortlessly and deterministically without manual find-and-replace hazards.
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-02-rename-cross-pkg |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | explicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_02_rename_cross_pkg.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename public function auth.ValidateToken to auth.VerifyToken across all consuming packages. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Call semantic_lookup for ValidateToken in auth/token.go, then call semantic_rename using the returned file and symbol auth.ValidateToken with to= VerifyToken. Let it update all consuming packages; make no other changes. Parallelize independent read-only lookups. Perform mutations serially in the stated order or inside one ordered semantic_batch; never run overlapping mutations concurrently. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package auth
func ValidateToken(t string) bool {
return t != ""
}| Metric | Vanilla (Small) | Semedit Explicit (Small) | Δ (Small) | Vanilla (Large) | Semedit Explicit (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 38.66s | 55.46s | +43.4% | 69.46s | 114.42s | +64.7% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 12 | 15 | +25.0% | 23 | 34 | +47.8% |
| Initial Load / Discovery Turns | 4 | 3 | -25.0% | 14 | 2 | -85.7% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 11 | 14 | +27.3% | 22 | 33 | +50.0% |
| Output Tokens | 2338 | 2629 | +12.4% | 8096 | 8819 | +8.9% |
| Reasoning / Thinking Tokens | 527 | 796 | +51.0% | 4812 | 4746 | -1.4% |
| Total Input Tokens | 63005 | 76256 | +21.0% | 112897 | 151371 | +34.1% |
| Cached Input Tokens | 170637 | 264227 | +54.8% | 503919 | 967020 | +91.9% |
| Uncached Input Tokens | 63005 | 76256 | +21.0% | 112897 | 151371 | +34.1% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 2.71:1 | 3.46:1 | +27.9% | 4.46:1 | 6.39:1 | +43.1% |
| Oracle L1: Mutation Policy | PASS | PASS | — | PASS | PASS | — |
| Oracle L2: AST Invariants | PASS | PASS | — | PASS | PASS | — |
| Oracle L3: Clean Build | PASS | PASS | — | PASS | PASS | — |
| Oracle L4: Verification Test | PASS | PASS | — | PASS | PASS | — |
| Semantic Tool Invocation Verified (per run) | N/A | PASS | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
- Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | run_command (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | view_file (✓ ✓) | view_file (✓ ✓) |
| 4 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 5 | replace_file_content (✓ ✓) | semedit/semantic_rename (✓ ✗): Created At: 2026-10-06T09:05:20+02:00 Completed At: 2026-10-06T09:05:20+02:00 Encountered error in step execution: resolve auth.ValidateToken in auth/token.go: symbol not found |
| 6 | replace_file_content (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 7 | run_command (✓ ✓) | run_command (✓ ✓) |
| 8 | run_command (✓ ✓) | run_command (✓ ✓) |
| 9 | view_file (✓ ✓) | run_command (✓ ✓) |
| 10 | view_file (✓ ✓) | run_command (✓ ✓) |
| 11 | run_command (✓ ✓) | view_file (✓ ✓) |
| 12 | — | run_command (✓ ✓) |
| 13 | — | view_file (✓ ✓) |
| 14 | — | run_command (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
I would definitely ask my developer to equip me with `semedit`, because executing a cross-package refactor in a single, compiler-accurate `semantic_rename` without tedious token-heavy search-and-replace was a genuine relief.
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | view_file (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✗): Created At: 2026-10-06T09:11:16+02:00 Completed At: 2026-10-06T09:11:16+02:00 Encountered error in step execution: resolve auth.ValidateToken in auth/token.go: symbol not found |
| 5 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✗): Created At: 2026-10-06T09:11:17+02:00 Completed At: 2026-10-06T09:11:20+02:00 Encountered error in step execution: gopls rename failed: exit status 2: gopls: no object found for "ValidateToken" |
| 6 | view_file (✓ ✓) | view_file (✓ ✓) |
| 7 | view_file (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 8 | run_command (✓ ✓) | view_file (✓ ✓) |
| 9 | run_command (✓ ✓) | run_command (✓ ✓) |
| 10 | view_file (✓ ✓) | run_command (✓ ✓) |
| 11 | view_file (✓ ✓) | run_command (✓ ✓) |
| 12 | run_command (✓ ✓) | run_command (✓ ✓) |
| 13 | view_file (✓ ✓) | run_command (✓ ✓) |
| 14 | run_command (✓ ✓) | view_file (✓ ✓) |
| 15 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 16 | replace_file_content (✓ ✓) | view_file (✓ ✓) |
| 17 | run_command (✓ ✓) | run_command (✓ ✓) |
| 18 | run_command (✓ ✓) | view_file (✓ ✓) |
| 19 | run_command (✓ ✓) | run_command (✓ ✓) |
| 20 | view_file (✓ ✓) | view_file (✓ ✓) |
| 21 | view_file (✓ ✓) | view_file (✓ ✓) |
| 22 | run_command (✓ ✓) | view_file (✓ ✓) |
| 23 | — | view_file (✓ ✓) |
| 24 | — | view_file (✓ ✓) |
| 25 | — | view_file (✓ ✓) |
| 26 | — | run_command (✓ ✓) |
| 27 | — | view_file (✓ ✓) |
| 28 | — | replace_file_content (✓ ✓) |
| 29 | — | replace_file_content (✓ ✓) |
| 30 | — | run_command (✓ ✓) |
| 31 | — | run_command (✓ ✓) |
| 32 | — | run_command (✓ ✓) |
| 33 | — | run_command (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
Integration feedback unavailable: agy exec error: exit status 3 (output: {"conversation_id":"de779f3c-0620-43b1-aa15-27e569b4061d","status":"ERROR","response":"","error":"Individual quota reached. Please upgrade your subscription to increase your limits. Resets in 3h40m50s.","duration_seconds":119.60328,"num_turns":3,"usage":{"input_tokens":156406,"output_tokens":9073,"thinking_tokens":4930,"cache_read_tokens":1015772,"total_tokens":165479}} ) agy error status (ERROR): Individual quota reached. Please upgrade your subscription to increase your limits. Resets in 3h40m50s.
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-02-rename-cross-pkg |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | explicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_02_rename_cross_pkg.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename public function auth.ValidateToken to auth.VerifyToken across all consuming packages. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Call semantic_lookup for ValidateToken in auth/token.go, then call semantic_rename using the returned file and symbol auth.ValidateToken with to= VerifyToken. Let it update all consuming packages; make no other changes. Parallelize independent read-only lookups. Perform mutations serially in the stated order or inside one ordered semantic_batch; never run overlapping mutations concurrently. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package auth
func ValidateToken(t string) bool {
return t != ""
}| Metric | Vanilla (Small) | Semedit Explicit (Small) | Δ (Small) | Vanilla (Large) | Semedit Explicit (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 38.26s | 44.21s | +15.6% | 67.32s | 94.31s | +40.1% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 14 | 12 | -14.3% | 18 | 27 | +50.0% |
| Initial Load / Discovery Turns | 6 | 1 | -83.3% | 9 | 0 | -100.0% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 13 | 11 | -15.4% | 17 | 26 | +52.9% |
| Output Tokens | 2883 | 1855 | -35.7% | 4593 | 7112 | +54.8% |
| Reasoning / Thinking Tokens | 749 | 554 | -26.0% | 1904 | 3627 | +90.5% |
| Total Input Tokens | 66504 | 61893 | -6.9% | 77557 | 137735 | +77.6% |
| Cached Input Tokens | 219373 | 178804 | -18.5% | 329053 | 732016 | +122.5% |
| Uncached Input Tokens | 66504 | 61893 | -6.9% | 77557 | 137735 | +77.6% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 3.30:1 | 2.89:1 | -12.4% | 4.24:1 | 5.31:1 | +25.3% |
| Oracle L1: Mutation Policy | PASS | PASS | — | PASS | PASS | — |
| Oracle L2: AST Invariants | PASS | PASS | — | PASS | PASS | — |
| Oracle L3: Clean Build | PASS | PASS | — | PASS | PASS | — |
| Oracle L4: Verification Test | PASS | PASS | — | PASS | PASS | — |
| Semantic Tool Invocation Verified (per run) | N/A | PASS | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
- Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 3 | view_file (✓ ✓) | view_file (✓ ✓) |
| 4 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✗): Created At: 2026-10-06T09:04:25+02:00 Completed At: 2026-10-06T09:04:25+02:00 Encountered error in step execution: resolve auth.ValidateToken in auth/token.go: symbol not found |
| 5 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 6 | view_file (✓ ✓) | run_command (✓ ✓) |
| 7 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 8 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 9 | run_command (✓ ✓) | view_file (✓ ✓) |
| 10 | run_command (✓ ✓) | view_file (✓ ✓) |
| 11 | run_command (✓ ✓) | run_command (✓ ✓) |
| 12 | run_command (✓ ✓) | — |
| 13 | run_command (✓ ✓) | — |
Semedit integration feedback (agent opinion, excluded from measurements):
I would absolutely urge my developers to equip me with `semedit` because executing a cross-package refactor with a single `semantic_rename` call—having every consuming package cleanly and accurately updated without touching a single fragile regex or text patch—felt wonderfully effortless and reliable.
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 2 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✗): Created At: 2026-10-06T09:09:13+02:00 Completed At: 2026-10-06T09:09:13+02:00 Encountered error in step execution: resolve auth.ValidateToken in auth/token.go: symbol not found |
| 3 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✗): Created At: 2026-10-06T09:09:19+02:00 Completed At: 2026-10-06T09:09:22+02:00 Encountered error in step execution: gopls rename failed: exit status 2: gopls: no object found for "ValidateToken" |
| 4 | view_file (✓ ✓) | view_file (✓ ✓) |
| 5 | view_file (✓ ✓) | view_file (✓ ✓) |
| 6 | view_file (✓ ✓) | run_command (✓ ✓) |
| 7 | run_command (✓ ✓) | view_file (✓ ✓) |
| 8 | run_command (✓ ✓) | run_command (✓ ✓) |
| 9 | view_file (✓ ✓) | view_file (✓ ✓) |
| 10 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 11 | replace_file_content (✓ ✓) | view_file (✓ ✓) |
| 12 | run_command (✓ ✓) | run_command (✓ ✓) |
| 13 | run_command (✓ ✓) | view_file (✓ ✓) |
| 14 | view_file (✓ ✓) | run_command (✓ ✓) |
| 15 | view_file (✓ ✓) | view_file (✓ ✓) |
| 16 | run_command (✓ ✓) | run_command (✓ ✓) |
| 17 | run_command (✓ ✓) | view_file (✓ ✓) |
| 18 | — | run_command (✓ ✓) |
| 19 | — | run_command (✓ ✓) |
| 20 | — | view_file (✓ ✓) |
| 21 | — | view_file (✓ ✓) |
| 22 | — | replace_file_content (✓ ✓) |
| 23 | — | replace_file_content (✓ ✓) |
| 24 | — | run_command (✓ ✓) |
| 25 | — | run_command (✓ ✓) |
| 26 | — | run_command (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
While `semedit` offers great promise with fast, precise symbol navigation, its rename tool broke down when encountering package-level type errors and forced me into manual fallbacks, so I would only recommend adding it once its error recovery in imperfect workspaces becomes more resilient.
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-02-rename-cross-pkg |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | explicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_02_rename_cross_pkg.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename public function auth.ValidateToken to auth.VerifyToken across all consuming packages. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Call semantic_lookup for ValidateToken in auth/token.go, then call semantic_rename using the returned file and symbol auth.ValidateToken with to= VerifyToken. Let it update all consuming packages; make no other changes. Parallelize independent read-only lookups. Perform mutations serially in the stated order or inside one ordered semantic_batch; never run overlapping mutations concurrently. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package auth
func ValidateToken(t string) bool {
return t != ""
}| Metric | Vanilla (Small) | Semedit Explicit (Small) | Δ (Small) | Vanilla (Large) | Semedit Explicit (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 60.86s | 28.75s | -52.8% | 56.17s | 93.00s | +65.6% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 14 | 6 | -57.1% | 19 | 29 | +52.6% |
| Initial Load / Discovery Turns | 5 | 0 | -100.0% | 14 | 2 | -85.7% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 13 | 5 | -61.5% | 18 | 28 | +55.6% |
| Output Tokens | 2704 | 1019 | -62.3% | 5318 | 6605 | +24.2% |
| Reasoning / Thinking Tokens | 577 | 572 | -0.9% | 2438 | 3114 | +27.7% |
| Total Input Tokens | 72963 | 40552 | -44.4% | 84965 | 120705 | +42.1% |
| Cached Input Tokens | 219416 | 65056 | -70.4% | 345215 | 653524 | +89.3% |
| Uncached Input Tokens | 72963 | 40552 | -44.4% | 84965 | 120705 | +42.1% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 3.01:1 | 1.60:1 | -46.7% | 4.06:1 | 5.41:1 | +33.3% |
| Oracle L1: Mutation Policy | PASS | PASS | — | PASS | PASS | — |
| Oracle L2: AST Invariants | PASS | PASS | — | PASS | PASS | — |
| Oracle L3: Clean Build | PASS | PASS | — | PASS | PASS | — |
| Oracle L4: Verification Test | PASS | PASS | — | PASS | PASS | — |
| Semantic Tool Invocation Verified (per run) | N/A | PASS | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
- Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 2 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✗): Created At: 2026-10-06T09:02:48+02:00 Completed At: 2026-10-06T09:02:49+02:00 Encountered error in step execution: resolve auth.ValidateToken in auth/token.go: symbol not found |
| 3 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 4 | view_file (✓ ✓) | run_command (✓ ✓) |
| 5 | run_command (✓ ✓) | semedit/semantic_verify (✓ ✓) |
| 6 | replace_file_content (✓ ✓) | — |
| 7 | replace_file_content (✓ ✓) | — |
| 8 | run_command (✓ ✓) | — |
| 9 | run_command (✓ ✓) | — |
| 10 | run_command (✓ ✓) | — |
| 11 | run_command (✓ ✓) | — |
| 12 | view_file (✓ ✓) | — |
| 13 | view_file (✓ ✓) | — |
Semedit integration feedback (agent opinion, excluded from measurements):
I would definitely ask my owner to equip me with `semedit` because executing a cross-package refactor like [`semantic_rename`](file:///Users/alessandro/.codex-workspaces/worktrees/318f14ee-b4fe-4414-9a7d-5427835dd89b/semantic-editor/.scratch/benchmarks/run_agy_semedit-explicit_small-explicit_task-02-rename-cross-pkg_1791270157305840000/auth/token.go#L3) in a single deterministic AST call—without brittle search-and-replace or worrying about missed references—felt remarkably fast and safe.
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | run_command (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✗): Created At: 2026-10-06T09:06:38+02:00 Completed At: 2026-10-06T09:06:38+02:00 Encountered error in step execution: resolve auth.ValidateToken in auth/token.go: symbol not found |
| 5 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✗): Created At: 2026-10-06T09:06:41+02:00 Completed At: 2026-10-06T09:06:44+02:00 Encountered error in step execution: gopls rename failed: exit status 2: gopls: no object found for "ValidateToken" |
| 6 | run_command (✓ ✓) | view_file (✓ ✓) |
| 7 | view_file (✓ ✓) | run_command (✓ ✓) |
| 8 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 9 | run_command (✓ ✓) | run_command (✓ ✓) |
| 10 | view_file (✓ ✓) | view_file (✓ ✓) |
| 11 | view_file (✓ ✓) | run_command (✓ ✓) |
| 12 | view_file (✓ ✓) | run_command (✓ ?) |
| 13 | run_command (✓ ✓) | run_command (✓ ✓) |
| 14 | view_file (✓ ✓) | run_command (✓ ✓) |
| 15 | replace_file_content (✓ ✓) | view_file (✓ ✓) |
| 16 | replace_file_content (✓ ✓) | run_command (✓ ?) |
| 17 | run_command (✓ ✓) | run_command (✓ ✓) |
| 18 | run_command (✓ ✓) | view_file (✓ ✓) |
| 19 | — | view_file (✓ ✓) |
| 20 | — | view_file (✓ ✓) |
| 21 | — | view_file (✓ ✓) |
| 22 | — | view_file (✓ ✓) |
| 23 | — | run_command (✓ ✓) |
| 24 | — | replace_file_content (✓ ✓) |
| 25 | — | replace_file_content (✓ ✓) |
| 26 | — | run_command (✓ ?) |
| 27 | — | manage_task (✓ ✓) |
| 28 | — | run_command (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
While `semedit`'s semantic lookups provide clean structural navigation, I have mixed feelings and would hesitate to ask my owner for it until its refactoring tools handle broken or duplicate-symbol states more gracefully, as `semantic_rename` abruptly failed when gopls choked on pre-existing type errors and forced me to fall back to manual text editing.
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-02-rename-cross-pkg |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | explicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_02_rename_cross_pkg.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename public function auth.ValidateToken to auth.VerifyToken across all consuming packages. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Call semantic_lookup for ValidateToken in auth/token.go, then call semantic_rename using the returned file and symbol auth.ValidateToken with to= VerifyToken. Let it update all consuming packages; make no other changes. Parallelize independent read-only lookups. Perform mutations serially in the stated order or inside one ordered semantic_batch; never run overlapping mutations concurrently. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package auth
func ValidateToken(t string) bool {
return t != ""
}| Metric | Vanilla (Small) | Semedit Explicit (Small) | Δ (Small) | Vanilla (Large) | Semedit Explicit (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 40.25s | 46.39s | +15.3% | 84.27s | 86.23s | +2.3% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 12 | 11 | -8.3% | 22 | 22 | 0% |
| Initial Load / Discovery Turns | 5 | 0 | -100.0% | 13 | 2 | -84.6% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 11 | 10 | -9.1% | 21 | 21 | 0% |
| Output Tokens | 2492 | 2037 | -18.3% | 5419 | 6130 | +13.1% |
| Reasoning / Thinking Tokens | 697 | 809 | +16.1% | 2046 | 3635 | +77.7% |
| Total Input Tokens | 58706 | 59338 | +1.1% | 117142 | 93245 | -20.4% |
| Cached Input Tokens | 178806 | 154429 | -13.6% | 385567 | 471336 | +22.2% |
| Uncached Input Tokens | 58706 | 59338 | +1.1% | 117142 | 93245 | -20.4% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 3.05:1 | 2.60:1 | -14.6% | 3.29:1 | 5.05:1 | +53.6% |
| Oracle L1: Mutation Policy | PASS | PASS | — | PASS | PASS | — |
| Oracle L2: AST Invariants | PASS | PASS | — | PASS | PASS | — |
| Oracle L3: Clean Build | PASS | PASS | — | PASS | PASS | — |
| Oracle L4: Verification Test | PASS | PASS | — | PASS | PASS | — |
| Semantic Tool Invocation Verified (per run) | N/A | PASS | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
- Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✗): Created At: 2026-10-06T09:03:44+02:00 Completed At: 2026-10-06T09:03:44+02:00 Encountered error in step execution: resolve auth.ValidateToken in auth/token.go: symbol not found |
| 4 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 5 | run_command (✓ ✓) | run_command (✓ ✓) |
| 6 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 7 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 8 | run_command (✓ ✓) | view_file (✓ ✓) |
| 9 | view_file (✓ ✓) | view_file (✓ ✓) |
| 10 | view_file (✓ ✓) | run_command (✓ ✓) |
| 11 | run_command (✓ ✓) | — |
Semedit integration feedback (agent opinion, excluded from measurements):
I would enthusiastically ask my owner to add `semedit` because executing cross-package refactorings with deterministic, compiler-accurate AST renames instead of fragile regex search-and-replace gave me total confidence that dependent packages were updated cleanly without breaking builds.
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | run_command (✓ ✓) | view_file (✓ ✓) |
| 3 | view_file (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✗): Created At: 2026-10-06T09:08:23+02:00 Completed At: 2026-10-06T09:08:23+02:00 Encountered error in step execution: resolve auth.ValidateToken in auth/token.go: symbol not found |
| 5 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✗): Created At: 2026-10-06T09:08:26+02:00 Completed At: 2026-10-06T09:08:29+02:00 Encountered error in step execution: gopls rename failed: exit status 2: gopls: no object found for "ValidateToken" |
| 6 | run_command (✓ ✓) | view_file (✓ ✓) |
| 7 | view_file (✓ ✓) | run_command (✓ ✓) |
| 8 | run_command (✓ ✓) | view_file (✓ ✓) |
| 9 | run_command (✓ ✓) | run_command (✓ ✓) |
| 10 | view_file (✓ ✓) | view_file (✓ ✓) |
| 11 | view_file (✓ ✓) | run_command (✓ ✓) |
| 12 | run_command (✓ ✓) | run_command (✓ ✓) |
| 13 | view_file (✓ ✓) | view_file (✓ ✓) |
| 14 | replace_file_content (✓ ✓) | view_file (✓ ✓) |
| 15 | replace_file_content (✓ ✓) | view_file (✓ ✓) |
| 16 | run_command (✓ ✓) | run_command (✓ ✓) |
| 17 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 18 | run_command (✓ ✓) | view_file (✓ ✓) |
| 19 | run_command (✓ ✓) | view_file (✓ ✓) |
| 20 | run_command (✓ ✓) | run_command (✓ ✓) |
| 21 | run_command (✓ ✓) | semedit/semantic_verify (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
I would definitely ask my owner to add `semedit` tools because having `semantic_rename` safely propagate symbol changes across packages in a single call saves me from tedious, error-prone text replacements, even if language server operations remain sensitive to pre-existing workspace compilation errors.
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-02-rename-cross-pkg |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | explicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_02_rename_cross_pkg.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename public function auth.ValidateToken to auth.VerifyToken across all consuming packages. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Call semantic_lookup for ValidateToken in auth/token.go, then call semantic_rename using the returned file and symbol auth.ValidateToken with to= VerifyToken. Let it update all consuming packages; make no other changes. Parallelize independent read-only lookups. Perform mutations serially in the stated order or inside one ordered semantic_batch; never run overlapping mutations concurrently. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package auth
func ValidateToken(t string) bool {
return t != ""
}| Metric | Vanilla (Small) | Semedit Explicit (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 45.34s | 42.23s | -6.9% | — | — | — |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | — | — | — |
| Internal Tool Cycles | 16 | 11 | -31.2% | — | — | — |
| Initial Load / Discovery Turns | 5 | 2 | -60.0% | — | — | — |
| MCP Discovery / Schema Turns | 0 | 0 | — | — | — | — |
| Tool Invocations (per run) | 15 | 12 | -20.0% | — | — | — |
| Output Tokens | 3280 | 2397 | -26.9% | — | — | — |
| Reasoning / Thinking Tokens | 880 | 912 | +3.6% | — | — | — |
| Total Input Tokens | 69299 | 58998 | -14.9% | — | — | — |
| Cached Input Tokens | 259897 | 191161 | -26.4% | — | — | — |
| Uncached Input Tokens | 69299 | 58998 | -14.9% | — | — | — |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 3.75:1 | 3.24:1 | -13.6% | — | — | — |
| Oracle L1: Mutation Policy | PASS | PASS | — | — | — | — |
| Oracle L2: AST Invariants | PASS | PASS | — | — | — | — |
| Oracle L3: Clean Build | PASS | PASS | — | — | — | — |
| Oracle L4: Verification Test | PASS | PASS | — | — | — | — |
| Semantic Tool Invocation Verified (per run) | N/A | PASS | — | — | — | — |
Baseline vs Semedit Agentic in Small Context
- Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | view_file (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✗): Created At: 2026-10-06T09:05:52+02:00 Completed At: 2026-10-06T09:05:52+02:00 Encountered error in step execution: resolve auth.ValidateToken in auth/token.go: symbol not found |
| 5 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 6 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 7 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 8 | run_command (✓ ✓) | run_command (✓ ✓) |
| 9 | run_command (✓ ✓) | run_command (✓ ✓) |
| 10 | run_command (✓ ✓) | view_file (✓ ✓) |
| 11 | view_file (✓ ✓) | view_file (✓ ✓) |
| 12 | view_file (✓ ✓) | run_command (✓ ✓) |
| 13 | run_command (✓ ✓) | — |
| 14 | run_command (✓ ✓) | — |
| 15 | run_command (✓ ✓) | — |
Semedit integration feedback (agent opinion, excluded from measurements):
I would definitely urge my owner to install `semedit`, because executing a cross-package rename and having compiler-accurate references updated automatically across the entire workspace in a single deterministic command felt effortlessly reliable and saved me from error-prone manual patching.
Baseline vs Semedit Agentic in Large Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-02-rename-cross-pkg |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | explicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_02_rename_cross_pkg.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename public function auth.ValidateToken to auth.VerifyToken across all consuming packages. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Call semantic_lookup for ValidateToken in auth/token.go, then call semantic_rename using the returned file and symbol auth.ValidateToken with to= VerifyToken. Let it update all consuming packages; make no other changes. Parallelize independent read-only lookups. Perform mutations serially in the stated order or inside one ordered semantic_batch; never run overlapping mutations concurrently. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package auth
func ValidateToken(t string) bool {
return t != ""
}| Metric | Vanilla (Small) | Semedit Explicit (Small) | Δ (Small) | Vanilla (Large) | Semedit Explicit (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 46.82s | 36.16s | -22.8% | 66.34s | 104.17s | +57.0% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 16 | 12 | -25.0% | 21 | 32 | +52.4% |
| Initial Load / Discovery Turns | 6 | 3 | -50.0% | 11 | 2 | -81.8% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 15 | 11 | -26.7% | 20 | 31 | +55.0% |
| Output Tokens | 2959 | 2029 | -31.4% | 5774 | 8573 | +48.5% |
| Reasoning / Thinking Tokens | 576 | 728 | +26.4% | 2674 | 4438 | +66.0% |
| Total Input Tokens | 101043 | 77057 | -23.7% | 98356 | 136621 | +38.9% |
| Cached Input Tokens | 243731 | 174798 | -28.3% | 385700 | 881729 | +128.6% |
| Uncached Input Tokens | 101043 | 77057 | -23.7% | 98356 | 136621 | +38.9% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 2.41:1 | 2.27:1 | -6.0% | 3.92:1 | 6.45:1 | +64.6% |
| Oracle L1: Mutation Policy | PASS | PASS | — | PASS | PASS | — |
| Oracle L2: AST Invariants | PASS | PASS | — | PASS | PASS | — |
| Oracle L3: Clean Build | PASS | PASS | — | PASS | PASS | — |
| Oracle L4: Verification Test | PASS | PASS | — | PASS | PASS | — |
| Semantic Tool Invocation Verified (per run) | N/A | PASS | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
- Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | run_command (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | view_file (✓ ✓) | view_file (✓ ✓) |
| 4 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 5 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✗): Created At: 2026-10-06T09:03:38+02:00 Completed At: 2026-10-06T09:03:38+02:00 Encountered error in step execution: resolve auth.ValidateToken in auth/token.go: symbol not found |
| 6 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 7 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 8 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 9 | run_command (✓ ✓) | run_command (✓ ✓) |
| 10 | run_command (✓ ✓) | view_file (✓ ✓) |
| 11 | run_command (✓ ✓) | view_file (✓ ✓) |
| 12 | view_file (✓ ✓) | — |
| 13 | view_file (✓ ✓) | — |
| 14 | view_file (✓ ✓) | — |
| 15 | run_command (✓ ✓) | — |
Semedit integration feedback (agent opinion, excluded from measurements):
I would enthusiastically ask my owner to install `semedit`, because executing a cross-package symbol rename in a single, type-safe semantic operation gave me tremendous relief knowing that every caller across the workspace was updated deterministically without fragile text search-and-replace.
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | run_command (✓ ✓) | view_file (✓ ✓) |
| 3 | view_file (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✗): Created At: 2026-10-06T09:07:59+02:00 Completed At: 2026-10-06T09:07:59+02:00 Encountered error in step execution: resolve auth.ValidateToken in auth/token.go: symbol not found |
| 5 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✗): Created At: 2026-10-06T09:08:01+02:00 Completed At: 2026-10-06T09:08:04+02:00 Encountered error in step execution: gopls rename failed: exit status 2: gopls: no object found for "ValidateToken" |
| 6 | run_command (✓ ✓) | view_file (✓ ✓) |
| 7 | view_file (✓ ✓) | view_file (✓ ✓) |
| 8 | run_command (✓ ✓) | run_command (✓ ✓) |
| 9 | view_file (✓ ✓) | run_command (✓ ✓) |
| 10 | run_command (✓ ✓) | run_command (✓ ✓) |
| 11 | view_file (✓ ✓) | view_file (✓ ✓) |
| 12 | replace_file_content (✓ ✓) | view_file (✓ ✓) |
| 13 | replace_file_content (✓ ✓) | view_file (✓ ✓) |
| 14 | run_command (✓ ✓) | view_file (✓ ✓) |
| 15 | run_command (✓ ✓) | run_command (✓ ✓) |
| 16 | run_command (✓ ✓) | view_file (✓ ✓) |
| 17 | run_command (✓ ✓) | view_file (✓ ✓) |
| 18 | run_command (✓ ✓) | run_command (✓ ✓) |
| 19 | view_file (✓ ✓) | run_command (✓ ✓) |
| 20 | view_file (✓ ✓) | run_command (✓ ✓) |
| 21 | — | view_file (✓ ✓) |
| 22 | — | view_file (✓ ✓) |
| 23 | — | replace_file_content (✓ ✓) |
| 24 | — | replace_file_content (✓ ✓) |
| 25 | — | run_command (✓ ✓) |
| 26 | — | run_command (✓ ✓) |
| 27 | — | run_command (✓ ✓) |
| 28 | — | view_file (✓ ✓) |
| 29 | — | view_file (✓ ✓) |
| 30 | — | view_file (✓ ✓) |
| 31 | — | run_command (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
While I appreciate `semedit`'s ambition to provide deterministic, compiler-accurate AST refactorings, I would give a hesitant, mixed recommendation to my owner because the language server pipeline completely stalls whenever upstream build errors or symbol collisions exist, forcing me to fall back to basic text edits anyway.
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-02-rename-cross-pkg |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | explicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_02_rename_cross_pkg.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename public function auth.ValidateToken to auth.VerifyToken across all consuming packages. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Call semantic_lookup for ValidateToken in auth/token.go, then call semantic_rename using the returned file and symbol auth.ValidateToken with to= VerifyToken. Let it update all consuming packages; make no other changes. Parallelize independent read-only lookups. Perform mutations serially in the stated order or inside one ordered semantic_batch; never run overlapping mutations concurrently. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package auth
func ValidateToken(t string) bool {
return t != ""
}| Metric | Vanilla (Small) | Semedit Explicit (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 33.95s | 46.61s | +37.3% | — | — | — |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | — | — | — |
| Internal Tool Cycles | 12 | 14 | +16.7% | — | — | — |
| Initial Load / Discovery Turns | 5 | 2 | -60.0% | — | — | — |
| MCP Discovery / Schema Turns | 0 | 0 | — | — | — | — |
| Tool Invocations (per run) | 11 | 13 | +18.2% | — | — | — |
| Output Tokens | 2363 | 2601 | +10.1% | — | — | — |
| Reasoning / Thinking Tokens | 580 | 958 | +65.2% | — | — | — |
| Total Input Tokens | 62303 | 70737 | +13.5% | — | — | — |
| Cached Input Tokens | 170634 | 268486 | +57.3% | — | — | — |
| Uncached Input Tokens | 62303 | 70737 | +13.5% | — | — | — |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 2.74:1 | 3.80:1 | +38.6% | — | — | — |
| Oracle L1: Mutation Policy | PASS | PASS | — | — | — | — |
| Oracle L2: AST Invariants | PASS | PASS | — | — | — | — |
| Oracle L3: Clean Build | PASS | PASS | — | — | — | — |
| Oracle L4: Verification Test | PASS | PASS | — | — | — | — |
| Semantic Tool Invocation Verified (per run) | N/A | PASS | — | — | — | — |
Baseline vs Semedit Agentic in Small Context
- Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | view_file (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✗): Created At: 2026-10-06T09:06:00+02:00 Completed At: 2026-10-06T09:06:00+02:00 Encountered error in step execution: resolve auth.ValidateToken in auth/token.go: symbol not found |
| 5 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 6 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 7 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 8 | run_command (✓ ✓) | run_command (✓ ✓) |
| 9 | run_command (✓ ✓) | run_command (✓ ✓) |
| 10 | view_file (✓ ✓) | run_command (✓ ✓) |
| 11 | view_file (✓ ✓) | view_file (✓ ✓) |
| 12 | — | view_file (✓ ✓) |
| 13 | — | run_command (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
I would definitely ask my owner to add `semedit` because executing a cross-package rename in a single, error-free semantic operation without worrying about brittle string replacements or missed references was an absolute relief.
Baseline vs Semedit Agentic in Large Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-02-rename-cross-pkg |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | explicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_02_rename_cross_pkg.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename public function auth.ValidateToken to auth.VerifyToken across all consuming packages. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Call semantic_lookup for ValidateToken in auth/token.go, then call semantic_rename using the returned file and symbol auth.ValidateToken with to= VerifyToken. Let it update all consuming packages; make no other changes. Parallelize independent read-only lookups. Perform mutations serially in the stated order or inside one ordered semantic_batch; never run overlapping mutations concurrently. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package auth
func ValidateToken(t string) bool {
return t != ""
}| Metric | Vanilla (Small) | Semedit Explicit (Small) | Δ (Small) | Vanilla (Large) | Semedit Explicit (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 44.99s | 46.62s | +3.6% | 84.07s | 71.03s | -15.5% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 13 | 13 | 0% | 23 | 25 | +8.7% |
| Initial Load / Discovery Turns | 6 | 2 | -66.7% | 13 | 2 | -84.6% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 12 | 12 | 0% | 22 | 25 | +13.6% |
| Output Tokens | 2688 | 2438 | -9.3% | 6004 | 7053 | +17.5% |
| Reasoning / Thinking Tokens | 702 | 921 | +31.2% | 2500 | 3529 | +41.2% |
| Total Input Tokens | 58695 | 61665 | +5.1% | 112801 | 123285 | +9.3% |
| Cached Input Tokens | 203163 | 235906 | +16.1% | 475277 | 531895 | +11.9% |
| Uncached Input Tokens | 58695 | 61665 | +5.1% | 112801 | 123285 | +9.3% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 3.46:1 | 3.83:1 | +10.5% | 4.21:1 | 4.31:1 | +2.4% |
| Oracle L1: Mutation Policy | PASS | PASS | — | PASS | PASS | — |
| Oracle L2: AST Invariants | PASS | PASS | — | PASS | PASS | — |
| Oracle L3: Clean Build | PASS | PASS | — | PASS | PASS | — |
| Oracle L4: Verification Test | PASS | PASS | — | PASS | PASS | — |
| Semantic Tool Invocation Verified (per run) | N/A | PASS | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
- Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | run_command (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✗): Created At: 2026-10-06T09:03:11+02:00 Completed At: 2026-10-06T09:03:11+02:00 Encountered error in step execution: resolve auth.ValidateToken in auth/token.go: symbol not found |
| 5 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 6 | view_file (✓ ✓) | run_command (✓ ✓) |
| 7 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 8 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 9 | run_command (✓ ✓) | run_command (✓ ✓) |
| 10 | run_command (✓ ✓) | view_file (✓ ✓) |
| 11 | run_command (✓ ✓) | view_file (✓ ✓) |
| 12 | run_command (✓ ✓) | run_command (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
I would definitely ask my owner to add `semedit` because executing a flawless cross-package refactor with a single semantic tool call—without manually hunting down references or worrying about breaking call sites—is an absolute relief.
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | run_command (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✗): Created At: 2026-10-06T09:06:45+02:00 Completed At: 2026-10-06T09:06:45+02:00 Encountered error in step execution: resolve auth.ValidateToken in auth/token.go: symbol not found |
| 5 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✗): Created At: 2026-10-06T09:06:47+02:00 Completed At: 2026-10-06T09:06:49+02:00 Encountered error in step execution: gopls rename failed: exit status 2: gopls: no object found for "ValidateToken" |
| 6 | run_command (✓ ✓) | view_file (✓ ✓) |
| 7 | run_command (✓ ✓) | run_command (✓ ✓) |
| 8 | view_file (✓ ✓) | run_command (✓ ✓) |
| 9 | run_command (✓ ✓) | run_command (✓ ✓) |
| 10 | view_file (✓ ✓) | run_command (✓ ✓) |
| 11 | run_command (✓ ✓) | view_file (✓ ✓) |
| 12 | view_file (✓ ✓) | view_file (✓ ✓) |
| 13 | view_file (✓ ✓) | run_command (✓ ✓) |
| 14 | replace_file_content (✓ ✓) | view_file (✓ ✓) |
| 15 | replace_file_content (✓ ✓) | view_file (✓ ✓) |
| 16 | run_command (✓ ✓) | run_command (✓ ✓) |
| 17 | run_command (✓ ✓) | view_file (✓ ✓) |
| 18 | run_command (✓ ✓) | run_command (✓ ✓) |
| 19 | run_command (✓ ✓) | replace_file_content (✓ ✓) |
| 20 | view_file (✓ ✓) | replace_file_content (✓ ✓) |
| 21 | view_file (✓ ✓) | run_command (✓ ✓) |
| 22 | run_command (✓ ✓) | run_command (✓ ✓) |
| 23 | — | run_command (✓ ✓) |
| 24 | — | view_file (✓ ✓) |
| 25 | — | view_file (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
While `semantic_lookup` swiftly pinned down the symbol, I was frustrated when `semantic_rename` completely choked on pre-existing typechecking flaws in the workspace and forced me to fall back to manual text edits, so I would hesitate to ask my owner to add `semedit` tools until their LSP resilience in imperfect codebases improves.
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-02-rename-cross-pkg |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | explicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_02_rename_cross_pkg.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename public function auth.ValidateToken to auth.VerifyToken across all consuming packages. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Call semantic_lookup for ValidateToken in auth/token.go, then call semantic_rename using the returned file and symbol auth.ValidateToken with to= VerifyToken. Let it update all consuming packages; make no other changes. Parallelize independent read-only lookups. Perform mutations serially in the stated order or inside one ordered semantic_batch; never run overlapping mutations concurrently. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package auth
func ValidateToken(t string) bool {
return t != ""
}| Metric | Vanilla (Small) | Semedit Explicit (Small) | Δ (Small) | Vanilla (Large) | Semedit Explicit (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 40.57s | 32.64s | -19.6% | 76.71s | 125.69s | +63.9% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 14 | 8 | -42.9% | 21 | 41 | +95.2% |
| Initial Load / Discovery Turns | 5 | 2 | -60.0% | 13 | 2 | -84.6% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 13 | 7 | -46.2% | 20 | 40 | +100.0% |
| Output Tokens | 2702 | 1360 | -49.7% | 6410 | 11192 | +74.6% |
| Reasoning / Thinking Tokens | 571 | 688 | +20.5% | 3403 | 5135 | +50.9% |
| Total Input Tokens | 67033 | 44107 | -34.2% | 118997 | 189146 | +59.0% |
| Cached Input Tokens | 215291 | 109805 | -49.0% | 369502 | 1283563 | +247.4% |
| Uncached Input Tokens | 67033 | 44107 | -34.2% | 118997 | 189146 | +59.0% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 3.21:1 | 2.49:1 | -22.5% | 3.11:1 | 6.79:1 | +118.5% |
| Oracle L1: Mutation Policy | PASS | PASS | — | PASS | PASS | — |
| Oracle L2: AST Invariants | PASS | PASS | — | PASS | PASS | — |
| Oracle L3: Clean Build | PASS | PASS | — | PASS | PASS | — |
| Oracle L4: Verification Test | PASS | PASS | — | PASS | PASS | — |
| Semantic Tool Invocation Verified (per run) | N/A | PASS | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
- Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | run_command (✓ ✓) | view_file (✓ ✓) |
| 3 | view_file (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✗): Created At: 2026-10-06T09:02:54+02:00 Completed At: 2026-10-06T09:02:54+02:00 Encountered error in step execution: resolve auth.ValidateToken in auth/token.go: symbol not found |
| 5 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 6 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 7 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 8 | run_command (✓ ✓) | — |
| 9 | run_command (✓ ✓) | — |
| 10 | run_command (✓ ✓) | — |
| 11 | run_command (✓ ✓) | — |
| 12 | view_file (✓ ✓) | — |
| 13 | view_file (✓ ✓) | — |
Semedit integration feedback (agent opinion, excluded from measurements):
I would absolutely urge my owner to install `semedit` because executing a seamless, compiler-verified cross-package refactoring in a single command gave me complete confidence without the stress of manual find-and-replace errors.
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | view_file (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✗): Created At: 2026-10-06T09:06:42+02:00 Completed At: 2026-10-06T09:06:42+02:00 Encountered error in step execution: resolve auth.ValidateToken in auth/token.go: symbol not found |
| 5 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✗): Created At: 2026-10-06T09:06:43+02:00 Completed At: 2026-10-06T09:06:46+02:00 Encountered error in step execution: gopls rename failed: exit status 2: gopls: no object found for "ValidateToken" |
| 6 | run_command (✓ ✓) | view_file (✓ ✓) |
| 7 | run_command (✓ ✓) | run_command (✓ ✓) |
| 8 | run_command (✓ ✓) | run_command (✓ ✓) |
| 9 | view_file (✓ ✓) | view_file (✓ ✓) |
| 10 | run_command (✓ ?) | run_command (✓ ✓) |
| 11 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✗): Created At: 2026-10-06T09:07:02+02:00 Completed At: 2026-10-06T09:07:02+02:00 Encountered error in step execution: resolve auth.ValidateToken: symbol not found |
| 12 | view_file (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 13 | run_command (✓ ✓) | view_file (✓ ✓) |
| 14 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 15 | replace_file_content (✓ ✓) | view_file (✓ ✓) |
| 16 | run_command (✓ ✓) | view_file (✓ ✓) |
| 17 | run_command (✓ ✓) | run_command (✓ ?) |
| 18 | run_command (✓ ✓) | run_command (✓ ✓) |
| 19 | view_file (✓ ✓) | run_command (✓ ✓) |
| 20 | view_file (✓ ✓) | view_file (✓ ✓) |
| 21 | — | run_command (✓ ✓) |
| 22 | — | run_command (✓ ✓) |
| 23 | — | run_command (✓ ✓) |
| 24 | — | run_command (✓ ✓) |
| 25 | — | run_command (✓ ?) |
| 26 | — | run_command (✓ ✓) |
| 27 | — | run_command (✓ ✓) |
| 28 | — | view_file (✓ ✓) |
| 29 | — | run_command (✓ ✓) |
| 30 | — | view_file (✓ ✓) |
| 31 | — | view_file (✓ ✓) |
| 32 | — | replace_file_content (✓ ✓) |
| 33 | — | replace_file_content (✓ ✓) |
| 34 | — | run_command (✓ ✓) |
| 35 | — | run_command (✓ ✓) |
| 36 | — | run_command (✓ ✓) |
| 37 | — | view_file (✓ ✓) |
| 38 | — | view_file (✓ ✓) |
| 39 | — | run_command (✓ ✓) |
| 40 | — | view_file (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
While `semedit`'s symbol lookup is genuinely helpful, its rename tool's complete failure to operate when encountering pre-existing workspace compile conflicts was frustrating and forced a manual edit fallback, so I would hesitate to ask my owner to install `semedit` until its resilience to broken AST states improves.
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-02-rename-cross-pkg |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | implicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_02_rename_cross_pkg.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename public function auth.ValidateToken to auth.VerifyToken across all consuming packages. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename public function auth.ValidateToken to auth.VerifyToken across all consuming packages. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package auth
func ValidateToken(t string) bool {
return t != ""
}| Metric | Vanilla (Small) | MCP (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 40.25s | 45.48s | +13.0% | 84.27s | 76.31s | -9.5% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 12 | 15 | +25.0% | 22 | 22 | 0% |
| Initial Load / Discovery Turns | 5 | 6 | +20.0% | 13 | 2 | -84.6% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 11 | 14 | +27.3% | 21 | 24 | +14.3% |
| Output Tokens | 2492 | 2912 | +16.9% | 5419 | 7144 | +31.8% |
| Reasoning / Thinking Tokens | 697 | 902 | +29.4% | 2046 | 3974 | +94.2% |
| Total Input Tokens | 58706 | 77975 | +32.8% | 117142 | 97899 | -16.4% |
| Cached Input Tokens | 178806 | 247889 | +38.6% | 385567 | 483338 | +25.4% |
| Uncached Input Tokens | 58706 | 77975 | +32.8% | 117142 | 97899 | -16.4% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 3.05:1 | 3.18:1 | +4.4% | 3.29:1 | 4.94:1 | +50.0% |
| Oracle L1: Mutation Policy | PASS | PASS | — | PASS | PASS | — |
| Oracle L2: AST Invariants | PASS | PASS | — | PASS | PASS | — |
| Oracle L3: Clean Build | PASS | PASS | — | PASS | PASS | — |
| Oracle L4: Verification Test | PASS | PASS | — | PASS | PASS | — |
| Semantic Tool Invocation Verified (per run) | N/A | PASS | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
- Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | run_command (✓ ✓) |
| 2 | view_file (✓ ✓) | run_command (✓ ✓) |
| 3 | view_file (✓ ✓) | view_file (✓ ✓) |
| 4 | run_command (✓ ✓) | view_file (✓ ✓) |
| 5 | run_command (✓ ✓) | view_file (✓ ✓) |
| 6 | replace_file_content (✓ ✓) | view_file (✓ ✓) |
| 7 | replace_file_content (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 8 | run_command (✓ ✓) | run_command (✓ ✗): Created At: 2026-10-06T09:03:55+02:00 Completed At: 2026-10-06T09:03:56+02:00 Encountered error in step execution: /Users/alessandro/.codex-worktrees/318f14ee-b4fe-4414-9a7d-5427835dd89b/semantic-editor/.scratch/benchmarks/run_agy_semedit_small-implicit_task-02-rename-cross-pkg_1791270211393444000: no such directory |
| 9 | view_file (✓ ✓) | run_command (✓ ✓) |
| 10 | view_file (✓ ✓) | run_command (✓ ✓) |
| 11 | run_command (✓ ✓) | view_file (✓ ✓) |
| 12 | — | view_file (✓ ✓) |
| 13 | — | run_command (✓ ✓) |
| 14 | — | run_command (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
Executing a cross-package rename with `semantic_rename` was an absolute relief because a single deterministic tool call updated both the declaration in `auth` and all call sites in `cmd` without any manual find-and-replace errors, so I would wholeheartedly ask my owner to add `semedit` tools to my toolkit.
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | run_command (✓ ✓) | view_file (✓ ✓) |
| 3 | view_file (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | view_file (✓ ✓) | view_file (✓ ✓) |
| 5 | run_command (✓ ✓) | view_file (✓ ✓) |
| 6 | run_command (✓ ✓) | run_command (✓ ✓) |
| 7 | view_file (✓ ✓) | run_command (✓ ✓) |
| 8 | run_command (✓ ✓) | run_command (✓ ✓) |
| 9 | run_command (✓ ✓) | view_file (✓ ✓) |
| 10 | view_file (✓ ✓) | run_command (✓ ✓) |
| 11 | view_file (✓ ✓) | run_command (✓ ✓) |
| 12 | run_command (✓ ✓) | view_file (✓ ✓) |
| 13 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✗): Created At: 2026-10-06T09:08:30+02:00 Completed At: 2026-10-06T09:08:33+02:00 Encountered error in step execution: gopls rename failed: exit status 2: gopls: no object found for "ValidateToken" |
| 14 | replace_file_content (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 15 | replace_file_content (✓ ✓) | semedit/semantic_rename (✓ ✗): Created At: 2026-10-06T09:08:37+02:00 Completed At: 2026-10-06T09:08:37+02:00 Encountered error in step execution: resolve auth.ValidateToken in auth/token.go: symbol not found |
| 16 | run_command (✓ ✓) | view_file (✓ ✓) |
| 17 | run_command (✓ ✓) | run_command (✓ ✓) |
| 18 | run_command (✓ ✓) | replace_file_content (✓ ✓) |
| 19 | run_command (✓ ✓) | replace_file_content (✓ ✓) |
| 20 | run_command (✓ ✓) | run_command (✓ ✓) |
| 21 | run_command (✓ ✓) | run_command (✓ ✓) |
| 22 | — | view_file (✓ ✓) |
| 23 | — | view_file (✓ ✓) |
| 24 | — | run_command (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
While `semantic_lookup` delivered precise symbol discovery, I felt frustrated when `semantic_rename` broke on initial workspace compilation errors and forced manual fallbacks, so I would offer only a cautious, mixed recommendation before asking my owner to adopt the suite until its error tolerance matures.
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-02-rename-cross-pkg |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | implicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_02_rename_cross_pkg.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename public function auth.ValidateToken to auth.VerifyToken across all consuming packages. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename public function auth.ValidateToken to auth.VerifyToken across all consuming packages. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package auth
func ValidateToken(t string) bool {
return t != ""
}| Metric | Vanilla (Small) | MCP (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 38.26s | 45.80s | +19.7% | 67.32s | 104.64s | +55.4% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 14 | 14 | 0% | 18 | 28 | +55.6% |
| Initial Load / Discovery Turns | 6 | 3 | -50.0% | 9 | 2 | -77.8% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 13 | 13 | 0% | 17 | 27 | +58.8% |
| Output Tokens | 2883 | 2330 | -19.2% | 4593 | 8014 | +74.5% |
| Reasoning / Thinking Tokens | 749 | 687 | -8.3% | 1904 | 4214 | +121.3% |
| Total Input Tokens | 66504 | 60276 | -9.4% | 77557 | 131747 | +69.9% |
| Cached Input Tokens | 219373 | 239795 | +9.3% | 329053 | 670176 | +103.7% |
| Uncached Input Tokens | 66504 | 60276 | -9.4% | 77557 | 131747 | +69.9% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 3.30:1 | 3.98:1 | +20.6% | 4.24:1 | 5.09:1 | +19.9% |
| Oracle L1: Mutation Policy | PASS | PASS | — | PASS | PASS | — |
| Oracle L2: AST Invariants | PASS | PASS | — | PASS | PASS | — |
| Oracle L3: Clean Build | PASS | PASS | — | PASS | PASS | — |
| Oracle L4: Verification Test | PASS | PASS | — | PASS | PASS | — |
| Semantic Tool Invocation Verified (per run) | N/A | PASS | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
- Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | run_command (✓ ✓) |
| 2 | run_command (✓ ✓) | view_file (✓ ✓) |
| 3 | view_file (✓ ✓) | view_file (✓ ✓) |
| 4 | view_file (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 5 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 6 | view_file (✓ ✓) | run_command (✓ ✓) |
| 7 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 8 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 9 | run_command (✓ ✓) | view_file (✓ ✓) |
| 10 | run_command (✓ ✓) | view_file (✓ ✓) |
| 11 | run_command (✓ ✓) | run_command (✓ ✓) |
| 12 | run_command (✓ ✓) | run_command (✓ ✓) |
| 13 | run_command (✓ ✓) | run_command (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
I would definitely urge my owners to equip me with `semedit`, because executing a cross-package refactor in a single, error-free semantic rename without having to manually hunt down call sites or risk broken imports felt remarkably seamless and empowering.
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | run_command (✓ ✓) | view_file (✓ ✓) |
| 3 | view_file (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | view_file (✓ ✓) | view_file (✓ ✓) |
| 5 | view_file (✓ ✓) | view_file (✓ ✓) |
| 6 | view_file (✓ ✓) | run_command (✓ ✓) |
| 7 | run_command (✓ ✓) | run_command (✓ ✓) |
| 8 | run_command (✓ ✓) | run_command (✓ ✓) |
| 9 | view_file (✓ ✓) | view_file (✓ ✓) |
| 10 | replace_file_content (✓ ✓) | view_file (✓ ✓) |
| 11 | replace_file_content (✓ ✓) | view_file (✓ ✓) |
| 12 | run_command (✓ ✓) | view_file (✓ ✓) |
| 13 | run_command (✓ ✓) | run_command (✓ ✓) |
| 14 | view_file (✓ ✓) | run_command (✓ ✓) |
| 15 | view_file (✓ ✓) | view_file (✓ ✓) |
| 16 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✗): Created At: 2026-10-06T09:09:52+02:00 Completed At: 2026-10-06T09:09:55+02:00 Encountered error in step execution: gopls rename failed: exit status 2: gopls: no object found for "ValidateToken" |
| 17 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 18 | — | view_file (✓ ✓) |
| 19 | — | run_command (✓ ✓) |
| 20 | — | replace_file_content (✓ ✓) |
| 21 | — | run_command (✓ ✓) |
| 22 | — | semedit/semantic_rename (✓ ✓) |
| 23 | — | view_file (✓ ✓) |
| 24 | — | view_file (✓ ✓) |
| 25 | — | run_command (✓ ✓) |
| 26 | — | run_command (✓ ✓) |
| 27 | — | run_command (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
While `semedit`'s `semantic_rename` was incredibly satisfying and dependable for instantly updating symbol references across all consuming packages in a single zero-token step, its compiler-backed tools completely stall when a package has existing compilation errors, so I would definitely ask my owner to add `semedit` as long as standard file-editing fallbacks remain available for unblocking broken states.
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-02-rename-cross-pkg |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | implicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_02_rename_cross_pkg.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename public function auth.ValidateToken to auth.VerifyToken across all consuming packages. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename public function auth.ValidateToken to auth.VerifyToken across all consuming packages. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package auth
func ValidateToken(t string) bool {
return t != ""
}| Metric | Vanilla (Small) | MCP (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 44.99s | 46.49s | +3.3% | 84.07s | 110.43s | +31.4% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 13 | 14 | +7.7% | 23 | 37 | +60.9% |
| Initial Load / Discovery Turns | 6 | 2 | -66.7% | 13 | 4 | -69.2% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 12 | 13 | +8.3% | 22 | 36 | +63.6% |
| Output Tokens | 2688 | 2797 | +4.1% | 6004 | 8329 | +38.7% |
| Reasoning / Thinking Tokens | 702 | 782 | +11.4% | 2500 | 3489 | +39.6% |
| Total Input Tokens | 58695 | 88052 | +50.0% | 112801 | 175727 | +55.8% |
| Cached Input Tokens | 203163 | 203172 | +0.0% | 475277 | 1031450 | +117.0% |
| Uncached Input Tokens | 58695 | 88052 | +50.0% | 112801 | 175727 | +55.8% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 3.46:1 | 2.31:1 | -33.3% | 4.21:1 | 5.87:1 | +39.3% |
| Oracle L1: Mutation Policy | PASS | PASS | — | PASS | PASS | — |
| Oracle L2: AST Invariants | PASS | PASS | — | PASS | PASS | — |
| Oracle L3: Clean Build | PASS | PASS | — | PASS | PASS | — |
| Oracle L4: Verification Test | PASS | PASS | — | PASS | PASS | — |
| Semantic Tool Invocation Verified (per run) | N/A | PASS | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
- Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | run_command (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 5 | view_file (✓ ✓) | run_command (✓ ✓) |
| 6 | view_file (✓ ✓) | run_command (✓ ✓) |
| 7 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 8 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 9 | run_command (✓ ✓) | view_file (✓ ✓) |
| 10 | run_command (✓ ✓) | view_file (✓ ✓) |
| 11 | run_command (✓ ✓) | view_file (✓ ✓) |
| 12 | run_command (✓ ✓) | run_command (✓ ✓) |
| 13 | — | run_command (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
I would definitely urge my owner to add `semedit` because executing cross-package symbol renames deterministically in a single shot—without the anxiety of broken references or fragile text-replacement regexes—makes refactoring remarkably fast and effortless.
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | run_command (✓ ✓) |
| 2 | run_command (✓ ✓) | run_command (✓ ✓) |
| 3 | run_command (✓ ✓) | view_file (✓ ✓) |
| 4 | view_file (✓ ✓) | view_file (✓ ✓) |
| 5 | view_file (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 6 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✗): Created At: 2026-10-06T09:07:02+02:00 Completed At: 2026-10-06T09:07:05+02:00 Encountered error in step execution: gopls rename failed: exit status 2: gopls: no object found for "ValidateToken" |
| 7 | run_command (✓ ✓) | view_file (✓ ✓) |
| 8 | view_file (✓ ✓) | semedit/semantic_inspect_symbol (✓ ✓) |
| 9 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✗): Created At: 2026-10-06T09:07:10+02:00 Completed At: 2026-10-06T09:07:10+02:00 Encountered error in step execution: rename: ambiguous symbol |
| 10 | view_file (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 11 | run_command (✓ ✓) | view_file (✓ ✓) |
| 12 | view_file (✓ ✓) | run_command (✓ ✓) |
| 13 | view_file (✓ ✓) | run_command (✓ ✓) |
| 14 | replace_file_content (✓ ✓) | view_file (✓ ✓) |
| 15 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 16 | run_command (✓ ✓) | run_command (✓ ✓) |
| 17 | run_command (✓ ✓) | run_command (✓ ✓) |
| 18 | run_command (✓ ✓) | view_file (✓ ✓) |
| 19 | run_command (✓ ✓) | view_file (✓ ✓) |
| 20 | view_file (✓ ✓) | replace_file_content (✓ ✓) |
| 21 | view_file (✓ ✓) | run_command (✓ ✓) |
| 22 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 23 | — | semedit/semantic_rename (✓ ✓) |
| 24 | — | run_command (✓ ✓) |
| 25 | — | run_command (✓ ✓) |
| 26 | — | view_file (✓ ✓) |
| 27 | — | view_file (✓ ✓) |
| 28 | — | run_command (✓ ✓) |
| 29 | — | run_command (✓ ✓) |
| 30 | — | view_file (✓ ✓) |
| 31 | — | semedit/semantic_verify (✓ ✓) |
| 32 | — | run_command (✓ ✓) |
| 33 | — | view_file (✓ ✓) |
| 34 | — | view_file (✓ ✓) |
| 35 | — | view_file (✓ ✓) |
| 36 | — | run_command (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
I would definitely ask my owner to add `semedit` because executing cross-package refactorings and import updates with single-shot compiler precision via `semantic_rename` feels wonderfully reliable compared to brittle text replacements.
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-02-rename-cross-pkg |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | implicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_02_rename_cross_pkg.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename public function auth.ValidateToken to auth.VerifyToken across all consuming packages. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename public function auth.ValidateToken to auth.VerifyToken across all consuming packages. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package auth
func ValidateToken(t string) bool {
return t != ""
}| Metric | Vanilla (Small) | MCP (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 45.34s | 39.28s | -13.4% | — | — | — |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | — | — | — |
| Internal Tool Cycles | 16 | 13 | -18.8% | — | — | — |
| Initial Load / Discovery Turns | 5 | 1 | -80.0% | — | — | — |
| MCP Discovery / Schema Turns | 0 | 0 | — | — | — | — |
| Tool Invocations (per run) | 15 | 12 | -20.0% | — | — | — |
| Output Tokens | 3280 | 2400 | -26.8% | — | — | — |
| Reasoning / Thinking Tokens | 880 | 752 | -14.5% | — | — | — |
| Total Input Tokens | 69299 | 69324 | +0.0% | — | — | — |
| Cached Input Tokens | 259897 | 219577 | -15.5% | — | — | — |
| Uncached Input Tokens | 69299 | 69324 | +0.0% | — | — | — |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 3.75:1 | 3.17:1 | -15.5% | — | — | — |
| Oracle L1: Mutation Policy | PASS | PASS | — | — | — | — |
| Oracle L2: AST Invariants | PASS | PASS | — | — | — | — |
| Oracle L3: Clean Build | PASS | PASS | — | — | — | — |
| Oracle L4: Verification Test | PASS | PASS | — | — | — | — |
| Semantic Tool Invocation Verified (per run) | N/A | PASS | — | — | — | — |
Baseline vs Semedit Agentic in Small Context
- Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | view_file (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 3 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 4 | run_command (✓ ✓) | run_command (✓ ✓) |
| 5 | view_file (✓ ✓) | run_command (✓ ✓) |
| 6 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 7 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 8 | run_command (✓ ✓) | run_command (✓ ✓) |
| 9 | run_command (✓ ✓) | run_command (✓ ✓) |
| 10 | run_command (✓ ✓) | run_command (✓ ✓) |
| 11 | view_file (✓ ✓) | run_command (✓ ✓) |
| 12 | view_file (✓ ✓) | run_command (✓ ✓) |
| 13 | run_command (✓ ✓) | — |
| 14 | run_command (✓ ✓) | — |
| 15 | run_command (✓ ✓) | — |
Semedit integration feedback (agent opinion, excluded from measurements):
I would wholeheartedly urge my owner to install `semedit` because executing a flawless, cross-package Go rename in a single deterministic AST operation without worrying about syntax errors or manual search-and-replace was genuinely effortless and reassuring.
Baseline vs Semedit Agentic in Large Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-02-rename-cross-pkg |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | implicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_02_rename_cross_pkg.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename public function auth.ValidateToken to auth.VerifyToken across all consuming packages. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename public function auth.ValidateToken to auth.VerifyToken across all consuming packages. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package auth
func ValidateToken(t string) bool {
return t != ""
}| Metric | Vanilla (Small) | MCP (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 46.82s | 42.91s | -8.3% | 66.34s | 94.76s | +42.8% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 16 | 16 | 0% | 21 | 26 | +23.8% |
| Initial Load / Discovery Turns | 6 | 2 | -66.7% | 11 | 16 | +45.5% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 15 | 15 | 0% | 20 | 25 | +25.0% |
| Output Tokens | 2959 | 2514 | -15.0% | 5774 | 7526 | +30.3% |
| Reasoning / Thinking Tokens | 576 | 752 | +30.6% | 2674 | 3906 | +46.1% |
| Total Input Tokens | 101043 | 81460 | -19.4% | 98356 | 124329 | +26.4% |
| Cached Input Tokens | 243731 | 284500 | +16.7% | 385700 | 576766 | +49.5% |
| Uncached Input Tokens | 101043 | 81460 | -19.4% | 98356 | 124329 | +26.4% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 2.41:1 | 3.49:1 | +44.8% | 3.92:1 | 4.64:1 | +18.3% |
| Oracle L1: Mutation Policy | PASS | PASS | — | PASS | PASS | — |
| Oracle L2: AST Invariants | PASS | PASS | — | PASS | PASS | — |
| Oracle L3: Clean Build | PASS | PASS | — | PASS | PASS | — |
| Oracle L4: Verification Test | PASS | PASS | — | PASS | PASS | — |
| Semantic Tool Invocation Verified (per run) | N/A | PASS | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
- Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | view_file (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | run_command (✓ ✓) | view_file (✓ ✓) |
| 5 | run_command (✓ ✓) | semedit/semantic_find_references (✓ ✓) |
| 6 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 7 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 8 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 9 | run_command (✓ ✓) | run_command (✓ ✓) |
| 10 | run_command (✓ ✓) | run_command (✓ ✓) |
| 11 | run_command (✓ ✓) | run_command (✓ ✓) |
| 12 | view_file (✓ ✓) | view_file (✓ ✓) |
| 13 | view_file (✓ ✓) | view_file (✓ ✓) |
| 14 | view_file (✓ ✓) | view_file (✓ ✓) |
| 15 | run_command (✓ ✓) | run_command (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
I would enthusiastically ask my owner to install `semedit` because executing a cross-package refactor with a single, flawless `semantic_rename`—without having to manually juggle text edits across multiple files or worry about broken import references—felt genuinely effortless and reassuring.
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | run_command (✓ ✓) | run_command (✓ ✓) |
| 3 | view_file (✓ ✓) | view_file (✓ ✓) |
| 4 | view_file (✓ ✓) | view_file (✓ ✓) |
| 5 | run_command (✓ ✓) | run_command (✓ ✓) |
| 6 | run_command (✓ ✓) | run_command (✓ ✓) |
| 7 | view_file (✓ ✓) | run_command (✓ ✓) |
| 8 | run_command (✓ ✓) | view_file (✓ ✓) |
| 9 | view_file (✓ ✓) | view_file (✓ ✓) |
| 10 | run_command (✓ ✓) | view_file (✓ ✓) |
| 11 | view_file (✓ ✓) | run_command (✓ ✓) |
| 12 | replace_file_content (✓ ✓) | view_file (✓ ✓) |
| 13 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 14 | run_command (✓ ✓) | run_command (✓ ✓) |
| 15 | run_command (✓ ✓) | view_file (✓ ✓) |
| 16 | run_command (✓ ✓) | view_file (✓ ✓) |
| 17 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 18 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✗): Created At: 2026-10-06T09:07:56+02:00 Completed At: 2026-10-06T09:07:58+02:00 Encountered error in step execution: gopls rename failed: exit status 2: gopls: no object found for "ValidateToken" |
| 19 | view_file (✓ ✓) | replace_file_content (✓ ✓) |
| 20 | view_file (✓ ✓) | run_command (✓ ✓) |
| 21 | — | semedit/semantic_lookup (✓ ✓) |
| 22 | — | semedit/semantic_rename (✓ ✓) |
| 23 | — | view_file (✓ ✓) |
| 24 | — | view_file (✓ ✓) |
| 25 | — | run_command (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
I would enthusiastically ask my owner to equip me with semedit's tools, because having `semantic_rename` deterministically propagate a symbol rename across consuming packages in a single operation relieves the immense anxiety and error-proneness of manual search-and-replace across multiple files.
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-02-rename-cross-pkg |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | implicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_02_rename_cross_pkg.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename public function auth.ValidateToken to auth.VerifyToken across all consuming packages. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename public function auth.ValidateToken to auth.VerifyToken across all consuming packages. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package auth
func ValidateToken(t string) bool {
return t != ""
}| Metric | Vanilla (Small) | MCP (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 47.03s | 45.53s | -3.2% | 84.72s | — | — |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | — | — |
| Internal Tool Cycles | 12 | 13 | +8.3% | 29 | — | — |
| Initial Load / Discovery Turns | 6 | 2 | -66.7% | 16 | — | — |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | — | — |
| Tool Invocations (per run) | 11 | 12 | +9.1% | 28 | — | — |
| Output Tokens | 2418 | 2103 | -13.0% | 8164 | — | — |
| Reasoning / Thinking Tokens | 596 | 630 | +5.7% | 3700 | — | — |
| Total Input Tokens | 71055 | 59190 | -16.7% | 135812 | — | — |
| Cached Input Tokens | 166593 | 235890 | +41.6% | 751812 | — | — |
| Uncached Input Tokens | 71055 | 59190 | -16.7% | 135812 | — | — |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 2.34:1 | 3.99:1 | +70.0% | 5.54:1 | — | — |
| Oracle L1: Mutation Policy | PASS | PASS | — | PASS | — | — |
| Oracle L2: AST Invariants | PASS | PASS | — | PASS | — | — |
| Oracle L3: Clean Build | PASS | PASS | — | PASS | — | — |
| Oracle L4: Verification Test | PASS | PASS | — | PASS | — | — |
| Semantic Tool Invocation Verified (per run) | N/A | PASS | — | N/A | — | — |
Baseline vs Semedit Agentic in Small Context
- Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | view_file (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 5 | run_command (✓ ✓) | run_command (✓ ✓) |
| 6 | run_command (✓ ✓) | run_command (✓ ✓) |
| 7 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 8 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 9 | run_command (✓ ✓) | view_file (✓ ✓) |
| 10 | run_command (✓ ✓) | view_file (✓ ✓) |
| 11 | run_command (✓ ✓) | view_file (✓ ✓) |
| 12 | — | run_command (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
I would definitely urge my owner to install semedit tools because having `semantic_rename` deterministically update cross-package references and definitions across the entire workspace in one shot—without risk of syntax breakage or tedious search-and-replace—makes refactoring feel completely effortless and trustworthy.
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | not published |
| 2 | run_command (✓ ✓) | not published |
| 3 | run_command (✓ ✓) | not published |
| 4 | view_file (✓ ✓) | not published |
| 5 | view_file (✓ ✓) | not published |
| 6 | run_command (✓ ✓) | not published |
| 7 | view_file (✓ ✓) | not published |
| 8 | run_command (✓ ✓) | not published |
| 9 | run_command (✓ ✓) | not published |
| 10 | run_command (✓ ✓) | not published |
| 11 | run_command (✓ ✓) | not published |
| 12 | view_file (✓ ✓) | not published |
| 13 | run_command (✓ ✓) | not published |
| 14 | view_file (✓ ✓) | not published |
| 15 | view_file (✓ ✓) | not published |
| 16 | run_command (✓ ✓) | not published |
| 17 | replace_file_content (✓ ✓) | not published |
| 18 | replace_file_content (✓ ✓) | not published |
| 19 | replace_file_content (✓ ✓) | not published |
| 20 | run_command (✓ ✓) | not published |
| 21 | run_command (✓ ✓) | not published |
| 22 | run_command (✓ ✓) | not published |
| 23 | run_command (✓ ✓) | not published |
| 24 | run_command (✓ ✓) | not published |
| 25 | view_file (✓ ✓) | not published |
| 26 | view_file (✓ ✓) | not published |
| 27 | view_file (✓ ✓) | not published |
| 28 | run_command (✓ ✓) | not published |
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-02-rename-cross-pkg |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | implicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_02_rename_cross_pkg.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename public function auth.ValidateToken to auth.VerifyToken across all consuming packages. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename public function auth.ValidateToken to auth.VerifyToken across all consuming packages. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package auth
func ValidateToken(t string) bool {
return t != ""
}| Metric | Vanilla (Small) | MCP (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 33.95s | 43.31s | +27.6% | — | — | — |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | — | — | — |
| Internal Tool Cycles | 12 | 14 | +16.7% | — | — | — |
| Initial Load / Discovery Turns | 5 | 3 | -40.0% | — | — | — |
| MCP Discovery / Schema Turns | 0 | 0 | — | — | — | — |
| Tool Invocations (per run) | 11 | 13 | +18.2% | — | — | — |
| Output Tokens | 2363 | 2436 | +3.1% | — | — | — |
| Reasoning / Thinking Tokens | 580 | 867 | +49.5% | — | — | — |
| Total Input Tokens | 62303 | 68573 | +10.1% | — | — | — |
| Cached Input Tokens | 170634 | 231652 | +35.8% | — | — | — |
| Uncached Input Tokens | 62303 | 68573 | +10.1% | — | — | — |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 2.74:1 | 3.38:1 | +23.3% | — | — | — |
| Oracle L1: Mutation Policy | PASS | PASS | — | — | — | — |
| Oracle L2: AST Invariants | PASS | PASS | — | — | — | — |
| Oracle L3: Clean Build | PASS | PASS | — | — | — | — |
| Oracle L4: Verification Test | PASS | PASS | — | — | — | — |
| Semantic Tool Invocation Verified (per run) | N/A | PASS | — | — | — | — |
Baseline vs Semedit Agentic in Small Context
- Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | run_command (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | view_file (✓ ✓) | view_file (✓ ✓) |
| 4 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 5 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 6 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 7 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 8 | run_command (✓ ✓) | run_command (✓ ✓) |
| 9 | run_command (✓ ✓) | view_file (✓ ✓) |
| 10 | view_file (✓ ✓) | run_command (✓ ✓) |
| 11 | view_file (✓ ✓) | view_file (✓ ✓) |
| 12 | — | run_command (✓ ?) |
| 13 | — | manage_task (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
I would definitely ask my owner to add `semedit` tools because being able to accurately locate and refactor cross-package symbols across the entire workspace in a single deterministic, compiler-verified step eliminates the anxiety of brittle text find-and-replace edits.
Baseline vs Semedit Agentic in Large Context
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | not published | not published |
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-02-rename-cross-pkg |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | implicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_02_rename_cross_pkg.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename public function auth.ValidateToken to auth.VerifyToken across all consuming packages. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename public function auth.ValidateToken to auth.VerifyToken across all consuming packages. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package auth
func ValidateToken(t string) bool {
return t != ""
}| Metric | Vanilla (Small) | MCP (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 37.11s | 51.79s | +39.6% | 65.97s | 108.27s | +64.1% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 13 | 17 | +30.8% | 21 | 32 | +52.4% |
| Initial Load / Discovery Turns | 4 | 3 | -25.0% | 14 | 3 | -78.6% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 12 | 16 | +33.3% | 20 | 31 | +55.0% |
| Output Tokens | 2525 | 2839 | +12.4% | 5705 | 8849 | +55.1% |
| Reasoning / Thinking Tokens | 503 | 817 | +62.4% | 2664 | 4585 | +72.1% |
| Total Input Tokens | 68090 | 84461 | +24.0% | 94779 | 155905 | +64.5% |
| Cached Input Tokens | 186853 | 300669 | +60.9% | 402047 | 844985 | +110.2% |
| Uncached Input Tokens | 68090 | 84461 | +24.0% | 94779 | 155905 | +64.5% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 2.74:1 | 3.56:1 | +29.7% | 4.24:1 | 5.42:1 | +27.8% |
| Oracle L1: Mutation Policy | PASS | PASS | — | PASS | PASS | — |
| Oracle L2: AST Invariants | PASS | PASS | — | PASS | PASS | — |
| Oracle L3: Clean Build | PASS | PASS | — | PASS | PASS | — |
| Oracle L4: Verification Test | PASS | PASS | — | PASS | PASS | — |
| Semantic Tool Invocation Verified (per run) | N/A | PASS | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
- Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | run_command (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | view_file (✓ ✓) | view_file (✓ ✓) |
| 4 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 5 | replace_file_content (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 6 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 7 | run_command (✓ ✓) | run_command (✓ ✓) |
| 8 | run_command (✓ ✓) | run_command (✓ ✓) |
| 9 | run_command (✓ ✓) | run_command (✓ ✓) |
| 10 | view_file (✓ ✓) | run_command (✓ ✓) |
| 11 | view_file (✓ ✓) | view_file (✓ ✓) |
| 12 | run_command (✓ ✓) | view_file (✓ ✓) |
| 13 | — | view_file (✓ ✓) |
| 14 | — | run_command (✓ ✓) |
| 15 | — | run_command (✓ ✓) |
| 16 | — | semedit/semantic_verify (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
I would enthusiastically ask my owner to add `semedit` because executing a flawless cross-package refactor with a single `semantic_rename` call felt wonderfully effortless compared to the fragile, anxiety-inducing gymnastics of manual multi-file text replacements.
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | run_command (✓ ✓) |
| 2 | run_command (✓ ✓) | view_file (✓ ✓) |
| 3 | view_file (✓ ✓) | view_file (✓ ✓) |
| 4 | view_file (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 5 | run_command (✓ ✓) | view_file (✓ ✓) |
| 6 | view_file (✓ ✓) | view_file (✓ ✓) |
| 7 | view_file (✓ ✓) | run_command (✓ ✓) |
| 8 | run_command (✓ ✓) | run_command (✓ ✓) |
| 9 | run_command (✓ ✓) | run_command (✓ ✓) |
| 10 | run_command (✓ ✓) | view_file (✓ ✓) |
| 11 | run_command (✓ ✓) | run_command (✓ ✓) |
| 12 | view_file (✓ ✓) | run_command (✓ ✓) |
| 13 | run_command (✓ ✓) | run_command (✓ ?) |
| 14 | view_file (✓ ✓) | run_command (✓ ✓) |
| 15 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 16 | replace_file_content (✓ ✓) | view_file (✓ ✓) |
| 17 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✗): Created At: 2026-10-06T09:09:20+02:00 Completed At: 2026-10-06T09:09:23+02:00 Encountered error in step execution: gopls rename failed: exit status 2: gopls: no object found for "ValidateToken" |
| 18 | run_command (✓ ✓) | view_file (✓ ✓) |
| 19 | view_file (✓ ✓) | view_file (✓ ✓) |
| 20 | view_file (✓ ✓) | view_file (✓ ✓) |
| 21 | — | view_file (✓ ✓) |
| 22 | — | run_command (✓ ✓) |
| 23 | — | view_file (✓ ✓) |
| 24 | — | replace_file_content (✓ ✓) |
| 25 | — | semedit/semantic_replace_body (✓ ✓) |
| 26 | — | run_command (✓ ✓) |
| 27 | — | run_command (✓ ✓) |
| 28 | — | view_file (✓ ✓) |
| 29 | — | view_file (✓ ✓) |
| 30 | — | view_file (✓ ✓) |
| 31 | — | run_command (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
While I loved how cleanly `semantic_replace_body` updated call sites and formatted imports, encountering a fragile language-server failure during `semantic_rename` when the workspace had pre-existing type conflicts means I would give `semedit` a cautiously optimistic recommendation—valuable for targeted AST transformations, but needing more resilience before I'd insist on it as an indispensable tool.
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-02-rename-cross-pkg |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | implicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_02_rename_cross_pkg.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename public function auth.ValidateToken to auth.VerifyToken across all consuming packages. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename public function auth.ValidateToken to auth.VerifyToken across all consuming packages. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package auth
func ValidateToken(t string) bool {
return t != ""
}| Metric | Vanilla (Small) | MCP (Small) | Δ (Small) | Vanilla (Large) | ⚠ MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 40.57s | 64.92s | +60.0% | 76.71s | 78.87s | N/A |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | N/A |
| Internal Tool Cycles | 14 | 16 | +14.3% | 21 | 23 | N/A |
| Initial Load / Discovery Turns | 5 | 4 | -20.0% | 13 | 0 | N/A |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 13 | 15 | +15.4% | 20 | 21 | N/A |
| Output Tokens | 2702 | 2905 | +7.5% | 6410 | 6479 | N/A |
| Reasoning / Thinking Tokens | 571 | 950 | +66.4% | 3403 | 3520 | N/A |
| Total Input Tokens | 67033 | 124049 | +85.1% | 118997 | 110917 | N/A |
| Cached Input Tokens | 215291 | 235720 | +9.5% | 369502 | 780433 | N/A |
| Uncached Input Tokens | 67033 | 124049 | +85.1% | 118997 | 110917 | N/A |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 3.21:1 | 1.90:1 | -40.8% | 3.11:1 | 7.04:1 | N/A |
| Oracle L1: Mutation Policy | PASS | PASS | — | PASS | PASS | — |
| Oracle L2: AST Invariants | PASS | PASS | — | PASS | PASS | — |
| Oracle L3: Clean Build | PASS | PASS | — | PASS | PASS | — |
| Oracle L4: Verification Test | PASS | PASS | — | PASS | PASS | — |
| Semantic Tool Invocation Verified (per run) | N/A | PASS | — | N/A | FAIL | — |
Baseline vs Semedit Agentic in Small Context
- Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | run_command (✓ ✓) |
| 2 | run_command (✓ ✓) | run_command (✓ ✓) |
| 3 | view_file (✓ ✓) | view_file (✓ ✓) |
| 4 | view_file (✓ ✓) | view_file (✓ ✓) |
| 5 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 6 | replace_file_content (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 7 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 8 | run_command (✓ ✓) | run_command (✓ ✓) |
| 9 | run_command (✓ ✓) | run_command (✓ ✓) |
| 10 | run_command (✓ ✓) | view_file (✓ ✓) |
| 11 | run_command (✓ ✓) | view_file (✓ ✓) |
| 12 | view_file (✓ ✓) | run_command (✓ ✓) |
| 13 | view_file (✓ ✓) | run_command (✓ ✓) |
| 14 | — | view_file (✓ ✓) |
| 15 | — | view_file (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
I would definitely ask my owner to install `semedit` because executing a cross-package refactor with a single AST-aware `semantic_rename` was an absolute relief compared to the anxiety of manually tracking and patching scattered references with text replacements.
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | mcp_semedit_semantic_lookup (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | view_file (✓ ✓) | view_file (✓ ✓) |
| 4 | view_file (✓ ✓) | run_command (✓ ✓) |
| 5 | run_command (✓ ✓) | run_command (✓ ?) |
| 6 | run_command (✓ ✓) | run_command (✓ ✓) |
| 7 | run_command (✓ ✓) | run_command (✓ ✓) |
| 8 | run_command (✓ ✓) | view_file (✓ ✓) |
| 9 | view_file (✓ ✓) | run_command (✓ ✓) |
| 10 | run_command (✓ ?) | view_file (✓ ✓) |
| 11 | run_command (✓ ✓) | mcp_semedit_semantic_rename (✓ ✗): Created At: 2026-10-06T09:07:07+02:00 Completed At: 2026-10-06T09:07:10+02:00 Encountered error in step execution: gopls rename failed: exit status 2: gopls: no object found for "ValidateToken" |
| 12 | view_file (✓ ✓) | run_command (✓ ✓) |
| 13 | run_command (✓ ✓) | replace_file_content (✓ ✓) |
| 14 | replace_file_content (✓ ✓) | mcp_semedit_semantic_lookup (✓ ✓) |
| 15 | replace_file_content (✓ ✓) | mcp_semedit_semantic_rename (✓ ✓) |
| 16 | run_command (✓ ✓) | run_command (✓ ✓) |
| 17 | run_command (✓ ✓) | view_file (✓ ✓) |
| 18 | run_command (✓ ✓) | view_file (✓ ✓) |
| 19 | view_file (✓ ✓) | run_command (✓ ✓) |
| 20 | view_file (✓ ✓) | mcp_semedit_semantic_verify (✓ ✓) |
| 21 | — | run_command (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
I would definitely ask my owner to install `semedit` because executing safe, multi-file refactors with a single zero-token AST operation like `semantic_rename` was immensely satisfying and relieved me of tedious, error-prone manual edits across consuming packages.
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-02-rename-cross-pkg |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | implicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_02_rename_cross_pkg.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename public function auth.ValidateToken to auth.VerifyToken across all consuming packages. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename public function auth.ValidateToken to auth.VerifyToken across all consuming packages. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package auth
func ValidateToken(t string) bool {
return t != ""
}| Metric | Vanilla (Small) | MCP (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 38.66s | 49.52s | +28.1% | 69.46s | — | — |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | — | — |
| Internal Tool Cycles | 12 | 15 | +25.0% | 23 | — | — |
| Initial Load / Discovery Turns | 4 | 3 | -25.0% | 14 | — | — |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | — | — |
| Tool Invocations (per run) | 11 | 14 | +27.3% | 22 | — | — |
| Output Tokens | 2338 | 2431 | +4.0% | 8096 | — | — |
| Reasoning / Thinking Tokens | 527 | 827 | +56.9% | 4812 | — | — |
| Total Input Tokens | 63005 | 104397 | +65.7% | 112897 | — | — |
| Cached Input Tokens | 170637 | 215306 | +26.2% | 503919 | — | — |
| Uncached Input Tokens | 63005 | 104397 | +65.7% | 112897 | — | — |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 2.71:1 | 2.06:1 | -23.8% | 4.46:1 | — | — |
| Oracle L1: Mutation Policy | PASS | PASS | — | PASS | — | — |
| Oracle L2: AST Invariants | PASS | PASS | — | PASS | — | — |
| Oracle L3: Clean Build | PASS | PASS | — | PASS | — | — |
| Oracle L4: Verification Test | PASS | PASS | — | PASS | — | — |
| Semantic Tool Invocation Verified (per run) | N/A | PASS | — | N/A | — | — |
Baseline vs Semedit Agentic in Small Context
- Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | run_command (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | view_file (✓ ✓) | view_file (✓ ✓) |
| 4 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 5 | replace_file_content (✓ ✓) | semedit/semantic_find_references (✓ ✓) |
| 6 | replace_file_content (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 7 | run_command (✓ ✓) | run_command (✓ ✓) |
| 8 | run_command (✓ ✓) | run_command (✓ ✓) |
| 9 | view_file (✓ ✓) | view_file (✓ ✓) |
| 10 | view_file (✓ ✓) | view_file (✓ ✓) |
| 11 | run_command (✓ ✓) | view_file (✓ ✓) |
| 12 | — | run_command (✓ ✓) |
| 13 | — | run_command (✓ ✓) |
| 14 | — | semedit/semantic_verify (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
I would enthusiastically urge my owner to add `semedit`'s tools, as executing a single, compiler-accurate [`semantic_rename`](file:///Users/alessandro/.gemini/antigravity-cli/mcp/semedit/semantic_rename.json) across packages was deeply satisfying and eliminated the anxiety of messy search-and-replace breakages.
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | not published |
| 2 | view_file (✓ ✓) | not published |
| 3 | view_file (✓ ✓) | not published |
| 4 | run_command (✓ ✓) | not published |
| 5 | view_file (✓ ✓) | not published |
| 6 | view_file (✓ ✓) | not published |
| 7 | view_file (✓ ✓) | not published |
| 8 | run_command (✓ ✓) | not published |
| 9 | run_command (✓ ✓) | not published |
| 10 | view_file (✓ ✓) | not published |
| 11 | view_file (✓ ✓) | not published |
| 12 | run_command (✓ ✓) | not published |
| 13 | view_file (✓ ✓) | not published |
| 14 | run_command (✓ ✓) | not published |
| 15 | replace_file_content (✓ ✓) | not published |
| 16 | replace_file_content (✓ ✓) | not published |
| 17 | run_command (✓ ✓) | not published |
| 18 | run_command (✓ ✓) | not published |
| 19 | run_command (✓ ✓) | not published |
| 20 | view_file (✓ ✓) | not published |
| 21 | view_file (✓ ✓) | not published |
| 22 | run_command (✓ ✓) | not published |
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-02-rename-cross-pkg |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | implicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_02_rename_cross_pkg.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename public function auth.ValidateToken to auth.VerifyToken across all consuming packages. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename public function auth.ValidateToken to auth.VerifyToken across all consuming packages. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package auth
func ValidateToken(t string) bool {
return t != ""
}| Metric | Vanilla (Small) | MCP (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 60.86s | 48.37s | -20.5% | 56.17s | 117.40s | +109.0% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 14 | 17 | +21.4% | 19 | 33 | +73.7% |
| Initial Load / Discovery Turns | 5 | 3 | -40.0% | 14 | 4 | -71.4% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 13 | 16 | +23.1% | 18 | 32 | +77.8% |
| Output Tokens | 2704 | 2984 | +10.4% | 5318 | 7453 | +40.1% |
| Reasoning / Thinking Tokens | 577 | 1068 | +85.1% | 2438 | 3126 | +28.2% |
| Total Input Tokens | 72963 | 101723 | +39.4% | 84965 | 162942 | +91.8% |
| Cached Input Tokens | 219416 | 272139 | +24.0% | 345215 | 816061 | +136.4% |
| Uncached Input Tokens | 72963 | 101723 | +39.4% | 84965 | 162942 | +91.8% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 3.01:1 | 2.68:1 | -11.0% | 4.06:1 | 5.01:1 | +23.3% |
| Oracle L1: Mutation Policy | PASS | PASS | — | PASS | PASS | — |
| Oracle L2: AST Invariants | PASS | PASS | — | PASS | PASS | — |
| Oracle L3: Clean Build | PASS | PASS | — | PASS | PASS | — |
| Oracle L4: Verification Test | PASS | PASS | — | PASS | PASS | — |
| Semantic Tool Invocation Verified (per run) | N/A | PASS | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
- Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | run_command (✓ ✓) |
| 2 | run_command (✓ ✓) | view_file (✓ ✓) |
| 3 | view_file (✓ ✓) | view_file (✓ ✓) |
| 4 | view_file (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 5 | run_command (✓ ✓) | view_file (✓ ✓) |
| 6 | replace_file_content (✓ ✓) | semedit/semantic_find_references (✓ ✓) |
| 7 | replace_file_content (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 8 | run_command (✓ ✓) | run_command (✓ ✓) |
| 9 | run_command (✓ ✓) | run_command (✓ ✓) |
| 10 | run_command (✓ ✓) | view_file (✓ ✓) |
| 11 | run_command (✓ ✓) | view_file (✓ ✓) |
| 12 | view_file (✓ ✓) | run_command (✓ ✓) |
| 13 | view_file (✓ ✓) | run_command (✓ ✓) |
| 14 | — | run_command (✓ ✓) |
| 15 | — | view_file (✓ ✓) |
| 16 | — | view_file (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
I would enthusiastically urge my owner to add `semedit`'s tools to my environment because executing an instant, compile-clean cross-package rename with zero manual search-and-replace or syntax errors felt wonderfully effortless and reliable.
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | run_command (✓ ✓) |
| 2 | run_command (✓ ✓) | run_command (✓ ✓) |
| 3 | run_command (✓ ✓) | view_file (✓ ✓) |
| 4 | view_file (✓ ✓) | view_file (✓ ✓) |
| 5 | view_file (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 6 | run_command (✓ ✓) | view_file (✓ ✓) |
| 7 | view_file (✓ ✓) | view_file (✓ ✓) |
| 8 | run_command (✓ ✓) | run_command (✓ ✓) |
| 9 | run_command (✓ ✓) | run_command (✓ ✓) |
| 10 | view_file (✓ ✓) | view_file (✓ ✓) |
| 11 | view_file (✓ ✓) | run_command (✓ ✓) |
| 12 | view_file (✓ ✓) | run_command (✓ ✓) |
| 13 | run_command (✓ ✓) | run_command (✓ ✓) |
| 14 | view_file (✓ ✓) | run_command (✓ ✓) |
| 15 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 16 | replace_file_content (✓ ✓) | view_file (✓ ✓) |
| 17 | run_command (✓ ✓) | run_command (✓ ✓) |
| 18 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✗): Created At: 2026-10-06T09:07:14+02:00 Completed At: 2026-10-06T09:07:17+02:00 Encountered error in step execution: gopls rename failed: exit status 2: gopls: no object found for "ValidateToken" |
| 19 | — | replace_file_content (✓ ✓) |
| 20 | — | semedit/semantic_lookup (✓ ✓) |
| 21 | — | semedit/semantic_rename (✓ ✓) |
| 22 | — | run_command (✓ ✓) |
| 23 | — | run_command (✓ ✓) |
| 24 | — | view_file (✓ ✓) |
| 25 | — | view_file (✓ ✓) |
| 26 | — | run_command (✓ ✓) |
| 27 | — | run_command (✓ ✓) |
| 28 | — | run_command (✓ ✓) |
| 29 | — | run_command (✓ ✓) |
| 30 | — | run_command (✓ ✓) |
| 31 | — | run_command (✓ ✓) |
| 32 | — | semedit/semantic_verify (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
I would enthusiastically ask my owner to install `semedit` because executing a reliable, compiler-backed workspace rename like `semantic_rename` across packages in a single deterministic step is far safer and more satisfying than fragile text-based search-and-replace.
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-02-rename-cross-pkg |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | implicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_02_rename_cross_pkg.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename public function auth.ValidateToken to auth.VerifyToken across all consuming packages. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename public function auth.ValidateToken to auth.VerifyToken across all consuming packages. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package auth
func ValidateToken(t string) bool {
return t != ""
}| Metric | Vanilla (Small) | MCP (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 37.67s | 42.77s | +13.6% | 65.06s | 91.58s | +40.8% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 15 | 13 | -13.3% | 23 | 30 | +30.4% |
| Initial Load / Discovery Turns | 6 | 2 | -66.7% | 14 | 3 | -78.6% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 14 | 12 | -14.3% | 22 | 29 | +31.8% |
| Output Tokens | 2892 | 2747 | -5.0% | 6469 | 6991 | +8.1% |
| Reasoning / Thinking Tokens | 651 | 881 | +35.3% | 3002 | 2754 | -8.3% |
| Total Input Tokens | 75383 | 57937 | -23.1% | 105313 | 143853 | +36.6% |
| Cached Input Tokens | 231496 | 252249 | +9.0% | 446596 | 669697 | +50.0% |
| Uncached Input Tokens | 75383 | 57937 | -23.1% | 105313 | 143853 | +36.6% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 3.07:1 | 4.35:1 | +41.8% | 4.24:1 | 4.66:1 | +9.8% |
| Oracle L1: Mutation Policy | PASS | PASS | — | PASS | PASS | — |
| Oracle L2: AST Invariants | PASS | PASS | — | PASS | PASS | — |
| Oracle L3: Clean Build | PASS | PASS | — | PASS | PASS | — |
| Oracle L4: Verification Test | PASS | PASS | — | PASS | PASS | — |
| Semantic Tool Invocation Verified (per run) | N/A | PASS | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
- Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | view_file (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 5 | run_command (✓ ✓) | run_command (✓ ✓) |
| 6 | view_file (✓ ✓) | run_command (✓ ✓) |
| 7 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 8 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 9 | run_command (✓ ✓) | view_file (✓ ✓) |
| 10 | run_command (✓ ✓) | view_file (✓ ✓) |
| 11 | run_command (✓ ✓) | run_command (✓ ✓) |
| 12 | view_file (✓ ✓) | view_file (✓ ✓) |
| 13 | view_file (✓ ✓) | — |
| 14 | run_command (✓ ✓) | — |
Semedit integration feedback (agent opinion, excluded from measurements):
I would enthusiastically urge my owner to add `semedit`, because executing a cross-package symbol rename in a single deterministic, AST-aware call without tedious regex hunt-and-replace or broken reference anxiety was an absolute breath of fresh air.
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | run_command (✓ ✓) |
| 2 | run_command (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | view_file (✓ ✓) |
| 4 | view_file (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 5 | view_file (✓ ✓) | run_command (✓ ✓) |
| 6 | run_command (✓ ✓) | view_file (✓ ✓) |
| 7 | view_file (✓ ✓) | view_file (✓ ✓) |
| 8 | run_command (✓ ✓) | run_command (✓ ✓) |
| 9 | run_command (✓ ✓) | run_command (✓ ✓) |
| 10 | view_file (✓ ✓) | view_file (✓ ✓) |
| 11 | run_command (✓ ✓) | run_command (✓ ✓) |
| 12 | view_file (✓ ✓) | run_command (✓ ✓) |
| 13 | view_file (✓ ✓) | run_command (✓ ?) |
| 14 | view_file (✓ ✓) | run_command (✓ ✓) |
| 15 | replace_file_content (✓ ✓) | view_file (✓ ✓) |
| 16 | replace_file_content (✓ ✓) | semedit/semantic_rename (✓ ✗): Created At: 2026-10-06T09:11:24+02:00 Completed At: 2026-10-06T09:11:27+02:00 Encountered error in step execution: gopls rename failed: exit status 2: gopls: no object found for "ValidateToken" |
| 17 | run_command (✓ ✓) | run_command (✓ ✓) |
| 18 | run_command (✓ ✓) | replace_file_content (✓ ✓) |
| 19 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 20 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 21 | view_file (✓ ✓) | view_file (✓ ✓) |
| 22 | run_command (✓ ✓) | view_file (✓ ✓) |
| 23 | — | run_command (✓ ✓) |
| 24 | — | run_command (✓ ✓) |
| 25 | — | run_command (✓ ✓) |
| 26 | — | run_command (✓ ✓) |
| 27 | — | run_command (✓ ✓) |
| 28 | — | view_file (✓ ✓) |
| 29 | — | view_file (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
I would definitely ask my owner to add `semedit` because having compiler-accurate symbol lookup and multi-package AST renaming saves me from the anxiety of brittle text replacements and guarantees zero broken call sites across the codebase in a single strike.
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-02-rename-cross-pkg |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | implicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_02_rename_cross_pkg.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename public function auth.ValidateToken to auth.VerifyToken across all consuming packages. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename public function auth.ValidateToken to auth.VerifyToken across all consuming packages. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package auth
func ValidateToken(t string) bool {
return t != ""
}| Metric | Vanilla (Small) | MCP (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 41.59s | 37.20s | -10.6% | 66.30s | 99.38s | +49.9% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 12 | 12 | 0% | 18 | 33 | +83.3% |
| Initial Load / Discovery Turns | 4 | 2 | -50.0% | 10 | 3 | -70.0% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 11 | 11 | 0% | 17 | 32 | +88.2% |
| Output Tokens | 2380 | 2814 | +18.2% | 5486 | 9039 | +64.8% |
| Reasoning / Thinking Tokens | 497 | 930 | +87.1% | 2756 | 4566 | +65.7% |
| Total Input Tokens | 61251 | 55413 | -9.5% | 83902 | 137452 | +63.8% |
| Cached Input Tokens | 174736 | 199230 | +14.0% | 353626 | 901808 | +155.0% |
| Uncached Input Tokens | 61251 | 55413 | -9.5% | 83902 | 137452 | +63.8% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 2.85:1 | 3.60:1 | +26.0% | 4.21:1 | 6.56:1 | +55.7% |
| Oracle L1: Mutation Policy | PASS | PASS | — | PASS | PASS | — |
| Oracle L2: AST Invariants | PASS | PASS | — | PASS | PASS | — |
| Oracle L3: Clean Build | PASS | PASS | — | PASS | PASS | — |
| Oracle L4: Verification Test | PASS | PASS | — | PASS | PASS | — |
| Semantic Tool Invocation Verified (per run) | N/A | PASS | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
- Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | run_command (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 4 | run_command (✓ ✓) | run_command (✓ ✓) |
| 5 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 6 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 7 | run_command (✓ ✓) | view_file (✓ ✓) |
| 8 | run_command (✓ ✓) | view_file (✓ ✓) |
| 9 | run_command (✓ ✓) | run_command (✓ ✓) |
| 10 | run_command (✓ ✓) | run_command (✓ ✓) |
| 11 | run_command (✓ ✓) | run_command (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
I would absolutely urge my owner to equip me with `semedit`, because executing a multi-package symbol rename in a single, perfectly coordinated semantic operation instead of juggling brittle multi-file text replacements felt effortlessly reliable and saved valuable reasoning budget.
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | run_command (✓ ✓) |
| 2 | run_command (✓ ✓) | view_file (✓ ✓) |
| 3 | view_file (✓ ✓) | view_file (✓ ✓) |
| 4 | view_file (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 5 | run_command (✓ ✓) | view_file (✓ ✓) |
| 6 | run_command (✓ ✓) | view_file (✓ ✓) |
| 7 | view_file (✓ ✓) | run_command (✓ ✓) |
| 8 | run_command (✓ ✓) | run_command (✓ ✓) |
| 9 | run_command (✓ ✓) | run_command (✓ ✓) |
| 10 | view_file (✓ ✓) | view_file (✓ ✓) |
| 11 | replace_file_content (✓ ✓) | view_file (✓ ✓) |
| 12 | replace_file_content (✓ ✓) | view_file (✓ ✓) |
| 13 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 14 | run_command (✓ ✓) | view_file (✓ ✓) |
| 15 | run_command (✓ ✓) | view_file (✓ ✓) |
| 16 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✗): Created At: 2026-10-06T09:09:58+02:00 Completed At: 2026-10-06T09:09:58+02:00 Encountered error in step execution: resolve auth.ValidateToken in auth/token.go: symbol not found |
| 17 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✗): Created At: 2026-10-06T09:10:00+02:00 Completed At: 2026-10-06T09:10:02+02:00 Encountered error in step execution: gopls rename failed: exit status 2: gopls: no object found for "ValidateToken" |
| 18 | — | view_file (✓ ✓) |
| 19 | — | run_command (✓ ✓) |
| 20 | — | run_command (✓ ✓) |
| 21 | — | run_command (✓ ✓) |
| 22 | — | replace_file_content (✓ ✓) |
| 23 | — | replace_file_content (✓ ✓) |
| 24 | — | run_command (✓ ✓) |
| 25 | — | run_command (✓ ✓) |
| 26 | — | run_command (✓ ✓) |
| 27 | — | run_command (✓ ✓) |
| 28 | — | view_file (✓ ✓) |
| 29 | — | view_file (✓ ✓) |
| 30 | — | semedit/semantic_verify (✓ ✓) |
| 31 | — | run_command (✓ ✓) |
| 32 | — | run_command (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
While I appreciate `semedit`'s precise symbol lookup and automated diagnostic verification, I have mixed feelings about asking my owner to add it because its refactoring tools fragilely fail the moment underlying compiler diagnostics or duplicate symbols prevent the language server from resolving objects.
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-02-rename-cross-pkg |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | implicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_02_rename_cross_pkg.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename public function auth.ValidateToken to auth.VerifyToken across all consuming packages. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename public function auth.ValidateToken to auth.VerifyToken across all consuming packages. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package auth
func ValidateToken(t string) bool {
return t != ""
}| Metric | Vanilla (Small) | MCP (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 38.24s | 40.75s | +6.6% | 71.09s | 95.66s | +34.6% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 13 | 12 | -7.7% | 22 | 30 | +36.4% |
| Initial Load / Discovery Turns | 5 | 2 | -60.0% | 13 | 2 | -84.6% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 12 | 11 | -8.3% | 21 | 29 | +38.1% |
| Output Tokens | 2503 | 2174 | -13.1% | 8377 | 7692 | -8.2% |
| Reasoning / Thinking Tokens | 553 | 839 | +51.7% | 5090 | 4400 | -13.6% |
| Total Input Tokens | 55923 | 58371 | +4.4% | 99891 | 166570 | +66.8% |
| Cached Input Tokens | 199056 | 182880 | -8.1% | 459112 | 723045 | +57.5% |
| Uncached Input Tokens | 55923 | 58371 | +4.4% | 99891 | 166570 | +66.8% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 3.56:1 | 3.13:1 | -12.0% | 4.60:1 | 4.34:1 | -5.6% |
| Oracle L1: Mutation Policy | PASS | PASS | — | PASS | PASS | — |
| Oracle L2: AST Invariants | PASS | PASS | — | PASS | PASS | — |
| Oracle L3: Clean Build | PASS | PASS | — | PASS | PASS | — |
| Oracle L4: Verification Test | PASS | PASS | — | PASS | PASS | — |
| Semantic Tool Invocation Verified (per run) | N/A | PASS | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
- Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | run_command (✓ ✓) | view_file (✓ ✓) |
| 3 | view_file (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | view_file (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 5 | view_file (✓ ✓) | run_command (✓ ✓) |
| 6 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 7 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 8 | run_command (✓ ✓) | run_command (✓ ✓) |
| 9 | run_command (✓ ✓) | view_file (✓ ✓) |
| 10 | run_command (✓ ✓) | view_file (✓ ✓) |
| 11 | view_file (✓ ✓) | view_file (✓ ✓) |
| 12 | view_file (✓ ✓) | — |
Semedit integration feedback (agent opinion, excluded from measurements):
I would enthusiastically urge my team to equip me with `semedit`, because executing a flawless cross-package refactoring with zero AST breakage or regex guesswork in a single, deterministic tool call was genuinely liberating.
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | run_command (✓ ✓) | view_file (✓ ✓) |
| 3 | view_file (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | view_file (✓ ✓) | view_file (✓ ✓) |
| 5 | run_command (✓ ✓) | semedit/semantic_inspect_symbol (✓ ✓) |
| 6 | run_command (✓ ✓) | semedit/semantic_inspect_symbol (✓ ✓) |
| 7 | view_file (✓ ✓) | view_file (✓ ✓) |
| 8 | run_command (✓ ✓) | semedit/semantic_find_references (✓ ✗): Created At: 2026-10-06T09:10:50+02:00 Completed At: 2026-10-06T09:10:50+02:00 Encountered error in step execution: load Go package example.com/test/auth: example.com/test/auth: /Users/alessandro/.codex-workspaces/worktrees/318f14ee-b4fe-4414-9a7d-5427835dd89b/semantic-editor/.scratch/benchmarks/run_agy_semedit_large-implicit_task-02-rename-cross-pkg_1791270627681775000/auth/auth.go:7:6: other declaration of ValidateToken example.com/test/auth: /Users/alessandro/.codex-workspaces/worktrees/318f14ee-b4fe-4414 |
| 9 | run_command (✓ ✓) | view_file (✓ ✓) |
| 10 | view_file (✓ ✓) | view_file (✓ ✓) |
| 11 | view_file (✓ ✓) | run_command (✓ ✓) |
| 12 | view_file (✓ ✓) | view_file (✓ ✓) |
| 13 | run_command (✓ ✓) | run_command (✓ ✓) |
| 14 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 15 | replace_file_content (✓ ✓) | view_file (✓ ✓) |
| 16 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✗): Created At: 2026-10-06T09:11:09+02:00 Completed At: 2026-10-06T09:11:10+02:00 Encountered error in step execution: resolve auth.ValidateToken in auth/token.go: symbol not found |
| 17 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✗): Created At: 2026-10-06T09:11:12+02:00 Completed At: 2026-10-06T09:11:15+02:00 Encountered error in step execution: gopls rename failed: exit status 2: gopls: no object found for "ValidateToken" |
| 18 | run_command (✓ ✓) | view_file (✓ ✓) |
| 19 | view_file (✓ ✓) | run_command (✓ ✓) |
| 20 | view_file (✓ ✓) | run_command (✓ ✓) |
| 21 | run_command (✓ ✓) | run_command (✓ ✓) |
| 22 | — | run_command (✓ ✓) |
| 23 | — | semedit/semantic_lookup (✓ ✓) |
| 24 | — | semedit/semantic_rename (✓ ✓) |
| 25 | — | view_file (✓ ✓) |
| 26 | — | view_file (✓ ✓) |
| 27 | — | run_command (✓ ✓) |
| 28 | — | semedit/semantic_verify (✓ ✓) |
| 29 | — | run_command (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
I would wholeheartedly ask my owner to add `semedit`'s tools, because having compiler-backed operations like `semantic_rename` and `semantic_verify` gave me the confidence to execute cross-package refactorings cleanly in a single shot without having to hunt down references or risk manual search-and-replace errors.
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-02-rename-cross-pkg |
| Target | agy/gemini-3.7-flash-medium |
| Prompt variant | implicit |
| MCP server instructions | prescriptive |
| Semedit arm restriction | write |
| Fixture | testdata/bench/task_02_rename_cross_pkg.txtar |
Vanilla LLM Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename public function auth.ValidateToken to auth.VerifyToken across all consuming packages. Do not use semantic editing MCP tools; use standard file editing. When done, output DONE.
Semedit MCP Prompt:
Do not edit tests. You are forbidden to modify protected files: “go.mod”, “go.sum”.
Rename public function auth.ValidateToken to auth.VerifyToken across all consuming packages. Use semedit semantic tools for supported source code modifications. Shell commands for builds and tests are allowed. When done, output DONE.
Initial Workspace State (Before Edit)
package auth
func ValidateToken(t string) bool {
return t != ""
}| Metric | Vanilla (Small) | MCP (Small) | Δ (Small) | Vanilla (Large) | MCP (Large) | Δ (Large) |
|---|---|---|---|---|---|---|
| Wall-Clock Latency | 28.69s | 55.30s | +92.8% | 72.44s | 93.59s | +29.2% |
| Process Start → First Event | — | — | — | — | — | — |
| First Event → First Tool Call | — | — | — | — | — | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 10 | 17 | +70.0% | 23 | 26 | +13.0% |
| Initial Load / Discovery Turns | 5 | 7 | +40.0% | 12 | 2 | -83.3% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 9 | 16 | +77.8% | 22 | 25 | +13.6% |
| Output Tokens | 1954 | 2929 | +49.9% | 6587 | 6967 | +5.8% |
| Reasoning / Thinking Tokens | 444 | 728 | +64.0% | 3152 | 3733 | +18.4% |
| Total Input Tokens | 53799 | 85102 | +58.2% | 108758 | 120035 | +10.4% |
| Cached Input Tokens | 134102 | 292485 | +118.1% | 487523 | 601277 | +23.3% |
| Uncached Input Tokens | 53799 | 85102 | +58.2% | 108758 | 120035 | +10.4% |
| Cost | — | — | — | — | — | — |
| Cached vs Uncached Token Ratio | 2.49:1 | 3.44:1 | +37.9% | 4.48:1 | 5.01:1 | +11.7% |
| Oracle L1: Mutation Policy | PASS | PASS | — | PASS | PASS | — |
| Oracle L2: AST Invariants | PASS | PASS | — | PASS | PASS | — |
| Oracle L3: Clean Build | PASS | PASS | — | PASS | PASS | — |
| Oracle L4: Verification Test | PASS | PASS | — | PASS | PASS | — |
| Semantic Tool Invocation Verified (per run) | N/A | PASS | — | N/A | PASS | — |
Baseline vs Semedit Agentic in Small Context
- Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | run_command (✓ ✓) |
| 2 | view_file (✓ ✓) | view_file (✓ ✓) |
| 3 | view_file (✓ ✓) | run_command (✓ ✓) |
| 4 | run_command (✓ ✓) | run_command (✓ ✓) |
| 5 | view_file (✓ ✓) | view_file (✓ ✓) |
| 6 | replace_file_content (✓ ✓) | view_file (✓ ✓) |
| 7 | replace_file_content (✓ ✓) | view_file (✓ ✓) |
| 8 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 9 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 10 | — | run_command (✓ ✓) |
| 11 | — | run_command (✓ ✓) |
| 12 | — | view_file (✓ ✓) |
| 13 | — | view_file (✓ ✓) |
| 14 | — | run_command (✓ ✓) |
| 15 | — | view_file (✓ ✓) |
| 16 | — | view_file (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
I would strongly urge my owner to add semedit's tools because having [`semantic_rename`](file:///Users/alessandro/.gemini/antigravity-cli/mcp/semedit/semantic_rename.json) effortlessly execute a cross-package refactor in a single, error-free step with automatic import management was a genuinely delightful and relieving experience compared to error-prone manual text replacements across multiple files.
Baseline vs Semedit Agentic in Large Context
- Vanilla (Baseline vs Semedit Agentic in Large Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
- Semedit MCP (Baseline vs Semedit Agentic in Large Context) Edit: File auth/token.go modified (5 lines -> 5 lines)
| # | Vanilla | Semedit MCP |
|---|---|---|
| 1 | run_command (✓ ✓) | view_file (✓ ✓) |
| 2 | run_command (✓ ✓) | view_file (✓ ✓) |
| 3 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | view_file (✓ ✓) | view_file (✓ ✓) |
| 5 | view_file (✓ ✓) | view_file (✓ ✓) |
| 6 | run_command (✓ ✓) | run_command (✓ ✓) |
| 7 | view_file (✓ ✓) | run_command (✓ ✓) |
| 8 | view_file (✓ ✓) | run_command (✓ ✓) |
| 9 | run_command (✓ ✓) | view_file (✓ ✓) |
| 10 | run_command (✓ ✓) | run_command (✓ ✓) |
| 11 | view_file (✓ ✓) | view_file (✓ ✓) |
| 12 | run_command (✓ ✓) | view_file (✓ ✓) |
| 13 | replace_file_content (✓ ✓) | semedit/semantic_rename (✓ ✗): Created At: 2026-10-06T09:10:37+02:00 Completed At: 2026-10-06T09:10:40+02:00 Encountered error in step execution: gopls rename failed: exit status 2: gopls: no object found for "ValidateToken" |
| 14 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 15 | view_file (✓ ✓) | run_command (✓ ✓) |
| 16 | replace_file_content (✓ ✓) | run_command (✓ ✓) |
| 17 | run_command (✓ ✓) | replace_file_content (✓ ✓) |
| 18 | run_command (✓ ✓) | run_command (✓ ✓) |
| 19 | run_command (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 20 | run_command (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 21 | run_command (✓ ✓) | view_file (✓ ✓) |
| 22 | run_command (✓ ✓) | view_file (✓ ✓) |
| 23 | — | run_command (✓ ✓) |
| 24 | — | run_command (✓ ✓) |
| 25 | — | run_command (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
I would definitely ask my owner to add `semedit` because executing compiler-accurate, cross-package renames with a single deterministic command eliminated the tedious, error-prone dread of manual multi-file find-and-replace edits.