Artifact 3782ce1685fe995ab9593ad8c4afba9aea3f31baf17c9de9dfd76859659745d3:
- File
required_content_merge.go
-
2026-10-22 17:53:21
— part of check-in
[d8458ad960]
on branch feat/horizon-cones
— feat(merge): refuse a base below the structural horizon, or deepen to it
Section 5.5 forbids merging against a base the store does not hold. In a structural store the walk can reach a boundary check-in as the base, or find none where both sides' ancestry leaves the store, and the merge then failed on a phantom with an error that never named the horizon. content.MergeBaseCrossing decides the crossing for checkout merges and branch merges alike, and the error names the horizon, the base and the deepen, matching libfossil.ErrBelowHorizon.
Checkout.MergeContext is the remedy zit's merge applies: given a peer it asks the origin for the base, deepens to reach it and merges again over the real base. 'repo merge' takes the recovery flags and contacts the remote only when a merge crosses the horizon. (user: [email protected], size: 2512) [annotate] [blame] [check-ins using]
-
2026-10-22 19:51:28
— part of check-in
[19d7db48d4]
on branch feat/horizon-cones
— Merge branch 'wip/horizon-step6' into feat/horizon-cones
Appendix A step 6: the merge-base query (pragma horizon-mergebase), deepen (Repo.DeepenHorizon, repo cone deepen), merges and bisect that refuse or deepen across the horizon (ErrBelowHorizon, Checkout.MergeContext), the origin's push-time check of a branch cancellation, seed verification by deepening (Repo.VerifySeed, repo verify --seed), and symbolic names below the horizon resolving. Interoperates with zit at 9bf7ebfe0f. (user: [email protected], size: 2512) [annotate] [blame] [check-ins using]
-
2026-10-22 17:53:21
— part of check-in
[d8458ad960]
on branch feat/horizon-cones
— feat(merge): refuse a base below the structural horizon, or deepen to it