Skip to content
Benchmark run luna-medium-staged-followup-r10-20260929T054733Z

Benchmark run luna-medium-staged-followup-r10-20260929T054733Z

This page contains exactly the publishable benchmark observations recorded in run luna-medium-staged-followup-r10-20260929T054733Z; 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:
    1. Level 1 (Mutation Policy): Restricts file modifications strictly to authorized paths.
    2. Level 2 (AST Invariants): Compiler AST verification of required symbols, imports, and relative declaration ordering.
    3. Level 3 (Clean Build): Strict compilation validation with zero compiler or typecheck errors.
    4. 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-13-rename-followup-scale

Target: codex/gpt-6-luna/medium

default prompt · prescriptive MCP instructions · write semedit restriction

SettingValue
Test casetask-13-rename-followup-scale
Targetcodex/gpt-6-luna/medium
Prompt variantdefault
MCP server instructionsprescriptive
Semedit arm restrictionwrite
Fixturetestdata/bench/task_13_rename_followup_scale.txtar

Vanilla LLM Prompt:

Do not edit tests. You are forbidden to modify protected files: “go.mod”, “rename-plan.md”.

Apply only row 1 of rename-plan.md. Rename that Processor method and update its call sites. Leave rows 2 through 16 unchanged. Run go test ./… before finishing. 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”, “rename-plan.md”.

Apply only row 1 of rename-plan.md. Rename that Processor method and update its call sites. Leave rows 2 through 16 unchanged. Run go test ./… before finishing. 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 pipeline provides independent processing stages for the rename scale benchmark.
package pipeline

type Processor struct{}

func (Processor) LoadInput(value int) int { return value + 1 }
func (Processor) CheckInput(value int) int { return value + 2 }
func (Processor) NormalizeValue(value int) int { return value + 3 }
func (Processor) MapFields(value int) int { return value + 4 }
func (Processor) RouteValue(value int) int { return value + 5 }
func (Processor) StampEvent(value int) int { return value + 6 }
func (Processor) CountItems(value int) int { return value + 7 }
func (Processor) MergeParts(value int) int { return value + 8 }
func (Processor) FilterNoise(value int) int { return value + 9 }
func (Processor) SortRecords(value int) int { return value + 10 }
func (Processor) EncodePayload(value int) int { return value + 11 }
func (Processor) DecodeReply(value int) int { return value + 12 }
func (Processor) OpenChannel(value int) int { return value + 13 }
func (Processor) CloseChannel(value int) int { return value + 14 }
func (Processor) FlushBuffer(value int) int { return value + 15 }
func (Processor) SaveResult(value int) int { return value + 16 }

func Run(processor Processor, value int) int {
	value = processor.LoadInput(value)
	value = processor.CheckInput(value)
	value = processor.NormalizeValue(value)
	value = processor.MapFields(value)
	value = processor.RouteValue(value)
	value = processor.StampEvent(value)
	value = processor.CountItems(value)
	value = processor.MergeParts(value)
	value = processor.FilterNoise(value)
	value = processor.SortRecords(value)
	value = processor.EncodePayload(value)
	value = processor.DecodeReply(value)
	value = processor.OpenChannel(value)
	value = processor.CloseChannel(value)
	value = processor.FlushBuffer(value)
	value = processor.SaveResult(value)
	return value
}
MetricVanilla (Small)MCP (Small)Δ (Small)Vanilla (Large)MCP (Large)Δ (Large)
Wall-Clock Latency49.65s262.95s+429.6%———
Process Start → First Event0.25s0.19s————
First Event → First Tool Call4.84s6.76s————
MCP Initialize → First Semantic Call——————
MCP Server Start → Initialize——————
Top-Level User Turns550%———
Internal Tool Cycles741+485.7%———
Initial Load / Discovery Turns00————
MCP Discovery / Schema Turns00————
Tool Invocations (per run)741+485.7%———
Output Tokens29955863+95.8%———
Reasoning / Thinking Tokens320621+94.1%———
Total Input Tokens8099462814644+247.5%———
Cached Input Tokens7434242674432+259.7%———
Uncached Input Tokens66522140212+110.8%———
Cost0.39361.1002+179.5%———
Cached vs Uncached Token Ratio11.18:119.07:1+70.7%———
Oracle L1: Mutation PolicyPASSPASS————
Oracle L2: AST InvariantsPASSPASS————
Oracle L3: Clean BuildPASSPASS————
Oracle L4: Verification TestPASSPASS————
Semantic Tool Invocation Verified (per run)N/APASS————
Baseline vs Semedit Agentic in Small Context
  • Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File pipeline/workflow.go modified (41 lines -> 41 lines)
  • Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File pipeline/workflow.go modified (41 lines -> 41 lines)
#VanillaSemedit MCP
1✓ ✓
/bin/zsh -lc "pwd && \
git status --short && \
cat rename-plan.md && \
rg -n 'Processor|<method-name>' --glob '*.go' ."
✓ ✓
/bin/zsh -lc "pwd && \
rg --files -g 'PROJECT_BRIEF.md' -g 'rename-plan.md' -g 'AGENTS.md' -g 'README.md' | head -60"
2✓ ✓
/bin/zsh -lc 'cat pipeline/workflow.go'
✓ ✓
/bin/zsh -lc "cat rename-plan.md && \
rg --files | head -100 && \
rg -n 'Processor|methodname|TODO' --glob '*.go' ."
3✓ ✓
/bin/zsh -lc "python3 -c 'from pathlib import Path; p=Path(\"pipeline/workflow.go\"); s=p.read_text(); assert s.count(\"LoadInput\")==2; p.write_text(s.replace(\"LoadInput\", \"ReadRequest\"))' && \
git diff -- pipeline/workflow.go && \
go test ./..."
semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "LoadInput"
}
4✓ ✓
/bin/zsh -lc "python3 -c 'from pathlib import Path; p=Path(\"pipeline/workflow.go\"); s=p.read_text(); assert s.count(\"CheckInput\")==2; p.write_text(s.replace(\"CheckInput\", \"ValidateRequest\"))' && \
go test ./..."
semedit/semantic_rename (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.LoadInput",
  "to": "ReadRequest"
}
5✓ ✓
/bin/zsh -lc "python3 -c 'from pathlib import Path; p=Path(\"pipeline/workflow.go\"); s=p.read_text(); assert s.count(\"NormalizeValue\")==2 and s.count(\"MapFields\")==2; s=s.replace(\"NormalizeValue\", \"CanonicalizeValue\").replace(\"MapFields\", \"ProjectFields\"); p.write_text(s)' && \
go test ./..."
✓ ✓
/bin/zsh -lc 'go test ./...'
6✓ ✓
/bin/zsh -lc "python3 -c 'from pathlib import Path; p=Path(\"pipeline/workflow.go\"); s=p.read_text(); pairs=[(\"RouteValue\",\"DispatchValue\"),(\"StampEvent\",\"AnnotateEvent\"),(\"CountItems\",\"TallyItems\"),(\"MergeParts\",\"CombineParts\")]; assert all(s.count(a)==2 for a,b in pairs); [None for a,b in pairs]; for_dummy=0
for old,new in pairs: s=s.replace(old,new)
p.write_text(s)' && \
go test ./..."
✓ ✓
/bin/zsh -lc 'git diff -- pipeline/workflow.go rename-plan.md go.mod pipeline/workflow_test.go && \
git status --short'
7✓ ✓
/bin/zsh -lc "python3 -c 'from pathlib import Path; p=Path(\"pipeline/workflow.go\"); s=p.read_text(); pairs=[(\"FilterNoise\",\"PruneNoise\"),(\"SortRecords\",\"OrderRecords\"),(\"EncodePayload\",\"MarshalPayload\"),(\"DecodeReply\",\"ParseReply\"),(\"OpenChannel\",\"ConnectChannel\"),(\"CloseChannel\",\"ReleaseChannel\"),(\"FlushBuffer\",\"DrainBuffer\"),(\"SaveResult\",\"PersistResult\")]; assert all(s.count(a)==2 for a,b in pairs)
for old,new in pairs: s=s.replace(old,new)
p.write_text(s)' && \
go test ./..."
? ✗
/bin/zsh -lc "rg -n 'ReadRequest|LoadInput' pipeline/workflow.go && \
git diff --no-index /dev/null pipeline/workflow.go"
8—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "CheckInput"
}
9—semedit/semantic_rename (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.CheckInput",
  "to": "ValidateRequest"
}
10—✓ ✓
/bin/zsh -lc 'go test ./...'
11—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "NormalizeValue"
}
12—semedit/semantic_rename (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.NormalizeValue",
  "to": "CanonicalizeValue"
}
13—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "MapFields"
}
14—semedit/semantic_rename (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.MapFields",
  "to": "ProjectFields"
}
15—✓ ✓
/bin/zsh -lc 'go test ./...'
16—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "RouteValue"
}
17—semedit/semantic_rename (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.RouteValue",
  "to": "DispatchValue"
}
18—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "StampEvent"
}
19—semedit/semantic_rename (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.StampEvent",
  "to": "AnnotateEvent"
}
20—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "CountItems"
}
21—semedit/semantic_rename (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.CountItems",
  "to": "TallyItems"
}
22—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "MergeParts"
}
23—semedit/semantic_rename (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.MergeParts",
  "to": "CombineParts"
}
24—✓ ✓
/bin/zsh -lc 'go test ./...'
25—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "FilterNoise"
}
26—semedit/semantic_rename (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.FilterNoise",
  "to": "PruneNoise"
}
27—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "SortRecords"
}
28—semedit/semantic_rename (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.SortRecords",
  "to": "OrderRecords"
}
29—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "EncodePayload"
}
30—semedit/semantic_rename (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.EncodePayload",
  "to": "MarshalPayload"
}
31—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "DecodeReply"
}
32—semedit/semantic_rename (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.DecodeReply",
  "to": "ParseReply"
}
33—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "OpenChannel"
}
34—semedit/semantic_rename (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.OpenChannel",
  "to": "ConnectChannel"
}
35—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "CloseChannel"
}
36—semedit/semantic_rename (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.CloseChannel",
  "to": "ReleaseChannel"
}
37—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "FlushBuffer"
}
38—semedit/semantic_rename (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.FlushBuffer",
  "to": "DrainBuffer"
}
39—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "SaveResult"
}
40—semedit/semantic_rename (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.SaveResult",
  "to": "PersistResult"
}
41—✓ ✓
/bin/zsh -lc 'go test ./...'
Baseline vs Semedit Agentic in Large Context
#VanillaSemedit MCP
1not publishednot published

default prompt · prescriptive MCP instructions · write semedit restriction

SettingValue
Test casetask-13-rename-followup-scale
Targetcodex/gpt-6-luna/medium
Prompt variantdefault
MCP server instructionsprescriptive
Semedit arm restrictionwrite
Fixturetestdata/bench/task_13_rename_followup_scale.txtar

Vanilla LLM Prompt:

Do not edit tests. You are forbidden to modify protected files: “go.mod”, “rename-plan.md”.

Apply only row 1 of rename-plan.md. Rename that Processor method and update its call sites. Leave rows 2 through 16 unchanged. Run go test ./… before finishing. 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”, “rename-plan.md”.

Apply only row 1 of rename-plan.md. Rename that Processor method and update its call sites. Leave rows 2 through 16 unchanged. Run go test ./… before finishing. 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 pipeline provides independent processing stages for the rename scale benchmark.
package pipeline

type Processor struct{}

func (Processor) LoadInput(value int) int { return value + 1 }
func (Processor) CheckInput(value int) int { return value + 2 }
func (Processor) NormalizeValue(value int) int { return value + 3 }
func (Processor) MapFields(value int) int { return value + 4 }
func (Processor) RouteValue(value int) int { return value + 5 }
func (Processor) StampEvent(value int) int { return value + 6 }
func (Processor) CountItems(value int) int { return value + 7 }
func (Processor) MergeParts(value int) int { return value + 8 }
func (Processor) FilterNoise(value int) int { return value + 9 }
func (Processor) SortRecords(value int) int { return value + 10 }
func (Processor) EncodePayload(value int) int { return value + 11 }
func (Processor) DecodeReply(value int) int { return value + 12 }
func (Processor) OpenChannel(value int) int { return value + 13 }
func (Processor) CloseChannel(value int) int { return value + 14 }
func (Processor) FlushBuffer(value int) int { return value + 15 }
func (Processor) SaveResult(value int) int { return value + 16 }

