Problem
evals/benchmark-run-lifecycle.ts exposes preflight, execute, finalize, teardown, and persist operations, but callers reconstruct final records and persistence outside the module. The matched-harness path supplies a no-op persistence operation and then persists again; browser execution similarly retains important lifecycle behavior outside the attempt module. The interface is nearly as complex as the implementation and does not yet protect the core forensic invariant.
What to build
Deepen Benchmark Run attempt lifecycle so it owns the durable transition from planned row through rejection/admission, execution, finalization, teardown, persistence, and retry lineage. Execution-specific behavior remains behind the existing adapter seam.
This ticket is the smallest enabling slice for the Browser Benchmark Run deepening ticket and should ship independently.
Acceptance criteria
Related work
Architecture evidence
The 2026-08-30 architecture review applied the deletion test: removing this module would duplicate consequential try/finally/persist ordering across current and future runners, but its current six-operation interface remains shallow.
Problem
evals/benchmark-run-lifecycle.tsexposes preflight, execute, finalize, teardown, and persist operations, but callers reconstruct final records and persistence outside the module. The matched-harness path supplies a no-op persistence operation and then persists again; browser execution similarly retains important lifecycle behavior outside the attempt module. The interface is nearly as complex as the implementation and does not yet protect the core forensic invariant.What to build
Deepen Benchmark Run attempt lifecycle so it owns the durable transition from planned row through rejection/admission, execution, finalization, teardown, persistence, and retry lineage. Execution-specific behavior remains behind the existing adapter seam.
This ticket is the smallest enabling slice for the Browser Benchmark Run deepening ticket and should ship independently.
Acceptance criteria
Related work
Architecture evidence
The 2026-08-30 architecture review applied the deletion test: removing this module would duplicate consequential try/finally/persist ordering across current and future runners, but its current six-operation interface remains shallow.