fix: require human approval before release publication - #6641
Conversation
There was a problem hiding this comment.
Ladon verdict: Escalate to human review
Escalate — gated paths touched without an approving review.
This PR modifies .github/workflows/release.yml and .github/workflows/release-docs.yml, both of which match the hard approval gate (.github/workflows/**). gated_paths: true and review_decision: REVIEW_REQUIRED (not APPROVED), so decision-table row 2 fires: escalate.
The change itself looks clean — the reviewer found no blocking or medium findings. It adds a fail-closed human-approval gate to release.yml (verifies a non-Bot APPROVED review on the final head SHA before publishing artifacts), removes docs-snapshot auto-merge from release-docs.yml, ships tests pinning the load-bearing predicates, and carries a matching patch changeset with no wire change. There is nothing actionable to fix; the escalation is purely the deterministic gated-paths requirement.
Escalation reasons
.github/workflows/release.ymland.github/workflows/release-docs.ymlare under the.github/workflows/**hard approval gate;review_decisionisREVIEW_REQUIRED. Human/CODEOWNERS approval required before merge.
Why human review
- Modifies gated workflow files .github/workflows/release.yml and .github/workflows/release-docs.yml (match .github/workflows/**); review_decision is REVIEW_REQUIRED, so human/CODEOWNERS approval is required.
- This PR touches a path under a hard, non-overridable approval gate (.github/workflows/release-docs.yml (modified) matches
.github/workflows/**; .github/workflows/release.yml (modified) matches.github/workflows/**) and the current GitHub review decision is 'REVIEW_REQUIRED', not APPROVED. This is a hard gate enforced in code — Ladon cannot auto-approve until a human/CODEOWNERS approval is recorded, regardless of how clean the diff is.
# Conflicts: # tests/release-workflow-immutability.test.cjs
There was a problem hiding this comment.
Ladon verdict: Escalate to human review
Escalate — gated workflow paths require human/CODEOWNERS approval.
This PR modifies .github/workflows/release.yml and .github/workflows/release-docs.yml, both of which match the hard approval-gate glob .github/workflows/**. gated_paths is true and review_decision is REVIEW_REQUIRED (not APPROVED), so decision-table row 2 fires: the hard gate is not satisfied and Ladon cannot auto-approve regardless of how clean the diff is.
The reviewer's assessment is otherwise a clean pass — no critical/high/medium findings. The fail-closed human-approval gate in release.yml is correctly positioned before all publish steps (Sign/Upload/R2) under the same has_release_artifacts=='true' condition, every fail path resolves to exit 1, auto-merge removal in release-docs.yml is sound, and the required patch changeset is correctly in scope for the protocol-scoped release script.
The prior decision was also escalate for the same gated-paths reason. Nothing here is blocking on the merits; the escalation persists solely because the deterministic gate remains unsatisfied. A human/CODEOWNERS approval lifts it.
Escalation reasons
.github/workflows/release.ymland.github/workflows/release-docs.ymlare under a hard approval gate (match.github/workflows/**);review_decisionisREVIEW_REQUIRED, notAPPROVED. Human/CODEOWNERS approval is required before merge.
Why human review
- Modifies gated workflow files .github/workflows/release.yml and .github/workflows/release-docs.yml (match .github/workflows/**); review_decision is REVIEW_REQUIRED, not APPROVED — human/CODEOWNERS approval required (decision-table row 2).
- This PR touches a path under a hard, non-overridable approval gate (.github/workflows/release-docs.yml (modified) matches
.github/workflows/**; .github/workflows/release.yml (modified) matches.github/workflows/**) and the current GitHub review decision is 'REVIEW_REQUIRED', not APPROVED. This is a hard gate enforced in code — Ladon cannot auto-approve until a human/CODEOWNERS approval is recorded, regardless of how clean the diff is.
Summary
Verification
npm run test:release-workflowactionlint .github/workflows/release.yml .github/workflows/release-docs.yml(existing ShellCheck warnings only)