Skip to content
go-libfossil Check-in [75ded1b0e0]
Login

Check-in [75ded1b0e0]

Overview
Comment:feat(horizon): compute the held set K under both rules

draft-fossil-horizon-00 Section 3.1 defines K as a function of C, the rule and the check-in graph, recomputed by whoever needs it and stored by no one. internal/horizon.HeldSet computes it from the plink and leaf tables: one bounded plink load, then iterative breadth-first walks.

Merge parents are followed both ways, as zit's walk does (src/sparse.zig, ClassifyState.extend and walkParents). Under the leaves rule each open leaf's ancestry is held up to where it meets C's ancestry, inclusive, so every equally near common ancestor the walk reaches is held. "Open leaf" is fossil's leaf table minus active closed tags rather than zit's "no held child", which keeps a below-C branch merged into a descendant held back to its fork, so any two open leaves keep their merge base in K. C that is not a held check-in is ErrNotHeld; phantom parents are never entered.

Section 8 requires the walk to carry visited-node bounds: the load and every walk share the 1<<20 bound of the other graph walks and fail with ErrBound, and cancellation is honoured. The conformance suite gains cases for HZ-3.1-1 and HZ-3.1-3, both PARTIAL until the horizon member and the content horizon exist.

Timelines: family | ancestors | descendants | both | trunk | feat/horizon-cones
Files: files | file ages | folders
SHA3-256: 75ded1b0e03aa492553b803bf1b07b95a652721a08c46c6ccda3e08b75b2db7d
User & Date: [email protected] on 2026-10-21 22:19:03.000
Other Links: branch diff | manifest | tags
Context
2026-10-21
22:20
Merge branch 'wip/horizon-held-set' into feat/horizon-cones

The held set K of draft-fossil-horizon-00 §3.1 under both rules, bounded and computed from the check-in graph the repository holds. Conflicts in the horizon suite and table resolved by keeping both slices' cases and rows. check-in: 7a5ae7cee7 user: [email protected] tags: feat/horizon-cones, trunk

22:19
feat(horizon): compute the held set K under both rules

draft-fossil-horizon-00 Section 3.1 defines K as a function of C, the rule and the check-in graph, recomputed by whoever needs it and stored by no one. internal/horizon.HeldSet computes it from the plink and leaf tables: one bounded plink load, then iterative breadth-first walks.

Merge parents are followed both ways, as zit's walk does (src/sparse.zig, ClassifyState.extend and walkParents). Under the leaves rule each open leaf's ancestry is held up to where it meets C's ancestry, inclusive, so every equally near common ancestor the walk reaches is held. "Open leaf" is fossil's leaf table minus active closed tags rather than zit's "no held child", which keeps a below-C branch merged into a descendant held back to its fork, so any two open leaves keep their merge base in K. C that is not a held check-in is ErrNotHeld; phantom parents are never entered.

Section 8 requires the walk to carry visited-node bounds: the load and every walk share the 1<<20 bound of the other graph walks and fail with ErrBound, and cancellation is honoured. The conformance suite gains cases for HZ-3.1-1 and HZ-3.1-3, both PARTIAL until the horizon member and the content horizon exist. check-in: 75ded1b0e0 user: [email protected] tags: feat/horizon-cones, trunk

22:04
conform(horizon): pin the horizon draft at horizon-rfc e6ee276c89

Moves the horizon copy from 86d4b67372 to e6ee276c89, the check-in the sparse-cone copy is already pinned at. Every change between the two is in §6: §6.1 lets any request carry pragma horizon-cursor, §6.2 adds the SHOULDs to keep the classification and the structural graph per store prefix, and §6.2.6 defines the cursor. Five new rows read them into the table (HZ-6.2-9 to HZ-6.2-13) and HZ-6.1-1 names the cursor; the table is now 50 requirements, none implemented. check-in: be103fe35a user: [email protected] tags: feat/horizon-cones, trunk

Changes