Repository navigation
Factory のオーガナイザー: 同じリポジトリで並行する実行の本番の配布を 1 本にまとめ、承認と問いをリポジトリごとに 1 か所へ集める(#2439) - #2442
Conversation
Factory のオーガナイザーが同じリポジトリで並行する実行の本番の配布を 1 本にまとめ、 承認と問いをリポジトリごとに 1 か所へ集める要求を、受け入れ条件 16 件・ドメインイベント 11 件・ 未決 4 件で書いた。人へ問わずに選んだ条件は起票者の推定の S6〜S11 に理由とともに置いた。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Factory のオーガナイザーを、既存の実行の制御・ループの制御と、新しく足す配布のまとめ(DynamoDB の行と見回りで進む)でできる役割として設計した。 配布の依頼はまとめた配布 1 つと配布の実行 1 本へ 1 回のトランザクションでまとめ、答えの時点の develop の比べは API の側で 1 回だけ行う。 NDF の側は NDF_ORGANIZER_DIR の置き場のファイルで依頼と答えを受け渡す。要求の未決 1〜4 の答えは決定 2・4・5・12 にある。 用語集に手元のマシン・料金プラン・Factory のオーガナイザー・配布の実行を足し、要求のコピーを課題の本文から作り直した。 範囲外の #2436 の側の待ちは #2441 に起こした。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KYHP82Lqm5xfhpXj6YQRrw
内容は足さずに、長い文の分割・列挙の番号付きリストへの置き換え・括弧に積んだ形の表への移しだけを行った。 章の並びは設計テンプレートの順と確定事項を伝える文書の構成に合っているため変えていない。 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 | REQUEST_CHANGES
差し戻し時の回答対象と、承認の依頼への回答・MVV 通過のモデルを明確にしてください。
takemi-ohama
left a comment
There was a problem hiding this comment.
🤖 cross-review | round 1 | kiro | APPROVE
ドメインモデルの節と用語集の差分を確認した。コンテキストマップは ndf-workflow(公開された言語)と ndf-factory(腐敗防止層)の関係を宣言しており、集約ごとに持ち主が 1 つに決まり、集約をまたぐ書き込みの 2 例外(I57・I59)は本文で明示されている。不変条件 I56〜I68 に相互矛盾は無く、ドメインイベント E1〜E11 はすべて受け手を持ち、要求の番号を引き継いでいる。用語の表の 5 語(Factory のオーガナイザー・配布の実行・手元のマシン・手元のマシンの枠・料金プラン)は用語集の差分と一致し、改名に伴う「アカウント・使える量・実行の形態・同時のジョブの数」の意味の語の置換は design-ndf の「語の改名」で対象として記されている。critical / major の基準に当たる修正アクションは見つからなかった。
- I61: 配布済みは release.settled の範囲、差し戻しは最後の提示の範囲(提示の前なら受けた依頼すべて)へ答える - 差し戻しでも手動の実行へ requestResume を呼び、止まった配布の差し戻しを表に足す - E4 を人の答えに限り、MVV 判定の通過を E12(承認の依頼を作らず decide を通さない)に分ける。I66 の対象を承認の依頼への答えに絞る Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
🔧 /ndf:fix サマリ | round 1 | commit f8bd701対応件数: critical=0 / major=2 / minor=0(合計 2 件) CI の失敗 3 件(glossary-check・markdown-link-check・runtime-plugin-validate の中のリンク検査)はすべて要求のコピー issues/issue-2439-requirements.md が原因。コピーは課題 #2439 の本文と一致が要り手で直せないため、本文で「手元のランナー」をコードの記法で囲み、docs/specifications/ndf-factory-dev-loops.md へのリンクを ../docs/ か URL に直してから spec-copy.py write で作り直す必要がある(修正担当は GitHub へ書かないため未対応) |
🔧 /ndf:fix サマリ | commit (なし)対応件数: critical=0 / major=0 / minor=0(合計 0 件) |
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KYHP81KoUKXa9vNySx8fNE
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KYHP81KoUKXa9vNySx8fNE
takemi-ohama
left a comment
There was a problem hiding this comment.
🤖 cross-review | round 2 | claude | REQUEST_CHANGES
I62 の古い版の待ち(legacy_run)が、確定仕様の legacyCount の数え方(I48・下限が無い/移行の済みの行が無い間はすべて古い版)と噛み合っておらず、手動の実行が自分の依頼で永久に待つ経路と、古い版の実行が配布の実行と並んで自分で配布する経路が残っている。止まった配布の「続きから流す」の再開の手も stalledFrom ごとに定めてください。
takemi-ohama
left a comment
There was a problem hiding this comment.
🤖 cross-review | round 2 | kiro | REQUEST_CHANGES
設計の 4 文書と用語集の差分を読んだ。round 1 で指摘された I61(差し戻し時の回答対象)と E4・I66(MVV 判定の通過と人の承認経路の区別)は f8bd701 で本文に反映されている。残る食い違いを 1 件挙げる。用語集の新規エントリ「手元のマシン」に付けたコードの識別子 local_runner が、決定 12・S10・受け入れ条件 16(コードの識別子は変えない)と整合しない。
- I62: 依頼を出して待つ古い版の実行を数えず、まとめた配布が流れている間は古い版の実行を始めない - 互換性: 並行を許す版の下限を切り替え口の入った版以上へ上げる手順を書く - 止まった配布の「続きから流す」の再開の手を、止まる前の状態ごとに決める - 用語集の「手元のマシン」から、実在しない識別子のコードを外す Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
🔧 /ndf:fix サマリ | round 2 | commit d4440ad対応件数: critical=0 / major=5 / minor=0(合計 5 件) |
takemi-ohama
left a comment
There was a problem hiding this comment.
🤖 cross-review | round 3 | claude | REQUEST_CHANGES
止まった配布の「続きから流す」で、confirmed のときの再開の手を release.progress の有無だけで決めており、段の事象を送る前に落ちて GitHub では本番が進んでいる配布を本番のプランの初めから流し直す。mainMerged と同じく GitHub の状態でも照らしてください。
takemi-ohama
left a comment
There was a problem hiding this comment.
🤖 cross-review | round 3 | codex | REQUEST_CHANGES
切り替え時の実行中の旧版の扱いと、I62 の組む書き込みの排他条件を修正してください。
…し、下限を上げた後に始まっていた実行を待つ Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
🔧 /ndf:fix サマリ | commit f30525b対応件数: critical=0 / major=0 / minor=0(合計 0 件) |
- 目的に「なぜ衝突が無くなるか」を足す(I56・I57・I61・I62) - 「既存の語と記号」の表を足し、レーン・承認ゲート・MVV 判定・I48・要求の番号・MVV の項目などを正本へつなぐ - confirm:<k> が提示 k のコミットから release/v<版> を切ることを書く - 受けた依頼の行の prodPrUrl と、ランナーへ返す答えの release の対応を表にする - 非機能の 5 分が GSI の追加に依ることを書く - 記録の行の鍵の末尾に乱数を付け、同じ時刻・同じ種類の記録の上書きを防ぐ 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
答えの保存後も、依頼元への通知と再開が完了するまで見回りの対象に残す規則を定めてください。
takemi-ohama
left a comment
There was a problem hiding this comment.
🤖 cross-review | round 4 | kiro | REQUEST_CHANGES
障害からの再開(F8・AC 12・非機能の可用性)が、private リポジトリに足す GSI ORGANIZER_ACTIVE の追加に依存しており、GSI を足すまで見回りが一切動かない。この課題の成果物に GSI が含まれず、代替の走査も無いため、設計どおり実装すると AC 12 と可用性の条件が満たされないまま出荷される。下の 1 件を直せば解ける。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
🔧 /ndf:fix サマリ | round 4 | commit 684821f対応件数: critical=0 / major=2 / minor=0(合計 2 件) |
takemi-ohama
left a comment
There was a problem hiding this comment.
🤖 cross-review | round 5 | claude | REQUEST_CHANGES
見回りが届け直すときの requestResume の呼び直しが、実行が今もこの依頼の答えを待っているかを照らさないため、別の承認待ちの実行を人の答え無しに再開しうる。届け直しの条件と、deliveredAt を書く書き込みの組を直してください。
takemi-ohama
left a comment
There was a problem hiding this comment.
🤖 cross-review | round 5 | kiro | APPROVE
このラウンドの差分(3 文書)は round 4 の指摘 2 件(見回りが private リポジトリの GSI 追加に依存する問題、答えの保存と届け終わりを分けて記録する問題)への対応である。設計は、新しい GSI を足す代わりに実行の表の既存の GSI gsi1 へ鍵 ORGANIZER_ACTIVE の行を載せる方式へ変え、受けた依頼の行に deliveredAt を足して届け終えるまで索引に残す方式へ変えた。既存の factory/api/src/runs/dynamo-table.ts を読み、gsi1(GSI1 = "gsi1")が実在し、既存の区画値が ACTIVE_JOBS・WAITING_LOOPS・AWAITING_RESET・ACCOUNT#<id> で、ORGANIZER_ACTIVE はそこへ足す新しい区画値(インフラ定義の変更なし)であることを確認した。3 文書(design.md・design-data.md・design-decisions.md)の記述は相互に整合し、旧モデルの gsiOrg と「GSI の追加」の記述は未確認事項からも消えている。F8 の機能×データ行・非機能の可用性/性能・テスト設計 12/13 も新方式に合わせて更新されている。critical / major の基準に当たる、このラウンドの変更由来の修正アクションは見つからなかった。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
🔧 /ndf:fix サマリ | commit 17fee33対応件数: critical=0 / major=0 / minor=0(合計 0 件) |
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KYHP81KoUKXa9vNySx8fNE
#2439 の要求・受け入れ条件・設計を文書にまとめた。設計では、Factory のオーガナイザーの配布の取りまとめ、NDF 側の切り替え箇所、語の改名を定める。用語集にも改名を反映した。コードの変更は含まない。
利用者向けの変化
移行の手順
変更の要点
テスト
モード: standard / 通した工程: ドキュメント再構成 → ドキュメントレビュー
🤖 Generated with Claude Code
決めたこと
issues/issue-2439-design-decisions.mdfactory/に置き、tmux の並列開発を計画から始める(並列の計画・レーンごとの引継ぎ文書・オーガナイザーへの指示書・--parallel で起動) #2436 の契約だけに依るdevelopの比べを API の側で GitHub の口から 1 回だけ行うdone、手動の実行は理由つきのawaiting_approvalにするmainへのマージの後の配布を差し戻さないため、配布の実行は失敗しても終わりの状態にせず、止まった配布を「続きから流す」か「差し戻す」で解く