Conversation
…uites nightly, mutants only on .rs, gate's skipped rule tightened (#3676) Refs #3676 #3668 #3658 Operator 2026-09-21: aprender releases as fast as possible, intel idle; "YES, coverage on tags release only." All five workflow items approved by Noah directly (CLAUDE.md check-in for .github/workflows edits). 1. COVERAGE -- ci.yml `skip_coverage: true` on the sovereign-ci call. That job gated nothing (no coverage_min) and measured nothing (`--lib` on the facade root: 0 tests, per the existing NOTE), at 237 s per run (main 35563537942). coverage-nightly.yml now also triggers on `push: tags: ['v*']` (COV_FLOOR via `make coverage`), concurrency per ref so a tag run and the nightly do not cancel each other. Every consumer enumerated first (the rmedia trap aprender-04 relayed): the pre-publish dogfood's `make coverage-check` (produces its own llvm-cov), the queue steward (reacts only to `failure`), two tests reading an embedded string / the Makefile, a legacy prepare-release.sh (local llvm-cov). None reads CI's number. The one output lost: that job's advisory Codecov upload. NEW scripts/check_coverage_has_producers.sh asserts the chain: R1 `make -n coverage-check` reaches llvm-cov; R2 dogfood runs it (non-comment); R3 coverage-nightly's `on:` block has schedule AND tags [v*] (comments and other top-level keys don't count); R4 numeric COV_FLOOR. 10 rows, each link broken -> RED; missing file -> ENV 2. NOT done here, stated: making T-4 WAIT on the tag's coverage run is an autopilot change, deliberately not made on the 0.69 cut day. 2. BOOK -- no change. book.yml and book-contracts.yml are already path-filtered; book-contracts watches crates/aprender-core/src/** because chapter examples run aprender-core code, which check_workflow_path_filters.sh RULE 2 requires ("a gate that runs code must watch the code it runs"). Narrowing it would break that rule. 3a. PERF GATE TABLE -- the explicit guard-tree step (405 s on main 35563537942) is replaced by NEW scripts/check_perf_gate_selftest_scoped.sh, dispatched by guard_tree.sh --no-cargo: it runs `perf_gate.sh --selftest` only when the tree diff vs origin/main touches its DERIVED scope -- every $ROOT/ path perf_gate.sh reads, followed transitively through the scripts it calls (8 paths today) -- and otherwise prints a SUMMARY skip line. Unknown comparand or a failed diff -> RUN, never skip. The table runs whole nightly (guards-nightly.yml + manifest, 405 s). 11-row case table; mutants RED: scope not transitive, renames hiding the old side, unknown -> skip, prefix-string matching. Registered in check_no_timing_in_required.sh's META_GUARDS (reads no clock). 3b. MODEL SUITES -- the PR step keeps ONLY falsification_spec_v10_tests: it holds the SATD ratchet measured against origin/main, the one property here a diff can change (and vacuous on the nightly, where HEAD == origin/main). The stress and gpu_state suites judge the whole tree; guards-nightly.yml already runs all three. check_model_tests_wired: all 3 still wired. 4. MUTANTS -- the diff step emits has_rs (`git diff --no-renames --name-only`); image pull, `cargo install cargo-mutants`, the run and the upload are gated on it. A diff with no .rs passes quickly instead of installing the tool. 5. GATE -- the mutants rule, between GATE-MUTANTS-RULE markers: on a pull_request mutants must SUCCEED (a no-.rs diff succeeds); `skipped` passes only on other events, where the job's own `if:` skips it. The old rule ("success/skipped both pass") passed a PR whose mutants never ran. NEW scripts/check_ci_gate_mutants_rule.sh EXTRACTS that block from ci.yml and executes it for 10 (event, result) pairs; its --self-test plants the old rule and it goes RED (3 rows); no block -> ENV 2. Gates: guard_tree --no-cargo: all PASS except check_fleet_pv_shapes_gate.sh, the known lambda-box fleet-pv condition (identical on main; fixed in #3669); guard_tree_test 23/0; guards-are-wired, guards-nightly-manifest (8 entries), no-timing-in-required, model-tests-wired PASS; bashrs 0 errors on the new files, bashrs-gate PASS; actionlint: the same 7 shellcheck infos as main, nothing new; roadmap aggregate idempotent; fmt, deny, contracts 1666. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Contributor
Author
|
quorum-review (AD-04): NOT agreed (auto_merge: checked=true was_armed=false disarmed=false) {
"ticket": "PMAT-3676",
"head": "e2d12bdd1203666f133be3f766d908950e7f4ee0",
"width": 3,
"executor": "agy",
"agreed": false,
"auto_merge": {
"checked": true,
"was_armed": false,
"disarmed": false,
"note": "auto-merge not armed"
},
"lanes": [
{
"lane": 1,
"verdict": "FAIL",
"findings": 3
},
{
"lane": 2,
"verdict": "FAIL",
"findings": 3
},
{
"lane": 3,
"verdict": "PASS",
"findings": 6
}
]
} |
…, perf-gate smoke row, gate-rule self-test independent of ci.yml (#3676) Refs #3676 Round 1 (e2d12bd) was FAIL/FAIL/PASS. The two FAIL lanes held the diff to the ticket's text and were right on three counts: 1. Item 2 says the book jobs are path-filtered "and nightly always". They were filtered, but NO path-filtered workflow had a schedule. book.yml, book-contracts.yml and install-script.yml now carry a nightly cron (22:30 / 22:45 / 23:00 UTC, ~5h early for the #3292 dispatch delay; book.yml's pages deploy stays push-only by its own `if:`). 2. Item 5 says check_workflow_path_filters.sh is updated. It gains RULE 3: a path-FILTERED workflow must also trigger on `schedule:` with a cron -- the filter is a claim that nothing outside it can break the gate, and the nightly is what re-checks it (book.yml sat dark three months, per the guard's own header). scripts/lib/workflow_path_filters.py emits a SCHEDULE row. Self-test 4 -> 6: no schedule -> RED; `schedule: []` -> RED. On the tree before the crons: 3 workflows RED; after: PASS. 3. Item 3 says "The PR path keeps a smoke row" for the perf table. On a skip, check_perf_gate_selftest_scoped.sh now requires `perf_gate.sh --list-selftests` to exit 0 and enumerate >= 1 case (109 today, ~60 ms), and says so on the SUMMARY line. Three end-to-end rows (skip + smoke; in scope -> full table; a table that cannot enumerate -> RED). 14 rows; five mutants RED (not transitive, renames, unknown -> skip, prefix match, smoke removed). Lane 1's other finding also held: check_ci_gate_mutants_rule.sh checked for ci.yml before --self-test, so its self-test could not run without the workflow. The check now sits on the bare-run path only. Gates: guard_tree --no-cargo all PASS except check_fleet_pv_shapes_gate.sh (the lambda-box fleet-pv condition, fixed in #3669); guard_tree_test 23/0; bashrs 0 errors on every changed script, bashrs-gate PASS; actionlint: no finding beyond main's shellcheck infos. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Contributor
Author
|
Non-author measured seat: PASS (aprender-7a, 2026-09-21 11:20Z). I did not author PMAT-3676. Everything ran in
|
… closes-issue --self-test (provisional pin 5997b41)
…-tag # Conflicts: # docs/roadmaps/roadmap.yaml
…— `coverage_on: tag` on the merged #77 pin, not `skip_coverage: true` (PMAT-3676) `skip_coverage: true` on sovereign-ci@70e51ec made `ci / gate` RED on every PR: that reusable's gate counts a skipped coverage job as a mandatory failure ("coverage did not succeed (result: skipped)"). #3688's own CI (run 35585906113) and batch-1 #3707 both hit it, and #3707 left this row out. - sovereign-ci is pinned to paiml/.github f713290c86fcd70d6f26a0faab14e67e6713586f: #74's `coverage_on` input, plus #77, which keeps #73's roadmap-fragment-parity NOT-ACTIVE while roadmap.yaml is tracked at the base (aprender still commits it; #3709 migrates it). - `coverage_on: tag` replaces `skip_coverage: true`, and ci.yml gets `push: tags: ['v*']`, the reusable's second required edit. - coverage-nightly's v* tag trigger is removed, so ci.yml measures each tag once. - check_coverage_has_producers.sh R3/R5 assert all of this. Self-test 16/16, including "skip_coverage: true instead of coverage_on -> RED". On f7b25a6 it reports R3+R5 RED; after the change it PASSES. - ci.yml now runs `check_pr_closes_issue.sh --self-test` beside `--body` (guard_tree skips it as wired-with-args, so its case table ran in no job; found by aprender-f0), and the comment claiming otherwise is corrected. Local: guard_tree --no-cargo 82/0 (after merging main 225b2a9). The proof before re-folding into batch-2 is this PR's own CI: green, with the gate logging `coverage: NOT MEASURED` and `roadmap-fragment-parity: NOT-ACTIVE`. Refs #3676 #3707 #3709 paiml/.github#77 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
§13.11 rung 1 — quorum shadow verdict Shadow mode: this records a verdict and merges nothing. A refusal |
This branch has not been deployed
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.
Refs #3676 #3668 #3658. Not armed. Per the batching process it rides the next batch. It edits
.github/workflows/(ci.yml, coverage-nightly.yml, guards-nightly.yml). Noah approved all five items directly; the operator's words are quoted on #3676.keep-open: #3676stays open until done_when item 1 (≥40% fewer intel runner-minutes per 24 h) is measured after merge.skip_coverage: trueon the sovereign-ci call.coverage-nightly.ymlalso runs onpush: tags: ['v*'](COV_FLOOR), with per-ref concurrency.coverage_min) and measured 0 tests (--libon the facade root, per the existing NOTE). It cost 237 s per run on main 35563537942.make coverage-checkand produces its own number; the steward reacts only tofailure; the tests read an embedded string or the Makefile;prepare-release.shruns llvm-cov locally. None reads CI's number. The one output lost is the advisory Codecov upload.check_coverage_has_producers.shcovers R1–R4 in 10 rows, and each broken link turns RED.book-contractswatchescrates/aprender-core/src/**because the chapters run aprender-core code, andcheck_workflow_path_filters.shRULE 2 requires that.check_perf_gate_selftest_scoped.sh. It runs only when the diff vs origin/main touches the derived scope: every$ROOT/pathperf_gate.shreads, followed transitively (8 paths). Otherwise it prints aSUMMARYskip line. An unknown comparand means RUN. It runs whole every night.falsification_spec_v10_tests, the SATD ratchet vs origin/main and the one property a diff can change. The stress and gpu_state suites run nightly, as they already did.check_model_tests_wired: all 3 still wired.has_rs(--no-renames). Image pull, cargo-mutants install, the run and the upload are gated on it.skippedpasses only on other events, where its ownif:skips it. The old rule passed a PR whose mutants never ran.check_ci_gate_mutants_rule.shexecutes the gate's own marked block for 10 (event, result) pairs. The old rule, planted, goes RED.Not done, stated: T-4 waiting on the tag's coverage run. That is an autopilot change, deliberately not made on the 0.69 cut day. Today a floor breach reds the tag's coverage run but does not stop the cascade.
Gates:
guard_tree --no-cargo: all PASS exceptcheck_fleet_pv_shapes_gate.sh, the lambda-box fleet-pv condition, which is identical on main and fixed in release(0.69): batch — 15 receipted PRs + fleet-pv andon fix, one CI run, one queue slot #3669Update 2026-09-21 ~15:45Z (aprender-62, cop ruling): the
ci / gatefix,coverage_on: tagon the merged paiml/.github#77 pinThis PR's first spelling,
skip_coverage: trueon sovereign-ci@70e51ec, turnedci / gateRED on every PR: that reusable's gate counts a skipped coverage job as a mandatory failure ("coverage did not succeed (result: skipped)"). This PR's own run 35585906113 showed it (it was cancelled unread), and batch-1 #3707 hit it and left this row out. Heada738b926c, a fast-forward frome2d12bdd1that carries the seatedf7b25a6c6plus:f713290c86fcd70d6f26a0faab14e67e6713586f: Add AutoML module with type-safe hyperparameter optimization #74'scoverage_oninput, plus sovereign-ci: roadmap-fragment-parity arms only once the aggregate is untracked at the base .github#77, which keeps feat: Model evaluation framework for .apr models with retraining support #73's roadmap-fragment-parity NOT-ACTIVE whileroadmap.yamlis tracked at the base. aprender still commits it; aprender: stop tracking roadmap.yaml + Pmat-Ticket trailers — the precondition for sovereign-ci roadmap-fragment-parity (A2 of #3676) #3709 migrates it.coverage_on: tagreplacesskip_coverage: true, and ci.yml getspush: tags: ['v*'], the reusable's second required edit. coverage-nightly's v* tag trigger is removed, so each tag is measured once, by ci.yml.scripts/check_coverage_has_producers.shR3/R5 assert all of this. Self-test 16/16, including "skip_coverage: true instead of coverage_on -> RED". Onf7b25a6c6it reports R3+R5 RED; now it PASSES.check_pr_closes_issue.sh --self-testbeside--body(its case table ran in no job; found by aprender-f0), and the comment that claimed guard_tree ran it is corrected.225b2a9abis merged in (roadmap regenerated). Local:guard_tree --no-cargo82/0.Proof required before re-folding into batch-2: this PR's own CI green, with the gate logging
coverage: NOT MEASUREDandroadmap-fragment-parity: NOT-ACTIVE.keep-open: #3676 stays open until the CI diet is measured on main after this row lands (batch-2); #3668 and #3658 are cited for context and close on their own rows; #3709 is the follow-up migration (stop tracking roadmap.yaml) that arms #73's check.
🤖 Generated with Claude Code