Judge long interviews from the serving fixture

JS
2h ago
+11383-1820

A paid long-interview run could only be judged from what the page saw. This branch lets it be judged from what the interviewer actually received and said. A test-only acquisition capture records tool receipts, executed batches, interviewer segments and turn endings, each with its socket and generation. An in-process serving fixture hosts the real web service and interviewer from the pinned test binary, behind the same startup and serving functions codetrial web now shares from src/launch.rs, and writes that capture as a report when it stops. scripts/browser-check.sh runs the fixture, keeps its report and log (owner only), and after it stops judges reply content and decoded swap audio into the capture. Neither verdict changes the run's exit code or its qualification.

Along the way the Rust file ceilings are derived from Git history instead of a hand-kept JSON table (scripts/ceiling-hotspots.py reads the same limits), and several recovery, report and handoff tests are tightened.

Verified with ./scripts/test.sh at the head: exit 0, Rust 2776 passed and 29 ignored, browser and JS 3034 of 3034; desktop clippy and cargo-deny were skipped because their tools are not installed here. Every commit passes cargo check --all-targets, and no .cargo/mutants.toml exemption is added.

Left out: no paid long-interview run has been made with this yet. A reply that starts before a question's estimated end, which comes from its word count, is not_assessed rather than judged, because the capture does not record where a clip's speech really ends; carrying the clip manifest's speech boundaries into the capture is the follow-up that would let such a checkpoint pass.


Summary by cubic

Judges a paid long-interview run from the serving fixture's acquisition report instead of only what the page saw. Reply content and decoded swap audio verdicts are written into the capture after the fixture stops, and neither changes the run's exit code or its qualification.

Rust file-size ceilings are now derived from Git history rather than the hand-kept scripts/rust-style-ceilings.json table, several recovery, report, and handoff tests are tightened, and the launch helpers moved into the library are now exercised in the mutation gate.

Serving fixture

  • Hosts the real web service and local interviewer through the same startup and serving functions codetrial web uses (src/launch.rs).
  • Records tool receipts, executed batches, interviewer segments, and turn endings, each with its socket and generation.
  • scripts/browser-check.sh runs the pinned test binary as the fixture, keeps its report and log, and judges the capture once it stops.

Ceilings

  • scripts/check-rust-style.py now derives limits from HEAD and the baseline history; scripts/ceiling-hotspots.py reads the same limits.
  • Deleted scripts/rust-style-ceilings.json; the --ratchet command is removed.