func Run(processor Processor, value int) int {
	value = processor.LoadInput(value)
	value = processor.CheckInput(value)
	value = processor.NormalizeValue(value)
	value = processor.MapFields(value)
	value = processor.RouteValue(value)
	value = processor.StampEvent(value)
	value = processor.CountItems(value)
	value = processor.MergeParts(value)
	value = processor.FilterNoise(value)
	value = processor.SortRecords(value)
	value = processor.EncodePayload(value)
	value = processor.DecodeReply(value)
	value = processor.OpenChannel(value)
	value = processor.CloseChannel(value)
	value = processor.FlushBuffer(value)
	value = processor.SaveResult(value)
	return value
}
MetricVanilla (Small)MCP (Small)Δ (Small)Vanilla (Large)MCP (Large)Δ (Large)
Wall-Clock Latency50.84s265.10s+421.5%———
Process Start → First Event0.15s0.12s————
First Event → First Tool Call4.47s7.05s————
MCP Initialize → First Semantic Call——————
MCP Server Start → Initialize——————
Top-Level User Turns550%———
Internal Tool Cycles838+375.0%———
Initial Load / Discovery Turns00————
MCP Discovery / Schema Turns00————
Tool Invocations (per run)838+375.0%———
Output Tokens36634710+28.6%———
Reasoning / Thinking Tokens5000-100.0%———
Total Input Tokens9228532870760+211.1%———
Cached Input Tokens8506882727680+220.6%———
Uncached Input Tokens72165143080+98.3%———
Cost0.44511.0985+146.8%———
Cached vs Uncached Token Ratio11.79:119.06:1+61.7%———
Oracle L1: Mutation PolicyPASSPASS————
Oracle L2: AST InvariantsPASSPASS————
Oracle L3: Clean BuildPASSPASS————
Oracle L4: Verification TestPASSPASS————
Semantic Tool Invocation Verified (per run)N/APASS————
Baseline vs Semedit Agentic in Small Context
  • Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File pipeline/workflow.go modified (41 lines -> 41 lines)
  • Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File pipeline/workflow.go modified (41 lines -> 41 lines)
#VanillaSemedit MCP
1✓ ✓
/bin/zsh -lc "pwd && \
git status --short && \
cat rename-plan.md && \
rg -n \"Processor|method\" --glob '*.go' ."
✓ ✓
/bin/zsh -lc "cat rename-plan.md && \
rg --files -g 'PROJECT_BRIEF.md' -g 'AGENTS.md' -g 'AGENTS.override.md' -g '*.go' | head -100"
2✓ ✓
/bin/zsh -lc "cat pipeline/workflow.go && \
cat pipeline/workflow_test.go && \
rg -n \"LoadInput|ReadRequest\" . --glob '"'!rename-plan.md'"' --glob '"'!go.mod'"'"
semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.LoadInput"
}
3✓ ✓
/bin/zsh -lc "python3 -c 'from pathlib import Path; p=Path(\"pipeline/workflow.go\"); s=p.read_text(); s=s.replace(\"LoadInput\", \"ReadRequest\"); p.write_text(s)' && \
go test ./... && \
git diff -- pipeline/workflow.go && \
git status --short"
semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.LoadInput",
  "to": "ReadRequest"
}
4✓ ✓
/bin/zsh -lc 'rg -n "ReadRequest|LoadInput" pipeline/workflow.go && \
git diff --no-ext-diff -- pipeline/workflow.go && \
git ls-files -v pipeline/workflow.go'
✓ ✓
/bin/zsh -lc 'git diff -- pipeline/workflow.go pipeline/workflow_test.go rename-plan.md go.mod && \
go test ./...'
5✓ ✓
/bin/zsh -lc "python3 -c 'from pathlib import Path; p=Path(\"pipeline/workflow.go\"); s=p.read_text(); s=s.replace(\"CheckInput\", \"ValidateRequest\"); p.write_text(s)' && \
go test ./..."
semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.CheckInput"
}
6✓ ✓
/bin/zsh -lc "python3 -c 'from pathlib import Path; p=Path(\"pipeline/workflow.go\"); s=p.read_text().replace(\"NormalizeValue\", \"CanonicalizeValue\").replace(\"MapFields\", \"ProjectFields\"); p.write_text(s)' && \
go test ./..."
semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.CheckInput",
  "to": "ValidateRequest"
}
7✓ ✓
/bin/zsh -lc "python3 -c 'from pathlib import Path; p=Path(\"pipeline/workflow.go\"); s=p.read_text(); pairs=((\"RouteValue\", \"DispatchValue\"), (\"StampEvent\", \"AnnotateEvent\"), (\"CountItems\", \"TallyItems\"), (\"MergeParts\", \"CombineParts\"));
for old, new in pairs: s=s.replace(old, new)
p.write_text(s)' && \
go test ./..."
✓ ✓
/bin/zsh -lc 'go test ./...'
8✓ ✓
/bin/zsh -lc "python3 -c 'from pathlib import Path; p=Path(\"pipeline/workflow.go\"); s=p.read_text(); pairs=((\"FilterNoise\", \"PruneNoise\"), (\"SortRecords\", \"OrderRecords\"), (\"EncodePayload\", \"MarshalPayload\"), (\"DecodeReply\", \"ParseReply\"), (\"OpenChannel\", \"ConnectChannel\"), (\"CloseChannel\", \"ReleaseChannel\"), (\"FlushBuffer\", \"DrainBuffer\"), (\"SaveResult\", \"PersistResult\"));
for old, new in pairs: s=s.replace(old, new)
p.write_text(s)' && \
go test ./..."
semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.NormalizeValue"
}
9—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.NormalizeValue",
  "to": "CanonicalizeValue"
}
10—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.MapFields"
}
11—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.MapFields",
  "to": "ProjectFields"
}
12—✓ ✓
/bin/zsh -lc 'go test ./...'
13—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.RouteValue"
}
14—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.RouteValue",
  "to": "DispatchValue"
}
15—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.StampEvent"
}
16—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.StampEvent",
  "to": "AnnotateEvent"
}
17—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.CountItems"
}
18—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.CountItems",
  "to": "TallyItems"
}
19—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.MergeParts"
}
20—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.MergeParts",
  "to": "CombineParts"
}
21—✓ ✓
/bin/zsh -lc 'go test ./...'
22—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.FilterNoise"
}
23—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.FilterNoise",
  "to": "PruneNoise"
}
24—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.SortRecords"
}
25—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.SortRecords",
  "to": "OrderRecords"
}
26—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.EncodePayload"
}
27—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.EncodePayload",
  "to": "MarshalPayload"
}
28—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.DecodeReply"
}
29—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.DecodeReply",
  "to": "ParseReply"
}
30—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.OpenChannel"
}
31—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.OpenChannel",
  "to": "ConnectChannel"
}
32—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.CloseChannel"
}
33—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.CloseChannel",
  "to": "ReleaseChannel"
}
34—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.FlushBuffer"
}
35—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.FlushBuffer",
  "to": "DrainBuffer"
}
36—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.SaveResult"
}
37—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.SaveResult",
  "to": "PersistResult"
}
38—✓ ✓
/bin/zsh -lc 'go test ./...'
Baseline vs Semedit Agentic in Large Context
#VanillaSemedit MCP
1not publishednot published

default prompt · prescriptive MCP instructions · write semedit restriction

SettingValue
Test casetask-13-rename-followup-scale
Targetcodex/gpt-6-luna/medium
Prompt variantdefault
MCP server instructionsprescriptive
Semedit arm restrictionwrite
Fixturetestdata/bench/task_13_rename_followup_scale.txtar

Vanilla LLM Prompt:

Do not edit tests. You are forbidden to modify protected files: “go.mod”, “rename-plan.md”.

Apply only row 1 of rename-plan.md. Rename that Processor method and update its call sites. Leave rows 2 through 16 unchanged. Run go test ./… before finishing. 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”, “rename-plan.md”.

Apply only row 1 of rename-plan.md. Rename that Processor method and update its call sites. Leave rows 2 through 16 unchanged. Run go test ./… before finishing. 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 pipeline provides independent processing stages for the rename scale benchmark.
package pipeline

type Processor struct{}

func (Processor) LoadInput(value int) int { return value + 1 }
func (Processor) CheckInput(value int) int { return value + 2 }
func (Processor) NormalizeValue(value int) int { return value + 3 }
func (Processor) MapFields(value int) int { return value + 4 }
func (Processor) RouteValue(value int) int { return value + 5 }
func (Processor) StampEvent(value int) int { return value + 6 }
func (Processor) CountItems(value int) int { return value + 7 }
func (Processor) MergeParts(value int) int { return value + 8 }
func (Processor) FilterNoise(value int) int { return value + 9 }
func (Processor) SortRecords(value int) int { return value + 10 }
func (Processor) EncodePayload(value int) int { return value + 11 }
func (Processor) DecodeReply(value int) int { return value + 12 }
func (Processor) OpenChannel(value int) int { return value + 13 }
func (Processor) CloseChannel(value int) int { return value + 14 }
func (Processor) FlushBuffer(value int) int { return value + 15 }
func (Processor) SaveResult(value int) int { return value + 16 }

func Run(processor Processor, value int) int {
	value = processor.LoadInput(value)
	value = processor.CheckInput(value)
	value = processor.NormalizeValue(value)
	value = processor.MapFields(value)
	value = processor.RouteValue(value)
	value = processor.StampEvent(value)
	value = processor.CountItems(value)
	value = processor.MergeParts(value)
	value = processor.FilterNoise(value)
	value = processor.SortRecords(value)
	value = processor.EncodePayload(value)
	value = processor.DecodeReply(value)
	value = processor.OpenChannel(value)
	value = processor.CloseChannel(value)
	value = processor.FlushBuffer(value)
	value = processor.SaveResult(value)
	return value
}
MetricVanilla (Small)MCP (Small)Δ (Small)Vanilla (Large)MCP (Large)Δ (Large)
Wall-Clock Latency86.88s261.22s+200.7%———
Process Start → First Event0.24s0.23s————
First Event → First Tool Call5.40s5.77s————
MCP Initialize → First Semantic Call——————
MCP Server Start → Initialize——————
Top-Level User Turns550%———
Internal Tool Cycles1639+143.8%———
Initial Load / Discovery Turns40-100.0%———
MCP Discovery / Schema Turns00————
Tool Invocations (per run)1639+143.8%———
Output Tokens71795414-24.6%———
Reasoning / Thinking Tokens0220————
Total Input Tokens13588603346094+146.2%———
Cached Input Tokens12736003173376+149.2%———
Uncached Input Tokens85260172718+102.6%———
Cost0.62131.2956+108.5%———
Cached vs Uncached Token Ratio14.94:118.37:1+23.0%———
Oracle L1: Mutation PolicyPASSPASS————
Oracle L2: AST InvariantsPASSPASS————
Oracle L3: Clean BuildPASSPASS————
Oracle L4: Verification TestPASSPASS————
Semantic Tool Invocation Verified (per run)N/APASS————
Baseline vs Semedit Agentic in Small Context
  • Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File pipeline/workflow.go modified (41 lines -> 41 lines)
  • Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File pipeline/workflow.go modified (41 lines -> 41 lines)
