Repository navigation
ci: run the full ci workflow nightly on main (PMAT-2166) - #2167
Merged
Merged
Conversation
xpile had no scheduled workflow: ci, book and release fire only on push/PR/tag, so an idle main never noticed drift in the stable toolchain, crates.io installs (cf. depyler's nightly, broken when provable-contracts-cli 0.4.0 dropped its binary) or the advisory DB. Add a daily schedule (06:23 UTC) and workflow_dispatch to ci.yml; every job runs unchanged against main. No job reads the event type, so the scheduled run is the same gate a push runs. Refs #2166 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Contributor
Author
|
quorum-review (AD-04): three PASS — agreed (auto_merge: checked=true was_armed=false disarmed=false) {
"ticket": "PMAT-2166",
"head": "6d81cd44441536ce803d9d27bf2532aa90c8bb34",
"width": 3,
"executor": "agy",
"agreed": true,
"auto_merge": {
"checked": true,
"was_armed": false,
"disarmed": false,
"note": "auto-merge not armed"
},
"lanes": [
{
"lane": 1,
"verdict": "PASS",
"findings": 0
},
{
"lane": 2,
"verdict": "PASS",
"findings": 0
},
{
"lane": 3,
"verdict": "PASS",
"findings": 0
}
]
} |
Refs #2166 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
noahgift
added a commit
that referenced
this pull request
Oct 10, 2026
…epic split, with its quorum receipt (Refs #2124) (#2168) Nothing has been tagged since v0.1.618 (2026-07-30). The rows of both epic #2124 and epic #2125 landed on main from 2026-09-23 to 2026-09-25. v0.1.619 is the next tag. Its CORE rows: reconcile the ledger, land the nightly schedule (#2167), move the seven non-blocking PR jobs to the night run, repo hygiene (waiting on the owner), release mechanics, and the pre-publish gates on a clean-room binary. v0.1.620's LOOK-AHEAD rows re-verify #2125 on the release, add a nightly binary (#2149), add `xpile update` (#2153), and request promotions. Planted quorum: 4 rounds, 3 lanes (claude-sonnet-5-5 x2, claude-haiku-4-5; degraded: same-family). Every round refused its plant (3,3,3,2 of 3). next_tag PASS 3/3 in every round. The receipt is in docs/audits/. Co-authored-by: Noah Gift <claude@noahgift.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 13, 2026
Brings the branch up to main (incl. #2173). One conflict, docs/roadmaps/roadmap.yaml: both sides appended a row at EOF; resolved as main (PMAT-2172) followed by this PR's PMAT-2166 row. Refs PMAT-2166 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
noahgift
commented
Oct 15, 2026
noahgift
left a comment
Contributor
Author
There was a problem hiding this comment.
APPROVE — seat 1, aprender-a7, head 9253510
Read the full diff at this head; every check is green on it.
.github/workflows/ci.yml: addsschedule: '23 6 * * *'andworkflow_dispatchonly. No job in the file has anif:on event or ref, and none deploys or uses secrets, so a scheduled run is the same job set a push to main runs. It does not change what a PR or the merge accepts.docs/audits/quorum-PMAT-2166.jsonfollows the existingdocs/audits/quorum-*.jsonpattern on main.docs/roadmaps/roadmap.yamladds the PMAT-2166 row.
Non-blocking: when a nightly run goes red on an unchanged main, someone has to own it the same day, or the red sits there until the next PR finds it. Worth naming the owner in PMAT-2166.
noahgift
commented
Oct 15, 2026
noahgift
left a comment
Contributor
Author
There was a problem hiding this comment.
seat 2, aprender-clerk @92535106a6 — APPROVE.
I authored none of these commits (6d81cd4, f674c48, merge 9253510; all by infra-38-worker).
- ci.yml adds only triggers: schedule cron '23 6 * * *' and workflow_dispatch, next to pull_request and push. No job reads github.event.pull_request, base_ref/head_ref or event_name, so every job runs unchanged on the nightly trigger. No job gains an if: or continue-on-error, so there is no third state on the PR path.
- docs/audits/quorum-PMAT-2166.json follows the existing in-tree receipt convention (docs/audits/quorum-PMAT-21xx.json). The roadmap adds rows only.
- The two-dot diff against main covers exactly these 3 files after the merge.
Required checks gate and workspace-test are green @92535106a6.
noahgift
added a commit
that referenced
this pull request
Oct 15, 2026
…edule and workflow_dispatch (Refs #2170) (#2171) * test(ci): XPILE-NIGHT-CHECKS-001 falsifier — a check that cannot block 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> * ci: two-state CI — the seven non-blocking ci.yml jobs run only on schedule 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> * test(ci): a night job needs a night — assert ci.yml triggers on schedule 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> * ci: move the TWO-STATE note below the PMAT-1501 block it was splitting; 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> * docs(audit): quorum-PMAT-2170 — 3/3 PASS on the stack over #2167, planted 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> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
noahgift
added a commit
that referenced
this pull request
Oct 15, 2026
…eads the nightly first (PMAT-2174, PMAT-2175) (#2176) * ci: a red night check opens or updates its one issue — the step ci.yml described did not exist (Refs #2174) ci.yml's TWO-STATE CI comment said a red night job "opens or updates one issue with one owner", and no step did. Each of the seven night jobs now ends with the local composite action .github/actions/night-issue under if: failure() && github.event_name == 'schedule' It finds the open issue titled exactly `night: <job id> red on main`, comments the run on it, or creates it assigned to the action's one owner. It runs only after its job has already failed, so it cannot change a job's result; the script refuses every event but `schedule` before calling gh, so pull_request, merge_group, push and workflow_dispatch file nothing. A failed lookup fails the step and creates nothing (no duplicate on an API error). The night jobs get `permissions: contents: read, issues: write`. XPILE-NIGHT-CHECKS-001 gains assertions 6-7: the issue step is the LAST step of every night job with exactly that if:, its own job id as check:, issues: write; no other job calls it; one owner; and the script is EXECUTED against a stub gh (refusal on five non-schedule events, comment on an exact title, create on a near-miss, fail on a failed lookup). RED arms, measured: on the pre-change ci.yml 6 of 10 tests fail; the planted control (issue step if: also true on pull_request) fails every_night_job_ends_by_filing_its_one_issue; letting the script accept pull_request fails the_issue_script_refuses_every_event_but_schedule. PMAT-Ticket: PMAT-2174 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs: RELEASE.md §5 step 2 reads the latest scheduled nightly on the pinned SHA and dispatches only if there is none (Refs #2175) Since #2167 ci.yml runs on main every night, so on a frozen Friday the pinned SHA normally already has a scheduled run. Step 2 used to dispatch ci and wait unconditionally. It now reads gh run list --workflow ci.yml --event schedule --commit <PINNED_SHA> first, waits for that run if it is still in progress, and dispatches only when no night has run on the pinned SHA; the check-runs read is unchanged. release_runbook_facts_witness gains release_step_2_reads_the_scheduled_run_before_it_dispatches: inside §5 step 2 the scheduled read on <PINNED_SHA> precedes the fallback dispatch, the dispatch is conditional, and ci.yml still has a schedule: trigger. RED on the previous RELEASE.md. PMAT-Ticket: PMAT-2175 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Noah Gift <noah@paiml.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.
Closes #2166.
xpile had no scheduled workflow.
ci,bookandreleaserun only on push, pull request or tag, so an idlemainnever saw drift in the stable toolchain, crates.io installs or the advisory DB. For comparison, depyler's nightly went red on every target whenprovable-contracts-cli0.4.0 dropped its binary.Change: add
schedule(daily at 06:23 UTC) andworkflow_dispatchto.github/workflows/ci.yml. Every job runs unchanged againstmain. No job readsgithub.event_name,base_reforhead_ref, so the scheduled run is the same gate a push runs. Also registers PMAT-2166 indocs/roadmaps/roadmap.yaml.Verified locally: the 8 tests that read
ci.ymlor git history pass (witness_floor,dependency_license_policy,ci_tool_install,derived_corpus_vacuity_witness,release_runbook_facts_witness,ruleset_drift,roadmap_registration,changelog_freshness), as dopv lint contracts/,cargo deny check advisoriesand the pre-commit clippy.Note:
pmat work addput the roadmap entry in the middle of PMAT-1414's multi-linedescriptionscalar, which corrupted the YAML. The entry here was appended by hand and parses.🤖 Generated with Claude Code