Repository navigation
ci: a plan job decides what a run is — draft PRs run rest, a merge of a verified head runs nothing (#131) - #166
Merged
Merged
Conversation
… a merge of a verified head runs nothing (#131) A merged pull request cost about 1,450 runner-minutes on a pool of 20 jobs shared by the organization: about 2.7 runs of about 500 (a draft push already paid the host matrix, examples and every bdd row, about 300) and a full re-run on main of a tree that a pull request run had just passed. The queue, not the longest path, was the delay (#131). - ci.yml starts with `plan` (.github/ci-plan.sh), which decides from the event and the repository alone: a draft pull request runs the `rest` leg only; a ready pull request, workflow_dispatch and a push to main run every job; a push to main that merges a head whose tree it equals runs none when a pull request run of that head passed every job (the join of Atlas, every host, every leg, none skipped), and says which run. - The legs of `vv` are the rows of .github/vv-rows.json, handed to the matrix by the plan; the Atlas jobs and the host matrix wait for the plan's `full`. - RP-14 reads the legs from the file, requires every condition of the file to be one of three forms, and runs the script in a scratch repository against planted events (a draft, a ready pull request, a request, a push, a merge that lands its head's tree with passing and failing evidence, a merge that changed the tree, a failed query). Every planted defect is recorded in VERIFICATION.md. The statement of RP-14, SPEC §8.3 and §9.4 are extended. - release.yml is unchanged: it runs `just vv` whole and reads no earlier run. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013QppGKetUURseXowZun9KY
…ermission denied), and RP-14 requires it Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013QppGKetUURseXowZun9KY
This was referenced Oct 17, 2026
afflom
marked this pull request as ready for review
October 17, 2026 17:34
… host leg of the first full run failed on the stand-in's PATH) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013QppGKetUURseXowZun9KY
afflom
marked this pull request as draft
October 17, 2026 18:27
# Conflicts: # CHANGELOG.md
afflom
marked this pull request as ready for review
October 17, 2026 19:03
Member
Author
|
Maintainer review: approved at b5a739d. This PR was written by the maintainer session, so the approval rests on two things and not on a second pair of eyes: the owner's recorded decision on #131 (two-tier gate plus reuse of an identical tree's verdict, the SPEC §8.3/§9.4/RP-14 amendments, no admin settings), and the evidence on this head. Evidence, from the runs of this exact head (it contains
What is not yet measured: the saving. It is an estimate until the first PR merges under this rule; I will post the measured runner-minutes on #131 from that merge. Merging with a merge commit, sha pinned. Generated by Claude Code |
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 #131
The owner decided (2026-10-17): resolve #131 now, with a two-tier gate and reuse of an identical tree's verdict; the SPEC amendments below are that decision.
What costs time today
One full run is about 500 runner-minutes. A merged PR costs about 1,450: about 2.7 runs (a draft push already pays the host matrix,
examplesand everybddrow, about 300 runner-minutes; only Atlas waited for ready) plus the push run onmain, which re-proves, on the same runners and pins, the tree a PR run had just passed. The organization's 20 shared concurrent jobs mean a PR's wall time is the queue, not its longest path (#131, 19:32Z).What this changes
ci.ymlstarts with aplanjob (.github/ci-plan.sh, one tested script) that decides from the event and the repository alone:restleg only (about 23 runner-minutes, one job)workflow_dispatchmainrelease.ymlstill runsjust vvwhole and reads no earlier run. The legs ofvvare now the rows of.github/vv-rows.json(the matrix the plan hands tovv); the Atlas jobs and the host matrix wait for the plan'sfull. Every other behavior of the gate (profiles, shards, bdd parts, evidence upload) is untouched.Estimated, not measured until this lands: a merged PR goes from about 1,450 to about 600 runner-minutes (two draft pushes at 23, one ready run at about 520, no push run), and the push runs that queued behind each other on
maindisappear for the merges that satisfy the rule. The maintainer rule that makes the reuse apply is the one already in force: a PR is merged only on a green head that containsmain, so the merge commit's tree is the head's tree.Rigor
RP-14(statement extended in the register, SPEC §31, the scenario) reads the legs from the file and requires everyif:of the workflow to be one of three forms (a step's!cancelled(), a job'sneeds.plan.outputs.full == 'true',vv'sneeds.plan.outputs.rows != '[]').ghagainst planted events and requires the whole gate everywhere the evidence is not complete: no run, a skipped or failed job, no Atlas join, a missing host, a missing leg, a run of a draft, a failed query, a merge that changed the tree, a push that merges nothing.ci.yml(it needs a plan job).Check on this PR's own runs
This PR is a draft on purpose: its first run must be the
restleg alone (plan + one leg), which proves the dynamic matrix and the script on a real runner for about 23 runner-minutes. I mark it ready afterwards, which runs the whole gate once.Generated by Claude Code