Skip to content
zit Artifact [b4637e26df]
Login

Artifact [b4637e26df]

Artifact b4637e26df52ec51aaf5d4638bc4a5af9c8bf9559769bc8d98ed764530c72742:

Manifest of check-in [b4637e26df] - sync: name the HTTP status the peer answered with

"the peer answered with an unexpected HTTP status" sends an investigation nowhere. 500 (the server could not build a reply), 413 (the request exceeded the body ceiling), 400 (a malformed container) and 417 (a rejected Expect: 100-continue) are four different bugs, and the message distinguished none of them. Issue #22 has been open on exactly that sentence.

transport.zig discarded the code at the status check because Zig errors carry no payload and the closed error set is deliberate. Rather than widen TransportError with a variant per status, the status is left on the Transport as last_status for the caller to read after the error, and syncRunFail names it: "the peer answered HTTP 500 (Internal Server Error)".

Immediately useful: re-running the issue #22 gate against the fossil corpus with this build turns its failure_reason from the old sentence into HTTP 500, which -- together with the reply-size arithmetic -- narrows the cause to OutOfMemory or ServerStorage and eliminates every 4xx path. The issue's own hypothesis, a per-round shun-snapshot readiness problem, is not among the candidates: that arm is documented unreachable and the code agrees.

Also corrects three comments Slice 2 falsified, all on the same read path:

logstore's open no longer CRC-verifies payloads, so the serve snapshot's contentImpl/wireImpl read faults are no longer "post-scan EIO or bitrot after a verified scan" -- ordinary stored corruption now reaches serve there, on the read. That is a better shape (one bad frame fails the round that touches it rather than making the server refuse to serve at all) but it makes that arm live traffic, and anything reasoning about how often it fires must start from that.

runPack and runShun both claimed their read-only open was an "integrity pre-flight" that aborted a corrupt source before a byte was written. It no longer verifies payloads. The guarantee still holds -- packLog pulls every artifact through srcContent, which propagates error.Corrupt rather than skipping the frame, and readFrameAt CRC-checks every read, so a rotted payload still aborts with the temp deleted and .zit untouched -- but it is now collected during the copy loop instead of at open. Both verbs RENAME OVER the original, so runPack's comment now states the consequence plainly: if srcContent is ever changed to answer null on a corrupt read, the rewrite would silently omit the damaged artifact and then delete the only copy of it.

Verified: fmt clean, test 2327/2327, gate, e2e 671/671. The new message checked against a stub server answering 500. by dmestas on 2026-07-31 21:51:35.


C sync:\sname\sthe\sHTTP\sstatus\sthe\speer\sanswered\swith\n\n"the\speer\sanswered\swith\san\sunexpected\sHTTP\sstatus"\ssends\san\sinvestigation\nnowhere.\s500\s(the\sserver\scould\snot\sbuild\sa\sreply),\s413\s(the\srequest\nexceeded\sthe\sbody\sceiling),\s400\s(a\smalformed\scontainer)\sand\s417\s(a\nrejected\sExpect:\s100-continue)\sare\sfour\sdifferent\sbugs,\sand\sthe\smessage\ndistinguished\snone\sof\sthem.\sIssue\s#22\shas\sbeen\sopen\son\sexactly\sthat\nsentence.\n\ntransport.zig\sdiscarded\sthe\scode\sat\sthe\sstatus\scheck\sbecause\sZig\serrors\ncarry\sno\spayload\sand\sthe\sclosed\serror\sset\sis\sdeliberate.\sRather\sthan\swiden\nTransportError\swith\sa\svariant\sper\sstatus,\sthe\sstatus\sis\sleft\son\sthe\nTransport\sas\slast_status\sfor\sthe\scaller\sto\sread\safter\sthe\serror,\sand\nsyncRunFail\snames\sit:\s"the\speer\sanswered\sHTTP\s500\s(Internal\sServer\nError)".\n\nImmediately\suseful:\sre-running\sthe\sissue\s#22\sgate\sagainst\sthe\sfossil\ncorpus\swith\sthis\sbuild\sturns\sits\sfailure_reason\sfrom\sthe\sold\ssentence\sinto\nHTTP\s500,\swhich\s--\stogether\swith\sthe\sreply-size\sarithmetic\s--\snarrows\sthe\ncause\sto\sOutOfMemory\sor\sServerStorage\sand\seliminates\severy\s4xx\spath.\sThe\nissue's\sown\shypothesis,\sa\sper-round\sshun-snapshot\sreadiness\sproblem,\sis\nnot\samong\sthe\scandidates:\sthat\sarm\sis\sdocumented\sunreachable\sand\sthe\scode\nagrees.\n\nAlso\scorrects\sthree\scomments\sSlice\s2\sfalsified,\sall\son\sthe\ssame\sread\spath:\n\nlogstore's\sopen\sno\slonger\sCRC-verifies\spayloads,\sso\sthe\sserve\ssnapshot's\ncontentImpl/wireImpl\sread\sfaults\sare\sno\slonger\s"post-scan\sEIO\sor\sbitrot\nafter\sa\sverified\sscan"\s--\sordinary\sstored\scorruption\snow\sreaches\sserve\nthere,\son\sthe\sread.\sThat\sis\sa\sbetter\sshape\s(one\sbad\sframe\sfails\sthe\sround\nthat\stouches\sit\srather\sthan\smaking\sthe\sserver\srefuse\sto\sserve\sat\sall)\sbut\nit\smakes\sthat\sarm\slive\straffic,\sand\sanything\sreasoning\sabout\show\soften\sit\nfires\smust\sstart\sfrom\sthat.\n\nrunPack\sand\srunShun\sboth\sclaimed\stheir\sread-only\sopen\swas\san\s"integrity\npre-flight"\sthat\saborted\sa\scorrupt\ssource\sbefore\sa\sbyte\swas\swritten.\sIt\sno\nlonger\sverifies\spayloads.\sThe\sguarantee\sstill\sholds\s--\spackLog\spulls\severy\nartifact\sthrough\ssrcContent,\swhich\spropagates\serror.Corrupt\srather\sthan\nskipping\sthe\sframe,\sand\sreadFrameAt\sCRC-checks\severy\sread,\sso\sa\srotted\npayload\sstill\saborts\swith\sthe\stemp\sdeleted\sand\s.zit\suntouched\s--\sbut\sit\sis\nnow\scollected\sduring\sthe\scopy\sloop\sinstead\sof\sat\sopen.\sBoth\sverbs\sRENAME\nOVER\sthe\soriginal,\sso\srunPack's\scomment\snow\sstates\sthe\sconsequence\nplainly:\sif\ssrcContent\sis\sever\schanged\sto\sanswer\snull\son\sa\scorrupt\sread,\nthe\srewrite\swould\ssilently\somit\sthe\sdamaged\sartifact\sand\sthen\sdelete\sthe\nonly\scopy\sof\sit.\n\nVerified:\sfmt\sclean,\stest\s2327/2327,\sgate,\se2e\s671/671.\sThe\snew\smessage\nchecked\sagainst\sa\sstub\sserver\sanswering\s500.\n
D 2026-07-31T21:51:35.729
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 2970d56203847e7f220168808e65e1c1bf68b6945985644d2e517560e80efccb
F src/cmd/tracking.zig 46b079b974838f92b9508a647c0a89e3747fec09dab072a0bae2c0d0639c4831
F src/cmd/verify.zig 59e75a6fefe9fdb951bc6bd1e3479b2fa557f80eabb65e8ea73d060d76ce2092
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 8a92e1ac73f6d9f0639a374b0cc7417ebd456ba2bd40bcaebc60e090ff4eb5f5
F src/extras.zig d7b6ec8caa95993ce01c4ed9ddd0cda327db823bdbde4e27dff4966591be25f5
F src/fuzz_tests.zig a324613efc60b71f7712a54c06ac074f98abbb95a106f5ea4415cb7f336923e4
F src/logstore.zig c95f12c7bd57320bfa871071b634547125b1e44dc46f82775b1e1e9b4ead460b
F src/logstore_benchmark.zig 6ceb42809ed074d15af7fd6d044104b341794a53ab0c08c5ea93af3af671cdaf
F src/logstore_fuzz.zig 2f5a65a28aad0c2c8d053d941ba872f53e99414135309c82bf0a0b0efdf9e7b5
F src/logstore_test.zig 7756c21553e5b082d1ffc4c27d31477745d7fb21bbffb888b1e613a98730a1b5
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 fa6de11a0cc9260f779d1dd139aafd817b11b3e01b8a3c823a1d5d1b9ee14956
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 576549f588124d55efb870df97d2578973027e34cd6a6342ecf669fbe7ce1aed
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 6d9172d4886ea6ebf4c2d97a457d04522bc848c499b1f222ebc18b0c05979380
R 068823b7e621a719615b8955b8af6b03
T *branch * issue22-diagnostics
T *sym-issue22-diagnostics *
T -sym-trunk *
U dmestas
Z 8c8469b0867a75dc7c8c23859317347e