Skip to content

feat(bench): migrate-N exploration-heavy fixture#14

Merged
Poytr1 merged 2 commits into
mainfrom
feat/aj-bench-migrate
Jul 7, 2026
Merged

feat(bench): migrate-N exploration-heavy fixture#14
Poytr1 merged 2 commits into
mainfrom
feat/aj-bench-migrate

Conversation

@Poytr1

@Poytr1 Poytr1 commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

Summary

Adds migrate — the exploration-heavy fixture to test the hypothesis "JIT pays off when the baseline burns tokens finding what to change."

N Go files each call a deprecated OldName buried among distractor helpers; the task is to migrate every OldName call to NewName. Unlike nullcheck/shellseq, the agent must search/read across files to locate the call sites before editing. Dual-gate verifier (build + zero OldName calls + N NewName calls, grep scoped to *.go). Edit-based, so the JIT arm uses a hand-written skill naming the exact rename.

Surprising result (n=3, rollouts=3, live claude)

migrate-3:  baseline 100% / jit 100%   (iso-accuracy, both migrated correctly)
   T2S baseline 190,635 (med 190,036)  vs  jit 238,512 (med 238,183)   →  saving −47,877/use

The JIT arm was ~25% WORSE. The hypothesis was refuted: injecting the skill added context cost, and the agent still read the files to apply the edits — so the skill didn't remove the exploration it was meant to. A naive project-local skill can be net-negative even on an exploration-heavy shape. Consistent across rollouts (mean ≈ median).

Cross-shape so far: nullcheck ~0%, shellseq ~0% (real compile), migrate negative. Injecting a skill is not free.

Tests

Verifier fails before the migration, passes after, and the skill doesn't contaminate the grep. golangci-lint clean.

Findings-doc update to follow in a separate change.

🤖 Generated with Claude Code

Poytr1 and others added 2 commits July 7, 2026 15:44
Adds `migrate` — N Go files each calling a deprecated OldName buried among
distractor helpers; the task is to migrate every OldName call to NewName.
Unlike nullcheck/shellseq, the agent must FIND the call sites (search/read
across files) before editing, so this is the exploration-heavy shape where
a JIT skill was hypothesized to pay off. Dual-gate verifier (build + no
OldName calls + N NewName calls, grep scoped to *.go); Edit-based so the JIT
arm uses a hand-written skill naming the exact rename.

Tests: verifier fails before the migration, passes after, and the skill
doesn't contaminate the grep.

Surprising real result (n=3, rollouts=3, live claude): the JIT arm was
WORSE, not better — T2S baseline ~190,635 vs jit ~238,512 (JIT ~25% more)
at iso-accuracy. The project-local skill's context cost outweighed any
exploration it saved, and the agent still read the files to apply the edit.
So even on an exploration-heavy shape, a naive injected skill can be
net-negative. Findings-doc update to follow.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Records the surprising migrate finding: at rollouts=3, the JIT arm was
~25% WORSE (T2S ~190,635 baseline vs ~238,512 jit) at iso-accuracy — the
skill's context cost outweighed the exploration it was meant to save.
Updates the TL;DR and cross-shape summary table (nullcheck ~0%,
shellseq ~0%, migrate +25%), and marks the "exploration-heavy pays off"
hypothesis as tested-and-refuted.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@Poytr1 Poytr1 merged commit 98350e6 into main Jul 7, 2026
2 checks passed
@Poytr1 Poytr1 deleted the feat/aj-bench-migrate branch July 7, 2026 08:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant