Skip to content

Factory のオーガナイザー: 同じリポジトリで並行する実行の本番の配布を 1 本にまとめ、承認と問いをリポジトリごとに 1 か所へ集める(#2439) - #2442

Merged
takemi-ohama merged 13 commits into
developfrom
design/issue-2439
Nov 3, 2026

Conversation

@takemi-ohama

Copy link
Copy Markdown
Contributor

#2439 の要求・受け入れ条件・設計を文書にまとめた。設計では、Factory のオーガナイザーの配布の取りまとめ、NDF 側の切り替え箇所、語の改名を定める。用語集にも改名を反映した。コードの変更は含まない。

利用者向けの変化

  • 無し

移行の手順

  • 無し

変更の要点

テスト

  • 自動テストのステップは実行していない
    • 変更は設計文書と用語集に限られる
    • コードの変更は含まない

モード: standard / 通した工程: ドキュメント再構成 → ドキュメントレビュー

🤖 Generated with Claude Code

決めたこと

issues/issue-2439-design-decisions.md

  • 決定 1: 実行基盤の違う 2 つの実装を互いに独立して変えられるよう、Factory のオーガナイザーを factory/ に置き、tmux の並列開発を計画から始める(並列の計画・レーンごとの引継ぎ文書・オーガナイザーへの指示書・--parallel で起動) #2436 の契約だけに依る
  • 決定 2: 新しい常駐とインフラを足さずに済ませるため、オーガナイザーの進行を実行の表の DynamoDB の行で持ち、API の handler と見回りが進める
  • 決定 3: 配布の実行を 2 本作らないため、配布の実行をまとめた配布と同じトランザクションで作り、範囲のどの実行でもない専用の実行にする
  • 決定 4: 承認済みの開発の配布を枠で止めないため、配布の実行は実行の枠を持たず使える量の判定にかけず、費用は登録したアカウントの利用量へ数える
  • 決定 5: NDF を Factory に依らずに外のオーガナイザーへつなぐため、切り替え口をこの課題で作り、置き場のファイルの契約にする
  • 決定 6: Factory の今の承認の流れを保つため、置き場で依頼にするのは本番の配布だけにし、承認ゲート 1 と問いは一覧への並べ方だけをまとめる
  • 決定 7: 承認したコミット以外を出さないため、答えの時点の develop の比べを API の側で GitHub の口から 1 回だけ行う
  • 決定 8: 2 つのオーガナイザーが互いの記録を読めなくても衝突させないため、GitHub の上の開いている本番の Pull Request と古い版の実行で待つ
  • 決定 9: ループの周回と手動の実行の今の待ち方を変えないため、依頼の後のループの実行は done、手動の実行は理由つきの awaiting_approval にする
  • 決定 10: 承認の依頼の持ち主を 1 つに保つため、一覧は既存の承認の依頼と人の判断待ちを読んで並べ、新しい保存を作らない
  • 決定 11: main へのマージの後の配布を差し戻さないため、配布の実行は失敗しても終わりの状態にせず、止まった配布を「続きから流す」か「差し戻す」で解く
  • 決定 12: 語の衝突を読み手の側で解くため、「手元のマシン」と「料金プラン」へ改め、識別子は変えない

takemi-ohama and others added 4 commits November 2, 2026 21:43
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>

@takemi-ohama takemi-ohama left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 cross-review | round 1 | codex | REQUEST_CHANGES

差し戻し時の回答対象と、承認の依頼への回答・MVV 通過のモデルを明確にしてください。

Comment thread issues/issue-2439-design.md Resolved
Comment thread issues/issue-2439-design.md Resolved

@takemi-ohama takemi-ohama left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 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>
@takemi-ohama

Copy link
Copy Markdown
Contributor Author

🔧 /ndf:fix サマリ | round 1 | commit f8bd701

対応件数: critical=0 / major=2 / minor=0(合計 2 件)
決着: 2 件 / 見送り: 0 件 / 却下: 0 件
CI: FAILURE

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 へ書かないため未対応)

@takemi-ohama

Copy link
Copy Markdown
Contributor Author

🔧 /ndf:fix サマリ | commit (なし)

対応件数: critical=0 / major=0 / minor=0(合計 0 件)
決着: 0 件 / 見送り: 0 件 / 却下: 0 件
CI: NONE

@takemi-ohama
takemi-ohama marked this pull request as ready for review November 2, 2026 22:16

@takemi-ohama takemi-ohama left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 cross-review | round 2 | claude | REQUEST_CHANGES

I62 の古い版の待ち(legacy_run)が、確定仕様の legacyCount の数え方(I48・下限が無い/移行の済みの行が無い間はすべて古い版)と噛み合っておらず、手動の実行が自分の依頼で永久に待つ経路と、古い版の実行が配布の実行と並んで自分で配布する経路が残っている。止まった配布の「続きから流す」の再開の手も stalledFrom ごとに定めてください。

Comment thread issues/issue-2439-design.md Resolved
Comment thread issues/issue-2439-design-data.md Resolved
Comment thread issues/issue-2439-design.md Resolved
Comment thread issues/issue-2439-design.md Resolved

@takemi-ohama takemi-ohama left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 cross-review | round 2 | kiro | REQUEST_CHANGES

設計の 4 文書と用語集の差分を読んだ。round 1 で指摘された I61(差し戻し時の回答対象)と E4・I66(MVV 判定の通過と人の承認経路の区別)は f8bd701 で本文に反映されている。残る食い違いを 1 件挙げる。用語集の新規エントリ「手元のマシン」に付けたコードの識別子 local_runner が、決定 12・S10・受け入れ条件 16(コードの識別子は変えない)と整合しない。

Comment thread docs/glossary/glossary.json Resolved
- I62: 依頼を出して待つ古い版の実行を数えず、まとめた配布が流れている間は古い版の実行を始めない
- 互換性: 並行を許す版の下限を切り替え口の入った版以上へ上げる手順を書く
- 止まった配布の「続きから流す」の再開の手を、止まる前の状態ごとに決める
- 用語集の「手元のマシン」から、実在しない識別子のコードを外す

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@takemi-ohama

Copy link
Copy Markdown
Contributor Author

🔧 /ndf:fix サマリ | round 2 | commit d4440ad

対応件数: critical=0 / major=5 / minor=0(合計 5 件)
決着: 5 件 / 見送り: 0 件 / 却下: 0 件
CI: PENDING

@takemi-ohama takemi-ohama left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 cross-review | round 3 | claude | REQUEST_CHANGES

止まった配布の「続きから流す」で、confirmed のときの再開の手を release.progress の有無だけで決めており、段の事象を送る前に落ちて GitHub では本番が進んでいる配布を本番のプランの初めから流し直す。mainMerged と同じく GitHub の状態でも照らしてください。

Comment thread issues/issue-2439-design.md Resolved

@takemi-ohama takemi-ohama left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 cross-review | round 3 | codex | REQUEST_CHANGES

切り替え時の実行中の旧版の扱いと、I62 の組む書き込みの排他条件を修正してください。

Comment thread issues/issue-2439-design-data.md Resolved
Comment thread issues/issue-2439-design.md Resolved
…し、下限を上げた後に始まっていた実行を待つ

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@takemi-ohama

Copy link
Copy Markdown
Contributor Author

🔧 /ndf:fix サマリ | commit f30525b

対応件数: critical=0 / major=0 / minor=0(合計 0 件)
決着: 3 件 / 見送り: 0 件 / 却下: 0 件
CI: NONE

- 目的に「なぜ衝突が無くなるか」を足す(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 takemi-ohama left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 cross-review | round 4 | codex | REQUEST_CHANGES

答えの保存後も、依頼元への通知と再開が完了するまで見回りの対象に残す規則を定めてください。

Comment thread issues/issue-2439-design.md Resolved

@takemi-ohama takemi-ohama left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 cross-review | round 4 | kiro | REQUEST_CHANGES

障害からの再開(F8・AC 12・非機能の可用性)が、private リポジトリに足す GSI ORGANIZER_ACTIVE の追加に依存しており、GSI を足すまで見回りが一切動かない。この課題の成果物に GSI が含まれず、代替の走査も無いため、設計どおり実装すると AC 12 と可用性の条件が満たされないまま出荷される。下の 1 件を直せば解ける。

Comment thread issues/issue-2439-design.md Resolved
@takemi-ohama

Copy link
Copy Markdown
Contributor Author

🔧 /ndf:fix サマリ | round 4 | commit 684821f

対応件数: critical=0 / major=2 / minor=0(合計 2 件)
決着: 2 件 / 見送り: 0 件 / 却下: 0 件
CI: PENDING

@takemi-ohama takemi-ohama left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 cross-review | round 5 | claude | REQUEST_CHANGES

見回りが届け直すときの requestResume の呼び直しが、実行が今もこの依頼の答えを待っているかを照らさないため、別の承認待ちの実行を人の答え無しに再開しうる。届け直しの条件と、deliveredAt を書く書き込みの組を直してください。

Comment thread issues/issue-2439-design.md Resolved

@takemi-ohama takemi-ohama left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 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 の基準に当たる、このラウンドの変更由来の修正アクションは見つからなかった。

@takemi-ohama

Copy link
Copy Markdown
Contributor Author

🔧 /ndf:fix サマリ | commit 17fee33

対応件数: critical=0 / major=0 / minor=0(合計 0 件)
決着: 1 件 / 見送り: 0 件 / 却下: 0 件
CI: NONE

@takemi-ohama takemi-ohama added the design-approved 設計 Pull Request の承認の印 label Nov 3, 2026
@takemi-ohama
takemi-ohama merged commit e822c83 into develop Nov 3, 2026
24 checks passed
@takemi-ohama
takemi-ohama deleted the design/issue-2439 branch November 3, 2026 03:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

design-approved 設計 Pull Request の承認の印

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant