Skip to content
go-libfossil Artifact [12ba95e614]
Login

Artifact [12ba95e614]

Artifact 12ba95e614273a807062c7d91c6db7415e4acdf86c8926cc7539b4bbad443012:

Tag referencing [12ba95e614] - Edit [b6b6c40218]: Add tag "v0.4.2" with note "v0.4.2: defer manifest crosslink until referenced blobs arrive

Repo.HandleSync (which gained crosslink semantics in v0.4.1) crosslinked each manifest as its blob arrived, even when the manifest referenced blobs that had not yet been received in the same session. A receiver that Pulled during a multi-blob delivery saw the manifest in event/leaf/mlink while one or more file blobs were still in flight, and a downstream checkout walking those mlinks hit "writeFileFromUUID: blob not found".

Fix: HandleSync now defers manifest.Crosslink until all blobs the manifest references (F-card files, B-card baseline for delta manifests) are stored locally. The deferred candidate set is sweep-reordered by rid so per-defer slog output is deterministic across SQLite query plans. Rollup logs the deferred rids and missing-blob list so a permanently stuck deferral is observable. P-cards (parent manifest references) are deliberately not deferral-gated — that's the existing event-resolution path.

Boundary asserts: blobPresent now panics on nil repo or empty uuid (Tiger Style: programmer errors trip at the boundary).

Surfaced by agent-infra's hub-and-leaf scaling trial under 16-way concurrent fork+merge cycles (agent-infra trial #10 finding #12).

See PR #5.". by [email protected] on 2026-04-26 06:52:18.


D 2026-04-26T06:52:18
T +sym-v0.4.2 b6b6c40218b7c1b90424eb34eba9f86db3bab120fb6162e0ea50c0fa630dc0b7 v0.4.2:\sdefer\smanifest\scrosslink\suntil\sreferenced\sblobs\sarrive\n\nRepo.HandleSync\s(which\sgained\scrosslink\ssemantics\sin\sv0.4.1)\scrosslinked\neach\smanifest\sas\sits\sblob\sarrived,\seven\swhen\sthe\smanifest\sreferenced\nblobs\sthat\shad\snot\syet\sbeen\sreceived\sin\sthe\ssame\ssession.\sA\sreceiver\nthat\sPulled\sduring\sa\smulti-blob\sdelivery\ssaw\sthe\smanifest\sin\nevent/leaf/mlink\swhile\sone\sor\smore\sfile\sblobs\swere\sstill\sin\sflight,\nand\sa\sdownstream\scheckout\swalking\sthose\smlinks\shit\n"writeFileFromUUID:\sblob\snot\sfound".\n\nFix:\sHandleSync\snow\sdefers\smanifest.Crosslink\suntil\sall\sblobs\sthe\nmanifest\sreferences\s(F-card\sfiles,\sB-card\sbaseline\sfor\sdelta\smanifests)\nare\sstored\slocally.\sThe\sdeferred\scandidate\sset\sis\ssweep-reordered\sby\nrid\sso\sper-defer\sslog\soutput\sis\sdeterministic\sacross\sSQLite\squery\nplans.\sRollup\slogs\sthe\sdeferred\srids\sand\smissing-blob\slist\sso\sa\npermanently\sstuck\sdeferral\sis\sobservable.\sP-cards\s(parent\smanifest\nreferences)\sare\sdeliberately\snot\sdeferral-gated\s—\sthat's\sthe\sexisting\nevent-resolution\spath.\n\nBoundary\sasserts:\sblobPresent\snow\spanics\son\snil\srepo\sor\sempty\suuid\n(Tiger\sStyle:\sprogrammer\serrors\strip\sat\sthe\sboundary).\n\nSurfaced\sby\sagent-infra's\shub-and-leaf\sscaling\strial\sunder\s16-way\nconcurrent\sfork+merge\scycles\s(agent-infra\strial\s#10\sfinding\s#12).\n\nSee\sPR\s#5.
U [email protected]
Z aeb7beafbe1d8a3c13457c402cfc575a