Repository navigation
開発ループ: 止める指示を人が送った停止だけから置く(#2474) - #2501
Conversation
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>
takemi-ohama
left a comment
There was a problem hiding this comment.
🤖 cross-review | round 1 | codex | APPROVE
指定範囲に critical / major の修正指摘はありません。根拠: Value 3 / Value 8。
takemi-ohama
left a comment
There was a problem hiding this comment.
🤖 cross-review | round 1 | kiro | APPROVE
ドメインモデルの節を見た。コンテキストは 1 つで関係の変更は無く、集約「開発ループ」の持ち主は 1 つ(sprint_loop.py の副命令)、不変条件 I1〜I6 は 1 行 1 条件で矛盾は無く、ドメインイベント E2・E4・E5・E6・E8 はいずれも受け手を持ち要求の番号を引き継いでいる。用語の表の 5 語(開発ループ・周回・ループの予算・止まる条件・ループの記録)は docs/glossary/glossary.json の ndf-workflow の既存の語と一致し、新しい語は足さない宣言どおり用語集の差分は無い。stops へ足す行の形(condition・values・lap・at・resumed_at)は resume_record が書く既存の行と一致し、active_seconds・failure_streak・lap_rows の各読み手への当てはまりの表もコードの読みと一致する。設計レベルの修正提案は無い。
takemi-ohama
left a comment
There was a problem hiding this comment.
🤖 cross-review | round 2 | claude | REQUEST_CHANGES
周回の途中の loop start は、利用者の再開だけでなく、カットポイントの ndf-next や利用上限でのアカウント切り替えで、ラッパーが自動に起動した次のセッションからも打たれる。このため、無条件に止める指示を消す設計は、利用者の止める指示を黙って消す。どちらの起動から来たかを区別する仕組みを設計に足す必要がある。
takemi-ohama
left a comment
There was a problem hiding this comment.
🤖 cross-review | round 2 | kiro | APPROVE
要求・設計の 2 文書を全読し、設計が依拠する既存コードの振る舞いを sprint_loop.py(cmd_start・apply_budget・resume_stopped・_resume_user_stop・resume_record)と sprint_loop_record.py(active_seconds・boundary_stop・failure_streak・lap_rows・current_lap・write_record)で突き合わせた。設計の『構成要素』『値の集合へ値を足す影響』の各表の読み(active_seconds は stops の at〜resumed_at と周回区間の重なりを引く / boundary_stop は user_stop を先に見る / lap_rows は周回ごと 1 件で後勝ち / failure_streak は same_failure だけを使う / 進行中の周回は current_lap)は実装と一致する。受け入れ条件 4・I3 の経過時間 (T1−T0)+(T3−T2) は active_seconds の重なり控除と整合し、決定 3(消してから書く・消せなければ記録を書かず終了 1)・決定 5(T1 を T2 以下に揃える、T1<T0 は _overlap が周回区間で切るため揃えない)も矛盾しない。実装者が別物を作る食い違い、利用者経路の誤動作、秘密・認可・データ・戻せない操作、トークン・時間・回数を増やす変更のいずれも、基準に当たるものは見つからなかった。設計レベルの修正提案は無い。
🔧 /ndf:fix サマリ | round 2 | commit (なし)対応件数: critical=0 / major=0 / minor=0(合計 0 件) |
takemi-ohama
left a comment
There was a problem hiding this comment.
🤖 cross-review | round 3 | claude | REQUEST_CHANGES
周回の途中で止まった記録(gate2_returned・refused)の再開の経路が、止める指示を解く対象から漏れている。このため #2474 と同じ症状がこの経路に残る。
takemi-ohama
left a comment
There was a problem hiding this comment.
🤖 cross-review | round 3 | codex | APPROVE
指定範囲の2ファイルを確認し、既存指摘と重複しない critical / major の修正指摘はありません。根拠: Value 3 / Value 8。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
🔧 /ndf:fix サマリ | round 3 | commit 4882b6e対応件数: critical=0 / major=1 / minor=0(合計 1 件) |
🔧 /ndf:fix サマリ | commit (なし)対応件数: critical=0 / major=0 / minor=0(合計 0 件) |
2026-11-05 の利用者の判断(直して出し直す)に合わせ、要求の写しを作り直し、設計を置き換えた。 - 会話の記録から、lfactory2 の止める指示は conductor が別のセッションの「終了して」を読み替えて置いたものと確かめた - conductor の手順(loop.md)で止める指示の発生元を人が送った入力に限り、終える依頼では置かない - loop start で止める指示を消す処理と、経過時間・周回一覧・時刻の補正の変更を外し、コードは変えない Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- 「確定仕様の直し方」を「処理の流れ」の直後へ移し、何をどう書くかの章を決定の記録の前にまとめた - 決定の根拠の Value の番号に題を添えた。「どの段にも」を「どちらの会話の記録にも」に置き換えた - 内容は足していない(行数 216 → 216) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
takemi-ohama
left a comment
There was a problem hiding this comment.
🤖 cross-review | round 4 | codex | REQUEST_CHANGES
別のセッションからのセッション終了依頼を、人への確認待ちにする処理フローを、要求の E3 と設計の E3・F2 に合わせて修正してください。根拠: Value 2 / Value 8。
takemi-ohama
left a comment
There was a problem hiding this comment.
🤖 cross-review | round 4 | kiro | APPROVE
要求・設計の 2 文書を全読し、設計が依拠する既存コードと確定仕様で裏取りした。この版は従来の『loop start で止める指示を消す』案(round 2/3 で claude が指摘した、自動の再起動も周回の途中で loop start を打つため人の停止が境の前に消える経路)を捨て、止める指示の発生元を人が送った入力に限る案へ切り替えている。決定 2(loop start で消さない・コードは変えない)は実装と一致し(cmd_start の in_lap 経路は write_record のみで STOP_FILE に触れない: sprint_loop.py:138-145)、発生元を人の停止に限れば再開後に止める指示が境で効くのは意図どおりになるため、従来の指摘は解消している。前提 1 の STOP_FILE の 3 か所(cmd_stop が書く: sprint_loop.py:462 / boundary_stop が読む: sprint_loop_record.py:330 / _resume_user_stop が消す: sprint_loop.py:194)、前提 2(入力元を機械で見分けない)、前提 3/決定 3(I8 で境後の区間は経過時間から外れる)は、確定仕様とコードの読みと一致した。I1/I2 を機械で検査しない点と経緯不明の止める指示が user_stop で止まる点は『未確認のまま残ること』に明示され、隠れた欠陥ではない。設計レベルの修正提案は無い。
送信元の確認を、ループを止めることを求める文だけに掛ける。要求の E3・受け入れ条件 3 と設計の E3・F2 に揃える。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
🔧 /ndf:fix サマリ | round 4 | commit 8c5982f対応件数: critical=0 / major=1 / minor=0(合計 1 件) |
takemi-ohama
left a comment
There was a problem hiding this comment.
🤖 cross-review | round 5 | claude | APPROVE
このラウンドの差分(処理の流れの分岐の順序の入れ替えと説明の 1 文)に、critical / major の修正指摘はありません。セッションを終えるだけの依頼は送信元によらず F に進み、要求の E3・受け入れ条件 3 と設計の E3・F2・入出力の契約の「置かない場面」と一致しています。根拠: Value 8。
takemi-ohama
left a comment
There was a problem hiding this comment.
🤖 cross-review | round 5 | kiro | APPROVE
この版の差分はフローチャート(issues/issue-2474-design.md の『処理の流れ』)の分岐の並べ替えと確認の 1 文の追加だけで、round 4 の指摘(別のセッションからのセッション終了依頼が人への確認待ちになり、要求の E3・設計の E3/F2 の『引継ぎ文書を書いて終える』に到達しない)を直している。新しい流れは A→D(ループを止めることを求めているか)で先に分岐し、『セッションを終えるだけ』を送信元に依らず F(引継ぎ文書を書いて終える)へ送り、送信元の確認(B)はループ停止を求める文だけに掛かる。これは E3・F1・F2・F3 と整合し、全ノードが到達可能で分岐ラベルも決定と一致する。追加した 1 文も『セッションを終えるだけの依頼は送信元によらず引継ぎ文書を書いて終える(E3・F2)/送信元を確かめるのはループを止めることを求める文だけ』で図と一致する。変わった行に critical / major の修正指摘は無い。
#2474 の設計文書と、要求・受け入れ条件のコピーを追加します。止める指示(
loop stopが置くファイル)を、人がそのセッションへ送った停止からだけ置くように conductor の手順で決める設計です。loop startで止める指示を消す処理と、経過時間の計算は変えません。コードの変更は含みません。利用者向けの変化
移行の手順
変更の要点
loop startは止める指示を消さない。人が送った停止は次の周回の境で効くのが正しい振る舞いのため(決定 2)テスト
モード: standard / 通した工程: 設計 → 要求と受け入れ条件 → ドキュメント再構成 → ドキュメントレビュー
🤖 Generated with Claude Code
決めたこと
issues/issue-2474-design.mdloop startで止める指示を消さない