Skip to content

crux serve sweep: one timeout over the whole sweep + end-only plan.json discards every completed row #4341

Closed

Description

@noahgift

scripts/crux_inference_dogfood.sh runs the whole serve sweep (scripts/lib/crux_serve_routes.py sweep) under a single timeout $TMO, and plan.json is written only at the end. On CPU (~12 s/request, about 285 requests), any per-request TMO kills the sweep with rc 124. The judge then refuses all rows ("the serve sweep wrote no plan.json"). Run #2 (TMO 2400) lost 199 completed apr rows this way.

done_when: plan.json is written before the first request (or appended per row), and the sweep gets its own budget separate from the per-request TMO. A case-table row shows that a killed sweep keeps its completed rows.

Refs #3797

Activity

  1. added this to the backlog milestone on Sep 24, 2026
  2. added a commit that references this issue on Sep 24, 2026
  3. noahgift commented on Sep 24, 2026

    @noahgift
    MemberAuthor

    Fixed on feat/3797-crux-serve-verify @5264457e6, which folds after merge-back #4224. plan.json is now written before the first request and after every cell, via rename. rows refuses only the cells never driven, and each refusal names the kill. The sweep lines get CELL_TMO = TMO × requests. The fix is pinned by R5 and mutants M18/M19 in check_crux_serve_code.sh. Quorum 2/2 PASS (degraded: same-family).

  4. added 2 commits that reference this issue on Sep 25, 2026
  5. noahgift commented on Oct 4, 2026

    @noahgift
    MemberAuthor

    Done on main @ 316dee2cd4. It landed in the 0.70 fold 989cb012e5 (#4655). Each done_when item, cited at that commit:

    • plan.json is on disk before the first request and is rewritten after every cell, by rename: scripts/lib/crux_serve_routes.py:512 in sweep, and :547 in save_plan.
    • The sweep has its own budget, CELL_TMO, separate from the per-request $TMO: scripts/crux_inference_dogfood.sh:386.
    • The case row is killed_sweep in scripts/check_crux_serve_code.sh:195. A sweep that its timeout kills keeps every cell it finished. Only the cells it never drove are refused, and each refusal names the kill.

    Closing as the owner (la-0.73). Refs #3797, #3739.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions