Repository navigation
CI: defer macOS Debug from pull requests (D3, CR-195) - #454
Merged
Merged
Conversation
…egistration floors, and defers the slow verifier self-test classes (D1, CR-195)
On pull_request the Release matrix leg and the kernel-only job now pass
--exclude-label slow, like Debug and sanitizers already did. Push to main,
workflow_dispatch and release keep every row and every class, so coverage is
unchanged and only its timing moves.
- ci_preflight.py: the two policy checks that forbade this (only PR Debug
matrix jobs may exclude slow rows; kernel-only must keep its full
population) become one exact rule with must-fail forms; docs/ci.md says the
same. This REVERSES the previous policy. The must-fail test for the
full-population rule edits the `with:` block of the reusable-workflow job
corpus-parity-subset (it has no `steps:`).
- ci_verify.py: EXCLUDED_REGISTERED_MIN gains release 895 and kernel 337
(KERNEL_MIN_TESTS), derived on one registered-count basis from the PR-world
job data, to be confirmed by a lab ctest -N. 337 keeps today's 34-row slack
and stays below the 371 registered in all 16 sampled pull-request and push
runs; 'release' stays 895.
- test_ci_verify.py classes are partitioned into FAST (13) and SLOW (9) in
scripts/ci_verifier_classes.py; the preflight verifier-tests stage runs the
FAST classes on every pull request and the SLOW ones only when
scripts/ci_verifier_paths.py finds a path the verifier reads; any unknown
path or class runs. Non-PR events run everything. HistoricalProviderPins is
skipped without the private overlay and is FAST by decision.
- preflight has `needs: changes` and `if: ${{ !cancelled() }}` (pinned in
ci_preflight.py); the docs say so.
- doc anchors: PRIVATE_FIXTURE_PROFILE_FLOORS moved from ci_verify.py:789 to
ci_verify.py:802 (CONTRIBUTING.md, docs/pages/contributing-llm.md,
docs/pages/native-engine.md, docs/ci.md).
- docs/ci.md gains L6's rule for the deferred rows: a red on main in an
excluded row or class blocks the next release cut and is fixed or reverted
within the hour. AGENTS.md lists Release and kernel-only among the jobs that
exclude the slow rows.
- New tests assert that push, dispatch and release carry no exclusion and no
class filter.
Doc sentences this change removes or rewrites ON PURPOSE (doc-reverts check):
- "The PR registration floors after lane FIX-E1E2 are 773 for Debug and
sanitizers and 782 for native ..." (docs/ci.md), introduced by b2a578c
("docs: make every README and doc page true before the release
(DOCS-ENGINE) (#300)"). Those numbers were already stale against
scripts/ci_verify.py (876/867/963) and are now the keys of
EXCLUDED_REGISTERED_MIN.
- "`preflight` waits for nothing." (docs/ci.md), introduced by 133f571 ("1.0
prep: CI flake fix, docs-only CI skip, benchmark refresh (supersedes #303,
#304, #307)"): preflight now waits for `changes`.
- "Preflight starts at once, and the proof jobs start alongside it" and
"`changes` and `preflight` wait for nothing and run on every event"
(docs/ci.md), same reason as 133f571 above.
- "than documentation runs preflight, both Release jobs, kernel-only and the
parity subset with their full sets" and "both Debug jobs, sanitizers and
native-live run the registered set excluding the 29 CTest rows labelled
`slow`" (docs/ci.md): now stated for Release and kernel-only too.
- "A Release leg runs its full population on every event" and "Every event
runs the whole kernel set" (the `build` and `kernel-only` rows of the
timeout table in docs/ci.md): a pull request now excludes the slow rows.
- "The two new keys are derived, not measured: each is the registered count in
the sampled public pull-request runs" (docs/ci.md): the kernel key differs
from the Release one.
Note: scripts/release.yml runs no CTest and no ci_verify, so "release keeps
every row" means only that no --exclude-label is present in any release path;
the release workflow itself is unchanged.
The registration floors for Release and kernel-only (895 and 337) are derived,
not measured; a lab run of the release and kernel steps confirms or corrects
them.
This is the squash of 11cd290, 1b01244 and ef8fc5d (doc-reverts judges
every commit with its own message; the three were folded so that one message
names every sentence).
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
This change stacks on 14c3365 (14c3365). Use an expression-driven matrix exclude to remove exactly macos-26 + Debug on pull_request. Ubuntu Release/Debug and macOS Release keep their existing build names. Every non-PR event retains the complete matrix, including push, workflow_dispatch, schedule and release contexts; existing triggers and the separate release workflow stay unchanged. The aggregate continues to require the selected matrix's result, with no missing-leg exception. Pin its whole result step as well as the exact build strategy, and add must-fail mutations for lost PR or full-event coverage and for accepting absent or skipped matrix results. Preserve the classified documentation-only skip. Update the event table, PR policy, docs-only counts, runner description and historical timing context. Keep the PR's own macOS Release proof and Release registration floor. Preserve the existing pinned AGENTS.md citation in place. The following parent documentation sentences are intentionally rewritten. Each quotation reproduces the old sentence in full, including its consecutive words, so this commit's own message names the changes for doc-reverts: docs/ci.md: - "A PR that changes more than documentation runs preflight and the parity subset with its full set; both Release jobs, both Debug jobs, kernel-only, sanitizers and the native cell of native-live run the registered set excluding the 29 CTest rows labelled `slow` in `tests/CMakeLists.txt` ([PR tier versus MAIN/RELEASE](#pr-tier-versus-mainrelease-what-is-excluded-where))." - "A pull request or a push to `main` whose change is documentation only runs `preflight` and the documentation build and skips every proof job: the four `build` legs, both macOS legs among them, `sanitizers`, `kernel-only`, `native-live` and `corpus-parity-subset`." - "A skipped matrix is never expanded, so a documentation-only run shows one skipped `build` check under its unexpanded name instead of the four legs." - "The `build` matrix retains its four legs and their `build (<image>, <type>)` names." - "The two hosted macOS legs stay on `macos-26` (M1, 3 cores, 7 GB)." - "A Release leg runs its full population on push and dispatch events; a pull request's Release legs, a fork's included, exclude the `slow` rows like its Debug legs, and that pull-request time is to be measured on real PR runs." AGENTS.md: - "GitHub Actions is advisory: PR Release, Debug, kernel-only, sanitizers and native jobs exclude the measured `slow` CTest rows; push-to-main and manual CI dispatch run every row, and a documentation-only change runs preflight alone." CONTRIBUTING.md: - "The GitHub Actions jobs (build on Ubuntu + macOS in Release and Debug, sanitizers, ctest, the source guards, the install/`find_package` smoke test and the parity subset) are advisory." Verification: NOT RUN. This lane is restricted to file edits and permitted read-only inspection; no repository code, parser, linter, test, build or corpus verification was run. Lab preflight tests, doc-anchors and doc-reverts, the PR's own GitHub CI and the required Claude Opus read remain pending. Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
D3 (macOS Debug leaves the pull-request matrix) was written on the pre-merge D1 squash 14c3365; main's final D1 is textually identical to it in the four files that conflicted (AGENTS.md, docs/ci.md, scripts/ci_preflight.py, scripts/test_ci_preflight.py: git diff 14c3365 0212cab is empty for them), so each conflict resolves to the D3 side. No D1 text is dropped; D3's own rewritten sentences are named in the D3 commit message. Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Both intents kept: D3 (macOS Debug excluded from pull-request builds, its ci.yml matrix exclude and docs/ci.md build row) and #462 (no timeout-minutes anywhere; scripts/ci_preflight.py requires their absence). The single conflict, docs/ci.md's preflight row, takes main's wording (owner #827 removed every declared job timeout; GitHub's 6 h platform maximum); the build row keeps the D3 text. Co-Authored-By: Claude Code <[email protected]>
Brings in #461 (engine release jobs on pf-ci-release). It touches .github/workflows/promote-baseline.yml, .github/workflows/release.yml, .github/actionlint.yaml, docs/ci.md, scripts/ci_preflight.py and scripts/test_ci_preflight.py; the merge has no conflict (this branch changes ci.yml, AGENTS.md, CONTRIBUTING.md and different regions of the other three). No resolution edits were made. Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
luisleo526
added a commit
that referenced
this pull request
Oct 20, 2026
…hecks-2 #454 landed the build-gate result-policy pin (GATE_STEP, AUTHZ_RESULT, authz routing) and its mutation tests; #464 carries the authz canon, D1/D3 matrix and docs. Conflicts resolved keeping both intents: - AGENTS.md: keeps both the #454 GitHub-Actions advisory rewording and the branch's authz/labels paragraph and docs-only "among verification jobs". - docs/ci.md: keeps main's D3 matrix paragraphs and the branch's owner October 20 runner rulings; every ci_preflight.py citation re-measured against the merged file (130-132, 135-139, 474-481, 482-497, 77-89). - scripts/ci_preflight.py: GATE_STEP (with AUTHZ_RESULT) is kept whole; the #454 exact-step pin is re-expressed for the canon's two-step gate as "last step == GATE_STEP", since authz_workflow_findings already pins the gate to exactly two steps with AUTHZ_REFUSE_STEP first. BUILD_STRATEGY carries D3's PR-only macOS Debug exclusion with the ci-spot/pool includes. - scripts/test_ci_preflight.py: both PRs' mutation suites kept; no test assumes a single gate step. Co-Authored-By: Claude Code <[email protected]>
luisleo526
added a commit
that referenced
this pull request
Oct 22, 2026
…, squash of #477) (#480) One tree-identical squash of the CR-233 branch (PR #477), on engine main 20267dd, so that the doc-reverts gate judges the change once, against main, with this message. It replaces the branch's eleven commits (f82ef8a, 0d63b1b, b4a98a4, cfda278, 9f33e1b, a merge of main, 64137d8, ab12867, 60bcfe2c, 8c2386ed and the control test 077d3ebb); the branch is kept as ci/cr233-pr-split-r2. What changes: - ci.yml keeps only the PR wall (authz, changes, preflight, Release/Debug build, corpus-parity-subset, build-gate); the full-event jobs (preflight-slow, macOS build, sanitizers, kernel-only, native-live, full corpus parity) move to ci-post.yml on pf-gcp-post; docs build/deploy split into docs.yml and docs-post.yml; corpus-parity-subset becomes its own workflow. - scripts/ci_preflight.py, its tests and docs/ci.md follow the split (runner contract, PR vs post aggregates, PR_PROOF_JOBS, PR fast rows). - scripts/check_two_world_registration.py models a parenthesised boolean group and get_test_property (property reads bind NOTFOUND); tests/CMakeLists.txt carries the PR-fast-rows guard; control tests 21 and 22 cover both. doc-reverts: docs/ci.md rewords or drops sentences introduced by earlier commits on main. They are named here: a8089b2 (the GCP fleet routing, #474), 21ba62b (native-live and the Ubuntu Debug leg as pool-only checks, #464), 03b2406 (release jobs on pf-ci-release, #461), 3c19a69 (Linux x64 jobs on the pf-ci-spot pool, #420), 133f571 (1.0 prep, docs-only CI skip, #303), d3cca9e (docs: migration semantics, publication guards), eed6598 (defer macOS Debug from pull requests, CR-195, #454). Each deleted sentence is superseded by the PR/post split described above; none is a silent revert. Proof: the previous head of this tree failed CLOUD proof rj-20261021t210656-9f91b8 on the causes fixed here (get_test_property unmodelled in the two-world walk, a stale macOS anchor, a stale aggregate lane list); this commit has not been run by its author, the next CLOUD proof is its first run. Co-authored-by: Claude Sonnet 5.5 <[email protected]>
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.
CI simplification D3 (CR-195): pull requests no longer build the macOS Debug leg.
pull_request. Ubuntu Release/Debug and macOS Release keep their build names.Stacked on D1 (#449): main 0212cab is merged in (merge commit 4008e2b). Own change vs main: 6 files, +180/-21.
Gate: lab preflight first, then the full steps; review per O19 is a Codex read (ORG-CX lane
org-cx-codexread). Landing is L6's.🤖 Generated with Claude Code