FACTUAL ACTIVITY RECORD · 実際の作業をもとにした活動記録
通常操作とPRマージの承認境界を分ける
確認・review準備へallow entryを定義し、mergeの明示承認とwrapper表記の正本を保つ
目的
認証preflight、マージ後cleanup、repository状態の確認、Pull Requestの表示、Draftからreadyへの移行は、software deliveryの途中で繰り返し実行する操作だった。CEOは、これらを実行するたびに承認を求めない設定へ変え、target branchを更新するPull Requestのマージだけは明確な承認対象として残すよう求めた。
同じrepository-local wrapperにはscripts/...と./scripts/...の重複したallow entryもあった。このActivityでは、通常の確認・delivery操作とマージ操作をcommand rules上で分け、wrapperの表記をscripts/...へ統一することにした。
実装
.codex/rules/organization.rulesでは、既存の認証preflightとマージ後cleanup wrapperのallow entryを維持したうえで、git status、gh pr view、gh pr readyのcommand familyごとにdecision = "allow"のentryを追加した。command全体を広いprefixで許可せず、通常flowで使う引数形をmatchへ列挙した。
# 説明用要約。各entryのmatch / not_match例は省略
prefix_rule(
pattern = ["git", "status"],
decision = "allow",
)
prefix_rule(
pattern = ["gh", "pr", "view"],
decision = "allow",
)
prefix_rule(
pattern = ["gh", "pr", "ready"],
decision = "allow",
)
prefix_rule(
pattern = ["gh", "pr", "merge"],
decision = "prompt",
)git statusはlocal branchとworking treeを読む通常確認、gh pr viewはPull Requestの現在状態を読む確認として整理した。gh pr readyはread-onlyではないが、Draft Pull Requestをreview可能な状態へ進めるだけでtarget branchを更新しないため、通常のdelivery flowへ含めた。
gh pr mergeはtarget branchを更新し、releaseやIssue closeへ影響しうる操作であるため、既存のdecision = "prompt"を維持した。read-onlyの確認、review準備としての状態変更、target branchへ変更を取り込む操作を別の承認境界として扱った。
repository-local wrapperはscripts/...をcanonicalな表記とした。認証preflight、作業branch作成、マージ後cleanupに重複していた./scripts/...側の3つのallow entryを削除し、.codex/rules/README.mdへ別名を定義しない規約を追加した。wrapperの処理は変えず、同じ実行入口を指すruleの重複だけを解消した。
.codex/rules/README.mdには、git statusとgh pr viewを通常確認、gh pr readyをreview入口へ進めるdelivery操作として説明し、Pull Requestのマージには引き続きCEOの承認が必要であることを記載した。最終的な変更はcommand ruleと説明文の2ファイルで、51行追加、40行削除だった。
検証ではgit diff --checkを実行し、表記統一後に./scripts/を検索した。残ったのは、別名をrulesへ定義しない方針を説明するREADMEの記述だけだった。新しいentryをpolicy evaluatorへ入力する検証や、実際の実行時に承認promptが出ないことのend-to-end確認は行っていない。
確認したこと
確認結果
git status、gh pr view、gh pr readyにallow entryが定義され、gh pr mergeには独立したprompt entryが維持された。
git statusとgh pr viewは状態を読む操作、gh pr readyはtarget branchを更新せずreview入口へ進める状態変更として、READMEに異なる性質が記載された。
repository-local wrapperのrules上の表記はscripts/...へ統一され、3つの./scripts/...重複entryが削除された。
最終差分が2ファイル、51行追加、40行削除であること、差分に空白errorがないこと、./scripts/が説明文以外に残っていないことを確認した。
policy evaluatorとend-to-endの承認確認は実行していないため、各commandがruntimeで確認なしに通ることや、gh pr mergeが必ずpromptになることは確認していない。追加引数を含むすべてのcommand形に対する判定範囲も検証していない。
完了とした根拠
通常の確認・review準備操作とPull Requestマージの承認境界が2つのrules関連ファイルへ反映され、repository-local wrapperの表記がscripts/...へ統一され、差分と残存表記の静的確認に成功したことをもって、このActivityの作業範囲を完了とした。runtimeでのno-prompt動作は完了根拠に含めていない。