Skip to content
zit Artifact [3b7fe2fbe1]
Login

Artifact [3b7fe2fbe1]

Artifact 3b7fe2fbe19529b6157e8fdcbe5246da7823e697b904d4e9947b06460aa81a01:

Manifest of check-in [3b7fe2fbe1] - Merge release-0.1: status: report edited files by hashing tracked files against the current check-in

Lands release step P3-F5-status on trunk, completing the B-status-16 deferral.

The increment: `status` previously classified only `added` and `missing`, so a tracked file that was present but modified produced no line at all — the gap was documented in a comment, in `--help`, and in an e2e test that pinned the silence. Documenting a hole is not the same as not having one, and "your working copy looks clean" is the wrong thing for a version control system to say about an edited file. `status` now resolves the current check-in and compares every tracked file against it, emitting an `edited` row when the bytes or the file mode differ; a file whose contents match is still not listed.

The comparison is not a second implementation. The check-in resolution, the legacy trailing-separator F-card tolerance, the delta-manifest walk, and the merge against the sorted managed set were all machinery `diff` already had; that machinery is extracted into `CheckinBaseline` and `walkWorkingTree`, and both verbs now run through it, with each verb supplying only a sink. `diff` is a pure refactor here — same output, less code. Dirtiness remains a non-failure: every `added`/`edited`/ `missing` row exits 0 (B-status-15); only a genuine comparison failure exits 1. `--help` no longer defers edited-file detection and now narrows the deferral text to the two cases that genuinely remain out of scope.

This lands the full detection called for by P3-F5, not the fallback. The plan's fallback of record required an explicit operator decision; none was taken and none was needed.

Merge evidence: `fossil merge release-0.1` reported no conflicts, updating only src/e2e.zig and src/main.zig. The tree carries no conflict markers — the three open-marker occurrences a grep turns up in src/e2e.zig are string literals inside assertions pinning zit's own merge3 conflict sentinel, not merge residue.

Verification evidence: the merged tree — not merely the branch — was re-verified on trunk after the merge. `zig fmt --check .`, `zig build`, and `zig build test` each exit 0. Behavioral evidence rides in the branch commit's new e2e coverage, which pins each acceptance criterion: an edited tracked file is reported as edited; a rewrite with identical bytes (mtime bump, same content) is not reported; an executable-bit-only change is reported; a file deleted from the check-in but no longer tracked is still not reported; and a delta checkout with an absent B-card baseline fails cleanly rather than reporting a false clean tree. The e2e that pinned the old deferral is replaced by those tests, and the help-text e2es compare against a hand-written expected string, so the `--help` change is pinned too.

`fossil extras` is empty, so the merge adds no file it fails to track.

No performance claim is made here. No borrowed techniques in this change, so no attribution is owed. by dmestas on 2026-07-18 23:14:29.