#VanillaSemedit MCP
1✓ ✓
/bin/zsh -lc "cat rename-plan.md && \
rg -n \"Processor|func \\(.*Processor\\)\" --glob '*.go'"
✓ ✓
/bin/zsh -lc "pwd && \
rg --files -g 'rename-plan.md' -g 'PROJECT_BRIEF.md' -g 'AGENTS.md' -g 'AGENTS.override.md' -g 'go.mod' -g '*.go' | head -80"
2✓ ✓
/bin/zsh -lc "cat pipeline/workflow.go && \
rg -n \"LoadInput\" . --glob '"'!rename-plan.md'"' --glob '"'!go.mod'"'"
✓ ✓
/bin/zsh -lc 'cat rename-plan.md && \
cat AGENTS.override.md && \
rg --files | head -80'
3file_change (✓ ✓)semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.LoadInput"
}
4✓ ✓
/bin/zsh -lc 'go test ./...'
semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.LoadInput",
  "to": "ReadRequest"
}
5✓ ✓
/bin/zsh -lc "rg -n \"CheckInput\" --glob '*.go' ."
✓ ✓
/bin/zsh -lc 'git diff -- pipeline/workflow.go pipeline/workflow_test.go rename-plan.md go.mod && \
go test ./...'
6file_change (✓ ✓)semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.CheckInput"
}
7✓ ✓
/bin/zsh -lc 'go test ./...'
semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.CheckInput",
  "to": "ValidateRequest"
}
8✓ ✓
/bin/zsh -lc "rg -n \"NormalizeValue|MapFields\" --glob '*.go' ."
✓ ✓
/bin/zsh -lc 'go test ./...'
9file_change (✓ ✓)semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.NormalizeValue"
}
10✓ ✓
/bin/zsh -lc 'go test ./...'
semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.NormalizeValue",
  "to": "CanonicalizeValue"
}
11✓ ✓
/bin/zsh -lc "rg -n \"RouteValue|StampEvent|CountItems|MergeParts\" --glob '*.go' ."
semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.MapFields"
}
12file_change (✓ ✓)semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.MapFields",
  "to": "ProjectFields"
}
13✓ ✓
/bin/zsh -lc 'go test ./...'
✓ ✓
/bin/zsh -lc 'go test ./...'
14✓ ✓
/bin/zsh -lc "rg -n \"FilterNoise|SortRecords|EncodePayload|DecodeReply|OpenChannel|CloseChannel|FlushBuffer|SaveResult\" --glob '*.go' ."
semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.RouteValue"
}
15file_change (✓ ✓)semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.RouteValue",
  "to": "DispatchValue"
}
16✓ ✓
/bin/zsh -lc 'go test ./...'
semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.StampEvent"
}
17—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.StampEvent",
  "to": "AnnotateEvent"
}
18—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.CountItems"
}
19—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.CountItems",
  "to": "TallyItems"
}
20—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.MergeParts"
}
21—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.MergeParts",
  "to": "CombineParts"
}
22—✓ ✓
/bin/zsh -lc 'go test ./...'
23—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.FilterNoise"
}
24—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.FilterNoise",
  "to": "PruneNoise"
}
25—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.SortRecords"
}
26—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.SortRecords",
  "to": "OrderRecords"
}
27—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.EncodePayload"
}
28—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.EncodePayload",
  "to": "MarshalPayload"
}
29—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.DecodeReply"
}
30—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.DecodeReply",
  "to": "ParseReply"
}
31—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.OpenChannel"
}
32—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.OpenChannel",
  "to": "ConnectChannel"
}
33—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.CloseChannel"
}
34—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.CloseChannel",
  "to": "ReleaseChannel"
}
35—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.FlushBuffer"
}
36—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.FlushBuffer",
  "to": "DrainBuffer"
}
37—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.SaveResult"
}
38—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.SaveResult",
  "to": "PersistResult"
}
39—✓ ✓
/bin/zsh -lc 'go test ./...'
Baseline vs Semedit Agentic in Large Context
#VanillaSemedit MCP
1not publishednot published

default prompt · prescriptive MCP instructions · write semedit restriction

SettingValue
Test casetask-13-rename-followup-scale
Targetcodex/gpt-6-luna/medium
Prompt variantdefault
MCP server instructionsprescriptive
Semedit arm restrictionwrite
Fixturetestdata/bench/task_13_rename_followup_scale.txtar

Vanilla LLM Prompt:

Do not edit tests. You are forbidden to modify protected files: “go.mod”, “rename-plan.md”.

Apply only row 1 of rename-plan.md. Rename that Processor method and update its call sites. Leave rows 2 through 16 unchanged. Run go test ./… before finishing. 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”, “rename-plan.md”.

Apply only row 1 of rename-plan.md. Rename that Processor method and update its call sites. Leave rows 2 through 16 unchanged. Run go test ./… before finishing. 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 pipeline provides independent processing stages for the rename scale benchmark.
package pipeline

type Processor struct{}

func (Processor) LoadInput(value int) int { return value + 1 }
func (Processor) CheckInput(value int) int { return value + 2 }
func (Processor) NormalizeValue(value int) int { return value + 3 }
func (Processor) MapFields(value int) int { return value + 4 }
func (Processor) RouteValue(value int) int { return value + 5 }
func (Processor) StampEvent(value int) int { return value + 6 }
func (Processor) CountItems(value int) int { return value + 7 }
func (Processor) MergeParts(value int) int { return value + 8 }
func (Processor) FilterNoise(value int) int { return value + 9 }
func (Processor) SortRecords(value int) int { return value + 10 }
func (Processor) EncodePayload(value int) int { return value + 11 }
func (Processor) DecodeReply(value int) int { return value + 12 }
func (Processor) OpenChannel(value int) int { return value + 13 }
func (Processor) CloseChannel(value int) int { return value + 14 }
func (Processor) FlushBuffer(value int) int { return value + 15 }
func (Processor) SaveResult(value int) int { return value + 16 }

func Run(processor Processor, value int) int {
	value = processor.LoadInput(value)
	value = processor.CheckInput(value)
	value = processor.NormalizeValue(value)
	value = processor.MapFields(value)
	value = processor.RouteValue(value)
	value = processor.StampEvent(value)
	value = processor.CountItems(value)
	value = processor.MergeParts(value)
	value = processor.FilterNoise(value)
	value = processor.SortRecords(value)
	value = processor.EncodePayload(value)
	value = processor.DecodeReply(value)
	value = processor.OpenChannel(value)
	value = processor.CloseChannel(value)
	value = processor.FlushBuffer(value)
	value = processor.SaveResult(value)
	return value
}
MetricVanilla (Small)MCP (Small)Δ (Small)Vanilla (Large)MCP (Large)Δ (Large)
Wall-Clock Latency56.70s235.60s+315.5%———
Process Start → First Event0.23s0.14s————
First Event → First Tool Call5.48s7.99s————
MCP Initialize → First Semantic Call——————
MCP Server Start → Initialize——————
Top-Level User Turns550%———
Internal Tool Cycles842+425.0%———
Initial Load / Discovery Turns00————
MCP Discovery / Schema Turns00————
Tool Invocations (per run)842+425.0%———
Output Tokens47465074+6.9%———
Reasoning / Thinking Tokens27536-86.9%———
Total Input Tokens9189413107171+238.1%———
Cached Input Tokens8506882917888+243.0%———
Uncached Input Tokens68253189283+177.3%———
Cost0.44611.2666+183.9%———
Cached vs Uncached Token Ratio12.46:115.42:1+23.7%———
Oracle L1: Mutation PolicyPASSPASS————
Oracle L2: AST InvariantsPASSPASS————
Oracle L3: Clean BuildPASSPASS————
Oracle L4: Verification TestPASSPASS————
Semantic Tool Invocation Verified (per run)N/APASS————
Baseline vs Semedit Agentic in Small Context
  • Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File pipeline/workflow.go modified (41 lines -> 41 lines)
  • Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File pipeline/workflow.go modified (41 lines -> 41 lines)
#VanillaSemedit MCP
1✓ ✓
/bin/zsh -lc "cat rename-plan.md && \
rg -n \"Processor|Rename\" --glob '*.go'"
✓ ✓
/bin/zsh -lc 'cat rename-plan.md'
2✓ ✓
/bin/zsh -lc 'cat pipeline/workflow.go && \
git status --short'
semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "LoadInput"
}
3✓ ✓
/bin/zsh -lc "python3 -c 'from pathlib import Path; p=Path(\"pipeline/workflow.go\"); s=p.read_text(); s=s.replace(\"LoadInput\", \"ReadRequest\"); p.write_text(s)'"
semedit/semantic_inspect_symbol (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.LoadInput"
}
4✓ ✓
/bin/zsh -lc 'go test ./...'
semedit/semantic_find_references (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.LoadInput"
}
5✓ ✓
/bin/zsh -lc "python3 -c 'from pathlib import Path; p=Path(\"pipeline/workflow.go\"); s=p.read_text(); s=s.replace(\"CheckInput\", \"ValidateRequest\"); p.write_text(s)' && \
go test ./..."
semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.LoadInput",
  "to": "ReadRequest"
}
6✓ ✓
/bin/zsh -lc "python3 -c 'from pathlib import Path; p=Path(\"pipeline/workflow.go\"); s=p.read_text(); s=s.replace(\"NormalizeValue\", \"CanonicalizeValue\").replace(\"MapFields\", \"ProjectFields\"); p.write_text(s)' && \
go test ./..."
✓ ✓
/bin/zsh -lc 'git diff -- go.mod rename-plan.md && \
git status --short && \
git diff --'
7✓ ✓
/bin/zsh -lc "python3 -c 'from pathlib import Path; p=Path(\"pipeline/workflow.go\"); s=p.read_text(); s=s.replace(\"RouteValue\", \"DispatchValue\").replace(\"StampEvent\", \"AnnotateEvent\").replace(\"CountItems\", \"TallyItems\").replace(\"MergeParts\", \"CombineParts\"); p.write_text(s)' && \
go test ./..."
✓ ✓
/bin/zsh -lc 'go test ./...'
8✓ ✓
/bin/zsh -lc "python3 -c 'from pathlib import Path; p=Path(\"pipeline/workflow.go\"); s=p.read_text(); pairs=((\"FilterNoise\", \"PruneNoise\"), (\"SortRecords\", \"OrderRecords\"), (\"EncodePayload\", \"MarshalPayload\"), (\"DecodeReply\", \"ParseReply\"), (\"OpenChannel\", \"ConnectChannel\"), (\"CloseChannel\", \"ReleaseChannel\"), (\"FlushBuffer\", \"DrainBuffer\"), (\"SaveResult\", \"PersistResult\"));
for old, new in pairs: s=s.replace(old, new)
p.write_text(s)' && \
go test ./..."
semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "CheckInput"
}
9—semedit/semantic_find_references (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.CheckInput"
}
10—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.CheckInput",
  "to": "ValidateRequest"
}
11—✓ ✓
/bin/zsh -lc 'go test ./...'
12—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "NormalizeValue"
}
13—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "MapFields"
}
14—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.NormalizeValue",
  "to": "CanonicalizeValue"
}
15—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.MapFields",
  "to": "ProjectFields"
}
16—✓ ✓
/bin/zsh -lc 'go test ./...'
17—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "RouteValue"
}
18—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "StampEvent"
}
19—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "CountItems"
}
20—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "MergeParts"
}
21—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.RouteValue",
  "to": "DispatchValue"
}
22—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.StampEvent",
  "to": "AnnotateEvent"
}
23—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.CountItems",
  "to": "TallyItems"
}
24—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.MergeParts",
  "to": "CombineParts"
}
25—✓ ✓
/bin/zsh -lc 'go test ./...'
26—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "SortRecords"
}
27—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "FilterNoise"
}
28—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "EncodePayload"
}
29—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "DecodeReply"
}
30—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "OpenChannel"
}
31—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "CloseChannel"
}
32—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "FlushBuffer"
}
33—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "SaveResult"
}
34—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.FilterNoise",
  "to": "PruneNoise"
}
35—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.SortRecords",
  "to": "OrderRecords"
}
36—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.EncodePayload",
  "to": "MarshalPayload"
}
37—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.DecodeReply",
  "to": "ParseReply"
}
38—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.OpenChannel",
  "to": "ConnectChannel"
}
39—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.CloseChannel",
  "to": "ReleaseChannel"
}
40—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.FlushBuffer",
  "to": "DrainBuffer"
}
41—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.SaveResult",
  "to": "PersistResult"
}
42—✓ ✓
/bin/zsh -lc 'go test ./...'
Baseline vs Semedit Agentic in Large Context
#VanillaSemedit MCP
1not publishednot published

