Artifact 41e7a6f8406abc05d3476c0978002d5fa8ff04f4628086351cb790986529aa78:
go-libfossil now covers every requirement of draft-fossil-horizon-00 as zit 0.7.1 released it. It signs as fossil and zit do, and it compiles with TinyGo: - Named horizons: repo clone --horizon NAME --depth N clones at tip, a branch, a tag or a full hash, stepped back N check-ins. The origin resolves the name and echoes the check-in it chose. Against stock fossil, the clone resolves the name itself. - Seed binding: every seed carries a signed T +horizon-seed <C> <rule> card. A clone refuses a seed that is not bound to its own check-in and rule, and one dated before the seed it holds. Seeds are byte-identical with zit 0.7.1's, and each clones the other at the structural horizon. - Seed refusal: an origin refuses a pushed seed atomically. The check runs on expanded content, whenever the seed's base arrives. A withheld seed is never linked, announced or served. - Signing: clearsign and pgp-command sign check-ins with PGP or SSH keys, readable by fossil 2.28 and zit. Seeds are signed separately, by horizon-seed-command, in the SSH namespace fossil-horizon-seed. - TinyGo: the whole public API builds for wasm, 1.40 MB gzipped. - Fixes: a two-delta cycle no longer holds the write lock for about 30s per push. An origin holding a dangling delta can be cloned. Pulls ask for phantoms in hash order.
Behavior changes to check when upgrading: - Seeds are no longer signed by clearsign/pgp-command. Set horizon-seed-command to sign them; with none set they go out unsigned. - Seed SSH signatures use the namespace fossil-horizon-seed. clearsign.Key.Verify takes the namespace. - seed.Mint takes the horizon's rule. - A v0.15.0 seed has no binding card. A store holding one takes a bound seed on its first pull from an upgraded origin. - A user whose login is go-libfossil cannot push control artifacts.
Known limitation (#479): cancelling a tag on the origin can make a clone refuse the next seed until a newer tag or a deepen. zit 0.7.1 behaves the same way, and the fix will land in the draft and both implementations.
See CHANGELOG.md for the full list.". by [email protected] on 2026-10-24 13:58:52.
D 2026-10-24T13:58:52 T +sym-v0.16.0 2f1e5f1e3da31dbc8293cffe76974b571699e9cbf8a37f691e0e8044c0891a2b Release\sv0.16.0\n\ngo-libfossil\snow\scovers\severy\srequirement\sof\sdraft-fossil-horizon-00\sas\szit\s0.7.1\sreleased\sit.\sIt\ssigns\sas\sfossil\sand\szit\sdo,\sand\sit\scompiles\swith\sTinyGo:\n-\sNamed\shorizons:\srepo\sclone\s--horizon\sNAME\s--depth\sN\sclones\sat\stip,\sa\sbranch,\sa\stag\sor\sa\sfull\shash,\sstepped\sback\sN\scheck-ins.\sThe\sorigin\sresolves\sthe\sname\sand\sechoes\sthe\scheck-in\sit\schose.\sAgainst\sstock\sfossil,\sthe\sclone\sresolves\sthe\sname\sitself.\n-\sSeed\sbinding:\severy\sseed\scarries\sa\ssigned\sT\s+horizon-seed\s<C>\s<rule>\scard.\sA\sclone\srefuses\sa\sseed\sthat\sis\snot\sbound\sto\sits\sown\scheck-in\sand\srule,\sand\sone\sdated\sbefore\sthe\sseed\sit\sholds.\sSeeds\sare\sbyte-identical\swith\szit\s0.7.1's,\sand\seach\sclones\sthe\sother\sat\sthe\sstructural\shorizon.\n-\sSeed\srefusal:\san\sorigin\srefuses\sa\spushed\sseed\satomically.\sThe\scheck\sruns\son\sexpanded\scontent,\swhenever\sthe\sseed's\sbase\sarrives.\sA\swithheld\sseed\sis\snever\slinked,\sannounced\sor\sserved.\n-\sSigning:\sclearsign\sand\spgp-command\ssign\scheck-ins\swith\sPGP\sor\sSSH\skeys,\sreadable\sby\sfossil\s2.28\sand\szit.\sSeeds\sare\ssigned\sseparately,\sby\shorizon-seed-command,\sin\sthe\sSSH\snamespace\sfossil-horizon-seed.\n-\sTinyGo:\sthe\swhole\spublic\sAPI\sbuilds\sfor\swasm,\s1.40\sMB\sgzipped.\n-\sFixes:\sa\stwo-delta\scycle\sno\slonger\sholds\sthe\swrite\slock\sfor\sabout\s30s\sper\spush.\sAn\sorigin\sholding\sa\sdangling\sdelta\scan\sbe\scloned.\sPulls\sask\sfor\sphantoms\sin\shash\sorder.\n\nBehavior\schanges\sto\scheck\swhen\supgrading:\n-\sSeeds\sare\sno\slonger\ssigned\sby\sclearsign/pgp-command.\sSet\shorizon-seed-command\sto\ssign\sthem;\swith\snone\sset\sthey\sgo\sout\sunsigned.\n-\sSeed\sSSH\ssignatures\suse\sthe\snamespace\sfossil-horizon-seed.\sclearsign.Key.Verify\stakes\sthe\snamespace.\n-\sseed.Mint\stakes\sthe\shorizon's\srule.\n-\sA\sv0.15.0\sseed\shas\sno\sbinding\scard.\sA\sstore\sholding\sone\stakes\sa\sbound\sseed\son\sits\sfirst\spull\sfrom\san\supgraded\sorigin.\n-\sA\suser\swhose\slogin\sis\sgo-libfossil\scannot\spush\scontrol\sartifacts.\n\nKnown\slimitation\s(#479):\scancelling\sa\stag\son\sthe\sorigin\scan\smake\sa\sclone\srefuse\sthe\snext\sseed\suntil\sa\snewer\stag\sor\sa\sdeepen.\szit\s0.7.1\sbehaves\sthe\ssame\sway,\sand\sthe\sfix\swill\sland\sin\sthe\sdraft\sand\sboth\simplementations.\n\nSee\sCHANGELOG.md\sfor\sthe\sfull\slist. U [email protected] Z 09c7f43582b8b634cd46c34614988b98