Artifact 12ba95e614273a807062c7d91c6db7415e4acdf86c8926cc7539b4bbad443012:
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