Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
258 commits
Select commit Hold shift + click to select a range
71d0b2a
fix(b2): rustfmt 19 include!d files main added after the include-fmt …
noahgift Sep 25, 2026
aec0b67
fix(car/0.70.0): two more build.rs clippy reds (orchestrate unused Pa…
noahgift Sep 25, 2026
dd6afad
fix(car/0.70.0): book chapter for apr ptx-debug β€” Build Book red (FAL…
noahgift Sep 25, 2026
93aa211
audit(car/0.70.0): #4429 quorum receipt β€” 3/3 PASS at dd6afadf4 (degr…
noahgift Sep 25, 2026
4607741
fix(b2): real_model_iq_ab over cognitive 25 once rustfmt made pmat me…
noahgift Sep 25, 2026
6965f9f
fix(contract): BINRULE-004 after 003 β€” the ID gap raised the integrit…
noahgift Sep 25, 2026
1390050
fix(features): apr-cli --features wgpu compiles and is clippy-clean (…
noahgift Sep 24, 2026
798fb8c
release(0.70.0): bump-version 0.70.0
noahgift Sep 25, 2026
171d276
fix(profile): aarch64 syscall table named brk as recvmsg β€” 34 rows of…
noahgift Sep 25, 2026
99c6c61
fix(clippy): 12 chunks_exact_to_as_chunks in aprender-serve β€” the cei…
noahgift Sep 25, 2026
a94d31c
merge origin/main into #4427 β€” roadmap resolved as the union (PMAT-43…
noahgift Sep 25, 2026
8bf305b
merge origin/main (00058476c, #4421) into car/0.70.0 β€” roadmap.yaml r…
Sep 25, 2026
a5ce356
pr-review receipt for car #4429 at merge 8bf305b44 (re-bound to merge…
noahgift Sep 25, 2026
50f6a98
chore(pr-review): sign this PR's receipt (PR-REVIEW-SKILL-002 v2 Β§4.3…
claude Sep 25, 2026
caa9ebe
fix(car): FUSION-006/007/010 call sites +13 after the GDN indirect ar…
noahgift Sep 25, 2026
0ab685a
pr-review receipt for car #4429 at caa9ebe49 (fix delta quorum 3/3 PASS)
noahgift Sep 25, 2026
bfd46bb
chore(pr-review): sign this PR's receipt (PR-REVIEW-SKILL-002 v2 Β§4.3…
claude Sep 25, 2026
ba64b39
fix(ci): docker run --init under the 4 setsid-wrapped container steps…
noahgift Sep 25, 2026
972316e
evidence(pr-review): #4427 receipt at a94d31ca8 β€” DEGRADED (cuda-docs…
noahgift Sep 25, 2026
80aedd8
chore(pr-review): sign this PR's receipt (PR-REVIEW-SKILL-002 v2 Β§4.3…
claude Sep 25, 2026
0cd5ac4
fix(guard): fleet pv older than a shape key the tree parses is UNMEAS…
noahgift Sep 25, 2026
76d7659
fix(release): G-ONT is an rc gate, not a per-PR guard β€” guard-tree ra…
noahgift Sep 25, 2026
53542ee
fix(release): G-ONT cd/self-test edits missed c9a491272 β€” the move sh…
noahgift Sep 25, 2026
decb224
fix(bashrs_pin): fall back to RUNNER_TEMP when the default pin root i…
noahgift Sep 25, 2026
2eb3489
pr-review receipt for car #4429 at decb22431 (fix delta quorum 3/3 PASS)
noahgift Sep 25, 2026
02ec850
fix(guard): fleet pv shapes gate reads only NODE_KEYS/PROPERTY_KEYS a…
noahgift Sep 25, 2026
8f4f47c
pr-review receipt for car #4429 at 02ec850c4 (fix delta quorum 3/3 PASS)
noahgift Sep 25, 2026
f2bed7d
chore(pr-review): sign this PR's receipt (PR-REVIEW-SKILL-002 v2 Β§4.3…
claude Sep 25, 2026
1127554
fix(cb200): the car's 7 below-B definitions β€” car net 624 -> 617, 3 u…
noahgift Sep 25, 2026
c6f31a7
evidence(pr-review): #4427 receipt at 80aedd8b5 β€” DEGRADED
noahgift Sep 26, 2026
820a5ba
merge origin/main into #4427 β€” roadmap resolved as the union
noahgift Sep 26, 2026
619dc1d
findings: ci_gpu_touched_test row 8 red on main, test unwired (dark)
noahgift Sep 26, 2026
3631326
fix(car): three reds on f2bed7dc3 β€” setfit binding rows, bashrs 7.4.1…
noahgift Sep 26, 2026
dd59079
contracts: regenerate contracts.nt with the tree's pv (check 0, 19883…
noahgift Sep 26, 2026
13b0e89
fix(cb200): one-time re-baseline 599 -> 617, pinned to main's MEASURE…
noahgift Sep 26, 2026
be4b70c
fix(cb200): close the quorum's two blockers on the one-time re-baseli…
noahgift Sep 26, 2026
75e2c70
fix(cb200): a full clone refuses a receipt sha it cannot resolve (quo…
noahgift Sep 26, 2026
f243bbe
fix(bins): the bin-name guard needs no python -- the sovereign-ci ima…
noahgift Sep 26, 2026
b2db08d
pr-review receipt for car #4429 at 75e2c7038 (fix delta quorum 3/3 PASS)
noahgift Sep 26, 2026
7a16a4f
fix(#4430): nested satellite nightly workflows still named renamed bins
noahgift Sep 26, 2026
24ed515
docs(#4430): consumers still ran the old ptop/simular bins and the ol…
noahgift Sep 26, 2026
9f7d1d6
merge origin/main a016cee94 into the 0.70.0 car β€” ci.yml takes main's…
noahgift Sep 26, 2026
435fc64
pr-review receipt for car #4429 at 9f7d1d67d (merge delta quorum 3/3 …
noahgift Sep 26, 2026
4d8e4e3
fix(#4430): rename the two in-source bin identities agy lane F3 found
noahgift Sep 26, 2026
f4b47fc
fix(car): four x86-main reds on 435fc6444 β€” fmt, Ξ£ should_panic ids, …
noahgift Sep 26, 2026
698e52d
fix(ci): pr-review-sign secret name β€” #4441 passed secrets.PR_REVIEW_…
noahgift Sep 26, 2026
257dbfe
evidence(pr-review/4429): rebind receipt to 698e52d76b68b27556082edd2…
noahgift Sep 26, 2026
e00d960
chore(pr-review): sign this PR's receipt (PR-REVIEW-SKILL-002 v2 Β§4.3…
claude Sep 26, 2026
feef845
ci(x86-main): fail fast β€” fmt, falsification-ID order, guard case tab…
noahgift Sep 26, 2026
d9f7735
evidence(pr-review/4429): rebind receipt to feef84587a29ff7de75d91ad1…
noahgift Sep 26, 2026
33c423d
chore(pr-review): sign this PR's receipt (PR-REVIEW-SKILL-002 v2 Β§4.3…
claude Sep 26, 2026
dfb436d
ci(car): empty commit to fire pull_request_target on the signed head
noahgift Sep 26, 2026
8fe9943
fix(car): receipt subject names the real head; crux gaps filed as fin…
noahgift Sep 26, 2026
d1568f8
chore(pr-review): sign this PR's receipt (PR-REVIEW-SKILL-002 v2 Β§4.3…
claude Sep 26, 2026
817d633
chore(car): rebind the review receipt to 8fe9943f4 (delta quorum r14)
noahgift Sep 26, 2026
a122f15
chore(pr-review): sign this PR's receipt (PR-REVIEW-SKILL-002 v2 Β§4.3…
claude Sep 26, 2026
a58c77b
fix(#4430): old bin names were still INVOKED β€” sweep the 8 renamed CL…
noahgift Sep 26, 2026
795bd89
Merge origin/car/0.70.0 into #4427 B2 (CI/infra batch)
noahgift Sep 26, 2026
24a04c6
fix(car): register hidden `surface` in the command contract; fail_fas…
noahgift Sep 26, 2026
169bae1
evidence(pr-review): rebind #4429 receipt to 24a04c64f (delta quorum …
noahgift Sep 26, 2026
6085e96
chore(pr-review): sign this PR's receipt (PR-REVIEW-SKILL-002 v2 Β§4.3…
claude Sep 26, 2026
e926b36
Merge origin/1c/findings-gpu-touched-row8 into #4427 B2 (without #441…
noahgift Sep 26, 2026
56269b6
style(b2): rustfmt the four car-side include!d files the #4151 ratche…
noahgift Sep 26, 2026
d43b4be
Merge branch 'main' of github.com:paiml/aprender into HEAD
noahgift Sep 26, 2026
2ea857c
fix(car): x86-main 36237640401 β€” contracts gate ran only pv lint; tar…
noahgift Sep 26, 2026
399ac27
feat(ci): guards run all, on car's fat-job CI (#4415 port of #4457)
noahgift Sep 26, 2026
d78107e
docs(roadmap): PMAT-4415 entry for the guards-run-all car port
noahgift Sep 26, 2026
b0c0ef7
docs(ci): say why three guard-tree steps stay outside the manifest; A…
noahgift Sep 26, 2026
187466b
fix(ci): the port's own guards β€” classify both new ratchet files, one…
noahgift Sep 26, 2026
2ead5f3
fix(ci): a guard step's cap must fit car's guard_tree.sh, and a timeo…
noahgift Sep 26, 2026
a7602bc
evidence(pr-review): rebind #4429 receipt to 2ea857c16 (delta quorum …
noahgift Sep 26, 2026
69e12ae
chore(pr-review): sign this PR's receipt (PR-REVIEW-SKILL-002 v2 Β§4.3…
claude Sep 26, 2026
f02cd34
fix(roadmap): the B2 pick carries only the PMAT-4415 entry, not an 18…
noahgift Sep 26, 2026
8d22414
fold #4304 (perf/4273-split-decode-attention-main) into B1 batch
noahgift Sep 24, 2026
1ac56f2
fix(#4273): claim literals out of 2 doc comments (from #4428 4ef3f58b…
noahgift Sep 26, 2026
91d4faa
fix(ci): pass PR_REVIEW_SIGNING_KEY_B64 to the fat job β€” #4441 passed…
noahgift Sep 26, 2026
1b3095e
docs(PMAT-4478): roadmap fragment + implementation receipt
noahgift Sep 26, 2026
97f0982
docs(PMAT-4478): quorum artifact β€” 3/3 PASS
noahgift Sep 26, 2026
50d5451
perf(guard): crux judge's 24 F6 mutant re-runs run CRUX_MUT_JOBS at a…
noahgift Sep 26, 2026
4454abb
perf(guard): CB-200's receipt re-measure runs alongside the live-tree…
noahgift Sep 26, 2026
649d2f9
perf(guard): crux_ollama_in_lock drops a dead find over all of /tmp
noahgift Sep 26, 2026
1bef9d5
perf(guard): src_test_files_wired reads each owner once and matches i…
noahgift Sep 26, 2026
a066d25
perf(guard): include_files reads git's tracked set once instead of on…
noahgift Sep 26, 2026
b2057f0
perf(guard): unwired_capabilities scans all eligible files with ONE awk
noahgift Sep 26, 2026
d02cdda
perf(guard): perf_gate reads every arm's phase once per run_gate, not…
noahgift Sep 26, 2026
50c0270
perf(guard): release_host_receipts runs its 94 rows/mutants in a boun…
noahgift Sep 26, 2026
0d51aaa
fix(perf_gate): the phase loader's receiver is mx_arm, the name the f…
noahgift Sep 26, 2026
ff4a7af
perf(guard): perf_receipt_fields searches receivers in a tail window,…
noahgift Sep 26, 2026
321e064
fix(lint): assoc-array writes on their own line (bashrs BRS0010/SC213…
noahgift Sep 26, 2026
957ebf5
feat(guard_tree): record each guard's seconds and print the slowest
noahgift Sep 26, 2026
11bcf6c
style(#4273): rustfmt the PassRegs literal left unformatted by the 8d…
noahgift Sep 26, 2026
d60935b
merge 5d/b2-4415 @957ebf5d67 into the CI-speed fold (B2 + #4415 guard…
noahgift Sep 26, 2026
8f5cb5e
perf(test): the x86-main SLOW tests -- trueno at opt-level 3 in dev, …
noahgift Sep 26, 2026
65bbcef
perf(test): contracts lint::tests lint the real corpus twice, not fif…
noahgift Sep 26, 2026
7ffbcf6
contracts gate fails closed and runs every step: `make contracts` sto…
noahgift Sep 26, 2026
672fa47
ONT-4c4: kernel receipts as focus nodes β€” extract:kernel over extract…
noahgift Sep 26, 2026
7290582
O-1 (#3522): gated_rmsnorm cuda-oxide receipt on lambda β€” parity 1.0,…
noahgift Sep 26, 2026
367ae45
PMAT-4481: roadmap entry + receipt for the ONT batch
noahgift Sep 26, 2026
c074ace
docs(audit): PMAT-4481 quorum AGREED 3/3 (sonnet-5, gemini-3.1-pro-hi…
noahgift Sep 26, 2026
639ea2d
fix(fold): two lint reds B2 carried onto car β€” cli-surface unmapped i…
noahgift Sep 26, 2026
1523dbc
fix(gate0): kernel-fusion-v1 FUSION-006/007/010 call_sites follow the…
noahgift Sep 26, 2026
eccba96
PMAT-3786: APR Q4K GPU chat samples from the request's seeded RNG thr…
noahgift Sep 21, 2026
929b487
PMAT-3817: apr run --gpu on qwen3moe refuses pre-load by name instead…
noahgift Sep 22, 2026
b7bc099
fix(train): drop the unused rms_norm_forward imports (--features cuda)
noahgift Sep 22, 2026
887b113
feat(cuda): wire IQ4_NL through the executor β€” whitelist still SHUT (…
noahgift Sep 22, 2026
4ffd711
fix(chat): route the .apr GPU path onto the working class, with the F…
Sep 23, 2026
5f45894
fix(dtype): name BF16(30) in the prose whitelist β€” the #3944 guard ca…
noahgift Sep 23, 2026
1204f9d
fix(apr code): name the thinking flag --thinking on|off, as apr run/c…
noahgift Sep 23, 2026
d3ec669
feat(3990): serve renders the GGUF's own chat_template (openai, cuda …
noahgift Sep 23, 2026
4a786f4
feat(3990): apr qa golden default leg asks in the GGUF's own chat_tem…
noahgift Sep 23, 2026
5d629a6
fix(3990): apr run's GGUF prompt honours --thinking via official_or_l…
noahgift Sep 23, 2026
82afbf8
perf(qwen35): 2048-row GEMM chunks on unified-memory hosts β€” dequant …
noahgift Sep 21, 2026
f613e9c
feat(qwen35): a prefill plan's fallback is printed, never silent (Ref…
noahgift Sep 21, 2026
d4f2222
perf(qwen35-cuda): forward_single reuses one device residual instead …
noahgift Sep 24, 2026
6af6c07
fix(serve): SafeTensors chat/generate stop at EOS/<|im_end|> and hono…
noahgift Sep 24, 2026
1ca5e07
perf(serve): derive the APR CPU stop set once at load, not per reques…
noahgift Sep 24, 2026
e1dff29
test(#4214): RED β€” a repeated or re-rendered prompt resumes from the …
noahgift Sep 24, 2026
59b83ee
fix(session): a repeated or re-rendered prompt resumes from a recurre…
noahgift Sep 24, 2026
8308cf9
fix(serve): /v1/effective-config agrees with /health on the Qwen3.5 h…
noahgift Sep 24, 2026
faa5823
fix(run): wgpu decode prefills the prompt; delete dead run paths; one…
noahgift Sep 24, 2026
7f44540
perf(session): poll the cancel token before the decode forward, not a…
noahgift Sep 24, 2026
b37583f
fix(serve): a turn past MIN_CAPACITY re-prefilled the next turn from …
noahgift Sep 25, 2026
4d9dbea
perf(qwen35): f16 tensor-core prefill GEMM + load-time fp16 weight pr…
noahgift Sep 25, 2026
b9c5d47
perf(qwen35): f16 prefill GEMM on a tensor-op cuBLAS handle (#4313)
noahgift Sep 25, 2026
3f5f252
perf(qwen35): f16 prefill GEMM is the default, f32 when it cannot be …
noahgift Sep 25, 2026
591113f
fix(qwen35): wait for the fp16 prewarm before arming f16 (#4313)
noahgift Sep 25, 2026
596f448
style: rustfmt the files the car-069 backports touched
noahgift Sep 26, 2026
cfdcb61
fix(f2): key the F2 receipt on the executable's sha256, not the versi…
noahgift Sep 24, 2026
165c06f
refactor(serve): DELETE-DUP β€” two test-only generate loops and the te…
noahgift Sep 24, 2026
a9a0505
evidence(0.69.4): Qwen3.5-9B temp-0 refs at 850/4k/32k (#4261)
noahgift Sep 24, 2026
fe84688
fix(f2): split decide's key comparison into key_mismatch (complexity …
noahgift Sep 24, 2026
77d48fa
fix(audit): re-audit GET /tensors row β€” safetensors.rs:164 was the /h…
noahgift Sep 24, 2026
6d33fe5
fix(claims): 0.69.4 guard-cargo red β€” handler_gpu_completion speed li…
noahgift Sep 24, 2026
de0e86f
fix(paths): 0.69.4 qwen35-9b harness model path via ${APR_MODELS:-$HO…
noahgift Sep 24, 2026
04225ab
test(#4214): a prompt prefills in two batched spans, split at its gen…
noahgift Sep 24, 2026
82c77fa
test(#4274): a re-rendered chat turn resumes from turn 1's checkpoint…
noahgift Sep 25, 2026
082ec3b
fix(dogfood): the declared ladder gate reads a release's RECORDED sco…
noahgift Sep 23, 2026
f249afa
docs(audits): GH-4086 implementation receipt + work entry
noahgift Sep 23, 2026
b8e7173
docs(audits): GH-4086 quorum receipt for 708c6bfce -- 3/3 PASS, parti…
noahgift Sep 24, 2026
07dc6ac
test(crux): #3797 serve mutants β€” drop the key's mode, drop apr serve…
noahgift Sep 24, 2026
baceea3
fix(crux): #4341 a killed serve sweep keeps its finished rows β€” plan.…
noahgift Sep 24, 2026
e566207
chore(roadmap): regenerate after the #4086 pick (GH-4086 fragment)
noahgift Sep 25, 2026
0853a77
fix(version): apr names its commit on both published surfaces, never …
noahgift Sep 23, 2026
ee0e09a
fix(test): #4250's serve prefill count follows #4214's two-span split…
noahgift Sep 25, 2026
b9903ed
ci(cuda-nightly): run #4250's serve batched-prefill test on gx10; a S…
noahgift Sep 26, 2026
bbfbe9f
fix(cuda-nightly): #4251's --exact filter needs the full test path, o…
noahgift Sep 26, 2026
486b6e2
fix(guards): clear #4318's two guard reds β€” contract ID order, and a …
noahgift Sep 25, 2026
0975f36
feat(release): aarch64-apple-darwin apr CPU asset, required by the as…
noahgift Sep 26, 2026
fc00d76
feat(release): darwin lane runs on the self-hosted mini-builder, not …
noahgift Sep 26, 2026
ba23332
fix(release): #4292 darwin lane passes check_runner_labels + grep-q r…
noahgift Sep 24, 2026
ee68338
test(serve): /health and /v1/effective-config agree through the route…
noahgift Sep 25, 2026
ad8dc29
fix(release): stamp_rc_version.sh stamps without python3, and reads e…
noahgift Sep 25, 2026
5fe8eb5
fix(roadmap): regenerate the aggregate after the 0.69.4 picks (PMAT-4…
noahgift Sep 25, 2026
0b5e19f
qwen-story-daily builds apr in place instead of cargo-installing into…
noahgift Sep 26, 2026
70d1944
docs(audits): PMAT-4346 quorum receipt for c4fd00a36 -- 3/3 PASS, deg…
noahgift Sep 25, 2026
491c4c4
install.sh: --channel rc installs the newest -rc prerelease (closes #…
noahgift Sep 24, 2026
b42a213
feat(install): curl | bash e2e in a clean container, per channel, nig…
noahgift Sep 26, 2026
c3ddce6
docs(audits): PMAT-3546 quorum receipt -- 3/3 PASS, degraded same-fam…
noahgift Sep 25, 2026
344ac7a
evidence(pr-review): #4318 receipt at f23083206 β€” DEGRADED (cuda-docs…
noahgift Sep 25, 2026
3d677a8
fix(release): darwin apr lane stamps the rc version and checks it (#4…
noahgift Sep 26, 2026
e84ff3c
docs(quorum): 0.69.4 batch1 receipt β€” 3/3 PASS after darwin rc-stamp …
noahgift Sep 25, 2026
8555a6a
chore(pr-review): sign this PR's receipt (PR-REVIEW-SKILL-002 v2 Β§4.3…
claude Sep 25, 2026
7823114
fix(release): pin apr in the curl|bash e2e and stamp the darwin lane'…
noahgift Sep 26, 2026
6135c12
fix(install-e2e): bashrs 0 warnings on the pinned-apr line (#4318)
noahgift Sep 25, 2026
fd39a16
fix(release): stamp_rc_version.sh restores nullglob without eval (bas…
noahgift Sep 25, 2026
1a67a51
fix(#4318): three code reds at 90f8ec7a5 β€” FUSION pins, generate comp…
noahgift Sep 25, 2026
8ea9b35
test(qwen35): f16 budget from the measured reading x10; fits refuses …
noahgift Sep 25, 2026
891b902
fix(claims): drop 3 tok/s literals from the #4273 split-decode comments
noahgift Sep 25, 2026
09434ed
fix(backport): #4269 test calls st_cpu_generate with a QuantizedGener…
noahgift Sep 26, 2026
bcae0ac
ci: carry the 0.69.x workflow-only backports onto car (86d3775af, f6d…
noahgift Sep 26, 2026
196bf34
test(build-sha): re-anchor the no-retry plant after the #4254 backpor…
noahgift Sep 26, 2026
03dacd5
evidence(pr-review): #4479 receipt at 97f0982a1 β€” FINDINGS
noahgift Sep 26, 2026
6aecaec
chore(pr-review): sign this PR's receipt (PR-REVIEW-SKILL-002 v2 Β§4.3…
claude Sep 26, 2026
111298f
Merge branch 'main' into fix/fat-signer-secret-b64
noahgift Sep 26, 2026
bda8cd8
fix(b2): two B2 guards read ci.yml, where #4441 left no guard step β€” …
noahgift Sep 26, 2026
994abc2
fix(fold): B2's setsid wraps and ordinals did not carry into car's la…
noahgift Sep 26, 2026
160d650
fix(roadmap): B1's three roadmap picks spliced their entries into car…
noahgift Sep 26, 2026
c739c3d
merge origin/main (57d7f8edd) into car/0.70.0: #4471 workspace-test s…
noahgift Sep 26, 2026
570b89e
evidence(pr-review): rebind #4429 receipt to c739c3d24 (r19 + r20 3/3…
noahgift Sep 26, 2026
548dd2c
test(lint): lint_severity_filter was vacuous on the knob corpus β€” req…
noahgift Sep 26, 2026
6f5d2ea
evidence(pr-review): #4479 v2 receipt at 111298fda β€” DEGRADED (Arm 4 …
noahgift Sep 26, 2026
63bc1e8
chore(pr-review): sign this PR's receipt (PR-REVIEW-SKILL-002 v2 Β§4.3…
claude Sep 26, 2026
c9e720f
fix(guard): the perf-receipt producer guard's tail window could decid…
noahgift Sep 26, 2026
7c0f74f
chore(pr-review): sign this PR's receipt (PR-REVIEW-SKILL-002 v2 Β§4.3…
claude Sep 26, 2026
9da3231
ci: run checks on the signed receipt head
noahgift Sep 26, 2026
dd829c5
evidence(pr-review): drop #4479's superseded v1 receipt β€” Arm 4 match…
noahgift Sep 26, 2026
bbcb741
docs(guard): check_guard_steps_isolated said ci.yml calls no guard β€” …
noahgift Sep 26, 2026
b757dd9
fix(binding): a #[kernel] beside its CPU reference was a BINDING-006 …
noahgift Sep 26, 2026
bde6d8e
fix(serve): clippy borrow_deref_ref in residual.rs β€” car/0.70.0 cuda …
noahgift Sep 26, 2026
8a94f58
PMAT-4481: receipt states the BINDING-006 / SC2171 fix delta
noahgift Sep 26, 2026
19826dc
PMAT-4481: scope the CI-fix delta in the ticket; two-references RED i…
noahgift Sep 26, 2026
51c1490
PMAT-4481: delta quorum receipt over c074ace09d
noahgift Sep 27, 2026
f6fa4cf
fix(roadmap): regenerate roadmap.yaml from entries/ (make roadmap-agg…
noahgift Sep 27, 2026
53248ad
fix(serve): ship the gguf-header-slices fixtures inside the crate (#4…
noahgift Sep 24, 2026
57607a0
fix(tests): four crates read their out-of-crate test fixtures at run …
noahgift Sep 24, 2026
dfe3dad
fix(package): four crates no longer ship tests that cannot compile fr…
noahgift Sep 24, 2026
fcb2f2d
fix(apr-cli): tests that read workspace files skip by name out of tre…
noahgift Sep 24, 2026
67ff608
fix(guard): tree-reader oracle was blind to workspace_*_or_skip! call…
noahgift Sep 24, 2026
71888b0
fix(#4130): aprender-core unit tests read repo-root contracts at run …
noahgift Sep 24, 2026
0aca6cd
PMAT-4481: criterion 1 names the CI-fix delta instead of claiming not…
noahgift Sep 27, 2026
9f390a3
fix(serve): fusion call-site guard reads its contract at run time (#4…
noahgift Sep 27, 2026
108578e
fix(ci): fat_driver moves an undeletable leftover section tree aside …
noahgift Sep 27, 2026
8f8417b
fix(make): contracts recipe laundered cargo test's exit code; gate tr…
noahgift Sep 27, 2026
8170316
PMAT-4481: restore the 3/3 quorum artifact (367ae45bd6); failed delta…
noahgift Sep 27, 2026
b331a30
chore(guard): tree-reader registry follows the ported #4129/#4130 rea…
noahgift Sep 27, 2026
2191526
evidence(perf041): fresh PP-26 witness on lambda 4090 at car/0.70.0@f…
noahgift Sep 27, 2026
354ace0
fix(ONT-10): aprender-orchestrate --version/--help named the binary "…
noahgift Sep 27, 2026
1cdb4a6
PMAT-4481: delta quorum 3/3 at 8170316368 over c074ace09d; the 367ae4…
noahgift Sep 27, 2026
134e256
fix(trueno-rag): query/eval enumerated flags are parsed by clap (G1.3…
noahgift Sep 27, 2026
5f7706f
fix(clippy): speed-fold did not compile, and serve --features cuda --…
noahgift Sep 27, 2026
13c143c
car/0.70.0: integrate gate fixes (2e contracts-exit + perf041-witness…
noahgift Sep 27, 2026
cec9250
fix(#4175): every in-tree decision goes through the shared tree.rs ru…
noahgift Sep 27, 2026
d684986
Merge remote-tracking branch 'origin/fix/fat-signer-secret-b64' into …
noahgift Sep 27, 2026
e130aae
Merge remote-tracking branch 'origin/84/speed-fold' into e6/car-fold-…
noahgift Sep 27, 2026
04db69c
Merge #4437 (PMAT-4430 aprender-* bin names) into car fold
noahgift Sep 27, 2026
1274d04
merge #4481 (batch/ont-4480-4473) into the car ONT fold
noahgift Sep 27, 2026
0f74f7a
docs(#4175): receipt describes phase 2, the diff under review, with i…
noahgift Sep 27, 2026
87497eb
Merge remote-tracking branch 'origin/car/0.70.0' into fix/4175-on-car…
noahgift Sep 27, 2026
61902cb
fix(#4175): ptop suite-exists check on the shared in-tree rule (the c…
noahgift Sep 27, 2026
219367a
fix(car r25): contracts_gate recomputes the census fresh, never rewri…
noahgift Sep 27, 2026
7b402cb
merge origin/main (#4467, #4427) into car/0.70.0 β€” car wins, main's i…
noahgift Sep 27, 2026
d845894
merge fix/4175-on-car-f6fa@61902cbf7c (GH-4175, quorum 3/3 PASS by ap…
noahgift Sep 27, 2026
9c91c9b
fix(car rc.1 reds): make_contracts_propagates stale since #4475; fat-…
noahgift Sep 27, 2026
83f242d
evidence(pr-review): rebind #4429 receipt to 9c91c9be7 (r21-r28 delta…
noahgift Sep 27, 2026
40d5d0a
chore(pr-review): sign this PR's receipt (PR-REVIEW-SKILL-002 v2 Β§4.3…
claude Sep 27, 2026
c55f51a
fix(provenance): lint-provenance.sh needed rg, which the CI runner la…
noahgift Sep 27, 2026
f73b993
evidence(pr-review): rebind #4429 receipt to c55f51a86 (ff e6 rg->gre…
noahgift Sep 27, 2026
e9954f9
chore(pr-review): sign this PR's receipt (PR-REVIEW-SKILL-002 v2 Β§4.3…
claude Sep 27, 2026
bf6a1b7
fix(pin): check_ont_ratchet resolved pv from PATH β€” check_apr_bin_pin…
noahgift Sep 27, 2026
3021a71
evidence(pr-review): rebind #4429 receipt to bf6a1b7bf (check_ont_rat…
noahgift Sep 27, 2026
6439107
chore(pr-review): sign this PR's receipt (PR-REVIEW-SKILL-002 v2 Β§4.3…
claude Sep 27, 2026
9bb0f3a
merge origin/main (aca6f2d7f6 FLOW-003 v1.1) into car β€” roadmap regen…
noahgift Sep 27, 2026
a6bf027
chore(roadmap): adopt PMAT-4507 as a fragment β€” it was added to roadm…
noahgift Sep 27, 2026
08bde31
evidence(pr-review): rebind #4429 receipt to a6bf027d1 (main merge ac…
noahgift Sep 27, 2026
76502d3
chore(pr-review): sign this PR's receipt (PR-REVIEW-SKILL-002 v2 Β§4.3…
claude Sep 27, 2026
17d4ef1
fix(readme): the #4467 install fences are claims no CI step runs β€” sh…
noahgift Sep 27, 2026
d04131e
evidence(pr-review): rebind #4429 receipt to 17d4ef1f2 (README instal…
noahgift Sep 27, 2026
84aed23
chore(pr-review): sign this PR's receipt (PR-REVIEW-SKILL-002 v2 Β§4.3…
claude Sep 27, 2026
f9dcdc3
fix(car): drop 7 machine-specific paths added on car/0.70.0 (guard-tr…
noahgift Sep 27, 2026
b686064
fix(car): cuda-nightly #4251 step β€” model default from $HOME, not a m…
noahgift Sep 27, 2026
c059ce8
fix(car): clear the x86-main reds on car/0.70.0 except cb200
noahgift Sep 27, 2026
76ee838
Merge remote-tracking branch 'origin/car-fix-fb' into e6/car-x86fix
noahgift Sep 27, 2026
53bacdd
fix(cb200): split the 2 below-B definitions the car inherited from ma…
noahgift Sep 27, 2026
f2f6f8c
fix(ont): regenerate contracts.nt β€” README contractCount 1844 -> 1837…
noahgift Sep 27, 2026
fbf106b
fix(readme_sync): frontmatter contract_count follows the tracked cens…
noahgift Sep 27, 2026
48b8708
evidence(pr-review): rebind #4429 receipt to fbf106b2c0 (deltas r32-r…
noahgift Sep 27, 2026
59e35ff
chore(pr-review): sign this PR's receipt (PR-REVIEW-SKILL-002 v2 Β§4.3…
claude Sep 27, 2026
7d0d403
ci(pr-review): re-trigger pr-review-quorum on the signed head (bot si…
noahgift Sep 27, 2026
55f86db
evidence(pr-review/4429): bring the fbf106b2c0 receipt to the current…
noahgift Sep 27, 2026
0d7e7e4
chore(pr-review): sign this PR's receipt (PR-REVIEW-SKILL-002 v2 Β§4.3…
claude Sep 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
8 changes: 4 additions & 4 deletions .claude/skills/pr-review/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ difference is a defect in this file.
**Contract**: `contracts/pr-review-skill-v2.yaml` (Β§1 grounding, Β§7 blocking, Β§8 metrics)
**Guard**: `scripts/check_pr_review_receipt.sh` β€” it validates what you emit here, it has
its own positive controls, and its mutation set (`scripts/mutate-guard.sh`) reports
233/233. **Run it on your own receipt before you post anything.**
237/237. **Run it on your own receipt before you post anything.**

## Context

Expand Down Expand Up @@ -438,7 +438,7 @@ Bash guards are exercised with `bats-core` fixtures. For the receipt guard itsel
mutation set already exists and is a derivation, not a list:

```bash
bash scripts/mutate-guard.sh # 233/233 on scripts/check_pr_review_receipt.sh
bash scripts/mutate-guard.sh # 237/237 on scripts/check_pr_review_receipt.sh
```

**`attempted: 0` with `status: consulted` is rejected** (fixture row 2). A mutation set
Expand Down Expand Up @@ -1192,7 +1192,7 @@ the real merged commits, not from the spec's reasoning about them.
## Β§13 Autonomous merge on quorum (DESIGNED AND BUILT, **NOT ARMED**)

Spec Β§13. Operator instruction, 2026-08-31: PRs auto-merge once the review quorum passes.
The mechanism exists β€” `scripts/pr_review_quorum_arm.sh`, a table of 83 rows, a 134-mutant
The mechanism exists β€” `scripts/pr_review_quorum_arm.sh`, a table of 90 rows, a 134-mutant
set at 100% β€” and **it is reachable from no workflow that can merge anything.** Β§13.11 is
the arming ladder; rung 0 is where this file is written.

Expand Down Expand Up @@ -1345,7 +1345,7 @@ That is the first falsifiable property of the section, and `q-44` plus the
### Β§13.9 Verifying the mechanism

```bash
bats tests/pr-review-quorum.bats # 83 rows: one per refusal path, four that PERMIT
bats tests/pr-review-quorum.bats # 90 rows: one per refusal path, four that PERMIT
bash scripts/mutate_quorum_arm.sh # 134/134 β€” Β§13.10 fixes this at one, no ratchet
bash scripts/mutate_quorum_arm.sh --list # the catalogue, no mutants run
```
Expand Down
5 changes: 5 additions & 0 deletions .claude/skills/pre-release/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -326,6 +326,11 @@ regression this repo has on record, and its power *falls* as data accumulates
Richer fields (surface counts, findings, notable, verdict) are encouraged β€” the receipts
already under `evidence/dogfood/` are the worked examples.

**The tracked implementation of this step** is `scripts/release/host_receipt.sh`, which
`scripts/release/autopilot.sh` ships to each host after publish (#3731). Never hand-roll
the sweep; `scripts/check_dogfood_shim.sh` row 1b allows those two scripts only while
this paragraph names them.

**The sweep must `cargo install` the PUBLISHED crate**, not build the local tree.
Building the tree tests what you have; installing tests what a user gets. On a box with a
pre-existing `apr` the install correctly fails closed (rc=101) *before* compiling β€” use
Expand Down
10 changes: 10 additions & 0 deletions .githooks/pre-push
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,14 @@ cargo doc --no-deps -q 2>/dev/null || echo "WARN: cargo doc failed"
echo "── ComputeBrick Compliance ──"
pmat comply check --failures-only 2>/dev/null || true

echo "── #4415/#4416: CI guard steps (scripts/ci_guards.sh, the script CI runs) ──"
# The drift check is a YAML parse, so it always runs. The full guard run takes
# many minutes; opt in with APR_PREPUSH_GUARDS=1 (or run `make guards-local`).
rc=0; bash scripts/ci_guards.sh --check-coverage || rc=$?
[ "$rc" -eq 1 ] && exit 1
[ "$rc" -eq 0 ] || echo "WARN: guard drift check could not run (rc=$rc)"
if [ "${APR_PREPUSH_GUARDS:-0}" = 1 ]; then
bash scripts/ci_guards.sh || exit 1
fi

echo "βœ… Pre-push passed"
2 changes: 2 additions & 0 deletions .github/actionlint.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -24,3 +24,5 @@ self-hosted-runner:
- apple-silicon
- m4
- mini
# #4292 / infra#1042: the mini's dedicated repo-level release runner
- mini-builder
237 changes: 221 additions & 16 deletions .github/workflows/binary-release.yml

Large diffs are not rendered by default.

9 changes: 9 additions & 0 deletions .github/workflows/book-contracts.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,15 @@ on:
schedule:
- cron: '45 22 * * *'


# #3676: no concurrency group meant every superseded PR push ran the ~18 min
# chapter suite to completion. Sampled 24 h to 2026-09-24 19:15Z: ~1650 of ~3700
# wall-minutes of this workflow's pull_request runs came after a newer push
# to the same PR had already started. Same shape as ci.yml: one group per PR, a
# new push cancels the old run, and push/schedule runs are never cancelled.
concurrency:
group: book-contracts-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
permissions:
contents: read

Expand Down
13 changes: 11 additions & 2 deletions .github/workflows/book.yml
Original file line number Diff line number Diff line change
Expand Up @@ -60,9 +60,14 @@ permissions:
pages: write
id-token: write

# #3676: one group per PR, and a newer push cancels the superseded run. The old
# workflow-level group "pages" (cancel false) held EVERY run -- all PRs, main and
# the nightly -- in one global queue, so each PR's mdBook check waited behind
# every other PR's. Only the Pages deploy needs that serialisation, so the
# "pages" group now sits on the deploy job alone. Non-PR events never cancel.
concurrency:
group: "pages"
cancel-in-progress: false
group: book-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}

jobs:
build:
Expand Down Expand Up @@ -203,6 +208,10 @@ jobs:
runs-on: [self-hosted, Linux, X64, clean-room]
needs: build
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
# GitHub Pages deploys never overlap and are never cancelled (was workflow-level).
concurrency:
group: "pages"
cancel-in-progress: false
permissions:
pages: write
id-token: write
Expand Down
53 changes: 48 additions & 5 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -73,8 +73,8 @@ jobs:
# with the same rule the old job of that name applied.
# ==========================================================================
x86-main:
# Any free X64 runner in the pool takes it: intel, framework16 or yoga.
runs-on: [self-hosted, Linux, X64, clean-room]
# Car #4429 keeps its pre-merge runner pin (cop 2026-09-26: no runner-host change mid-release).
runs-on: [self-hosted, Linux, X64, clean-room, intel]
timeout-minutes: 240
# The sections carry their own permissions blocks (the sov provenance section
# needs id-token + attestations); one job token must cover all of them.
Expand All @@ -85,13 +85,32 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
FAT_VARS_JSON: ${{ toJSON(vars) }}
FAT_SECRET_PR_REVIEW_SIGNING_KEY_B: ${{ secrets.PR_REVIEW_SIGNING_KEY_B }}
FAT_SECRET_PR_REVIEW_SIGNING_KEY_B64: ${{ secrets.PR_REVIEW_SIGNING_KEY_B64 }}
steps:
# Full history: a section whose own checkout asked for depth 1 (the default)
# is cut back to exactly that by the driver; one asking for 0 needs it all.
- uses: actions/checkout@v7
with:
fetch-depth: 0
# Fail fast: the reds car#4429 took four fat runs to see, in ~2 min, before
# any section starts. rustfmt runs in the image sov.lint uses (same digest,
# so the same verdict); the ID-order rule is contract_data_integrity's,
# without cargo; the case tables are guard-tree's cheapest.
- name: Cheap checks (fmt, falsification-ID order, guard case tables)
run: |
set -euo pipefail
python3 scripts/ci/fail_fast.py self-test
python3 scripts/ci/fail_fast.py ids --base origin/main
docker run --rm -v "$GITHUB_WORKSPACE:/w:ro" -w /w \
localhost:5000/sovereign-ci:stable@sha256:70f2cdc9e537fe4447306d33c317fea33017f78f1ffa3b7af99095391419ef36 \
cargo fmt --all -- --check
bash scripts/tests/guard_tree_test.sh
bash scripts/bump-version.sh --self-test
setsid --wait bash scripts/check_no_claim_literals.sh --selftest
setsid --wait bash scripts/check_hardcoded_paths.sh --self-test
setsid --wait bash scripts/check_pr_review_wiring.sh --self-test
setsid --wait bash scripts/check_ci_gate_mutants_rule.sh --self-test
setsid --wait bash scripts/check_ci_gate_docs_only_rule.sh --self-test
# The driver decides what every section's if:/matrix/needs means and whether
# the vendored workflow is the upstream one; its case table must go RED on
# each planted defect before it is trusted to report a section green.
Expand All @@ -100,7 +119,7 @@ jobs:
- name: Sections (the determinism raster returns first; the rest keep running)
run: >-
python3 scripts/ci/fat_driver.py run
--sections 'sov.*,guard-tree,guard-cargo,vendored-schemas,pr-review-shadow,pr-review-sign,mutants,determinism[X64]'
--sections 'sov.*,changes,guard-tree,guard-cargo,vendored-schemas,pr-review-shadow,pr-review-sign,mutants,determinism[X64],provable-ladder'
--external-job workspace-test
--results "$RUNNER_TEMP/fat/results.json"
--background-until 'determinism[X64]'
Expand Down Expand Up @@ -436,14 +455,38 @@ jobs:
# cuda-unit were never in the gate; they still are not.
# workspace-test is its own job now (three shard jobs + the Ξ£ fan-in).
[ "$WT" = success ] || { echo "workspace-test failed: $WT"; exit 1; }
for pair in X86:guard-tree X86:guard-cargo X86:sov.gate DET:determinism-compare; do
# guard-cargo and determinism-compare are read below under the docs-only rule (#3668).
for pair in X86:guard-tree X86:sov.gate; do
job="${pair%%:*}" sec="${pair#*:}"
r=$(res "${!job}" "$sec")
if [ "$r" != success ]; then
echo "$sec failed: $r"
exit 1
fi
done
# guard-cargo is the cargo half of the same guard universe (BSE-01), and
# determinism-compare is APEX-001 EV-2a's two-architecture comparison. A
# required check that `gate` does not read is not a required check, so both
# are read here -- and each may be `skipped` ONLY on a docs-only PR (#3668).
DOCS=$(printf '%s' "${X86:-null}" | jq -r '(. // {}).changes.outputs.docs_only // ""')
CHG=$(res "$X86" changes)
GC=$(res "$X86" guard-cargo)
DC=$(res "$DET" determinism-compare)
# --- GATE-DOCS-ONLY-RULE-BEGIN (#3668; scripts/check_ci_gate_docs_only_rule.sh runs this block) ---
# A skip is the docs-only skip only when the `changes` section SUCCEEDED and
# said docs_only=true. Any other skip -- changes skipped, failed, missing or
# said false -- means a section that should have run did not: a failure.
skip_ok=0
if [ "$CHG" = success ] && [ "$DOCS" = true ]; then skip_ok=1; fi
for pair in "guard-cargo=$GC" "determinism-compare=$DC"; do
job=${pair%%=*}; res=${pair#*=}
case "$res:$skip_ok" in
success:*) echo "$job: success" ;;
skipped:1) echo "$job: skipped -- docs-only PR (changes: docs_only=true, #3668)" ;;
*) echo "$job failed: $res (changes=$CHG docs_only='$DOCS'; a skip passes only on a docs-only PR)"; exit 1 ;;
esac
done
# --- GATE-DOCS-ONLY-RULE-END ---
MUT=$(res "$X86" mutants)
# --- GATE-MUTANTS-RULE-BEGIN (#3676; scripts/check_ci_gate_mutants_rule.sh runs this block) ---
# `skipped` is a pass ONLY when the skip is the job's own filter:
Expand Down
37 changes: 37 additions & 0 deletions .github/workflows/cuda-nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -327,6 +327,43 @@ jobs:
nice -n 19 cargo test -p aprender-serve --lib --release cb008_checker_controls
APR_FALSIFY_MODEL="$model" nice -n 19 cargo test -p aprender-serve --features cuda \
--release --test falsify_cb008_no_frozen_slots_2753 -- --nocapture

# aprender#4251: #4250's serve batched-prefill test. ci.yml's cuda-only step selects it, but
# there a missing Qwen3.5 file is a legitimate skip, and the runners do not carry one. So it
# passed without running. Here the model is resolved first, and a `SKIP:` line or a
# run that is not exactly `1 passed` is RED. `!cancelled()` so an earlier red falsifier
# cannot hide this one.
- name: aprender#4251 - every serve route prefills through the batched prefill (Qwen3.5)
if: ${{ !cancelled() && steps.decide.outputs.proceed == 'true' }}
env:
APR_QWEN35_MODEL_VAR: ${{ vars.APR_QWEN35_MODEL }}
run: |
set -euo pipefail
export APR_QWEN35_MODEL="${APR_QWEN35_MODEL_VAR:-$HOME/models/Qwen3.5-0.8B-Q4_K_M.gguf}"
if [ ! -f "$APR_QWEN35_MODEL" ]; then
echo "::error::#4251 UNMEASURABLE on ${{ matrix.name }} (provisioning, not a code defect): $APR_QWEN35_MODEL is absent"
exit 1
fi
echo "#4251 model: $APR_QWEN35_MODEL"
log="$RUNNER_TEMP/serve-batched-prefill.log"
rc=0
nice -n 19 cargo test -p aprender-serve --features cuda --lib --release \
api::openai_handlers::qwen35_serve_tests::gpu_every_serve_route_prefills_through_the_batched_prefill \
-- --exact --nocapture \
>"$log" 2>&1 || rc=$?
cat "$log"
if [ "$rc" -ne 0 ]; then
echo "::error::#4251 serve batched-prefill test FAILED (exit $rc)"
exit "$rc"
fi
if grep -q '^SKIP:' "$log"; then
echo "::error::#4251 the test SKIPPED on a CUDA runner with the model named: $(grep -m1 '^SKIP:' "$log")"
exit 1
fi
if ! grep -q 'test result: ok\. 1 passed' "$log"; then
echo "::error::#4251 the filter did not run exactly one test"
exit 1
fi
# PP-26 / L0 CORRECTNESS: the batch-invariance witness (FALSIFY-CB-006,
# #2753, Β§9 #1a on Blackwell). PP-LLAMA-001 Β§7.0 puts correctness at layer
# L0 and says perf041 runs "nightly + release, missing marker = RED"; the
Expand Down
6 changes: 6 additions & 0 deletions .github/workflows/install-script.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,12 @@ on:
schedule:
- cron: '0 23 * * *'


# #3676: a newer push to the same PR cancels the superseded run
# (scripts/check_pr_workflows_cancel_superseded.sh).
concurrency:
group: install-script-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
permissions:
contents: read

Expand Down
90 changes: 86 additions & 4 deletions .github/workflows/nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,9 @@
# job runs on the fleet. x86_64 builds on yoga and aarch64 natively on gx10, both
# inside rust:1.93.0-bullseye (binary-release.yml's CPU-lane pattern), so the
# nightly's glibc floor is 2.31; the ubuntu-latest build needed GLIBC_2.39 and did
# not run on lambda's 22.04. The macOS and Windows targets are gone: no self-hosted
# macOS or Windows runner is registered in the org, and there is no hosted
# fallback. They come back when a box for them does.
# not run on lambda's 22.04. Windows is gone: no self-hosted Windows runner is
# registered and there is no hosted fallback. macOS came back with a box for it
# (#3204): aarch64-apple-darwin builds host-native on mini-m4 (build-darwin).

name: Nightly

Expand Down Expand Up @@ -162,7 +162,7 @@ jobs:
# The driver is dlopen'd at run time (aprender-gpu: dep:libloading), so
# the bullseye image needs no toolkit -- binary-release.yml's cuda lane.
# Record proves the feature took (libcuda.so in the executable).
APR_SHA=$(git rev-parse --short HEAD)
APR_SHA=$(git rev-parse --short=9 HEAD)
mkdir -p "$CACHE/target-cuda"
$DOCKER run --rm \
-v "$GITHUB_WORKSPACE:/workspace" \
Expand Down Expand Up @@ -214,6 +214,60 @@ jobs:
path: dist/*
if-no-files-found: warn

# ── Build apr: macOS aarch64 natively on mini-m4 (#3204) ──
# Host-native: there is no docker on macOS and no glibc floor to pin, so the
# toolchain is rust-toolchain.toml via the runner's rustup, as in ci.yml's
# mac-check. A LITERAL runs-on list, not fromJSON, so check_runner_labels.sh
# sees the apple-silicon label. Gated on the same `gate` decision as the Linux
# matrix (car's `check-activity` job does not exist on this branch -- folded
# into `gate`'s reused/build/red-ci/ci-pending verdict, #4189). One box with
# 16 GB: this leg must not hold the Linux nightly hostage -- `publish-darwin`
# below only uploads when this job is green, and the darwin tarball is
# simply absent that night otherwise; it never blocks or is blocked by
# `publish` (that job's per-arch manifest tracks Linux targets only).
build-darwin:
needs: gate
if: needs.gate.outputs.decision == 'build'
name: apr aarch64-apple-darwin on mini
runs-on: [self-hosted, macOS, ARM64, apple-silicon, m4, mini]
timeout-minutes: 90
env:
CARGO_INCREMENTAL: 0
CARGO_TERM_COLOR: never
T: aarch64-apple-darwin
steps:
- name: Checkout
uses: actions/checkout@v7

- name: Build apr (host-native, pinned toolchain)
run: |
set -euo pipefail
rustup show active-toolchain
cargo build --release --locked -p apr-cli --target "$T"
"target/$T/release/apr" --version

- name: Package
run: |
set -euo pipefail
ARCHIVE="apr-$T"
rm -rf "$ARCHIVE" "$ARCHIVE.tar.gz" "$ARCHIVE.tar.gz.sha256"
mkdir -p "$ARCHIVE"
cp "target/$T/release/apr" "$ARCHIVE/"
for f in README.md LICENSE LICENSE-MIT COPYING UNLICENSE; do
if [ -f "$f" ]; then cp "$f" "$ARCHIVE/"; fi
done
tar czf "${ARCHIVE}.tar.gz" "$ARCHIVE"
shasum -a 256 "${ARCHIVE}.tar.gz" > "${ARCHIVE}.tar.gz.sha256"
echo "Packaged: ${ARCHIVE}.tar.gz ($(du -h "${ARCHIVE}.tar.gz" | cut -f1))"

- name: Upload artifact
uses: actions/upload-artifact@v7
with:
name: apr-aarch64-apple-darwin
path: |
apr-aarch64-apple-darwin.tar.gz
apr-aarch64-apple-darwin.tar.gz.sha256

# ── Publish per arch, then the manifest ──────────────────
publish:
needs: [gate, build]
Expand Down Expand Up @@ -262,3 +316,31 @@ jobs:
ci-pending) echo "::warning::required checks not finished on ${GITHUB_SHA:0:9}; last green kept"; exit 0 ;;
*) echo "::error::nightly $DECISION at ${GITHUB_SHA:0:9}; see nightly-manifest.json"; exit 1 ;;
esac

# ── Attach the darwin asset to the nightly release ────────
# `publish`'s manifest system (scripts/nightly_manifest.py) tracks the Linux
# targets only; it neither knows about nor deletes unlisted assets, so this
# upload is additive and independent -- a red/skipped darwin leg leaves the
# Linux assets alone, and a red Linux leg (this job needs `publish` only so
# the "nightly" release already exists) does not block the mac asset.
publish-darwin:
needs: [gate, build-darwin, publish]
if: always() && needs.gate.outputs.decision == 'build' && needs.build-darwin.result == 'success'
runs-on: [self-hosted, Linux, X64, clean-room]
steps:
- name: Download darwin artifact
uses: actions/download-artifact@v4
with:
name: apr-aarch64-apple-darwin
path: dist-darwin

- name: Upload to the nightly release
uses: softprops/action-gh-release@v3
with:
tag_name: nightly
name: Nightly Build
prerelease: true
make_latest: false
files: |
dist-darwin/apr-aarch64-apple-darwin.tar.gz
dist-darwin/apr-aarch64-apple-darwin.tar.gz.sha256
Loading
Loading