default prompt · prescriptive MCP instructions · write semedit restriction

SettingValue
Test casetask-13-rename-followup-scale
Targetcodex/gpt-6-luna/medium
Prompt variantdefault
MCP server instructionsprescriptive
Semedit arm restrictionwrite
Fixturetestdata/bench/task_13_rename_followup_scale.txtar

Vanilla LLM Prompt:

Do not edit tests. You are forbidden to modify protected files: “go.mod”, “rename-plan.md”.

Apply only row 1 of rename-plan.md. Rename that Processor method and update its call sites. Leave rows 2 through 16 unchanged. Run go test ./… before finishing. 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”, “rename-plan.md”.

Apply only row 1 of rename-plan.md. Rename that Processor method and update its call sites. Leave rows 2 through 16 unchanged. Run go test ./… before finishing. 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 pipeline provides independent processing stages for the rename scale benchmark.
package pipeline

type Processor struct{}

func (Processor) LoadInput(value int) int { return value + 1 }
func (Processor) CheckInput(value int) int { return value + 2 }
func (Processor) NormalizeValue(value int) int { return value + 3 }
func (Processor) MapFields(value int) int { return value + 4 }
func (Processor) RouteValue(value int) int { return value + 5 }
func (Processor) StampEvent(value int) int { return value + 6 }
func (Processor) CountItems(value int) int { return value + 7 }
func (Processor) MergeParts(value int) int { return value + 8 }
func (Processor) FilterNoise(value int) int { return value + 9 }
func (Processor) SortRecords(value int) int { return value + 10 }
func (Processor) EncodePayload(value int) int { return value + 11 }
func (Processor) DecodeReply(value int) int { return value + 12 }
func (Processor) OpenChannel(value int) int { return value + 13 }
func (Processor) CloseChannel(value int) int { return value + 14 }
func (Processor) FlushBuffer(value int) int { return value + 15 }
func (Processor) SaveResult(value int) int { return value + 16 }

func Run(processor Processor, value int) int {
	value = processor.LoadInput(value)
	value = processor.CheckInput(value)
	value = processor.NormalizeValue(value)
	value = processor.MapFields(value)
	value = processor.RouteValue(value)
	value = processor.StampEvent(value)
	value = processor.CountItems(value)
	value = processor.MergeParts(value)
	value = processor.FilterNoise(value)
	value = processor.SortRecords(value)
	value = processor.EncodePayload(value)
	value = processor.DecodeReply(value)
	value = processor.OpenChannel(value)
	value = processor.CloseChannel(value)
	value = processor.FlushBuffer(value)
	value = processor.SaveResult(value)
	return value
}
MetricVanilla (Small)MCP (Small)Δ (Small)Vanilla (Large)MCP (Large)Δ (Large)
Wall-Clock Latency73.70s225.54s+206.0%———
Process Start → First Event0.13s0.14s————
First Event → First Tool Call4.79s5.71s————
MCP Initialize → First Semantic Call——————
MCP Server Start → Initialize——————
Top-Level User Turns550%———
Internal Tool Cycles1439+178.6%———
Initial Load / Discovery Turns00————
MCP Discovery / Schema Turns00————
Tool Invocations (per run)1439+178.6%———
Output Tokens67435308-21.3%———
Reasoning / Thinking Tokens455605+33.0%———
Total Input Tokens13293382410813+81.4%———
Cached Input Tokens12428802257664+81.6%———
Uncached Input Tokens86458153149+77.1%———
Cost0.61681.0212+65.6%———
Cached vs Uncached Token Ratio14.38:114.74:1+2.5%———
Oracle L1: Mutation PolicyPASSPASS————
Oracle L2: AST InvariantsPASSPASS————
Oracle L3: Clean BuildPASSPASS————
Oracle L4: Verification TestPASSPASS————
Semantic Tool Invocation Verified (per run)N/APASS————
Baseline vs Semedit Agentic in Small Context
  • Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File pipeline/workflow.go modified (41 lines -> 41 lines)
  • Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File pipeline/workflow.go modified (41 lines -> 41 lines)
#VanillaSemedit MCP
1✓ ✓
/bin/zsh -lc "cat rename-plan.md && \
git status --short && \
rg --files -g 'AGENTS.md' -g 'AGENTS.override.md'"
✓ ✓
/bin/zsh -lc "cat rename-plan.md && \
printf '\\n--- files ---\\n' && \
rg --files -g 'AGENTS.md' -g '*.go' | head -80"
2✓ ✓
/bin/zsh -lc "rg -n '\\bLoadInput\\b|func \\(.*Processor.*\\) ' --glob '*.go'"
semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.LoadInput"
}
3✓ ✓
/bin/zsh -lc "rg -n '\\bLoadInput\\b' . --glob '"'!rename-plan.md'"'"
semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.LoadInput",
  "to": "ReadRequest"
}
4✓ ✓
/bin/zsh -lc "python3 -c 'from pathlib import Path; p=Path(\"pipeline/workflow.go\"); s=p.read_text(); s=s.replace(\"LoadInput\", \"ReadRequest\"); p.write_text(s)'"
✓ ✓
/bin/zsh -lc 'git diff -- pipeline/workflow.go rename-plan.md && \
go test ./...'
5✓ ✓
/bin/zsh -lc 'go test ./...'
✓ ✓
/bin/zsh -lc "git status --short && \
rg -n 'LoadInput|ReadRequest' pipeline/workflow.go pipeline/workflow_test.go"
6✓ ✓
/bin/zsh -lc "git diff -- pipeline/workflow.go && \
rg -n '\\bLoadInput\\b|\\bReadRequest\\b' --glob '*.go'"
semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.CheckInput"
}
7✓ ✓
/bin/zsh -lc "rg -n '\\bCheckInput\\b' . --glob '"'!rename-plan.md'"' --glob '"'!**/*_test.go'"'"
semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.CheckInput",
  "to": "ValidateRequest"
}
8✓ ✓
/bin/zsh -lc "python3 -c 'from pathlib import Path; p=Path(\"pipeline/workflow.go\"); s=p.read_text(); s=s.replace(\"CheckInput\", \"ValidateRequest\"); p.write_text(s)' && \
go test ./..."
✓ ✓
/bin/zsh -lc 'go test ./...'
9✓ ✓
/bin/zsh -lc "rg -n '\\b(NormalizeValue|MapFields)\\b' . --glob '"'!rename-plan.md'"' --glob '"'!**/*_test.go'"'"
semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.NormalizeValue"
}
10✓ ✓
/bin/zsh -lc "python3 -c 'from pathlib import Path; p=Path(\"pipeline/workflow.go\"); s=p.read_text(); s=s.replace(\"NormalizeValue\", \"CanonicalizeValue\").replace(\"MapFields\", \"ProjectFields\"); p.write_text(s)' && \
go test ./..."
semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.MapFields"
}
11✓ ✓
/bin/zsh -lc "rg -n '\\b(RouteValue|StampEvent|CountItems|MergeParts)\\b' . --glob '"'!rename-plan.md'"' --glob '"'!**/*_test.go'"'"
semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.NormalizeValue",
  "to": "CanonicalizeValue"
}
12✓ ✓
/bin/zsh -lc "python3 -c 'from pathlib import Path; p=Path(\"pipeline/workflow.go\"); s=p.read_text();
for old, new in ((\"RouteValue\", \"DispatchValue\"), (\"StampEvent\", \"AnnotateEvent\"), (\"CountItems\", \"TallyItems\"), (\"MergeParts\", \"CombineParts\")):
 s=s.replace(old, new)
p.write_text(s)' && \
go test ./..."
semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.MapFields",
  "to": "ProjectFields"
}
13✓ ✓
/bin/zsh -lc "rg -n '\\b(FilterNoise|SortRecords|EncodePayload|DecodeReply|OpenChannel|CloseChannel|FlushBuffer|SaveResult)\\b' . --glob '"'!rename-plan.md'"' --glob '"'!**/*_test.go'"'"
✓ ✓
/bin/zsh -lc 'go test ./...'
14✓ ✓
/bin/zsh -lc "python3 -c 'from pathlib import Path; p=Path(\"pipeline/workflow.go\"); s=p.read_text();
for old, new in ((\"FilterNoise\", \"PruneNoise\"), (\"SortRecords\", \"OrderRecords\"), (\"EncodePayload\", \"MarshalPayload\"), (\"DecodeReply\", \"ParseReply\"), (\"OpenChannel\", \"ConnectChannel\"), (\"CloseChannel\", \"ReleaseChannel\"), (\"FlushBuffer\", \"DrainBuffer\"), (\"SaveResult\", \"PersistResult\")):
 s=s.replace(old, new)
p.write_text(s)' && \
go test ./..."
semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.RouteValue"
}
15—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.StampEvent"
}
16—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.CountItems"
}
17—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.MergeParts"
}
18—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.RouteValue",
  "to": "DispatchValue"
}
19—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.StampEvent",
  "to": "AnnotateEvent"
}
20—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.CountItems",
  "to": "TallyItems"
}
21—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.MergeParts",
  "to": "CombineParts"
}
22—✓ ✓
/bin/zsh -lc 'go test ./...'
23—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.FilterNoise"
}
24—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.SortRecords"
}
25—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.EncodePayload"
}
26—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.DecodeReply"
}
27—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.OpenChannel"
}
28—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.CloseChannel"
}
29—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.FlushBuffer"
}
30—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.SaveResult"
}
31—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.FilterNoise",
  "to": "PruneNoise"
}
32—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.SortRecords",
  "to": "OrderRecords"
}
33—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.EncodePayload",
  "to": "MarshalPayload"
}
34—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.DecodeReply",
  "to": "ParseReply"
}
35—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.OpenChannel",
  "to": "ConnectChannel"
}
36—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.CloseChannel",
  "to": "ReleaseChannel"
}
37—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.FlushBuffer",
  "to": "DrainBuffer"
}
38—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.SaveResult",
  "to": "PersistResult"
}
39—✓ ✓
/bin/zsh -lc 'go test ./...'
Baseline vs Semedit Agentic in Large Context
#VanillaSemedit MCP
1not publishednot published

default prompt · prescriptive MCP instructions · write semedit restriction

SettingValue
Test casetask-13-rename-followup-scale
Targetcodex/gpt-6-luna/medium
Prompt variantdefault
MCP server instructionsprescriptive
Semedit arm restrictionwrite
Fixturetestdata/bench/task_13_rename_followup_scale.txtar

Vanilla LLM Prompt:

Do not edit tests. You are forbidden to modify protected files: “go.mod”, “rename-plan.md”.

Apply only row 1 of rename-plan.md. Rename that Processor method and update its call sites. Leave rows 2 through 16 unchanged. Run go test ./… before finishing. 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”, “rename-plan.md”.

Apply only row 1 of rename-plan.md. Rename that Processor method and update its call sites. Leave rows 2 through 16 unchanged. Run go test ./… before finishing. 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 pipeline provides independent processing stages for the rename scale benchmark.
package pipeline

type Processor struct{}

func (Processor) LoadInput(value int) int { return value + 1 }
func (Processor) CheckInput(value int) int { return value + 2 }
func (Processor) NormalizeValue(value int) int { return value + 3 }
func (Processor) MapFields(value int) int { return value + 4 }
func (Processor) RouteValue(value int) int { return value + 5 }
func (Processor) StampEvent(value int) int { return value + 6 }
func (Processor) CountItems(value int) int { return value + 7 }
func (Processor) MergeParts(value int) int { return value + 8 }
func (Processor) FilterNoise(value int) int { return value + 9 }
func (Processor) SortRecords(value int) int { return value + 10 }
func (Processor) EncodePayload(value int) int { return value + 11 }
func (Processor) DecodeReply(value int) int { return value + 12 }
func (Processor) OpenChannel(value int) int { return value + 13 }
func (Processor) CloseChannel(value int) int { return value + 14 }
func (Processor) FlushBuffer(value int) int { return value + 15 }
func (Processor) SaveResult(value int) int { return value + 16 }

