Merge Generation
Need User Feedback分岐したブランチをmergeする必要がある場合、REAPはMerge Generationと呼ばれる特殊な6ステージのライフサイクルを実行します — 通常のGenerationライフサイクルとは別のものです。中核原則:まずgenomeを整合させ、その後にソースコードをmergeする。
Merge Generationが通常のgit mergeと異なるのはなぜですか?
通常のgit mergeはソースコードの競合のみを解決します。しかし、2つのブランチが独立して進化する場合 — それぞれ独自のGeneration、genome変更、設計決定を持つ — ソースコードだけをmergeしても不十分です。genome(アーキテクチャ原則、コンベンション、制約、ビジネスルール)も分岐している可能性があります。Merge Generationはソースmergeの前に3つの重要なステップを追加します:genomeの分岐検出、mating(genome競合の解決)、merge後のgenome-ソース整合性の検証。これにより、mergeされたコードベースがコンパイルが通るだけでなく、設計的にも一貫していることが保証されます。
ソース競合 → 解決 → コミット。設計の一貫性はチェックされない。意味的な競合は検出されない。
まずGenomeを整合 → genomeに基づくソースmerge → genome-ソース整合性の検証 → validation → コミット。見えない意味的な競合が検出される。
なぜgenomeの整合が先なのか
ソースコードの競合を解決しても、意味的な競合がないことは保証されません。2つのコードはきれいにmergeされる — gitの競合は一切ない — にもかかわらず、意図、アーキテクチャ、ビジネスロジックにおいて互いに矛盾することがあります。genomeベースの推論だけがこれらの見えない競合を検出できます:mergeされたコードはまだアーキテクチャ原則に従っているか?コンベンションは一貫しているか?ビジネスルールは整合しているか?これが、REAPがソースコードに触れる前にgenomeを整合させる理由です。genomeが確定すれば、それが構文的にだけでなく意味的にもソース競合を解決するための権威あるガイドとなります。
ステージ順序
| ステージ | 内容 | アーティファクト |
|---|---|---|
| Detect | git refで対象ブランチをスキャン。DAG BFSで共通祖先を検索。genomeの差分を抽出。競合をWRITE-WRITEまたはCROSS-FILEに分類。 | 01-detect.md |
| Mate | すべてのgenome競合を人間に提示。WRITE-WRITE:A、Bを選択、または手動merge。CROSS-FILE:論理的な互換性をチェック。進行前にgenomeが完全に解決されている必要あり。 | 02-mate.md |
| Merge | 対象ブランチでgit merge --no-commitを実行。確定したgenomeに基づいてソース競合を解決。意味的な競合をチェック — コンパイルは通るがgenomeと矛盾するコード。 | 03-merge.md |
| Reconcile | merge後のgenome-ソース整合性を検証。AIがgenomeとソースコードを比較。不整合があればユーザーが確認。問題がある場合はMergeまたはMateにリグレッション。 | 04-reconcile.md |
| Validation | すべての機械的テストコマンドを実行(test、lint、build、型チェック)。失敗した場合はMergeまたはMateにリグレッション。 | 05-validation.md |
| Completion | mergeされた結果をコミット。meta.ymlにtype: mergeと両方の親を記録。lineageにアーカイブ。 | 06-completion.md |
競合タイプ
| タイプ | 説明 | 解決方法 |
|---|---|---|
| WRITE-WRITE | 同じgenomeファイルが両方のブランチで変更 | 人間が決定:Aを維持、Bを維持、またはmerge |
| CROSS-FILE | 異なるgenomeファイルが変更されたが、両方のブランチでgenomeが変更 | 人間が論理的な互換性をレビュー |
| ソース競合 | ソースコードのgit merge競合 | 確定したgenomeに基づいて解決 |
| 意味的な競合 | コードはきれいにmergeされるがgenome(アーキテクチャ、コンベンション、ビジネスルール)と矛盾 | Reconcileステージで検出 — AIがgenomeとソースを比較、ユーザーが解決を確認 |
| 競合なし | genomeおよびソースの競合なし | 自動的に進行 |
Mergeリグレッション
ValidationまたはReconcileの失敗はMergeまたはMateにリグレッションできます。MergeはGenomeの問題が発見された場合にMateにリグレッションできます。リグレッションルールは通常のGenerationと同じパターンに従います — 理由はタイムラインとアーティファクトに記録されます。
