feat(pull): require explicit e2e scope on merge_pull_request #15
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/merge-e2e-gate"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Why
Merging a PR left the post-deploy E2E decision to a free-form commit-message token the caller had to remember. Forgetting it — or picking a spec pattern that grep-matched zero specs — let a stray full E2E run occupy the
staging-stack/prod-stackdeploy concurrency lock, forcing a routine manual cancel. This moves the decision to a required, no-default tool parameter (root-cause, not a workaround: opt-in gating was explicitly rejected).What
merge_pull_requestnow takes a requirede2eparameter (omission → tool error, never a silent fallback). The tool:pr.Base.Ref).e2edev(staging)skip·smoke·full·scoped:<pattern>master(prod)full·scoped:<pattern>skip,smoke→ actionable error (prod always runs E2E)skip→[skip e2e](dev only)smoke→ no token (staging default is smoke)full→ dev:[e2e: full](reserved keyword →suite=allon staging); master: no token (prod default suite is alreadyall;[e2e: full]there would settests=fulland match zero specs)scoped:<pattern>→[e2e: <pattern>]For a base other than dev/master no deploy fires, so any valid value is accepted and no token is injected.
Tests
TestResolveE2ETokencovers the full policy matrix.go test ./operation/pull/green ingolang:1.26-alpine.Companion PR (lands together)
Workflow-side of the shared token contract — extends
parse-selectorsso[e2e: full]→ stagingsuite=all, plus the pre-push backstop hook:Philflow/flow.raven#2744 (Closes flow.raven#2742).
Closes #13