Skip to content

fix(ci): kick workflow requires RELEASE_KICK_PAT + loud failure mode (closes #906)#907

Merged
s977043 merged 1 commit into
mainfrom
fix/kick-workflow-pat-and-loud-failure
May 26, 2026
Merged

fix(ci): kick workflow requires RELEASE_KICK_PAT + loud failure mode (closes #906)#907
s977043 merged 1 commit into
mainfrom
fix/kick-workflow-pat-and-loud-failure

Conversation

@s977043

@s977043 s977043 commented May 26, 2026

Copy link
Copy Markdown
Owner

Summary

Fixes #906 — defect discovered during v0.57.0 release. The kick workflow's GITHUB_TOKEN-authored push cannot trigger downstream pull_request workflows (GitHub no-recursion safety), so the release PR stays BLOCKED despite the kick appearing successful.

Applies Code-gen self-review (AGENTS.md from #904) — specifically the "Failure mode" point that was meant to prevent exactly this kind of silent success.

Changes

Local scripts/release-please-kick.sh remains the unconditional fallback — it pushes via gh OAuth (user PAT), so it bypasses the no-recursion limit. Used to unblock #903 (v0.57.0).

Test plan

  • node scripts/fix-dashes.mjs --check clean
  • markdownlint via pre-commit
  • CI green
  • Add RELEASE_KICK_PAT secret (manual, post-merge)
  • Validate against next release-please BLOCKED PR

Codify-then-validate self-check

  1. Failure scenarios: (a) PAT missing → exit 1 with runbook link, (b) PAT expired → 401 surfaces in step output, (c) PAT under-scoped → check-runs poll fails, hits loud-failure path.
  2. Reopen condition: N/A (not a rule).
  3. Gray zone: Vercel-only checks are insufficient signal; the poll filters them out explicitly.

…906)

Defect discovered during v0.57.0 release: kick workflow's GITHUB_TOKEN-authored
push cannot trigger downstream pull_request workflows by GitHub design
(no-recursion safety), so the release PR stays BLOCKED despite the kick
appearing successful.

Fix applies "Code-gen self-review" from AGENTS.md (#904):

- Failure mode (loud): added a verification step that polls check-runs for 90s
  and fails the workflow if no non-Vercel checks start. The silent success was
  the #906 failure pattern.
- Default coupling: prefer RELEASE_KICK_PAT secret, fall back to GITHUB_TOKEN
  with a warning and an immediate exit 1 in the verify step.
- Concurrency / auto-detect: preserved from #902.

Runbook updated with PAT setup instructions.

Local script (scripts/release-please-kick.sh) remains the unconditional
fallback — it pushes via user PAT (gh OAuth), bypassing the no-recursion limit.

Closes #906.
@vercel

vercel Bot commented May 26, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
ai-review-kit Ready Ready Preview, Comment May 26, 2026 10:50pm

@github-actions

Copy link
Copy Markdown
Contributor

River Reviewer

  • フェーズ: midstream
  • LLM: skipped (dry-run enabled)
  • Planner: off
  • Impact tags: none
  • 変更ファイル数: 1
  • トークン見積もり: 1393

選択されたスキル (0)

  • none
スキップされたスキル (87)
  • adversarial-review: routing skill: not an executable review skill
  • river-reviewer-architecture: routing skill: not an executable review skill
  • river-reviewer-code: routing skill: not an executable review skill
  • river-reviewer-performance: routing skill: not an executable review skill
  • river-reviewer-security: routing skill: not an executable review skill
  • river-reviewer-testing: routing skill: not an executable review skill
  • river-reviewer: routing skill: not an executable review skill
  • rr-downstream-review-policy-standard-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-downstream-coverage-gap-001: phase mismatch: downstream !== midstream; applyTo did not match any changed file; missing inputContext: tests
  • rr-downstream-flaky-test-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-downstream-test-existence-001: phase mismatch: downstream !== midstream; applyTo did not match any changed file; missing inputContext: tests
  • rr-downstream-test-naming-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-downstream-test-plan-review-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-downstream-test-review-sample-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-a11y-accessible-name-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-modern-web-a11y-interactive-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-modern-web-browser-compat-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-modern-web-performance-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-modern-web-semantic-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-nextjs-app-router-boundary-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-review-policy-standard-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-agent-skill-bridge-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-api-compatibility-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-config-json-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-gh-address-comments-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-hello-skill-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-i18n-unused-key-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-loading-state-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-logging-observability-001: applyTo did not match any changed file
  • rr-midstream-logic-torturing-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-normalization-consistency-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-nullability-contract-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-review-automation-boundary-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-review-comment-triage-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-security-basic-001: applyTo did not match any changed file
  • rr-midstream-suppression-feedback-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-type-driven-design-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-typescript-nullcheck-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-typescript-strict-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-war-game-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-code-quality-sample-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-review-policy-standard-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-test-code-nextjs-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-test-code-php-laravel-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-test-code-react-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-test-code-remix-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-test-code-unit-python-pytest-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-test-code-unit-ts-jest-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-test-code-vue-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-adr-decision-quality-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-api-design-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-api-versioning-compat-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-architecture-boundaries-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-architecture-diagrams-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-architecture-risk-register-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-architecture-traceability-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-architecture-validation-plan-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-availability-architecture-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-bounded-context-language-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-cache-strategy-consistency-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-capacity-cost-design-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-change-communication-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-context-budget-tuning-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-create-plan-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-data-flow-state-ownership-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-data-model-db-design-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-dr-multiregion-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-eval-driven-skill-design-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-event-driven-semantics-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-external-dependencies-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-failure-modes-observability-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-integration-contracts-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-migration-rollout-rollback-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-multitenancy-isolation-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-openapi-contract-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-operability-slo-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-plangate-exec-conformance-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-plangate-gc-deterministic-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-plangate-plan-integrity-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-plangate-rule-promotion-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-plangate-verification-audit-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-pr-template-qa-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-pre-mortem-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-requirements-acceptance-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-security-privacy-design-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-trust-boundaries-authz-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-architecture-sample-001: dry-run: LLM必須スキル(ヒューリスティック未対応)

優先度サマリー

  • P1 (must fix before merge): 0 件

  • P2 (should fix or waive): 1 件

  • P3 (recommended improvement): 0 件

  • P4 (informational): 0 件

  • 抑制済み: 1 件 (主な理由: low_confidence(1))

スコア (参考値)

結果(スコア): 96/100
判定: human-review-recommended

内訳:

  • 可読性: 100/100
  • 拡張性: 100/100
  • パフォーマンス: 100/100
  • セキュリティ: 100/100
  • 保守性: 80/100

スコアは severity と axis から決定論的に算出された 参考値 (derived: true)。HITL レビューと併用してください。

指摘

  • .github/workflows/release-please-kick.yml:7
    • Finding: マッチするスキルがなく自動指摘を生成できなかった
    • Evidence: LLM: dry-run enabled
    • Impact: 重要なリスクを見落とす可能性がある
    • Fix: このファイル種別に対応するスキルを追加するか、手動レビューを実施する
    • Severity: warning
    • Confidence: low

1 件の指摘を抑制しました (主な理由: low_confidence(1))

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

このプルリクエストでは、release-please-kick ランブックのドキュメントが更新され、RELEASE_KICK_PAT シークレットのセットアップ手順の追加や、workflow_dispatch 実行時の手順が簡略化されました。レビューでは、GitHub Actions の遅延による 90 秒タイムアウト時の再実行に関する注意書きを追加する提案が行われています。

1. Confirm `RELEASE_KICK_PAT` secret is configured (above).
2. Go to **Actions → Release Please Kick → Run workflow**.
3. Leave `branch` blank—the workflow auto-detects the open release-please PR.
4. The workflow also verifies a non-Vercel check started within 90s; if not, it fails loudly

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

A 90-second timeout for a check run to start can sometimes be too short during periods of high GitHub Actions load or API latency, which may lead to false-positive workflow failures. It would be helpful to add a brief note indicating that the workflow can be safely re-run if it times out due to GitHub latency.

Suggested change
4. The workflow also verifies a non-Vercel check started within 90s; if not, it fails loudly
4. The workflow also verifies a non-Vercel check started within 90s (re-run if it times out due to GitHub latency); if not, it fails loudly

@github-actions

Copy link
Copy Markdown
Contributor

PlanGate Review

  • decision: pass
  • plan status: skipped-by-label
  • exec status: skipped-by-label

PlanGate review decision: pass

severity count policy
critical 0 fail
major 0 fail-if-required / warn
minor 0 comment-only
info 0 skipped

ポリシー: critical=fail / major=fail-if-required (warn) / minor=comment-only / info=skipped — spec: pages/reference/cli-review-plan-spec.md

@s977043 s977043 merged commit 998a6b1 into main May 26, 2026
19 checks passed
@s977043 s977043 deleted the fix/kick-workflow-pat-and-loud-failure branch May 26, 2026 22:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

fix(ci): release-please-kick workflow needs PAT (GITHUB_TOKEN cannot trigger downstream CI)

1 participant