Artifact f0b9f660e79dfa6d2efd8f0c37ed3366ce1217fcdf1e018c5815a60aa8137f7b:
- File
internal/sync/handler.go
-
2026-10-22 23:43:27
— part of check-in
[0de31d6f8e]
on branch feat/horizon-cones
— feat(sync): withhold out-of-cone nodes of the trees a horizon keeps
Under either horizon with path members an origin now sends only the sub-manifest nodes on paths into the cone of the trees its horizon keeps (every check-in's at the content depth, K's at the structural one), announces none of the rest and answers no gimme for them; a request without path members still receives every node (draft-fossil-horizon-00 §6.2 at zit 3a2df62515).
The walk is zit's walkSlots (src/sparse.zig): only slots that may hold an in-cone path are descended, a last slot takes its parent's bound, and a node is walked again only under a wider bound. It runs over the classification's facts, never the store, and the origin's memo keeps it by cone so a later request walks only the roots appended since, falling back to a fresh walk when a root arrives below the ones walked. A clone round sends nodes by the per-check-in tree walk it already uses without a horizon, walking a check-in outside the held set for its nodes alone.
Each kept node records the lowest root that keeps it, so a cursor is void (§6.2.6) exactly when some node at or below it is kept only by a root above it: stateless, and the same for a fresh classification and the memo, where zit voids every cursor below the store count at the moment its sidecar sees the change.
The memo returned a cone's earlier classification whenever no fact list grew, keeping that store's names, so an artifact appended or filled without becoming a record read as unnamed; it now carries the current facts. Found by the memo equivalence test, which now covers path cones under both horizons, the slot walk, cursor voiding and a tree form that widens a node's bound. (user: [email protected], size: 85813) [annotate] [blame] [check-ins using]
-
2026-10-23 01:16:23
— part of check-in
[113123abae]
on branch feat/horizon-cones
— Merge branch 'wip/repin-3a2d' into feat/horizon-cones
The horizon draft re-pinned to zit horizon-rfc 3a2df62515, and its new rule: under either horizon a path cone elides the sub-manifest nodes no in-cone slot reaches, and an origin withholds them. Interoperates with zit at 3a2df62515 both ways. (user: [email protected], size: 85813) [annotate] [blame] [check-ins using]
-
2026-10-22 23:43:27
— part of check-in
[0de31d6f8e]
on branch feat/horizon-cones
— feat(sync): withhold out-of-cone nodes of the trees a horizon keeps