Artifact 8446adcd981bad75da616c2ede5b5299bfb7d236f449e0cf95865ef0b1f37150:
An absent S reference now phantomizes like any other missing reference, its dependent is deferred and retried when the artifact arrives, and the sweep excludes sub-manifests so it still terminates. Phantoms survive a restart through a rebuild-on-open invariant resting on a durable seen-submanifest setting rather than on records the log never wrote. The transfer gate decides by artifact shape on all three send paths, so a leaf is refused wherever a tree manifest is, and the memo returns its own copy rather than a view into pages the store may free.
The gate remembers what it withheld from a peer, which is what lets an exchange with a peer that refuses sub-manifests terminate at all. That record is now cleared only when the peer's announced version actually changes: a peer that re-announces the same version in every reply was clearing it every round, so the same artifacts were offered and refused forever.
One requirement is not implemented: a server whose setting is off must send the avoid-submanifests pragma, and emitting it changes the card sequence every clone-reply test walks. That is a protocol-shape change worth its own review rather than a rider here; the pragma is parsed and latched on receipt already. by dmestas on 2026-07-28 04:54:13.
C Sub-manifest:\ssync\sand\srepository\sstate\sfor\strees\n\nAn\sabsent\sS\sreference\snow\sphantomizes\slike\sany\sother\smissing\sreference,\sits\ndependent\sis\sdeferred\sand\sretried\swhen\sthe\sartifact\sarrives,\sand\sthe\ssweep\nexcludes\ssub-manifests\sso\sit\sstill\sterminates.\sPhantoms\ssurvive\sa\srestart\nthrough\sa\srebuild-on-open\sinvariant\sresting\son\sa\sdurable\sseen-submanifest\nsetting\srather\sthan\son\srecords\sthe\slog\snever\swrote.\sThe\stransfer\sgate\sdecides\nby\sartifact\sshape\son\sall\sthree\ssend\spaths,\sso\sa\sleaf\sis\srefused\swherever\sa\stree\nmanifest\sis,\sand\sthe\smemo\sreturns\sits\sown\scopy\srather\sthan\sa\sview\sinto\spages\nthe\sstore\smay\sfree.\n\nThe\sgate\sremembers\swhat\sit\swithheld\sfrom\sa\speer,\swhich\sis\swhat\slets\san\sexchange\nwith\sa\speer\sthat\srefuses\ssub-manifests\sterminate\sat\sall.\sThat\srecord\sis\snow\ncleared\sonly\swhen\sthe\speer's\sannounced\sversion\sactually\schanges:\sa\speer\sthat\nre-announces\sthe\ssame\sversion\sin\severy\sreply\swas\sclearing\sit\severy\sround,\sso\nthe\ssame\sartifacts\swere\soffered\sand\srefused\sforever.\n\nOne\srequirement\sis\snot\simplemented:\sa\sserver\swhose\ssetting\sis\soff\smust\ssend\sthe\navoid-submanifests\spragma,\sand\semitting\sit\schanges\sthe\scard\ssequence\severy\nclone-reply\stest\swalks.\sThat\sis\sa\sprotocol-shape\schange\sworth\sits\sown\sreview\nrather\sthan\sa\srider\shere;\sthe\spragma\sis\sparsed\sand\slatched\son\sreceipt\salready. D 2026-07-28T04:54:13.565 F .fossil-settings/ignore-glob b96efee96328bf8544239c0767abcaabdb904bbcac2d0f8e21ea84a8e7b5963f F .github/workflows/ci.yml 7b817b4a7c230e3f351a112a83c0cad98db79add99264a07549cab8d499120f9 F LICENSE 702ae7ff835a2a971dae11c5cae039803bf394b77a6d8ec9f18693e449eaaf26 F README.md 67bb1afa5bff033e7ce51ff92e782a8a22a5e64541c219b338147da4b1ad8f47 F build.zig 11e29810821087667c781c5d6510084a8261628e1d864ac8f7c71fc95af5c884 F build.zig.zon dd3992bfc8da12e09a018c4697e38ddf79d07e225405af448ecca1ebefc3ea0c F docs/RELEASE-NOTES-0.1.0.md 5ed8b4d35ee23b7990261f8af34f5fa3cc629baf63b0059d9f7bb2d2c48dc802 F docs/RELEASE-NOTES-0.1.1.md 59eea8c487dc1e9190c44c371656e430cd5621031a71c502ecbae96802712857 F docs/RELEASE-NOTES-0.1.2.md 7c968ab247ad1194f9163e625a37452ae72bdc23f3e66e8ea26b39f6e0a52914 F docs/RELEASE-NOTES-0.1.3.md c8f703b8717040f96a9b77ad132bbe309ba4368ead5362739e4d5ef23f2d3286 F docs/rfcs/draft-fossil-artifact-format-00.txt a6d542a5effeb41d0ea1e916058ccdc0a5819787f167ef1ebad7814f5680e7ad F docs/rfcs/draft-fossil-delta-format-00.txt d8025d6d75322e33887c3334a4b9cc729960028b3c994ed01e5a474e4b388fd2 F docs/rfcs/draft-fossil-repo-state-00.txt b35480166caaf5d2c220086140a1d47034e9b4967689be8f4cd8779bbdbbc3da F docs/rfcs/draft-fossil-submanifests-00.txt 718a9e97fa0983fe1561350cbcc7da733023cb2b249de92147552714bf376f3c F docs/rfcs/draft-fossil-sync-protocol-00.txt aa55791464a54ef4b651df8780ba5c46e95c723c7997d09a5b727fef658f920a F scripts/mirror-export.sh cc1130129e3c320cb9c1c5a05f505e45ece23d6bb3e0228da8e7ffe97bd5612b x F scripts/soak.README 3a2f028e4f87a395b2b779ac63260fcb68a7a9c7ffc9fea5b065d5bc065c4719 F scripts/soak.sh e184de2f7396ae88c1266d565092282dc9aff151fab8f971840d867562f7d1be x F src/annotate.zig 0a6b6728099e63c84681d1e5228ebb45fafb55d65df1720358247fd6e6532c63 F src/artifact.zig cef84f327c066b31d869f9da16ffcba97d0013c3267533f66a85d47aa267614e F src/artifact_fuzz.zig 98000540f71b1f8fa8a33d2f1da885a6c9c2507108fb1bc95630c3b6b4fab0dc F src/artifact_test.zig 13e3b0371b8d832030a183a5e6409d2d26d33db3ec7a0d940fd949b65b0856d2 F src/bisect.zig 7bfc45d3e0e339017826941463cc4e9118892d2898fbcd319e6e6ca85c4d3301 F src/checkout.zig 31f20dc1fe5285575b7bfca7fedbca1dae07e2cb77c9fde6f0f27e72a7e4f80f F src/ci_test.zig a75b83a94e7d28d11f9c73c0dfae450000e31ca9a7b7563f8120686112047c84 F src/cli.zig 210e02fc9f73fd86c853a48727b99891af3a46617dd0e900b0b54eb7c5380eea F src/cmd/checkout.zig c176d8cfc2831d26f3a133625cbfa45f977182a658db9387c7d80cfada3d8021 F src/cmd/history.zig fd3adc3448c7a8486a8610ff7a47f2ca89620e897590155f0bc1b83bfd64b2a1 F src/cmd/sync.zig ca2c021f3da17887bbcfae9fb111f42d45ff8a62937ef03b1587c39223fab4c0 F src/cmd/tracking.zig 46b079b974838f92b9508a647c0a89e3747fec09dab072a0bae2c0d0639c4831 F src/container.zig cef1028531f2763f94248b761c8779a1884e44bb854b8c45617494e3ead40e61 F src/container_test.zig a013652b1ed181161d3ad8fc9d8f052f7c27b61e129662632ceaf8cf189445ec F src/delta.zig e8f3a6297d47549aea146222732ccf514c39688414f0a74ba396ac91066686f3 F src/delta_fuzz.zig 5e5c715722760d6f45c4eaaf9b5d495bf83c59e5869a0e0dd76bb57b007e3b53 F src/delta_test.zig b18d97e117dce8fbcc05bff6f6954effdb946bab6d36337efbe5ef64d10646a0 F src/dst.zig 077f19221915ff99026216b96de927fedb499ab265bfe51d5f7f5364e8de32e3 F src/e2e.zig 623b686b41e081cf51294d1c7c3cdc9f49b821f945ebf1f928922fd7d0dacb1c F src/extras.zig d7b6ec8caa95993ce01c4ed9ddd0cda327db823bdbde4e27dff4966591be25f5 F src/fuzz_tests.zig 3d55d3b16d26b7960bda7625d0a38b07acd1ba2c1d9c4e1fe11375224e8d7106 F src/logstore.zig b85e70ea6dc90af6ab86af1f1d279a6717584ea36cff8b0835edb23cbe5b8b0c F src/logstore_benchmark.zig 1ce3cfb1eec19cdba9345ec432d01aa2e0f56dfb0ecae7c578638a3d60d9cfa8 F src/logstore_fuzz.zig fcdbb70b468fcabff6edbfd8a526832acc5ba12a39cca83b5fdffd5716817e8d F src/logstore_test.zig a9baaee2cf009c988832d3632f52a1eeabf36afd52c891315f7673ce28442533 F src/main.zig 8af85f4bc2d83732aa4499eca8ba50ec3629544559b42805217a44ce6374d2e9 F src/managed.zig 81ccc2d6321fe3dff91f653305ae4e73bea0b3fae7db2ab2f0cf168d9518d601 F src/merge3.zig 7fc52445688751bb8af30462549650660bcdbadabef54d892b6505d628248d0b F src/merge3_fuzz.zig 83dcd4d9f2f9c208baa15e79ceeea80a0ebf47456a9b045f6d1c1efe3a927582 F src/pack.zig 0ea96cb540b3f43f6ff8ce95a3044ce939879bc6f9bf0eb82b26aab4089009c7 F src/packaging_test.zig b802ada92f1ade1b62e3d1cfc36549c9b8d05be5430bd33d440bc93d7cd3600f F src/repocache.zig aae232a6b1b86e27c5242c0ee17ce9f2544299d99cf4936d8c2c9000e3166884 F src/repoimage.zig 7d2dc2f3c145e10e2d9ba6997705fd61a0cc0aedde8e171c253163d1279ccdd5 F src/repository.zig e40003846ce09ee024d16928bb2a8d7274ec77510b97f5415daa8c82c95452bd F src/repository_test.zig b2b3041efc97f8a949afcb7c771f326cb27a331c0a9d8e1169de4b03d1727cbd F src/repostate.zig 83aef2e71712a458d1a0fcd0898c8b42a99c70bf3288c02742a76338f0f3927c F src/repostate_test.zig e5699688b0f43b7480ed5d89f11585c2f61114bbe3ec9dae5061741f37b37e7a F src/repoview.zig b6e0b35b133b6acfae8dde8fb4ab45a886e50e43ebb668030ce941dc205dd2c5 F src/rfc_vectors/artifact_a1_1_sha1_manifest.txt 82d8fc78b3fbf85efe80cb05e79db40c910bf0551e55b728c6f9c2ca7a42ddb6 F src/rfc_vectors/artifact_a1_2_sha3_technote.txt 832e850f83aab2e2a754aa97591109f7f05fb41e4126c7e71c88a59d6d17e55d F src/rfc_vectors/artifact_a3_rcard_manifest.txt 47e412ef211f095e93275fadf527909e581eef42357d8437fc7e299bfc3e62a7 F src/rfc_vectors/submanifest_a2_1_leaf.txt aa9d404c14fe4dadd2ab398961fb0dfe650a877c061f650d8233a5888e920acf F src/rfc_vectors/submanifest_a2_2_leaf.txt a50a722b465ed67b42ee0fbe61e4a19d6b1d22940ba5740e99e450921e3f52ea F src/rfc_vectors/submanifest_a3_tree_manifest.txt 95fba39cbaba76fccb15571516659cea6a0e8a60123c3e7bda1397649d87c509 F src/rfc_vectors/submanifest_a4_1_leaf.txt b8e53d0c46cb57b616cc0ed6de5ce2453715be6157b73d247bcd5de8a6510aaa F src/rfc_vectors/submanifest_a4_2_leaf.txt cff23e5ba71569397c1d816afa2dd0bfffc42339e402df36b63623846bd5fcbe F src/rfc_vectors/submanifest_a4_3_leaf.txt 9604c3f9774f7472d7bff44d5965f30250358a3e7a18046eeaf5f9d83bd5cdc6 F src/rfc_vectors/submanifest_a4_tree_manifest.txt 02dad8d4451ecf930c0c8637cf66351579aa746aebf0cf10f249b2a6dea37caa F src/rfc_vectors/submanifest_a5_delta_manifest.txt c74e37f650677523f7b6c2b4f094f766c4427a8ea180768ad75fa2de6bd14902 F src/rfc_vectors/submanifest_a5_encoding_leaf_1.txt e2899273b6a258ee18e053a79903d02469a275e2c80279c3657c7b803e2af6c0 F src/rfc_vectors/submanifest_a5_encoding_leaf_2.txt d7edb65681faaa4fd4f3541f04370421b057bf299098b781c7ec50d609869082 F src/rfc_vectors/submanifest_a5_encoding_leaf_3.txt c634332663f1cc0298aae6b61c799214a522877102cd6acdfe633f29fd79eeaf F src/rfc_vectors/submanifest_a5_encoding_manifest.txt deb0cb8b56fddfc4eebbab0f928cbdb19e64a6ba568064d5b43663dc1ef7263f F src/rfc_vectors/submanifest_a5_merge_leaf_1.txt 4bf4476e3aa41a1e3d26c85173c18fcd19f61871d4fc31215e523d7502078cc8 F src/rfc_vectors/submanifest_a5_merge_leaf_2.txt 6f3c993caa208b6fd44332d241676f9aa6a8c29dc7e28f287d5cdc088005a842 F src/rfc_vectors/submanifest_a5_merge_manifest.txt cef55b9b325fbc8abd59a044acafa57603c1b11a605e7fbba02d511a6da7a806 F src/rfc_vectors/submanifest_a5_three_level_interior_1.txt d42946de7b59647235f2166d964e9e5878bb1b3aba796b5e9c5e9dc719784e23 F src/rfc_vectors/submanifest_a5_three_level_interior_2.txt c1cc48fa9a3fbc34da7614632137890b4b09b33e750abc75514836c533e5f42e F src/rfc_vectors/submanifest_a5_three_level_manifest.txt c136ef62f5f13c18d06564649da6022d9fe25cde5be15dd1ad10b04015096424 F src/rfc_vectors/sync_a1_round1_reply.txt 638813029b10f81303b88859279afb17095d7c779c993f4267870909acabbeb9 F src/rfc_vectors/sync_a1_round2_file_cards.txt 4fa397741f7521cc4181d5d6b04dc143187f57602384eaa688552115ecda27c2 F src/rfc_vectors/sync_a1_round2_reply.txt af956808190c79b37a384041690c36b78845b471d6c6c01d1cced6e3ee92e6b1 F src/rfc_vectors/sync_a2_reply.txt aa130a127cde210f793c7842960083c765e0ffc7b673374fabc8f0edfe03d763 F src/root.zig 2714f8b55507dadabfb94566f2f33d12198df1ccc45ac133ebba9881f9c476dc F src/serve.zig 58af81fdc580627839a84eacec7971459a1bd9accbdbe5434f504836f02981de F src/serve_benchmark.zig ff55c6148e961c9374ad60a756d9d997fadbc854d2a79d625235b580aefb8656 F src/serve_fuzz.zig 3c39ea768ffa37599e2cc00c588f053870766ab91500aceb0d844a4322174687 F src/sim/assembly_sweep.zig 65016d6ae15579b7e4c7db91ea4659b21dc67533b3807ad30619a3b517ef4ed1 F src/sim/checkout_sweep.zig 80bb6fef67c88a29a2b6bdc372996c9f2c4ad65db289cddebc7a427b42ee5d39 F src/sim/faulty_dir.zig 29f0efc3338c14eb87085cd87591d01d78ae1feac8b3f6ab7f5a2533ac01a7db F src/sim/faulty_file.zig 720be41b7f9bd64b9fd2586201e2f62d79c6d60452196eedeb9708b170093424 F src/sim/gen.zig a05fa9fa17e4b585c662c6e1d3855e5e46327db9c7490bc834382b64e742c557 F src/sim/net.zig 8fb057012ce0a33f67c928cd696bc2761fea8ba4012b2daa33871b2ba5dfe772 F src/sim/oracle.zig bc9e272bb3332b7b715fbcc254b63583aa294b769d423f4be48593152717dfb2 F src/sim/storage_sweep.zig 78e8a877e22afe537d29d289273d739a18f220497584b925492ed57331af27d9 F src/sim/sync_gen.zig 238d46942915b5c0e989dfc738b5927b5228468ea123e6f17b6fb593aa5cbf6e F src/sim/sync_sweep.zig feeab7fa3123f8a9a1e6a43b6feee0e4d68479a6a19eb9374d57edbe9c600d4b F src/smoke.zig 71968cdaeed39abca39b4795c95f590f9afea80a32e95a07d4209495aeb70ea6 F src/storage.zig 512205eb629d5af8d50ad336f1ef49f53b455abd52ee2f9b56d20893cafad39f F src/storage_benchmark.zig 123ee72db0b7ba660a11594b54b4e11410b3cb1df4ca4e8c3e29cfcb7ceb48b3 F src/storestat.zig 30bd29d3638c4dcda9766f94a1a202cc1df181add943d9afb9ef225ccc64b4f9 F src/sync.zig 360e4cc25d156fc6db4daf386fd37b5081ee66b8a196cc0b4b601b1413527a95 F src/sync_benchmark.zig f0d99a1f8273a1675a2f482a4977bbb12fc07a432447905c991bd359db73acdf F src/sync_driver.zig 722ed498ea6b76900661a085d4257e51f6416d43ac1185e8ac15140de265f67e F src/sync_driver_test.zig 20eb1827932874422a75d06cfe503680cf17d99152dff1f852989dc22ae923c5 F src/sync_fuzz.zig 0ab9b7195535468db561cdcb405b7bf17536e2c6cb77a115ab1fe2badb001194 F src/sync_test.zig 7cd9581e8fedc0d12389d0c82061e2f505d498bc8fe4e90a33601c4bcc725347 F src/tidy.zig c43465f253553b13e4b68f1c4e5eee3ec7638e2cd7ed8b4ce8dab4445bfb89d3 F src/transport.zig 36c4cbabaf10b30dbc20c6b8a30df94394a7e0a65b27613f0ace2f49ec1eaa79 F src/transport_fuzz.zig 43c310c51a6502fb2e049e6f43dfa151b1a632e6c885554ec6edce4ec62a8a48 F src/undo.zig 7fe1eacc9a3fdb2bb254014b08677989ae2991a0b3d3d87425b67c565c01be89 F src/update.zig 1723753c0b31f113e6b4db3ab9267df838bf5aaef0b7f0451fa6a1fd5ae3d80d F src/update_test.zig c92b790daa737a1ba0b983c613de734d17028399fc303a8fd69298c3bc5325a1 F src/warmread_benchmark.zig 9421986d49deff3f720e491fb6d1c7162dc9322f4e67dd14198820c3992dc02a P 72bba34ada99dc6ab54b53cc307a4c3d6eda828392d0b905793770b181ab1496 R 8bd78acdeab44d7d6f6af239c57621f4 U dmestas Z 1bc1b1983ac736bc629df0c58b6d5d54