C verify:\sthe\sexplicit\sfsck\sverb\n\nSlice\s2\swill\sextend\sheader-only\sscanning\sto\sopenReadOnly\sand\sdelete\nverified_on_open,\swhich\sremoves\seager\scorruption\sdetection\sentirely.\sThis\nis\sthe\son-demand\sreplacement\sthat\shas\sto\sexist\sfirst\s--\sthe\ssame\ssplit\sgit\nmakes\sbetween\snormal\soperation\sand\sgit\sfsck.\n\nTwo\spasses\sover\sthe\sstore.\sFrameVerifier\swalks\severy\sframe\sunder\n.verify_payloads,\swhich\sis\sthe\smode\sthe\sopen\spaths\sare\sshedding;\sit\sis\nbuilt\son\sStorageFile\srather\sthan\san\sopened\sLogStore,\sso\sit\sstill\sworks\son\na\sstore\sthat\swill\snot\sopen\s--\sthe\scase\san\sfsck\sexists\sfor.\sThen\nopenForVerify\sopens\s.headers_only\sand\sreconstructs\seach\sartifact,\swhich\ncatches\sa\sframe\swhose\schecksum\sis\shonest\sabout\sbytes\sthat\sare\snot\swhat\ntheir\sname\sclaims.\n\nBoth\spasses\sreport\srather\sthan\sabort.\sA\spayload\sCRC\sfault\scarries\sa\nheader-proven\sframe_len,\sso\sthe\swalk\ssteps\sover\sit\sand\sinventories\sthe\nrest;\sonly\sa\sheader-window\sfault,\swhose\slength\scannot\sbe\strusted,\sstops\nthe\swalk.\sA\storn\stail\sis\snot\sa\sfault\s--\sopen\srecovers\sit\ssilently,\sand\sit\nmeans\san\sinterrupted\swrite,\snot\srot.\sAn\sunreadable\spayload\sis\sa\sfinding\ntoo,\snot\sthe\send\sof\sthe\sinventory.\n\nExit\scodes\sstay\s0/1/2\sas\severy\sother\sverb\sdocuments\sthem;\s2\sremains\susage\nerror\sand\snever\scorruption.\sFindings\sstream\sto\sstderr\sas\sthey\sare\sfound,\nthe\sclean\ssummary\sgoes\sto\sstdout,\sand\son\sany\sfault\sstdout\sis\sempty.\n\nScope\sstops\sat\scontent\sartifacts.\sA\smanifest\swhose\sbytes\shash\scorrectly\sis\nbyte-identical\sto\swhat\scommit\swrote\sand\swhat\ssync\svalidated\son\singest,\sso\nre-parsing\sit\swould\scatch\sa\szit\sbug\srather\sthan\sstorage\srot.\sThe\shelp\stext\nsays\sso.\n\nopenForVerify\sis\sdeliberately\snot\sopenReadOnly:\sopenReadOnly\ssets\nverified_on_open,\swhich\smakes\sreadFrameAt\sskip\sthe\sper-read\swhole-frame\nCRC,\sand\sit\sscans\s.verify_payloads,\sso\son\sexactly\sthe\sdamaged\sstore\san\noperator\sis\sfsck-ing\sit\saborts\sbefore\spass\s2\sruns.\sSlice\s2\smakes\sthe\stwo\nidentical\sand\sopenForVerify\sis\sdeleted\sin\sthat\scommit;\sits\sdoc\scomment\nsays\sso.\n\nThe\schunk\sbuffer\sin\sscanOneFrame's\spayload\sloop\swidens\sfrom\s4\sKiB\sto\n64\sKiB,\smatching\scloneInto's\sexisting\sprecedent.\sPost-Slice-2\sthat\sloop\nruns\sonly\sunder\sverify,\swhere\san\soperator's\swall-clock\sis\swhat\sit\scosts.\n\nzit\sverify\sis\snot\san\sRFC-mandated\sverb.\srepo-state\s7.3\sblesses\sfull\nrebuild\sas\sa\sfallback,\sbut\sthe\sverb's\sshape\sis\sa\slocal\sdesign\sdecision,\nnot\sa\sprotocol\srequirement.\n\nVerified:\sfmt\sclean,\stest\s2327/2327,\sgate\s19/19,\se2e\s671/671.\sFour\nmutants,\sall\scompiling,\seach\sred\sfor\sits\sown\ssemantic\sreason:\spointing\sthe\nframe\spass\sat\s.headers_only,\sstubbing\sartifact.verify\sto\strue,\sdropping\nthe\sunreadable-store\stally,\sand\sreverting\sthe\spayload\sread\sto\sa\shard\nerror.\sExit\sarms\ssmoke-checked\sagainst\sthe\sbuilt\sbinary. D 2026-07-31T20:52:45.819 F .fossil-settings/ignore-glob 1e7a8c10ad58e9784eb011bcc04beb837ad043d54285d340040fae68baf34f86 F .github/workflows/ci.yml 7b817b4a7c230e3f351a112a83c0cad98db79add99264a07549cab8d499120f9 F LICENSE 702ae7ff835a2a971dae11c5cae039803bf394b77a6d8ec9f18693e449eaaf26 F README.md 67bb1afa5bff033e7ce51ff92e782a8a22a5e64541c219b338147da4b1ad8f47 F build.zig 0035d4ce262481ee7d4ca8acee81611900afc6cd24436e91c64bb39f7cf427e6 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-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 c630afd9fbbcfaccd7b823105b4d05db1dc85b6af03080a6d58635ed064672ca F src/artifact_fuzz.zig c28bf210176eec4ca7232f256187f00d273c3ecafe7ed2271eaca3bd15b748ba F src/artifact_test.zig da999476660f7e6e1f50ed9da5c30f1c83d6b358e2cfcd265c6932959c85bdd1 F src/bisect.zig 70a0b3561380f216a0cea9ee9419bb1cd1b77d9b6a73786f41992dfd70ceb04a F src/checkout.zig 31f20dc1fe5285575b7bfca7fedbca1dae07e2cb77c9fde6f0f27e72a7e4f80f F src/ci_test.zig d34f7b08b15977d63957e14c6f93260161db5f4374393169b4d7f44be77dba94 F src/cli.zig 64be4aba534cb7787a244d15dd84794483ac2807e607adeae7120ab95b2cb491 F src/cmd/checkout.zig b617e30e50addaffe550b17a701516a912b8f591aabb7431a602ea0532f57e15 F src/cmd/history.zig a69c22be0a669c60ae2294891b7a3acbb61b524f7e20f760b19e8aa893813579 F src/cmd/sync.zig 586f678b978cc227f6296d8e3c3ec64441441a56ffc714f33ab0db733a965f12 F src/cmd/tracking.zig 46b079b974838f92b9508a647c0a89e3747fec09dab072a0bae2c0d0639c4831 F src/cmd/verify.zig 58162493d5b8a5e9c546b4bdd42402368c802a52740a255c13ae0df518ea2ae2 F src/container.zig cef1028531f2763f94248b761c8779a1884e44bb854b8c45617494e3ead40e61 F src/container_test.zig a013652b1ed181161d3ad8fc9d8f052f7c27b61e129662632ceaf8cf189445ec F src/crc32.zig 57429c29f4a67a9bfaebad8d5826471f9ff26cfd085c5424bf8e0fccba376bb4 F src/crc32_fuzz.zig 2e6c3425989051ec826b0f1208fa9716808011e71c98ff0a5ae2e38de524caea F src/delta.zig e8f3a6297d47549aea146222732ccf514c39688414f0a74ba396ac91066686f3 F src/delta_fuzz.zig 5e5c715722760d6f45c4eaaf9b5d495bf83c59e5869a0e0dd76bb57b007e3b53 F src/delta_test.zig b18d97e117dce8fbcc05bff6f6954effdb946bab6d36337efbe5ef64d10646a0 F src/dst.zig e7ef6c8ba396da771a145224e22dfc749250cee73ded1188bfe00eb3c27eca92 F src/e2e.zig fd747b94cfabcc3293fa1ac2644b96e29ddd9d8c00ced6d8c5857426a48a65f1 F src/extras.zig d7b6ec8caa95993ce01c4ed9ddd0cda327db823bdbde4e27dff4966591be25f5 F src/fuzz_tests.zig a324613efc60b71f7712a54c06ac074f98abbb95a106f5ea4415cb7f336923e4 F src/logstore.zig ab733544a9f1716b2d4d64db5761d59ca7b39a266587bf310f266b462ececc00 F src/logstore_benchmark.zig 6ceb42809ed074d15af7fd6d044104b341794a53ab0c08c5ea93af3af671cdaf F src/logstore_fuzz.zig 2f5a65a28aad0c2c8d053d941ba872f53e99414135309c82bf0a0b0efdf9e7b5 F src/logstore_test.zig 28cd8aa64db690d5a6a49afd3188485a75983e134f8c5b1868f860cbe96b3d99 F src/main.zig f2e022e380b385f7ef7012ea36d5b1d7fdbfe1a041858382e61554ea55052591 F src/managed.zig 81ccc2d6321fe3dff91f653305ae4e73bea0b3fae7db2ab2f0cf168d9518d601 F src/merge3.zig 7fc52445688751bb8af30462549650660bcdbadabef54d892b6505d628248d0b F src/merge3_fuzz.zig 83dcd4d9f2f9c208baa15e79ceeea80a0ebf47456a9b045f6d1c1efe3a927582 F src/pack.zig 5c2aaf66d0f16ac7ec313b971957a6f89ce9578f8cb277b839bdea8bc33a9993 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 bbf2d73a3dc76a23d25811f7d4c3ba5c7a92245808bf7aeac606d87c2e792f1d F src/repository_test.zig 7ecff1b41d376285f4a9ea879bf53d6e9557efc77e52203ada40df9eabf35290 F src/repostate.zig 68432b54ad3db2a2723d13786073340edc47e3901c49f29bbc6bce6848e2cd57 F src/repostate_test.zig e5699688b0f43b7480ed5d89f11585c2f61114bbe3ec9dae5061741f37b37e7a F src/repoview.zig b3eb611496da8f970fe1be46499474c5922e0161106483c3d360b3e2ad9a696d 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/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 b41df35dd82536fd998b3c220589265a8cc5498449b3f27a8fe83e3e27f33ac0 F src/serve.zig 58af81fdc580627839a84eacec7971459a1bd9accbdbe5434f504836f02981de F src/serve_benchmark.zig ff55c6148e961c9374ad60a756d9d997fadbc854d2a79d625235b580aefb8656 F src/serve_fuzz.zig 3c39ea768ffa37599e2cc00c588f053870766ab91500aceb0d844a4322174687 F src/sim/assembly_sweep.zig 794ea5a1388c000ac7d2bca6706a784b2cd591d3adef2e879b54bfab261878cc 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 a05fa9fa17e4b585c662c6e1d3855e5e46327db9c7490bc834382b64e742c557 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 97d7205161011af689aba27ba80c5280c9c347c45ec19068b82850d357d2772a F src/sim/sync_gen.zig 238d46942915b5c0e989dfc738b5927b5228468ea123e6f17b6fb593aa5cbf6e F src/sim/sync_sweep.zig a5069e059bdba0cb7ceac9395923a76e673944df67c5fd6d2c2b5db18483d376 F src/smoke.zig f92f9c0bca43eed62fde54e24b72cbd7b9a1f3071f5530d582fa0010cb4c20df F src/storage.zig 512205eb629d5af8d50ad336f1ef49f53b455abd52ee2f9b56d20893cafad39f F src/storage_benchmark.zig 9bc22dc2b683bd3924756979f0c2efa075429540ed23a80fec57327bb77b4890 F src/storestat.zig 3ba170b2f7f775474029e183908477169278841e6071ae085635213b70fb8400 F src/sync.zig b7f4efb71164052c62461104853ef04520b92cb244f2f2ab53884b0d0e132709 F src/sync_benchmark.zig f0d99a1f8273a1675a2f482a4977bbb12fc07a432447905c991bd359db73acdf F src/sync_driver.zig 722ed498ea6b76900661a085d4257e51f6416d43ac1185e8ac15140de265f67e F src/sync_driver_test.zig b50450d2938fc60aa90cd9067fc45141a965b63dc2194f42d5109919e380d7df F src/sync_fuzz.zig 0ab9b7195535468db561cdcb405b7bf17536e2c6cb77a115ab1fe2badb001194 F src/sync_test.zig 089221f28748df8c5284e146c1ad4f48e468f93b31d43bd8121ee17ae1c55197 F src/tidy.zig c43465f253553b13e4b68f1c4e5eee3ec7638e2cd7ed8b4ce8dab4445bfb89d3 F src/transport.zig 36c4cbabaf10b30dbc20c6b8a30df94394a7e0a65b27613f0ace2f49ec1eaa79 F src/transport_fuzz.zig 43c310c51a6502fb2e049e6f43dfa151b1a632e6c885554ec6edce4ec62a8a48 F src/undo.zig c3ef95e4c6affeb893e60922506b760f483a6640fe3fd5c63bf86c6d20cf2675 F src/update.zig 743e89fa2a007ca980f23a55f26d14befe3635d387458a2b58b67edfa03ab65c F src/update_test.zig c92b790daa737a1ba0b983c613de734d17028399fc303a8fd69298c3bc5325a1 F src/warmread_benchmark.zig 290887ab34f7777effcd4062c000456b1fcf8a59f84617a96a740d15a0245776 P bae910f00e04197b45ee9cd34ac2e8ba4e7fd41a125ba7ef7d504e8c9708b7ea R e0bc5b6a86097369984e987963495b72 U dmestas Z b7c21a141dfd806cf892e54c53046047