Skip to content
go-libfossil Check-in [d40046f706]
Login

Check-in [d40046f706]

Overview
Comment:Merge pull request #474 from danmestas/fix/deterministic-gimme

fix(sync): ask for phantoms in hash order

Timelines: family | ancestors | descendants | both | main | trunk
Files: files | file ages | folders
SHA3-256: d40046f70618363c068587522d2d5494bd18c83d60a7ec7467fcca37986a8473
User & Date: [email protected] on 2026-10-24 01:04:43.000
Other Links: branch diff | manifest | tags
Context
2026-10-24
03:06
Merge pull request #475 from danmestas/fix/clone-dangling-delta

fix(sync): clone an origin that holds a dangling delta check-in: 77c6eb043e user: [email protected] tags: main, trunk

02:58
fix(sync): clone an origin that holds a dangling delta

An origin that held a delta whose source it never received could not be cloned at all. walkCloneChain found the source unforwardable (a phantom) and asked buildCloneArtifact to send the delta expanded; expanding it failed, the handler errored, and every client stopped at clone sequence 1.

The origin now withholds a chain that ends at a phantom, as it withholds a row outside the clone's cone. Sending the stored delta naming its phantom source, as fossil's send_compressed_file does, is not enough: a fossil client then rejects the whole clone for its unresolved deltas. A later pull fetches the chain once the source arrives. check-in: 67bc700498 user: [email protected] tags: main, trunk

01:44
Merge branch 'main' into feat/horizon-names-seed-refusal check-in: eb2fc856e5 user: [email protected] tags: main, trunk
01:04
Merge pull request #474 from danmestas/fix/deterministic-gimme

fix(sync): ask for phantoms in hash order check-in: d40046f706 user: [email protected] tags: main, trunk

00:57
fix(sync): ask for phantoms in hash order

buildGimmeCards ranged over the phantoms map, so each round's gimme cards came out in Go's randomised map order. When a round has more phantoms than mxPhantomReq allows, that also picked a random subset to ask for. A seeded simulation then could not replay the same wire, and the docs generator's engine.json (which records a pull's cards) changed between runs, failing the generated-docs check about one run in three.

Sort the phantom names before building the cards. Phantom sets are bounded by what the peer announced, so the sort is cheap next to the round trip. check-in: 82dae665dd user: [email protected] tags: main, trunk

2026-10-23
22:10
Merge pull request #473 from danmestas/fix/one-docs-build

build(docs): one deploy build, through scripts/docs-build.sh check-in: 5526734cfd user: [email protected] tags: main, trunk

Changes