Repository navigation
batch(B2): CI/infra/scripts/workflow fold — replayed onto main (REPLACES #4315) - #4427
Merged
Merged
Conversation
… (REPLACES #4315) Operator ruling 16:15 (via cop): no main-merges into PRs; cut fresh from main. merge-base(main, B2) == main a5efa14, so this tree is exactly B2 tip ffafeca. A linear cherry-pick stopped at commit 4/141 (Makefile, coverage-skips.txt): B2's 30 internal merges carry those resolutions, so the tree is replayed whole. Source commits (141, oldest first): - 2fc52a4 ONT-4c: the plan a quorum can read — five decisions, and the measured baseline they are taken ag - a13eb0f ONT-4c: the grill refused the plan, and the measurement refuses the grills own fix for D4 - 24e9465 ONT-4c: the roadmap entry, after its ONT family (Refs PMAT-3847) - 8e3bbea fix(coverage): skip by EXACT test path from a reasoned list, not 19 substrings (#3839) - edff015 fix(coverage): never mv ~/.cargo/config.toml; exact-skip the zram timing test that blanked the nig - cbcec70 fix(coverage): --ignore-run-fail, failing tests LISTED, and "did not measure" is never a verdict ( - 09030be fix(coverage): no verdict when a test binary was KILLED — --ignore-run-fail swallowed it (#3839) - 02fe2e0 fix(coverage): run aprender-serve's lib tests as per-module processes so none is OOM-killed (#4023 - 8509d07 feat(ladder): #4016 — llama.cpp fit is the placement gate for every ladder cell; no verdict = RE - 71e0224 feat(ladder): #4016 — the fit ctx floor is min(4096, the model's trained context) (cop ruling) - 4a266eb fix(coverage): cap the gpu shard at 4 threads; run named heavy tests solo with measured peak RSS ( - 7c5ffda fix(coverage): chunk the gpu module into <=200-test processes; solos first; run everything before - 082df3c fix(coverage): the merged report must be --workspace; an unqualified report covers only the root f - 6236df8 fix(coverage): scope EVERY llvm-cov report by a derived -p list, plus a guard (#4023) - 8dfaff5 chore(coverage): COV_FLOOR 88 -> 89 after the first complete measurement, 90.26% (#4023) - fed0b56 chore(roadmap): file PMAT-4023 for the coverage-nightly port (#4023) - 96a28d3 fix(coverage): classify the coverage lists; the scope guard refuses a vacuous scan (#4023 quorum l - ee81968 fix(coverage): wire both new guards through guard_tree.sh --no-cargo, with no workflow edit (#4023 - 54157e6 chore(roadmap): regenerate the aggregate for the new fragment (make roadmap-aggregate) - 384ad49 chore(roadmap): PMAT-4016 ticket entry (pmat work add --github-issue 4016) - 526e898 fix(package): four crates no longer ship tests that cannot compile from their .crate (#4130) - 6cd6f36 ci: every guard a workflow step calls directly runs under setsid --wait (#4133) - da71f44 fix(#4130): aprender-core unit tests read repo-root contracts at run time — the #4129/#4048 patt - d1f3c58 fix(#4130): check in aprender-db's generated_contracts.rs like the 25 other crates — a build no - 8868086 PMAT-4016: regenerate the roadmap aggregate (quorum round 1 lane 3, measured) + round-1 artifact - 9cf59b2 docs(audit): #4130 implementation receipt + roadmap entry - c8c7643 ci: setsid --wait for guard calls in EVERY workflow; the guard scans all workflows and the sh/./ f - 10fa952 docs(audit): quorum-PMAT-4130 — 3/3 PASS at 9cf59b2 (gemini-3.1-pro-high, 3.8-flash-high, 3.7- - d5932e5 PMAT-4016: quorum receipt round 2 — 3/3 PASS (gemini 3.1-pro/3.8-flash/3.7-flash), not armed - 7e564b1 evidence(quorum): PMAT-4023 round at 54157e6 (3/3 gemini PASS, agreed) + cop ruling - 517edff ci(guard): check_guard_steps_isolated also refuses the bare form and scans .yaml workflows and com - dcf4823 fix(guard): include!d .rs files enter the formatting gate as a shrink-only ratchet — cargo fmt n - bc08f69 ci(mutants): mutate the WORKSPACE -- the blocking gate never mutated crate code; RED cap + nightly - 514e718 test(mutants gate): a row on the REAL cargo-mutants 27 outcomes.json shape; correct a claim in bc0 - 51b0485 ci(guard): run the mutants gate's case table on every PR via guard-tree - c759952 fix(mutants gate): keep the crates workspace-test excludes out of mutation -- aprender-compute wou - 2fadfd1 fix(mutants-nightly): diff from the last SUCCESSFUL nightly, not "24 hours ago"; anchor the exclud - 29641c0 docs(audit): PMAT-4133 receipt + quorum 3/3 at 517edff (2 agy + 1 haiku) - c5991aa fix(mutants-nightly): read the last successful run over REST, not gh -- the fleet has no gh (#4142 - c5cf8d5 docs(audit): PMAT-4133 ph round lane 1 voided by cop ruling — 2/3, not armable - 0a5eafd docs(audit): degraded quorum receipt for #4142 -- 3/3 PASS at c5991aa - 5743fb4 PVL-001 EV-4: make contracts propagates pv's exit — a failing pv lint | tail exited 0 - 739d80f fix(ci): the KEPT binaries' CLI tests ran nowhere — wire 82 targets capped, refuse a spawning ta - 0bff759 fix(roadmap): regenerate roadmap.yaml for the PMAT-4059 fragment; receipt claimed rc 0 from a pre- - aa0f702 fix(guard): a bare guard chained mid-line is refused too (#4133 ph6 review) - 943cced docs(audit): PMAT-4133 round at the prior head recorded — superseded by the review fix, not coun - 354631a PVL-001 EV-4: the case table reads make's output by here-string, not a pipe into grep -q - 71b62fd audit(PMAT-4059): quorum r2 3/3 PASS at 0bff759 — gemini-3.1-pro-high, claude-sonnet-5, claude - 75f6b6b feat(pin): fleet hosts run ONLY the manifest nightly apr/pv — apr_bin.sh + pv_bin.sh refuse anyt - e6cce2a fix(nightly): per-arch publish, pv, CI-green gate and a SHA manifest (Refs #4189) - f1c6803 PMAT-4186: roadmap entry carries kind:code (the rail's kind-gate refused without it) - b3690ca fix(apr-format): the v2 writer golden was stale since #2254; pin the new one to the old by derivat - 8b15f91 docs(roadmap): GH-4190 work entry - 52be02a fix(nightly): quorum findings — reused night crashed publish; upload-then-swap with retries; no- - 64cd17d chore(GH-4190): the roadmap entry carries kind: code (the kind-gate reads it) - a909632 PMAT-4186: the nightly-pin case table is hermetic — scrub every knob once, pin the marker baseli - d0098f8 fix(nightly): a cancelled build was a permanent verdict; --version must print the crate version (# - 5c6fa5a fix(guard): check_guard_steps_isolated missed a bare guard after elif or in a case arm - 398a362 PMAT-4186: the Actions exemption needs a real run id and is never silent; any non-0/1 mode rc refu - e57562f PMAT-4186: a broken mode rule refuses with a reason, not silently - 30d14f4 docs(nightly): a NIGHTLY_BINS/--bin drift is build-failed, not missing-artifact (quorum r3 note) - 7d7af48 chore(GH-4190): regenerate roadmap.yaml from its fragments (make roadmap-aggregate) - c88a6a7 docs(audit): PMAT-4133 ph8 quorum: 3/3 PASS at 5c6fa5a (degraded: same-family) - 94aa3f4 PMAT-4186: the denylist matches a binary's own sha256 and every object field; a relative override - 56ae4d3 fix(pin): a null generated_at read as fresh, and the rule came from the cwd's checkout - 50abde4 fix(GH-4190): the PROVENANCE const precedes the test's statements (clippy::items_after_statements) - 89884bb fix(pin): zsh named a PATH-found resolver by its bare name; the leak guard never saw nightly_pin.s - 60f4810 fix(GH-4190): the tree-reader ledger lists apr-format --test golden_fixtures (check_tree_reader_te - d87e43c fix(pin): a bare-name rule lookup searched PATH before the cwd - 7e6e08d fix(pin): an unset HOME read as "no fleet marker" and silently meant HEAD mode - 720759b test(pin): zsh rows for an empty HOME; guard $HOME in apr_bin.sh CARGO_HOME defaults - f4fc84c PMAT-4186: quorum receipt — AGREED 3/3 PASS on 720759b - 6adfc02 release: apr binaries embed their commit — APR_GIT_SHA_OVERRIDE from the host checkout (Refs #42 - 519c541 feat(dogfood): #4252 advisory apr-serve lane (gx10 CUDA -> lambda CPU yield) + 3-way serve bench - 0f83b9a fix(dogfood): #4252 lane — one-line state protocol, used_gpu probe (#4146), NO-VERDICT receipt - 92e3c9c fix(dogfood): #4252 lane — one hard budget per ask (default 120 s), 'unavailable' on expiry - 803d335 docs(roadmap): PMAT-4252 entry + implementation receipt (#4252) - 6205968 install.sh: --channel rc installs the newest -rc prerelease (closes #4283) - a0f072f fix(dogfood): budget proven on the yield path; server identity by argv tokens (#4252) - 62eee9c fix(dogfood): yield during model load, bounded probes, gx10-side state dir (#4252) - 8f46a2b docs(receipt): round-2 fixes, watcher test, live yield re-proof on v0.69.3-rc.1; trace grep catche - 5d17cc3 fix(lane): killpg race and --timeout 0 cancelling the alarm (quorum R3, PMAT-4252) - af759e9 fix(lane): an alarm spent in the gx10 leg left lambda unbounded (quorum R4, PMAT-4252) - f1ff895 feat(release): aarch64-apple-darwin apr CPU asset, required by the asset checker (#4292) - f5c28b1 fix(lane): budget alarm as BaseException, reap yielded servers, malformed 200 is a receipt (quorum - f2743de feat(release): darwin lane runs on the self-hosted mini-builder, not hosted macos-14 (#4292) - be8bf8c ci: re-run with the keep-open body line (R-2 reads the event payload, so a rerun cannot see an edi - 8cccb57 ci: re-run with the keep-open body line (R-2 reads the event payload, so a rerun cannot see an edi - cf4a31c fix(lane): reap the killed server even when pid_alive answers 'dead' mid-exit (PMAT-4252) - 7a34570 feat(bins): every [[bin]] --version prints the build SHA via shared aprender-build-sha (Refs #4219 - 69c3b5b Revert "fold #4219 build-sha (feat/4219-build-sha) into B2 batch" - 66beb4d Revert "fold #4282 (feat/4252-apr-dogfood-lane) into B2 batch" - 104c91b Revert "fold #4294 (feat/4292-darwin-arm64-asset) into B2 batch" - c53bb80 chore(roadmap): regenerate aggregate after parking #4282/#4294/#4219 out of B2 - 81f3419 fix(b2): clear the three guard reds the batch introduced - e69d400 chore(roadmap): PMAT-4219 kind:code, in progress (Refs #4219) - c261e8e chore(audit): re-audit --version rows for the build-SHA bins (Refs #4219) - eac1bc4 chore(dogfood): denominator 838 -> 864 after the 26 --version rows (Refs #4219) - 3df7681 Revert "Revert "fold #4219 build-sha (feat/4219-build-sha) into B2 batch"" - 6cc8033 feat(nightly): ship every workspace [[bin]], derived from cargo metadata (#4189) - 2518199 fix(nightly): record probed every bin through a relative path from an empty cwd - b8158df docs(nightly): quorum NITs — stale self-test comment; why --bins none is never probed - e4623ad feat(release): every workspace [[bin]] builds and smokes at the release commit (#4189) - 997e010 fix(binary-debt): run the qwen3-moe live `apr run` falsifier nightly on gx10, fail closed (#4179) - 1385d34 chore(roadmap): PMAT-4179 fragment, kind:code (#4179) - 478a0a0 ONT-4c: README.md, CLAUDE.md, one .apr and one CSV as graded contracts, with their extractors and - ebe54f6 ONT-4c: Σ entity_type_target_class is cross-checked against entity_types, not hand-kept; the spec - e0572d8 ONT-4c: restore the receipt's frontmatter fence and put the test tally in its table row (Refs PMAT - a27844f ONT-4c: receipt status is `complete`, the only value check_receipt_complete accepts for finished w - 8b1577f fix(ci): B2 reds after the #4320 merge — py3.10 TOML reader, build.rs crate docs, tree-reader re - 674ce8e fix(guard): fallback TOML reader skips multi-line strings; parity row says skip, not silence (#431 - 219af85 feat(nightly): ship apr --features cuda as apr-<target>-cuda, judged like every bin plus its libcu - e877e43 fix(lint): backtick APR_GIT_SHA in the three build.rs crate docs (clippy::doc_markdown) (#4315) - 9c5acd0 fix(dogfood): re-derive per_binary/band/cluster baselines after the 26 --version rows (#4315) - c560caa fix(paths): take the 6 shipped /home/noah paths B2 added back out — hardcoded-path ratchet +6 -> - c5b6f9c PMAT-3847: roadmap entry as a fragment + regenerated aggregate (guard-tree: fragment-required, sor - dc1e832 PMAT-3847: CI — shapes ratchet names ONT-4c's four shapes; CLAUDE.md tok/s literals removed - c4fd00a qwen-story-daily builds apr in place instead of cargo-installing into the host's ~/.cargo/bin — - a458e37 docs(audits): PMAT-4346 quorum receipt for c4fd00a -- 3/3 PASS, degraded same-family (agy lane e - 7fadb39 regen: roadmap aggregate after #4346 fold - 7774007 fix(guard): include_fmt.py died on the runners' python 3.10 — no tomllib (#4315) - b2f70a5 ONT-4c: explicit targetClass on the three new shapes; entity-props-ok maps `study` - 366c9bf test(build-sha): kill the 8 mutants B2's mutants job MISSED (#4315) - fa35f3d fix(guard): include_fmt fallback refuses what it cannot read; case table in CI (#4315 quorum) - 5e4bf6b fix(guard,build-sha): quorum round 2 — a stray triple quote refuses; the sha sources are injecte - 3912313 fix(guard): include_fmt fallback refuses an ambiguous multi-line string end (#4315 quorum r3) - 079232a fix(guard): include_fmt fallback reads a line from its opener's delimiter only (#4315 quorum r4) - ea58604 ci(cuda-nightly): run the #4250 G0 serve batched-prefill test where the model exists - 47c4a58 fix(fold): B2 x main guard interactions — fit arg, setsid, no silent truncation - ae8566e PMAT-3847: re-arm ONT-4c's four shapes the v0.69.3 merge-back dropped - 5caa960 fix(fold): B2 x main — duplicate cmd ordinals, and the truncation baseline must not grow - 485940a fix(tests): four crates read their out-of-crate test fixtures at run time, so their published tarb - b07666f roadmap: GH-4129 fragment (kind: code, measured in-tree and tarball proofs) - 74011c7 fix(ptop): the seven ENFORCE include_str!s of tests/ become one run-time test, so `--features ptop - aab7e20 fix(contracts): design_by_contract example reads contracts/ at run time, so `cargo test` builds fr - d6f9f91 fix(contracts): design_by_contract panics in tree on a missing contract, exits 2 only without the - 157ba6d fix(contracts): under .ONESHELL the lint line's `exit $$rc` ended `make contracts` green after lin - 6957787 fold(B2): regenerate roadmap aggregate for the #4129/#4130 fragments - d26f6fa fix(fold): B2 x ONT-4c — two claims name the command CI runs (setsid --wait), graph + ratchet re - 5511ee7 fix(fold): valid-under fixtures carry the merged Σ — B2's D-T1 rule refused main's copy - ffafeca fix(fold): regenerate tree_reader_tests.txt for the merged tree — guard-cargo + shard 2/3 red on Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…loor const instead of tok/s literals Shards 1-3 REFUSEd: ordinal 455 was taken by main's ont7-valid-under-gate and by B2's apr-format-golden-fixtures. check_no_claim_literals: B2's #4129 edit shifted five baselined doc lines in llama_370m.rs by 37, and the ratchet refuses re-keyed entries. The doc now names AC_SHIP2_010_MIN_DECODE_TPS_RTX4090 instead of repeating the numbers. The baseline is pruned by 22 stale entries (shrink only). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
noahgift
enabled auto-merge
September 25, 2026 14:16
noahgift
added a commit
that referenced
this pull request
Sep 25, 2026
…rge (< #4427) and only 24h (#4421, FLOW-04) Operator ruling relayed by the cop (2026-09-25 16:14 Madrid): legacy receipts, which carry no diff_patch_id, are grandfathered, bounded to PRs open when FLOW-04 merges and expiring 24h after. Encoded as two constants, PR_REVIEW_LEGACY_BELOW=4427 and PR_REVIEW_LEGACY_UNTIL=2026-09-26T16:00:00Z. The signature is still verified. Self-test 16 -> 20 rows: in-window -> 0, expiry second -> 1, PR after the ceiling -> 1, bad signature in the window -> 1. row() pins LEGACY_BELOW=0 so no other row can reach the exemption. Pmat-Ticket: PMAT-4421 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
§13.11 rung 1 — quorum shadow verdict Shadow mode: this records a verdict and merges nothing. A refusal |
This was referenced Sep 25, 2026
…ratchet was cut guard-cargo's include_fmt_ratchet REFUSEd 17 include!d files (+2 test submodules rustfmt follows) that main gained since B2 and that are not in the baseline this PR introduces. Formatted rather than baselined: the baseline may only shrink. Refs #4427 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…asure it — extract worst_normalised check_complexity_ratchet RED NEW: iq4_nl_device_ab_tests.rs::real_model_iq_ab cyclomatic 17 cognitive 28 after 71d0b2a reformatted the file. The normalised-error closure moves to a helper; pmat now reads 9/10 and 9/18. Behaviour unchanged (same loop, same NaN->inf and zero-denominator rules). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…f; regenerated from the kernel headers Fragment 490 wires sprint9_filtering_tests for the first time, and on the gx10 aarch64 runner three of them failed: `echo` never showed brk. It did call it. ld.so's first syscall, brk(NULL), printed as `recvmsg(0x0, 0x0, 0x0) = <heap address>`, because socket..mremap sat two numbers high (brk 216, not 214). 34 aarch64 rows were wrong, with sched_yield and getrandom each listed twice. The x86_64 table had setgid..setsid one high and pkey_mprotect at 302 (prlimit64). Both tables are now regenerated from asm-generic/unistd.h and x86_64 asm/unistd_64.h with the same name set, and they compile on every host. The new abi_numbers tests pin every corrected row against the kernel numbers. They require strictly ascending numbers and unique names, because binary_search depends on both. Run against the old tables, all three fail. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…46 + PMAT-4421) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… — setsid as PID 1 reaps an orphan and exits 1 #4427 wraps guard steps in `setsid --wait`. In the 4 steps that run it inside `docker run`, setsid is the container's PID 1: orphaned grandchildren (the nextest probe's cargo/rustc) reparent to it, its wait() returns one of THEIR pids instead of bash's, and util-linux errs "setsid: wait: Success", rc 1, before the guard prints a verdict. guard-cargo failed this way on gx10-build and yoga-build3 (runs 36182568927 a1/a2); main has no setsid, so it never did. Measured on gx10, image sha256:0569673d, same script + config as main: without --init 3/3 rc=1 'setsid: wait: Success' with --init 3/3 rc=0 'PASS: every key is understood.' without setsid rc=0 PASS --init makes tini PID 1, so orphans are reaped there, not by setsid. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…nreachable) Unsigned; the CI signer signs. Guard accepts a throwaway-key-signed copy. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
auto-merge was automatically disabled
September 25, 2026 22:59
Pull request was closed
noahgift
enabled auto-merge
September 25, 2026 22:59
noahgift
disabled auto-merge
September 25, 2026 23:10
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
HEAD added PMAT-4179/4186/4219, main added PMAT-4215 in the same span; all four kept in id order. 1091 ids = union of both sides, 0 duplicates. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…tions.yml (#4441 moved the jobs there) #4441 cut ci.yml to 5 fat jobs and moved every old job into ci/sections.yml, run by scripts/ci/fat_driver.py. ci.yml takes main's side whole; B2's 60 ci.yml hunks (setsid --wait wrappers, docker run --init, MUTANTS_CAP/JOBS, the mutants outcome block) apply to ci/sections.yml unchanged (fuzz ≤2, 0 rejects). Refs #4427 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…point them at ci/sections.yml After the merge with #4441 (5 fat jobs), every old ci.yml job lives in ci/sections.yml, run by scripts/ci/fat_driver.py. - mutants: the step took its --exclude list from the workspace-test nextest line in .github/workflows/ci.yml; that line is now ci/sections.yml:446 only, so the step would exit 'no --exclude list found'. Read it from sections.yml. - check_guard_steps_isolated.sh (#4133): scanned .github/workflows only, so it was blind to every guard step #4441 moved; its self-test mutant found no wrapper to remove in ci.yml (FAIL). Scan ci/*.yml + ci/vendor/*.yml too and mutate ci/sections.yml (absent = FAIL, not a skip). Re-proven in the new scope: a bare invocation planted in ci/sections.yml -> rc=1; self-test 0 failed. - deploy-apr-install.yml (#4460, landed after B2 was cut) called check_tool_versions.sh without setsid --wait; the guard refused it. Wrapped. Refs #4427 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… B2 — it lands via #4431 Cop ruling on #4427: split. The replay commit 2dcf2ee carried ONT row 4c, and that row put 324 of B2's 342 PR-diff mutants over the on-PR cap of 60 (#4142; the cap is unchanged). This reverts only the ONT-4c paths: aprender-contracts ontology/ + lint/, the pv lint measured-set ratchet (lint.rs, lint_arming.rs), the ont4b/ont4c tests and cmd 530, tests/fixtures/ont, and the ONT-4c corpus rows (claude-md, csv-train, readme-root, model-setfit-slice, shapes.ttl, contracts.nt, ontology.yaml, lint-baseline.json, census.json, ont-model-receipts). The #4219 build-sha and #4129 out-of-tree changes in the same crates stay. aprender-contracts --lib: 1721 passed. aprender-contracts-cli: all green. Refs #4427 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
noahgift
enabled auto-merge
September 26, 2026 15:24
…ADME claim fences 321baaa left three derived surfaces still pointing at ONT-4c: - scripts/tree_reader_tests.txt listed ontology::extract::{llm_context,readme} and ont4c_doc_contracts, so guard-cargo and workspace-test step 7 went RED on drift (regenerated with check_tree_reader_tests.sh --update). - CLAUDE.md cited contracts/claude-md.yaml (FALSIFY-DOCS-CLAUDE-001) and carried the ONT-4c bash/text claim-fence split; README.md the same plus the ONT frontmatter and a contract count of 1841. Both revert to the 2dcf2ee^ text; README keeps B2's own workspace-crate count (81, measured with cargo metadata). readme_contract 16/16; check_tree_reader_tests, check_readme_claims, check_readme_numeric_claims, check_ont_ratchet, check_pr_ont_delta green. Refs #4427 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…e tests read as owed-not-executed libtest prints a #[should_panic] test as `test X - should panic ... ok`; cargo_ids() required `test X ... ok`, so x86-main's full-tier Compute step went RED on six tests that passed (tiling, blis::prepacked, brick::buffer, partition_view). Main is latent: its push tier never runs Σ compute. New self-test row; reverting the regex turns it RED. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
noahgift
added a commit
that referenced
this pull request
Sep 26, 2026
…point them at ci/sections.yml After the merge with #4441 (5 fat jobs), every old ci.yml job lives in ci/sections.yml, run by scripts/ci/fat_driver.py. - mutants: the step took its --exclude list from the workspace-test nextest line in .github/workflows/ci.yml; that line is now ci/sections.yml:446 only, so the step would exit 'no --exclude list found'. Read it from sections.yml. - check_guard_steps_isolated.sh (#4133): scanned .github/workflows only, so it was blind to every guard step #4441 moved; its self-test mutant found no wrapper to remove in ci.yml (FAIL). Scan ci/*.yml + ci/vendor/*.yml too and mutate ci/sections.yml (absent = FAIL, not a skip). Re-proven in the new scope: a bare invocation planted in ci/sections.yml -> rc=1; self-test 0 failed. - deploy-apr-install.yml (#4460, landed after B2 was cut) called check_tool_versions.sh without setsid --wait; the guard refused it. Wrapped. Refs #4427 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> (cherry picked from commit 46169b0)
…ml, kill build-sha emit/git_rerun_triggers mutants Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
noahgift
added a commit
that referenced
this pull request
Sep 27, 2026
…nstall docs taken
Resolution (captain aprender-36's rules): the car wins on its rc.1 fixes; main's
side is taken only where the car lacks it. The net change vs car@219367a391 is 5 files:
- README.md + book/src/{introduction,getting-started/installation}.md: #4467 curl|sh install docs
- evidence/models/supported.yaml: regenerated (derive_model_manifest.sh --check PASS)
- .github/workflows/nightly.yml: car's file (it already carries main's #4326 cuda step
AND build-darwin/publish-darwin); cuda step APR_SHA uses --short=9, as binary-release.yml does
Every other conflict resolved to the car's content: #4427 is the B2 fold the car already
carries, reworked. Includes the aprender-* bin renames, workspace_file_or_skip!, the
coverage_serve_shards .py->.sh port (the re-added .py is removed), the 457/480 cmd
duplicates of 458/481 (removed), and a union roadmap (the car's is a superset of main's).
Two clean-hunk duplicates were dropped: a second [build-dependencies] in aprender-explain
and a repeated include_fmt_ratchet case in check_package_includes.sh.
Conflicted files:
.github/workflows/binary-release.yml
.github/workflows/nightly.yml
Cargo.lock
Cargo.toml
Makefile
README.md
ci/sections.yml
contracts/apr-dogfood-coverage-v1.yaml
crates/apr-cli/build.rs
crates/apr-cli/src/bin/apr-corpus-ingest.rs
crates/aprender-build-sha/Cargo.toml
crates/aprender-build-sha/src/lib.rs
crates/aprender-core/src/format/ship_001.rs
crates/aprender-core/src/format/ship_003.rs
crates/aprender-core/src/format/ship_004.rs
crates/aprender-core/src/format/ship_010.rs
crates/aprender-core/src/format/tests/provenance_tests.rs
crates/aprender-data/src/cli/mod.rs
crates/aprender-db/Cargo.toml
crates/aprender-db/build.rs
crates/aprender-orchestrate/Cargo.toml
crates/aprender-orchestrate/build.rs
crates/aprender-orchestrate/src/main_cli.rs
crates/aprender-present-cli/Cargo.toml
crates/aprender-present-terminal/src/bin/ptop.rs
crates/aprender-present-terminal/src/bin/score.rs
crates/aprender-qa-certify/src/main.rs
crates/aprender-simulate/Cargo.toml
crates/aprender-simulate/src/cli/args.rs
crates/aprender-verify-ml/src/bin/verificar.rs
crates/aprender-zram-cli/src/lib.rs
docs/audits/surface_audit.csv
docs/roadmaps/roadmap.yaml
evidence/models/supported.yaml
scripts/check_guard_steps_isolated.sh
scripts/check_model_ladder.sh
scripts/check_ont_ratchet.sh
scripts/ci/sigma_executed.py
scripts/claim_literal_baseline.txt
scripts/install.sh
scripts/tests/make_contracts_propagates.sh
scripts/tree_reader_tests.txt
scripts/tree_reader_unwired_baseline.txt
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
noahgift
added a commit
that referenced
this pull request
Sep 27, 2026
…4427 wraps ci/sections.yml runs in `setsid --wait` lint_passes_on_real_contracts failed 3/3 on shard 3: README's `bash scripts/check_readme_claims.sh` and CLAUDE.md's `bash scripts/check_package_includes.sh` no longer matched a CI line verbatim. normalise now drops a leading `setsid [--wait|-w]`; case table covers the non-prefix and bare forms. Refs #4431 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
noahgift
added a commit
that referenced
this pull request
Sep 29, 2026
…4427 wraps ci/sections.yml runs in `setsid --wait` lint_passes_on_real_contracts failed 3/3 on shard 3: README's `bash scripts/check_readme_claims.sh` and CLAUDE.md's `bash scripts/check_package_includes.sh` no longer matched a CI line verbatim. normalise now drops a leading `setsid [--wait|-w]`; case table covers the non-prefix and bare forms. Refs #4431 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> (cherry picked from commit 7a8088d) Agent: aprender-66
guyernest
pushed a commit
to guyernest/aprender
that referenced
this pull request
Sep 29, 2026
…fies merge-queue squashes (paiml#4421, FLOW-04) (paiml#4426) * feat(pr-review): bind the receipt to the diff's git patch-id --verbatim, fail closed (paiml#4421) The merge queue lands a PR as a one-parent squash, so Arm 4's head_sha/ancestor binding verified 0 of 6 queue merges (merge-queue evaluation, 2026-09-25); the diff patch-id matched 6 of 6. - scripts/lib/pr_review_patch_id.sh: pinned `git diff` (algorithm, renames, orderFile, prefixes, textconv, ext-diff, context all overridden), excluding evidence/pr-review/<pr>/, hashed with `git patch-id --verbatim`. Fails closed on an empty diff, an unresolvable commit, or more than one id. - scripts/lib/git_patch_id.py: a line-for-line port of git v2.53 get_one_patchid(), used where git < 2.40 has no --verbatim (lambda and intel run 2.34.1). Matches native 120/120 on lambda (--stable/--unstable, history), 189/189 on yoga 2.53 and on gx10 2.43 (all three modes, including whitespace/CRLF/binary/no-EOL). git 2.34's legacy --stable is NOT an oracle for binary or no-EOL diffs, so the self-test asserts golden ids from yoga. - pr_review_sign_receipt.sh stamps predicate.diff_patch_id (+ _algo) from the signed base_sha..head_sha before signing; refuses a receipt with no base/head, an unresolvable commit, an empty diff, or an author-supplied id that disagrees. Self-test 8 -> 14 rows. - check_pr_review_arm4.sh A2 selects the receipt by patch-id: the subject's diff is <sha>^1..<sha> on merge_group, merge-base(origin/main)..<sha> otherwise. Self-test 10 -> 16 rows: queue squash onto a moved main -> 0, one byte changed -> 1, one trailing space -> 1, two-parent queue commit -> 1, legacy receipt with no id -> 1. Refs ASL-00a (pi-21): the signer runs as the admin identity, the shared root. Pmat-Ticket: PMAT-4421 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(spec): §13.3.a — the pr-review receipt binds by diff patch-id, not ancestry (paiml#4421) Pmat-Ticket: PMAT-4421 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * roadmap: PMAT-4421 entry (paiml#4421) Pmat-Ticket: PMAT-4421 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(pr-review): pre-paiml#4421 receipts are exempt only for PRs open at merge (< paiml#4427) and only 24h (paiml#4421, FLOW-04) Operator ruling relayed by the cop (2026-09-25 16:14 Madrid): legacy receipts, which carry no diff_patch_id, are grandfathered, bounded to PRs open when FLOW-04 merges and expiring 24h after. Encoded as two constants, PR_REVIEW_LEGACY_BELOW=4427 and PR_REVIEW_LEGACY_UNTIL=2026-09-26T16:00:00Z. The signature is still verified. Self-test 16 -> 20 rows: in-window -> 0, expiry second -> 1, PR after the ceiling -> 1, bad signature in the window -> 1. row() pins LEGACY_BELOW=0 so no other row can reach the exemption. Pmat-Ticket: PMAT-4421 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(pr-review): a legacy receipt keeps the pre-paiml#4421 ancestor rule on branch events; ruling recorded in spec + ticket (paiml#4421) Quorum round 1 (lane 2, gemini-3.8-flash-high) FAILed the exemption on two grounds: the ticket and spec did not record it, and a legacy receipt was accepted without the ancestor check it needed before paiml#4421. Both fixed: - A2: on a branch event a legacy receipt must still have its head_sha as an ancestor of the subject; only the queue squash, which that rule could never bind, relies on the signature and the two bounds alone. - spec §13.3.a and PMAT-4421's acceptance criteria record the ruling and its bounds. Self-test 20 -> 22: legacy-exempt-not-ancestor -> 1, legacy-exempt-queue -> 0. Pmat-Ticket: PMAT-4421 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(pr-review): the legacy exemption tried only the last-listed legacy receipt; try every one (paiml#4421) Quorum round 2, lane 1: with two pre-paiml#4421 receipts, a stale head listed last hid a legacy receipt whose head IS an ancestor, and the branch event went RED. A2 now collects every legacy receipt and binds the first whose head is an ancestor (queue: the first, as before). New self-test row legacy-two-last-stale (23/23). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(pr-review): bashrs DET002/SEC010 on the paiml#4421 legacy lines, suppressed with the reason (guard-cargo) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(pr-review): state the grown Arm 4 (23) and signer (13) case-table counts; rename a row the derive regex could not see (guard-tree) check_pr_review_counts.sh derives rows with [a-z-]+, so legacy-expired-at-24h was invisible to it and the tree read 22 against a 23-row table. Refs paiml#4421 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(guard): anchor the shadow-row needle to its own step — 'case table: 13 rows' also matched the signer step Once the signer table reached 13 rows, growing the shadow table to 13 found the signer's step name and the tree-grew-a-shadow-row mutant survived. Refs paiml#4421 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(guard): derive the signer table from every hand-rolled check, not a fixed +1 — it runs 14, not 13 paiml#4421 added a second hand-rolled check (the patch-id assertion); the derive still assumed one and agreed with a step name that understated the table. Caught by quorum r5 lane 1. Refs paiml#4421 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
REPLACES #4315. Operator ruling 16:15 Madrid, relayed by the cop: no main-merges into PRs; cut fresh from main.
owner: aprender-fb
Touches .github/workflows (16 files), so it needs the standing-yes 3/3 quorum.
--- original #4315 body (truncated) ---
Emergency fold, batch B2 (CI / infra / scripts / workflows). Operator 2026-09-24: "We FIRST RIGHT NOW, emergency merge all 80 into 4 batches., the enforce 10 max rule going forward." Manifest: /mnt/nvme-raid0/cop-inbox/evidence/fold-manifest.md.
Each source head was merged with
git merge --no-ff, so every source commit is still in history. Roadmap conflicts were resolved as a union and the aggregate regenerated;aggregate --checkpasses.Folded sources
--ignore-run-failsetsid --waitmake contractspropagates pv's exit statusinclude!d .rs files enter the fmt gate as a shrink-only ratchetAPR_GIT_SHA_OVERRIDE)install.sh --channel rcinstalls the newest -rc prereleaseParked (reverted out, or never merged; each branch kept; each re-enters via the next like-batch)
check_no_competing_bench_harnesses(bench_serve_4252.py) once combined with main.check_runner_labelsand thecheck_no_pipe_into_grep_qceiling.Batch-only fixes (commit 81f3419)
check_nightly_pin.sh: a case string contained "no cargo build". That put the guard in guard_tree's cargo-only universe, so CI's--no-cargostep skipped it andcheck_guards_are_wiredreported it as NEW unwired.check_bin_cli_tests_wired.sh: fixed bashrs SEC011 by changingrm -rf "$T"to"${T:?}", which keeps the shell-lint ratchet at baseline.Verification (at 81f3419)
bash scripts/guard_tree.sh --no-cargo: 102 checks, 0 failed.cargo fmt --all -- --check: clean.cargo deny check advisories: clean.cargo test -p aprender-contracts --lib: 1700 passed, 1 failed (lint::tests::lint_empty_dir). The same failure occurs on main @ aa7c6ef, and th🤖 Generated with Claude Code
keep-open: this is a CI-infra replay of B2 (#4315); #3839 #4151 #4189 #4219 are cited for context and close with their own owners' PRs
ont-delta: none CI-infra replay of batch B2 (#4315) onto main; no ontology type, shape or resolves change