Artifact 8171b757e845b649b91943c7389ee74999d3570247b033fbcd04e4eade34a951:
- File
required_content_merge.go
-
2026-10-23 03:03:06
— part of check-in
[263de5a736]
on branch feat/horizon-cones
— fix(merge): refuse a merge whose ancestry crosses the horizon without a peer
draft-fossil-horizon-00 ยง5.5 has a structural clone ask the origin for the base whenever either side's ancestry crosses the horizon, even when its own walk finds a common ancestor: over part of the graph that ancestor need not be the nearest. Without a peer Checkout.Merge and Repo.Merge refused only when the walk itself crossed, and merged over a held base whose sides' ancestry crossed below it.
Both now refuse such a merge with an error matching ErrBelowHorizon that names the horizon and points to Checkout.MergeContext with a Peer; MergeContext refuses the same way when the origin does not answer. A merge whose ancestry stays above the horizon, or one given its base, still merges locally. The CLI's merge already falls back to asking the remote on ErrBelowHorizon, so it now asks in these cases too. (user: [email protected], size: 5226) [annotate] [blame] [check-ins using]
-
2026-10-23 03:28:00
— part of check-in
[c4b191ed05]
on branch feat/horizon-cones
— Merge branch 'wip/hz-close-sync' into feat/horizon-cones
An origin answering a horizon request never sends a cluster, even one a gimme names; an origin may name a history URL in horizon-served (horizon-history-url), which the client reports; and a merge with no peer to ask refuses whenever either side's ancestry crosses the horizon. Conflicts in the changelog and the CLI horizon tests kept both sides. (user: [email protected], size: 5226) [annotate] [blame] [check-ins using]
-
2026-10-23 03:03:06
— part of check-in
[263de5a736]
on branch feat/horizon-cones
— fix(merge): refuse a merge whose ancestry crosses the horizon without a peer