func Run(processor Processor, value int) int {
	value = processor.LoadInput(value)
	value = processor.CheckInput(value)
	value = processor.NormalizeValue(value)
	value = processor.MapFields(value)
	value = processor.RouteValue(value)
	value = processor.StampEvent(value)
	value = processor.CountItems(value)
	value = processor.MergeParts(value)
	value = processor.FilterNoise(value)
	value = processor.SortRecords(value)
	value = processor.EncodePayload(value)
	value = processor.DecodeReply(value)
	value = processor.OpenChannel(value)
	value = processor.CloseChannel(value)
	value = processor.FlushBuffer(value)
	value = processor.SaveResult(value)
	return value
}
MetricVanilla (Small)MCP (Small)Δ (Small)Vanilla (Large)MCP (Large)Δ (Large)
Wall-Clock Latency60.08s233.85s+289.3%———
Process Start → First Event0.13s0.14s————
First Event → First Tool Call5.24s6.03s————
MCP Initialize → First Semantic Call——————
MCP Server Start → Initialize——————
Top-Level User Turns550%———
Internal Tool Cycles838+375.0%———
Initial Load / Discovery Turns00————
MCP Discovery / Schema Turns00————
Tool Invocations (per run)838+375.0%———
Output Tokens47533956-16.8%———
Reasoning / Thinking Tokens4800-100.0%———
Total Input Tokens9135032864957+213.6%———
Cached Input Tokens8404482721536+223.8%———
Uncached Input Tokens73055143421+96.3%———
Cost0.45821.0884+137.6%———
Cached vs Uncached Token Ratio11.50:118.98:1+64.9%———
Oracle L1: Mutation PolicyPASSPASS————
Oracle L2: AST InvariantsPASSPASS————
Oracle L3: Clean BuildPASSPASS————
Oracle L4: Verification TestPASSPASS————
Semantic Tool Invocation Verified (per run)N/APASS————
Baseline vs Semedit Agentic in Small Context
  • Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File pipeline/workflow.go modified (41 lines -> 41 lines)
  • Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File pipeline/workflow.go modified (41 lines -> 41 lines)
#VanillaSemedit MCP
1✓ ✓
/bin/zsh -lc "pwd && \
rg --files -g 'rename-plan.md' -g 'go.mod' -g 'AGENTS.md' -g 'AGENTS.override.md' && \
git status --short"
✓ ✓
/bin/zsh -lc 'cat rename-plan.md && \
git status --short'
2✓ ✓
/bin/zsh -lc "cat rename-plan.md && \
rg -n 'Processor|[A-Z][A-Za-z]+\\(' --glob '*.go' | head -n 200"
semedit/semantic_lookup (✓ ✓)
{
  "symbol": "LoadInput"
}
3✓ ✓
/bin/zsh -lc "python3 -c 'from pathlib import Path; import os, tempfile; p=Path(\"pipeline/workflow.go\"); s=p.read_text(); s2=s.replace(\"LoadInput\", \"ReadRequest\"); assert s2 "'!= s; fd, name=tempfile.mkstemp(dir=str(p.parent), prefix=".workflow.go."); f=os.fdopen(fd,"w"); f.write(s2); f.flush(); os.fsync(f.fileno()); f.close(); os.replace(name,p)'"' && \
git diff -- pipeline/workflow.go rename-plan.md go.mod && \
go test ./..."
semedit/semantic_rename (✓ ✓)
{
  "symbol": "Processor.LoadInput",
  "to": "ReadRequest"
}
4✓ ✓
/bin/zsh -lc "git status --short -- pipeline/workflow.go rename-plan.md go.mod && \
git diff -- pipeline/workflow.go && \
rg -n 'LoadInput|ReadRequest|CheckInput' pipeline/workflow.go"
✓ ✓
/bin/zsh -lc 'go test ./...'
5✓ ✓
/bin/zsh -lc "python3 -c 'from pathlib import Path; import os, tempfile; p=Path(\"pipeline/workflow.go\"); s=p.read_text(); s2=s.replace(\"CheckInput\", \"ValidateRequest\"); assert s2 "'!= s; fd, name=tempfile.mkstemp(dir=str(p.parent), prefix=".workflow.go."); f=os.fdopen(fd,"w"); f.write(s2); f.flush(); os.fsync(f.fileno()); f.close(); os.replace(name,p)'"' && \
go test ./..."
semedit/semantic_lookup (✓ ✓)
{
  "symbol": "CheckInput"
}
6✓ ✓
/bin/zsh -lc "python3 -c 'from pathlib import Path; import os, tempfile; p=Path(\"pipeline/workflow.go\"); s=p.read_text(); s2=s.replace(\"NormalizeValue\", \"CanonicalizeValue\").replace(\"MapFields\", \"ProjectFields\"); assert s2 "'!= s; fd, name=tempfile.mkstemp(dir=str(p.parent), prefix=".workflow.go."); f=os.fdopen(fd,"w"); f.write(s2); f.flush(); os.fsync(f.fileno()); f.close(); os.replace(name,p)'"' && \
go test ./..."
semedit/semantic_rename (✓ ✓)
{
  "symbol": "Processor.CheckInput",
  "to": "ValidateRequest"
}
7✓ ✓
/bin/zsh -lc "python3 -c 'from pathlib import Path; import os, tempfile; p=Path(\"pipeline/workflow.go\"); s=p.read_text(); pairs=((\"RouteValue\", \"DispatchValue\"),(\"StampEvent\", \"AnnotateEvent\"),(\"CountItems\", \"TallyItems\"),(\"MergeParts\", \"CombineParts\")); s2=s; [None for old,new in pairs if old in s2]; assert all(old in s2 for old,new in pairs); [None for old,new in pairs if (s2:=s2.replace(old,new))]; fd, name=tempfile.mkstemp(dir=str(p.parent), prefix=\".workflow.go.\"); f=os.fdopen(fd,\"w\"); f.write(s2); f.flush(); os.fsync(f.fileno()); f.close(); os.replace(name,p)' && \
go test ./..."
✓ ✓
/bin/zsh -lc 'go test ./...'
8✓ ✓
/bin/zsh -lc "python3 -c 'from pathlib import Path; import os, tempfile; p=Path(\"pipeline/workflow.go\"); s=p.read_text(); pairs=((\"FilterNoise\", \"PruneNoise\"),(\"SortRecords\", \"OrderRecords\"),(\"EncodePayload\", \"MarshalPayload\"),(\"DecodeReply\", \"ParseReply\"),(\"OpenChannel\", \"ConnectChannel\"),(\"CloseChannel\", \"ReleaseChannel\"),(\"FlushBuffer\", \"DrainBuffer\"),(\"SaveResult\", \"PersistResult\")); assert all(old in s for old,new in pairs); s2=s
for old,new in pairs: s2=s2.replace(old,new)
fd, name=tempfile.mkstemp(dir=str(p.parent), prefix=\".workflow.go.\"); f=os.fdopen(fd,\"w\"); f.write(s2); f.flush(); os.fsync(f.fileno()); f.close(); os.replace(name,p)' && \
go test ./..."
semedit/semantic_lookup (✓ ✓)
{
  "symbol": "NormalizeValue"
}
9—semedit/semantic_rename (✓ ✓)
{
  "symbol": "Processor.NormalizeValue",
  "to": "CanonicalizeValue"
}
10—semedit/semantic_lookup (✓ ✓)
{
  "symbol": "MapFields"
}
11—semedit/semantic_rename (✓ ✓)
{
  "symbol": "Processor.MapFields",
  "to": "ProjectFields"
}
12—✓ ✓
/bin/zsh -lc 'go test ./...'
13—semedit/semantic_lookup (✓ ✓)
{
  "symbol": "RouteValue"
}
14—semedit/semantic_rename (✓ ✓)
{
  "symbol": "Processor.RouteValue",
  "to": "DispatchValue"
}
15—semedit/semantic_lookup (✓ ✓)
{
  "symbol": "StampEvent"
}
16—semedit/semantic_rename (✓ ✓)
{
  "symbol": "Processor.StampEvent",
  "to": "AnnotateEvent"
}
17—semedit/semantic_lookup (✓ ✓)
{
  "symbol": "CountItems"
}
18—semedit/semantic_rename (✓ ✓)
{
  "symbol": "Processor.CountItems",
  "to": "TallyItems"
}
19—semedit/semantic_lookup (✓ ✓)
{
  "symbol": "MergeParts"
}
20—semedit/semantic_rename (✓ ✓)
{
  "symbol": "Processor.MergeParts",
  "to": "CombineParts"
}
21—✓ ✓
/bin/zsh -lc 'go test ./...'
22—semedit/semantic_lookup (✓ ✓)
{
  "symbol": "FilterNoise"
}
23—semedit/semantic_rename (✓ ✓)
{
  "symbol": "Processor.FilterNoise",
  "to": "PruneNoise"
}
24—semedit/semantic_lookup (✓ ✓)
{
  "symbol": "SortRecords"
}
25—semedit/semantic_rename (✓ ✓)
{
  "symbol": "Processor.SortRecords",
  "to": "OrderRecords"
}
26—semedit/semantic_lookup (✓ ✓)
{
  "symbol": "EncodePayload"
}
27—semedit/semantic_rename (✓ ✓)
{
  "symbol": "Processor.EncodePayload",
  "to": "MarshalPayload"
}
28—semedit/semantic_lookup (✓ ✓)
{
  "symbol": "DecodeReply"
}
29—semedit/semantic_rename (✓ ✓)
{
  "symbol": "Processor.DecodeReply",
  "to": "ParseReply"
}
30—semedit/semantic_lookup (✓ ✓)
{
  "symbol": "OpenChannel"
}
31—semedit/semantic_rename (✓ ✓)
{
  "symbol": "Processor.OpenChannel",
  "to": "ConnectChannel"
}
32—semedit/semantic_lookup (✓ ✓)
{
  "symbol": "CloseChannel"
}
33—semedit/semantic_rename (✓ ✓)
{
  "symbol": "Processor.CloseChannel",
  "to": "ReleaseChannel"
}
34—semedit/semantic_lookup (✓ ✓)
{
  "symbol": "FlushBuffer"
}
35—semedit/semantic_rename (✓ ✓)
{
  "symbol": "Processor.FlushBuffer",
  "to": "DrainBuffer"
}
36—semedit/semantic_lookup (✓ ✓)
{
  "symbol": "SaveResult"
}
37—semedit/semantic_rename (✓ ✓)
{
  "symbol": "Processor.SaveResult",
  "to": "PersistResult"
}
38—✓ ✓
/bin/zsh -lc 'go test ./...'
Baseline vs Semedit Agentic in Large Context
#VanillaSemedit MCP
1not publishednot published

default prompt · prescriptive MCP instructions · write semedit restriction

SettingValue
Test casetask-13-rename-followup-scale
Targetcodex/gpt-6-luna/medium
Prompt variantdefault
MCP server instructionsprescriptive
Semedit arm restrictionwrite
Fixturetestdata/bench/task_13_rename_followup_scale.txtar

Vanilla LLM Prompt:

Do not edit tests. You are forbidden to modify protected files: “go.mod”, “rename-plan.md”.

Apply only row 1 of rename-plan.md. Rename that Processor method and update its call sites. Leave rows 2 through 16 unchanged. Run go test ./… before finishing. 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”, “rename-plan.md”.

Apply only row 1 of rename-plan.md. Rename that Processor method and update its call sites. Leave rows 2 through 16 unchanged. Run go test ./… before finishing. 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 pipeline provides independent processing stages for the rename scale benchmark.
package pipeline

type Processor struct{}

func (Processor) LoadInput(value int) int { return value + 1 }
func (Processor) CheckInput(value int) int { return value + 2 }
func (Processor) NormalizeValue(value int) int { return value + 3 }
func (Processor) MapFields(value int) int { return value + 4 }
func (Processor) RouteValue(value int) int { return value + 5 }
func (Processor) StampEvent(value int) int { return value + 6 }
func (Processor) CountItems(value int) int { return value + 7 }
func (Processor) MergeParts(value int) int { return value + 8 }
func (Processor) FilterNoise(value int) int { return value + 9 }
func (Processor) SortRecords(value int) int { return value + 10 }
func (Processor) EncodePayload(value int) int { return value + 11 }
func (Processor) DecodeReply(value int) int { return value + 12 }
func (Processor) OpenChannel(value int) int { return value + 13 }
func (Processor) CloseChannel(value int) int { return value + 14 }
func (Processor) FlushBuffer(value int) int { return value + 15 }
func (Processor) SaveResult(value int) int { return value + 16 }

func Run(processor Processor, value int) int {
	value = processor.LoadInput(value)
	value = processor.CheckInput(value)
	value = processor.NormalizeValue(value)
	value = processor.MapFields(value)
	value = processor.RouteValue(value)
	value = processor.StampEvent(value)
	value = processor.CountItems(value)
	value = processor.MergeParts(value)
	value = processor.FilterNoise(value)
	value = processor.SortRecords(value)
	value = processor.EncodePayload(value)
	value = processor.DecodeReply(value)
	value = processor.OpenChannel(value)
	value = processor.CloseChannel(value)
	value = processor.FlushBuffer(value)
	value = processor.SaveResult(value)
	return value
}
MetricVanilla (Small)MCP (Small)Δ (Small)Vanilla (Large)MCP (Large)Δ (Large)
Wall-Clock Latency59.14s235.15s+297.6%———
Process Start → First Event0.13s0.13s————
First Event → First Tool Call4.99s8.11s————
MCP Initialize → First Semantic Call——————
MCP Server Start → Initialize——————
Top-Level User Turns550%———
Internal Tool Cycles746+557.1%———
Initial Load / Discovery Turns00————
MCP Discovery / Schema Turns00————
Tool Invocations (per run)746+557.1%———
Output Tokens39125820+48.8%———
Reasoning / Thinking Tokens175649+270.9%———
Total Input Tokens8117862590943+219.2%———
Cached Input Tokens7352322453760+233.7%———
Uncached Input Tokens76554137183+79.2%———
Cost0.42631.0373+143.3%———
Cached vs Uncached Token Ratio9.60:117.89:1+86.2%———
Oracle L1: Mutation PolicyPASSPASS————
Oracle L2: AST InvariantsPASSPASS————
Oracle L3: Clean BuildPASSPASS————
Oracle L4: Verification TestPASSPASS————
Semantic Tool Invocation Verified (per run)N/APASS————
Baseline vs Semedit Agentic in Small Context
  • Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File pipeline/workflow.go modified (41 lines -> 41 lines)
  • Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File pipeline/workflow.go modified (41 lines -> 41 lines)
#VanillaSemedit MCP
1✓ ✓
/bin/zsh -lc "cat rename-plan.md && \
rg -n \"Processor|<row1 method name if present>\" --glob '*.go' ."
✓ ✓
/bin/zsh -lc 'cat rename-plan.md'
2✓ ✓
/bin/zsh -lc "cat pipeline/workflow.go && \
rg -n \"\\.LoadInput\\(|LoadInput\\(\" --glob '*.go' ."
semedit/semantic_lookup (✓ ✓)
{
  "symbol": "LoadInput"
}
3✓ ✓
/bin/zsh -lc "python3 -c 'from pathlib import Path; p=Path(\"pipeline/workflow.go\"); s=p.read_text(); s=s.replace(\"LoadInput\", \"ReadRequest\"); p.write_text(s)' && \
go test ./..."
semedit/semantic_inspect_symbol (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "symbol": "Processor.LoadInput"
}
4✓ ✓
/bin/zsh -lc "python3 -c 'from pathlib import Path; p=Path(\"pipeline/workflow.go\"); s=p.read_text(); s=s.replace(\"CheckInput\", \"ValidateRequest\"); p.write_text(s)' && \
go test ./..."
semedit/semantic_find_references (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "symbol": "Processor.LoadInput"
}
5✓ ✓
/bin/zsh -lc "python3 -c 'from pathlib import Path; p=Path(\"pipeline/workflow.go\"); s=p.read_text(); s=s.replace(\"NormalizeValue\", \"CanonicalizeValue\").replace(\"MapFields\", \"ProjectFields\"); p.write_text(s)' && \
go test ./..."
semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.LoadInput",
  "to": "ReadRequest"
}
6✓ ✓
/bin/zsh -lc "python3 -c 'from pathlib import Path; p=Path(\"pipeline/workflow.go\"); s=p.read_text(); s=s.replace(\"RouteValue\", \"DispatchValue\").replace(\"StampEvent\", \"AnnotateEvent\").replace(\"CountItems\", \"TallyItems\").replace(\"MergeParts\", \"CombineParts\"); p.write_text(s)' && \
go test ./..."
✓ ✓
/bin/zsh -lc 'git diff -- pipeline/workflow.go go.mod rename-plan.md'
7✓ ✓
/bin/zsh -lc "python3 -c 'from pathlib import Path; p=Path(\"pipeline/workflow.go\"); s=p.read_text(); renames=[(\"FilterNoise\", \"PruneNoise\"), (\"SortRecords\", \"OrderRecords\"), (\"EncodePayload\", \"MarshalPayload\"), (\"DecodeReply\", \"ParseReply\"), (\"OpenChannel\", \"ConnectChannel\"), (\"CloseChannel\", \"ReleaseChannel\"), (\"FlushBuffer\", \"DrainBuffer\"), (\"SaveResult\", \"PersistResult\")];
for old,new in renames: s=s.replace(old,new)
p.write_text(s)' && \
go test ./..."
✓ ✓
/bin/zsh -lc 'go test ./...'
8—✓ ✓
/bin/zsh -lc "git status --short && \
rg -n 'ReadRequest|LoadInput' pipeline"
9—semedit/semantic_lookup (✓ ✓)
{
  "symbol": "CheckInput"
}
10—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.CheckInput",
  "to": "ValidateRequest"
}
11—✓ ✓
/bin/zsh -lc 'git diff -- pipeline/workflow.go go.mod rename-plan.md'
12—✓ ✓
/bin/zsh -lc 'go test ./...'
13—semedit/semantic_lookup (✓ ✓)
{
  "symbol": "NormalizeValue"
}
14—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.NormalizeValue",
  "to": "CanonicalizeValue"
}
15—semedit/semantic_lookup (✓ ✓)
{
  "symbol": "MapFields"
}
16—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.MapFields",
  "to": "ProjectFields"
}
17—✓ ✓
/bin/zsh -lc 'git diff -- pipeline/workflow.go go.mod rename-plan.md'
18—✓ ✓
/bin/zsh -lc 'go test ./...'
19—semedit/semantic_lookup (✓ ✓)
{
  "symbol": "RouteValue"
}
20—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.RouteValue",
  "to": "DispatchValue"
}
21—semedit/semantic_lookup (✓ ✓)
{
  "symbol": "StampEvent"
}
22—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.StampEvent",
  "to": "AnnotateEvent"
}
23—semedit/semantic_lookup (✓ ✓)
{
  "symbol": "CountItems"
}
24—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.CountItems",
  "to": "TallyItems"
}
25—semedit/semantic_lookup (✓ ✓)
{
  "symbol": "MergeParts"
}
26—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.MergeParts",
  "to": "CombineParts"
}
27—✓ ✓
/bin/zsh -lc 'git diff -- pipeline/workflow.go go.mod rename-plan.md'
28—✓ ✓
/bin/zsh -lc 'go test ./...'
29—semedit/semantic_lookup (✓ ✓)
{
  "symbol": "FilterNoise"
}
30—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.FilterNoise",
  "to": "PruneNoise"
}
31—semedit/semantic_lookup (✓ ✓)
{
  "symbol": "SortRecords"
}
32—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.SortRecords",
  "to": "OrderRecords"
}
33—semedit/semantic_lookup (✓ ✓)
{
  "symbol": "EncodePayload"
}
34—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.EncodePayload",
  "to": "MarshalPayload"
}
35—semedit/semantic_lookup (✓ ✓)
{
  "symbol": "DecodeReply"
}
36—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.DecodeReply",
  "to": "ParseReply"
}
37—semedit/semantic_lookup (✓ ✓)
{
  "symbol": "OpenChannel"
}
38—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.OpenChannel",
  "to": "ConnectChannel"
}
39—semedit/semantic_lookup (✓ ✓)
{
  "symbol": "CloseChannel"
}
40—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.CloseChannel",
  "to": "ReleaseChannel"
}
41—semedit/semantic_lookup (✓ ✓)
{
  "symbol": "FlushBuffer"
}
42—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.FlushBuffer",
  "to": "DrainBuffer"
}
43—semedit/semantic_lookup (✓ ✓)
{
  "symbol": "SaveResult"
}
44—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.SaveResult",
  "to": "PersistResult"
}
45—✓ ✓
/bin/zsh -lc 'git diff -- pipeline/workflow.go go.mod rename-plan.md'
46—✓ ✓
/bin/zsh -lc 'go test ./...'
Baseline vs Semedit Agentic in Large Context
#VanillaSemedit MCP
1not publishednot published

