migration pipeline — deterministic recipes + agent fallback
deterministic pass
OpenRewrite (Java)
libcst (Python)
70-80% of rewrites
Daytona sandbox
target runtime preinstalled
branch-scoped, read-only input
per-branch build
agent loop
Claude Opus 4.7 + GPT-5.4-Codex
classify failure -> patch -> rerun
budget: 30min / $8 / 20 turns
failure taxonomy (across 50 repos)
dep_upgrade_required 30%
build_tool_drift 20%
custom_annotation 18%
syntax_edge_case 17%
test_flake 15%
what the taxonomy unlocks
top 3 classes become the next recipe target
agent stops relearning mechanical patterns
per-class pass rate drives Moderne-style policy
metrics (pass set)
MigrationBench pass@1: 60-70% target
mean $/repo: $2-4 at 50-repo scale
coverage delta: within +/- 1% of base
time-to-green p50: < 10 min
compare-to-baseline
deterministic-only: 35-45% pass rate
the agent layer is where the delta lives
publish side-by-side, by failure class