Skip to content

cruise: 起動時に周で使う操作の権限を点検し、権限で止まった周は操作待ちにして次へ進む(#466) - #475

Merged
hdknr merged 9 commits into
mainfrom
issue/466-cruise-permission-check
Oct 27, 2026
Merged

hdknr merged 9 commits into
mainfrom
issue/466-cruise-permission-check

Conversation

@hdknr

@hdknr hdknr commented Oct 27, 2026

Copy link
Copy Markdown
Owner

Fixes #466

何を変えたか

  • 起動時の点検を --absent に依らず回す——check-unattended-env.py --cruise [--present]。周で使う操作(既定の 5 つ+対象リポジトリの .claude/dev-loop.md の cruise の操作: <コマンド>)の許可、settings に現れない「止まりうる操作」、親の起動場所を見せる。読むだけで設定は書き換えない
  • 止まりうる操作に当たったら cruise 全体を止めない——台帳の新しい状態 await(利用者の操作待ち)にして、依存しない次の周へ進む。利用者が打つと決めた操作は台帳の user_ops(ledger.py user-ops)に残す
  • 親はメインの作業ツリーから worktree に入らずに起動するのを既定にし、worktree の中から起動されていたら点検が要対処として見せる(止めない)
  • dev-loop 1.59.0 → 1.60.0(minor)

受入基準(不変条件 A〜I × 経路)・関門の進捗・指摘の採否は docs/plans/issue-466.md を正とする。

関門

レビューの詳細は PR コメントに残す。

🤖 Generated with Claude Code

hdknr and others added 9 commits October 27, 2026 15:56
dev-loop スキルの frontmatter は dev-loop の周を起動する条件の要約で、cruise の起動時の点検は
その条件を変えない(cruise の frontmatter と JSON の 2 箇所は直した)。

Skip-description-sync: dev-loop スキルの frontmatter は dev-loop の周の起動条件で、cruise の点検はそれを変えない
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1 パス目の関門の指摘 4 件(V1/R5・V2/R4・R1・R3)。採否は計画ファイルの表。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ission-check

# Conflicts:
#	docs/plugins/dev-loop-cruise.md
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@hdknr

hdknr commented Oct 27, 2026

Copy link
Copy Markdown
Owner Author

レビュー結果(dev-loop 手順 6)

満たしていない受入基準(狭いパスが示した。直していない——マージするかは人間が決める)

  • B(宣言の読み取り漏れ)— N1: 2 パス目で足した HTML コメントの除去(uncommented())が、インラインコードの中の <!--(x `<!--` y)・閉じない <!-- memo・フェンスの情報文字列の <!-- でコメントに入ったままになり、以降の cruise の操作: を黙って落として「行が無い」と出す。9b8782a(指摘対応の前)では読めていた——後退。Verifier が declared_commands を直接呼んで [] を確かめた
  • A(起動時に周で使う操作の許可を見せる)— N2: §3 の「merge-pr.py の呼び出しも止まりうる操作に並べて訊く」は散文だけで、check-unattended-env.py は python3 …/merge-pr.py を点検しない(merge-pr への言及 0 件)

狭い Verifier を通した行と、素通りした変異

2 パス目で直した 8 行(V3・S1・S2・S3・S5・S6・S7・S9)は、git diff 9b8782a 92891c7 だけに別ティアの Verifier を 1 回当てた。Verifier が独立に設計した変異のうち 素通り 2 件(テストの欠け。不変条件 B):

  • M5 コメントの閉じを close + 3 → close(陽性対照: <!--\n-->cruise の操作: gh x で ['gh x'] → [])
  • M6 コメントの前の文を捨てる(陽性対照: cruise の操作: gh d <!-- x --> で ['gh d'] → [])

S2・S3 の散文(取り下げた周に依存する周の終わり方・--absent の再開で訊かない)は LLM の振る舞いで、機械では当てていない。

未証明(この環境では証明できない——コードレビューでの確認をお願いします)

  • 自動モードの分類器が実際にどの操作を拒むか(サーバ側の判定)
  • 権限の確認ダイアログ(ask)で会話が止まらないこと——この周の変更では保証できない(起動時の点検で事前に見せるのが手当て)
  • 親を隔離しない場所から起動したとき、Issue の表の拒否(git -C など)が消えること
  • 「次へ進む」は SKILL.md の散文で決まる振る舞いで、test-ledger.py は状態の判定までしか見ない

BLOCKED: なし。

直したもの

  • 1 パス目(3fc9b37): 異種のフェンスの入れ子・崩れた宣言の行を警告に・起動場所の案内のテスト・references/ledger.md の再開手順に await
  • 2 パス目(92891c7): BOM・HTML コメント・` を含む情報文字列・found-lines.md の §4 の番号・取り下げた周に依存する周の終わり方・--absent の再開で訊かない・スクリプト越しの操作(user_ops と merge-pr.py)・references/ledger.md 手順 5 の進行中の数え方

残課題(直していない)

  • 1 パス目: (c) の周の対応が無い(R2)・完全なコマンドの allow に当たらない(R6・保守的な向き)・サブモジュール/bare の起動場所の案内(R7)・user-ops に空白を含むコマンド(R8)・--present を --cruise 無しで受ける(R9)・空の user_ops と未設定(R10)
  • 2 パス目: 散文・字下げのコード例を崩れた宣言として要対処にする(S4・過検出で安全側)・拒否を即 await にし guard-rejections.md の打ち直しを経ない(S8)・公開ページ §0 の版の段落が 1.60.0 を書いていない(S10)
  • 狭いパスの N1〜N4(上)

検証

  • 生成物: §8.2 の生成ブロック(skill-metrics.py --check 緑)。drawio は触っていない
  • 交絡を潰す実験: なし
  • check-all.py: 指摘対応のコミット(92891c7)で 52/52 緑

@hdknr
hdknr merged commit eab5e13 into main Oct 27, 2026
3 checks passed
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.

cruise: 起動時に周で使う操作の権限を点検し、権限の拒否で cruise が止まらないようにする

1 participant