Skip to content

feat(pr-validation)!: smoke test the breaking change approval gate - #906

Closed
bedatty wants to merge 13 commits into
developfrom
test/breaking-change-gate-smoke
Closed

bedatty wants to merge 13 commits into
developfrom
test/breaking-change-gate-smoke

Conversation

@bedatty

@bedatty bedatty commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

Description

Smoke test for the breaking-change approval gate shipped in #904. The commit is deliberately marked ! so the gate fires.

Not meant to be merged. It will be closed once the gate has been observed — or closed by the gate itself, if the breaking change is rejected.

What this exercises:

  1. pr-gate-scope puts it in scope (anything into develop)
  2. breaking-change-guard detects the ! subject
  3. codeowners-reviewers derives team:g_github_devops from CODEOWNERS
  4. environment-protection creates breaking-approval, which does not exist yet
  5. The run holds at the pending deployment until somebody answers

Type of Change

  • test: Adding or updating tests

Breaking Changes

None — the ! is the test fixture. This PR is closed, never merged.

Testing

  • Checked that unrelated workflows are not affected

Related Issues

Breaking change acknowledged: I understand that this PR intentionally introduces a breaking change and requires the next release to be a major version.

Deliberately marked breaking so the gate fires. This pull request exists
to watch it work end to end and is not meant to be merged.
@bedatty
bedatty requested a review from a team as a code owner October 15, 2026 19:59
@coderabbitai

coderabbitai Bot commented Oct 15, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration
  • Configuration used: Repository: LerianStudio/github-actions-shared-workflows/.coderabbit.yml
  • Review profile: ASSERTIVE
  • Plan: Essentials
  • Run ID: 093bef2d-cb05-42fb-a237-1cf05ca1721b

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Comment @coderabbitai help to get the list of available commands.

@lerian-studio

lerian-studio commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

🔍 PR Validation Summary

✅ PR Mergeable — no blocking failures

Check Status Blocking
Source Branch ✅ success yes
PR Title ✅ success yes
PR Description ✅ success yes
Breaking Change Guard ✅ success yes
Commit Signatures ✅ success yes
PR Size ✅ success no
Auto Labels ✅ success no
PR Metadata ✅ success no

🔍 View workflow run

@lerian-studio

lerian-studio commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

Caution

⛔ Breaking change rejected

Rejected by guimoreirar.

This pull request was closed. The branch is untouched — rework it without the break and reopen.

Gated by rule develop <- '*' · How this gate works

@lerian-studio lerian-studio added the breaking-change Callers must update their workflow configuration after this change label Oct 15, 2026
@lerian-studio

lerian-studio commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

🔍 Lint Analysis

Check Files Scanned Status
YAML Lint no changes ⏭️ skipped
Action Lint no changes ⏭️ skipped
Pinned Actions no changes ⏭️ skipped
Markdown Link Check 1 file(s) ✅ success
Spelling Check 1 file(s) ✅ success
Shell Check no changes ⏭️ skipped
README Check no changes ⏭️ skipped
Composite Schema no changes ⏭️ skipped
Deployment Matrix no changes ⏭️ skipped

🔍 View full scan logs

@lerian-studio lerian-studio added size/XS PR changes < 50 lines documentation Improvements or additions to documentation labels Oct 16, 2026
@lerian-studio lerian-studio removed the breaking-change Callers must update their workflow configuration after this change label Oct 16, 2026
@lerian-studio lerian-studio added the breaking-change Callers must update their workflow configuration after this change label Oct 16, 2026
Reported on #906: two bot comments about the same breaking change, one
headed "Breaking change guard — ✅ Author acknowledged" and one asking
for a decision. The ✅ reads as the approval. It is not: it says the
author declared the break, and the small print saying so is small print.

The second comment only appeared yesterday, when #913 fixed the 403 that
had kept it silent since August. Fixing the permission put a ✅ next to a
pending request without my noticing the two would collide.

`breaking-change-comment` is removed. The gate's comment already carries
the acknowledgement state, with the decision as the headline and the
acknowledgement as a row — the hierarchy the two controls actually have.

To replace what the removed comment covered, the gate now comments
wherever a breaking change is found, not only inside its approval scope.
Outside it there is no decision to make, so the comment reports the
acknowledgement and the exact line to paste. The waiting comment carries
that line too, folded away, since Blocking Checks fails on a missing
acknowledgement whether or not an approval is pending.

pr-validation now passes the acknowledgement literal to the gate instead
of relying on the default to coincide. They were equal by hand across two
files; a drift would have had the gate teaching a line that fails the
check it was explaining.
@lerian-studio lerian-studio added size/M PR changes 200–499 lines and removed size/XS PR changes < 50 lines labels Oct 16, 2026
@lerian-studio lerian-studio added workflow Changes to one or more reusable workflow files notify Changes to notification composite actions (src/notify/) validate Changes to PR validation composite actions (src/validate/) composite Changes to any composite action manifest (src/**/*.yml) labels Oct 16, 2026
@lerian-studio

lerian-studio commented Oct 16, 2026 •

Copy link
Copy Markdown
Contributor

🛡️ CodeQL Analysis Results

Languages analyzed: actions

✅ No security issues found.


🔍 View full scan logs | 🛡️ Security tab

CodeQL flagged `actions/untrusted-checkout` at the second checkout, and
the alert was fair. The gate runs on `pull_request`, so it is not
privileged — but it was still placing a contributor's tree on disk in a
job that carries MANAGE_TOKEN. Nothing executed that tree, and nothing
needed it: the only thing read from it was commit messages, which the
API serves.

The `breaking-change-commits` composite was already running here for the
fingerprint, reading exactly those commits through the API with patterns
kept identical to the detector. It now does the detecting too, when the
caller has not detected already. Two checkouts, the Git-reading
composite, the tree, the token exposure and the alert all go together.

`breaking-change-guard` remains the canonical detector and still runs in
pr-validation over the real commit range — which is the verdict this
gate is handed in the path that matters.

One consequence worth stating: on the standalone path the acknowledgement
is no longer evaluated, because the detector that reads the description
lives in pr-validation. The state is reported as unknown rather than
missing, and the comment omits the row. Telling an author to add a line
that no check is asking for is worse than saying nothing.
@lerian-studio lerian-studio added size/XS PR changes < 50 lines and removed size/M PR changes 200–499 lines workflow Changes to one or more reusable workflow files notify Changes to notification composite actions (src/notify/) validate Changes to PR validation composite actions (src/validate/) composite Changes to any composite action manifest (src/**/*.yml) labels Oct 16, 2026
@lerian-studio lerian-studio added the awaiting-breaking-approval A breaking change on this PR is waiting on a human decision label Oct 16, 2026
@lerian-studio lerian-studio removed the awaiting-breaking-approval A breaking change on this PR is waiting on a human decision label Oct 16, 2026

This branch had an error being deployed

1 failed deployment
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

breaking-change Callers must update their workflow configuration after this change documentation Improvements or additions to documentation size/XS PR changes < 50 lines

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants