Skip to content
edgesync Artifact [00bc87892b]
Login

Artifact [00bc87892b]

Artifact 00bc87892ba320b6932e442c53fe0877e5b9a0aac3f13b6638d67267ca4dcdc1:

Manifest of check-in [00bc87892b] - feat(hub): persist .commit publish watermark across hub restarts (#164)

publishedRID was in-memory only. initPublishWatermark snapshotted the current max ci rid on every start, so any commit that landed in the repo but didn't get its .commit notification out before the hub died (crash mid-publish, HTTP push that completed the SQLite write but crashed before the wrapper ran publishNewCommits, or an offline tool writing to the repo while the hub was down) became silently un-propagated. Peers caught up incidentally on the next commit or not at all. Real gap.

Persist the watermark to the repo's config table under "edgesync:hub-published-rid" after each successful publish. On startup, initPublishWatermark reads the persisted value first and falls back to the max-rid snapshot only when nothing is persisted (cold start). Schedule a one-shot publishNewCommits call publishCatchupDelay (3s) after NewHub so it runs after NATS leaf clients have had time to reconnect on the same leaf port — an immediate catchup fires into a void because nats-core has no per-subscriber queuing.

Stop cancels the pending catchup via catchupStop so the goroutine doesn't outlive the hub.

Regression test TestCrossLeaf_HubRestart_RepublishesUnannouncedCommits: two hubs leaf-linked on a stable leaf port; stop A, open the repo file directly via libfossil and commit (no hub, no NATS, no publish hook), restart A; assert B reads the offline file via the delayed startup catchup. The "open repo file directly" trick is morally equivalent to "hub crashed after libfossil's write but before the wrapper's publish" — both produce a commit that's in the repo but unannounced.

Known limitations (deferred): - If no peer reconnects within publishCatchupDelay, the catchup publish is still lost. JetStream-durable .commit subject would close the gap; tracked as a follow-up. - The .commit subscriber on the pull side doesn't advance the receiving hub's watermark, so a pulled-in commit will be republished on the receiver's next restart. Idempotent on the far side (the subscriber's pull converges to zero blobs) but wasteful chatter; can be tightened in a follow-up. - v1→v2 upgrade with un-announced backlog at the time of upgrade treats those commits as "already known" — same silent-loss behavior as v1; not made worse.

Refs #161 review notes.

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> by [email protected] on 2026-05-12 23:50:36.


C feat(hub):\spersist\s.commit\spublish\swatermark\sacross\shub\srestarts\s(#164)\n\npublishedRID\swas\sin-memory\sonly.\sinitPublishWatermark\ssnapshotted\sthe\ncurrent\smax\sci\srid\son\severy\sstart,\sso\sany\scommit\sthat\slanded\sin\sthe\nrepo\sbut\sdidn't\sget\sits\s.commit\snotification\sout\sbefore\sthe\shub\sdied\n(crash\smid-publish,\sHTTP\spush\sthat\scompleted\sthe\sSQLite\swrite\sbut\ncrashed\sbefore\sthe\swrapper\sran\spublishNewCommits,\sor\san\soffline\stool\nwriting\sto\sthe\srepo\swhile\sthe\shub\swas\sdown)\sbecame\ssilently\nun-propagated.\sPeers\scaught\sup\sincidentally\son\sthe\snext\scommit\sor\snot\nat\sall.\sReal\sgap.\n\nPersist\sthe\swatermark\sto\sthe\srepo's\sconfig\stable\sunder\n"edgesync:hub-published-rid"\safter\seach\ssuccessful\spublish.\sOn\nstartup,\sinitPublishWatermark\sreads\sthe\spersisted\svalue\sfirst\sand\nfalls\sback\sto\sthe\smax-rid\ssnapshot\sonly\swhen\snothing\sis\spersisted\n(cold\sstart).\sSchedule\sa\sone-shot\spublishNewCommits\scall\npublishCatchupDelay\s(3s)\safter\sNewHub\sso\sit\sruns\safter\sNATS\sleaf\nclients\shave\shad\stime\sto\sreconnect\son\sthe\ssame\sleaf\sport\s—\san\nimmediate\scatchup\sfires\sinto\sa\svoid\sbecause\snats-core\shas\sno\nper-subscriber\squeuing.\n\nStop\scancels\sthe\spending\scatchup\svia\scatchupStop\sso\sthe\sgoroutine\ndoesn't\soutlive\sthe\shub.\n\nRegression\stest\sTestCrossLeaf_HubRestart_RepublishesUnannouncedCommits:\ntwo\shubs\sleaf-linked\son\sa\sstable\sleaf\sport;\sstop\sA,\sopen\sthe\srepo\sfile\ndirectly\svia\slibfossil\sand\scommit\s(no\shub,\sno\sNATS,\sno\spublish\shook),\nrestart\sA;\sassert\sB\sreads\sthe\soffline\sfile\svia\sthe\sdelayed\sstartup\ncatchup.\sThe\s"open\srepo\sfile\sdirectly"\strick\sis\smorally\sequivalent\sto\n"hub\scrashed\safter\slibfossil's\swrite\sbut\sbefore\sthe\swrapper's\npublish"\s—\sboth\sproduce\sa\scommit\sthat's\sin\sthe\srepo\sbut\sunannounced.\n\nKnown\slimitations\s(deferred):\n-\sIf\sno\speer\sreconnects\swithin\spublishCatchupDelay,\sthe\scatchup\n\s\spublish\sis\sstill\slost.\sJetStream-durable\s.commit\ssubject\swould\n\s\sclose\sthe\sgap;\stracked\sas\sa\sfollow-up.\n-\sThe\s.commit\ssubscriber\son\sthe\spull\sside\sdoesn't\sadvance\sthe\n\s\sreceiving\shub's\swatermark,\sso\sa\spulled-in\scommit\swill\sbe\n\s\srepublished\son\sthe\sreceiver's\snext\srestart.\sIdempotent\son\sthe\n\s\sfar\sside\s(the\ssubscriber's\spull\sconverges\sto\szero\sblobs)\sbut\n\s\swasteful\schatter;\scan\sbe\stightened\sin\sa\sfollow-up.\n-\sv1→v2\supgrade\swith\sun-announced\sbacklog\sat\sthe\stime\sof\supgrade\n\s\streats\sthose\scommits\sas\s"already\sknown"\s—\ssame\ssilent-loss\n\s\sbehavior\sas\sv1;\snot\smade\sworse.\n\nRefs\s#161\sreview\snotes.\n\nCo-authored-by:\sgithub-actions[bot]\s<41898282+github-actions[bot]@users.noreply.github.com>
D 2026-05-12T23:50:36
F .claude/README.md ca2bcef331dd7702a54d8fa436e04874721d55d4246b36edec512f4472d55f14 w
F .claude/settings.json 720770da92f8ece179e6ee7fddff6c5e0dbfeafaf2b2a020d89677de733d5164 w
F .claude/skills/deterministic-simulation-testing/SKILL.md ba5c6939a93016adb36cb48b54e837e7f33baa923e0a43ed31e5bad3fbf06a83 w
F .claude/skills/gitnexus/gitnexus-cli/SKILL.md f6c2bf71139f06e20bfb5c3e332cb9d85ae116ee370451281a51a554475fa5f6 w
F .claude/skills/gitnexus/gitnexus-debugging/SKILL.md cdd227de563807386370a920fa69a3df2d0db406784ebf875fe1c936ca30bd25 w
F .claude/skills/gitnexus/gitnexus-exploring/SKILL.md b5b9237dfedf1e96f728e06526023723c20625f57518cc2419be49e709579c50 w
F .claude/skills/gitnexus/gitnexus-guide/SKILL.md 269f2b61f314eefaf80f642570656ee67bbc0faf959be30be58391dfc146e54f w
F .claude/skills/gitnexus/gitnexus-impact-analysis/SKILL.md 2aea99d544f78213efe863077708a800fae55f78585ab7dd4703c11dca2a2d56 w
F .claude/skills/gitnexus/gitnexus-refactoring/SKILL.md 3ee22faa1437bd8874936f8ee10b45e1afe036f8426b16a5d32e8ddda20f1fee w
F .claude/skills/linear-cli/SKILL.md 7a0c96f9d0f328a06e16de69d491b4088bada0dbf3a1db307e1c6dd22afb56bf w
F .claude/skills/linear-cli/SKILL.template.md e4e45f1c6cf761afec58d621437b4d2be8da490c3280096e02aa93aaf6085eec w
F .claude/skills/linear-cli/references/api.md 46f2d48f783dcc498b33b5c7f40a93fd82ebe32c4f63eb7122c112f6bf5ca474 w
F .claude/skills/linear-cli/references/auth.md ffcf603cf9cfc0a5e7b9ecbd67f225ef2d2fbe50e1f54130f200aedb403f4f96 w
F .claude/skills/linear-cli/references/commands.md ede99344e3ce263f81769a56a387e8fc5362976b73fea0d3d0d142dfdd18bcb9 w
F .claude/skills/linear-cli/references/config.md 8ff9113fa4890e833e99d2dbe370c8f8ac506d465d1e83b04210f99d7f5ad7f6 w
F .claude/skills/linear-cli/references/cycle.md ce9045f0450012aaff75dde91800b95abaa51d82ecc3a1d9aac3377c5cf16887 w
F .claude/skills/linear-cli/references/document.md 76cbce86c9a95200703c8f15d26a5186f0d83f45625fa19f9227c38ecc9d23f0 w
F .claude/skills/linear-cli/references/initiative-update.md 984676f8f00a803c67b28c738b3a280cad944dc3eeaa7dbb45f9d63dbbc84139 w
F .claude/skills/linear-cli/references/initiative.md 90b111fdfaec9cd6b36e00ad79fff3f2d8ab542a275977b5ae769567835742b0 w
F .claude/skills/linear-cli/references/issue.md 243a79fb53aa2938ff4b597203472ea80ae300f16e20250e0e4f77b48b036ff4 w
F .claude/skills/linear-cli/references/label.md 8e16a3cd85795d35fb7a7222edcb14e46c484f45b1598ae4fddb850d7bb01fc5 w
F .claude/skills/linear-cli/references/milestone.md cfcf99ad27549d35b45cf28fbc6f6cf4ddb62d56fd2bd6be240e2bd29daba085 w
F .claude/skills/linear-cli/references/organization-features.md c224802631ab7c223819ffb72d71285872fa728d230f92bbb39d958af22844ef w
F .claude/skills/linear-cli/references/project-update.md 452fe0a6211743972eaeb1d0b1051b6a9e7f21d177b81b812fa637d86385e5fb w
F .claude/skills/linear-cli/references/project.md ecdcc3a99ba0e4e9f73125dcaaae6a2723f27554bf85f1dac66f196e40a605e8 w
F .claude/skills/linear-cli/references/schema.md cf10a2675a485c9787bcb5daccdbff985aff4b132c27149bc79796955c03e820 w
F .claude/skills/linear-cli/references/team.md 09da3cc926b3e27b8b2afe528509df45f3197be6b8c1d98ca883edc34e50d842 w
F .claude/skills/linear-cli/scripts/generate-docs.ts 4148c7fe84fd14902b160e525fa21f0cf26fdb3aa90d435480ee3c7007507f0f w
F .claude/skills/tigerstyle/SKILL.md 04d13f24438e0f3ba479db30437ce621f07447468584accfea412a01aee2823b w
F .dockerignore 3bc5ddec7f20e565c4c10b1570c00fe8b43c6299751d7b025cbb56163d5ffd22 w
F .envrc da1fd2003a0f48ae8907d51f30c93db8aea04f172f334155ee6b7ad92375dca0 w
F .githooks/pre-commit c7a8aec489ef8810ba2e43c84802efdb6dcfe1f4b1e55ac3bbad348826235a4e x
F .githooks/pre-push 0aae2a9e69e75aeec871ced520edb426c71a991ef6ca2a2d686ac333c186c439 x
F .github/RELEASE_TEMPLATE.md 8732d1e0c367cefb3a1e0ac8fbdf191f2816fc3469d4680dfdf14eac2dec9a1d w
F .github/workflows/auto-release.yml 3be5f64694fb69c1e9b7774338ffa5a6a09fbbe3139ff933f8ab16c75280d427 w
F .github/workflows/bump-upstream.yml d7f153e43be82e7bb58b6336e236dd4b335fa514acdb8b507d1beab65dd0758e w
F .github/workflows/ci.yml 033ee5ce4c032eb61bd5c704f4507d3b9a6de9af277c66af860d62db8e1713d5 w
F .github/workflows/release.yml 6b2d54e724a8432ea47910068f6c3a0b06141a8178d9175ddeb0178cd8c73a51 w
F .github/workflows/test.yml 2afc0c58af4e8f587f25dca0d6993121102ce32738015ab6e026e550ebeaa9f8 w
F .gitignore 6bf03d3d73e12195e0e396362907de0c3280275bf9a20b266cbdfc520e14620b w
F .goreleaser.yml 942174e2b2446f8465bf7640bb5a16ba8cf182621c2b5858fa17675b45b3ae46 w
F CHANGELOG.md 5fe0073a72a6c4122fee9c832f57bc68d9c2b05905ba8f28e0a7635925563f1d w
F CLAUDE.md 6e6874b0dc6cf4c7bec1cab75511e8855fc6a704b304fe502199d5498e91ed9d w
F CONTRIBUTING.md 8f67cf333ab75c4546f0d335aa5cb2e5ed0faec03f0cefde68e73c8faa0e17c4 w
F LICENSE 695d6a3099df24080941d9ca1b5bee7d264f6928e81e4b8f3ed833c5c4bd721e w
F MEMORY.md ebbdd53404586f74def124a42569c685ec22cd90824ae4d5f061515ad14230fc w
F Makefile fa635e0e090924c8f70fbb4c11f264c4dd7a07e495bab38761b58d0c6bbc534e w
F README.md caae5ead9d1d8fc5faedb281684eb0c5393df304fbc36157683517defe1dc444 w
F bridge/README.md 84b739e2a2b064e153fa035ade55c6e39d7f89b3d64af157ded12cf8e175228b w
F bridge/bridge/bridge.go cd561aa49093b94635e16758f3146588ed8315fe399a85af1ec095bbb2ab9171 w
F bridge/bridge/bridge_test.go a13fb5af497248f5a8bb66eac7201559b3113f11a2a4975d716c0d39a09a7f51 w
F bridge/bridge/config.go 3dfd9c735b31d2e4e39051b9651431010eba7769b2159fab8ef12093fdb77e8e w
F bridge/bridge/integration_test.go f1591b01a2fb97da5de6e34fddbd1ea470834c808429caec51931291b8461d15 w
F bridge/cmd/bridge/main.go df14f34662e20265e5f530879b943bfbe80eeeb846f73d6aaa1ba2c797f88807 w
F bridge/go.mod fa54df559aa92c9a99253eefed2f0676c23891a97f1dd4d65914d20f18bfc8b1 w
F bridge/go.sum 5a26c48b5c1be058ca005ea641289440a140587f0c41959c6d575dbdcd3b9644 w
F cli/README.md 86c267ce50a10032fbef694539cd8af570d0596ac3b5e61f917acffbe377a277 w
F cli/bridge_serve.go a2e7cae3cbd4ec31e42bca010540b3f6fb3c9a3a446aaf83506beefdd1ed81e1 w
F cli/doctor.go 18073e864464753237e9408474f4c3efa33bdec088db82f8d7c8e1085fe22ae5 w
F cli/hub_serve.go dd54380f859d00fa961efcdc3a1fb30c52a31c9cf2aae433b68b198e2357bb42 w
F cli/notify.go e04d5a85b9da47437585693b8d15f7483706e5d7567539696ecd79c843057dc1 w
F cli/repo/repo.go ed847c676a2abcaeaca1dda10b8f116a33130b59ca8b0f1278e96f387003ffd1 w
F cli/repo/repo_test.go e8463dd04a6acd4832acdaf4c06f98557c06e9b793ae4c50dc8abb3a4468c607 w
F cli/sync_now.go 9ceb5b5f7bfe284af1fc29c17cd3aa6ec2bd2f7fedae1e464cfb5a80c58be8d4 w
F cli/sync_start.go b501da540abb3a72cc4f47015b4983cc8c41f57624475a87183bb6f02e46fa77 w
F cmd/edgesync/cli.go 6ea2b767703aa297b4539e823fa29311937b6edd8dc374369a1576780770c370 w
F cmd/edgesync/main.go 6794639c0748de1aabea5bfe18471c72de862a721026094a6f7a6e1f4dd6b976 w
F cmd/edgesync/notify_test.go e18656cbfbb59b3fa4d462ce68fe313cebe4bdde1a4effa747154b21da4498c6 w
F deploy/Dockerfile 57dba27d7b1fca2a98de01517cc514ce8bbac9168423837737eedf10de8cbb63 w
F deploy/docker-compose.yml a6896cc01e199efb38f8dca415220850291bf2dd7750364fc73ac85211d903b8 w
F deploy/nats.conf 022b510156345d58b905dc9ac32d1e8a6340424045a669c555ddaefe097f33f5 w
F docs/GETTING-STARTED.md 8c998decfdb7791cd317012d0c32e1bfe7361a5c3a1b526c16d432275c90a439 w
F docs/agents/domain.md 321e31f8fe0f207cbe8651d51d3e12485a0b23903ebbc0187a47f8a1a77c6dd8 w
F docs/agents/issue-tracker.md a981907f2124642fe46c23f7086c58e67fd2a06fbbfec42cd4b9e64abcaed159 w
F docs/agents/triage-labels.md 524eacfeef9ccb457572c61f2a55660a8ae2c9368229bd7220232400a434b79a w
F docs/architecture/agent-deployment.md 087caa3ffb39229cf54b8d5de31f33ce0ad61531a54dd6c59aecbcc39f54673b w
F docs/architecture/checkout-merge.md 35e63f09f4596694057347c440c95a9d9019e4af2a8ddbbed4dfa35bb28e678e w
F docs/architecture/core-library.md 4c742b0344c3ec124cfc934b103a908363963cdccb7a6332656f4a8d1145c7f0 w
F docs/architecture/hub-package.md 851f0eb75d72211f59204f1e38938354a244643f396793d2a007dd7c92525cb7 w
F docs/architecture/notify-messaging.md 5473344821c8664db8e21f1cf0897989abe5bc5bd95a10a54f30b50f306ea57f w
F docs/architecture/repo-operations.md 25059fdf64675a4a69e4646ae37fc2a5e9115e5fa9a3ae569447a74776a593ea w
F docs/architecture/sync-protocol.md f4055c63871cc53bc71bd9d7198a5cc8337e51cb6e55722a68f7c084c7fd323f w
F docs/architecture/testing-strategy.md ab3c7f3099e96ef79c81c3c64c6840ec3239eed8219eb974d9c2814642837530 w
F docs/architecture/wasm-targets.md 9e741f71aff64e5b960bc6c3ff31cc738e58f12f03cc3054da52511da77a1242 w
F docs/bridge.md 510932863672d53af0d31a6833edb3069bce426d21c45fa6379801993b7c5076 w
F docs/leaf-agent.md ff4974a0a416e17a4102983e4f64cd99f4a3f27e681fa92806b988983142640b w
F docs/site/content/_index.md 45af04eb545766f3daa6fa7fffd1bdc193cbf89288f27d34bf7b8cefb2b5cfde w
F docs/site/content/docs/_index.md 68c8ba84c7634c7a0fed55954a5f9a72241ee5715e795f5b41f618fdc8b92107 w
F docs/site/content/docs/architecture.md 1e131c3d2e0b9ddf5cdd32350498691a0c39f4e982dbfe5a6ef1e00b75d63740 w
F docs/site/content/docs/concepts.md 4effb288b3cca82536502ccd234c4a98e3f6765aff08321f3482276c2381948f w
F docs/site/content/docs/deployment.md 5ff56ae9e9199c285632b1509c861157e679bcfe5254859e40ae2a67c8cf9911 w
F docs/site/content/docs/notify.md a26fbb6cbac346c3216210a48670debce2e445d9ecbdf09f3bed7b82230343c2 w
F docs/site/content/docs/quickstart.md f76f51c3a16123542765d4d654da4383be926d6ff407f692b6558f82f811811e w
F docs/site/go.mod ab605b2defff7156bc8a71af1c9d9836f9b293b9cabc9e6138b8e3cc83714fba w
F docs/site/go.sum 4572deee1c4c7304d39b73c3317685665590bbbb66a064d9dce58a52606fc15f w
F docs/site/hugo.yaml 5fbdfed3ebc3d5b9713d68dfc4460665e89db15ef192880d6d7bf5d25c905edb w
F docs/site/layouts/_partials/navbar-title.html 26ad6fb61226a941ec6fc41723a0e4e797f2b1fdb8469299923f5f31204c35ac w
F docs/site/layouts/index.html a5f5c43b29d0d6978635c273b7d7f1c2b72a0005dfd4be66616934d662f56d14 w
F docs/superpowers/plans/2026-04-08-nats-over-iroh.md 1198181149f017320ecf6484ec8f734499f9df1885cede9f3765bcf6172005d0 w
F docs/superpowers/specs/2026-04-08-nats-over-iroh-design.md b756bd253868a7022343f8145d80457477cc0fedeb327ba5c61c1e0842e41ecc w
F docs/superpowers/specs/2026-05-12-cross-leaf-fossil-sync-design.md d58e19de30253aeeb497b7bf99a7c60d69f845dbc8c6faa3fedf6d71615ba145 w
F go.mod ab6b656c0987e7daf59e06e758649303c5ed13ccbcc9e2bfb2eb662cbbe57927 w
F go.sum 72623416807ba7dc6abdba3ce9a15e121dc7f93f6d6366be4c7778a3e98fbb85 w
F go.work.example 76e72e0164b5cbd60bf26e2a95c6caf097cb4da6d81c8e20ff7c56a00e9632f6 w
F hub/clone.go 67246789a5887dfe05171f755f10b2266ec45605b5826ae1ffe8a3a4becc40e9 w
F hub/clone_concurrency_test.go 2a92427e39acee8cf2fb2c98acfdedfa794afeef35ca91e973ff374a8dda3483 w
F hub/commit.go 83ea6048baae4b4ce0fc4eb5d0d9bc2ab643809377eb2841906ae8b1afaae0be w
F hub/commit_perm_time_test.go bae4b8ef1753c2326ee56b24531db40819849e9f4bd2a2190f57778288106231 w
F hub/commit_tags_test.go 8702f12f3701dc192a7b19133e7f6fcbcbc41ee4833a5eb78b8d27f6e2abe05d w
F hub/cross_leaf_test.go 89ed4aff00c94f5f65255656450341772a26dd59763af7c5438f707a4e80e4c7 w
F hub/hub.go d57d953dc2303edd3d37e321cc2d15562dc2442f0088ac0ff6b02482b85c6cea w
F hub/hub_test.go 25942c464facd1f7c11350ff452749d0118421b8912db6bc4a777c824bdaea93 w
F hub/nats_transport.go 875c251e0933f6b72aed393325dc944b40d533d6faaa2d81303dc83eafe86b81 w
F hub/nats_transport_test.go 9326b15eab710632e889722a14e619a0c9c56a4467fe8d8639f70a98e70c448b w
F hub/repo.go 26ce827d6d409da5ae6360b78fb149105b6aef7ac5ce9ba194f10fe179fee566 w
F hub/repo_test.go 715fc37e2d445693aa19bb41848ff905398a0ce4448a2d7788a23f8b2a5bdd0c w
F hub/users.go d139c0b7d0708b4444480f4c9e1d80da365362ac8f83715262ccb07e0ef667c5 w
F iroh-sidecar/.gitignore 2f4601a0207ecbb94205f72f8413ab129bf6b0ee7e773d126966e384c018d698 w
F iroh-sidecar/Cargo.lock 71a7565ccfe1377e76f492ff966eec7c2530a1f9b6c6fb98106b1be64be04c90 w
F iroh-sidecar/Cargo.toml f9d163453e1e9753d23bb2d2a37b06d48ad3b16fe84a320c35a12b29913e9638 w
F iroh-sidecar/src/acceptor.rs 5977a8360662cb7a565f77b75d185c78cbc9810e32d95245908415d42cb62d06 w
F iroh-sidecar/src/endpoint.rs ba7699d115356a1eefb5b776487ae4f8242c57ae7c635f5d59aec73f0323c6f4 w
F iroh-sidecar/src/main.rs 31b45343a90a376064e6dec0f56e7fdb545d0051bc864283e417864e029d060f w
F iroh-sidecar/src/server.rs 545bed21709586e9ab436bc1b340a7e1170a9c78fa8d0e5d0f30d778746da1f4 w
F iroh-sidecar/src/tunnel.rs 5b99b87609cfbdf9184ce2ec564f644730d207b7bcadb3661c7c8ad76b2ae60a w
F leaf/README.md e3a769b409dbb54c8660905d459726bc6da3fccd33fc32231c446caa45f2b32a w
F leaf/agent/agent.go 9e9b5fbb38e25bdc2804270a993d3a35a4b523b67f7bcb59fd36c6474cd52bfd w
F leaf/agent/agent_test.go 8cfae5b18bc66a9d06ea72c18f1e2150d6566ef01b70f06a3c204c4559a3686c w
F leaf/agent/autosync.go 3a6f96095234d5acd6a2633fba9241263409576c58ccf41b5aa67075cb59de72 w
F leaf/agent/autosync_test.go 51c83ad5487e0d3313a0eeca4524385823b5f31c932ec7efa0474fd246d65569 w
F leaf/agent/clientid.go 2af07c6ba3ac8fbdc985ab638b4197b596034f15c260eb23ce2f831db6224b5f w
F leaf/agent/clone.go fa2df56c0d1ddc0d2e5a23830c947b2b3f74b5693397b731a00607982c563bce w
F leaf/agent/code_artifact.go 658049b659e6d34d6c3fa203c30021806ce3d45d61b5090280baf6725dd3b3d2 w
F leaf/agent/code_artifact_test.go 1bcde626479c6d267b8838b20aa9c61e9668f65f6c3ecf182ba54b228f5a3283 w
F leaf/agent/config.go 1b92214b5dad695e1783fa140ae16f163dedd956d7ebe3b106065620446c5e92 w
F leaf/agent/integration_test.go 5f1aeff4a5fae9e44f2bcbd1d17fde90d9435905f51e3432e88d2c2020f03d29 w
F leaf/agent/internal/natshdr/carrier.go 8b3806e7a2a42604444f5fbcbf33b413399e8136fa08918b3324db54ee5dde66 w
F leaf/agent/internal/natshdr/carrier_test.go 97d84526bf4451120e135ebdfaa91df1cdb09e5643d9292768fb49ca7ff65ac4 w
F leaf/agent/iroh.go 17216ecaaf8777f84beffa90ab3be5687fae7bf195f9f0334e2ec462fdf31f2b w
F leaf/agent/iroh_test.go a40389a59347f0091a9dbddf9d3c65b1f2373b52a82165b1b82e3412cf375bca w
F leaf/agent/nats.go 2e1850529c0cb27efe9fface983a7c5c9734ae32d1175f129aa6e6192287c84f w
F leaf/agent/nats_mesh.go a677225b8c1cf4770f93bb5f11d626aadac0e1f86bee9ff435b648960160248c w
F leaf/agent/nats_mesh_test.go e56e459c7159a6c92e0f686121834852bcfd2fead3bc77e032816b602abf0fd4 w
F leaf/agent/nats_test.go 9a09dfd972b5190378a0d5545d480b0b42989b6ae690e1a4456f891acec3ae5e w
F leaf/agent/notify/device_registry.go 7b2151507290f2a623190c05701c6e270ad55807920b6d6b1aeab4249742f276 w
F leaf/agent/notify/device_registry_test.go 406244c228a02d0d0ba1c4126cdadf0dbc5e19cad8232625706e3a45028e9dff w
F leaf/agent/notify/message.go 0c27cb575063f57633289e59287bfa390191ee1efb3ff55f098e486cfdaf0f7d w
F leaf/agent/notify/message_test.go 59f583350893d5f63e07868c55d4d205c487fc30a5b2b197ec7b1dfac0912945 w
F leaf/agent/notify/notify.go e60c106d76556362bd1d1d3293790d8b71adb603fbb59638f38cdbe4e4ce8137 w
F leaf/agent/notify/notify_test.go a992913b36129c1763a8436313a95132c566915c0e5e68cc9bd9c3911280d1ee w
F leaf/agent/notify/pubsub.go 4a3fd94d79b4e0f84955c8a4e8f9f8d8cffd8652ca9c60651c8be58743699922 w
F leaf/agent/notify/pubsub_test.go 2bfc3421a464edf051aa25df346e7cc0c6eba2443e60f5cfda9d874dec02f56d w
F leaf/agent/notify/pubsub_traceparent_test.go 58a0ceea75b06a7933f545567117f9a3bc201e619d733609756bb6cb06101214 w
F leaf/agent/notify/service_from_path_test.go 5ad4aaac3090eed319873b10d427534a7a25e627868e9eec3748057d4b8d8a8a w
F leaf/agent/notify/service_methods.go 695a3810c409b232250bacc1e200bbdd744137d7ab0c2e26866010d7cf0d1d61 w
F leaf/agent/notify/service_methods_test.go 5529a80d5a5136fc03f41977b7d54a10e76758e3fb2e1ad5a916d9f461f7896d w
F leaf/agent/notify/store.go 83393a3e961141e96f79e19d73365b5e7b6313c2a8f34c59b8fefdd41d0c2199 w
F leaf/agent/notify/store_test.go 233d3a2c44c78d1569ee8acee34283370c1a59c3264e6e00da50342769c45695 w
F leaf/agent/notify/token.go 91cbc2cbe0a0f2aab1ae96276398ef644c6273c1289230cae31f1b511c29af8a w
F leaf/agent/notify/token_store.go 3cd2ccca017ff143564c9c2726f0bb995cf507a74c1a73e7b21455243635ad07 w
F leaf/agent/notify/token_store_test.go 124ec8a01bbac2481fb998b2adf6419f3de9dc4bb4c5f343d18494b5d47b9128 w
F leaf/agent/notify/token_test.go 9729d37223c7240294d2cc594703fb31691a96f3f6b897ecef9e44823ddccd19 w
F leaf/agent/notify/watch_drain_test.go 4c23c6d917db40a7c5541f9fe9734808a730edd3b53d4dc7e5742cc2a0a2782e w
F leaf/agent/notify_integration_test.go 8c3ab2f6001e5e1197b1ac12e6f7bb6572018379f2406dd566092151e63369b3 w
F leaf/agent/peer_registry.go f56f856f2fe1ecd638da9c725ae0b1775a45802b1cc31de4fd59e3d1a520b048 w
F leaf/agent/peer_registry_test.go 54268f56578ab86098fffb577be0a725b6bdc3b284fcc3fcc237034818596ed7 w
F leaf/agent/serve_http.go 00fb6e52dda4f64aa726f997bddee18c3bd0bbef57e79095b96579c60f814d41 w
F leaf/agent/serve_http_test.go 33def963efed22e03b5cdc2fd51a2a9cbfcff17e5f5f43d9f1971cf2c2f3957e w
F leaf/agent/serve_nats.go 87e61dab7ce2d5d8294f69bce7f91a8f0bc5783a18a834c371603b243a78d00a w
F leaf/agent/serve_p2p.go 05ad1a7ebf7276a449a33d0edf505c7c9aa4dce7dfbcc6537597f10c6a95cbae w
F leaf/agent/sidecar.go 2870b36943082bf7aceb0340845d4d436402e527ba6cf9017e7edd410d1148ca w
F leaf/agent/sidecar_test.go b60d215af3e656f1de95c836e6273ab72d097b08309c55f8c71672411c7193d4 w
F leaf/agent/sync_outcomes.go 4d019d0eb63057f9c5a3fe76e7f8243e04f09946c389e34c26b40e8e87134a1a w
F leaf/agent/sync_outcomes_test.go 540587879caf0bc2f8f5ab14c184f7c5750b8e3b9f9c169e9620ff53ace0bff8 w
F leaf/cmd/leaf/driver_default.go f452e0414bc2ce72f189b3cbe25b67e0e2f5169acb96dafe50b2b3f02688cd8f w
F leaf/cmd/leaf/driver_wasi.go ae717a4987d8c12ce8249beaa706cb4f2c1e931a7be15a6cf99eed6311963207 w
F leaf/cmd/leaf/main.go 7f7aec238b59a88e29832ed88b5004f7988d846e607bdad7965f65fe3fb19cae w
F leaf/cmd/wasm/main.go 6a6e81c03dce6258f2b70c0b992e2701cae60ac99f5489953733e2e2fac668dd w
F leaf/cmd/wasm/worker.js 38d097b5dbe67b21c49b66f7501449ec55dc6e7280e8e5c050cc6508864b8b7a w
F leaf/go.mod 29f7e7fc6d917d2900262bbc56e6657883c4c262a0b9c3440f27ff5c7dbd5d61 w
F leaf/go.sum 0819df8b3c1a4b4dd5cdaa91bda95a45aa0fa60f617630723196adf07717b271 w
F leaf/telemetry/cache_metrics.go f8fe78f94e2bd3ad1a606b39f972bf03f2a309ad268d4cebac98ed92817b282a w
F leaf/telemetry/cache_metrics_noop.go 512931bccebacf30480dabf46126f6e9da9a8e1ba504cdfd6e8cec4731d28752 w
F leaf/telemetry/checkout_observer.go 481a867f57d0b39e8cfe0eaf492f7761bf7ec91ceeb0e686c7e088f97d096c3b w
F leaf/telemetry/checkout_observer_noop.go c4a1e1e3cc62b76a9ca0e9413a3446eef2a88ef6341f69c5f09c5ee60e1a03f2 w
F leaf/telemetry/ctxslog.go 25c049729af31d9a2e0d9cbb3f5fe80c10058c821b0c35aced61bdfed52a673d w
F leaf/telemetry/ctxslog_test.go bb04f5c09e429b9df3c3a446fcec12e23a63a5ed07b0483622b3c2fe50dfaf36 w
F leaf/telemetry/noop.go 3d5939ea933ee58c6ab197d8aec680f6e905cfcb1210b7484b8173a61ae87924 w
F leaf/telemetry/observer.go 40fc3f31ed483795b9ab406026c9b6ef2540ae34745ac2a5717561068bc297c6 w
F leaf/telemetry/observer_test.go 9d3259e09ca9d65702f9afebe4dccecaf91d21a9e42801fefe62d6c9e234a62f w
F leaf/telemetry/setup.go d919c5d0fb73a60cc3046aba38f0118a672d31207ea32bea6d8a2300c3e24b2a w
F leaf/telemetry/setup_test.go 25d5355bc89127c1f95dac6758d27ce1b6d34d4a00f81072e7025f469208cfa1 w
F leaf/telemetry/verbose.go 78b9a0e1a6d7e3816a910126e891ab0592887000dc897c561b497483e190148b w
F leaf/telemetry/verbose_test.go 0f38c85da4459edd6b84b7e0a3241fe415e2e031933e300222e9c4ffa142ff71 w
F leaf/wsdialer/conn.go ce53d72b81e8fb1156ccc63685d33f52a81ec9976f9bff0ec23858a95117b8ee w
F leaf/wsdialer/dialer.go 4d69f9edd220fdd98a27938b0733079f88e09b5342b62534443bdc7ccd50cb4c w
F scripts/build-docs.sh 4f29d67e92596e7a502d6bbcd975924c465f2f610844946c767458400ce71fa7 x
F scripts/gen-llms-txt.sh 7570fc3d353d649a75e1a3dc1c2b351317dbcc9b3edc4812a3d72d650a68490f x
F scripts/release.sh dca4c00590c1357e0ad823dcbb9c1e6151dda0fe4da526deb0d6d3a99cb75325 x
F scripts/sync-version.sh 781b4f4b4dc63586a4d1e2df54ec788b3191bbbe88351c8eca11f81d5f59bdcd x
F sim/README.md e32cf427f11c0e96d89e44b93a6ce9453ffcfd49efe4ea88c08470d2de7e73bf w
F sim/agent_clone_test.go e1220aec2271750bba16b1837cd1400c1d4925323dabc93faa0213bb14eda915 w
F sim/buggify.go da268bc023df798e218003f35f105b824d028b3101f9b051219a6a205f3d85a3 w
F sim/buggify_test.go 92518394822915368aafcca219833ccc683981f93dc99bb27698c1ee15e77662 w
F sim/checkout_test.go 92518394822915368aafcca219833ccc683981f93dc99bb27698c1ee15e77662 w
F sim/cmd/soak/main.go 159da7dd4f57203adde30b31edf87ce195e35ca501a6ed84f660bc42ae73bad1 w
F sim/config.go 93ed2e3b218672192dc529f82c83c823ca8ffb62e78e3d27bdc0ca604906afb2 w
F sim/diff_interop_test.go 92518394822915368aafcca219833ccc683981f93dc99bb27698c1ee15e77662 w
F sim/equivalence_test.go 92518394822915368aafcca219833ccc683981f93dc99bb27698c1ee15e77662 w
F sim/finfo_interop_test.go 92518394822915368aafcca219833ccc683981f93dc99bb27698c1ee15e77662 w
F sim/harness.go 6d200abc17574b6ca01ab7a7cb5f0ff22a45979f202e6e695afe3ad221cb75a2 w
F sim/hub_leaf_test.go 48e796ff43e0277386710abf8fec1f37fb64fd65a1e68cd66d4f1f9bdb97b79d w
F sim/hub_nats_sync_test.go 9c8402feee408faa6a11c2162bb0e86f8951fd26de774b65ed131cf81d8df559 w
F sim/interop_test.go 92518394822915368aafcca219833ccc683981f93dc99bb27698c1ee15e77662 w
F sim/invariants.go d98dfde2a6f67a6bf502e15ccd68ea7e3e117154da4a09f1b75737a93d0d0961 w
F sim/iroh_test.go 79fd43a1908fce0320b4481fc0db924842294f673cf0d3373c53e4d04d54c527 w
F sim/nats_iroh_test.go 31ffea9a052a6fd5eb710ddabbd9d4858e039dd17dee8b70ba3a2276b9c6ca57 w
F sim/otel_test.go 92518394822915368aafcca219833ccc683981f93dc99bb27698c1ee15e77662 w
F sim/proxy.go 3f9fc38d150422c3bab3859a83178d8d3e755d7285a6ee6d6867d1cb392c6c0a w
F sim/proxy_test.go 92518394822915368aafcca219833ccc683981f93dc99bb27698c1ee15e77662 w
F sim/rebuild_test.go 92518394822915368aafcca219833ccc683981f93dc99bb27698c1ee15e77662 w
F sim/schedule.go 1d9f957c99ffe50e972f6337aaeab189b67d98aea3a8e23cf29243b915177e9d w
F sim/schedule_test.go 92518394822915368aafcca219833ccc683981f93dc99bb27698c1ee15e77662 w
F sim/seed.go eae400275310a62feca35f5b90fc1f7c4b1abfce2ff37931857649aa8756a762 w
F sim/serve_test.go 92518394822915368aafcca219833ccc683981f93dc99bb27698c1ee15e77662 w
F sim/shun_test.go 92518394822915368aafcca219833ccc683981f93dc99bb27698c1ee15e77662 w
F sim/sim_test.go 92518394822915368aafcca219833ccc683981f93dc99bb27698c1ee15e77662 w
F sim/uv_test.go 92518394822915368aafcca219833ccc683981f93dc99bb27698c1ee15e77662 w
F testdata/fossil.fossil-shm 9ebc781520e48e9f9c96ebab3dfe403f979096798a7883c353876e9950253d3e w
F testdata/fossil.fossil-wal a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434a w
F wrangler.jsonc 6ea5fedb8aa3f76a9b505a411f9bcd82f23764d50a40645f33e237b7ff433b4d w
P 7f0fbfa6efc978a42adee13ab7bcbadffc5bf1c2605003312b561d527072c490
U [email protected]
Z be8c26ff3565d5c77739f5b82480beb9