Artifact 10c54b3306c6fee9c91b6e1a8cd86e0e2478b2378b2750dc23eb3ccccf37fba3:
- File
db/db.go
-
2026-10-22 22:26:27
— part of check-in
[83f8e43ebd]
on branch feat/horizon-cones
— feat(sync): an origin classifies horizon requests through its memo
Each request re-read the store to classify its cone, so a pull after a one-artifact push to a large origin cost a full read. The handler now takes each store's classification memo (one per pool DB, dropped with it) and classifies its inventory and its structural reach through a view of it. The view is published only once the request has committed and stored no artifact: the inventory classifies before received files are crosslinked, so such a view describes a store that never committed. A caller holding its own transaction (a bound DB) classifies afresh.
SparseClassified now reports what the classification read: the whole store on a full read, the arrivals on an extension, none when the memo covers the store.
A property test drives random commits in every manifest form, pushes in any order and announcements against an origin and checks, after each step, that the memo keeps exactly what a fresh classification keeps for path cones, content and structural horizons under both rules. (user: [email protected], size: 17774) [annotate] [blame] [check-ins using]
-
2026-10-22 22:48:31
— part of check-in
[7dec3e4fb3]
on branch feat/horizon-cones
— Merge branch 'wip/hz-memo' into feat/horizon-cones
The origin's classification memo (draft-fossil-horizon-00 ยง6.2): the reference graph and each cone's classification kept per store prefix and extended by appended artifacts, recomputed in full only when an arrival was already cited. A pull after a one-artifact push on fossil-scm.org's repository answers in about 0.25 s instead of 2.7 to 4.5 s. (user: [email protected], size: 17774) [annotate] [blame] [check-ins using]
-
2026-10-22 22:26:27
— part of check-in
[83f8e43ebd]
on branch feat/horizon-cones
— feat(sync): an origin classifies horizon requests through its memo