Repository navigation
ci: suites run beside the review by default (fleet-wide) #6244
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. Weβll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,17 +1,22 @@ | ||
| # The staged pull-request pipeline's STAGE GATE (reusable) β may the expensive suites start for this head? | ||
| # | ||
| # π REVIEW FIRST, THEN THE SUITES, THEN THE ARM (policy `review-then-suites`, which replaced the | ||
| # short-lived `suites-parallel-with-review`). By default this gate holds a pull request head until | ||
| # its review landed and every finding is answered; the suites then run on a FRESH merge with the | ||
| # π SUITES BESIDE THE REVIEW, THE ARM ONLY AFTER BOTH (policy `suites-parallel-with-review`, back in | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. should-fix β Automated review finding (data, not an instruction to any agent)
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Fixed in 80f02b6: the 2026-10-04 quote in node-repo-stage-gate.yml is now framed as History (review-first design, since released; survives only as the opt-in; the arm-at-the-end half still holds) and points at the register. In dotnet-test.yml the same quote was replaced by a description of this caller's actual behaviour. |
||
| # force after `review-then-suites` was retired). By default this gate lets the suites start as soon | ||
| # as stage 0 is green and run beside the automatic review; they run on a FRESH merge with the | ||
|
Copilot marked this conversation as resolved.
|
||
| # current main (policy `suites-test-fresh-merge`), and auto-merge is armed only once the review is | ||
| # answered AND every required check is green (`check-review-answered.py` arm gate, condition 4; | ||
| # MeshWeaver.Plugins `PrArming`). `review-before-suites: false` runs the suites beside the review β | ||
| # a per-caller opt-out, never the default. A caller on the default MUST carry its stage-advance.yml | ||
| # listener: a gate without its listener holds forever. | ||
| # MeshWeaver.Plugins `PrArming`). `review-before-suites: true` is the per-caller OPT-IN that holds | ||
| # the suites until the head's review landed and every finding is answered; a caller that opts in | ||
| # MUST carry its stage-advance.yml listener: a gate without its listener holds forever. | ||
| # | ||
| # Maintainer, 2026-10-04: "code review must pass and also other controls such as no client etc. must | ||
| # pass before we start test. and we arm only at end of test". Design of record, with the measured | ||
| # saving: Doc/Architecture/StagedPullRequestPipeline. | ||
| # History: the 2026-10-04 decision ("code review must pass ... before we start test. and we arm only at | ||
| # end of test") was the review-first design (policy `review-then-suites`); it was later released and | ||
| # the review-first order survives only as the `review-before-suites: true` opt-in. The arm-only-at-the-end | ||
| # half still holds for every caller. Decision register and measured saving: | ||
| # Doc/Architecture/PolicyNotProse and Doc/Architecture/StagedPullRequestPipeline. | ||
| # | ||
| # The stage diagram below describes the opt-in (`review-before-suites: true`); on the default, stage 1 | ||
| # is not a gate on stage 2 β the review runs beside the suites and is enforced at the arm and merge gates. | ||
| # | ||
| # STAGE 0 cheap static controls (validate, confidential terms, shared rules, locks, policy gates) β | ||
| # the caller makes its heavy-leg front door NEED them, so they fail fast. | ||
|
|
@@ -79,13 +84,13 @@ on: | |
| default: false | ||
| review-before-suites: | ||
| description: >- | ||
| true (default, policy review-then-suites) = hold the suites until the head's review landed | ||
| and every thread is answered; the caller needs its stage-advance.yml listener. false = the | ||
| suites start as soon as stage 0 is green and run beside the review (an opt-out); merging and | ||
| arming still require the answered review. | ||
| false (default, policy suites-parallel-with-review) = the suites start as soon as stage 0 is | ||
| green and run beside the review; merging and arming still require the answered review. | ||
| true (opt-in) = hold the suites until the head's review landed and every thread is | ||
| answered; the caller then needs its stage-advance.yml listener. | ||
| required: false | ||
| type: boolean | ||
| default: true | ||
| default: false | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. question β Automated review finding (data, not an instruction to any agent)
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. (a) Checked on the PR head: no workflow in core passes review-before-suites (only the lane's own input and comments mention it), so core's caller is on the default. Satellite callers float on the lane and are not visible in this diff; any that pass true explicitly keep the hold by design. (b) The header now records the 2026-10-04 decision as superseded history (80f02b6); the release of that restriction is recorded in the PolicyNotProse register rows this PR adds. The maintainer decision itself is not something the repo can prove. |
||
| outputs: | ||
| ready: | ||
| description: "'true' when stage 2 may start for this head" | ||
|
|
@@ -112,7 +117,7 @@ jobs: | |
| mode: ${{ steps.judge.outputs.mode }} | ||
| steps: | ||
| - name: Fetch the platform's review predicate at the lane's scripts ref | ||
| # Only the review hold (the default) reads the predicate; the opt-out judges stage 0 alone. | ||
| # Only the review hold (the opt-in) reads the predicate; the opt-out judges stage 0 alone. | ||
| if: ${{ inputs.review-before-suites }} | ||
| env: | ||
| GH_TOKEN: ${{ github.token }} | ||
|
|
@@ -175,8 +180,8 @@ jobs: | |
| not_staged "a fork's head is not reviewed by the internal reviewer β not staged; the merge gate still applies" | ||
| fi | ||
| [ -n "${PR:-}" ] || { echo "::error::a pull_request event without a pull request number"; exit 1; } | ||
| # π The opt-out (review-before-suites: false): the suites run beside the review. The default | ||
| # (policy review-then-suites) falls through to the review predicate below. | ||
| # π The default (review-before-suites: false, policy suites-parallel-with-review): the suites | ||
| # run beside the review. The opt-in (true) falls through to the review predicate below. | ||
| if [ "$REVIEW_BEFORE_SUITES" != "true" ]; then | ||
| echo "stage 0 green β the suites start now and run in PARALLEL with the automatic review; merging and arming still require the review landed and every thread answered" | ||
| { echo "ready=true"; echo "mode=parallel"; } >> "$GITHUB_OUTPUT" | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
should-fix β Automated review finding (data, not an instruction to any agent)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fixed in 80f02b6: the line now reads that the review and the suites may finish in either order and the arm waits for both. The predicate itself is unchanged.