Repository navigation
ci: native-live and the ubuntu Debug leg as pool-only required PR checks under the CI canon - #464
Open
luisleo526 wants to merge 7 commits into
Open
luisleo526 wants to merge 7 commits into
luisleo526 wants to merge 7 commits into
Conversation
…ecks (authz + pool labels, no hosted fallback) Apply the frozen ci-labels.md canon, SHA-256 ac875205d8bdae2d7e0c23aca438118a0e9da2efb297de4e6b2cd80e7416f5b3. Copy the canon authz job into CI and the reusable native workflow. Gate all work on it, remove the PR branch filter and hosted runner fallbacks, use the heavy pool for preflight and Linux builds, and retain the existing macos-26 exception. Both always-running aggregates refuse non-successful authz first; the caller retains only the classified docs-only skip exception. Keep PR slow-row selection and all existing platform job maxima unchanged. Pin the resolved arrays, authz script and dependencies, and refusal steps. Add file-backed runner/authz/aggregate mutations and real-shell identity cases, including a no-op refusal mutation. Keep corpus and release routing separately pinned without changing those workflows. Intentionally replace the old runner/fallback and classification policy sentences in docs/ci.md, including material introduced by 0212cab, 3c19a69, 133f571, 693fd9e, d093560, 116c461, c3ed455, f736676, 2394ba2 and 7da487a. This supersedes the 28fe3466a / f9bee22 policy descriptions and the 3484a7c stopgap; no new timing measurements are claimed. No repository scripts, linters, lexers, builds or tests were run on this Mac, per CORE-TOP's 2026-10-20 stop order. The org policy checker was also not run because it requires Ruby. Git hooks are disabled for this commit so they cannot execute repository code. Full verification and pool CI remain pending on the committed tree.
Repair the stale verifier-name mutation by matching the real step fields independently and keeping a file-backed unsized-call refusal witness. Declare the pool labels in the automatically discovered actionlint config and refresh the AGENTS content pin. Copy the frozen ci-labels.md refusal step before checkout in every inline CI job with a status function. Enforce the protocol for always, cancelled, failure and success, retain leading uses/run keys on unnamed steps, and add file-backed negative controls with positive guarded-run controls. Canon SHA-256: ac875205d8bdae2d7e0c23aca438118a0e9da2efb297de4e6b2cd80e7416f5b3. Intentionally correct the classification-order sentence in docs/ci.md introduced by 133f571: authz is first and changes needs it. The native-feature-parity edit changes only the sha256 pin for the unchanged AGENTS lines. No repository script, test, linter, parser, build or measurement was run on this Mac under the owner stop order. Git hooks are disabled for this local commit. The supervisor CLOUD preflight remains the validation judge.
The anchor's pin hash was refreshed to AGENTS.md:144-145, but the sentence it cites (`PASS` verdict binding the exact HEADs) lives at 149-150, so the SYMMISS check fails the preflight. Restore the pin to the windows's real hash and cite the real range. Co-Authored-By: Claude Code <noreply@anthropic.com>
…wner's October 20 runner rulings Squash of two earlier docs commits (e413335ad restored the preflight-enforced rules; 5c1bc44e2 adopted the owner's October 20 runner rulings): against the parent the net change is additions plus one rewritten sentence, and no L6 2026-10-19 hosted paragraph appears at all. Policy now stated in docs/ci.md: owner CI-HOSTED = B (all CI on our own machines, credentialed jobs included: credential-free jobs on pf-ci, credentialed jobs on pf-ci-release at protected refs, one job per VM, only macOS stays on GitHub; the CR-171 hosted exception is void) and REL-HOSTED = B (no release hosted exception), as amended by L6 on 2026-10-21 00:0x. A dated transitional sentence names the preflight pins that still list docs, promote and release as hosted until #461 and the ci/pfrel-* heads land. Rewritten sentence (the matrix-skip description), old text quoted verbatim: > so a documentation-only run shows one skipped `build` check instead of the four legs. Required-check configuration must retain this aggregate to enforce that exception. New text: the same sentences, with "under its unexpanded name" added after "one skipped `build` check". Validation: NOT RUN here (nothing from the repository runs on the authoring machine); the CLOUD preflight of the merged head is the proof. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Brings in #461 (engine release and promote jobs on pf-ci-release). Conflicts in scripts/ci_preflight.py (3 hunks), scripts/test_ci_preflight.py (2), docs/ci.md (4) and .github/actionlint.yaml (main's superset taken); both intents are kept: - ci_preflight.py: the canon CI/native pins, authz and refusal-step checks stay; #461's RELEASE_RUNNER, RELEASE_JOB_RUNNERS and release/promote event checks come in; HOSTED_JOB_RUNNERS keeps only docs `build`, because #461 removed the hosted pins for promote and release. The release `prebuilt` matrix expression stays `${{ matrix.runner }}` as on main. - test_ci_preflight.py: the canon tests and #461's isolated-release tests and the actionlint label tests are all kept; the tests that asserted the old hosted promote/release routes are replaced by #461's pinned-route tests. - docs/ci.md: the canon text stays verbatim; #461's release isolation and promotion descriptions come in; the dated transitional sentence now says the hosted pins are gone and cites the real lines of the resolved preflight. Resolution by Codex lane core-canon-merge461 (report kept with the lane), read hunk by hunk by the supervisor; the preflight on the merged tree is the check. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…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 <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.
Summary
Applies the frozen CI canon (
ci-labels.md; written against SHA-256ac875205d8bdae2d7e0c23aca438118a0e9da2efb297de4e6b2cd80e7416f5b3, re-checked at 2026-10-21 03:28 against r9, SHA-256 prefix74c8335c, which only adds the release-chain exception paragraph: theauthzjob text is unchanged, and theauthzjob inci.ymland innative-live.ymlhas the same md5 as the r9 canon job,fecc1a83d04d56e9aa3226b9913e5736) to engine CI, so every CI job runs on our own machines (owner rulings CI-HOSTED = B and REL-HOSTED = B; only macOS stays on GitHub) behind the canonauthzjob:ci.ymland the reusablenative-live.ymlcarry the canonauthzjob byte for byte; every other jobneeds: authz; the PR branch filter and the hosted-runner fallbacks are removed; preflight and the Linux builds use the heavy pool label["self-hosted","pf-ci","pf-ci-x64-16"], the rest use["self-hosted","pf-ci","pf-ci-x64"]; the existingmacos-26exception stays.build-gate,native-live-gate) start with the canon refusal step for a non-successfulauthz; the caller keeps only the classified docs-only skip exception. Every inline job with a status function (always,cancelled,failure,success) starts with the canon refusal step before any checkout.native-liveand the Ubuntu Debug leg run as canonpull_requestchecks.scripts/ci_preflight.pyandscripts/test_ci_preflight.pypin the resolved arrays, theauthzscript and dependencies, and the refusal steps, with file-backed mutations;.github/actionlint.yamldeclares the pool labels (merged with main's superset after ci: release jobs run on pf-ci-release (owner: CI on our machines) #461).docs/ci.mdreplaces the runner/fallback and classification policy with the October 20 rulings (the earlier hosted-credential paragraphs are superseded and quoted in the docs commit message), restores the rules the preflight still enforces with their exact enforcing lines, and states that ci: release jobs run on pf-ci-release (owner: CI on our machines) #461 has merged: the old hosted pins for the engine's release and promote jobs are gone, those jobs are pinned topf-ci-release, and docsbuildstays hosted (cited with the real lines of the resolvedscripts/ci_preflight.py).Merge with #461
Engine main moved to
03b2406dd(PR #461, release and promote jobs onpf-ci-release) while this PR was open. This branch took it with one merge commit (b3c7d5e07):scripts/ci_preflight.py(3 conflict hunks),scripts/test_ci_preflight.py(2),docs/ci.md(4) and.github/actionlint.yaml(main's superset taken) conflicted; both intents are kept. The canon pins,authzand refusal-step checks, and the canon text are untouched; #461'sRELEASE_RUNNER,RELEASE_JOB_RUNNERS, event checks and tests come in;HOSTED_JOB_RUNNERSkeeps only docsbuild; the two tests that asserted the old hosted promote/release routes are replaced by #461's pinned-route tests. The resolution was made by a Codex lane and read hunk by hunk against both parents by the supervisor.Verification record
b3c7d5e07(tree0bac42b6, clean, corpus checked out): jobrj-20261020t182540-48397d,ci_preflight: passed (exit 0, 54 stages, 0 advisory), 503 s, includingdoc-revertsand the preflight's own test stage. (Earlier head4bd57b7ca:rj-20261020t165627-894faa, 53 stages, passed.)git diff gh/main HEADof the merged head (122 KB, brief 12,520 chars, not truncated, 3 parts): PASS literal_hack 0.13, scope_creep 1.73, debug_left 0.18, does_what_brief_asks 0.55. Raw:runs/core-org-r33/guardcanon4/guard.raw(the pre-merge head's guard:guardcanon3/guard.raw, PASS).Policy checker (
ci-policy-check.py,--not-required preflight,build,sanitizers,kernel-only,native-live,corpus-parity-subset)4bd57b7ca15e7f2ba(before #938)4bd57b7ca2de765f2(after #938)b3c7d5e07(this head, after #461)2de765f2b3c7d5e07(this head), canon r9fd795257The four R5 findings were the canon's own aggregate shape in
ci.yml(native-livestep 1,corpus-parity-subsetstep 1,build-gatestep 2) andnative-live.yml(native-live-gatestep 2). L6 ruled (2026-10-21 00:30) that the frozen canon wins and that the checker was wrong; laneboss's fix (#938) removed exactly those four lines. The canon text is unchanged. The three R6 findings that disappeared with the merge were the engine'srelease.ymljobs (release,notify-hub) andpromote-baseline.ymlpromote, now onpf-ci-release. Raw outputs:runs/core-org-r33/guardcanon3/policy-before-0109.txt,policy-after-0158.txt,guardcanon4/policy-merged.txt.The 11 remaining findings are on files this PR does not touch, plus one the checker cannot resolve:
corpus-parity.yml(R2 noauthzjob; R3 two jobs do not need it; R6 hosted fallback),docs.yml(R2, R3, R6: Cloudflare-secret build),promote-baseline.yml(R1pull_request_target, an L6-named exception) andrelease.ymlprebuilt(R6: its matrix mixes the pool label with hosted ARM/macOS legs): pre-existing, carded as their own PR (CI-PREEXISTING-R2R3R6).ci.ymljobbuild(R6):runs-on: ${{ fromJSON(matrix.runner) }}where the matrix holds the two literal arrays["self-hosted","pf-ci","pf-ci-x64-16"]and["macos-26"]; both are canonical, the checker does not resolve matrix expressions.Notes
authzjob and the refusal steps in the real pull_request path.🤖 Generated with Claude Code