Skip to content

models: full ladder sits on the scheduled night verdict; the release ships on crux smoke — move the ladder to a nightly ticket-only job, measure each stage, andon at 2x #5147

Closed as not planned

Description

@noahgift

The models bundle is crux, then publish, then ladder, then publish. No stage has ever completed, and none has a measured duration. Even so, the full ladder sits on the scheduled night verdict:

  • .github/workflows/models-nightly.yml:123 relays without --measure, so the default is ladder (scripts/release/models_nightly.sh:29,64). The job then fails unless that run is green.
  • scripts/release/nightly_train.sh:110 makes models a verdict lane.

This conflicts with the release policy in contracts/model-capability-ladder-v1.yaml, release_policy: crux-smoke, which says larger rows are nightly and cannot stop a release. The release path itself (rehearse.sh, autopilot.sh, release_readiness.sh, prepare_bump.sh, and the in-run train) already reads crux only.

Done when:

  1. The scheduled models job relays --measure crux and stays a gate on crux.
  2. The ladder relay is a separate scheduled job that only opens tickets. It has no needs: edge from any verdict lane, no continue-on-error and no allow-failure row.
  3. A RED mutation shows that a red crux turns models red, and a red ladder leaves models green. A test fails if any gate needs: the ladder job.
  4. The chain runs end to end every night. Each stage records its start, end and exit code in the bundle, and has an andon at 2× its first measured time. Until a time is measured, the stage reads not_measured.

Workflow edit: it needs two non-author reviews and green CI.

🤖 Generated with Claude Code

Activity

  1. noahgift commented on Oct 11, 2026

    @noahgift
    ContributorAuthor

    Add to the done-when list: no automatic ladder on a release commit (the chain fix).

    What happens today: the crux unit lists the ladder in both OnSuccess= and OnFailure=. Its --run --measure crux was started on a release commit through override-commit (on 2026-10-11, frozen main 812dbe3eb5). So when that crux ends, it starts a full ladder on the same commit. That ladder then:

    • holds the producer's work/.lock for up to 6h30, at scripts/release/models_nightly.sh:392-393, so a crux re-run or the 21:00Z timer refuses with rc 3;
    • takes the fleet GPU lock for each apr call on both GPU hosts, at scripts/model_ladder.sh:94-98, so a release-day T-1 crux in that window can decline (exit 75).

    Since #5158 the ladder casts no vote. The models verdict needs only the crux relay, at .github/workflows/models-nightly.yml:130,146-149. So on a release commit the chained ladder costs the GPU hosts and buys nothing. On 2026-10-11 it was stopped by hand after the crux publish.

    Done when: a crux run that measured an override-commit (a release C) does not start the ladder. The scheduled night still runs the ladder after crux. The ladder unit keeps chaining publish. A test plants an override and proves no ladder starts, then removes the override and proves it does.

    keep-open: the 2x andon and this chain fix are still open after the release.

  2. added this to the 0.71.0 milestone on Oct 12, 2026
  3. modified the milestones: 0.71.0, 0.72.0 on Oct 14, 2026
  4. noahgift commented on Oct 14, 2026

    @noahgift
    ContributorAuthor

    Stage measurement for 0.72, read from main at 8c3b19c, the nightly-evidence branch and the models-nightly runs from 10-11 to 10-14. Nothing has been changed.

    Done-when 1–3 already hold on main. models-nightly now runs three jobs: models-evidence, which relays --measure crux and gates; models-ladder-tickets, which relays --measure ladder and only opens tickets; and models. I did not re-run the RED mutation for item 3.

    Done-when 4 is open, and the scheduled job has measured nothing on any night. In all 8 scheduled runs from 10-11 to 10-14, both relays print MODELS-NIGHTLY RELAY not_measured at <sha>: no bundle for <sha> on nightly-evidence. The runs exit green within about 20 s, and the receipt and ticket steps are skipped. The relay asks for its own GITHUB_SHA (8c73aa9, a881e99, cc71bde, 7f9a15a). The GPU-host producer publishes bundles for a different commit (812dbe3, 70f8c75, 56cf129). The two never meet. This is the producer-side exposure listed in the #5082 survey: this producer is not pinned to the night's C.

    Per-stage results, from the bundles that do exist:

    commit stage result published
    812dbe3 crux not_measured 10-11 17:21:46Z
    812dbe3 crux green 10-11 20:45:14Z
    70f8c75 crux green 10-12 21:59:05Z
    56cf129 crux green: 134 cells, 0 red on each GPU host 10-13 21:59:27Z
    56cf129 ladder not_measured: model_ladder.sh wrote no receipt (rc 2) on both hosts. A release models_t1.sh run for 0.71.2 was running at the same time (the bundle's concurrent file) 10-13 22:13:05Z, 13m38s after crux

    Durations: not_measured. The bundle (verdict, models-t1.log, judge.log) records a result, an rc and a commit. It records no start or end time for any stage. The only measurable times are the branch commit times above. They bound the gap between stages, but they give no stage's own duration, so no 2× andon can be set yet. For 0.73, the fix comes in two parts:

    • (a) pin the producer and the relay to the same C, so the scheduled job reads a bundle at all;
    • (b) have each stage write start=, end= and rc= into verdict.

    Until (b) lands, every stage time stays not_measured.

  5. noahgift commented on Oct 14, 2026

    @noahgift
    ContributorAuthor

    Folded into #2876 as a checklist row (TRIAGE-100, 2026-10-14): the open-ticket cap is 100, so this ticket is now tracked on that master and closed as not planned. Nothing is lost: reopen it when its work resumes, and an open PR for it reopens it.

    Agent: aprender-clerk

  6. modified the milestones: 0.72.0, backlog on Oct 14, 2026
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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions