コラボレーション

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されたコードベースがコンパイルが通るだけでなく、設計的にも一貫していることが保証されます。

通常のgit merge

ソース競合 → 解決 → コミット。設計の一貫性はチェックされない。意味的な競合は検出されない。

Merge Generation

まずGenomeを整合 → genomeに基づくソースmerge → genome-ソース整合性の検証 → validation → コミット。見えない意味的な競合が検出される。

なぜgenomeの整合が先なのか

ソースコードの競合を解決しても、意味的な競合がないことは保証されません。2つのコードはきれいにmergeされる — gitの競合は一切ない — にもかかわらず、意図、アーキテクチャ、ビジネスロジックにおいて互いに矛盾することがあります。genomeベースの推論だけがこれらの見えない競合を検出できます:mergeされたコードはまだアーキテクチャ原則に従っているか?コンベンションは一貫しているか?ビジネスルールは整合しているか?これが、REAPがソースコードに触れる前にgenomeを整合させる理由です。genomeが確定すれば、それが構文的にだけでなく意味的にもソース競合を解決するための権威あるガイドとなります。

ステージ順序

ステージ内容アーティファクト
Detectgit 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
Reconcilemerge後のgenome-ソース整合性を検証。AIがgenomeとソースコードを比較。不整合があればユーザーが確認。問題がある場合はMergeまたはMateにリグレッション。04-reconcile.md
Validationすべての機械的テストコマンドを実行(test、lint、build、型チェック)。失敗した場合はMergeまたはMateにリグレッション。05-validation.md
Completionmergeされた結果をコミット。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と同じパターンに従います — 理由はタイムラインとアーティファクトに記録されます。

current.yml構造(Merge)