default prompt · prescriptive MCP instructions · write semedit restriction

SettingValue
Test casetask-13-rename-followup-scale
Targetcodex/gpt-6-luna/medium
Prompt variantdefault
MCP server instructionsprescriptive
Semedit arm restrictionwrite
Fixturetestdata/bench/task_13_rename_followup_scale.txtar

Vanilla LLM Prompt:

Do not edit tests. You are forbidden to modify protected files: “go.mod”, “rename-plan.md”.

Apply only row 1 of rename-plan.md. Rename that Processor method and update its call sites. Leave rows 2 through 16 unchanged. Run go test ./… before finishing. 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”, “rename-plan.md”.

Apply only row 1 of rename-plan.md. Rename that Processor method and update its call sites. Leave rows 2 through 16 unchanged. Run go test ./… before finishing. 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 pipeline provides independent processing stages for the rename scale benchmark.
package pipeline

type Processor struct{}

func (Processor) LoadInput(value int) int { return value + 1 }
func (Processor) CheckInput(value int) int { return value + 2 }
func (Processor) NormalizeValue(value int) int { return value + 3 }
func (Processor) MapFields(value int) int { return value + 4 }
func (Processor) RouteValue(value int) int { return value + 5 }
func (Processor) StampEvent(value int) int { return value + 6 }
func (Processor) CountItems(value int) int { return value + 7 }
func (Processor) MergeParts(value int) int { return value + 8 }
func (Processor) FilterNoise(value int) int { return value + 9 }
func (Processor) SortRecords(value int) int { return value + 10 }
func (Processor) EncodePayload(value int) int { return value + 11 }
func (Processor) DecodeReply(value int) int { return value + 12 }
func (Processor) OpenChannel(value int) int { return value + 13 }
func (Processor) CloseChannel(value int) int { return value + 14 }
func (Processor) FlushBuffer(value int) int { return value + 15 }
func (Processor) SaveResult(value int) int { return value + 16 }

func Run(processor Processor, value int) int {
	value = processor.LoadInput(value)
	value = processor.CheckInput(value)
	value = processor.NormalizeValue(value)
	value = processor.MapFields(value)
	value = processor.RouteValue(value)
	value = processor.StampEvent(value)
	value = processor.CountItems(value)
	value = processor.MergeParts(value)
	value = processor.FilterNoise(value)
	value = processor.SortRecords(value)
	value = processor.EncodePayload(value)
	value = processor.DecodeReply(value)
	value = processor.OpenChannel(value)
	value = processor.CloseChannel(value)
	value = processor.FlushBuffer(value)
	value = processor.SaveResult(value)
	return value
}
MetricVanilla (Small)MCP (Small)Δ (Small)Vanilla (Large)MCP (Large)Δ (Large)
Wall-Clock Latency66.72s218.50s+227.5%———
Process Start → First Event0.13s0.12s————
First Event → First Tool Call4.40s4.87s————
MCP Initialize → First Semantic Call——————
MCP Server Start → Initialize——————
Top-Level User Turns550%———
Internal Tool Cycles640+566.7%———
Initial Load / Discovery Turns00————
MCP Discovery / Schema Turns00————
Tool Invocations (per run)640+566.7%———
Output Tokens52794606-12.7%———
Reasoning / Thinking Tokens425480+12.9%———
Total Input Tokens7147681811888+153.5%———
Cached Input Tokens6494721697792+161.4%———
Uncached Input Tokens65296114096+74.7%———
Cost0.39690.7733+94.8%———
Cached vs Uncached Token Ratio9.95:114.88:1+49.6%———
Oracle L1: Mutation PolicyPASSPASS————
Oracle L2: AST InvariantsPASSPASS————
Oracle L3: Clean BuildPASSPASS————
Oracle L4: Verification TestPASSPASS————
Semantic Tool Invocation Verified (per run)N/APASS————
Baseline vs Semedit Agentic in Small Context
  • Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File pipeline/workflow.go modified (41 lines -> 41 lines)
  • Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File pipeline/workflow.go modified (41 lines -> 41 lines)
#VanillaSemedit MCP
1✓ ✓
/bin/zsh -lc "cat rename-plan.md && \
rg -n \"Processor|\" --glob '*.go'"
✓ ✓
/bin/zsh -lc "cat rename-plan.md && \
rg --files -g 'PROJECT_BRIEF.md' -g 'AGENTS.md' -g '*.go' | head -80"
2✓ ✓
/bin/zsh -lc "python3 - <<'PY'
from pathlib import Path
import os, tempfile, time
p = Path('pipeline/workflow.go')
s = p.read_text()
s2 = s.replace('func (Processor) LoadInput(', 'func (Processor) ReadRequest(').replace('processor.LoadInput(', 'processor.ReadRequest(')
if s2 == s or s.count('LoadInput') "'!= 2:
    raise SystemExit('"'unexpected LoadInput occurrence count')
fd, tmp = tempfile.mkstemp(dir=p.parent, prefix='.workflow.go.')
try:
    with os.fdopen(fd, 'w') as f:
        f.write(s2)
        f.flush()
        os.fsync(f.fileno())
    os.replace(tmp, p)
    os.utime(p, ns=(time.time_ns(), time.time_ns()))
finally:
    if os.path.exists(tmp):
        os.unlink(tmp)
PY
go test ./..."
semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "(*Processor).LoadInput"
}
3✓ ✓
/bin/zsh -lc "python3 - <<'PY'
from pathlib import Path
import os, tempfile, time
p = Path('pipeline/workflow.go')
s = p.read_text()
if s.count('CheckInput') "'!= 2:
    raise SystemExit('"'unexpected CheckInput occurrence count')
s2 = s.replace('CheckInput', 'ValidateRequest')
fd, tmp = tempfile.mkstemp(dir=p.parent, prefix='.workflow.go.')
try:
    with os.fdopen(fd, 'w') as f:
        f.write(s2)
        f.flush()
        os.fsync(f.fileno())
    os.replace(tmp, p)
    now = time.time_ns()
    os.utime(p, ns=(now, now))
finally:
    if os.path.exists(tmp):
        os.unlink(tmp)
PY
go test ./..."
semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.LoadInput",
  "to": "ReadRequest"
}
4✓ ✓
/bin/zsh -lc "python3 - <<'PY'
from pathlib import Path
import os, tempfile, time
p = Path('pipeline/workflow.go')
s = p.read_text()
for old in ('NormalizeValue', 'MapFields'):
    if s.count(old) "'!= 2:
        raise SystemExit(f'"'unexpected {old} occurrence count')
s2 = s.replace('NormalizeValue', 'CanonicalizeValue').replace('MapFields', 'ProjectFields')
fd, tmp = tempfile.mkstemp(dir=p.parent, prefix='.workflow.go.')
try:
    with os.fdopen(fd, 'w') as f:
        f.write(s2)
        f.flush()
        os.fsync(f.fileno())
    os.replace(tmp, p)
    now = time.time_ns()
    os.utime(p, ns=(now, now))
finally:
    if os.path.exists(tmp):
        os.unlink(tmp)
PY
go test ./..."
✓ ✓
/bin/zsh -lc 'go test ./...'
5✓ ✓
/bin/zsh -lc "python3 - <<'PY'
from pathlib import Path
import os, tempfile, time
p = Path('pipeline/workflow.go')
s = p.read_text()
renames = {
    'RouteValue': 'DispatchValue',
    'StampEvent': 'AnnotateEvent',
    'CountItems': 'TallyItems',
    'MergeParts': 'CombineParts',
}
for old in renames:
    if s.count(old) "'!= 2:
        raise SystemExit(f'"'unexpected {old} occurrence count')
s2 = s
for old, new in renames.items():
    s2 = s2.replace(old, new)
fd, tmp = tempfile.mkstemp(dir=p.parent, prefix='.workflow.go.')
try:
    with os.fdopen(fd, 'w') as f:
        f.write(s2)
        f.flush()
        os.fsync(f.fileno())
    os.replace(tmp, p)
    now = time.time_ns()
    os.utime(p, ns=(now, now))
finally:
    if os.path.exists(tmp):
        os.unlink(tmp)
PY
go test ./..."
✓ ✓
/bin/zsh -lc 'git status --short && \
git diff -- pipeline/workflow.go && \
git diff --name-only'
6✓ ✓
/bin/zsh -lc "python3 - <<'PY'
from pathlib import Path
import os, tempfile, time
p = Path('pipeline/workflow.go')
s = p.read_text()
renames = {
    'FilterNoise': 'PruneNoise',
    'SortRecords': 'OrderRecords',
    'EncodePayload': 'MarshalPayload',
    'DecodeReply': 'ParseReply',
    'OpenChannel': 'ConnectChannel',
    'CloseChannel': 'ReleaseChannel',
    'FlushBuffer': 'DrainBuffer',
    'SaveResult': 'PersistResult',
}
for old in renames:
    if s.count(old) "'!= 2:
        raise SystemExit(f'"'unexpected {old} occurrence count')
s2 = s
for old, new in renames.items():
    s2 = s2.replace(old, new)
fd, tmp = tempfile.mkstemp(dir=p.parent, prefix='.workflow.go.')
try:
    with os.fdopen(fd, 'w') as f:
        f.write(s2)
        f.flush()
        os.fsync(f.fileno())
    os.replace(tmp, p)
    now = time.time_ns()
    os.utime(p, ns=(now, now))
finally:
    if os.path.exists(tmp):
        os.unlink(tmp)
PY
go test ./..."
✓ ✓
/bin/zsh -lc "rg -n 'LoadInput|ReadRequest' pipeline"
7—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.CheckInput"
}
8—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.CheckInput",
  "to": "ValidateRequest"
}
9—✓ ✓
/bin/zsh -lc 'go test ./...'
10—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.NormalizeValue"
}
11—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.MapFields"
}
12—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.NormalizeValue",
  "to": "CanonicalizeValue"
}
13—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.MapFields",
  "to": "ProjectFields"
}
14—✓ ✓
/bin/zsh -lc 'go test ./...'
15—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.RouteValue"
}
16—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.StampEvent"
}
17—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.CountItems"
}
18—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.MergeParts"
}
19—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.RouteValue",
  "to": "DispatchValue"
}
20—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.StampEvent",
  "to": "AnnotateEvent"
}
21—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.CountItems",
  "to": "TallyItems"
}
22—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.MergeParts",
  "to": "CombineParts"
}
23—✓ ✓
/bin/zsh -lc 'go test ./...'
24—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.FilterNoise"
}
25—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.SortRecords"
}
26—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.EncodePayload"
}
27—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.DecodeReply"
}
28—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.OpenChannel"
}
29—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.CloseChannel"
}
30—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.FlushBuffer"
}
31—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "Processor.SaveResult"
}
32—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.FilterNoise",
  "to": "PruneNoise"
}
33—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.SortRecords",
  "to": "OrderRecords"
}
34—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.EncodePayload",
  "to": "MarshalPayload"
}
35—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.DecodeReply",
  "to": "ParseReply"
}
36—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.OpenChannel",
  "to": "ConnectChannel"
}
37—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.CloseChannel",
  "to": "ReleaseChannel"
}
38—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.FlushBuffer",
  "to": "DrainBuffer"
}
39—semedit/semantic_rename (✓ ✓)
{
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.SaveResult",
  "to": "PersistResult"
}
40—✓ ✓
/bin/zsh -lc 'go test ./...'
Baseline vs Semedit Agentic in Large Context
#VanillaSemedit MCP
1not publishednot published

default prompt · prescriptive MCP instructions · write semedit restriction

SettingValue
Test casetask-13-rename-followup-scale
Targetcodex/gpt-6-luna/medium
Prompt variantdefault
MCP server instructionsprescriptive
Semedit arm restrictionwrite
Fixturetestdata/bench/task_13_rename_followup_scale.txtar

Vanilla LLM Prompt:

Do not edit tests. You are forbidden to modify protected files: “go.mod”, “rename-plan.md”.

Apply only row 1 of rename-plan.md. Rename that Processor method and update its call sites. Leave rows 2 through 16 unchanged. Run go test ./… before finishing. 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”, “rename-plan.md”.

Apply only row 1 of rename-plan.md. Rename that Processor method and update its call sites. Leave rows 2 through 16 unchanged. Run go test ./… before finishing. 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 pipeline provides independent processing stages for the rename scale benchmark.
package pipeline

type Processor struct{}

func (Processor) LoadInput(value int) int { return value + 1 }
func (Processor) CheckInput(value int) int { return value + 2 }
func (Processor) NormalizeValue(value int) int { return value + 3 }
func (Processor) MapFields(value int) int { return value + 4 }
func (Processor) RouteValue(value int) int { return value + 5 }
func (Processor) StampEvent(value int) int { return value + 6 }
func (Processor) CountItems(value int) int { return value + 7 }
func (Processor) MergeParts(value int) int { return value + 8 }
func (Processor) FilterNoise(value int) int { return value + 9 }
func (Processor) SortRecords(value int) int { return value + 10 }
func (Processor) EncodePayload(value int) int { return value + 11 }
func (Processor) DecodeReply(value int) int { return value + 12 }
func (Processor) OpenChannel(value int) int { return value + 13 }
func (Processor) CloseChannel(value int) int { return value + 14 }
func (Processor) FlushBuffer(value int) int { return value + 15 }
func (Processor) SaveResult(value int) int { return value + 16 }

func Run(processor Processor, value int) int {
	value = processor.LoadInput(value)
	value = processor.CheckInput(value)
	value = processor.NormalizeValue(value)
	value = processor.MapFields(value)
	value = processor.RouteValue(value)
	value = processor.StampEvent(value)
	value = processor.CountItems(value)
	value = processor.MergeParts(value)
	value = processor.FilterNoise(value)
	value = processor.SortRecords(value)
	value = processor.EncodePayload(value)
	value = processor.DecodeReply(value)
	value = processor.OpenChannel(value)
	value = processor.CloseChannel(value)
	value = processor.FlushBuffer(value)
	value = processor.SaveResult(value)
	return value
}
MetricVanilla (Small)MCP (Small)Δ (Small)Vanilla (Large)MCP (Large)Δ (Large)
Wall-Clock Latency75.73s228.97s+202.3%———
Process Start → First Event0.13s0.13s————
First Event → First Tool Call5.61s5.67s————
MCP Initialize → First Semantic Call——————
MCP Server Start → Initialize——————
Top-Level User Turns550%———
Internal Tool Cycles1139+254.5%———
Initial Load / Discovery Turns00————
MCP Discovery / Schema Turns00————
Tool Invocations (per run)1139+254.5%———
Output Tokens63265936-6.2%———
Reasoning / Thinking Tokens3901478+279.0%———
Total Input Tokens10408322137953+105.4%———
Cached Input Tokens9292801991680+114.3%———
Uncached Input Tokens111552146273+31.1%———
Cost0.59510.9563+60.7%———
Cached vs Uncached Token Ratio8.33:113.62:1+63.5%———
Oracle L1: Mutation PolicyPASSPASS————
Oracle L2: AST InvariantsPASSPASS————
Oracle L3: Clean BuildPASSPASS————
Oracle L4: Verification TestPASSPASS————
Semantic Tool Invocation Verified (per run)N/APASS————
Baseline vs Semedit Agentic in Small Context
  • Vanilla (Baseline vs Semedit Agentic in Small Context) Edit: File pipeline/workflow.go modified (41 lines -> 41 lines)
  • Semedit MCP (Baseline vs Semedit Agentic in Small Context) Edit: File pipeline/workflow.go modified (41 lines -> 41 lines)
