Repository navigation
ci: two-state CI — the seven non-blocking ci.yml jobs run only on schedule and workflow_dispatch (Refs #2170) - #2171
Merged
Merged
Conversation
…k a merge does not run on the PR path (RED on this tree) (Refs #2170) Asserts from ci.yml alone: every job in the advisory marker carries the job-level night if:, required jobs carry none and need no night job, and no continue-on-error sits in a job without the night if:. RED here: all seven advisory jobs lack the if:, and license-scan's report step is a continue-on-error on the PR path. PMAT-Ticket: PMAT-2170 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…edule and workflow_dispatch (Refs #2170) kani, lake-build, docs, wasi, lean-models, shader-validate and license-scan cannot block a merge (the required set is gate and workspace-test), so each gets the job-level if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' gate and workspace-test are unchanged. A comment by the enforcement markers records the rule; docs/RELEASE.md §5 step 2 now dispatches ci on the pinned SHA before reading the advisory statuses. Depends on #2167, which adds the schedule and workflow_dispatch triggers. XPILE-NIGHT-CHECKS-001 is GREEN; restoring the old ci.yml turns it RED (seven jobs lack the if:, and license-scan's continue-on-error step is back on the PR path). PMAT-Ticket: PMAT-2170 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ule and workflow_dispatch (Refs #2170) Quorum round 1 (2 of 3 lanes FAIL) found that the seven night jobs never run on a tree without those triggers, and the falsifier did not see it. Assertion 5 is RED until #2167 lands the triggers, so this branch cannot merge before it. PMAT-Ticket: PMAT-2170 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…g; name the trigger dependency (Refs #2170) Quorum round 2 (gemini-4-argon-high) found the note sat between the markers and the block that counts lines back to them ("eleven lines above"). It now follows that block, and says that XPILE-NIGHT-CHECKS-001 also requires the schedule and workflow_dispatch triggers (PMAT-2166). PMAT-Ticket: PMAT-2170 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…nted control 3/3 FAIL (Refs #2170) The diff cannot be judged on a tree without #2167's triggers (rounds 1 and 2 failed on exactly that), so round 3 judged these commits cherry- picked onto ci/nightly-schedule (head 7ca2607d): gemini-4-argon-high, claude-sonnet-5-5-high and claude-haiku-4-5, 3/3 PASS. Planted control (workspace-test given the night if:, assertion 2 weakened to spare it): 3/3 FAIL, each naming ci.yml:160-161. This receipt binds the stacked head, not this branch: after #2167 merges, rebase onto main and run a fresh round before any arming. PMAT-Ticket: PMAT-2170 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
noahgift
added a commit
that referenced
this pull request
Oct 15, 2026
… / gate red on an unchanged main — a dated, ledgered exemption (Refs #2172) (#2173) The advisory-db moved under the tree: main's gate was green on 2026-10-10 and `cargo deny check advisories` FAILED from PR #2171's run on 2026-10-13 (run 38477290210) and on origin/main locally on 2026-10-15. Reach (cargo tree -i, all features): serde_yaml 0.9.34+deprecated, depended on by xpile, xpile-contracts, xpile-forjar-codegen and the third-party aprender-contracts 0.33.0. Dropping the in-tree uses alone leaves it reachable. The exemption goes through the PMAT-2120 ledger: owner noah, owner_ticket PMAT-2172, removed_by 2026-11-30 (46 days, inside max_window_days 90). Measured live: exit 0 with the ignore, exit 1 with only this id removed. PMAT-2172 Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts: # docs/roadmaps/roadmap.yaml
noahgift
commented
Oct 15, 2026
noahgift
left a comment
Contributor
Author
There was a problem hiding this comment.
seat 2, aprender-clerk @852d1628ef — APPROVE.
I authored none of these commits (b45b94d, 91cbfb9, e64ad9c, 9ba9150, 73dd69a, merge 852d162; all by infra-38-worker).
- Workflow change: ci.yml gives exactly the seven ADVISORY jobs the job-level if schedule || workflow_dispatch: kani, lake-build, docs, wasi, lean-models, shader-validate, license-scan. The required gate and workspace-test have no job-level if.
- No hidden skip of a gate: no job in ci.yml uses needs:, so a required job cannot be skipped through a moved one.
- Two states only: no continue-on-error is added. On this PR's run the seven show SKIPPED and both gates show SUCCESS.
- The schedule trigger is in place: #2167's schedule and workflow_dispatch triggers are already on main.
- Falsifier: crates/xpile/tests/night_checks_off_pr_path.rs (XPILE-NIGHT-CHECKS-001) reads the REQUIRED and ADVISORY markers and refuses an empty set. It asserts four things: advisory jobs run only at night, gates are unconditioned and need no night job, no continue-on-error is on the PR path, and the schedule/dispatch triggers exist. It runs in workspace-test, which is green.
- RELEASE.md step 2 now dispatches ci on the pinned SHA to record advisory statuses in the release notes, without blocking the tag. Non-blocking note: that wait adds wall time to the release. Reading the latest nightly run on the pinned SHA, when one exists, would avoid it.
- Stale receipts: the in-tree docs/audits/quorum-PMAT-2170*.json bind the stacked 7ca2607d, as the author says. The receipt bound to this head is out of tree.
Required checks gate and workspace-test are green @852d1628ef.
noahgift
commented
Oct 15, 2026
noahgift
left a comment
Contributor
Author
There was a problem hiding this comment.
APPROVE — seat 1, aprender-a7, head 852d162
Read the full diff at this head; gate and workspace-test are green on it, and the seven night jobs show as skipped, as intended.
.github/workflows/ci.yml: the identical job-levelif: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch'goes on exactly the seven jobs in the ADVISORY-CONTEXTS marker (docs, kani, lake-build, lean-models, license-scan, shader-validate, wasi).gateandworkspace-test, the only required contexts in the main ruleset, carry noif:. No jobneeds:a night job, so a skipped job cannot skip a required one.crates/xpile/tests/night_checks_off_pr_path.rspins this from the marker: night-only advisory jobs, gates unconditional, nocontinue-on-erroron the PR path, and theschedule/workflow_dispatchtriggers present.docs/RELEASE.md§5 step 2 now dispatches ci on the pinned SHA and checkshead_shabefore reading statuses. Without that, the release would read skipped runs.
Non-blocking:
- The new comment says a night red "opens or updates one issue with one owner", but nothing in
ci.ymldoes that yet. Either add the step or name who triages the nightly run, or a red sits unseen until a release dispatch. - The committed
docs/audits/quorum-PMAT-2170*.jsonbind the earlier stacked head, not this one; the binding round for this head is out of tree.
This was referenced Oct 15, 2026
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.
Merges after #2167. This branch is red on its own tree by design until #2167 lands: assertion 5 of the new falsifier requires the
schedule:andworkflow_dispatch:triggers that #2167 adds. Without them, the seven jobs below would never run at all. That turns a check off; it does not move it to the night. The red keeps this PR from merging first.Plan row C3 of
docs/specifications/sub/release-v0.1.619-plan.md, epic #2124. Refs #2170. Its acceptance asks for the first PR run and the first night run to be recorded on the epic, so this PR does not close the issue.What changes
ci.yml: seven jobs cannot block a merge (the required set isgateandworkspace-test). They arekani,lake-build,docs,wasi,lean-models,shader-validateandlicense-scan. Each now has exactly this job-level condition:if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch'gateandworkspace-testdo not change. A TWO-STATE CI comment after the enforcement-marker block records the rule.docs/RELEASE.md§5 step 2: dispatchciwhilemainis on the pinned SHA, and check that run'shead_shabefore recording the advisory statuses.crates/xpile/tests/night_checks_off_pr_path.rs(XPILE-NIGHT-CHECKS-001). It reads onlyci.ymland finds the night set from theADVISORY-CONTEXTSmarker. It asserts five things:if:;if:, andpull_requestandpushstay;needs:a night job;continue-on-errorin a job without the nightif:;schedule(with acron:entry) andworkflow_dispatchtriggers exist.Evidence
ci.yml): assertion 1 failed for all seven jobs, and assertion 4 failed onlicense-scan's report step.origin/ci/nightly-schedule, the falsifier (4/4) andruleset_drift(5/5) are GREEN. I also ran the other tests that readci.yml, all green:enforcement_prose_witness,changelog_freshness,ci_tool_install,dependency_license_policy,derived_corpus_vacuity_witness,release_runbook_facts_witness,roadmap_registrationandwitness_floor.ci.ymlturns assertions 1 and 4 RED again. A planted mutant that puts the nightif:onworkspace-testturns assertion 2 RED.Quorum
claude-opus-5-5. Lanes:gemini-4-argon-high(agy),claude-sonnet-5-5-high(agy) andclaude-haiku-4-5(Claude Code).ci/nightly-schedule(stacked head 7ca2607d): 3/3 PASS (docs/audits/quorum-PMAT-2170.json).if:also onworkspace-testand assertion 2 weakened so it no longer checks that job. Result: 3/3 FAIL, each namingci.yml:160-161(docs/audits/quorum-PMAT-2170-control.json).mainand run a fresh round before any arming. Theroadmap.yamlEOF conflict with ci: run the full ci workflow nightly on main (PMAT-2166) #2167 resolves as main plus this row.🤖 Generated with Claude Code