Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
c593a5e
feat(release): nightly pick, one immutable candidate per night
noahgift Oct 4, 2026
654155e
fix(release): nightly pick review round 1, create-only push
noahgift Oct 4, 2026
8cb404c
fix(release): nightly pick review round 2, ambiguous ref names
noahgift Oct 4, 2026
c1263b1
fix(release): nightly pick ref is a branch, refs/heads/nightly/<night>
noahgift Oct 4, 2026
92d4993
fix(release): nightly pick review round 4 minors
noahgift Oct 4, 2026
a5a72b9
T44: a producer can switch its checkout to the night's C
noahgift Oct 4, 2026
36dea70
T44: the nightly producers chain from "Nightly pick" and measure its C
noahgift Oct 4, 2026
fc543ca
T44: a guard that every nightly producer chains from the pick and mea…
noahgift Oct 4, 2026
a6fa93b
T44: rule 3 of the path-filter check moves into awk and accepts the c…
noahgift Oct 4, 2026
f24e472
T44: close the round-1 review findings with a row and a mutant each
noahgift Oct 4, 2026
92322d5
T44: close the round-2 review findings with a row and a mutant each
noahgift Oct 4, 2026
f3e51b3
T44: close the round-3 review findings with a row and a mutant each
noahgift Oct 4, 2026
2ce6892
Merge remote-tracking branch 'origin/main' into build-kaizen/t44-prod…
noahgift Oct 4, 2026
7874b1f
Merge origin/main (526ffd3c10) into build-kaizen/c310-nightly-pick
noahgift Oct 4, 2026
5da18cd
chore(contracts): regenerate the generated set for nightly-pick-v1
noahgift Oct 4, 2026
6e434b2
T44: the train reads a chained producer by its workflow_run runs, and…
noahgift Oct 4, 2026
3ea04cf
T44: a chained run counts only when its night picked C
noahgift Oct 4, 2026
696fbe9
Merge origin/main (acd5031e04) into build-kaizen/c310-nightly-pick
noahgift Oct 5, 2026
3dec70a
T44: a FAIL line ahead of a big output is no longer dropped (printf |…
Oct 5, 2026
b2d6bc0
Merge a7r/t44-sigpipe (3dec70a60b): a FAIL line ahead of a big output…
Oct 5, 2026
6e82d30
Merge origin/main (6192aa9b88) into t44-producers-chain
Oct 5, 2026
9b54cd6
fix(release): nightly pick checks the whole night and sha, not each line
noahgift Oct 5, 2026
f63fc1a
Merge origin/main (6192aa9b88) into the nightly pick whole-value check
noahgift Oct 5, 2026
d176b37
fix(release): nightly pick review round 1, a trailing newline is a ca…
noahgift Oct 5, 2026
8e8d78e
T44: a producer's night is the pick run's created_at, and a failed pi…
noahgift Oct 5, 2026
5a7e459
T44: a noon pick names the next night positively, not only by absence
noahgift Oct 5, 2026
067e2e0
Merge a7w/c310-grepqx into the night table: the pick and its producer…
noahgift Oct 5, 2026
bd003f5
fix(nightly_train): judge the newest commit every verdict lane ran on…
noahgift Oct 5, 2026
91e43bb
chore(quorum): PMAT-4798 receipt, 3 PASS non-author lanes (gemini, ha…
noahgift Oct 5, 2026
c1215d2
test(nightly_train): two rows and two mutants for the J search's chai…
noahgift Oct 5, 2026
17a5783
T44: the night table reads time in integer arithmetic, so the darwin …
noahgift Oct 5, 2026
5d27d8e
T44: cuda-nightly's host preflight runs C's own copy, after the C step
noahgift Oct 5, 2026
270e91e
T44: the pick's night is its run's created_at; the chain guard fails …
noahgift Oct 5, 2026
25179fa
Merge a7w/4749-c310 @270e91e472 into the pin (#4798)
noahgift Oct 5, 2026
8726ad4
T44: a chained run is judged by the pick run it followed, and P7 read…
noahgift Oct 6, 2026
186ed58
T44: the train's query nests each field where GitHub has it, and a fu…
noahgift Oct 6, 2026
cfc60e8
Merge main into the nightly-pick train: both producers stay on the pi…
noahgift Oct 6, 2026
31873fe
T44 #4875: the pmat hunt runs one hop from the pick, after Coverage N…
noahgift Oct 6, 2026
cd75144
T44: the pipe-into-grep-q and DET002 guards are green on the merge wi…
noahgift Oct 6, 2026
2ddc7d9
T44: hops of hops, block and multi-entry workflows: lists, and story …
noahgift Oct 6, 2026
4e52086
Merge #4872 head cd75144349 into the hunt chain: m48 stays dropped
noahgift Oct 6, 2026
b0fefce
Merge origin/main into a7w/4875-hunt-chain
noahgift Oct 6, 2026
1fc6fdc
Merge remote-tracking branch 'origin/main' into a7w/4749-c310-train
noahgift Oct 6, 2026
dc1e9eb
T44: merge main; the moved-head fixture gives the models lane its run
noahgift Oct 6, 2026
0ad7ebc
Merge #4872 head dc1e9eb5ca into the hunt chain
noahgift Oct 6, 2026
07d5f6c
T44: name the month count and the chained run id in nightly_train.sh
noahgift Oct 6, 2026
74f6b88
#4875: on: keys at any indent, a beat defined twice, and P7's exact m…
noahgift Oct 6, 2026
ed69010
Merge #4872 head 07d5f6c868 into #4881
noahgift Oct 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 13 additions & 11 deletions .github/workflows/beat-speed-nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,17 +31,13 @@
name: BEAT Speed (nightly)

on:
schedule:
# SHIFTED so it actually runs at night (#3292). GitHub dispatches
# schedule events 3h51m-6h49m late on this account (28 runs, 10
# workflows, 3 nights, zero on time), so a 05:45 cron fired mid-
# morning and the nightly tier occupied 06:49-14:14 UTC — the
# working day, competing with PR traffic for the same runners.
# Cron is set ~5h EARLY so the delayed dispatch lands near 05:45 UTC.
# This is CALIBRATION AGAINST A MOVING TARGET: the delay varies by
# ~3h and is growing. The durable fix is a fleet-side timer calling
# `gh workflow run` (#3292); until then, re-measure before trusting.
- cron: "45 0 * * *" # 00:45 UTC -> lands ~05:45 UTC
# Chained, not scheduled (T44, #4686): this producer measures the night's
# C that "Nightly pick" pinned at nightly/<night>, never main's head at
# whatever hour GitHub got round to creating a scheduled run.
workflow_run:
workflows: ["Nightly pick"]
types: [completed]
branches: [main]
workflow_dispatch:

jobs:
Expand Down Expand Up @@ -79,6 +75,12 @@ jobs:
BEAT_LOG: ${{ github.workspace }}/beat-speed-measurements.log
steps:
- uses: actions/checkout@v7
- name: Measure the night's C, not main's head (T44)
if: github.event_name == 'workflow_run'
env:
NIGHTLY_PICK_AT: ${{ github.event.workflow_run.created_at }}
NIGHTLY_PICK_CONCLUSION: ${{ github.event.workflow_run.conclusion }}
run: bash scripts/release/nightly_c_checkout.sh --at "$NIGHTLY_PICK_AT" --pick-conclusion "$NIGHTLY_PICK_CONCLUSION"

# PERF-031 measurement-environment receipt.
#
Expand Down
47 changes: 44 additions & 3 deletions .github/workflows/book-contracts.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,14 @@ on:
- ".github/workflows/book-contracts.yml"
# #3676 rule 3 (scripts/check_workflow_path_filters.sh): a path filter is a
# claim that nothing outside these paths can break this gate; the nightly run
# re-checks the claim every day. Set ~5h early for the dispatch delay (#3292).
schedule:
- cron: '45 22 * * *'
# re-checks the claim every night, on the night's C.
# Chained, not scheduled (T44, #4686): this producer measures the night's
# C that "Nightly pick" pinned at nightly/<night>, never main's head at
# whatever hour GitHub got round to creating a scheduled run.
workflow_run:
workflows: ["Nightly pick"]
types: [completed]
branches: [main]


# #3676: no concurrency group meant every superseded PR push ran the ~18 min
Expand All @@ -62,6 +67,12 @@ jobs:
runs-on: [self-hosted, Linux, X64, clean-room]
steps:
- uses: actions/checkout@v7
- name: Measure the night's C, not main's head (T44)
if: github.event_name == 'workflow_run'
env:
NIGHTLY_PICK_AT: ${{ github.event.workflow_run.created_at }}
NIGHTLY_PICK_CONCLUSION: ${{ github.event.workflow_run.conclusion }}
run: bash scripts/release/nightly_c_checkout.sh --at "$NIGHTLY_PICK_AT" --pick-conclusion "$NIGHTLY_PICK_CONCLUSION"
- uses: dtolnay/rust-toolchain@stable
# NO rust-cache: cache-bin false was never the fix.
#
Expand Down Expand Up @@ -106,6 +117,12 @@ jobs:
needs: chapter-examples-compile
steps:
- uses: actions/checkout@v7
- name: Measure the night's C, not main's head (T44)
if: github.event_name == 'workflow_run'
env:
NIGHTLY_PICK_AT: ${{ github.event.workflow_run.created_at }}
NIGHTLY_PICK_CONCLUSION: ${{ github.event.workflow_run.conclusion }}
run: bash scripts/release/nightly_c_checkout.sh --at "$NIGHTLY_PICK_AT" --pick-conclusion "$NIGHTLY_PICK_CONCLUSION"
- uses: dtolnay/rust-toolchain@stable
# NO rust-cache: cache-bin false was never the fix.
#
Expand Down Expand Up @@ -157,6 +174,12 @@ jobs:
runs-on: [self-hosted, Linux, X64, clean-room]
steps:
- uses: actions/checkout@v7
- name: Measure the night's C, not main's head (T44)
if: github.event_name == 'workflow_run'
env:
NIGHTLY_PICK_AT: ${{ github.event.workflow_run.created_at }}
NIGHTLY_PICK_CONCLUSION: ${{ github.event.workflow_run.conclusion }}
run: bash scripts/release/nightly_c_checkout.sh --at "$NIGHTLY_PICK_AT" --pick-conclusion "$NIGHTLY_PICK_CONCLUSION"
- uses: dtolnay/rust-toolchain@stable
# NO rust-cache: cache-bin false was never the fix.
#
Expand Down Expand Up @@ -189,6 +212,12 @@ jobs:
runs-on: [self-hosted, Linux, X64, clean-room]
steps:
- uses: actions/checkout@v7
- name: Measure the night's C, not main's head (T44)
if: github.event_name == 'workflow_run'
env:
NIGHTLY_PICK_AT: ${{ github.event.workflow_run.created_at }}
NIGHTLY_PICK_CONCLUSION: ${{ github.event.workflow_run.conclusion }}
run: bash scripts/release/nightly_c_checkout.sh --at "$NIGHTLY_PICK_AT" --pick-conclusion "$NIGHTLY_PICK_CONCLUSION"
- name: Every chapter has a contract
run: |
FAIL=0
Expand Down Expand Up @@ -249,6 +278,12 @@ jobs:
runs-on: [self-hosted, Linux, X64, clean-room]
steps:
- uses: actions/checkout@v7
- name: Measure the night's C, not main's head (T44)
if: github.event_name == 'workflow_run'
env:
NIGHTLY_PICK_AT: ${{ github.event.workflow_run.created_at }}
NIGHTLY_PICK_CONCLUSION: ${{ github.event.workflow_run.conclusion }}
run: bash scripts/release/nightly_c_checkout.sh --at "$NIGHTLY_PICK_AT" --pick-conclusion "$NIGHTLY_PICK_CONCLUSION"
- name: No legacy imports in chapter examples
run: |
FAIL=0
Expand Down Expand Up @@ -290,6 +325,12 @@ jobs:
runs-on: [self-hosted, Linux, X64, clean-room]
steps:
- uses: actions/checkout@v7
- name: Measure the night's C, not main's head (T44)
if: github.event_name == 'workflow_run'
env:
NIGHTLY_PICK_AT: ${{ github.event.workflow_run.created_at }}
NIGHTLY_PICK_CONCLUSION: ${{ github.event.workflow_run.conclusion }}
run: bash scripts/release/nightly_c_checkout.sh --at "$NIGHTLY_PICK_AT" --pick-conclusion "$NIGHTLY_PICK_CONCLUSION"
- name: No dead links in SUMMARY.md
run: |
FAIL=0
Expand Down
17 changes: 14 additions & 3 deletions .github/workflows/book.yml
Original file line number Diff line number Diff line change
Expand Up @@ -51,9 +51,14 @@ on:
- "crates/apr-cli/src/tool_commands.rs"
# #3676 rule 3 (scripts/check_workflow_path_filters.sh): a path filter is a
# claim that nothing outside these paths can break this gate; the nightly run
# re-checks the claim every day. Set ~5h early for the dispatch delay (#3292).
schedule:
- cron: '30 22 * * *'
# re-checks the claim every night, on the night's C.
# Chained, not scheduled (T44, #4686): this producer measures the night's
# C that "Nightly pick" pinned at nightly/<night>, never main's head at
# whatever hour GitHub got round to creating a scheduled run.
workflow_run:
workflows: ["Nightly pick"]
types: [completed]
branches: [main]

permissions:
contents: read
Expand All @@ -75,6 +80,12 @@ jobs:
runs-on: [self-hosted, Linux, X64, clean-room]
steps:
- uses: actions/checkout@v7
- name: Measure the night's C, not main's head (T44)
if: github.event_name == 'workflow_run'
env:
NIGHTLY_PICK_AT: ${{ github.event.workflow_run.created_at }}
NIGHTLY_PICK_CONCLUSION: ${{ github.event.workflow_run.conclusion }}
run: bash scripts/release/nightly_c_checkout.sh --at "$NIGHTLY_PICK_AT" --pick-conclusion "$NIGHTLY_PICK_CONCLUSION"

# Self-hosted (#3073): tools go into this run's private $RUNNER_TEMP, never a $HOME path that every
# runner on the box execs from (the aprender#2353 race; check_cargo_install_private_root.sh enforces
Expand Down
17 changes: 13 additions & 4 deletions .github/workflows/conleche-nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,13 @@
name: conleche-nightly

on:
schedule:
# 21:23 UTC -> lands ~02:23 UTC. GitHub dispatches schedules ~5h late on this account (#3292); the slot is
# free and clear of guards-nightly (21:47) and cuda-nightly (20:30).
- cron: '23 21 * * *'
# Chained, not scheduled (T44, #4686): this producer measures the night's
# C that "Nightly pick" pinned at nightly/<night>, never main's head at
# whatever hour GitHub got round to creating a scheduled run.
workflow_run:
workflows: ["Nightly pick"]
types: [completed]
branches: [main]
workflow_dispatch:

concurrency:
Expand All @@ -49,6 +52,12 @@ jobs:
- uses: actions/checkout@v7
with:
fetch-depth: 1
- name: Measure the night's C, not main's head (T44)
if: github.event_name == 'workflow_run'
env:
NIGHTLY_PICK_AT: ${{ github.event.workflow_run.created_at }}
NIGHTLY_PICK_CONCLUSION: ${{ github.event.workflow_run.conclusion }}
run: bash scripts/release/nightly_c_checkout.sh --at "$NIGHTLY_PICK_AT" --pick-conclusion "$NIGHTLY_PICK_CONCLUSION"
- name: Verdict case table (the classifier this job trusts)
run: bash crates/aprender-contracts-staging/lean/conleche.sh --self-test
- name: Pinned elan in the job's own directory (sha256-checked, never a host install)
Expand Down
24 changes: 13 additions & 11 deletions .github/workflows/coverage-nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,17 +21,13 @@ name: Coverage Nightly
# measurement ever worked.

on:
schedule:
# SHIFTED so it actually runs at night (#3292). GitHub dispatches
# schedule events 3h51m-6h49m late on this account (28 runs, 10
# workflows, 3 nights, zero on time), so a 03:00 cron fired mid-
# morning and the nightly tier occupied 06:49-14:14 UTC — the
# working day, competing with PR traffic for the same runners.
# Cron is set ~5h EARLY so the delayed dispatch lands near 03:00 UTC.
# This is CALIBRATION AGAINST A MOVING TARGET: the delay varies by
# ~3h and is growing. The durable fix is a fleet-side timer calling
# `gh workflow run` (#3292); until then, re-measure before trusting.
- cron: '0 22 * * *' # 22:00 UTC -> lands ~03:00 UTC
# Chained, not scheduled (T44, #4686): this producer measures the night's
# C that "Nightly pick" pinned at nightly/<night>, never main's head at
# whatever hour GitHub got round to creating a scheduled run.
workflow_run:
workflows: ["Nightly pick"]
types: [completed]
branches: [main]
workflow_dispatch: {}
# #3676: no v* tag trigger here. The release tag's coverage is owned by ci.yml
# (`coverage_on: tag`, which sovereign-ci's gate requires on a tag push), so a tag
Expand Down Expand Up @@ -109,6 +105,12 @@ jobs:
- uses: actions/checkout@v7
with:
clean: false
- name: Measure the night's C, not main's head (T44)
if: github.event_name == 'workflow_run'
env:
NIGHTLY_PICK_AT: ${{ github.event.workflow_run.created_at }}
NIGHTLY_PICK_CONCLUSION: ${{ github.event.workflow_run.conclusion }}
run: bash scripts/release/nightly_c_checkout.sh --at "$NIGHTLY_PICK_AT" --pick-conclusion "$NIGHTLY_PICK_CONCLUSION"

# Provision cargo-llvm-cov WITHOUT touching ~/.cargo/bin (#2353).
#
Expand Down
39 changes: 25 additions & 14 deletions .github/workflows/cuda-nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,17 +44,13 @@ name: CUDA Nightly (GPU QLoRA falsifiers)
# without deleting the workflow.

on:
schedule:
# SHIFTED so it actually runs at night (#3292). GitHub dispatches
# schedule events 3h51m-6h49m late on this account (28 runs, 10
# workflows, 3 nights, zero on time), so a 01:30 cron fired mid-
# morning and the nightly tier occupied 06:49-14:14 UTC — the
# working day, competing with PR traffic for the same runners.
# Cron is set ~5h EARLY so the delayed dispatch lands near 01:30 UTC.
# This is CALIBRATION AGAINST A MOVING TARGET: the delay varies by
# ~3h and is growing. The durable fix is a fleet-side timer calling
# `gh workflow run` (#3292); until then, re-measure before trusting.
- cron: "30 20 * * *" # 20:30 UTC -> lands ~01:30 UTC
# Chained, not scheduled (T44, #4686): this producer measures the night's
# C that "Nightly pick" pinned at nightly/<night>, never main's head at
# whatever hour GitHub got round to creating a scheduled run.
workflow_run:
workflows: ["Nightly pick"]
types: [completed]
branches: [main]
workflow_dispatch:
inputs:
silicon:
Expand Down Expand Up @@ -165,7 +161,7 @@ jobs:
# NOT_RUN is not PASS.
mkdir -p "$PERF041_OUT"
printf '{"host":"%s","status":"NOT_RUN","reason":"yield to training (%s MiB, %s procs)","started_utc":"%s","commit":"%s","exit":null,"max_m":null,"cc":null,"sha256":null}\n' \
"${{ matrix.name }}" "${used:-?}" "${procs:-?}" "$(date -u +%Y-%m-%dT%H:%M:%SZ)" "${{ github.sha }}" \
"${{ matrix.name }}" "${used:-?}" "${procs:-?}" "$(date -u +%Y-%m-%dT%H:%M:%SZ)" "${{ github.event.workflow_run.head_sha || github.sha }}" \
> "$PERF041_OUT/marker.json"
echo "proceed=false" >> "$GITHUB_OUTPUT"; exit 0
fi
Expand All @@ -174,11 +170,20 @@ jobs:
- uses: actions/checkout@v7
if: steps.decide.outputs.proceed == 'true'

# The first thing gx10 does once it has a tree. NOT before `decide` and
# NOT before the checkout, for the reason the comment below spells out:
- name: Measure the night's C, not main's head (T44)
if: github.event_name == 'workflow_run' && (steps.decide.outputs.proceed == 'true')
env:
NIGHTLY_PICK_AT: ${{ github.event.workflow_run.created_at }}
NIGHTLY_PICK_CONCLUSION: ${{ github.event.workflow_run.conclusion }}
run: bash scripts/release/nightly_c_checkout.sh --at "$NIGHTLY_PICK_AT" --pick-conclusion "$NIGHTLY_PICK_CONCLUSION"

# The first thing this job does once its tree is C (the step above). NOT before
# `decide`, and NOT before the checkout, for the reason the comment below spells out:
# on a yield night there is no working tree, so a step that `bash`es a
# repo path exits 127 and turns a deliberately-yielded night RED. It
# carries the same `if:` as the checkout it follows.
# It comes AFTER the C step, not between the checkout and it: there it
# ran main's head's copy of the preflight, so it did not judge C's own.
#
# gx10 is the box where run 34448908554 died on `gh: command not found`
# after a 21 MB CUDA build. Everything below this line assumes cargo,
Expand Down Expand Up @@ -802,6 +807,12 @@ jobs:
CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUNNER: flock -E 175 -w 600 /run/lock/fleet-gpu/gpu.lock
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Measure the night's C, not main's head (T44)
if: github.event_name == 'workflow_run'
env:
NIGHTLY_PICK_AT: ${{ github.event.workflow_run.created_at }}
NIGHTLY_PICK_CONCLUSION: ${{ github.event.workflow_run.conclusion }}
run: bash scripts/release/nightly_c_checkout.sh --at "$NIGHTLY_PICK_AT" --pick-conclusion "$NIGHTLY_PICK_CONCLUSION"

- name: Put the runner's Rust toolchain on PATH
run: echo "$HOME/.cargo/bin" >> "$GITHUB_PATH"
Expand Down
24 changes: 13 additions & 11 deletions .github/workflows/examples-nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,17 +9,13 @@
name: examples-nightly

on:
schedule:
# SHIFTED so it actually runs at night (#3292). GitHub dispatches
# schedule events 3h51m-6h49m late on this account (28 runs, 10
# workflows, 3 nights, zero on time), so a 03:30 cron fired mid-
# morning and the nightly tier occupied 06:49-14:14 UTC — the
# working day, competing with PR traffic for the same runners.
# Cron is set ~5h EARLY so the delayed dispatch lands near 03:30 UTC.
# This is CALIBRATION AGAINST A MOVING TARGET: the delay varies by
# ~3h and is growing. The durable fix is a fleet-side timer calling
# `gh workflow run` (#3292); until then, re-measure before trusting.
- cron: '30 22 * * *' # 22:30 UTC -> lands ~03:30 UTC
# Chained, not scheduled (T44, #4686): this producer measures the night's
# C that "Nightly pick" pinned at nightly/<night>, never main's head at
# whatever hour GitHub got round to creating a scheduled run.
workflow_run:
workflows: ["Nightly pick"]
types: [completed]
branches: [main]
workflow_dispatch:
inputs:
filter:
Expand All @@ -41,6 +37,12 @@ jobs:
timeout-minutes: 300
steps:
- uses: actions/checkout@v7
- name: Measure the night's C, not main's head (T44)
if: github.event_name == 'workflow_run'
env:
NIGHTLY_PICK_AT: ${{ github.event.workflow_run.created_at }}
NIGHTLY_PICK_CONCLUSION: ${{ github.event.workflow_run.conclusion }}
run: bash scripts/release/nightly_c_checkout.sh --at "$NIGHTLY_PICK_AT" --pick-conclusion "$NIGHTLY_PICK_CONCLUSION"

- name: dogfood_examples.sh case table (hermetic, scratch workspace)
run: bash scripts/dogfood_examples.sh --selftest
Expand Down
Loading
Loading