50 descendants and 50 ancestors of 6d3755e966b89303
|
2026-10-21
| ||
| 12:20 |
test(checkout): read fossil's listing from stdout in the marker crash test
In the linked crash state both marker names are one file, and SQLite on Linux warns about the multiple links on stderr while fossil lists the record normally. CombinedOutput folded the warning into the file list. check-in: 83f574dc8f user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 12:10 | docs(changelog): record widening fetch, marker crash safety and the R-card warning check-in: 59e0d0a668 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 12:09 | Merge branch 'feat/sparse-checkout-rows' into feat/submanifest-reader check-in: f0d200e75d user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 12:05 | test(checkout): isolate fossil's home in the marker crash test check-in: b3f3835fbd user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 12:02 | docs(changelog): record the partial-mirror setting, store-cone widening and compaction check-in: 169418042b user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 12:02 |
test(conformance): cover record-only revert and stash on a sparse checkout
Reverting a merge's out-of-cone changes by name, and with no names, leaves the record exactly where fossil's revert leaves the dense analog, without materializing anything. On a sparse checkout stash refuses a pending merge with the dense checkout's refusal, round-trips an in-cone edit as fossil does, and refuses to apply an out-of-cone file, naming the cone and keeping the entry. Clears the SC-4.4-1 scope note. check-in: 902108ace9 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 11:58 |
fix(checkout): recover a checkout marker move a crash interrupted
A crash between moveMarker's link and unlink left one checkout database under both the native and the private name, which discovery refused, so the checkout could not be opened again. moveMarker now records its target name in the database before linking, and Open completes the move to that name. A still-running transition keeps the same name, so an Open racing it converges instead of removing both names, and moveMarker treats an old name already removed as done. Crash injection at every step of narrowing, widening and legacy migration reopens as the old or new state with files matching the cone; stock fossil either refuses the directory or lists the dense record, before and after recovery. Clears the SC-4.1-2 scope note. check-in: bb9805a794 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 11:56 |
Merge branch 'feat/sparse-server-rows' into feat/sparse-next
# Conflicts: # cli/repo_cone.go # conformance/requirements/sparse-cone.tsv # conformance/sparsesync_test.go check-in: afd72285e5 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 11:52 |
test(conformance): point the node-retention notes at zit #259
Section 5.1 permits holding out-of-cone nodes while 5.4 and 6.3 read as dropping or eliding them; zit holds them and so do we. The notes keep the rows PARTIAL until the draft says which sentence governs. check-in: 8ea7bd1ec4 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 11:52 |
docs(conformance): name the draft sentences zit's node retention contradicts
(cherry picked from commit 1e7b5f246ef9f5af5b366140eb03e7a80227f9bb) check-in: 42a5ef6dd7 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 11:51 |
feat(sparse): public policy-form demand fetch with saved-peer default
Repo.SetStoreConeContext replaces the store cone and pulls newly covered elided artifacts from an explicit peer through ordinary cone-scoped sync; with no peer it refuses naming the elided count, and a cancelled context refuses before any request, both leaving policy unchanged. repo cone store shows or replaces the store cone, defaulting the peer to last-sync-url. Closes SC-6.4-1 and SC-6.4-2. check-in: 08efefff20 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 11:48 |
test(sparse): pin tree-manifest holdings on aware and cone-ignorant receive
An aware clone and pull hold exactly the spines, in-cone nodes and in-cone blobs and never request or receive the remainder. Against a cone-ignorant server the requester elides exactly the blobs every F card names out of the cone and keeps every structural artifact, as zit does. Expected sets come from the origin's decks. check-in: af86aff844 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 11:48 |
feat(checkout): verify a present R card on extract, as fossil's checkout
Extract now runs fossil's repo-cksum check after materializing: a present R card is compared with the aggregate over every file the manifest names, read from the store, so a sparse checkout over a dense store reaches the same verdict as a dense one, and a sparse store skips the check. Like fossil, a disagreement is a warning delivered through ExtractOpts.Warn and never fails the extract; repo-cksum off disables it. The conformance case builds its repository with fossil and checks fossil warns exactly where go-libfossil does. Clears the SC-4.3-4 scope note. check-in: 318f46de9e user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 11:45 |
feat(sync): serve partial-mirror clones from the partial-mirror setting
A sparse store refuses a clone its cone does not cover unless the boolean partial-mirror repository setting is on, read as fossil reads a boolean setting. It reaches HandleSync, XferHandler, ServeHTTP and repo serve alike; libfossil.SettingPartialMirror names it. Closes SC-5.3-2. check-in: 6012d82bd6 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 11:44 |
feat(sparse): expose narrow-then-compact as Repo.CompactStore and repo cone compact
The public entry point refuses a dense store, as zit's pack --drop-elided does, and drops exactly the blobs that only out-of-cone F cards name. The test computes that set from the held artifacts, then verifies the store and recovers every dropped payload by widening through SetConeContext. check-in: 774f579bfa user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 11:42 |
fix(sync): bound a sparse clone round's walk by the dense batch measure
A cone-excluded row is charged at its expanded size plus card overhead, so a round over a long excluded run stops where a dense batch would and the cursor resumes it, instead of walking the whole run in one round. SC-6.2-1 stays partial: ordinary keep-set discovery still reads the whole store. check-in: 1da7f0f002 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 11:42 |
test(conformance): refuse a cone walk past the visited-node bound on the wire
Many check-ins sharing one wide sub-manifest cross the 1<<20 visit bound at depth two; 1023 roots are served and 1024 are refused the way depth 17 is. Clears the SC-8-2 scope note. check-in: 8652936469 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 11:40 |
test(conformance): cover widening over a sparse store
Widening a sparse-store checkout with a peer fetches and materializes exactly the newly covered payloads; with no peer it refuses naming the elided class and changes nothing; a peer lacking the content is refused with the unavailable artifact named. Clears the SC-3.5-2 scope note. check-in: fcb7f90f2c user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 11:35 |
docs(changelog): record cone-scoped transfer and record-only merge
The sparse-store entry said nothing yet fills a store sparsely and the sparse-checkout entry said a merge touching an uncovered file is refused; both are no longer true on this branch. check-in: 7720f39cd0 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 11:34 |
test(conformance): restate what SC-4.1-2 and SC-4.4-1 still lack
The checkout lane's review blockers are fixed and re-reviewed, so the two scope notes now name only what is unverified: durable crash recovery of the private marker, a conformance case for reverting a record-only change, and stash apply on a sparse checkout. check-in: 7163d16293 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 11:30 | Merge branch 'fix/sparse-update-vmerge' into feat/sparse-consolidated check-in: ac542fa1de user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 11:29 |
fix(checkout): restore restoreCommitted's empty-path assertion
Only managed revert steps reach it, each with a resolved path, so the fallback for an empty path was dead code standing in for a broken invariant. check-in: a3cc82b191 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 11:29 |
refactor(checkout): drop the unreachable record-only merge payload path
Record-only merge steps return before the content switch, and a both-changed path outside the cone is refused, so storeMergePayload had no production caller. Its tests called it directly; they go with it, and the merge-failure test keeps its vmerge assertion. check-in: dac73e55c9 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 11:27 |
fix(checkout): hold record-only changes to the commit queue
A partial commit wrote every pending change outside the cone into the check-in. Such changes now behave as disk changes do: a full commit records them, a partial commit leaves them pending against the new version, and a partial commit is still refused while a merge is pending. Fossil-oracle tests cover the dense analog of each case. check-in: 802906e3b8 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 11:26 |
docs(sync): state the prepared sparse service's liveness limit
After the observed generation changes, every request falls back to dense and the service never re-prepares. Say so where the type is documented, so a caller does not expect sparse serving to resume after a foreign commit. check-in: 322c8ef406 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 11:26 |
fix(content): charge the sparse card budget only to decks
Preparation counted newlines in every artifact against the 1M card budget, so a repository holding one large multi-line text file was refused far below its byte limits. Only an artifact with a verified Z card can parse as a deck, so only those are charged cards and parsed; the byte budgets still bound all content. check-in: 2f0f64f464 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 11:25 |
fix(sync): send the private notice for a prepared sparse gimme
The prepared index left private and shunned RIDs out, so a gimme for an in-cone private artifact failed keeps() and got no reply, where the dense handler sends the private igot. A client never told the artifact is private can keep requesting it. The index now answers cone membership only, as the dense keep-set does; the handler's live private and shun gates decide visibility, so no payload is exposed. check-in: 87f44dbf99 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 11:24 |
fix(checkout): keep a pending merge across a sparse update
Fossil's update leaves vmerge alone, so the next commit records the merge parent. The sparse update cleared vmerge, losing the parent and letting a partial commit through while the merge was still pending. check-in: 5a070508db user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 11:18 |
fix(manifest): bound MergeParentFiles' required-content check by the caller's context
The fallback that explains a parent whose tree the store does not hold ran under context.Background, so a cancelled commit still paid for it. Commit passes its context; snapshot, which has no deadline, says so explicitly. check-in: c25e714b08 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 11:18 |
fix(sync): parse each structural node once in the required-content walk
The closure walk parsed a node before checking whether its frame had been visited, so a tree whose S cards name one sub-manifest many times parsed it once per reference: a 616 KB node took 0.46s at 50 references and 3.7s at 400. The visit and byte limits bound what is held, not that work, and a caller without a deadline could wait for days inside the budget. The walk is its own function now, parsing through a callback it calls at most once per (artifact, baseline) pair, so a test can count parses. check-in: 6824f7701a user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 11:15 |
test(conformance): register sparse protocol bound cases honestly
(cherry picked from commit f10fb0eca15614a98bdecfc9d715464615738924) check-in: db1f83c19a user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 11:06 |
test(checkout): preserve public phantom visibility after merge failure
(cherry picked from commit fc1c110fa16c178c73a4bbf937c1f01cc41d5795) check-in: 20b51362a4 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 11:06 |
fix(checkout): refuse unstamped legacy sparse undo images
(cherry picked from commit 63520cd9e0d6ed4f96be8b302dfc217ee57da82f) check-in: 9d336c0907 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 02:10 | fix(checkout): refuse occupied destination SQLite sidecars check-in: 1208731132 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 02:04 | test(conformance): register canonical sparse recovery vectors check-in: 6e27cad4ad user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 01:58 | test(conformance): retain partial review gate for physical sparse records check-in: 20c05b6e64 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 01:58 | test(conformance): retain partial sparse lifecycle coverage check-in: 44737f0cbc user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 01:58 | test(conformance): register record-only sparse merge coverage check-in: ed3318aae5 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 01:56 | feat(sparse): recover required update content with explicit context check-in: 5e75c2e59a user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 01:52 | fix(checkout): retain update target across readiness refusal check-in: f5e355bd08 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 01:50 | fix(checkout): retain extra update failure rollback state check-in: 1fd5efc3bb user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 01:45 | feat(checkout): add nonmutating update recovery planning check-in: 11b36b946c user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 01:41 | Merge commit 'ba688b7' into feat/sparse-required-content check-in: f25fae939d user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 01:38 | fix(sparse): preflight exports and explain local read refusals check-in: 068797500b user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 01:26 | fix(cli): discover sparse checkout markers consistently check-in: 88b3cdd2ef user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 01:25 | test(checkout): align public native interoperability with private sparse metadata check-in: b118dd3935 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 01:25 | fix(checkout): skip carried baseline recovery for unborn checkouts check-in: 342ed76b79 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 01:25 | test(checkout): isolate native sparse marker interoperability check-in: 8df112e120 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 01:25 | fix(checkout): match recovery selection to enqueue union semantics check-in: 7f6bb342c3 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 01:25 | Merge commit '24fb005' into feat/sparse-required-content check-in: acd2d2ea27 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 00:54 | fix(deck): reject overflowing W-card sizes before slicing check-in: 6d3755e966 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
|
2026-10-20
| ||
| 23:56 | docs(sync): clarify exchange-local avoidance hint observations check-in: e500bfb4e3 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 23:56 | test(conformance): document commit hint conditional applicability check-in: 4436960f72 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 23:56 | test(conformance): verify exchange-local commit hint applicability check-in: 110f44ed85 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 23:56 | test(conformance): execute actual tree cycle and visit guards check-in: 16ce2b350e user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 23:56 | refactor(conformance): bound canonical vector fixture helpers check-in: d3199d183b user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 23:56 | test(conformance): pin canonical sparse rewrite contracts and vectors check-in: d444cbf081 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 21:38 |
perf(manifest): bound repair work by the linked batch (#455)
Propagate tags and apply scheduled leaf rechecks before each link transaction commits. Preserve sparse metadata repair, pretagged merge-parent rechecks, and rollback-safe retries. Tracked in #432. check-in: b38bf23f79 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 21:00 |
fix(verify): audit leaves and parent ancestry (#454)
Use same-branch and arrival-order evidence for leaf validation, validate parent overrides, and match Fossil parent tokenization. Preserve sparse readiness and delta-tree scans within one verification snapshot. Tracked in #433. check-in: 35672aadc7 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 19:07 |
fix(sync): preserve cleanup after a fatal clone refusal
Keep Fossil's mandatory operation-less second round without accepting any cleanup payload or clearing the refusal. Exercise dense and sparse refusal alongside the existing client compatibility cases. check-in: a453db484d user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 18:33 | docs(conformance): record partial-tree lifecycle support and remaining limits check-in: b29428a4e2 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 18:31 | Merge commit 'bac111b' into feat/submanifest-reader check-in: e79a5cef6c user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 18:30 | fix(manifest): scope sparse readiness proof to crosslink transactions check-in: 7ee2a8713d user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 18:23 | test(manifest): cover sparse dependency arrival and cascade orders check-in: 61bc211295 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 18:13 | fix(verify): share snapshot-scoped sparse checkin readiness check-in: fe64b28b2d user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 18:10 | Merge branch 'feat/submanifest-reader' into feat/sparse-tree-writer check-in: 08f1cd28ac user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 17:41 | fix(manifest): preserve sparse ancestry and refuse incomplete file history check-in: ea3c1d6cc3 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 17:31 | Merge public-content publication while preserving sparse carried files check-in: fb96ac5642 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 17:26 | feat(manifest): derive sparse tree metadata with explicit completion gaps check-in: e96adae02f user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 17:26 | fix(checkout): enumerate covered files over sparse tree stores check-in: 6878fdd664 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 17:20 | Merge commit '45d80da' into feat/submanifest-reader check-in: eaa6316fd7 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 17:20 | Merge commit 'f2cf3ed' into feat/submanifest-reader check-in: 1fe16a6bf5 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 17:20 | Merge commit '80cfe22' into feat/submanifest-reader check-in: 4d78b267c8 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 17:20 | test(conformance): require immediate error-only clone refusal check-in: 7bc35863dc user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 17:18 | test(conformance): register sparse wire cases without hiding remaining gaps check-in: 743a561747 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 17:17 | test(conformance): bound sparse protocol fixtures and document test scope check-in: bf7bc337f5 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 17:15 | test(sync): cover failed cone fetch intent and retention counts check-in: 34adfc91d0 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 17:15 | Merge commit '20b56c4' into feat/submanifest-reader check-in: 1f9f94350f user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 17:13 | test(conformance): execute sparse sync protocol cases over loopback wire check-in: 233143abec user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 17:12 | fix(sync): retain raw sparse provenance across rebuilds check-in: 5d727706dd user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 17:06 | Merge branch 'feat/submanifest-reader' into feat/sparse-tree-writer check-in: 320629c0cb user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 17:06 | fix(manifest): filter tree baselines before delta enumeration check-in: 9419a375f0 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 17:01 | Merge sparse transfer with rebuild-safe compaction and schema guards check-in: a16e178c81 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 17:00 | Merge commit '00162b8' into feat/submanifest-reader check-in: e73fd9e276 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 16:58 | test(conformance): distinguish subtree classification from writer support check-in: 440f271b07 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 16:58 |
test(sparse): preserve compaction provenance across rebuild and sync
Exercise mixed held and nested missing S siblings after clearing and rebuilding derived tables. Repeated compaction preserves holdings and elided identities; ordinary sync must not request the rebuilt elided artifacts. check-in: 29a11b0aa8 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 16:56 | Merge commit 'bc7af6d' into feat/submanifest-reader check-in: 6edcdc4e4d user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 16:54 |
fix(content): compact healthy partial trees using shared provenance
Use raw cone references while independently verifying held bytes. Preserve leaves and nonterminal paths so missing descendants keep their range proofs. Exercise missing S nodes, stale derived indexes, and cancellation after an observed demotion. check-in: 55b3ca7155 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 16:54 | feat(sync): fetch widened cone policy through an explicit peer check-in: 293300a722 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 16:51 |
fix(content): import raw sparse cone reference classification
Import content-only changes from ab9f98d845b8ff29fedea32ac65561959c564fd4, retaining optional forumpost table handling. check-in: 5220dbc3f3 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 16:43 | Merge commit 'e913b16' into feat/submanifest-reader check-in: a3f11a2baf user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 16:40 | test(manifest): demonstrate sparse parent pin ambiguity check-in: 00784f9384 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 16:40 | fix(sparse): infer partial tree provenance from raw artifacts check-in: d50ca873b3 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 16:34 | test(manifest): expose sparse final-merge conflict check-in: 3975828d27 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 16:32 | test(manifest): pin sparse boundary witness sizes check-in: 554db00b39 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 16:31 | test(manifest): expose sparse canonical partition conflict check-in: 4312d7724d user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 16:27 | style: format transfer flags and storage forwarding methods check-in: 5a53dae34f user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 16:25 | Merge commit '575d5e3' into feat/submanifest-reader check-in: 0cf8b7a09b user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 16:24 | Merge commit '0938087' into feat/sparse-transfer check-in: bed21ff045 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 16:21 | test(conformance): register sparse compaction with explicit remaining gaps check-in: e7477e64f8 user: [email protected] tags: feat/submanifest-reader, main, trunk | |
| 16:20 | Merge commit 'f2c70bd' into feat/submanifest-reader check-in: e2829629bd user: [email protected] tags: feat/submanifest-reader, main, trunk | |