Architecture · LikeC4
migration-evals
Tiered-oracle funnel that grades agent batch-change diffs and reports a per-tier funnel + contamination split + merge-survival anchor
The whole picture
System landscape
The system in context, then opened up into its containers.
Inside each box
Containers & components
Each part decomposed into the components that implement it. Every box links to its source in the interactive explorer.
Tiered oracle funnel (M1) — components
funnelContainerCascades each trial T0→T1→T2→T2b→T3→T4 cheapest-first, short-circuits on first failure, aggregates per-tier verdicts into a FunnelResult
Task definition & intake — components
intakeContainerYAML run configs + recipe specs define the migration; changeset providers stage (repo, base_commit, patch.diff) for the funnel
Build-harness synthesis (M2) — components
harnessContainerLLM-inferred Dockerfile + build/test recipe, content-hash cached so repeat runs cost zero adapter calls
Execution & inference adapters — components
adaptersContainerProtocol-typed seam between the funnel and any runtime; cassette stand-ins keep the suite offline, live adapters hit Docker / LLM APIs
Synthetic task generation (M3 / M9) — components
syntheticContainerProcedural repos with exact AST ground truth at zero marginal cost; generator and oracle kept code-disjoint (D5)
Runner, stamping & validity gates — components
runnerContainerDrives the config-defined run loop, writes one stamped result.json per trial, classifies failures, and gates publication
Reporting & gold anchor — components
reportingContainerAggregates stamped results into a funnel report + contamination split + merge-survival correlation
How it runs
Walkthrough flows
Dynamic views — the narrative spine of the system, step by step.
Walkthrough — one eval run, config to stamped result
evalRunThe smoke path runs end-to-end from a fresh clone with no API keys, no Docker: the cassette adapters replay sandbox + judge so every tier is exercised offline. Stages are filtered by the config (compile, tests, judge for the smoke fixtures).
Walkthrough — the funnel cascade (live adapters)
funnelCascadeCheapest-first, short-circuit on first fail: ~40% die at T0/T1 for $0.01, only the residual ambiguous cases reach the $0.08 LLM judge. Each failing tier stamps exactly one failure_class so a 40-repo regression triages in under 2h.
Walkthrough — synthetic generation + AST ground truth
syntheticFlowProcedural repos give exact AST-level truth at zero marginal cost. The T2b oracle checks 5 primitives; the generator emits 10 — the ≤50% overlap (D5) keeps generator and oracle code-disjoint so a green oracle is not a tautology.
Walkthrough — report, contamination split, gold anchor
reportFlowNo headline number leaves the project until the publication gate is green: every result stamped, no cassette_miss, and the eval_broken gate (Phi<0.7 or CI-low<0.5) not tripped. The contamination split is mandatory on every report.
Explore it live
The figures above are static exports. The interactive explorer lets you pan, zoom, follow relationships, and jump from any box to the source.