Artifact a89b63ad0576e3438810adb8ce612ab37a1de005945a2fcb650f609a27a5fee9:
Issues #27 and #28.
deriveCandidateHints walked each check-in's whole S-card tree and its parent's, for every check-in. Shared subtrees can never pair -- an unchanged node has the same rid on both sides, so pairAgainstParent skips it -- and their blobs were already recorded at introduction, which Pass 2 relies on only as a distinct set (it compacts with dedupSortedRids). So the walk now descends lockstep and prunes any subtree whose S node is the same artifact in both. O(check-ins x tree) becomes O(check-ins x changed paths): sub-manifest loads drop 56 percent on libfossil, to near the distinct-node floor, and the ratio grows with tree size.
The visits that remain were re-inflating. contentOfEntry memoized only .delta frames, so a .zlib sub-manifest re-inflated on every visit -- which is why a pack profile is dominated by flate.Decompress.streamInner rather than by tree-walk arithmetic. PlaintextCache gains memoize_undeltaed, off by default because a linear sweep that reads each artifact once would only duplicate bytes, and opted into by this walk, which revisits.
Output is byte-identical: the wapp store hashes unchanged, and a 189,251 artifact fossil-corpus repack is a fixpoint at 176,143,384 bytes with the same 146,059 re-deltaed.
test 3495/3495, gate, dst 6x1000, e2e 718/718, git-import-e2e, git-import-cli. by dmestas on 2026-08-04 16:05:03.
C pack:\sdiff\spass-1\strees\sagainst\sthe\sprimary\sparent,\sand\scache\swhat\sit\sre-reads\n\nIssues\s#27\sand\s#28.\n\nderiveCandidateHints\swalked\seach\scheck-in's\swhole\sS-card\stree\sand\sits\nparent's,\sfor\severy\scheck-in.\sShared\ssubtrees\scan\snever\spair\s--\san\nunchanged\snode\shas\sthe\ssame\srid\son\sboth\ssides,\sso\spairAgainstParent\sskips\nit\s--\sand\stheir\sblobs\swere\salready\srecorded\sat\sintroduction,\swhich\sPass\s2\nrelies\son\sonly\sas\sa\sdistinct\sset\s(it\scompacts\swith\sdedupSortedRids).\sSo\sthe\nwalk\snow\sdescends\slockstep\sand\sprunes\sany\ssubtree\swhose\sS\snode\sis\sthe\ssame\nartifact\sin\sboth.\sO(check-ins\sx\stree)\sbecomes\sO(check-ins\sx\schanged\spaths):\nsub-manifest\sloads\sdrop\s56\spercent\son\slibfossil,\sto\snear\sthe\sdistinct-node\nfloor,\sand\sthe\sratio\sgrows\swith\stree\ssize.\n\nThe\svisits\sthat\sremain\swere\sre-inflating.\scontentOfEntry\smemoized\sonly\n.delta\sframes,\sso\sa\s.zlib\ssub-manifest\sre-inflated\son\severy\svisit\s--\swhich\nis\swhy\sa\spack\sprofile\sis\sdominated\sby\sflate.Decompress.streamInner\srather\nthan\sby\stree-walk\sarithmetic.\sPlaintextCache\sgains\smemoize_undeltaed,\soff\nby\sdefault\sbecause\sa\slinear\ssweep\sthat\sreads\seach\sartifact\sonce\swould\sonly\nduplicate\sbytes,\sand\sopted\sinto\sby\sthis\swalk,\swhich\srevisits.\n\nOutput\sis\sbyte-identical:\sthe\swapp\sstore\shashes\sunchanged,\sand\sa\s189,251\nartifact\sfossil-corpus\srepack\sis\sa\sfixpoint\sat\s176,143,384\sbytes\swith\sthe\nsame\s146,059\sre-deltaed.\n\ntest\s3495/3495,\sgate,\sdst\s6x1000,\se2e\s718/718,\sgit-import-e2e,\ngit-import-cli.\n D 2026-08-04T16:05:03.157 F .fossil-settings/ignore-glob 1e7a8c10ad58e9784eb011bcc04beb837ad043d54285d340040fae68baf34f86 F .github/workflows/ci.yml 757f4e7c6d29e6358dd98a638ab7804ff3460012c02b95f2d3038e2f234b33ee F LICENSE 702ae7ff835a2a971dae11c5cae039803bf394b77a6d8ec9f18693e449eaaf26 F README.md 67bb1afa5bff033e7ce51ff92e782a8a22a5e64541c219b338147da4b1ad8f47 F build.zig 81c5a04b7dc45670de3ad77072cf5202ae032c77ee40994ec8e88b59d4e44c0f 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 eaef2e2e36f4fab96ec4ba9654a8e7c02317086918f6e32e45fd62897dfd48e9 F docs/rfcs/draft-fossil-sync-protocol-00.txt 153d31ec11ff6636793514df711389883d5dd3111b97d3da295a30308fb400b4 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 42f08b15e0a38f3f85576d65dcc9a9675d422523cdd4e9f681043a2d67d8f0ca F src/artifact_fuzz.zig 98000540f71b1f8fa8a33d2f1da885a6c9c2507108fb1bc95630c3b6b4fab0dc F src/artifact_test.zig 13e3b0371b8d832030a183a5e6409d2d26d33db3ec7a0d940fd949b65b0856d2 F src/bisect.zig 70a0b3561380f216a0cea9ee9419bb1cd1b77d9b6a73786f41992dfd70ceb04a F src/checkout.zig 31f20dc1fe5285575b7bfca7fedbca1dae07e2cb77c9fde6f0f27e72a7e4f80f F src/ci_test.zig 58bfed5b61497fef337c2557dce346de211a98442d7d92f63aaf1385cd7e8078 F src/cli.zig 4555d8127c54bf5d08356ed6a0abab01f53f6eea910151282f16615ad596ece0 F src/cmd/checkout.zig 4dcf7b5db891596d298b99c6e5f15c9dab7aaa84f66dee44c6ff716143548717 F src/cmd/history.zig a69c22be0a669c60ae2294891b7a3acbb61b524f7e20f760b19e8aa893813579 F src/cmd/sync.zig 243b7167c5e202ed06f6db9085e0a2d5082f4c722b1aa6674c382438748fd8a4 F src/cmd/tracking.zig 22c6949b2c30745d3dc65454223c5786a51afe5427476bc3893cea9127472f9e F src/cmd/verify.zig 59e75a6fefe9fdb951bc6bd1e3479b2fa557f80eabb65e8ea73d060d76ce2092 F src/container.zig cef1028531f2763f94248b761c8779a1884e44bb854b8c45617494e3ead40e61 F src/container_test.zig a013652b1ed181161d3ad8fc9d8f052f7c27b61e129662632ceaf8cf189445ec F src/control_paths.zig bc1a94f35675065cee6bf29e9236b443e2a1879ec2f9b65ef0141b1042a77219 F src/crc32.zig 57429c29f4a67a9bfaebad8d5826471f9ff26cfd085c5424bf8e0fccba376bb4 F src/crc32_fuzz.zig 2e6c3425989051ec826b0f1208fa9716808011e71c98ff0a5ae2e38de524caea F src/delta.zig d489bfd517759021e4f006355c1b9f99717ceda2068739eb3a9f84e291a95a89 F src/delta_fuzz.zig 5e5c715722760d6f45c4eaaf9b5d495bf83c59e5869a0e0dd76bb57b007e3b53 F src/delta_test.zig a2774c0cb1799fab9eebf89bb85035e14a11af87f36349462d747b5c4b3b2b22 F src/dst.zig 5296a281d8c65b0ed2ff200c74f8fa3088f3d04bd4bd95badcddb6604ebeb95c F src/e2e.zig 5ffc9bc1e92d1f9d7a095f2d700a4c7564999831d15596d1a558fd0e8b565fb7 F src/extras.zig a105769691ce5fd17f67f037c3d773b6ac546798aa6d49ff1acc064d90b8b177 F src/fuzz_tests.zig 60f1db664e0540a05944c3ddb230125ecfaa971e30aaa18c1001c349e861a083 F src/git_fast_export.zig c4e990ce8299de608757328172e44abc64ee1abb13c3372414bcba1177346c5f F src/git_fast_export_test.zig a23067622e7f2e24938ab9eb692023d1339623672f3841cfcc11987048baec8f F src/git_import.zig 9711139658621beb10c17b8ff6d401da2a88615273fed9fa27d03a65bdc71970 F src/git_import_benchmark.zig 74e021ef760f779f0a6594568c13031ede2ba2d80932852f7da3cb625952599c F src/git_import_benchmark_support.zig 1e9bc27aed47e63f315cb5c8a4fea2f43a4ccd410e4aeb35c4a8a81391588f68 F src/git_import_cli.zig 0c0f24905daa149555230e4bfcc6ca4d73cba55d88fbe948c3d34f4566a2078c F src/git_import_cli_pipe_helper.zig 0cbb3eba0d56a9d4fb26b74f20565532372c4fbace16742d6943d04b13bdcdec F src/git_import_cli_test.zig b0fefa17baa005393c440db21b4dedc8defcbcf9bee11a1298118a40a7a26ab2 F src/git_import_e2e.zig 775f056ce40637801fb00a025e3c2d59cd6be1a26be3f33d567b6698361b7fde F src/git_import_impl.zig 0532e914f98b44ec48ccf11c08cd2fcca3ce56a7ba0a7c75020bb38c135e478b F src/git_import_refs_test.zig a5caef97633703ae14210a5b3a3882d45b1b01e9de41a8919819414f70a98e0f F src/git_import_test.zig 679ded731f77b49044a04e54bbcaee4b0eabb5708d149882091ca32694533b2e F src/git_import_verify.zig f190835efef4dd57a32163e8a9400a2cc62d38e184c7f28858b9912570be70f1 F src/logstore.zig 4a7da6e8c497e8c61d87b4466ce699086be40c64086e8cbb0b040c5776cb0b70 F src/logstore_benchmark.zig dcfcd1d5ca8767e72440521c564f9b21b30d33b81cb2bf5334d1581aee0fc6bb F src/logstore_fuzz.zig 2f5a65a28aad0c2c8d053d941ba872f53e99414135309c82bf0a0b0efdf9e7b5 F src/logstore_test.zig 7100b0594ad8be2f3b2a4c6f5d2a04b9c47e2ec3ede131c15adae47f85da7bcd F src/main.zig ce35a67175a8a0b3d719a1fe8567437e7c1408ba2d063dfb577f3bce296e12fc F src/managed.zig 81ccc2d6321fe3dff91f653305ae4e73bea0b3fae7db2ab2f0cf168d9518d601 F src/merge3.zig 7fc52445688751bb8af30462549650660bcdbadabef54d892b6505d628248d0b F src/merge3_fuzz.zig 83dcd4d9f2f9c208baa15e79ceeea80a0ebf47456a9b045f6d1c1efe3a927582 F src/pack.zig 8c7d97244a35feae48b3ceadcfc818be1b589cfb6adddde1234400a10d2b70e7 F src/packaging_test.zig 87e272e5a1487c035fe2f71463fa68006a04764cb7910f8acbb88805f9d4114f F src/release_assert_test.zig c4f044ebc6abdf46d0d61e4ae870ca1aa3c76487d61e14ddd61f14dfc05f69b0 F src/repocache.zig 32af5b54b011fef358a134273b5e6f43da4282122c05a85ad503a8f7796c6c66 F src/repoimage.zig 7d2dc2f3c145e10e2d9ba6997705fd61a0cc0aedde8e171c253163d1279ccdd5 F src/repository.zig c6d1f000857355ef8686718d8c7b1e94cb52113510a964cb6b48130b3fecd98a F src/repository_test.zig ffcb406f6a80facde45696b7af8ac321b3972babf636eb26b903c63b6c9f6b56 F src/repostate.zig b4fbd1431211df309545f499caa24c92710cc11c42b136a045fc23bba4e85c50 F src/repostate_test.zig 79f3f9ee2a2c625abdcace58f18068a07829a86bb09158c41175bd7e7b802ea3 F src/repoview.zig b5635f6a53b64f0d2533ee0640c39760672ffb53805f9233239c9a67981fe6d0 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 292ee5328e3828ae457aa4d8dfbf08e210153d8f04b3a039b6f35ce2ccc71059 F src/serve.zig 8f98923b21645f79ef2fa209c5c4408ecd2ad8600c0bd791f9d5f7ae0ad86a6f 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 35daf0603aca3093b88498b51feccad8297f85f49a5c9a7a9d61b02e834081f5 F src/sim/faulty_file.zig 720be41b7f9bd64b9fd2586201e2f62d79c6d60452196eedeb9708b170093424 F src/sim/gen.zig 8189752613ae0c87a34d3ea9ec612db7f2fd8a785b72264957563db478019eb3 F src/sim/net.zig 8fb057012ce0a33f67c928cd696bc2761fea8ba4012b2daa33871b2ba5dfe772 F src/sim/oracle.zig bc9e272bb3332b7b715fbcc254b63583aa294b769d423f4be48593152717dfb2 F src/sim/shun_sweep.zig 8b7b2a106a9eaaeb4d041ec0faa061d51a8c2a866f8fcae5d245f814085b063d F src/sim/storage_sweep.zig 1f1334ff9a66dd42820a5e378c1f67ea2529adb62ba79add06602323cac01ca6 F src/sim/sync_gen.zig 238d46942915b5c0e989dfc738b5927b5228468ea123e6f17b6fb593aa5cbf6e F src/sim/sync_sweep.zig feeab7fa3123f8a9a1e6a43b6feee0e4d68479a6a19eb9374d57edbe9c600d4b F src/smoke.zig f92f9c0bca43eed62fde54e24b72cbd7b9a1f3071f5530d582fa0010cb4c20df F src/storage.zig 512205eb629d5af8d50ad336f1ef49f53b455abd52ee2f9b56d20893cafad39f F src/storage_benchmark.zig 9bc22dc2b683bd3924756979f0c2efa075429540ed23a80fec57327bb77b4890 F src/storestat.zig 3ba170b2f7f775474029e183908477169278841e6071ae085635213b70fb8400 F src/submanifest_benchmark.zig f2dfff89ef97406251120eeb2c351e6e31526fb8c15ca94369f0806f66980204 F src/submanifest_editor.zig 4e961b3c4ea46cd4139ef04c0073738d24554c31fff7f8fd5c9b34c0e105d281 F src/submanifest_editor_test.zig aa2ba7de6b68cdf83e4f16d1cd8494cfb91631d45a61acbebe3208fbe86951d8 F src/submanifest_partition.zig 1d06059185986c977d20433ea8318f0e48e7f58a59a7432fb5e93de75a64c932 F src/sync.zig 4136747feff3f85bc00753e387cf23393c7c9d3ebff2a1cfab72e04fe62f19af 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 1e943af3ecff437df69508d4f2b9b77dd340b864eefd1ec8105a638e6b82af89 F src/tidy.zig 59fba497b6a9a39314fc24a08334321ecaad1c026cc0a7d35c67a1e2066458a8 F src/transport.zig 576549f588124d55efb870df97d2578973027e34cd6a6342ecf669fbe7ce1aed F src/transport_fuzz.zig 43c310c51a6502fb2e049e6f43dfa151b1a632e6c885554ec6edce4ec62a8a48 F src/undo.zig c3ef95e4c6affeb893e60922506b760f483a6640fe3fd5c63bf86c6d20cf2675 F src/update.zig 3c1b0a42d56778a82502093b5974077442beaa6cedb014cbc053fff4d3ffd0ed F src/update_test.zig 5185a994e37dc3d3d73e37facdc5d85548f14a54e8ca8e32a26216d2a8437818 F src/warmread_benchmark.zig 290887ab34f7777effcd4062c000456b1fcf8a59f84617a96a740d15a0245776 P c075a01cfae75a91c2e4aa234763d410eee1b0db0d199b7c20e175f858d63d1d R ae98dac570ee8242b875d966319c2ddf U dmestas Z 98b67aad4a6b1b22c735a4562b4a1ed8