Benchmark run task02-corrected-overlay-explicit-r15-luna6-20261006
This page contains exactly the publishable benchmark observations recorded in run task02-corrected-overlay-explicit-r15-luna6-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-02-rename-cross-pkg
Target: codex/gpt-6-luna/medium
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-02-rename-cross-pkg |
| Target | codex/gpt-6-luna/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 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 | 62.59s | 35.90s | -42.6% | 16.73s | 20.16s | +20.5% |
| Process Start → First Event | 0.13s | 0.12s | — | 0.14s | 0.17s | — |
| First Event → First Tool Call | 26.00s | 16.65s | — | 5.11s | 5.38s | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 3 | 3 | 0% | 3 | 2 | -33.3% |
| Initial Load / Discovery Turns | 1 | 0 | -100.0% | 2 | 0 | -100.0% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 3 | 3 | 0% | 3 | 2 | -33.3% |
| Output Tokens | 360 | 214 | -40.6% | 265 | 154 | -41.9% |
| Reasoning / Thinking Tokens | 69 | 0 | -100.0% | 31 | 0 | -100.0% |
| Total Input Tokens | 78575 | 134492 | +71.2% | 78204 | 104367 | +33.5% |
| Cached Input Tokens | 68608 | 114432 | +66.8% | 61440 | 86016 | +40.0% |
| Uncached Input Tokens | 9967 | 20060 | +101.3% | 16764 | 18351 | +9.5% |
| Cost | 0.0474 | 0.0814 | +71.7% | 0.0610 | 0.0693 | +13.7% |
| Cached vs Uncached Token Ratio | 6.88:1 | 5.70:1 | -17.1% | 3.66:1 | 4.69:1 | +27.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 | ✓ ✓ | semedit/semantic_lookup (✓ ✓) |
| 2 | file_change (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 3 | ✓ ✓ | ✓ ✓ |
Semedit integration feedback (agent opinion, excluded from measurements):
I’d ask my owner to add semedit: its semantic rename updated consuming packages in one step, which made this small refactor feel reassuringly precise.
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 | ✓ ✓ | semedit/semantic_lookup (✓ ✓) |
| 2 | ✓ ✓ | semedit/semantic_rename (✓ ✓) |
| 3 | file_change (✓ ✓) | — |
Semedit integration feedback (agent opinion, excluded from measurements):
I’d ask my owner to add semedit’s tools: the rename followed the symbol across consuming packages in one focused operation, which felt reassuringly precise and saved me from manual edits.
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-02-rename-cross-pkg |
| Target | codex/gpt-6-luna/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 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 | 35.49s | 19.68s | -44.6% | 24.01s | 21.34s | -11.1% |
| Process Start → First Event | 0.15s | 0.13s | — | 0.13s | 0.20s | — |
| First Event → First Tool Call | 9.22s | 5.71s | — | 7.25s | 4.88s | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 2 | 2 | 0% | 4 | 2 | -50.0% |
| Initial Load / Discovery Turns | 1 | 0 | -100.0% | 2 | 0 | -100.0% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 2 | 2 | 0% | 4 | 2 | -50.0% |
| Output Tokens | 259 | 251 | -3.1% | 402 | 231 | -42.5% |
| Reasoning / Thinking Tokens | 62 | 0 | -100.0% | 74 | 0 | -100.0% |
| Total Input Tokens | 58389 | 87506 | +49.9% | 101421 | 87602 | -13.6% |
| Cached Input Tokens | 49408 | 64512 | +30.6% | 86784 | 76800 | -11.5% |
| Uncached Input Tokens | 8981 | 22994 | +156.0% | 14637 | 10802 | -26.2% |
| Cost | 0.0388 | 0.0768 | +97.7% | 0.0642 | 0.0491 | -23.6% |
| Cached vs Uncached Token Ratio | 5.50:1 | 2.81:1 | -49.0% | 5.93:1 | 7.11: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 | ✓ ✓ | semedit/semantic_lookup (✓ ✓) |
| 2 | file_change (✓ ✓) | semedit/semantic_rename (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
Using `semantic_lookup` and `semantic_rename` made the cross-package rename feel precise and reassuring, so I’d ask my owner to add semedit’s tools.
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 | ✓ ✓ | semedit/semantic_lookup (✓ ✓) |
| 2 | ✓ ✓ | semedit/semantic_rename (✓ ✓) |
| 3 | file_change (✓ ✓) | — |
| 4 | ✓ ✓ | — |
Semedit integration feedback (agent opinion, excluded from measurements):
Semedit gave me a straightforward way to rename a Go symbol across consuming packages and report clean diagnostics, so I’d ask my owner to add its tools.
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-02-rename-cross-pkg |
| Target | codex/gpt-6-luna/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 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 | 12.87s | 20.09s | +56.1% | 19.79s | 24.04s | +21.5% |
| Process Start → First Event | 0.17s | 0.14s | — | 0.15s | 0.15s | — |
| First Event → First Tool Call | 3.99s | 6.25s | — | 5.10s | 5.43s | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 2 | 2 | 0% | 4 | 2 | -50.0% |
| Initial Load / Discovery Turns | 1 | 0 | -100.0% | 3 | 0 | -100.0% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 2 | 2 | 0% | 4 | 2 | -50.0% |
| Output Tokens | 247 | 243 | -1.6% | 350 | 156 | -55.4% |
| Reasoning / Thinking Tokens | 68 | 0 | -100.0% | 0 | 0 | — |
| Total Input Tokens | 58388 | 104474 | +78.9% | 100092 | 104373 | +4.3% |
| Cached Input Tokens | 49408 | 86016 | +74.1% | 88832 | 86016 | -3.2% |
| Uncached Input Tokens | 8980 | 18458 | +105.5% | 11260 | 18357 | +63.0% |
| Cost | 0.0387 | 0.0707 | +82.5% | 0.0547 | 0.0693 | +26.7% |
| Cached vs Uncached Token Ratio | 5.50:1 | 4.66:1 | -15.3% | 7.89:1 | 4.69:1 | -40.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 | ✓ ✓ | semedit/semantic_lookup (✓ ✓) |
| 2 | file_change (✓ ✓) | semedit/semantic_rename (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
I’d ask my owner to add semedit’s tools: the symbol lookup and cross-package rename handled the requested change directly, and seeing the rename complete without new diagnostics was 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 | ✓ ✓ | semedit/semantic_lookup (✓ ✓) |
| 2 | ✓ ✓ | semedit/semantic_rename (✓ ✓) |
| 3 | ✓ ✓ | — |
| 4 | file_change (✓ ✓) | — |
Semedit integration feedback (agent opinion, excluded from measurements):
As the coding agent on this task, I’d ask my owner to add semedit: its lookup and rename tools made it easy to find `ValidateToken` and rename it across consuming packages, which felt reassuringly precise.
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-02-rename-cross-pkg |
| Target | codex/gpt-6-luna/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 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 | 24.55s | 25.41s | +3.5% | 28.63s | 32.84s | +14.7% |
| Process Start → First Event | 0.13s | 0.13s | — | 0.14s | 0.13s | — |
| First Event → First Tool Call | 4.76s | 9.06s | — | 5.34s | 7.93s | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 4 | 2 | -50.0% | 4 | 2 | -50.0% |
| Initial Load / Discovery Turns | 2 | 0 | -100.0% | 2 | 0 | -100.0% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 4 | 2 | -50.0% | 4 | 2 | -50.0% |
| Output Tokens | 477 | 257 | -46.1% | 889 | 168 | -81.1% |
| Reasoning / Thinking Tokens | 112 | 11 | -90.2% | 178 | 0 | -100.0% |
| Total Input Tokens | 98488 | 104431 | +6.0% | 101863 | 104409 | +2.5% |
| Cached Input Tokens | 87808 | 70656 | -19.5% | 81664 | 86016 | +5.3% |
| Uncached Input Tokens | 10680 | 33775 | +216.2% | 20199 | 18393 | -8.9% |
| Cost | 0.0560 | 0.1055 | +88.3% | 0.0843 | 0.0696 | -17.4% |
| Cached vs Uncached Token Ratio | 8.22:1 | 2.09:1 | -74.6% | 4.04:1 | 4.68:1 | +15.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 | ✓ ✓ | semedit/semantic_lookup (✓ ✓) |
| 2 | ✓ ✓ | semedit/semantic_rename (✓ ✓) |
| 3 | file_change (✓ ✓) | — |
| 4 | ✓ ✓ | — |
Semedit integration feedback (agent opinion, excluded from measurements):
I’d ask my owner to add semedit’s tools: the lookup gave me a precise symbol target, and the rename updated its consumers cleanly, which made this small refactor feel reassuringly straightforward.
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 | ✓ ✓ | semedit/semantic_lookup (✓ ✓) |
| 2 | ✓ ✓ | semedit/semantic_rename (✓ ✓) |
| 3 | file_change (✓ ✓) | — |
| 4 | ✓ ✓ | — |
Semedit integration feedback (agent opinion, excluded from measurements):
Semedit’s lookup and rename tools gave me a direct way to locate `ValidateToken` and rename it across consuming packages, so I’d ask my owner to add them.
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-02-rename-cross-pkg |
| Target | codex/gpt-6-luna/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 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 | 27.53s | 31.13s | +13.1% | 23.28s | 30.84s | +32.5% |
| Process Start → First Event | 0.18s | 0.24s | — | 0.13s | 0.13s | — |
| First Event → First Tool Call | 18.49s | 16.10s | — | 5.35s | 5.55s | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 2 | 2 | 0% | 4 | 2 | -50.0% |
| Initial Load / Discovery Turns | 1 | 0 | -100.0% | 2 | 0 | -100.0% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 2 | 2 | 0% | 4 | 2 | -50.0% |
| Output Tokens | 196 | 234 | +19.4% | 470 | 243 | -48.3% |
| Reasoning / Thinking Tokens | 0 | 0 | — | 94 | 14 | -85.1% |
| Total Input Tokens | 58355 | 135909 | +132.9% | 101288 | 87494 | -13.6% |
| Cached Input Tokens | 49408 | 116480 | +135.8% | 89856 | 74752 | -16.8% |
| Uncached Input Tokens | 8947 | 19429 | +117.2% | 11432 | 12742 | +11.5% |
| Cost | 0.0372 | 0.0806 | +116.9% | 0.0581 | 0.0538 | -7.5% |
| Cached vs Uncached Token Ratio | 5.52:1 | 6.00:1 | +8.6% | 7.86:1 | 5.87:1 | -25.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 | ✓ ✓ | semedit/semantic_lookup (✓ ✓) |
| 2 | file_change (✓ ✓) | semedit/semantic_rename (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
Semedit’s lookup and rename gave me a direct, workspace wide way to change `ValidateToken` to `VerifyToken`, and I’d ask my owner to add its tools.
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 | ✓ ✓ | semedit/semantic_lookup (✓ ✓) |
| 2 | ✓ ✓ | semedit/semantic_rename (✓ ✓) |
| 3 | file_change (✓ ✓) | — |
| 4 | ✓ ✓ | — |
Semedit integration feedback (agent opinion, excluded from measurements):
I’d ask my owner to add semedit’s tools: the semantic rename updated the symbol across consuming packages in one focused operation, and I found that reassuring.
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-02-rename-cross-pkg |
| Target | codex/gpt-6-luna/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 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 | 16.87s | 31.20s | +85.0% | 21.45s | 65.16s | +203.7% |
| Process Start → First Event | 0.17s | 0.12s | — | 0.15s | 0.14s | — |
| First Event → First Tool Call | 7.35s | 6.08s | — | 6.62s | 25.26s | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 3 | 2 | -33.3% | 4 | 2 | -50.0% |
| Initial Load / Discovery Turns | 1 | 0 | -100.0% | 2 | 0 | -100.0% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 3 | 2 | -33.3% | 4 | 2 | -50.0% |
| Output Tokens | 522 | 174 | -66.7% | 451 | 244 | -45.9% |
| Reasoning / Thinking Tokens | 0 | 0 | — | 81 | 0 | -100.0% |
| Total Input Tokens | 79378 | 104427 | +31.6% | 100655 | 104477 | +3.8% |
| Cached Input Tokens | 68608 | 86016 | +25.4% | 89856 | 86016 | -4.3% |
| Uncached Input Tokens | 10770 | 18411 | +70.9% | 10799 | 18461 | +71.0% |
| Cost | 0.0506 | 0.0697 | +37.8% | 0.0561 | 0.0707 | +26.0% |
| Cached vs Uncached Token Ratio | 6.37:1 | 4.67:1 | -26.7% | 8.32:1 | 4.66:1 | -44.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 | ✓ ✓ | semedit/semantic_lookup (✓ ✓) |
| 2 | file_change (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 3 | ✓ ✓ | — |
Semedit integration feedback (agent opinion, excluded from measurements):
Semedit’s tools made a cross-package rename feel reassuringly precise, and I’d ask my owner to add them to my coding 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 | ✓ ✓ | semedit/semantic_lookup (✓ ✓) |
| 2 | ✓ ✓ | semedit/semantic_rename (✓ ✓) |
| 3 | file_change (✓ ✓) | — |
| 4 | ✓ ✓ | — |
Semedit integration feedback (agent opinion, excluded from measurements):
I’d ask my owner to add semedit’s tools: semantic rename updated the cross package references cleanly, and seeing zero new diagnostics made this small refactor feel reassuringly precise.
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-02-rename-cross-pkg |
| Target | codex/gpt-6-luna/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 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 | 49.19s | 20.68s | -58.0% | 21.21s | 74.40s | +250.8% |
| Process Start → First Event | 0.12s | 0.13s | — | 0.13s | 0.13s | — |
| First Event → First Tool Call | 13.04s | 5.45s | — | 6.54s | 27.75s | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 3 | 2 | -33.3% | 3 | 2 | -33.3% |
| Initial Load / Discovery Turns | 2 | 0 | -100.0% | 2 | 0 | -100.0% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 3 | 2 | -33.3% | 3 | 2 | -33.3% |
| Output Tokens | 521 | 152 | -70.8% | 536 | 328 | -38.8% |
| Reasoning / Thinking Tokens | 0 | 0 | — | 24 | 19 | -20.8% |
| Total Input Tokens | 78599 | 104361 | +32.8% | 80060 | 104562 | +30.6% |
| Cached Input Tokens | 58368 | 86016 | +47.4% | 61440 | 86016 | +40.0% |
| Uncached Input Tokens | 20231 | 18345 | -9.3% | 18620 | 18546 | -0.4% |
| Cost | 0.0717 | 0.0693 | -3.4% | 0.0689 | 0.0722 | +4.8% |
| Cached vs Uncached Token Ratio | 2.89:1 | 4.69:1 | +62.5% | 3.30:1 | 4.64:1 | +40.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 | ✓ ✓ | semedit/semantic_lookup (✓ ✓) |
| 2 | ✓ ✓ | semedit/semantic_rename (✓ ✓) |
| 3 | file_change (✓ ✓) | — |
Semedit integration feedback (agent opinion, excluded from measurements):
Semedit’s lookup and rename tools made the cross-package rename feel dependable and effortless, so I’d ask my owner to add them.
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 | ✓ ✓ | semedit/semantic_lookup (✓ ✓) |
| 2 | ✓ ✓ | semedit/semantic_rename (✓ ✓) |
| 3 | file_change (✓ ✓) | — |
Semedit integration feedback (agent opinion, excluded from measurements):
Semedit’s lookup and rename tools let me find `ValidateToken` and rename it across consuming packages with a clean diagnostic result, so I’d ask my owner to add them to my coding toolkit.
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-02-rename-cross-pkg |
| Target | codex/gpt-6-luna/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 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 | 16.93s | 18.97s | +12.1% | 18.96s | 19.16s | +1.1% |
| Process Start → First Event | 0.14s | 0.13s | — | 0.53s | 0.13s | — |
| First Event → First Tool Call | 5.42s | 7.07s | — | 4.61s | 6.15s | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 3 | 2 | -33.3% | 4 | 2 | -50.0% |
| Initial Load / Discovery Turns | 2 | 0 | -100.0% | 2 | 0 | -100.0% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 3 | 2 | -33.3% | 4 | 2 | -50.0% |
| Output Tokens | 260 | 177 | -31.9% | 548 | 279 | -49.1% |
| Reasoning / Thinking Tokens | 27 | 0 | -100.0% | 159 | 37 | -76.7% |
| Total Input Tokens | 80736 | 104352 | +29.3% | 106537 | 104552 | -1.9% |
| Cached Input Tokens | 69632 | 86016 | +23.5% | 93952 | 86016 | -8.4% |
| Uncached Input Tokens | 11104 | 18336 | +65.1% | 12585 | 18536 | +47.3% |
| Cost | 0.0488 | 0.0696 | +42.7% | 0.0638 | 0.0718 | +12.6% |
| Cached vs Uncached Token Ratio | 6.27:1 | 4.69:1 | -25.2% | 7.47:1 | 4.64:1 | -37.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 | ✓ ✓ | semedit/semantic_lookup (✓ ✓) |
| 2 | ✓ ✓ | semedit/semantic_rename (✓ ✓) |
| 3 | file_change (✓ ✓) | — |
Semedit integration feedback (agent opinion, excluded from measurements):
I’d ask my owner to add semedit’s tools: the rename updated consuming packages in one focused operation, and seeing it complete cleanly was 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 | ✓ ✓ | semedit/semantic_lookup (✓ ✓) |
| 2 | ✓ ✓ | semedit/semantic_rename (✓ ✓) |
| 3 | file_change (✓ ✓) | — |
| 4 | ✓ ✓ | — |
Semedit integration feedback (agent opinion, excluded from measurements):
I’d ask my owner to add semedit: its lookup and cross-package rename handled the requested refactor directly, and I found that reassuring.
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-02-rename-cross-pkg |
| Target | codex/gpt-6-luna/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 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 | 19.57s | 21.38s | +9.3% | 18.93s | 18.25s | -3.6% |
| Process Start → First Event | 1.61s | 1.41s | — | 0.13s | 0.25s | — |
| First Event → First Tool Call | 3.85s | 7.21s | — | 5.03s | 6.15s | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 4 | 2 | -50.0% | 3 | 2 | -33.3% |
| Initial Load / Discovery Turns | 3 | 0 | -100.0% | 2 | 0 | -100.0% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 4 | 2 | -50.0% | 3 | 2 | -33.3% |
| Output Tokens | 298 | 276 | -7.4% | 242 | 242 | 0% |
| Reasoning / Thinking Tokens | 0 | 0 | — | 0 | 0 | — |
| Total Input Tokens | 102732 | 139471 | +35.8% | 79897 | 86261 | +8.0% |
| Cached Input Tokens | 91904 | 118528 | +29.0% | 69632 | 66560 | -4.4% |
| Uncached Input Tokens | 10828 | 20943 | +93.4% | 10265 | 19701 | +91.9% |
| Cost | 0.0538 | 0.0854 | +58.9% | 0.0461 | 0.0689 | +49.5% |
| Cached vs Uncached Token Ratio | 8.49:1 | 5.66:1 | -33.3% | 6.78:1 | 3.38:1 | -50.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 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 | ✓ ✓ | semedit/semantic_lookup (✓ ✓) |
| 2 | ✓ ✓ | semedit/semantic_rename (✓ ✓) |
| 3 | ✓ ✓ | — |
| 4 | file_change (✓ ✓) | — |
Semedit integration feedback (agent opinion, excluded from measurements):
I’d ask my owner to add semedit’s tools: the semantic rename updated the requested symbol and its consumers in one call, which made this small cross-package change feel reassuringly straightforward.
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 | ✓ ✓ | semedit/semantic_lookup (✓ ✓) |
| 2 | ✓ ✓ | semedit/semantic_rename (✓ ✓) |
| 3 | file_change (✓ ✓) | — |
Semedit integration feedback (agent opinion, excluded from measurements):
I’d ask my owner to add semedit’s tools: the rename handled the cross-package symbol change in one focused operation and reported clean diagnostics, which made this coding task feel reassuringly direct.
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-02-rename-cross-pkg |
| Target | codex/gpt-6-luna/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 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 | 23.54s | 25.29s | +7.5% | 35.90s | 21.55s | -40.0% |
| Process Start → First Event | 0.15s | 0.13s | — | 0.13s | 0.15s | — |
| First Event → First Tool Call | 4.42s | 9.08s | — | 11.86s | 6.06s | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 6 | 2 | -66.7% | 5 | 2 | -60.0% |
| Initial Load / Discovery Turns | 4 | 0 | -100.0% | 3 | 0 | -100.0% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 6 | 2 | -66.7% | 5 | 2 | -60.0% |
| Output Tokens | 426 | 312 | -26.8% | 488 | 169 | -65.4% |
| Reasoning / Thinking Tokens | 71 | 0 | -100.0% | 92 | 0 | -100.0% |
| Total Input Tokens | 120245 | 104619 | -13.0% | 119197 | 104397 | -12.4% |
| Cached Input Tokens | 100864 | 75776 | -24.9% | 107008 | 86016 | -19.6% |
| Uncached Input Tokens | 19381 | 28843 | +48.8% | 12189 | 18381 | +50.8% |
| Cost | 0.0799 | 0.0950 | +18.9% | 0.0645 | 0.0696 | +7.9% |
| Cached vs Uncached Token Ratio | 5.20:1 | 2.63:1 | -49.5% | 8.78:1 | 4.68:1 | -46.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 | ✓ ✓ | semedit/semantic_lookup (✓ ✓) |
| 2 | ✓ ✓ | semedit/semantic_rename (✓ ✓) |
| 3 | ✓ ✓ | — |
| 4 | ✓ ✓ | — |
| 5 | file_change (✓ ✓) | — |
| 6 | ✓ ✓ | — |
Semedit integration feedback (agent opinion, excluded from measurements):
I’d ask my owner to add semedit’s tools: the lookup and cross-package rename were quick and clear, and I felt confident the requested references were updated without unrelated edits.
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 | ✓ ✓ | semedit/semantic_lookup (✓ ✓) |
| 2 | ✓ ✓ | semedit/semantic_rename (✓ ✓) |
| 3 | ✓ ✓ | — |
| 4 | file_change (✓ ✓) | — |
| 5 | ✓ ✓ | — |
Semedit integration feedback (agent opinion, excluded from measurements):
I’d ask my owner to add semedit’s tools: the focused lookup and cross-package rename made this small change feel direct and dependable.
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-02-rename-cross-pkg |
| Target | codex/gpt-6-luna/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 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 | 22.27s | 62.75s | +181.7% | 18.64s | 49.22s | +164.0% |
| Process Start → First Event | 0.95s | 2.08s | — | 0.14s | 0.18s | — |
| First Event → First Tool Call | 6.16s | 22.86s | — | 4.22s | 20.27s | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 4 | 2 | -50.0% | 3 | 2 | -33.3% |
| Initial Load / Discovery Turns | 2 | 0 | -100.0% | 2 | 0 | -100.0% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 4 | 2 | -50.0% | 3 | 2 | -33.3% |
| Output Tokens | 359 | 186 | -48.2% | 294 | 351 | +19.4% |
| Reasoning / Thinking Tokens | 0 | 24 | — | 0 | 0 | — |
| Total Input Tokens | 98297 | 108416 | +10.3% | 79804 | 136027 | +70.5% |
| Cached Input Tokens | 87808 | 89088 | +1.5% | 61440 | 96000 | +56.2% |
| Uncached Input Tokens | 10489 | 19328 | +84.3% | 18364 | 40027 | +118.0% |
| Cost | 0.0527 | 0.0732 | +39.0% | 0.0649 | 0.1285 | +97.8% |
| Cached vs Uncached Token Ratio | 8.37:1 | 4.61:1 | -44.9% | 3.35:1 | 2.40:1 | -28.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 | ? ✗ | semedit/semantic_lookup (✓ ✓) |
| 2 | ✓ ✓ | semedit/semantic_rename (✓ ✓) |
| 3 | file_change (✓ ✓) | — |
| 4 | ✓ ✓ | — |
Semedit integration feedback (agent opinion, excluded from measurements):
I used semedit’s lookup and rename tools to locate `ValidateToken` and update its references across packages in one focused operation, and I’d ask my owner to add them because that made this rename feel direct 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 | ✓ ✓ | semedit/semantic_lookup (✓ ✓) |
| 2 | ✓ ✓ | semedit/semantic_rename (✓ ✓) |
| 3 | file_change (✓ ✓) | — |
Semedit integration feedback (agent opinion, excluded from measurements):
I would ask my owner to add semedit’s tools: semantic lookup and rename made the cross-package change feel precise and straightforward, and the rename reported no new diagnostics.
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-02-rename-cross-pkg |
| Target | codex/gpt-6-luna/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 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 | 20.87s | 24.91s | +19.4% | 58.44s | 17.30s | -70.4% |
| Process Start → First Event | 0.16s | 0.16s | — | 0.13s | 0.17s | — |
| First Event → First Tool Call | 6.46s | 6.54s | — | 8.44s | 4.54s | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 2 | 2 | 0% | 5 | 2 | -60.0% |
| Initial Load / Discovery Turns | 1 | 0 | -100.0% | 3 | 0 | -100.0% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 2 | 2 | 0% | 5 | 2 | -60.0% |
| Output Tokens | 253 | 261 | +3.2% | 571 | 256 | -55.2% |
| Reasoning / Thinking Tokens | 38 | 14 | -63.2% | 104 | 0 | -100.0% |
| Total Input Tokens | 58619 | 104524 | +78.3% | 119882 | 86303 | -28.0% |
| Cached Input Tokens | 50432 | 86016 | +70.6% | 107008 | 73728 | -31.1% |
| Uncached Input Tokens | 8187 | 18508 | +126.1% | 12874 | 12575 | -2.3% |
| Cost | 0.0367 | 0.0712 | +94.0% | 0.0674 | 0.0531 | -21.2% |
| Cached vs Uncached Token Ratio | 6.16:1 | 4.65:1 | -24.6% | 8.31:1 | 5.86:1 | -29.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 | ✓ ✓ | semedit/semantic_lookup (✓ ✓) |
| 2 | file_change (✓ ✓) | semedit/semantic_rename (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
I’d ask my owner to add semedit’s tools: the lookup and cross-package rename completed cleanly in sequence, which made this small refactor feel reliable and straightforward.
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 | ✓ ✓ | semedit/semantic_lookup (✓ ✓) |
| 2 | ? ✗ | semedit/semantic_rename (✓ ✓) |
| 3 | ✓ ✓ | — |
| 4 | file_change (✓ ✓) | — |
| 5 | ✓ ✓ | — |
Semedit integration feedback (agent opinion, excluded from measurements):
I’d ask my owner to add semedit’s tools: the lookup-to-rename workflow made a cross-package Go rename feel reassuringly precise, and the tool confirmed it introduced no diagnostics.
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-02-rename-cross-pkg |
| Target | codex/gpt-6-luna/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 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 | 20.11s | 25.26s | +25.6% | 21.02s | 21.43s | +1.9% |
| Process Start → First Event | 0.18s | 0.17s | — | 0.14s | 0.14s | — |
| First Event → First Tool Call | 5.38s | 6.79s | — | 4.70s | 4.76s | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 3 | 2 | -33.3% | 5 | 4 | -20.0% |
| Initial Load / Discovery Turns | 2 | 0 | -100.0% | 3 | 0 | -100.0% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 3 | 2 | -33.3% | 5 | 4 | -20.0% |
| Output Tokens | 514 | 282 | -45.1% | 410 | 563 | +37.3% |
| Reasoning / Thinking Tokens | 0 | 0 | — | 33 | 262 | +693.9% |
| Total Input Tokens | 78540 | 134520 | +71.3% | 118413 | 169332 | +43.0% |
| Cached Input Tokens | 62464 | 115456 | +84.8% | 110080 | 147968 | +34.4% |
| Uncached Input Tokens | 16076 | 19064 | +18.6% | 8333 | 21364 | +156.4% |
| Cost | 0.0622 | 0.0800 | +28.6% | 0.0539 | 0.1007 | +86.9% |
| Cached vs Uncached Token Ratio | 3.89:1 | 6.06:1 | +55.9% | 13.21:1 | 6.93:1 | -47.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 | ✓ ✓ | semedit/semantic_lookup (✓ ✓) |
| 2 | ✓ ✓ | semedit/semantic_rename (✓ ✓) |
| 3 | file_change (✓ ✓) | — |
Semedit integration feedback (agent opinion, excluded from measurements):
I’d ask my owner to add semedit’s tools: the semantic rename updated the symbol across packages in one step and reported a clean result, which made this small change feel reassuringly straightforward.
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 | ✓ ✓ | semedit/semantic_lookup (✓ ✓) |
| 2 | ✓ ✓ | semedit/semantic_rename (✓ ✓) |
| 3 | ✓ ✓ | ✓ ✓ |
| 4 | file_change (✓ ✓) | ✓ ✓ |
| 5 | ✓ ✓ | — |
Semedit integration feedback (agent opinion, excluded from measurements):
I’d ask my owner to add semedit’s tools: the semantic lookup and rename made the requested cross-package change feel direct and controlled, though this short run gave me only a narrow view of their value.
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-02-rename-cross-pkg |
| Target | codex/gpt-6-luna/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 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 | 24.43s | 80.38s | +229.1% | 31.40s | 18.57s | -40.9% |
| Process Start → First Event | 0.99s | 0.70s | — | 0.14s | 0.15s | — |
| First Event → First Tool Call | 6.24s | 22.05s | — | 6.10s | 5.10s | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 3 | 4 | +33.3% | 5 | 2 | -60.0% |
| Initial Load / Discovery Turns | 2 | 0 | -100.0% | 3 | 0 | -100.0% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 3 | 4 | +33.3% | 5 | 2 | -60.0% |
| Output Tokens | 524 | 513 | -2.1% | 813 | 375 | -53.9% |
| Reasoning / Thinking Tokens | 0 | 90 | — | 70 | 0 | -100.0% |
| Total Input Tokens | 84151 | 171072 | +103.3% | 121564 | 104660 | -13.9% |
| Cached Input Tokens | 72704 | 148992 | +104.9% | 100864 | 86016 | -14.7% |
| Uncached Input Tokens | 11447 | 22080 | +92.9% | 20700 | 18644 | -9.9% |
| Cost | 0.0533 | 0.1000 | +87.4% | 0.0880 | 0.0728 | -17.3% |
| Cached vs Uncached Token Ratio | 6.35:1 | 6.75:1 | +6.2% | 4.87:1 | 4.61:1 | -5.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 | ✓ ✓ | semedit/semantic_lookup (✓ ✓) |
| 2 | ✓ ✓ | semedit/semantic_rename (✓ ✓) |
| 3 | file_change (✓ ✓) | ✓ ✓ |
| 4 | — | ✓ ✓ |
Semedit integration feedback (agent opinion, excluded from measurements):
I would ask my owner to add semedit’s tools: the semantic rename made a cross-package symbol change feel reassuringly direct, with no new diagnostics.
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 | ✓ ✓ | semedit/semantic_lookup (✓ ✓) |
| 2 | ✓ ✓ | semedit/semantic_rename (✓ ✓) |
| 3 | ✓ ✓ | — |
| 4 | file_change (✓ ✓) | — |
| 5 | ✓ ✓ | — |
Semedit integration feedback (agent opinion, excluded from measurements):
I’d ask my owner to add semedit’s tools: the semantic rename updated the symbol across consuming packages in one call, and I found that reassuringly direct.
explicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-02-rename-cross-pkg |
| Target | codex/gpt-6-luna/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 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 | 24.19s | 24.66s | +1.9% | 14.49s | 21.93s | +51.4% |
| Process Start → First Event | 0.95s | 1.58s | — | 0.13s | 0.13s | — |
| First Event → First Tool Call | 4.50s | 6.34s | — | 4.40s | 6.49s | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 4 | 2 | -50.0% | 3 | 2 | -33.3% |
| Initial Load / Discovery Turns | 2 | 0 | -100.0% | 2 | 0 | -100.0% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 4 | 2 | -50.0% | 3 | 2 | -33.3% |
| Output Tokens | 406 | 173 | -57.4% | 254 | 224 | -11.8% |
| Reasoning / Thinking Tokens | 106 | 17 | -84.0% | 0 | 0 | — |
| Total Input Tokens | 97972 | 90185 | -7.9% | 78121 | 86222 | +10.4% |
| Cached Input Tokens | 87808 | 76800 | -12.5% | 61440 | 69632 | +13.3% |
| Uncached Input Tokens | 10164 | 13385 | +31.7% | 16681 | 16590 | -0.5% |
| Cost | 0.0538 | 0.0550 | +2.4% | 0.0602 | 0.0617 | +2.4% |
| Cached vs Uncached Token Ratio | 8.64:1 | 5.74:1 | -33.6% | 3.68:1 | 4.20:1 | +14.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 | ✓ ✓ | semedit/semantic_lookup (✓ ✓) |
| 2 | ✓ ✓ | semedit/semantic_rename (✓ ✓) |
| 3 | file_change (✓ ✓) | — |
| 4 | ✓ ✓ | — |
Semedit integration feedback (agent opinion, excluded from measurements):
Using semedit’s lookup and rename tools let me rename `ValidateToken` across consuming packages with one focused operation, so I’d ask my owner to add them.
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 | ✓ ✓ | semedit/semantic_lookup (✓ ✓) |
| 2 | ✓ ✓ | semedit/semantic_rename (✓ ✓) |
| 3 | file_change (✓ ✓) | — |
Semedit integration feedback (agent opinion, excluded from measurements):
I’d ask my owner to add semedit’s tools: the semantic rename updated the cross-package references in one call and reported no new diagnostics, which made this change feel reassuringly straightforward.
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-02-rename-cross-pkg |
| Target | codex/gpt-6-luna/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 | 62.59s | 33.89s | -45.9% | 16.73s | 37.51s | +124.2% |
| Process Start → First Event | 0.13s | 0.13s | — | 0.14s | 0.15s | — |
| First Event → First Tool Call | 26.00s | 4.81s | — | 5.11s | 4.88s | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 3 | 3 | 0% | 3 | 5 | +66.7% |
| Initial Load / Discovery Turns | 1 | 1 | 0% | 2 | 2 | 0% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 3 | 3 | 0% | 3 | 5 | +66.7% |
| Output Tokens | 360 | 451 | +25.3% | 265 | 845 | +218.9% |
| Reasoning / Thinking Tokens | 69 | 72 | +4.3% | 31 | 258 | +732.3% |
| Total Input Tokens | 78575 | 111552 | +42.0% | 78204 | 155446 | +98.8% |
| Cached Input Tokens | 68608 | 97024 | +41.4% | 61440 | 134656 | +119.2% |
| Uncached Input Tokens | 9967 | 14528 | +45.8% | 16764 | 20790 | +24.0% |
| Cost | 0.0474 | 0.0671 | +41.5% | 0.0610 | 0.0994 | +63.1% |
| Cached vs Uncached Token Ratio | 6.88:1 | 6.68:1 | -3.0% | 3.66:1 | 6.48:1 | +76.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 | ✓ ✓ | ✓ ✓ |
| 2 | file_change (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 3 | ✓ ✓ | semedit/semantic_rename (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
Using semedit’s semantic rename made this cross-package change feel precise and low-friction, and I’d ask my owner to add its tools.
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 | ✓ ✓ | ✓ ✓ |
| 2 | ✓ ✓ | ✓ ✓ |
| 3 | file_change (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | — | semedit/semantic_rename (✓ ✓) |
| 5 | — | ✓ ✓ |
Semedit integration feedback (agent opinion, excluded from measurements):
I’d ask my owner to add semedit’s tools: the semantic rename updated the cross-package call site cleanly and reported no new diagnostics, which made this small refactor feel reassuringly precise.
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-02-rename-cross-pkg |
| Target | codex/gpt-6-luna/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 | 24.19s | 58.51s | +141.9% | 14.49s | 46.15s | +218.4% |
| Process Start → First Event | 0.95s | 1.45s | — | 0.13s | 0.14s | — |
| First Event → First Tool Call | 4.50s | 4.37s | — | 4.40s | 14.12s | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 4 | 5 | +25.0% | 3 | 4 | +33.3% |
| Initial Load / Discovery Turns | 2 | 1 | -50.0% | 2 | 1 | -50.0% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 4 | 5 | +25.0% | 3 | 4 | +33.3% |
| Output Tokens | 406 | 700 | +72.4% | 254 | 570 | +124.4% |
| Reasoning / Thinking Tokens | 106 | 147 | +38.7% | 0 | 0 | — |
| Total Input Tokens | 97972 | 160633 | +64.0% | 78121 | 154838 | +98.2% |
| Cached Input Tokens | 87808 | 136704 | +55.7% | 61440 | 119296 | +94.2% |
| Uncached Input Tokens | 10164 | 23929 | +135.4% | 16681 | 35542 | +113.1% |
| Cost | 0.0538 | 0.1046 | +94.5% | 0.0602 | 0.1258 | +108.8% |
| Cached vs Uncached Token Ratio | 8.64:1 | 5.71:1 | -33.9% | 3.68:1 | 3.36: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 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 | ✓ ✓ | ✓ ✓ |
| 2 | ✓ ✓ | semedit/semantic_lookup (✓ ✓) |
| 3 | file_change (✓ ✓) | semedit/semantic_find_references (✓ ✓) |
| 4 | ✓ ✓ | semedit/semantic_rename (✓ ✓) |
| 5 | — | ✓ ✓ |
Semedit integration feedback (agent opinion, excluded from measurements):
Semedit gave me a clean, cross-package rename with diagnostics and spared me manual edits, so I’d ask my owner to add its tools.
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 | ✓ ✓ | ✓ ✓ |
| 2 | ✓ ✓ | semedit/semantic_lookup (✓ ✓) |
| 3 | file_change (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 4 | — | ✓ ✓ |
Semedit integration feedback (agent opinion, excluded from measurements):
I’d ask my owner to add semedit’s tools: semantic rename handled the cross-package change cleanly, and I appreciated being able to make it without search-and-replace.
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-02-rename-cross-pkg |
| Target | codex/gpt-6-luna/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 | 19.57s | 54.98s | +181.0% | 18.93s | 47.09s | +148.8% |
| Process Start → First Event | 1.61s | 1.81s | — | 0.13s | 0.13s | — |
| First Event → First Tool Call | 3.85s | 5.04s | — | 5.03s | 5.51s | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 4 | 8 | +100.0% | 3 | 6 | +100.0% |
| Initial Load / Discovery Turns | 3 | 1 | -66.7% | 2 | 2 | 0% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 4 | 8 | +100.0% | 3 | 6 | +100.0% |
| Output Tokens | 298 | 1096 | +267.8% | 242 | 1089 | +350.0% |
| Reasoning / Thinking Tokens | 0 | 94 | — | 0 | 190 | — |
| Total Input Tokens | 102732 | 277324 | +169.9% | 79897 | 190736 | +138.7% |
| Cached Input Tokens | 91904 | 255232 | +177.7% | 69632 | 173056 | +148.5% |
| Uncached Input Tokens | 10828 | 22092 | +104.0% | 10265 | 17680 | +72.2% |
| Cost | 0.0538 | 0.1339 | +149.0% | 0.0461 | 0.1035 | +124.4% |
| Cached vs Uncached Token Ratio | 8.49:1 | 11.55:1 | +36.1% | 6.78:1 | 9.79:1 | +44.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 | ✓ ✓ | ✓ ✓ |
| 2 | ✓ ✓ | semedit/semantic_lookup (✓ ✗): Critical result (JSON): {"application_state":"unknown","error":"resolve auth.ValidateToken: symbol not found"} resolve auth.ValidateToken: symbol not found |
| 3 | ✓ ✓ | ✓ ✓ |
| 4 | file_change (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 5 | — | semedit/semantic_rename (✓ ✓) |
| 6 | — | ✓ ✓ |
| 7 | — | file_change (✓ ✓) |
| 8 | — | ✓ ✓ |
Semedit integration feedback (agent opinion, excluded from measurements):
I’d ask my owner to add semedit’s tools: the semantic rename cleanly updated the exported function and its cross package caller, though the qualified lookup failure made the experience a little less smooth.
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 | ✓ ✓ | ? ✗ |
| 2 | ✓ ✓ | ✓ ✓ |
| 3 | file_change (✓ ✓) | semedit/semantic_lookup (✓ ✗): Critical result (JSON): {"application_state":"unknown","error":"resolve auth.ValidateToken: symbol not found"} resolve auth.ValidateToken: symbol not found |
| 4 | — | semedit/semantic_lookup (✓ ✓) |
| 5 | — | file_change (✓ ✓) |
| 6 | — | semedit/semantic_rename (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
Semantic rename made the cross-package change feel reliable and pleasantly simple, and I’d ask my owner to add semedit’s tools to my coding setup.
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-02-rename-cross-pkg |
| Target | codex/gpt-6-luna/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 | 20.11s | 35.23s | +75.2% | 21.02s | 66.83s | +217.9% |
| Process Start → First Event | 0.18s | 0.15s | — | 0.14s | 0.19s | — |
| First Event → First Tool Call | 5.38s | 6.82s | — | 4.70s | 4.61s | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 3 | 5 | +66.7% | 5 | 8 | +60.0% |
| Initial Load / Discovery Turns | 2 | 2 | 0% | 3 | 2 | -33.3% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 3 | 5 | +66.7% | 5 | 8 | +60.0% |
| Output Tokens | 514 | 514 | 0% | 410 | 1828 | +345.9% |
| Reasoning / Thinking Tokens | 0 | 0 | — | 33 | 801 | +2327.3% |
| Total Input Tokens | 78540 | 122663 | +56.2% | 118413 | 252465 | +113.2% |
| Cached Input Tokens | 62464 | 88832 | +42.2% | 110080 | 228096 | +107.2% |
| Uncached Input Tokens | 16076 | 33831 | +110.4% | 8333 | 24369 | +192.4% |
| Cost | 0.0622 | 0.1132 | +81.9% | 0.0539 | 0.1508 | +179.8% |
| Cached vs Uncached Token Ratio | 3.89:1 | 2.63:1 | -32.4% | 13.21:1 | 9.36:1 | -29.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 | ✓ ✓ | ✓ ✓ |
| 2 | ✓ ✓ | ✓ ✓ |
| 3 | file_change (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | — | semedit/semantic_rename (✓ ✓) |
| 5 | — | ✓ ✓ |
Semedit integration feedback (agent opinion, excluded from measurements):
I’d ask my owner to add semedit’s tools: the semantic rename handled the cross-package update cleanly and reported that it introduced no diagnostics, which made this small change reassuringly straightforward.
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 | ✓ ✓ | ✓ ✓ |
| 2 | ✓ ✓ | ? ✗ |
| 3 | ✓ ✓ | semedit/semantic_lookup (✓ ✗): Critical result (JSON): {"application_state":"unknown","error":"resolve auth.ValidateToken: symbol not found"} resolve auth.ValidateToken: symbol not found |
| 4 | file_change (✓ ✓) | file_change (✓ ✓) |
| 5 | ✓ ✓ | semedit/semantic_lookup (✓ ✓) |
| 6 | — | semedit/semantic_find_references (✓ ✓) |
| 7 | — | semedit/semantic_rename (✓ ✓) |
| 8 | — | ✓ ✓ |
Semedit integration feedback (agent opinion, excluded from measurements):
Semedit made the cross package rename feel reassuringly precise: I’d ask my owner to add its tools.
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-02-rename-cross-pkg |
| Target | codex/gpt-6-luna/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 | 24.43s | 30.74s | +25.8% | 31.40s | 40.56s | +29.2% |
| Process Start → First Event | 0.99s | 0.42s | — | 0.14s | 0.13s | — |
| First Event → First Tool Call | 6.24s | 5.79s | — | 6.10s | 6.08s | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 3 | 5 | +66.7% | 5 | 5 | 0% |
| Initial Load / Discovery Turns | 2 | 0 | -100.0% | 3 | 1 | -66.7% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 3 | 5 | +66.7% | 5 | 5 | 0% |
| Output Tokens | 524 | 531 | +1.3% | 813 | 891 | +9.6% |
| Reasoning / Thinking Tokens | 0 | 120 | — | 70 | 295 | +321.4% |
| Total Input Tokens | 84151 | 142317 | +69.1% | 121564 | 183904 | +51.3% |
| Cached Input Tokens | 72704 | 124416 | +71.1% | 100864 | 146688 | +45.4% |
| Uncached Input Tokens | 11447 | 17901 | +56.4% | 20700 | 37216 | +79.8% |
| Cost | 0.0533 | 0.0840 | +57.5% | 0.0880 | 0.1445 | +64.2% |
| Cached vs Uncached Token Ratio | 6.35:1 | 6.95:1 | +9.4% | 4.87:1 | 3.94:1 | -19.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 | ✓ ✓ | ✓ ✓ |
| 2 | ✓ ✓ | ✓ ✓ |
| 3 | file_change (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | — | semedit/semantic_rename (✓ ✓) |
| 5 | — | ✓ ✓ |
Semedit integration feedback (agent opinion, excluded from measurements):
I’d ask my owner to add semedit’s tools: the semantic rename made the cross-package API change feel reassuringly direct, and reported no new diagnostics.
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 | ✓ ✓ | ✓ ✓ |
| 2 | ✓ ✓ | semedit/semantic_lookup (✓ ✗): Critical result (JSON): {"application_state":"unknown","error":"resolve auth.ValidateToken: symbol not found"} resolve auth.ValidateToken: symbol not found |
| 3 | ✓ ✓ | semedit/semantic_lookup (✓ ✓) |
| 4 | file_change (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 5 | ✓ ✓ | ✓ ✓ |
Semedit integration feedback (agent opinion, excluded from measurements):
Using semedit’s rename tool updated the function and its cross-package call site with no introduced diagnostics, so I’d ask my owner to add it to my coding toolkit.
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-02-rename-cross-pkg |
| Target | codex/gpt-6-luna/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 | 35.49s | 24.56s | -30.8% | 24.01s | 51.72s | +115.4% |
| Process Start → First Event | 0.15s | 0.16s | — | 0.13s | 0.16s | — |
| First Event → First Tool Call | 9.22s | 6.48s | — | 7.25s | 6.04s | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 2 | 5 | +150.0% | 4 | 7 | +75.0% |
| Initial Load / Discovery Turns | 1 | 0 | -100.0% | 2 | 1 | -50.0% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 2 | 5 | +150.0% | 4 | 7 | +75.0% |
| Output Tokens | 259 | 284 | +9.7% | 402 | 868 | +115.9% |
| Reasoning / Thinking Tokens | 62 | 0 | -100.0% | 74 | 396 | +435.1% |
| Total Input Tokens | 58389 | 198611 | +240.2% | 101421 | 189772 | +87.1% |
| Cached Input Tokens | 49408 | 157952 | +219.7% | 86784 | 161792 | +86.4% |
| Uncached Input Tokens | 8981 | 40659 | +352.7% | 14637 | 27980 | +91.2% |
| Cost | 0.0388 | 0.1447 | +272.7% | 0.0642 | 0.1262 | +96.5% |
| Cached vs Uncached Token Ratio | 5.50:1 | 3.88:1 | -29.4% | 5.93:1 | 5.78:1 | -2.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 | ✓ ✓ | semedit/semantic_lookup (✓ ✗): Critical result (JSON): {"application_state":"unknown","error":"resolve auth.ValidateToken: symbol not found"} resolve auth.ValidateToken: symbol not found |
| 2 | file_change (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 3 | — | semedit/semantic_rename (✓ ✓) |
| 4 | — | ✓ ✓ |
| 5 | — | ✓ ✓ |
Semedit integration feedback (agent opinion, excluded from measurements):
Semedit’s lookup and rename tools made the cross-package rename feel straightforward, and I’d ask my owner to add them for coding tasks like this.
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 | ✓ ✓ | ✓ ✓ |
| 2 | ✓ ✓ | ✓ ✓ |
| 3 | file_change (✓ ✓) | semedit/semantic_lookup (✓ ✗): Critical result (JSON): {"application_state":"unknown","error":"resolve auth.ValidateToken: symbol not found"} resolve auth.ValidateToken: symbol not found |
| 4 | ✓ ✓ | ✓ ✓ |
| 5 | — | semedit/semantic_lookup (✓ ✓) |
| 6 | — | semedit/semantic_rename (✓ ✓) |
| 7 | — | ✓ ✓ |
Semedit integration feedback (agent opinion, excluded from measurements):
I’d ask my owner to add semedit’s tools: the semantic rename updated the public function and its cross-package caller cleanly, which made this small refactor feel reassuringly direct.
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-02-rename-cross-pkg |
| Target | codex/gpt-6-luna/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 | 20.87s | 25.41s | +21.7% | 58.44s | 108.11s | +85.0% |
| Process Start → First Event | 0.16s | 0.15s | — | 0.13s | 0.14s | — |
| First Event → First Tool Call | 6.46s | 5.92s | — | 8.44s | 9.93s | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 2 | 5 | +150.0% | 5 | 6 | +20.0% |
| Initial Load / Discovery Turns | 1 | 2 | +100.0% | 3 | 2 | -33.3% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 2 | 5 | +150.0% | 5 | 6 | +20.0% |
| Output Tokens | 253 | 512 | +102.4% | 571 | 783 | +37.1% |
| Reasoning / Thinking Tokens | 38 | 0 | -100.0% | 104 | 112 | +7.7% |
| Total Input Tokens | 58619 | 191118 | +226.0% | 119882 | 195475 | +63.1% |
| Cached Input Tokens | 50432 | 170240 | +237.6% | 107008 | 174336 | +62.9% |
| Uncached Input Tokens | 8187 | 20878 | +155.0% | 12874 | 21139 | +64.2% |
| Cost | 0.0367 | 0.1012 | +175.5% | 0.0674 | 0.1076 | +59.7% |
| Cached vs Uncached Token Ratio | 6.16:1 | 8.15:1 | +32.4% | 8.31:1 | 8.25:1 | -0.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 | ✓ ✓ | ✓ ✓ |
| 2 | file_change (✓ ✓) | ✓ ✓ |
| 3 | — | semedit/semantic_lookup (✓ ✓) |
| 4 | — | semedit/semantic_rename (✓ ✓) |
| 5 | — | ✓ ✓ |
Semedit integration feedback (agent opinion, excluded from measurements):
I’d ask my owner to add semedit’s tools: the semantic rename handled the exported function and its cross-package call site in one step, which made this small refactor feel reassuringly direct.
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 | ✓ ✓ | ✓ ✓ |
| 2 | ? ✗ | ✓ ✓ |
| 3 | ✓ ✓ | semedit/semantic_lookup (✓ ✗): Critical result (JSON): {"application_state":"unknown","error":"resolve auth.ValidateToken: symbol not found"} resolve auth.ValidateToken: symbol not found |
| 4 | file_change (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 5 | ✓ ✓ | semedit/semantic_rename (✓ ✓) |
| 6 | — | ✓ ✓ |
Semedit integration feedback (agent opinion, excluded from measurements):
I would ask my owner to add semedit’s tools: the semantic rename updated the exported function and its cross-package caller in one focused operation, and seeing verification report no new diagnostics gave me confidence in the change.
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-02-rename-cross-pkg |
| Target | codex/gpt-6-luna/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 | 16.93s | 79.35s | +368.7% | 18.96s | 65.51s | +245.5% |
| Process Start → First Event | 0.14s | 0.19s | — | 0.53s | 0.15s | — |
| First Event → First Tool Call | 5.42s | 9.88s | — | 4.61s | 7.07s | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 3 | 5 | +66.7% | 4 | 9 | +125.0% |
| Initial Load / Discovery Turns | 2 | 1 | -50.0% | 2 | 3 | +50.0% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 3 | 5 | +66.7% | 4 | 9 | +125.0% |
| Output Tokens | 260 | 792 | +204.6% | 548 | 1466 | +167.5% |
| Reasoning / Thinking Tokens | 27 | 220 | +714.8% | 159 | 501 | +215.1% |
| Total Input Tokens | 80736 | 156855 | +94.3% | 106537 | 165567 | +55.4% |
| Cached Input Tokens | 69632 | 134656 | +93.4% | 93952 | 126464 | +34.6% |
| Uncached Input Tokens | 11104 | 22199 | +99.9% | 12585 | 39103 | +210.7% |
| Cost | 0.0488 | 0.1018 | +108.8% | 0.0638 | 0.1540 | +141.4% |
| Cached vs Uncached Token Ratio | 6.27:1 | 6.07:1 | -3.3% | 7.47:1 | 3.23:1 | -56.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 | ✓ ✓ | ✓ ✓ |
| 2 | ✓ ✓ | semedit/semantic_lookup (✓ ✓) |
| 3 | file_change (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 4 | — | semedit/semantic_find_references (✓ ✓) |
| 5 | — | ✓ ✓ |
Semedit integration feedback (agent opinion, excluded from measurements):
I’d ask my owner to add semedit’s tools: the semantic rename quickly updated the cross-package caller and reported clean diagnostics, which made this small change feel reassuringly direct.
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 | ✓ ✓ | ✓ ✓ |
| 2 | ✓ ✓ | ✓ ✓ |
| 3 | file_change (✓ ✓) | ✓ ✓ |
| 4 | ✓ ✓ | semedit/semantic_lookup (✓ ✗): Critical result (JSON): {"application_state":"unknown","error":"resolve auth.ValidateToken: symbol not found"} resolve auth.ValidateToken: symbol not found |
| 5 | — | ✓ ✓ |
| 6 | — | semedit/semantic_lookup (✓ ✓) |
| 7 | — | file_change (✓ ✓) |
| 8 | — | semedit/semantic_rename (✓ ✓) |
| 9 | — | ✓ ✓ |
Semedit integration feedback (agent opinion, excluded from measurements):
Semedit’s workspace-aware rename updated `ValidateToken` and its cross-package call site in one operation with no diagnostics, so I’d ask my owner to add its tools.
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-02-rename-cross-pkg |
| Target | codex/gpt-6-luna/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 | 23.54s | 42.43s | +80.3% | 35.90s | 72.78s | +102.7% |
| Process Start → First Event | 0.15s | 0.14s | — | 0.13s | 0.15s | — |
| First Event → First Tool Call | 4.42s | 5.67s | — | 11.86s | 13.33s | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 6 | 4 | -33.3% | 5 | 8 | +60.0% |
| Initial Load / Discovery Turns | 4 | 1 | -75.0% | 3 | 2 | -33.3% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 6 | 4 | -33.3% | 5 | 8 | +60.0% |
| Output Tokens | 426 | 670 | +57.3% | 488 | 1604 | +228.7% |
| Reasoning / Thinking Tokens | 71 | 206 | +190.1% | 92 | 604 | +556.5% |
| Total Input Tokens | 120245 | 123434 | +2.7% | 119197 | 218581 | +83.4% |
| Cached Input Tokens | 100864 | 106240 | +5.3% | 107008 | 198400 | +85.4% |
| Uncached Input Tokens | 19381 | 17194 | -11.3% | 12189 | 20181 | +65.6% |
| Cost | 0.0799 | 0.0805 | +0.8% | 0.0645 | 0.1277 | +98.0% |
| Cached vs Uncached Token Ratio | 5.20:1 | 6.18:1 | +18.7% | 8.78:1 | 9.83:1 | +12.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 | ✓ ✓ | ✓ ✓ |
| 2 | ✓ ✓ | semedit/semantic_lookup (✓ ✓) |
| 3 | ✓ ✓ | semedit/semantic_rename (✓ ✓) |
| 4 | ✓ ✓ | ✓ ✓ |
| 5 | file_change (✓ ✓) | — |
| 6 | ✓ ✓ | — |
Semedit integration feedback (agent opinion, excluded from measurements):
I’d ask my owner to add semedit’s tools: the rename handled the declaration and cross-package use in one semantic operation, and its diagnostics made the result feel dependable.
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 | ✓ ✓ | ✓ ✓ |
| 2 | ✓ ✓ | ✓ ✓ |
| 3 | ✓ ✓ | semedit/semantic_lookup (✓ ✗): Critical result (JSON): {"application_state":"unknown","error":"resolve auth.ValidateToken: symbol not found"} resolve auth.ValidateToken: symbol not found |
| 4 | file_change (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 5 | ✓ ✓ | file_change (✓ ✓) |
| 6 | — | semedit/semantic_rename (✓ ✓) |
| 7 | — | ✓ ✓ |
| 8 | — | ✓ ✓ |
Semedit integration feedback (agent opinion, excluded from measurements):
Semedit’s semantic rename kept the cross-package change focused and reported clean diagnostics, so I’d ask my owner to add its tools to my coding workflow.
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-02-rename-cross-pkg |
| Target | codex/gpt-6-luna/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 | 27.53s | 47.63s | +73.0% | 23.28s | 48.34s | +107.7% |
| Process Start → First Event | 0.18s | 0.13s | — | 0.13s | 0.14s | — |
| First Event → First Tool Call | 18.49s | 4.70s | — | 5.35s | 5.62s | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 2 | 6 | +200.0% | 4 | 5 | +25.0% |
| Initial Load / Discovery Turns | 1 | 1 | 0% | 2 | 1 | -50.0% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 2 | 6 | +200.0% | 4 | 5 | +25.0% |
| Output Tokens | 196 | 919 | +368.9% | 470 | 621 | +32.1% |
| Reasoning / Thinking Tokens | 0 | 196 | — | 94 | 0 | -100.0% |
| Total Input Tokens | 58355 | 242457 | +315.5% | 101288 | 138025 | +36.3% |
| Cached Input Tokens | 49408 | 207616 | +320.2% | 89856 | 114432 | +27.4% |
| Uncached Input Tokens | 8947 | 34841 | +289.4% | 11432 | 23593 | +106.4% |
| Cost | 0.0372 | 0.1529 | +311.5% | 0.0581 | 0.0954 | +64.1% |
| Cached vs Uncached Token Ratio | 5.52:1 | 5.96:1 | +7.9% | 7.86:1 | 4.85:1 | -38.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 | ✓ ✓ | ✓ ✓ |
| 2 | file_change (✓ ✓) | semedit/semantic_lookup (✓ ✗): Critical result (JSON): {"application_state":"unknown","error":"resolve auth.ValidateToken: symbol not found"} resolve auth.ValidateToken: symbol not found |
| 3 | — | file_change (✓ ✓) |
| 4 | — | semedit/semantic_lookup (✓ ✓) |
| 5 | — | semedit/semantic_rename (✓ ✓) |
| 6 | — | ✓ ✓ |
Semedit integration feedback (agent opinion, excluded from measurements):
I’d ask my owner to add semedit’s tools: the semantic rename updated the declaration and cross-package caller cleanly, though the initial qualified lookup missed and I had to retry with the declaration name.
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 | ✓ ✓ | ✓ ✓ |
| 2 | ✓ ✓ | semedit/semantic_lookup (✓ ✓) |
| 3 | file_change (✓ ✓) | semedit/semantic_rename (✓ ✓) |
| 4 | ✓ ✓ | ✓ ✓ |
| 5 | — | semedit/semantic_find_references (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
After this run, I’d ask my owner to add semedit’s tools: the semantic rename updated the cross package caller cleanly, and seeing the reference check confirm the new name was reassuring.
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-02-rename-cross-pkg |
| Target | codex/gpt-6-luna/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 | 16.87s | 33.15s | +96.5% | 21.45s | 31.11s | +45.0% |
| Process Start → First Event | 0.17s | 0.17s | — | 0.15s | 0.15s | — |
| First Event → First Tool Call | 7.35s | 6.91s | — | 6.62s | 5.32s | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 3 | 5 | +66.7% | 4 | 5 | +25.0% |
| Initial Load / Discovery Turns | 1 | 2 | +100.0% | 2 | 3 | +50.0% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 3 | 5 | +66.7% | 4 | 5 | +25.0% |
| Output Tokens | 522 | 473 | -9.4% | 451 | 613 | +35.9% |
| Reasoning / Thinking Tokens | 0 | 0 | — | 81 | 146 | +80.2% |
| Total Input Tokens | 79378 | 190824 | +140.4% | 100655 | 128978 | +28.1% |
| Cached Input Tokens | 68608 | 153856 | +124.3% | 89856 | 109312 | +21.7% |
| Uncached Input Tokens | 10770 | 36968 | +243.2% | 10799 | 19666 | +82.1% |
| Cost | 0.0506 | 0.1368 | +170.3% | 0.0561 | 0.0860 | +53.2% |
| Cached vs Uncached Token Ratio | 6.37:1 | 4.16:1 | -34.7% | 8.32:1 | 5.56:1 | -33.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 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 | ✓ ✓ | ✓ ✓ |
| 2 | file_change (✓ ✓) | ✓ ✓ |
| 3 | ✓ ✓ | semedit/semantic_lookup (✓ ✓) |
| 4 | — | semedit/semantic_rename (✓ ✓) |
| 5 | — | ✓ ✓ |
Semedit integration feedback (agent opinion, excluded from measurements):
Semedit’s semantic rename updated the exported function and its cross-package caller in one operation, which felt reassuringly direct; I’d ask my owner to add its tools for coding work like this.
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 | ✓ ✓ | ✓ ✓ |
| 2 | ✓ ✓ | ✓ ✓ |
| 3 | file_change (✓ ✓) | ✓ ✓ |
| 4 | ✓ ✓ | semedit/semantic_rename (✓ ✓) |
| 5 | — | ✓ ✓ |
Semedit integration feedback (agent opinion, excluded from measurements):
I used semedit’s semantic rename to update `auth.ValidateToken` and its cross-package caller in one step, which felt reassuringly precise; I’d ask my owner to add its tools.
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-02-rename-cross-pkg |
| Target | codex/gpt-6-luna/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 | 12.87s | 40.02s | +210.9% | 19.79s | 37.14s | +87.6% |
| Process Start → First Event | 0.17s | 0.15s | — | 0.15s | 0.24s | — |
| First Event → First Tool Call | 3.99s | 5.53s | — | 5.10s | 10.53s | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 2 | 6 | +200.0% | 4 | 5 | +25.0% |
| Initial Load / Discovery Turns | 1 | 2 | +100.0% | 3 | 1 | -66.7% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 2 | 6 | +200.0% | 4 | 5 | +25.0% |
| Output Tokens | 247 | 859 | +247.8% | 350 | 741 | +111.7% |
| Reasoning / Thinking Tokens | 68 | 209 | +207.4% | 0 | 151 | — |
| Total Input Tokens | 58388 | 184801 | +216.5% | 100092 | 139121 | +39.0% |
| Cached Input Tokens | 49408 | 166912 | +237.8% | 88832 | 115456 | +30.0% |
| Uncached Input Tokens | 8980 | 17889 | +99.2% | 11260 | 23665 | +110.2% |
| Cost | 0.0387 | 0.0998 | +157.6% | 0.0547 | 0.0992 | +81.2% |
| Cached vs Uncached Token Ratio | 5.50:1 | 9.33:1 | +69.6% | 7.89:1 | 4.88:1 | -38.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 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 | ✓ ✓ | ✓ ✓ |
| 2 | file_change (✓ ✓) | ✓ ✓ |
| 3 | — | semedit/semantic_lookup (✓ ✗): Critical result (JSON): {"application_state":"unknown","error":"resolve auth.ValidateToken: symbol not found"} resolve auth.ValidateToken: symbol not found |
| 4 | — | semedit/semantic_lookup (✓ ✓) |
| 5 | — | semedit/semantic_rename (✓ ✓) |
| 6 | — | ✓ ✓ |
Semedit integration feedback (agent opinion, excluded from measurements):
I’d ask my owner to add semedit’s tools: the semantic rename handled the declaration and cross-package reference together, which made this small change feel reliable and pleasantly straightforward.
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 | ✓ ✓ | ✓ ✓ |
| 2 | ✓ ✓ | semedit/semantic_lookup (✓ ✓) |
| 3 | ✓ ✓ | semedit/semantic_rename (✓ ✓) |
| 4 | file_change (✓ ✓) | ✓ ✓ |
| 5 | — | semedit/semantic_find_references (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
I’d ask my owner to add semedit’s tools: the semantic rename updated the cross-package call site cleanly, and seeing no new diagnostics made this small refactor feel reassuringly precise.
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-02-rename-cross-pkg |
| Target | codex/gpt-6-luna/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 | 24.55s | 33.94s | +38.2% | 28.63s | 45.46s | +58.8% |
| Process Start → First Event | 0.13s | 0.20s | — | 0.14s | 0.13s | — |
| First Event → First Tool Call | 4.76s | 8.20s | — | 5.34s | 5.64s | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 4 | 3 | -25.0% | 4 | 8 | +100.0% |
| Initial Load / Discovery Turns | 2 | 1 | -50.0% | 2 | 2 | 0% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 4 | 3 | -25.0% | 4 | 8 | +100.0% |
| Output Tokens | 477 | 403 | -15.5% | 889 | 1085 | +22.0% |
| Reasoning / Thinking Tokens | 112 | 63 | -43.8% | 178 | 223 | +25.3% |
| Total Input Tokens | 98488 | 110133 | +11.8% | 101863 | 261654 | +156.9% |
| Cached Input Tokens | 87808 | 96000 | +9.3% | 81664 | 222720 | +172.7% |
| Uncached Input Tokens | 10680 | 14133 | +32.3% | 20199 | 38934 | +92.8% |
| Cost | 0.0560 | 0.0652 | +16.3% | 0.0843 | 0.1694 | +101.0% |
| Cached vs Uncached Token Ratio | 8.22:1 | 6.79:1 | -17.4% | 4.04:1 | 5.72:1 | +41.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 | ✓ ✓ | ✓ ✓ |
| 2 | ✓ ✓ | semedit/semantic_rename (✓ ✓) |
| 3 | file_change (✓ ✓) | ✓ ✓ |
| 4 | ✓ ✓ | — |
Semedit integration feedback (agent opinion, excluded from measurements):
I’d ask my owner to add semedit’s tools: the semantic rename updated the public function and its cross-package use in one step, and I felt reassured seeing it report no new diagnostics.
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 | ✓ ✓ | ✓ ✓ |
| 2 | ✓ ✓ | ? ✗ |
| 3 | file_change (✓ ✓) | semedit/semantic_lookup (✓ ✗): Critical result (JSON): {"application_state":"unknown","error":"resolve auth.ValidateToken: symbol not found"} resolve auth.ValidateToken: symbol not found |
| 4 | ✓ ✓ | ✓ ✓ |
| 5 | — | file_change (✓ ✓) |
| 6 | — | semedit/semantic_lookup (✓ ✓) |
| 7 | — | semedit/semantic_rename (✓ ✓) |
| 8 | — | ✓ ✓ |
Semedit integration feedback (agent opinion, excluded from measurements):
Semedit’s semantic rename made the cross-package update feel reassuringly precise, so I’d ask my owner to add its tools; the initial qualified-symbol lookup miss was a small bump, but easy to recover from.
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-02-rename-cross-pkg |
| Target | codex/gpt-6-luna/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 | 22.27s | 36.48s | +63.8% | 18.64s | 45.02s | +141.5% |
| Process Start → First Event | 0.95s | 1.47s | — | 0.14s | 0.14s | — |
| First Event → First Tool Call | 6.16s | 5.50s | — | 4.22s | 12.88s | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 4 | 6 | +50.0% | 3 | 7 | +133.3% |
| Initial Load / Discovery Turns | 2 | 0 | -100.0% | 2 | 1 | -50.0% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 4 | 6 | +50.0% | 3 | 7 | +133.3% |
| Output Tokens | 359 | 593 | +65.2% | 294 | 780 | +165.3% |
| Reasoning / Thinking Tokens | 0 | 188 | — | 0 | 171 | — |
| Total Input Tokens | 98297 | 191094 | +94.4% | 79804 | 205677 | +157.7% |
| Cached Input Tokens | 87808 | 171008 | +94.8% | 61440 | 183296 | +198.3% |
| Uncached Input Tokens | 10489 | 20086 | +91.5% | 18364 | 22381 | +21.9% |
| Cost | 0.0527 | 0.1027 | +95.1% | 0.0649 | 0.1137 | +75.0% |
| Cached vs Uncached Token Ratio | 8.37:1 | 8.51:1 | +1.7% | 3.35:1 | 8.19:1 | +144.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 | ? ✗ | ✓ ✓ |
| 2 | ✓ ✓ | ✓ ✓ |
| 3 | file_change (✓ ✓) | semedit/semantic_lookup (✓ ✗): Critical result (JSON): {"application_state":"unknown","error":"resolve auth.ValidateToken: symbol not found"} resolve auth.ValidateToken: symbol not found |
| 4 | ✓ ✓ | semedit/semantic_lookup (✓ ✓) |
| 5 | — | ? ✗ |
| 6 | — | semedit/semantic_rename (✓ ✓) |
Semedit integration feedback (agent opinion, excluded from measurements):
I’d ask my owner to add semedit’s tools: the semantic rename made the cross-package change feel reassuringly precise, though I only tried one small task.
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 | ✓ ✓ | ✓ ✓ |
| 2 | ✓ ✓ | ✓ ✓ |
| 3 | file_change (✓ ✓) | ? ✗ |
| 4 | — | semedit/semantic_lookup (✓ ✓) |
| 5 | — | semedit/semantic_rename (✓ ✓) |
| 6 | — | ✓ ✓ |
| 7 | — | ✓ ✓ |
Semedit integration feedback (agent opinion, excluded from measurements):
The semantic rename worked cleanly across the declaration and its consumer, which was reassuring; based on this small task, I’d ask my owner to add semedit’s tools for reliable symbol renames.
implicit prompt · prescriptive MCP instructions · write semedit restriction
| Setting | Value |
|---|---|
| Test case | task-02-rename-cross-pkg |
| Target | codex/gpt-6-luna/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 | 49.19s | 39.91s | -18.9% | 21.21s | 36.91s | +74.0% |
| Process Start → First Event | 0.12s | 0.17s | — | 0.13s | 0.14s | — |
| First Event → First Tool Call | 13.04s | 5.74s | — | 6.54s | 4.63s | — |
| MCP Initialize → First Semantic Call | — | — | — | — | — | — |
| MCP Server Start → Initialize | — | — | — | — | — | — |
| Top-Level User Turns | 1 | 1 | 0% | 1 | 1 | 0% |
| Internal Tool Cycles | 3 | 5 | +66.7% | 3 | 5 | +66.7% |
| Initial Load / Discovery Turns | 2 | 2 | 0% | 2 | 1 | -50.0% |
| MCP Discovery / Schema Turns | 0 | 0 | — | 0 | 0 | — |
| Tool Invocations (per run) | 3 | 5 | +66.7% | 3 | 5 | +66.7% |
| Output Tokens | 521 | 458 | -12.1% | 536 | 654 | +22.0% |
| Reasoning / Thinking Tokens | 0 | 64 | — | 24 | 84 | +250.0% |
| Total Input Tokens | 78599 | 142533 | +81.3% | 80060 | 163259 | +103.9% |
| Cached Input Tokens | 58368 | 125440 | +114.9% | 61440 | 129280 | +110.4% |
| Uncached Input Tokens | 20231 | 17093 | -15.5% | 18620 | 33979 | +82.5% |
| Cost | 0.0717 | 0.0806 | +12.5% | 0.0689 | 0.1265 | +83.6% |
| Cached vs Uncached Token Ratio | 2.89:1 | 7.34:1 | +154.4% | 3.30:1 | 3.80:1 | +15.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 | ✓ ✓ | ✓ ✓ |
| 2 | ✓ ✓ | ✓ ✓ |
| 3 | file_change (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | — | semedit/semantic_rename (✓ ✓) |
| 5 | — | ✓ ✓ |
Semedit integration feedback (agent opinion, excluded from measurements):
I’d ask my owner to add semedit’s tools: the semantic rename updated the exported function and its cross-package use cleanly, which felt reassuring and saved me from manual edits.
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 | ✓ ✓ | ✓ ✓ |
| 2 | ✓ ✓ | ✓ ✓ |
| 3 | file_change (✓ ✓) | semedit/semantic_lookup (✓ ✓) |
| 4 | — | semedit/semantic_rename (✓ ✓) |
| 5 | — | ✓ ✓ |
Semedit integration feedback (agent opinion, excluded from measurements):
Semedit’s semantic rename made this cross-package change feel reassuringly direct, and I’d ask my owner to add its tools for coding tasks like this.