C Merge\srelease-0.1:\sstatus:\sreport\sedited\sfiles\sby\shashing\stracked\sfiles\sagainst\sthe\scurrent\scheck-in\n\nLands\srelease\sstep\sP3-F5-status\son\strunk,\scompleting\sthe\sB-status-16\sdeferral.\n\nThe\sincrement:\s`status`\spreviously\sclassified\sonly\s`added`\sand\s`missing`,\sso\sa\ntracked\sfile\sthat\swas\spresent\sbut\smodified\sproduced\sno\sline\sat\sall\s—\sthe\sgap\swas\ndocumented\sin\sa\scomment,\sin\s`--help`,\sand\sin\san\se2e\stest\sthat\spinned\sthe\ssilence.\nDocumenting\sa\shole\sis\snot\sthe\ssame\sas\snot\shaving\sone,\sand\s"your\sworking\scopy\slooks\nclean"\sis\sthe\swrong\sthing\sfor\sa\sversion\scontrol\ssystem\sto\ssay\sabout\san\sedited\sfile.\n`status`\snow\sresolves\sthe\scurrent\scheck-in\sand\scompares\severy\stracked\sfile\sagainst\nit,\semitting\san\s`edited`\srow\swhen\sthe\sbytes\sor\sthe\sfile\smode\sdiffer;\sa\sfile\swhose\ncontents\smatch\sis\sstill\snot\slisted.\n\nThe\scomparison\sis\snot\sa\ssecond\simplementation.\sThe\scheck-in\sresolution,\sthe\slegacy\ntrailing-separator\sF-card\stolerance,\sthe\sdelta-manifest\swalk,\sand\sthe\smerge\sagainst\nthe\ssorted\smanaged\sset\swere\sall\smachinery\s`diff`\salready\shad;\sthat\smachinery\sis\nextracted\sinto\s`CheckinBaseline`\sand\s`walkWorkingTree`,\sand\sboth\sverbs\snow\srun\nthrough\sit,\swith\seach\sverb\ssupplying\sonly\sa\ssink.\s`diff`\sis\sa\spure\srefactor\shere\s—\nsame\soutput,\sless\scode.\sDirtiness\sremains\sa\snon-failure:\severy\s`added`/`edited`/\n`missing`\srow\sexits\s0\s(B-status-15);\sonly\sa\sgenuine\scomparison\sfailure\sexits\s1.\n`--help`\sno\slonger\sdefers\sedited-file\sdetection\sand\snow\snarrows\sthe\sdeferral\stext\nto\sthe\stwo\scases\sthat\sgenuinely\sremain\sout\sof\sscope.\n\nThis\slands\sthe\sfull\sdetection\scalled\sfor\sby\sP3-F5,\snot\sthe\sfallback.\sThe\splan's\nfallback\sof\srecord\srequired\san\sexplicit\soperator\sdecision;\snone\swas\staken\sand\snone\nwas\sneeded.\n\nMerge\sevidence:\s`fossil\smerge\srelease-0.1`\sreported\sno\sconflicts,\supdating\sonly\nsrc/e2e.zig\sand\ssrc/main.zig.\sThe\stree\scarries\sno\sconflict\smarkers\s—\sthe\sthree\nopen-marker\soccurrences\sa\sgrep\sturns\sup\sin\ssrc/e2e.zig\sare\sstring\sliterals\sinside\nassertions\spinning\szit's\sown\smerge3\sconflict\ssentinel,\snot\smerge\sresidue.\n\nVerification\sevidence:\sthe\smerged\stree\s—\snot\smerely\sthe\sbranch\s—\swas\sre-verified\son\ntrunk\safter\sthe\smerge.\s`zig\sfmt\s--check\s.`,\s`zig\sbuild`,\sand\s`zig\sbuild\stest`\seach\nexit\s0.\sBehavioral\sevidence\srides\sin\sthe\sbranch\scommit's\snew\se2e\scoverage,\swhich\npins\seach\sacceptance\scriterion:\san\sedited\stracked\sfile\sis\sreported\sas\sedited;\sa\nrewrite\swith\sidentical\sbytes\s(mtime\sbump,\ssame\scontent)\sis\snot\sreported;\san\nexecutable-bit-only\schange\sis\sreported;\sa\sfile\sdeleted\sfrom\sthe\scheck-in\sbut\sno\nlonger\stracked\sis\sstill\snot\sreported;\sand\sa\sdelta\scheckout\swith\san\sabsent\sB-card\nbaseline\sfails\scleanly\srather\sthan\sreporting\sa\sfalse\sclean\stree.\sThe\se2e\sthat\npinned\sthe\sold\sdeferral\sis\sreplaced\sby\sthose\stests,\sand\sthe\shelp-text\se2es\scompare\nagainst\sa\shand-written\sexpected\sstring,\sso\sthe\s`--help`\schange\sis\spinned\stoo.\n\n`fossil\sextras`\sis\sempty,\sso\sthe\smerge\sadds\sno\sfile\sit\sfails\sto\strack.\n\nNo\sperformance\sclaim\sis\smade\shere.\sNo\sborrowed\stechniques\sin\sthis\schange,\sso\sno\nattribution\sis\sowed.\n
D 2026-07-18T23:14:29.351
F .fossil-settings/ignore-glob 3580f973d7097226f91a27c7b61ec13d9d07880d95549f9b90ce86da5d867a23
F .github/workflows/ci.yml ea07314fee7c0374c8f662fe439a220458ef767eea381dbc2bd6ff1f18d9f079
F LICENSE 702ae7ff835a2a971dae11c5cae039803bf394b77a6d8ec9f18693e449eaaf26
F README.md 62e1f936cc2ea0e33d717539bdffd6126a639843069bd6256359f2b15cb06232
F build.zig 43c12a0eaffed3817646b3021862ee1add3b8536a85b531b7cf55319c3b0e95e
F build.zig.zon 0eade544d4d7fc5a620348c6f29cc9219ff8c6d6377a05e756ca89860a524781
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 fd413bcb28001a8a07009ca0c769cfe666394ba79dd4f14a6461f2b592049595
F docs/rfcs/draft-fossil-sync-protocol-00.txt aa55791464a54ef4b651df8780ba5c46e95c723c7997d09a5b727fef658f920a
F scripts/mirror-export.sh cc1130129e3c320cb9c1c5a05f505e45ece23d6bb3e0228da8e7ffe97bd5612b x
F src/annotate.zig 0a6b6728099e63c84681d1e5228ebb45fafb55d65df1720358247fd6e6532c63
F src/artifact.zig c630afd9fbbcfaccd7b823105b4d05db1dc85b6af03080a6d58635ed064672ca
F src/artifact_fuzz.zig 8bb359ddfe790818e109a1dd7ac0c1b5cec1a8fdc556f37e73504cdb7f933e17
F src/artifact_test.zig da999476660f7e6e1f50ed9da5c30f1c83d6b358e2cfcd265c6932959c85bdd1
F src/bisect.zig 7bfc45d3e0e339017826941463cc4e9118892d2898fbcd319e6e6ca85c4d3301
F src/checkout.zig ac48e76f22c8065f70d2a827ae00ffb99887af80950a93c1a3451a9a1ad0f403
F src/ci_test.zig ca2e42f2676fb29e389cb961432f4c09fdc203aeedb72b347608525cfc03a2b1
F src/cli.zig c6baeb3b06666ba4940575c03fa395c108093fa6442a64f6a4e1e61326e795a2
F src/container.zig cef1028531f2763f94248b761c8779a1884e44bb854b8c45617494e3ead40e61
F src/container_test.zig a013652b1ed181161d3ad8fc9d8f052f7c27b61e129662632ceaf8cf189445ec
F src/delta.zig e8f3a6297d47549aea146222732ccf514c39688414f0a74ba396ac91066686f3
F src/delta_fuzz.zig 9e0d8dbb8c82ca0ba1a80974c076e74e4f37072b21a10812efd5539875904719
F src/delta_test.zig b18d97e117dce8fbcc05bff6f6954effdb946bab6d36337efbe5ef64d10646a0
F src/dst.zig 66f7e5b264ded6a4ec82645e87e9780b344ff23360242e263c29415163b25501
F src/e2e.zig f4376dff255587c9335323e9c69048ad02e399193617ec7497935df43540bd76
F src/extras.zig b8b36b7d6a3d348eeaf733124e671de1dba0bd4fe3cf2acd35268dfb3cf6acfb
F src/fuzz_tests.zig 7194e723225d467cf43d60210bf96860e8c248a7ae63413b70c61ea9349d291d
F src/logstore.zig a26e7b006f335b0bbb9bb41ac702ea42fab1c5b4ce9b13c7d25a89c84197aed0
F src/logstore_benchmark.zig e245474e1cc4f10617866f718aab3958f13b256c609b3e5fd562f500668388c0
F src/logstore_fuzz.zig 67b7bda806397f92c3b07c94854d9fafca56710090071a1c1c8ec94d137408f8
F src/logstore_test.zig a9baaee2cf009c988832d3632f52a1eeabf36afd52c891315f7673ce28442533
F src/main.zig 4b700fa9e97a05a03fd517ff470132f50b90bcefe47f79affea99fb561d569fa
F src/managed.zig 81ccc2d6321fe3dff91f653305ae4e73bea0b3fae7db2ab2f0cf168d9518d601
F src/merge3.zig 22c24bbea4b5fa79879c984b8208e6b0b17b4837977ac36b79821648a4f900bd
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 6d41e75aafeddf6d6f0e0b04d280402354f2e8ee046d3027162733947a199176
F src/repository_test.zig 329c0fdfc9a84f96a94afbc5e7df5f7b2ef81651413e728ebf886e143ff5df5c
F src/repostate.zig 72b063c9b779b6154940abc31c26644346d8ff9aca1ff8c7b6d0f47672ab90ec
F src/repostate_test.zig 0645afa55d528f74e6cd1c84fc49568fff8c9c55956db30d48c4390f7a142599
F src/repoview.zig ec2958e1e8fd955c761d240ab80c3b3f62e3473991713c25ed5a603df984e403
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 c0e74897f57db81c0e4ce57bb992f4fbf52139234317ca00698a2af0c1c1c9b3
F src/serve.zig baa76b81f5cc21322e85f3d390b533c828c969f6d10580b5e8aa1f339202d945
F src/sim/faulty_file.zig 8e8a0325d0e987d1dd306588f910af5302e6456561eefae92c73c424fc1a9c94
F src/sim/gen.zig 0e237af570a73bc78e9a717a8ea59867611deb2348287765826ea4ff1942528b
F src/sim/net.zig 8fb057012ce0a33f67c928cd696bc2761fea8ba4012b2daa33871b2ba5dfe772
F src/sim/oracle.zig 04b81d9472a0529d9e9d030779304c3d6c930f4db20b800ae3f9cbc5c178969a
F src/sim/storage_sweep.zig 5472d632347079fb5c7e7ae300b46c6e8202b91202b1c51b181dd3c7bab8a306
F src/sim/sync_gen.zig 238d46942915b5c0e989dfc738b5927b5228468ea123e6f17b6fb593aa5cbf6e
F src/sim/sync_sweep.zig 5458a84be08823d2d0fc9464665f1c3f3f26563185dc9ae24cf73259faa5d40e
F src/smoke.zig f2565465a36a6c187d49d116f4e671ed843ea6c1a291fcc9c063af29a9baa3c8
F src/storage.zig 512205eb629d5af8d50ad336f1ef49f53b455abd52ee2f9b56d20893cafad39f
F src/storage_benchmark.zig 871f00fef1a34a0b2ee7b9656a217a0cf52949fdd710b642a44dc6bf12d6866e
F src/sync.zig b04119b2679887c6705ed4831899ca1911ca20afe0bac865022ac8b7ad879194
F src/sync_benchmark.zig 9a4542401c880750ff6565a2ca9f1d116341d1c5af704ef4a05c2732eeec8849
F src/sync_driver.zig 722ed498ea6b76900661a085d4257e51f6416d43ac1185e8ac15140de265f67e
F src/sync_driver_test.zig b50450d2938fc60aa90cd9067fc45141a965b63dc2194f42d5109919e380d7df
F src/sync_fuzz.zig 3f419ec3e3c0b4ecf99376e46d111c4fae9826d08f9968e649ffdf84d10f9e61
F src/sync_test.zig b47b05d3defeef61a02c9c9817b66288c48430713737c946734dba151bb17e7e
F src/transport.zig 4652b2ab7f43ccd8af5ca6ef7604f8e7cd28353450b1ec90d206b881308f8b5f
F src/undo.zig 2e213cbe02118e37b11554620b285deae5dbf5b4d8009ae6dc229b84375b7591
F src/update.zig dbc731b339f2a6b32af95ca0ee6b5a36629d8ef9944b3f7006f4c59d62bfdcfd
F src/update_test.zig e80b1902fe29d1e8a6984f82974917ecda9b6460905b0c56b7cbc310ced3b73e
F src/warmread_benchmark.zig 9421986d49deff3f720e491fb6d1c7162dc9322f4e67dd14198820c3992dc02a
P fca1e073c2df89f3b382682fa40d8a918c5ab3a21c3b2fdabaf3b1466341f148 02d993f8608a97e2e78002fc8d7d1c4a7d76065e4b9c8e64100c075f9594bd68
R 555bf9df28ba6dbd870d442302a0f64e
U dmestas
Z 1b4c162de3c489a7be8c85f1adf0174b