Skip to content

LAB: Nightly Train printed NOT RELEASABLE with every lane not_measured (late start judged a head no producer ran on) #4963

Open

Description

@noahgift

LAB (C324): this check cannot block a merge, a tag or a publish.

  • nightly-train.yml runs on a schedule. It is not a required check.
  • scripts/release/nightly_train.sh says "Report-only: this script blocks nothing and no release script reads it".
  • I checked that claim against the tree at 92599723e6. No release script and no other workflow reads the train's line or its exit code. release_ready.sh and contracts/release-ready-v1.yaml only use the train's lane names as producer: labels.

What happened

Nightly Train run 37924118002, job train, step "RELEASABLE or NOT RELEASABLE for main's head" printed:

NOT RELEASABLE: deep-examples, not_measured (+13 more) [C=92599723e6 pin=unpinned]

All 28 lanes in reds.tsv are not_measured. None is red.

Cause (read from the run, not inferred)

  1. The run started late, after main had moved.
    • The cron is 45 4 * * *, but this scheduled run was created at 11:30:11Z.
    • At 04:45Z main's head was e0cb1372d2, committed 2026-10-08 20:39Z. That is the commit the night's producers ran on.
    • 92599723e6 landed on main at 08:05Z. By 11:30Z the train judged that commit, which no producer had run on yet. So 22 lanes read "no run on C; newest run … on e0cb137". Of the other 6, 3 have no producer on main, 1 (qwen-story) has never run on main, and 2 are listed below.
    • This was the train's first scheduled run: history.tsv has one row. Why GitHub created the run 6h45m late is not measured.
  2. Some lanes would not be measured even with an on-time start:
    • 3 verdict lanes have "no nightly producer on main yet": dogfood, readiness and assets.
    • deep-examples (verdict lane): its newest run, 37558444740, is on a719e1aa28; about 299 h lost.
    • mutants (info lane): its newest run, 37426972044, is on ece9e563bd; about 269 h lost.

So with today's design the verdict would have been NOT RELEASABLE at 04:45Z as well. A late start only turned every lane into not_measured.

For the owner (pick one; no change was made here)

  • When a scheduled run fires late, judge the head the producers last ran on, or print that the run fired after main moved. Today's line names deep-examples as the first failure, which reads like a defect in that lane.
  • The deep-examples lane has not been measured on main for about 12 days.
  • dogfood, readiness and assets have no producer on main yet.

Refs #4686
keep-open: LAB ticket per C324; it closes when the train prints a line whose lanes were measured on the head it names.

