Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions docs/adr/adr-066-autonomy-global-kill-switch.md
Original file line number Diff line number Diff line change
Expand Up @@ -199,6 +199,16 @@ Phase B の稼働により bounded lifetime の decision trigger 観測が始ま

§ 欠点の 1 点目に挙げた master ref 契約も実走で確認できた — gate 呼び出しの `--config master-ref/autonomy-config.toml` が run log に出ており、PR ブランチ側の同名ファイルは判定に使われていない。

### 実走観測 2 — 停止側の variable 3 状態が埋まった(2026-08-08、WP-18 停止側スモーク)

WP-18 夜間ループ([ADR-072](adr-072-nightly-todo-loop.md) § 実走スモーク)の停止側検証として、`AUTONOMY_ENABLED` の残る 2 状態を `workflow_dispatch` で実測した(ユーザー実測):

- **明示的 `'false'`** と **未設定**の 2 状態で、いずれも **`dry_run` をオフ(= push / PR 作成をする設定)**にして dispatch → **2 回とも job が skip** し、ブランチ・draft PR・App token のいずれも作られなかった。確認後 `'true'` へ復旧済み。
- これで trigger (b) の **variable 側は 3 状態(`'true'` / `'false'` / 未設定)すべてが実走で確認済み**になった(1 run 目に確認したのは「削除 = 未設定」のみ)。**残るのは config 側(master ref の `autonomy-config.toml` で `enabled = false`)の実走のみ**(exe 単体は drill #2 で固定済み)。
- あわせて draft-pr クラスでも (a) 有効時の allow 経路が 1 run 成立した(schedule の初回実走で draft PR [#365](https://github.com/aloekun/claude-code-hook-test/pull/365) = `claude/nightly-203` を作成。経緯は ADR-072 § 実走スモーク)。

なお本観測は自律 fix push の発生した run ではないため、decision trigger の run 数(3〜5 run)には数えない — 埋めたのは (b) の状態網羅である。

## 帰結

### 利点
Expand Down
1 change: 0 additions & 1 deletion docs/adr/adr-072-nightly-todo-loop.md
Original file line number Diff line number Diff line change
Expand Up @@ -463,7 +463,6 @@ pre-push review を 12 サイクル通す過程で、blocking な欠陥 10 件
- **外部設定の実体は記録したが、作成日と資格情報欠落時の run の色は未確定** (§ 外部設定の実体)。前者は GitHub の Audit log から引ける。後者は資格情報を意図的に壊す run が要り、復旧を伴うため実施していない。
- **`AUTONOMY_ENABLED` を立てると schedule も同時に有効になる**。スモークを「まず dry_run で」と計画していたのに、変数を立てた時点で本番の夜間 run が先に走った (§ 実走スモーク)。**観測装置の準備前に無人 run が始まる**構造なので、次に同種の自律機能を足すときは「有効化の粒度」を dispatch 限定と schedule 込みで分けられるか検討する。
- **CodeRabbit が bot 投稿の `@coderabbitai review` に反応するか** (決定 11)。無反応なら明示トリガーの設計自体が成立しないため、次回の夜間 run で最優先に確認する。
- **外部設定 (GitHub App / repository variables・secrets) の実体が未記録**。決定 8 は「なぜ App token か」を厚く残す一方、App 名・インストール範囲・付与権限の実際・`NIGHTLY_APP_ID` (variable) / `NIGHTLY_APP_PRIVATE_KEY` (secret) / `AUTONOMY_ENABLED` (variable) の登録先と欠落時の倒れ方を 1 行も書いていない。[ADR-051](adr-051-cross-system-config-coupling.md) が内部設定と外部 SaaS 設定の論理結合に課す 3 点 (相互参照コメント / 期待値の組み合わせ表 / 両側同一 PR) が未実施の状態にあたる。実走スモークで GitHub UI を触る際に**設定メタデータ** (名前・登録先の別・付与権限のスコープ・所有者・ローテーション方針・欠落時の挙動) を確認し、§ 外部設定の実体 として本 ADR へ追記する。**秘密値そのもの (`NIGHTLY_APP_PRIVATE_KEY` の鍵本文や発行済み token) は ADR にも git 履歴にも残さない** — ADR-051 が記録を課すのは「結合の存在」と「期待値の組み合わせ」であって、秘密の実値ではない。
- **`master-ref/` を agent のファイルシステムから外すか (順位 377 の判断材料)**。決定 12 の tool scope で**agent が直接書く経路は予防側で塞いだ**ため、当初の「検知どまり」状態は解消した。残るのは build script 経由の経路で、完全に外すには別 job + artifact 受け渡しへの構造変更が要る。**決定 12 のスコープが実走で効いていることを確認できるまでは、構造変更の要否を判断しない** — 効いていなければ前提が変わる。
- **authority gate の直前で draft 数を再計数するか**。現状は job 冒頭のスナップショットを使い回す (§ 決定 4)。閾値を 1 件超えて push される事象が実運用で観測されたら入れる。
- **ガードレール禁止リストの allowlist 化**。台帳の「対象ファイル」列を機械可読にする (別列に正規化パスを持つ等) のが前提。
Expand Down
Loading
Loading