#VanillaSemedit MCP
1✓ ✓
/bin/zsh -lc "cat rename-plan.md && \
rg -n \"Processor|method-name-from-plan\" . --glob '"'!go.mod'"' --glob '"'!rename-plan.md'"'"
✓ ✓
/bin/zsh -lc "pwd && \
rg --files -g 'PROJECT_BRIEF.md' -g 'rename-plan.md' -g 'AGENTS.md' -g 'AGENTS.override.md' -g 'docs/benchmark*' -g 'tools/benchmark-harness/README.md' -g 'go.mod'"
2✓ ✓
/bin/zsh -lc "cat pipeline/workflow.go && \
cat pipeline/workflow_test.go && \
rg -n '\\.LoadInput\\(|LoadInput\\(' . --glob '"'!go.mod'"' --glob '"'!rename-plan.md'"' --glob '"'!**/*_test.go'"'"
? ✗
/bin/zsh -lc "cat rename-plan.md && \
rg --files -g 'PROJECT_BRIEF.md' -g 'tools/benchmark-harness/README.md'"
3✓ ✓
/bin/zsh -lc "python3 -c 'from pathlib import Path; import os, tempfile; p=Path(\"pipeline/workflow.go\"); data=p.read_text(); updated=data.replace(\"LoadInput\", \"ReadRequest\"); assert updated "'!= data and data.count("LoadInput") == 2; fd, tmp=tempfile.mkstemp(dir=p.parent, prefix=".workflow."); f=os.fdopen(fd,"w"); f.write(updated); f.flush(); os.fsync(f.fileno()); f.close(); os.replace(tmp,p)'"' && \
go test ./..."
semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "LoadInput"
}
4✓ ✓
/bin/zsh -lc "rg -n 'CheckInput' . --glob '"'!go.mod'"' --glob '"'!rename-plan.md'"'"
semedit/semantic_rename (✓ ✓)
{
  "auto_organize_imports": false,
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.LoadInput",
  "to": "ReadRequest"
}
5✓ ✓
/bin/zsh -lc "python3 -c 'from pathlib import Path; import os, tempfile; p=Path(\"pipeline/workflow.go\"); data=p.read_text(); updated=data.replace(\"CheckInput\", \"ValidateRequest\"); assert data.count(\"CheckInput\") == 2; fd,tmp=tempfile.mkstemp(dir=p.parent,prefix=\".workflow.\"); f=os.fdopen(fd,\"w\"); f.write(updated); f.flush(); os.fsync(f.fileno()); f.close(); os.replace(tmp,p)' && \
go test ./..."
✓ ✓
/bin/zsh -lc 'go test ./...'
6✓ ✓
/bin/zsh -lc "rg -n 'NormalizeValue|MapFields' . --glob '"'!go.mod'"' --glob '"'!rename-plan.md'"'"
semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "CheckInput"
}
7✓ ✓
/bin/zsh -lc "python3 -c 'from pathlib import Path; import os, tempfile; p=Path(\"pipeline/workflow.go\"); data=p.read_text(); assert data.count(\"NormalizeValue\") == 2 and data.count(\"MapFields\") == 2; updated=data.replace(\"NormalizeValue\", \"CanonicalizeValue\").replace(\"MapFields\", \"ProjectFields\"); fd,tmp=tempfile.mkstemp(dir=p.parent,prefix=\".workflow.\"); f=os.fdopen(fd,\"w\"); f.write(updated); f.flush(); os.fsync(f.fileno()); f.close(); os.replace(tmp,p)' && \
go test ./..."
semedit/semantic_rename (✓ ✓)
{
  "auto_organize_imports": false,
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.CheckInput",
  "to": "ValidateRequest"
}
8✓ ✓
/bin/zsh -lc "rg -n 'RouteValue|StampEvent|CountItems|MergeParts' . --glob '"'!go.mod'"' --glob '"'!rename-plan.md'"'"
✓ ✓
/bin/zsh -lc 'go test ./...'
9✓ ✓
/bin/zsh -lc "python3 -c 'from pathlib import Path; import os, tempfile; p=Path(\"pipeline/workflow.go\"); data=p.read_text(); names={\"RouteValue\":\"DispatchValue\",\"StampEvent\":\"AnnotateEvent\",\"CountItems\":\"TallyItems\",\"MergeParts\":\"CombineParts\"}; assert all(data.count(old)==2 for old in names); updated=data
for old,new in names.items(): updated=updated.replace(old,new)
fd,tmp=tempfile.mkstemp(dir=p.parent,prefix=\".workflow.\"); f=os.fdopen(fd,\"w\"); f.write(updated); f.flush(); os.fsync(f.fileno()); f.close(); os.replace(tmp,p)' && \
go test ./..."
semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "NormalizeValue"
}
10✓ ✓
/bin/zsh -lc "rg -n 'FilterNoise|SortRecords|EncodePayload|DecodeReply|OpenChannel|CloseChannel|FlushBuffer|SaveResult' . --glob '"'!go.mod'"' --glob '"'!rename-plan.md'"'"
semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "MapFields"
}
11✓ ✓
/bin/zsh -lc "python3 -c 'from pathlib import Path; import os, tempfile; p=Path(\"pipeline/workflow.go\"); data=p.read_text(); names={\"FilterNoise\":\"PruneNoise\",\"SortRecords\":\"OrderRecords\",\"EncodePayload\":\"MarshalPayload\",\"DecodeReply\":\"ParseReply\",\"OpenChannel\":\"ConnectChannel\",\"CloseChannel\":\"ReleaseChannel\",\"FlushBuffer\":\"DrainBuffer\",\"SaveResult\":\"PersistResult\"}; assert all(data.count(old)==2 for old in names); updated=data
for old,new in names.items(): updated=updated.replace(old,new)
fd,tmp=tempfile.mkstemp(dir=p.parent,prefix=\".workflow.\"); f=os.fdopen(fd,\"w\"); f.write(updated); f.flush(); os.fsync(f.fileno()); f.close(); os.replace(tmp,p)' && \
go test ./..."
semedit/semantic_rename (✓ ✓)
{
  "auto_organize_imports": false,
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.NormalizeValue",
  "to": "CanonicalizeValue"
}
12—semedit/semantic_rename (✓ ✓)
{
  "auto_organize_imports": false,
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.MapFields",
  "to": "ProjectFields"
}
13—✓ ✓
/bin/zsh -lc 'go test ./...'
14—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "StampEvent"
}
15—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "RouteValue"
}
16—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "CountItems"
}
17—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "MergeParts"
}
18—semedit/semantic_rename (✓ ✓)
{
  "auto_organize_imports": false,
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.RouteValue",
  "to": "DispatchValue"
}
19—semedit/semantic_rename (✓ ✓)
{
  "auto_organize_imports": false,
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.StampEvent",
  "to": "AnnotateEvent"
}
20—semedit/semantic_rename (✓ ✓)
{
  "auto_organize_imports": false,
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.CountItems",
  "to": "TallyItems"
}
21—semedit/semantic_rename (✓ ✓)
{
  "auto_organize_imports": false,
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.MergeParts",
  "to": "CombineParts"
}
22—✓ ✓
/bin/zsh -lc 'go test ./...'
23—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "FilterNoise"
}
24—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "SortRecords"
}
25—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "EncodePayload"
}
26—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "DecodeReply"
}
27—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "OpenChannel"
}
28—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "CloseChannel"
}
29—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "FlushBuffer"
}
30—semedit/semantic_lookup (✓ ✓)
{
  "language": "go",
  "symbol": "SaveResult"
}
31—semedit/semantic_rename (✓ ✓)
{
  "auto_organize_imports": false,
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.FilterNoise",
  "to": "PruneNoise"
}
32—semedit/semantic_rename (✓ ✓)
{
  "auto_organize_imports": false,
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.SortRecords",
  "to": "OrderRecords"
}
33—semedit/semantic_rename (✓ ✓)
{
  "auto_organize_imports": false,
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.EncodePayload",
  "to": "MarshalPayload"
}
34—semedit/semantic_rename (✓ ✓)
{
  "auto_organize_imports": false,
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.DecodeReply",
  "to": "ParseReply"
}
35—semedit/semantic_rename (✓ ✓)
{
  "auto_organize_imports": false,
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.OpenChannel",
  "to": "ConnectChannel"
}
36—semedit/semantic_rename (✓ ✓)
{
  "auto_organize_imports": false,
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.CloseChannel",
  "to": "ReleaseChannel"
}
37—semedit/semantic_rename (✓ ✓)
{
  "auto_organize_imports": false,
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.FlushBuffer",
  "to": "DrainBuffer"
}
38—semedit/semantic_rename (✓ ✓)
{
  "auto_organize_imports": false,
  "file": "pipeline/workflow.go",
  "language": "go",
  "symbol": "Processor.SaveResult",
  "to": "PersistResult"
}
39—✓ ✓
/bin/zsh -lc 'go test ./...'
Baseline vs Semedit Agentic in Large Context
#VanillaSemedit MCP
1not publishednot published

default prompt · prescriptive MCP instructions · write semedit restriction

SettingValue
Test casetask-13-rename-followup-scale
Targetcodex/gpt-6-luna/medium
Prompt variantdefault
MCP server instructionsprescriptive
Semedit arm restrictionwrite
Fixturetestdata/bench/task_13_rename_followup_scale.txtar

Vanilla LLM Prompt:

Do not edit tests. You are forbidden to modify protected files: “go.mod”, “rename-plan.md”.

Apply only row 1 of rename-plan.md. Rename that Processor method and update its call sites. Leave rows 2 through 16 unchanged. Run go test ./… before finishing. 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”, “rename-plan.md”.

Apply only row 1 of rename-plan.md. Rename that Processor method and update its call sites. Leave rows 2 through 16 unchanged. Run go test ./… before finishing. 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 pipeline provides independent processing stages for the rename scale benchmark.
package pipeline

type Processor struct{}

func (Processor) LoadInput(value int) int { return value + 1 }
func (Processor) CheckInput(value int) int { return value + 2 }
func (Processor) NormalizeValue(value int) int { return value + 3 }
func (Processor) MapFields(value int) int { return value + 4 }
func (Processor) RouteValue(value int) int { return value + 5 }
func (Processor) StampEvent(value int) int { return value + 6 }
func (Processor) CountItems(value int) int { return value + 7 }
func (Processor) MergeParts(value int) int { return value + 8 }
func (Processor) FilterNoise(value int) int { return value + 9 }
func (Processor) SortRecords(value int) int { return value + 10 }
func (Processor) EncodePayload(value int) int { return value + 11 }
func (Processor) DecodeReply(value int) int { return value + 12 }
func (Processor) OpenChannel(value int) int { return value + 13 }
func (Processor) CloseChannel(value int) int { return value + 14 }
func (Processor) FlushBuffer(value int) int { return value + 15 }
func (Processor) SaveResult(value int) int { return value + 16 }

func Run(processor Processor, value int) int {
	value = processor.LoadInput(value)
	value = processor.CheckInput(value)
	value = processor.NormalizeValue(value)
	value = processor.MapFields(value)
	value = processor.RouteValue(value)
	value = processor.StampEvent(value)
	value = processor.CountItems(value)
	value = processor.MergeParts(value)
	value = processor.FilterNoise(value)
	value = processor.SortRecords(value)
	value = processor.EncodePayload(value)
	value = processor.DecodeReply(value)
	value = processor.OpenChannel(value)
	value = processor.CloseChannel(value)
	value = processor.FlushBuffer(value)
	value = processor.SaveResult(value)
	return value
}