Skip to content

chore(repo): update last sandcastle-hub refs in bin/ctrl #37

chore(repo): update last sandcastle-hub refs in bin/ctrl

chore(repo): update last sandcastle-hub refs in bin/ctrl #37

# Enforces the regression-guard contract: every fix PR must state its
# regression-guard verdict in the body (added <name> / covered by <name> /
# not warranted, <reason>). A convention is only real when a machine
# enforces it — this workflow is the zero-permission check that does.
#
# Adapted from saas-starter/.github/workflows/require-regression-guard.yml.
name: Require Regression Guard
on:
pull_request:
types: [opened, edited, reopened, synchronize]
permissions: {}
jobs:
check:
name: Regression Guard Verdict
runs-on: ubuntu-latest
timeout-minutes: 5
# Only fix PRs by humans; bots (Renovate "fix(deps)") are exempt.
if: |
!endsWith(github.actor, '[bot]') &&
startsWith(github.event.pull_request.title, 'fix')
steps:
- name: Check PR body for verdict line
env:
PR_BODY: ${{ github.event.pull_request.body }}
run: |
if printf '%s\n' "$PR_BODY" | grep -qiE '^Regression guard: (added|covered by|not warranted)'; then
echo "Regression guard verdict found."
else
echo "::error::Fix PRs must state their regression-guard verdict in the body."
echo "Add one line directly above the verification line:"
echo " Regression guard: added <name>"
echo " Regression guard: covered by <name>"
echo " Regression guard: not warranted, <one-line reason>"
echo "See scripts/AGENTS.md, section Validation."
exit 1
fi