Activity

  1. noahgift commented on Oct 9, 2026

    @noahgift
    ContributorAuthor

    Owner: aprender-wprodmodels.

    Plan for the late start: when the verdict producers' newest scheduled runs sit on a commit that main has since moved past, the train judges that commit and prints main's head beside it. A late start then reads the evidence the night produced, instead of turning every lane into not_measured.

    That alone does not turn the train green. deep-examples has no recent run on main, and dogfood, readiness and assets still have no producer. Those are producer work, separate from this fix.

  2. noahgift commented on Oct 9, 2026

    @noahgift
    ContributorAuthor

    Nightly Train run 37924118002: the 14 not_measured verdict rows, by cause

    Read from the run's bundle and the producer jobs' logs (tail and grep only).

    The train judged C = 92599723e6. Every producer's newest run on main was on e0cb1372d2. The train starts late every day: since 10-05 every Nightly Train run was created between 11:19Z and 11:49Z, against its 04:45Z cron. By then main had moved past the commit the nightlies ran on, so 11 rows read no run on C. The fix on this ticket's branch (a848f53552) judges the commit the night ran on. The last column says what each row reads when the train judges e0cb1372d2.

    Setup / runner

    row producer run cause (log line) judged on e0cb137
    models models-nightly 37876885656 The models job was skipped. The relay printed MODELS-NIGHTLY RELAY not_measured at e0cb1372d: no bundle for e0cb1372d on nightly-evidence. The nightly-evidence branch does not exist on origin: the GPU host has never published a bundle. The fix is the host unit, not code. not_measured
    cleanroom-cpu release-lanes-nightly 37877069990 The lane job was skipped. Its measure step got curl: (22) The requested URL returned error: 403 reading the paiml/infra clean-room runs with the INFRA_ACTIONS_READ secret, then printed not_measured — paiml/infra clean-room runs were not read. The cause is the credential's scope or validity. Not touched here. not_measured
    deep-examples (1 of 2) examples-nightly 37558444740 The workflow is disabled_manually. Its newest run is on a719e1aa28 (10-07), so it can never be on C. not_measured

    Own code

    row producer run cause (log line) judged on e0cb137
    deep-doctests, deep-nodefault, deep-bins-build, milestone, preflight, cleanroom-gpu (6 rows) deep-nightly 37865273493, nightly 37876478755, release-gates-nightly 37872984737, release-lanes-nightly 37877069990 Late start: the train judged main's head at read time instead of the commit the night ran on. The fix is a848f53552 on this ticket. green. Every one of their jobs succeeded on e0cb137. cleanroom-gpu's measure step reads green — all 1 job(s) of b2-gpu at C succeeded.
    deep-bins-smoke deep-nightly 37865273493 SMOKE RED: 2 of 29 bins. pv and pv-sat print v0.70.2+no-git with no sha (reason version-no-sha). The other 27 bins print (e0cb1372d2). pv's version string does not carry the build sha. Tracked in #4896. red
    deep-examples (2 of 2) examples-nightly 37558444740 The last run failed: summary pass=597 fail=29 timeout=5 needs-args=30 needs-hardware=2 needs-data=316. 14 of the 29 fails are examples the harness should class as needs-args or needs-hardware. 8 need arguments: qwen35_parity, qwen35_prefill_parity, think_ab, rex, ssc_eval, ssc_preflight, check_layer4, constrain_mask_overhead. 4 need CUDA: test_gemv_correctness, profile_cuda_trainer, bench_gemv, test_tc_attention. 1 needs a tty: calculator_tui. 1 needs a LAN host: test_mac_worker. The other 15 fails (parity_035–040, debug_q4k/q6k_controlled, qa_chat, qa_serve, …) and the 5 timeouts (servers and TUIs killed at 180 s) were not read further. red if re-enabled
    publish-dryrun release-lanes-nightly 37877069990 The lane job was skipped by design: main is 0.70.2 and crates.io already has 0.70.2: --verify would resolve the registry copy (the gate's documented false red); main must be bumped first (BLD-002 R3). The fix is main's version bump. not_measured until the bump
    dogfood, readiness, assets (3 rows) none no nightly producer on main yet not_measured

    Count. Setup/runner: 2 rows (models, cleanroom-cpu), plus half of deep-examples (disabled). Own code: 11 rows (6 late start, deep-bins-smoke, publish-dryrun, 3 with no producer), plus the other half of deep-examples (its harness and examples). With the late-start fix alone, the train would print NOT RELEASABLE on deep-bins-smoke (red) and 7 not_measured rows.

    Agent: aprender-wprodmodels

  3. added this to the 0.71.1 milestone on Oct 9, 2026
  4. noahgift commented on Oct 9, 2026

    @noahgift
    ContributorAuthor

    Triage: this is the one ticket for Nightly Train. Newest run 37924118002 (2026-10-09 11:30Z, sha 9259972, schedule) failed; the runs of 10-06, 10-07 and 10-08 failed too (37456774718, 37613335130, 37771142959). Not a required check on main (required: ci / gate, workspace-test). Milestone set to 0.71.1; it stays unlinked until #4715 has a free slot. — aprender-triage-worker

  5. noahgift commented on Oct 10, 2026

    @noahgift
    ContributorAuthor

    Nightly Train failed again on 2026-10-10 at 10:47Z: NOT RELEASABLE: deep-examples, not_measured (+13 more) [pin=unpinned]. Same LAB class as this ticket; tracking here, no new ticket. Still needs an owner label.

  6. noahgift commented on Oct 12, 2026

    @noahgift
    ContributorAuthor

    Branch fix/4963-lanes-rows-test @227e79d0e05691be8a1aaf9d43f4e5bfb8c50949 (branch-only, no PR).

    Cause of the red. Run 38248921564 failed in the train's "case table and mutants" step, before any verdict: nightly_lanes_rows_test.sh showed 64/91 rows. The train table had moved on and the test still pinned the old version. #5142 made workflow_dispatch a night, and C324 moved deep-bins-smoke, cleanroom-cpu and publish-dryrun to LAB. The broken rows:

    • 8× row_is_pinned
    • 8× planted_dispatch_never_reaches_verdict
    • 8× dispatch_alone_is_not_measured
    • 3× red_lane_is_named_in_the_line (a lab red never names its lane)

    The mutant kills were hollow while the table was red.

    Fix (test only; the train is untouched)

    • LANES now holds the train's current bytes, separated by ~.
    • A push is the planted non-night: planted_push_never_reaches_verdict and push_alone_is_not_measured. New row dispatch_is_a_night.
    • Lab lanes get lab_red_never_names_the_lane.
    • Mutants: push widened, dispatch dropped, class flipped (verdict→info, lab→verdict), and no producer.
    • A mutant counts only when the unmutated lane holds. A drill with a stale train row prints BROKE preflight/baseline and 42/43.

    Measured (local)

    • rows 99/99, mutants 48/48
    • nightly_train.sh --self-test 153/153, models_lane_row_test.sh 13/13
    • bashrs: 18 warnings, down from 19 on main; all are heredoc false positives

    Late start. Already fixed on main by #5086, so wprod/4963-late-start @a848f53552 is superseded.

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