Repository navigation
Open
Labels
agent/implementerAI implementer agentAI implementer agentenhancementNew feature or requestNew feature or requestphase/implementationImplementation phaseImplementation phasetriage-requiredNeeds owner triage for priority decisionNeeds owner triage for priority decision
Description
Machine-Readable Contract
contract_schema_version: v1
issue_kind: implementation
parent_issue: none
goal_ref: "follow-up:squne121/loop-protocol:issue-1476:sha-pin-mutable-pnpm-action-tags"
change_kind: workflow
dedupe_key: "follow-up:squne121/loop-protocol:issue-1476:sha-pin-mutable-pnpm-action-tags"Parent Issue
なし
Parent Goal Ref
- Goal: PR fix: deploy-pr の pnpm self-installer failure を決定論的に解消する #1480(Issue 実装: deploy-pr の pnpm self-installer failure を決定論的に解消する #1476 の実装)に対する敵対的レビューで指摘された mutable な
pnpm/action-setuptag 参照を解消し、repository 内のpnpm/action-setup参照を commit SHA 固定に統一する。 - Desired Destination:
.github/actions/setup-node-pnpm/action.ymlと.github/workflows/agent-retro-index.ymlのpnpm/action-setup参照が、既に SHA 固定済みの.github/workflows/deploy-pages.ymlと同じ形式(uses: pnpm/action-setup@(40桁commit SHA) # vX.Y.Z)になる。
Current Validated Scope
.github/actions/setup-node-pnpm/action.ymlのuses: pnpm/action-setup@v6(1箇所)は mutable tag 参照である。.github/workflows/agent-retro-index.ymlのuses: pnpm/action-setup@v4(2箇所)は mutable tag 参照である。.github/workflows/deploy-pages.ymlは既にuses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6という commit SHA 固定形式を採用しており、これが repository 内の参照実装である。- 既存 CLOSED Issue chore(ci): GitHub Actions workflow の SHA pin / actionlint 統合 #280(chore(ci): GitHub Actions workflow の SHA pin / actionlint 統合)は過去の SHA pin 対応だが、この2ファイルの
pnpm/action-setup参照はカバーしていない。 - Scope Overlap Preflight(
check_issue_overlap.py)は本 Issue の Allowed Paths(.github/actions/setup-node-pnpm/action.yml/.github/workflows/agent-retro-index.yml)が OPEN Issue 実装: deploy-pr の pnpm self-installer failure を決定論的に解消する #1476 の Allowed Paths と重複することを検出した(decision: overlap_requires_comment, policy_class: C1)。non_conflict_reason: 実装: deploy-pr の pnpm self-installer failure を決定論的に解消する #1476 の本文 Out of Scope は同2ファイルのpnpm/action-setupmutable tag を commit SHA へ pin する対応を明示的に別 follow-up Issue として除外しており、edit_intent が競合しない(実装: deploy-pr の pnpm self-installer failure を決定論的に解消する #1476 は version input 導出方法、本 Issue は tag 参照そのものの SHA pin)。ただし同一ファイルへの並行編集リスクがあるため、下記 Delivery Rule で 実装: deploy-pr の pnpm self-installer failure を決定論的に解消する #1476 マージ後着手の依存関係を明記する。
Remaining Parent Gaps
なし(単独 follow-up Issue のため parent tracker を持たない)。
Outcome
.github/actions/setup-node-pnpm/action.yml の pnpm/action-setup@v6 と .github/workflows/agent-retro-index.yml の pnpm/action-setup@v4(2箇所)が、deploy-pages.yml と同形式の uses: pnpm/action-setup@(40桁commit SHA) # vX.Y.Z に置き換わり、対応する tag コメントが併記され、既存 CI(typecheck / lint / test / build / actionlint)が green で通っている状態。
In Scope
.github/actions/setup-node-pnpm/action.ymlのpnpm/action-setup@v6を、対応する v6 系タグの commit SHA 固定に変更する(SHA の直後に# vX.Y.Z形式で対応タグをコメント併記する)。.github/workflows/agent-retro-index.ymlの2箇所のpnpm/action-setup@v4を、対応する v4 系タグの commit SHA 固定に変更する(同様にコメント併記する)。- 変更後、
pnpm typecheck/pnpm lint/pnpm test/pnpm buildと、既存 CI の actionlint job が green であることを確認する。
Out of Scope
pnpm/action-setup以外の Action の SHA pin 状況の一括監査(既存 CLOSED Issue chore(ci): GitHub Actions workflow の SHA pin / actionlint 統合 #280 は過去の対応であり、この2ファイルはカバーしていない。一括監査自体は別 Issue で扱う)。- pnpm version 自体(
package.json#packageManagerのpnpm@11.7.0contract)の変更。 .github/workflows/deploy-pages.ymlのpnpm/action-setup参照(既に SHA 固定済みのため対象外)。- secrets 利用方針、
pull_request_target利用方針の変更。
Acceptance Criteria
- AC1:
.github/actions/setup-node-pnpm/action.ymlにpnpm/action-setup@v6という mutable tag 参照が残存しない。 - AC2:
.github/actions/setup-node-pnpm/action.ymlのpnpm/action-setup参照が 40桁 commit SHA 形式(pnpm/action-setup@(40桁hex))である。 - AC3:
.github/workflows/agent-retro-index.ymlにpnpm/action-setup@v4という mutable tag 参照が残存しない(2箇所とも)。 - AC4:
.github/workflows/agent-retro-index.ymlのpnpm/action-setup参照(2箇所)が 40桁 commit SHA 形式である。 - AC5:
pnpm typecheckが PASS する。 - AC6:
pnpm lintが PASS する。 - AC7:
pnpm testが PASS する。 - AC8:
pnpm buildが PASS する。
Verification Commands
# AC1
# baseline-expect: fail
$ rg -c "pnpm/action-setup@v6" .github/actions/setup-node-pnpm/action.yml
# AC2
# baseline-expect: fail
$ rg -c "pnpm/action-setup@[0-9a-f]{40}" .github/actions/setup-node-pnpm/action.yml
# AC3
# baseline-expect: fail
$ rg -c "pnpm/action-setup@v4" .github/workflows/agent-retro-index.yml
# AC4
# baseline-expect: fail
$ rg -c "pnpm/action-setup@[0-9a-f]{40}" .github/workflows/agent-retro-index.yml
# AC5
$ pnpm typecheck
# AC6
$ pnpm lint
# AC7
$ pnpm test
# AC8
$ pnpm buildRuntime Verification Applicability
- decision: not_applicable
- reason: 変更は既存 workflow ファイル内の Action 参照(tag から commit SHA)の書き換えのみであり、typecheck / lint / test / build と既存 CI の actionlint job(静的 YAML 検査)のみで検証が完結する。プロセス起動・外部通信・I/O を伴う動作検証は不要。
Allowed Paths
.github/actions/setup-node-pnpm/action.yml.github/workflows/agent-retro-index.yml
Stop Conditions
- Allowed Paths 外の変更が必要と判明した場合
- In Scope の固定契約(キー集合・スキーマ・型定義)の変更が必要になった場合
- 新規 Issue の起票が必要と判断した場合(スコープ分割が発生する場合)
- 後続 Phase / 別スコープへの波及が判明した場合
- nested SubAgent delegation が必要になった場合
- 外部サービス利用・権限昇格・既存テスト大規模改変が必要になった場合
pnpm/action-setup以外の Action 参照の SHA pin が必要と判明した場合- 対応する upstream tag(vX.Y.Z)と commit SHA の対応関係を確定できない場合
Required Skills
なし
Required Design References
.github/workflows/deploy-pages.yml(SHA pin の参照実装).github/CLAUDE.md(外部 action の pinning 方針変更は別 Issue として切り出す規約)- Issue 実装: deploy-pr の pnpm self-installer failure を決定論的に解消する #1476 / PR fix: deploy-pr の pnpm self-installer failure を決定論的に解消する #1480(本 Issue の起票理由となった敵対的レビュー指摘)
- Issue chore(ci): GitHub Actions workflow の SHA pin / actionlint 統合 #280(CLOSED。過去の SHA pin 対応の前例。ただし今回の2ファイルは未カバー)
Scope Delta(任意)
N/A
Delivery Rule(配信ルール)
- 1 Issue = 1 PR。専用 worktree / branch で実装し、Draft PR を既定とする。
- Depends on 実装: deploy-pr の pnpm self-installer failure を決定論的に解消する #1476 merge(PR fix: deploy-pr の pnpm self-installer failure を決定論的に解消する #1480 を含む)。同一 Allowed Paths の2ファイルへの並行編集によるマージコンフリクトを避けるため、実装: deploy-pr の pnpm self-installer failure を決定論的に解消する #1476 のマージ後に本 Issue へ着手する。
Metadata
Metadata
Assignees
Labels
agent/implementerAI implementer agentAI implementer agentenhancementNew feature or requestNew feature or requestphase/implementationImplementation phaseImplementation phasetriage-requiredNeeds owner triage for priority decisionNeeds owner triage for priority decision
Activity