{"_id":"@geonosis/ledger","_rev":"27-5e7d0342678a08c3f62829e189c56a5e","name":"@geonosis/ledger","dist-tags":{"latest":"3.0.0"},"versions":{"1.0.0":{"name":"@geonosis/ledger","version":"1.0.0","keywords":["ledger","gate","plan","proof","ci","monorepo","architecture"],"license":"Apache-2.0","_id":"@geonosis/ledger@1.0.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/ledger","bin":{"geonosis-ledger":"bin/geonosis-ledger.mjs"},"dist":{"shasum":"9b7b6ea75620eebe30c021f90aca0fa00e54e32a","tarball":"https://registry.npmjs.org/@geonosis/ledger/-/ledger-1.0.0.tgz","fileCount":8,"integrity":"sha512-4png77p5MgXhW7dLylBO8jaUUYx3AzwGCkt3JG/68ySxptdpQSJYwmwjQKNVgsSw//eBUCPEacRn9gXsazl4HQ==","signatures":[{"sig":"MEUCIQC4QJ4fsC3A8F9qYbm5cJ3C46kCkNgnh/tcebEoXQykvAIgYVQhKeiwu028TTaYIdumHUBZZKwex751SFtARyDhDuQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":124160},"main":"dist/index.js","type":"module","engines":{"node":">=22"},"exports":{".":"./dist/index.js"},"scripts":{"build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/ledger"},"description":"The tick ledger — validate and refuse, never author: no criteria, no proof, no runtime code, no revisit trigger, no delivery.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ledger_1.0.0_1788106378907_0.9636512715254426","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@geonosis/ledger","version":"1.1.0","keywords":["ledger","gate","plan","proof","ci","monorepo","architecture"],"license":"Apache-2.0","_id":"@geonosis/ledger@1.1.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/ledger","bin":{"geonosis-ledger":"bin/geonosis-ledger.mjs"},"dist":{"shasum":"e6e5b1993902d9ed0c13240a9fb5363b3873c1a0","tarball":"https://registry.npmjs.org/@geonosis/ledger/-/ledger-1.1.0.tgz","fileCount":8,"integrity":"sha512-5H8nhrQNE/YZRv8OwvLLs6JlHIuFYWXr5fFgYa9nEYWPbc+fJF4KPe10lrjXcIuVjj9e9ldwE8RNylMoK4fdoQ==","signatures":[{"sig":"MEUCIQDWlFG4/j579eCCJBl7BDbKwo2qVkut+qJrgErtw28l5gIgHCOwRCVXzFxwzb9RSREt8j6Toa5OiFBwP86q8v0U3wg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIDKjJbRVQtwoWJxjEtgj3NWoLkINag6wnHgTLY8+qwxqAiEA3X8f9xI6byoPnq7whb3hwh/3QzmaOxzKRYaNVc9xqF0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":125164},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/ledger"},"description":"The tick ledger — validate and refuse, never author: no criteria, no proof, no runtime code, no revisit trigger, no delivery.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ledger_1.1.0_1788114905829_0.7542803307816055","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@geonosis/ledger","version":"1.2.0","keywords":["ledger","gate","plan","proof","ci","monorepo","architecture"],"license":"Apache-2.0","_id":"@geonosis/ledger@1.2.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/ledger","bin":{"geonosis-ledger":"bin/geonosis-ledger.mjs"},"dist":{"shasum":"8f3ec57a000132556945f2948d3c214c1f4b3b60","tarball":"https://registry.npmjs.org/@geonosis/ledger/-/ledger-1.2.0.tgz","fileCount":8,"integrity":"sha512-uudq/pfo+6gxnFNkwnd7V8KgNJppYCmtYppGTxDjq/aK5pwLOkGVCCWLnsdVOhtawQTKv2PCvLt9f/qQGhAlGA==","signatures":[{"sig":"MEQCIElr1aGtVb+Zh6jl6ImIyk/v6euWZ3/JF5DQtzbQY3czAiAU3DettV2oF+DVIjNRgeONR6tsFsZyPLaI/1d7Mphs4w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIFcZpqOdELcNbqpE9hKhKTiZWvHzYHK2W5KKEHPXnvsEAiEApyjAXuw9EX2wBFHwO4nmEj9rysRfUCKMzQSXBMWerJI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":125164},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/ledger"},"description":"The tick ledger — validate and refuse, never author: no criteria, no proof, no runtime code, no revisit trigger, no delivery.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ledger_1.2.0_1788119091981_0.7148207065488179","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@geonosis/ledger","version":"1.3.0","keywords":["ledger","gate","plan","proof","ci","monorepo","architecture"],"license":"Apache-2.0","_id":"@geonosis/ledger@1.3.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/ledger","bin":{"geonosis-ledger":"bin/geonosis-ledger.mjs"},"dist":{"shasum":"7f29c93d3bfad565e838296bbc16a8daf1e0b465","tarball":"https://registry.npmjs.org/@geonosis/ledger/-/ledger-1.3.0.tgz","fileCount":8,"integrity":"sha512-koGDCdW/o0JyXJrrmf4ZHILLJQTdtnpqmcObQb3pg4gLaRkRcZVbgCA2xZiAg/fIWxcimrNvhNethTC27B6nMg==","signatures":[{"sig":"MEQCID4KwyuQBrS5UtecYx7ASYJrcDhLdAM5QVvRzx/7mYivAiBOrC4qhiDTY7NTX0BTPF98ruywhK7R59NijPsqnirl5w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCuNLpB+WKXCuehIVxQH2+nx/r+3cND8NNjZuuDsblpsAIgKF1zA//coCHUcEpoWG1eFfiokoOUwB+RSSjc/S+m49c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":128284},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/ledger"},"description":"The tick ledger — validate and refuse, never author: no criteria, no proof, no runtime code, no revisit trigger, no delivery.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ledger_1.3.0_1788254884976_0.2925236500427395","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@geonosis/ledger","version":"1.4.0","keywords":["ledger","gate","plan","proof","ci","monorepo","architecture"],"license":"Apache-2.0","_id":"@geonosis/ledger@1.4.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/ledger","bin":{"geonosis-ledger":"bin/geonosis-ledger.mjs"},"dist":{"shasum":"faecd1962982d8c2a53c874de91735ebe8638c90","tarball":"https://registry.npmjs.org/@geonosis/ledger/-/ledger-1.4.0.tgz","fileCount":8,"integrity":"sha512-9KCiI84m5zZzb1VVcY0mY1VfB5RAuE+UfRNbDQ2dNlSitpEVRHjLyF6jz2JcHyYU+/NJJ+OR2wEwEXVFU/NW4w==","signatures":[{"sig":"MEUCIQCt4T/OihuBJqKJYqCJNh/1e6IqTiCYX+Wvs/XSCyVcKQIgUPGkxZFrHgDbopx+yH503qd/aNQZX8RuVYP8fLmXau0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCyakCOTmVHrgaE2QkrJimBu+f5DNJGzQCqsdVzhvJe1AIgT5wd+AdgsfhJKAGPcV61XPxV1dIKG9eIrw0ftFb55U4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":132395},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/ledger"},"description":"The tick ledger — validate and refuse, never author: no criteria, no proof, no runtime code, no revisit trigger, no delivery.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@geonosis/ratchet":"1.4.0"},"_npmOperationalInternal":{"tmp":"tmp/ledger_1.4.0_1788269002608_0.46107815327634327","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@geonosis/ledger","version":"2.0.0","keywords":["ledger","gate","plan","proof","ci","monorepo","architecture"],"license":"Apache-2.0","_id":"@geonosis/ledger@2.0.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/ledger","bin":{"geonosis-ledger":"bin/geonosis-ledger.mjs"},"dist":{"shasum":"88330e4bbc4b708404e23269232c682a57ab4b09","tarball":"https://registry.npmjs.org/@geonosis/ledger/-/ledger-2.0.0.tgz","fileCount":8,"integrity":"sha512-RbqstB3C4pBBaWEnjvjrFxgVUqW63Z3kP5qk+1DSOvOypiV2bgOYQ3vRubjVYlh6mIGMozRScpB+qAZvsQoTpA==","signatures":[{"sig":"MEUCIFi/PHesYZyU4q1n6kfn7nuqOmacRYW/fGtMfWoKthcDAiEAnuw75/VaOXgNJGKjBmMpgzelKrWXiMldPFRPmHppa78=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCEJJkAZdIwI6eq8M5mmRIKOEM2TZDYaYdVx0oRE9h2KAIgeCv7juMK2Q2F+L71/r7lTML41gc2zZTvbTcwxDsDl8g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":173238},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/ledger"},"description":"The tick ledger — validate and refuse, never author: no criteria, no proof, no runtime code, no revisit trigger, no delivery.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@geonosis/ratchet":"2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ledger_2.0.0_1788332204916_0.14764894730272582","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"@geonosis/ledger","version":"2.1.0","keywords":["ledger","gate","plan","proof","ci","monorepo","architecture"],"license":"Apache-2.0","_id":"@geonosis/ledger@2.1.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/ledger","bin":{"geonosis-ledger":"bin/geonosis-ledger.mjs"},"dist":{"shasum":"562ff84f54cd1796fb9ae1b58193bd2a39ba4a5a","tarball":"https://registry.npmjs.org/@geonosis/ledger/-/ledger-2.1.0.tgz","fileCount":8,"integrity":"sha512-ksnB+f4uDToXGPZOec4L+5kfrTAX6slmKy6W4tCRfPTsL1Ays39Ol63p01FU6D5Er31Hv4SzvJPzeQWXRclibg==","signatures":[{"sig":"MEUCIGU4sG5QzGiHh9NXReRiYqoro3jgUaYLPNHJ9oJU7rfEAiEAh7nSN84q9P9B/iGkswNt842D1JEbqh/af5YcSEiCGKg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDCq5Q5A2Nc5eBN7ZvOc6gkgEMGID1Qw96YKJUoM3611gIgVR47gpcy5ybO4QwKS5Q7elPbd1JTwnNVlMwfxYvQYlk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":174716},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/ledger"},"description":"The tick ledger — validate and refuse, never author: no criteria, no proof, no runtime code, no revisit trigger, no delivery.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@geonosis/ratchet":"2.1.0"},"_npmOperationalInternal":{"tmp":"tmp/ledger_2.1.0_1788357215785_0.7884617085993579","host":"s3://npm-registry-packages-npm-production"}},"2.2.0":{"name":"@geonosis/ledger","version":"2.2.0","keywords":["ledger","gate","plan","proof","ci","monorepo","architecture"],"license":"Apache-2.0","_id":"@geonosis/ledger@2.2.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/ledger","bin":{"geonosis-ledger":"bin/geonosis-ledger.mjs"},"dist":{"shasum":"58c899d5ce82474df3f607e55fc0955ad85f3dce","tarball":"https://registry.npmjs.org/@geonosis/ledger/-/ledger-2.2.0.tgz","fileCount":8,"integrity":"sha512-AFQnNBaBea7w+Mcn1D4JpJg61G+MxP9YtErNcWgHowNYIQZSMTdhP0VElS6L1KmE/yKbgUTxNvBimIU5Slay9Q==","signatures":[{"sig":"MEQCICce19KmJZz8cQi0aOKCK+dOTkKUI88F9A5CN/SAfcifAiBSmguSdZ4fENIFtDASiEkmzonr7/QnhL0KF4udXjG6Jg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIBVKfmKK3oLWxKqyT/Lrokzz2+cbQFL53kbwvhkSoFtDAiEA//naXx9ZoILa7Ov8HI9mI7tkvUY+flfQ/S8cha77lEo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":181949},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/ledger"},"description":"The tick ledger — validate and refuse, never author: no criteria, no proof, no runtime code, no revisit trigger, no delivery.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@geonosis/ratchet":"2.2.0"},"_npmOperationalInternal":{"tmp":"tmp/ledger_2.2.0_1788369759033_0.34969699425560696","host":"s3://npm-registry-packages-npm-production"}},"2.3.0":{"name":"@geonosis/ledger","version":"2.3.0","keywords":["ledger","gate","plan","proof","ci","monorepo","architecture"],"license":"Apache-2.0","_id":"@geonosis/ledger@2.3.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/ledger","bin":{"geonosis-ledger":"bin/geonosis-ledger.mjs"},"dist":{"shasum":"43be5926aff6bb1886e0f3871775bdb897f05f5c","tarball":"https://registry.npmjs.org/@geonosis/ledger/-/ledger-2.3.0.tgz","fileCount":8,"integrity":"sha512-zpPf8Fozu7eMrAbg91GlDTQuzsFj357wHN8NyLsaGaRnj5/qpM8n98ePGRuPJbGIiDDKqbVVhs4FDecHSIedqA==","signatures":[{"sig":"MEUCICvcys5rq//djNwpngN6dpI1Bd4H2LRNQ7ADdFm3tSEdAiEApmsZLL67ULgOsezT1K5p3oopZo3jedfW/FzdRqfzxf4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCrWnwaSyUqZRKSw5w3jtT2e6ZeyntcskbCukIYRW4tsQIhALvh40mD00DIy32PmABwCoM0za16q3NA0zteT5XeCVXO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":182740},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/ledger"},"description":"The tick ledger — validate and refuse, never author: no criteria, no proof, no runtime code, no revisit trigger, no delivery.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@geonosis/ratchet":"2.3.0"},"_npmOperationalInternal":{"tmp":"tmp/ledger_2.3.0_1788420083284_0.20223659079077905","host":"s3://npm-registry-packages-npm-production"}},"2.3.1":{"name":"@geonosis/ledger","version":"2.3.1","keywords":["ledger","gate","plan","proof","ci","monorepo","architecture"],"license":"Apache-2.0","_id":"@geonosis/ledger@2.3.1","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/ledger","bin":{"geonosis-ledger":"bin/geonosis-ledger.mjs"},"dist":{"shasum":"89c73c97b9fb7ade3f37e5f0b5f724de1ad5d96a","tarball":"https://registry.npmjs.org/@geonosis/ledger/-/ledger-2.3.1.tgz","fileCount":8,"integrity":"sha512-TAD8xIpOm87TlUCtA62tgGjk6jqpPlVEI5PSRXFmtvk3+iycXzqmAo8Q5RGOBEmbUFsRTWJiGs15tylYfAPzoA==","signatures":[{"sig":"MEQCIB7pMABKS+VFEkjixYHSOo9Ao+Z02wBsHmjE4kqFKjTSAiA9ayNHcMMMjXNBYoqvcGK63V5MCok3HiDOqkd1MQ3+HQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCQeiU2THTahCyis/wkiRgscIvfrjjzMfd4NUcohnCfEQIhAPRcWIS3gMCyHL/WDVOEJk3nH/UvHpRPYmk36Ov5rNZp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":182740},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/ledger"},"description":"The tick ledger — validate and refuse, never author: no criteria, no proof, no runtime code, no revisit trigger, no delivery.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@geonosis/ratchet":"2.3.1"},"_npmOperationalInternal":{"tmp":"tmp/ledger_2.3.1_1788435375043_0.36231266601883383","host":"s3://npm-registry-packages-npm-production"}},"2.4.2":{"name":"@geonosis/ledger","version":"2.4.2","keywords":["ledger","gate","plan","proof","ci","monorepo","architecture"],"license":"Apache-2.0","_id":"@geonosis/ledger@2.4.2","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/ledger","bin":{"geonosis-ledger":"bin/geonosis-ledger.mjs"},"dist":{"shasum":"497f3fb45c985f5b0bc2d2a89c5729bed2f93edc","tarball":"https://registry.npmjs.org/@geonosis/ledger/-/ledger-2.4.2.tgz","fileCount":9,"integrity":"sha512-mb2i7INVOwd56chdKgf6whAx+OLcNpUhoQ1w3ZufRjvHPYQenD05WK2R30LPeuDJbYSWiJY0TM6TK2gmfwmG0A==","signatures":[{"sig":"MEUCIF6z9ZFpr1YsI1l6khnrsEKZKBCv+06tBdxudXiyh0LzAiEAwhQPBdPVee4l8F8lldfv4Jg1MHxiDPKvXHZgj6i/ksg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQC1d/jCP6ll++MnvNxYOgjsc6bmVO0a4wOCmkmR42k+3AIhAJr1I55q5UCF8Kl3Xt+KWNNWDtaFjKuW6DEVdIDQGkYz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":216968},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/ledger"},"description":"The tick ledger — validate and refuse, never author: no criteria, no proof, no runtime code, no revisit trigger, no delivery.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@geonosis/ratchet":"2.4.2"},"_npmOperationalInternal":{"tmp":"tmp/ledger_2.4.2_1788444886744_0.44493972458361886","host":"s3://npm-registry-packages-npm-production"}},"2.4.3":{"name":"@geonosis/ledger","version":"2.4.3","keywords":["ledger","gate","plan","proof","ci","monorepo","architecture"],"license":"Apache-2.0","_id":"@geonosis/ledger@2.4.3","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/ledger","bin":{"geonosis-ledger":"bin/geonosis-ledger.mjs"},"dist":{"shasum":"49020ea572176e752e92bf552e9b8a0811618d15","tarball":"https://registry.npmjs.org/@geonosis/ledger/-/ledger-2.4.3.tgz","fileCount":9,"integrity":"sha512-VW3BGFs6V/N9I3ErAKmQbV3cPwPYpREZtTjoL5ylR3etNfUsGOeZOPKI8eC6J99Lznx/uf6Nm12JZWp+S5ujuA==","signatures":[{"sig":"MEUCIF4wtViG1dr4Aucm9abs2y+tMkPAOEnTjv87SbAgs1b9AiEA2h1N9OuVEyEL26jua2MIjzirWc998rqy5Ju/Y92U5pA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCICmQcruegxSnrtT8Aogm1DPtmJuL8i5zheiqVr39KHBBAiEAswoASKxLOV0ke0ClfLJq9cSmzJnMh4VRneaheT+/8jw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":216978},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/ledger"},"description":"The tick ledger — validate and refuse, never author: no criteria, no proof, no runtime code, no revisit trigger, no delivery.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@geonosis/ratchet":"2.4.3"},"_npmOperationalInternal":{"tmp":"tmp/ledger_2.4.3_1788566187580_0.056640237719070896","host":"s3://npm-registry-packages-npm-production"}},"2.5.0":{"name":"@geonosis/ledger","version":"2.5.0","keywords":["ledger","gate","plan","proof","ci","monorepo","architecture"],"license":"Apache-2.0","_id":"@geonosis/ledger@2.5.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/ledger","bin":{"geonosis-ledger":"bin/geonosis-ledger.mjs"},"dist":{"shasum":"f3584c864f2df39b269a160deefd528ae9f3d80a","tarball":"https://registry.npmjs.org/@geonosis/ledger/-/ledger-2.5.0.tgz","fileCount":9,"integrity":"sha512-SUxbQuwaOo9NlploertgjQd4EP8XEOSG1wzAfAoO6asqvKJlk7aLo7WaYBRAbUk+1dsSuB/lMrRxKcZFFVqvlg==","signatures":[{"sig":"MEYCIQDmHrbOkfjG+CdeMLHZGwrRShNZZWnTmvKECof8Qoj3BwIhANi6mRmiHXF95MsQEg5oxelsiJPmoUSWgThcTyFB4iP2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDinjC7fUaIEmaADvLR79OagjuEKGX2OT8uzkIRYb7R7wIhAJlzy4r02KDisIrd4ptJB/hzq3xh0FBLabLv6Kp/FRCa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":216988},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/ledger"},"description":"The tick ledger — validate and refuse, never author: no criteria, no proof, no runtime code, no revisit trigger, no delivery.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@geonosis/ratchet":"2.5.0"},"_npmOperationalInternal":{"tmp":"tmp/ledger_2.5.0_1788595448702_0.4700442509591243","host":"s3://npm-registry-packages-npm-production"}},"2.5.1":{"name":"@geonosis/ledger","version":"2.5.1","keywords":["ledger","gate","plan","proof","ci","monorepo","architecture"],"license":"Apache-2.0","_id":"@geonosis/ledger@2.5.1","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/ledger","bin":{"geonosis-ledger":"bin/geonosis-ledger.mjs"},"dist":{"shasum":"0b975e1eb9912e8481471c05293f5322168c18fb","tarball":"https://registry.npmjs.org/@geonosis/ledger/-/ledger-2.5.1.tgz","fileCount":9,"integrity":"sha512-+39N6D0hsgvtWp7WtU/Hd3ugPYB/+oG6f/sTtW2+Z2fUf6yW6cfD8hljQR5SmUJBApitDadBmsKelRdLIPYWMA==","signatures":[{"sig":"MEYCIQC/ZGnqqH00Wgr3m6tYcidQCoKhxc7aBUMmUoZ/oa8rGAIhAPXho9J5SWz1rPH9jPpk0GA56ibl2WFV6gPSxxTAwIpH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDDq2ZJPj6qiBRQaIRBql5fuvBOQiKpnPr8oRlvo941VQIgD5Ib0YzqjEmijWomkg9NancSjfBinHxKvdZYoZVbVz4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":216960},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/ledger"},"description":"The tick ledger — validate and refuse, never author: no criteria, no proof, no runtime code, no revisit trigger, no delivery.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@geonosis/ratchet":"2.5.1"},"_npmOperationalInternal":{"tmp":"tmp/ledger_2.5.1_1788685808502_0.5742311973340024","host":"s3://npm-registry-packages-npm-production"}},"2.5.2":{"name":"@geonosis/ledger","version":"2.5.2","keywords":["ledger","gate","plan","proof","ci","monorepo","architecture"],"license":"Apache-2.0","_id":"@geonosis/ledger@2.5.2","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/ledger","bin":{"geonosis-ledger":"bin/geonosis-ledger.mjs"},"dist":{"shasum":"a926b685c64be5fac7633d333bdcdc63478de44b","tarball":"https://registry.npmjs.org/@geonosis/ledger/-/ledger-2.5.2.tgz","fileCount":9,"integrity":"sha512-uLSfk/yRl0p9TteldOcVqIfkVL7/PCSgPDafyfCFAiF96ega9iemFvqWvRfdz5Njm05x5xIE3DgcOL0PJopcAQ==","signatures":[{"sig":"MEQCIFSF28Y2kBm5pjQQ/QYGNMOVD3c49Bzv/FuRFX/WfnoMAiBKIkobOUJL+WbRyeo/wkBSAegGHZj9EpdruQV1XMNe2A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDa+7vzN3oa9vt4TQnfjUf0zbiLqxXBL23x1CJZncYnEwIgTLdzbNvaxeowq5IYGv6uD1ujww7Y/YWLAeJ3uXdRkNM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":216970},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/ledger"},"description":"The tick ledger — validate and refuse, never author: no criteria, no proof, no runtime code, no revisit trigger, no delivery.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@geonosis/ratchet":"2.5.2"},"_npmOperationalInternal":{"tmp":"tmp/ledger_2.5.2_1788701328373_0.8530251089328973","host":"s3://npm-registry-packages-npm-production"}},"2.5.3":{"name":"@geonosis/ledger","version":"2.5.3","keywords":["ledger","gate","plan","proof","ci","monorepo","architecture"],"license":"Apache-2.0","_id":"@geonosis/ledger@2.5.3","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/ledger","bin":{"geonosis-ledger":"bin/geonosis-ledger.mjs"},"dist":{"shasum":"1dae23cbb7c0e3912719af33ea7a056bded43bf6","tarball":"https://registry.npmjs.org/@geonosis/ledger/-/ledger-2.5.3.tgz","fileCount":9,"integrity":"sha512-NWoKStwZxuAuPFhitDQBD/uKa8CEXlDjGoxMYpBJETx8Pet1a00YEgknNhyHkAsPAtUPgllxCAM/uPlWRnD3rg==","signatures":[{"sig":"MEYCIQCJPm09Pq2aaFY+euZ/htrevc/sUEDDmwYjxrsEfpw/QAIhAOcmLa+xXlJBx5lgrNfcNN05j+Q0CMY1b88f7x+zPHyH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCfWm+jdA6xmZFJE+0BbD1GXFueulGKhyEu/UKh2EhvewIhALHvhgoMjjW8ZPDuTFHw+gP6hqVTt8UoP+GBBvQ4iWXg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":216980},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/ledger"},"description":"The tick ledger — validate and refuse, never author: no criteria, no proof, no runtime code, no revisit trigger, no delivery.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@geonosis/ratchet":"2.5.3"},"_npmOperationalInternal":{"tmp":"tmp/ledger_2.5.3_1788712703274_0.6767052308593131","host":"s3://npm-registry-packages-npm-production"}},"2.6.0":{"name":"@geonosis/ledger","version":"2.6.0","keywords":["ledger","gate","plan","proof","ci","monorepo","architecture"],"license":"Apache-2.0","_id":"@geonosis/ledger@2.6.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/ledger","bin":{"geonosis-ledger":"bin/geonosis-ledger.mjs"},"dist":{"shasum":"6a83b74c572738770a416993a4309d4c7293c8ad","tarball":"https://registry.npmjs.org/@geonosis/ledger/-/ledger-2.6.0.tgz","fileCount":9,"integrity":"sha512-zb7Kury+FXuKmDiwDSaKt8XqdG67mI7WW/eClT4PMFQ2oT/JKfZapGeiJs2LdgJQ05ZPgOSGrniyNGEYM3XeZQ==","signatures":[{"sig":"MEQCIAzW+/ellROl/wmyAZ88Ma2/QAZ41AtaMqfbUGp9jcxwAiAuroSaLp+bjHI0umhVPw/b9F4aEZbSNAfDkbb75IyOuQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCpPNYuyJ2mpqRPBUfmBA/UrRUxHCzQTSxyls4/oROgOgIgYpivtVJuhwcuDVTqM6XiBlyk4vHmGSvpkjOjSfLcPZQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":218978},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"lint":"oxlint --config ../../.oxlintrc.json .","build":"tsup","test:bin":"vitest run --project bin --root ../.. --passWithNoTests \"$PWD\"","test:exam":"vitest run --project exam --root ../.. --passWithNoTests \"$PWD\"","test:unit":"vitest run --project unit --root ../.. --passWithNoTests \"$PWD\"","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/ledger"},"description":"The tick ledger — validate and refuse, never author: no criteria, no proof, no runtime code, no revisit trigger, no delivery.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@geonosis/ratchet":"2.6.0"},"_npmOperationalInternal":{"tmp":"tmp/ledger_2.6.0_1788776275114_0.949701870693284","host":"s3://npm-registry-packages-npm-production"}},"2.6.1":{"name":"@geonosis/ledger","version":"2.6.1","keywords":["ledger","gate","plan","proof","ci","monorepo","architecture"],"license":"Apache-2.0","_id":"@geonosis/ledger@2.6.1","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/ledger","bin":{"geonosis-ledger":"bin/geonosis-ledger.mjs"},"dist":{"shasum":"dc6104fa91ce0e750a2b34520b96ba04ab7dbb2d","tarball":"https://registry.npmjs.org/@geonosis/ledger/-/ledger-2.6.1.tgz","fileCount":9,"integrity":"sha512-0fJzaGHr6DLHMWEI3+GUzuQBZSSrnWO4Byahf+9x5oy5mu+ZPtqRtGMM22sCKVxeaK8pwQXezOXnRo+cijJxbQ==","signatures":[{"sig":"MEUCIF5IfsVEQ5nBV71J4m/1ocZy3eb6YP+HFVoYQXEtcF0SAiEAxmMr8DYjIT6m5NPi2pbCNi3V6da+jtVpaL1/WkTKWVE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCnCs3RunvM7Dyc11opSlXxU2iGpYuAlauOlxX/1X/avAIhANWgJLtYMFPHTkwIMQjEKvIWzCzZ94lcW9Y/MUt5S3y1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":218988},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"lint":"oxlint --config ../../.oxlintrc.json .","build":"tsup","test:bin":"vitest run --project bin --root ../.. --passWithNoTests \"$PWD\"","test:exam":"vitest run --project exam --root ../.. --passWithNoTests \"$PWD\"","test:unit":"vitest run --project unit --root ../.. --passWithNoTests \"$PWD\"","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/ledger"},"description":"The tick ledger — validate and refuse, never author: no criteria, no proof, no runtime code, no revisit trigger, no delivery.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@geonosis/ratchet":"2.6.1"},"_npmOperationalInternal":{"tmp":"tmp/ledger_2.6.1_1788803869695_0.9546931753754786","host":"s3://npm-registry-packages-npm-production"}},"2.7.0":{"name":"@geonosis/ledger","version":"2.7.0","keywords":["ledger","gate","plan","proof","ci","monorepo","architecture"],"license":"Apache-2.0","_id":"@geonosis/ledger@2.7.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/ledger","bin":{"geonosis-ledger":"bin/geonosis-ledger.mjs"},"dist":{"shasum":"5f3d3223b7c23b6da397d241bb09ef5ebdc3d6b1","tarball":"https://registry.npmjs.org/@geonosis/ledger/-/ledger-2.7.0.tgz","fileCount":9,"integrity":"sha512-awv+Y51S3tKtcRtm4eU8z058f4KSuKCp13YHzrQiH9GIbv9qqCy+tuoub7X5/ojnIHH9RPxgnPvKELfG6irRNQ==","signatures":[{"sig":"MEQCIC4t8yz1r0oBY4TJtctOC5Bpu48mzfEmu4osLodxJOk5AiBmfLdDRPJjpr4u39A42DQw2xtUOyi19sLieS9laD0Svg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIHn2qTBQHLcixzGQrkzfB+z8qUsawWVWf6xfHikzH3LlAiBgo7NwA1tz/TnnR02Uii5NyWCojeCMhHrsJTWZsxeD2g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":221864},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"lint":"oxlint --config ../../.oxlintrc.json .","build":"tsup","test:bin":"vitest run --project bin --root ../.. --passWithNoTests \"$PWD\"","test:exam":"vitest run --project exam --root ../.. --passWithNoTests \"$PWD\"","test:unit":"vitest run --project unit --root ../.. --passWithNoTests \"$PWD\"","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/ledger"},"description":"The tick ledger — validate and refuse, never author: no criteria, no proof, no runtime code, no revisit trigger, no delivery.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@geonosis/ratchet":"2.7.0"},"_npmOperationalInternal":{"tmp":"tmp/ledger_2.7.0_1789209459731_0.935655281111407","host":"s3://npm-registry-packages-npm-production"}},"2.8.0":{"name":"@geonosis/ledger","version":"2.8.0","keywords":["ledger","gate","plan","proof","ci","monorepo","architecture"],"license":"Apache-2.0","_id":"@geonosis/ledger@2.8.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/ledger","bin":{"geonosis-ledger":"bin/geonosis-ledger.mjs"},"dist":{"shasum":"67a4d604c10905a1b206f71e2861dc6d7f0e0c0b","tarball":"https://registry.npmjs.org/@geonosis/ledger/-/ledger-2.8.0.tgz","fileCount":9,"integrity":"sha512-Ixu44x+nr2WphVF+f0K0zx5F6OGUtJrZp/BmZpR49L3N/x8bMcEA/2skP/NcFakE2kNLLNwEWXvgzCG2BThADw==","signatures":[{"sig":"MEUCIQDu5G/cgMaCwfMIslCTrd/07XsoP0e7nokvUg+CLbrz5AIgKniENlrWXFG4Hpd6NpX6rJ4P6bkxJudwJj2ykyzBGwM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQC9MJTHcUv3033HPMjWhUSagDp0LBiAM3Jz7qv2Dy5dBgIhAJhYbfs2yYzujtutgr6RiIff5EnfNJ2UjqDwg1iVdxaz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":221863},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"lint":"oxlint --config ../../.oxlintrc.json .","build":"tsup","test:bin":"vitest run --project bin --root ../.. --passWithNoTests \"$PWD\"","test:exam":"vitest run --project exam --root ../.. --passWithNoTests \"$PWD\"","test:unit":"vitest run --project unit --root ../.. --passWithNoTests \"$PWD\"","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/ledger"},"description":"The tick ledger — validate and refuse, never author: no criteria, no proof, no runtime code, no revisit trigger, no delivery.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@geonosis/ratchet":"2.8.0"},"_npmOperationalInternal":{"tmp":"tmp/ledger_2.8.0_1789421411541_0.9584487401503168","host":"s3://npm-registry-packages-npm-production"}},"2.9.0":{"name":"@geonosis/ledger","version":"2.9.0","keywords":["ledger","gate","plan","proof","ci","monorepo","architecture"],"license":"Apache-2.0","_id":"@geonosis/ledger@2.9.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/ledger","bin":{"geonosis-ledger":"bin/geonosis-ledger.mjs"},"dist":{"shasum":"98df360d9318714c4ec9eed77de528a7a1ee2663","tarball":"https://registry.npmjs.org/@geonosis/ledger/-/ledger-2.9.0.tgz","fileCount":9,"integrity":"sha512-6yXgvfawrHLmUdSGDLQhVqMj/OuAfr4qeGEEiAw+uWmcM+4SsroUeUUU6L08gIuvOvY1ZA5caN9WSZ7AEbVRxQ==","signatures":[{"sig":"MEYCIQDc0SNopXDFCM3dJFOOm3R83uu7LTe9E6HRnSzN20IlxAIhAM8iVlMR6m49vZ7thZjki6W79CNny88wnckgE4SHP95v","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCwWKePh/aOqY1WHWXfpYETI8S6I2Ifu+/tcLIFPrJj2AIgSYyIPH5OFnT+8BwhZ1Jrc8t00QzgVjYwo7DBkEeSwNQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":221873},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"lint":"oxlint --config ../../.oxlintrc.json .","build":"tsup","test:bin":"vitest run --project bin --root ../.. --passWithNoTests \"$PWD\"","test:exam":"vitest run --project exam --root ../.. --passWithNoTests \"$PWD\"","test:unit":"vitest run --project unit --root ../.. --passWithNoTests \"$PWD\"","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/ledger"},"description":"The tick ledger — validate and refuse, never author: no criteria, no proof, no runtime code, no revisit trigger, no delivery.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@geonosis/ratchet":"2.9.0"},"_npmOperationalInternal":{"tmp":"tmp/ledger_2.9.0_1789468539355_0.7802435883900234","host":"s3://npm-registry-packages-npm-production"}},"2.10.0":{"name":"@geonosis/ledger","version":"2.10.0","keywords":["ledger","gate","plan","proof","ci","monorepo","architecture"],"license":"Apache-2.0","_id":"@geonosis/ledger@2.10.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/ledger","bin":{"geonosis-ledger":"bin/geonosis-ledger.mjs"},"dist":{"shasum":"3ed674273a575ba613cda31d42b720c4f7336fd0","tarball":"https://registry.npmjs.org/@geonosis/ledger/-/ledger-2.10.0.tgz","fileCount":9,"integrity":"sha512-kKjqwZhh42Md3ZV/PIlFnHGEYUTFnPePPQUdSFjeSN5MNdyKferauuInx2WC7qq8ynI+zYRmp87VG54kpqEQLA==","signatures":[{"sig":"MEQCIDSCVQ8b1oiOHxtlVnK7Qcq9ynXVwm7ISGVAA2V+gn9UAiBUCh34fNPwk7Q2yM5/iO2Ba6FLaXRwvNgI9c7eqGhbrQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCx/ZEGjkpQ3nbmRbmLDT2rVCp3R9Tc3qmgI44YLyEnXwIgALuzvtnGWG1SuqXLwLFjf2iUyPYqnmUdbdCDbnzAAEU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":221886},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"lint":"oxlint --config ../../.oxlintrc.json .","build":"tsup","test:bin":"vitest run --project bin --root ../.. --passWithNoTests \"$PWD\"","test:exam":"vitest run --project exam --root ../.. --passWithNoTests \"$PWD\"","test:unit":"vitest run --project unit --root ../.. --passWithNoTests \"$PWD\"","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/ledger"},"description":"The tick ledger — validate and refuse, never author: no criteria, no proof, no runtime code, no revisit trigger, no delivery.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@geonosis/ratchet":"2.10.0"},"_npmOperationalInternal":{"tmp":"tmp/ledger_2.10.0_1789489818283_0.1592456049531521","host":"s3://npm-registry-packages-npm-production"}},"2.11.0":{"name":"@geonosis/ledger","version":"2.11.0","keywords":["ledger","gate","plan","proof","ci","monorepo","architecture"],"license":"Apache-2.0","_id":"@geonosis/ledger@2.11.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/ledger","bin":{"geonosis-ledger":"bin/geonosis-ledger.mjs"},"dist":{"shasum":"3834660ab7967d158185f500c699a258b22cdade","tarball":"https://registry.npmjs.org/@geonosis/ledger/-/ledger-2.11.0.tgz","fileCount":9,"integrity":"sha512-L47Fk158FzvbF1W4ODpKUZrwMQTPT4ZJfPK+fKZjS8TwPHeMPltyDG0UH8IyH29kynZh4hl316HpXU7OnMpbbA==","signatures":[{"sig":"MEUCIQDSnihnGRIh/5xdbe+j4Q6DXLkogGgnhFKF/ORZF7f3JwIgP2jaR+xEBAVfy4eBjd/03cVGpxyB5vWX2P35VuaY/LI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIFzP+X9BphXTlJZ5nBjCbxmHeuv63NLuKDDt6YHbmovvAiEAxQS8K8G+dTuyRQIxxv4bzKFLUPtUZjbNY0ro26CN3Cc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":239459},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"lint":"oxlint --config ../../.oxlintrc.json .","build":"tsx ../../tooling/build-step.ts tsup","test:bin":"vitest run --project bin --root ../.. --passWithNoTests \"$PWD\"","test:exam":"vitest run --project exam --root ../.. --passWithNoTests \"$PWD\"","test:unit":"vitest run --project unit --root ../.. --passWithNoTests \"$PWD\"","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/ledger"},"description":"The tick ledger — validate and refuse, never author: no criteria, no proof, no runtime code, no revisit trigger, no delivery.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@geonosis/ratchet":"2.11.0"},"_npmOperationalInternal":{"tmp":"tmp/ledger_2.11.0_1790271839965_0.2753491785684974","host":"s3://npm-registry-packages-npm-production"}},"2.11.1":{"name":"@geonosis/ledger","version":"2.11.1","keywords":["ledger","gate","plan","proof","ci","monorepo","architecture"],"license":"Apache-2.0","_id":"@geonosis/ledger@2.11.1","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/ledger","bin":{"geonosis-ledger":"bin/geonosis-ledger.mjs"},"dist":{"shasum":"ddd60df1180b71910069df690d9148dd22011b05","tarball":"https://registry.npmjs.org/@geonosis/ledger/-/ledger-2.11.1.tgz","fileCount":9,"integrity":"sha512-F0pr4jfRcW6IC4zrhXI1o8Z2DhuFHnJur3yYpzVhI7FbFvfut7OpUoNeHdeZevlfZLEIVHPO3XJoTxlFgHmhJQ==","signatures":[{"sig":"MEQCIEfgYGrZwAuGYlEbaJgCv3EobaKaWBioxMFGm3buKx44AiB65O8E3LLyxqJearfr4TWvDcVLL5ZIIZRtvXaQbXMykQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDnIWxqRRRXTIdIkSeTLtigZapsyBSECYva/nrVjfZzigIgJ7kwHhdCCGE9XECX0YM7hol+1IJ9eC5edz+z/ihCN+g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":240049},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"lint":"oxlint --config ../../.oxlintrc.json .","build":"tsx ../../tooling/build-step.ts tsup","test:bin":"vitest run --project bin --root ../.. --passWithNoTests \"$PWD\"","test:exam":"vitest run --project exam --root ../.. --passWithNoTests \"$PWD\"","test:unit":"vitest run --project unit --root ../.. --passWithNoTests \"$PWD\"","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/ledger"},"description":"The tick ledger — validate and refuse, never author: no criteria, no proof, no runtime code, no revisit trigger, no delivery.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@geonosis/ratchet":"2.11.1"},"_npmOperationalInternal":{"tmp":"tmp/ledger_2.11.1_1790351229942_0.3101751586533019","host":"s3://npm-registry-packages-npm-production"}},"2.12.0":{"name":"@geonosis/ledger","version":"2.12.0","keywords":["ledger","gate","plan","proof","ci","monorepo","architecture"],"license":"Apache-2.0","_id":"@geonosis/ledger@2.12.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/ledger","bin":{"geonosis-ledger":"bin/geonosis-ledger.mjs"},"dist":{"shasum":"d5c70f791dceab6ca6e15d6c93cc47ff13a1a84b","tarball":"https://registry.npmjs.org/@geonosis/ledger/-/ledger-2.12.0.tgz","fileCount":9,"integrity":"sha512-6ae7mVuYAI0iDhpJHz3dd3hBXu3JDWY2dPtqsjL9JCk4IcdjhdR1+ROiHyrv8myccvt1Jv7K24u7gEN/x212Qg==","signatures":[{"sig":"MEUCIGV/J3yc/2GLLlXRsmWV/4sjvAoa1iBF2pZ8vxiGmLMbAiEA9gSv/J9WowTNkJLFlUfOvX2yjpUnhSs7B7S3U1uqST4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDYiwd291611LT7rzmKyt/k/+ccU5EBUXJeakpKlUfvvQIgftVym80Xpk8M1glyMQdNwNVYOjac7ICSuMRM3lw23Oc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":240060},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"lint":"oxlint --config ../../.oxlintrc.json .","build":"tsx ../../tooling/build-step.ts tsup","test:bin":"vitest run --project bin --root ../.. --passWithNoTests \"$PWD\"","test:exam":"vitest run --project exam --root ../.. --passWithNoTests \"$PWD\"","test:unit":"vitest run --project unit --root ../.. --passWithNoTests \"$PWD\"","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/ledger"},"description":"The tick ledger — validate and refuse, never author: no criteria, no proof, no runtime code, no revisit trigger, no delivery.","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@geonosis/ratchet":"2.12.0"},"_npmOperationalInternal":{"tmp":"tmp/ledger_2.12.0_1790356271066_0.41092054405995904","host":"s3://npm-registry-packages-npm-production"}},"2.13.0":{"name":"@geonosis/ledger","version":"2.13.0","keywords":["ledger","gate","plan","proof","ci","monorepo","architecture"],"license":"Apache-2.0","_id":"@geonosis/ledger@2.13.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/ledger","bin":{"geonosis-ledger":"bin/geonosis-ledger.mjs"},"dist":{"shasum":"603ac9294a059b0f4ebd93f9105f697f84979db6","tarball":"https://registry.npmjs.org/@geonosis/ledger/-/ledger-2.13.0.tgz","fileCount":9,"integrity":"sha512-lNtI6/IBKXmSh4EnDzYwcI2P0HoGCi9VkmGHowxhYE9t0BwnGKYpAwuyw1IreQXm7S6H4mKw/qBsv0jQEP1R7A==","signatures":[{"sig":"MEQCIB8IUDfqwLvDVVz5uKT/wyCCZBbBArd8TVwOleMdyARNAiBVdJ/tK0zWmoSBJDDWciFCJV97xPhnhbxI7HfvzI5wYA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIFhn1Dxve7haFDpqqpgeTMt2PIQNzrSYcbsojjPQqloQAiEAu2GUoFD8DKy4cRM9wSQwuQAnySTdRSH1qzzzjFZqUlA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":228547},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"lint":"oxlint --config ../../.oxlintrc.json .","build":"tsx ../../tooling/build-step.ts tsup","test:bin":"vitest run --project bin --root ../.. --passWithNoTests \"$PWD\"","test:exam":"vitest run --project exam --root ../.. --passWithNoTests \"$PWD\"","test:unit":"vitest run --project unit --root ../.. --passWithNoTests \"$PWD\"","typecheck":"tsc --noEmit"},"_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/ledger"},"description":"The tick ledger — validate and refuse, never author: no criteria, no proof, no runtime code, no revisit trigger, no delivery.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@geonosis/ratchet":"2.13.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ledger_2.13.0_1790432672425_0.17936418811715704","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"_id":"@geonosis/ledger@3.0.0","bin":{"geonosis-ledger":"bin/geonosis-ledger.mjs"},"dist":{"shasum":"9fd7dc642f32113dd70d80451417b8fc38697d8d","tarball":"https://registry.npmjs.org/@geonosis/ledger/-/ledger-3.0.0.tgz","fileCount":56,"integrity":"sha512-p67hvKPQA/C5GMZj9tHcg5nrahS0sfiD+obL/wui0Fs8qj+B5mtlWRcSeaTEBvz3g2lQuiwjpKu4HnGg3DlH1w==","signatures":[{"sig":"MEUCIQCqVzt+83PZvvT4nbFJBlZgZRnHkd/CK2zne3xV7ZBc3gIgKqM5XdeFO/iYSdphBX+RYfmqJCdZslL3GUFNVdQtMak=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIDR5HFxxST1N3oaF1jRcjkbYhSleVw+pwqGKQyF+NpeTAiEAqaF8qb4rusSA0WSXaA07d+rBE5Pk2Bd7/arJc3t/rqk="}],"unpackedSize":239706},"main":"dist/index.js","name":"@geonosis/ledger","type":"module","types":"./dist/index.d.ts","engines":{"bun":"^1.4.2","node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"license":"Apache-2.0","scripts":{"lint":"oxlint --config ../../.oxlintrc.json .","build":"bun ../../tooling/build-step.ts bun ../../tooling/bundle.ts","test:bin":"vitest run --project bin --root ../.. --passWithNoTests \"$PWD\"","test:exam":"vitest run --project exam --root ../.. --passWithNoTests \"$PWD\"","test:unit":"vitest run --project unit --root ../.. --passWithNoTests \"$PWD\"","typecheck":"tsc --noEmit"},"version":"3.0.0","_npmUser":{"name":"bayraak","email":"bayraak@gmail.com"},"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/ledger","keywords":["ledger","gate","plan","proof","ci","monorepo","architecture"],"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/ledger"},"description":"The tick ledger — validate and refuse, never author: no criteria, no proof, no runtime code, no revisit trigger, no delivery.","directories":{},"maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"dependencies":{"@geonosis/ratchet":"3.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ledger_3.0.0_1790529107438_0.49486102354463757"}}},"time":{"created":"2026-08-30T16:12:58.681Z","modified":"2026-09-27T17:11:47.840Z","1.0.0":"2026-08-30T16:12:59.045Z","1.1.0":"2026-08-30T18:35:05.924Z","1.2.0":"2026-08-30T19:44:52.057Z","1.3.0":"2026-09-01T09:28:05.062Z","1.4.0":"2026-09-01T13:23:22.686Z","2.0.0":"2026-09-02T06:56:45.008Z","2.1.0":"2026-09-02T13:53:35.872Z","2.2.0":"2026-09-02T17:22:39.134Z","2.3.0":"2026-09-03T07:21:23.362Z","2.3.1":"2026-09-03T11:36:15.160Z","2.4.2":"2026-09-03T14:14:46.841Z","2.4.3":"2026-09-04T23:56:27.679Z","2.5.0":"2026-09-05T08:04:08.796Z","2.5.1":"2026-09-06T09:10:08.601Z","2.5.2":"2026-09-06T13:28:48.483Z","2.5.3":"2026-09-06T16:38:23.374Z","2.6.0":"2026-09-07T10:17:55.275Z","2.6.1":"2026-09-07T17:57:49.812Z","2.7.0":"2026-09-12T10:37:39.826Z","2.8.0":"2026-09-14T21:30:11.627Z","2.9.0":"2026-09-15T10:35:39.437Z","2.10.0":"2026-09-15T16:30:18.372Z","2.11.0":"2026-09-24T17:44:00.059Z","2.11.1":"2026-09-25T15:47:10.034Z","2.12.0":"2026-09-25T17:11:11.163Z","2.13.0":"2026-09-26T14:24:32.520Z","3.0.0":"2026-09-27T17:11:47.619Z"},"license":"Apache-2.0","homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/ledger","keywords":["ledger","gate","plan","proof","ci","monorepo","architecture"],"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/ledger"},"description":"The tick ledger — validate and refuse, never author: no criteria, no proof, no runtime code, no revisit trigger, no delivery.","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"readme":"# @geonosis/ledger\n\nThrough the front door: `geonosis ledger` and `geonosis status` — the metapackage pins this and\nevery other kit tool at ONE version, and passes the exit code through unchanged.\n\nThe tick ledger. It **validates, refuses, and appends one row**. It authors nothing else.\n\nThat restraint is the point. The kit survey found Spec Kit writing 2,100 lines of specification for\n600 lines of TypeScript, and this repo's own plans 002–016 were written and never used; the plans\nthat shipped were written the day the work happened. So `plan new` writes a skeleton whose one\ncriterion is a placeholder that `plan check` **refuses** until a person replaces it, and no command\nhere generates a document.\n\n```bash\nnpm i -D @geonosis/ledger\nnpx geonosis-ledger plan check\n```\n\nExit codes are the same everywhere: **0** passed · **1** a refusal, with its reason on stdout ·\n**2** the run could not be made at all (bad config, unknown flag), with the reason on stderr.\n\n## `plan check [<file>|<dir>] [--since <NNN>]`\n\nA plan needs three things, and every violation is printed as `<file>: <what is missing>`:\n\n| Refusal | What it means |\n|---|---|\n| `no status header` | nothing in the file matches `plan.statusHeader` |\n| `no \"Acceptance criteria\" heading` | no heading matches `plan.criteriaHeading` |\n| `no EARS criterion under \"Acceptance criteria\"` | the heading is there and nothing under it — **under it**, bounded by the next heading of the same depth — matches `plan.criteria` |\n| `no \"Verification\" heading` | no heading matches `plan.verificationHeading` |\n\n`--since <NNN>` exempts every lower-numbered plan: they print as `<file>: legacy` and hold nothing\nup. A gate that refuses the whole back catalogue on the day it is installed is a gate that gets\nuninstalled.\n\nDeclare it once as `ledger.plan.since` in `geonosis.json` and every caller gets it — the flag then\noverrides the declaration for one run. A threshold every caller has to remember is one nobody\napplies: one consumer's `status` read 28 pre-contract plans as `UNDECLARED` noise on every call,\nbecause only `plan check --since` knew the number. `status` reads the declaration too, and its\nplans line separates the legacy catalogue from what is live.\n\nOnly `NNN-slug.md` files are read. A `README.md` in the plans directory is not a plan.\n\n## `plan new <slug> [--discovered-from <NNN>]`\n\nWrites `<plans>/<next NNN>-<slug>.md` — twelve lines: the title, the status header, the two\nheadings, and two HTML comments. The number is one past the **highest** on disk, never the count,\nbecause counting reuses a number after a delete. It refuses a slug that is not kebab-case, and a\nslug some existing plan already carries (naming that file).\n\n`--discovered-from <NNN>` writes the provenance line — `> **Discovered from**: plans/021-one.md —\nwhat that plan's work turned up` — and **refuses** (exit 2) a number no plan file carries. A\ncitation to a plan that does not exist is worse than none: a reader chases it once, and stops\nbelieving the next one.\n\n## The plan graph — `plan ready` and `plan claim <NNN>`\n\nA plan says what it comes after **on its status header line**, in brackets:\n\n```markdown\n> **Status**: DRAFT · **Milestone**: M2 · after: [021, 023]\n```\n\nOne line is authoritative. A plan whose status says ACTIVE on line 3 and whose dependencies live in\na paragraph on line 40 has two answers to \"can this start\", and the second one is never read.\n\n`plan ready` prints every plan whose edges are all done, then every blocked plan **with its\nblockers**, then a counted verdict line. It is a report, not a gate: exit 0 either way.\n\n```\nready    plans/023-three.md (DRAFT)\nBLOCKED  plans/024-four.md — after 022 is ACTIVE, not DONE\nplan ready — 3 ready, 1 blocked, of 4 plan(s)\n```\n\n`plan claim <NNN> [--by <name>]` records the claim in `.geonosis/plan-claims.json` — runner-owned,\nlike the gate report. It refuses (exit 1, reason on stdout):\n\n| Refusal | Why it exists |\n|---|---|\n| `<file> comes after 022 is ACTIVE, not DONE` | claiming work whose blocker is still open is how two plans land in the wrong order |\n| `<file> is already claimed by w39 at <ISO> — one plan, one holder` | two sessions cannot see each other's worktree; the claims file is where they can |\n| `022 is not a plan in plans` | a claim on a number nobody wrote |\n\nThree refusals the graph does **not** make, said out loud: an edge to a plan that is not on disk\n**blocks** (treating \"cannot find it\" as \"finished\" is the silent fallback this kit refuses); an\nedge that is not a number — `after: [W28]` — is a hard error naming the file, never a dropped\nedge; and a cycle is not detected as such, it simply never becomes ready, with each plan naming the\nother as its blocker.\n\n`plan.done` decides which status word counts as finished (default `^DONE$`), because that word is a\nrepo's own: this one writes `DONE 2026-08-30`, and a kit that decided for everybody would read\n`SHIPPED — NOT ADOPTED` as a plan nothing waits on.\n\n## `plan drift` — is this plan still about this tree?\n\nA plan is written at a moment and about some paths. Once it says so, \"is this still true\" is\nanswerable instead of remembered:\n\n```markdown\n> **Status**: ACTIVE · plannedAt: 87d9db5 · scope: [packages/ledger/src/, docs/rules-backlog.md]\n```\n\n`plan drift` compares the two, and its verdicts are deliberately unequal:\n\n| What git did to a file in scope | Verdict |\n|---|---|\n| **renamed** | **STOP** — every line of the plan citing that path is now a citation to nothing |\n| **deleted** | **STOP**, same reason |\n| edited | `changed` — that is the work the plan asked for, not drift |\n| a scope matching no file at all | **STOP** — a glob that fits nothing reads exactly like a scope nothing touched |\n| `plannedAt` naming no commit | **STOP** — an anchor nobody can follow |\n\nA plan declaring neither anchor is **skipped by name**, with the reason, because a skip nobody can\nchase is the `PASS — 0 plan(s)` shape one level down. Exit 1 on any stop, exit 0 otherwise, and the\nlast line always carries the counts.\n\n## `tick --plan <NNN> --commit <hash> --proof <path> [--note \"…\"]`\n\nThe gate. Its refusals, checked in this order, each exit 1 with its reason on stdout:\n\n| Refusal | Why it exists |\n|---|---|\n| `<ref> is not a commit` | a ledger row that names a hash nobody can resolve is a claim |\n| `plan <NNN> does not pass plan check: …` (every violation listed) | a tick against a plan with no criteria has nothing to have satisfied |\n| `no plan <NNN> in <plans>` | the row would point at nothing |\n| `<path> does not exist` · `<path> is a directory` | musa's rule and a Medusa storefront's G3: the proof is the evidence, not the summary |\n| `<hash> ships no runtime code (G0). Its diff: …` | **a Medusa storefront's G0, returned** (D-025): \"a tick MUST deliver real runtime code\". Docs, tests and ledger updates may **ride along**; they may never stand alone. The whole diff is printed so the refusal is checkable |\n| `the commit message is <n> line(s)` · `every changed line is a comment or whitespace` | the two delivery gates below, asked of the commit being ticked: the narration is not the work, and a comment is not a delivery |\n\nOn success it appends **one** row to `ledger.progress` — `| tick | date | plan | commit | proof |\nnote |` — creating the file with its header when absent. **That append is the only write it makes,\nand a refused tick makes none at all.** The tick number is one past the highest already in the\ntable, never the row count, because counting reuses a number after a delete.\n\nG0 reads `git diff --name-only <hash>~1 <hash>`, which is a Medusa storefront's own spelling. A root commit has\nno `~1`, so that one case diffs the tree against the empty tree instead — otherwise a repo's first\ncommit could never be ticked. The ledger runs git only in the repo it was pointed at.\n\n## `land <branch> [--tier <tier>]` — the gate runs on the MERGE RESULT, and the gate merges\n\nThe incident this closes: a red verify was merged past **twice in one day**, through two different\nspellings — `verify | tail && git merge` (the pipe reported the pipe's exit) and reading a wrapper's\nexit instead of the gate's own tail. Neither spelling was dishonest; both were *available*. `land`\nexists so that class cannot be spelled at all: the thing that runs the gate is the thing that does\nthe merge, and there is no exit code in between for anybody to read wrong.\n\n```bash\ngeonosis-ledger land feature-branch --tier fast\n```\n\n1. **Refuses a branch that is not a fast-forward from HEAD**, before any gate runs.\n2. Checks the branch out **detached in a temp worktree** — the merge result.\n3. Runs `ledger.land.prepare` there (if any), then `<ledger.land.verify> <tier>`.\n4. **Green** → `git merge --ff-only`, and an attestation is appended to\n   `.geonosis/land-attestations.json`: `{ attestedAt, branch, report, tier, tree }`. The gate report\n   is copied out of the worktree to `.geonosis/land/<tree>.json` before the worktree is destroyed,\n   so the evidence outlives it.\n5. **Red** → nothing is merged, exit 1, and the refusal quotes **the gate's own tail**: the failing\n   step's id, its exit code, and the lines it printed.\n\nWhy ff-only, measured rather than assumed: with `merge --ff-only` the merge result *is* the branch's\ntree — `git rev-parse <branch>^{tree}` and the root's `HEAD^{tree}` after the merge are the same\nhash. So gating the detached checkout gates exactly the bytes that land, with no merge commit to\nbuild and nothing to reconcile. A branch that cannot fast-forward could not have landed ff-only\nhowever green it was, so it is refused with \"rebase it and ask again\" rather than gated for nothing.\n\nThe **tree hash**, not the commit hash, is what an attestation is about: a rebase, an amend and a\ncherry-pick all make a new commit for a tree that has already been read.\n\nThe temp worktree is removed in a `finally`, green or red — a worktree left behind holds the branch\nand the next `land` fails for a reason that has nothing to do with the branch it was asked about.\n\n`land` deliberately does **not** check that the working tree is clean: `git merge --ff-only` refuses\non its own when local changes are in the way, and its refusal is quoted rather than pre-empted.\n\n### The `land` block\n\n```jsonc\n\"land\": {\n  \"tier\": \"fast\",                     // which tier land runs (default \"full\")\n  \"verify\": \"geonosis-verify\",        // how this repo spells its gate runner\n  \"prepare\": \"pnpm install --frozen-lockfile\",  // shell run in the merge-result worktree first\n  \"branch\": []                        // branches whose push needs an attestation — empty = inert\n}\n```\n\nThe consumer names the **cost**. A Workers + D1 app's full verify is 25 minutes and their ruling is that\nnothing blocks a push for more than ten seconds, so the tier `land` runs is theirs to choose and the\nlong one stays in CI (challenge C1). `prepare` exists because a fresh worktree has no\n`node_modules`, and a tier that fails for the want of them is a red nobody caused.\n\n### `land <branch> --attest-only` / `--from-attestation` — the gate that does not make you wait\n\nA repo whose gate is twenty-five minutes cannot run it *during* a push. So the evidence is recorded\nbefore and read after:\n\n```bash\ngeonosis-ledger land feature --attest-only     # runs the tier, records the green, merges nothing\ngeonosis-ledger land feature --from-attestation # merges iff that record still fits this tree\n```\n\n`--from-attestation` runs **no gate at all**. It merges only while a recorded attestation matches\nthe branch's **current** tree hash, at the tier `land` would have run (`--tier`, else\n`ledger.land.tier`). One more commit and the hash moves, and the record no longer speaks for it. A\nrecord taken at a cheaper tier does not stand in for the one asked for. The refusal names the tree\nit could not find:\n\n```\nland REFUSED — no attestation for feature's current tree 4f2a… at the full tier (attested at fast only) — run `land --attest-only feature --tier full` first\n```\n\n### `land --guard-push [--branch <name>]` — opt-in, and inert until it is not\n\n```jsonc\n\"land\": { \"branch\": [\"main\"] }\n```\n\nWith `branch` empty — the default — the guard prints `push guard inert` and exits 0. That is\ndeliberate: a Workers + D1 app commits straight to main a hundred times a day, and a default-on refusal\nthere is a gate that gets uninstalled the same afternoon (C1). For a branch a repo *does* name, the\npush is refused unless the tree at HEAD is one some earlier run attested.\n\nThe Bash hook wires this: a `git push` is handed to `land --guard-push` with the branch the push\nwould move — the **destination** side of a refspec, since `HEAD:main` moves `main`. The hook keeps\nno list of protected branches of its own; the list is the consumer's, and a second copy is a second\nanswer waiting to disagree.\n\n## `proof capture <slug> --command \"<cmd>\" [--url <url>]`\n\nRuns the command in the repo root and writes `<proofs>/<next NNN>-<slug>.md`: the HEAD hash and\nsubject, the command, the URL if given, the exit code, and the combined stdout/stderr bounded to\n`ledger.maxLines` (default 200) with `… N more lines` stating what was dropped.\n\n**The process exits with the command's own exit code.** A failing proof is recorded *and* still\nfails; a capture that swallowed the red would be a gate reporting green over a run it had just\nwatched break.\n\n## `oath --plan <NNN> --text \"…\" --files <path,path>` and `oath check`\n\nThe covenant, mechanised. One source repo kept 61 KB of prose oaths — obedience to articles, to a\nhierarchy, to a law — and not a line of it could be checked afterwards, including the line listing\nwhich files had been read. What survives the translation is the part a machine can hold:\n\n```bash\ngeonosis-ledger oath --plan 024 --text \"feat(ledger): the oath verb\" --files skills/geonosis-code/SKILL.md\n```\n\n```\noath sworn at 2026-09-01T10:00:00.000Z on plan 024\n  planned commit  feat(ledger): the oath verb\n  read            CLAUDE.md (137 lines, 4f2a1c9b3e07)\n  read            skills/geonosis-code/SKILL.md (165 lines, 8c31d0a5f2be)\n```\n\n`ledger.law` is read whether it was listed or not — it is the thing being bound to, and an oath\nrecording everything *except* the law is the prose again. A file that is not there is a refusal: a\nreceipt for a file nobody read is worse than no receipt.\n\n`oath check` compares the last oath with the bytes on disk **now**, exit 1 naming anything that\nmoved:\n\n```\nCHANGED  CLAUDE.md changed since the oath of 2026-09-01T10:00:00.000Z (137 lines read, 141 now)\noath BROKEN — 1 of 2 file(s) read are not the bytes that were read\n```\n\nThat check is what makes it a gate rather than a diary. A law edited under the reader is a law they\ndid not read.\n\n## `journal --kind stub|mock|guess|skip --where <path:line> --why \"…\"`\n\nAppends a dated row to `ledger.journal`. The four kinds are the four ways a delivery is not the\nthing it claims to be, and no kit in the 2026 survey asked an agent to record where it stubbed —\nwhich is why a stub reads as done in every report after it. An unknown kind is refused (exit 2), as\nis a `--where` without a line number and an empty `--why`. Pipes inside a `why` are escaped, so\nprose cannot break the table.\n\n## `decide --id D-NNN --text \"…\" --why \"…\" --evidence \"…\" --revisit \"…\" [--status \"…\"]`\n\nAppends one row to `ledger.decisions`. Values go under the column that **names** them, not under a\nfixed position — one register has no `Status` column and this repo's had no `Revisit trigger`, and\nboth are legitimate. A column the flags do not fill gets `—`.\n\n| Refusal | Why |\n|---|---|\n| `a decision needs a revisit trigger …` | **C10.** A register whose entries carry no event that would reopen them is a diary. `PROPOSED` with no stated trigger is a decision nobody ever has to make |\n| `<file> has no \"Revisit trigger\" column (C10). Its header has to become: <the exact line>` | the tool **prints** the header the register needs and **never writes it**. A tool that rewrites the shape it validates has become the source of truth for that shape |\n| `<file> already carries D-NNN` | ids are unique or the register cannot be cited |\n| `\"<id>\" is not an id of the form D-NNN` · `<file> does not exist` · `<file> has no table in it` | |\n\nA blank line inside a long register splits the table for a markdown renderer, but the rows after it\nare still the register. `decide` steps over the gap, so a new row lands after the **last** row rather\nthan in the hole. (This repo's own register had exactly that gap, at D-039/D-040.)\n\n## `handoff [--dry-run] [--check]`\n\nRewrites the `## SESSION CLOSE` block of `ledger.handoff`, between\n\n```\n<!-- geonosis-ledger:session-close -->  …  <!-- /geonosis-ledger:session-close -->\n```\n\ncreating the marked block at the end of the file when the markers are absent, and **leaving\neverything outside them exactly as it was**. The block holds HEAD, uncommitted files, the last tick\nrow, the last gate report (`.geonosis/gate-report.json`: tier, ok, finishedAt), and every plan whose\nstatus is not `DONE`/`SHIPPED`/`CLOSED`/`ABANDONED` and not the repo's own `ledger.plan.done` word.\n\nIt is a **pure function of the tree** — no clock, no run id. Two runs over one tree are byte-identical,\nwhich is a test. The handoff file is excluded from its own uncommitted list: writing the block\ndirties the file, and without that exclusion the second run reports the first run's write.\n\n`--dry-run` prints the block and writes nothing. `--check` writes nothing either, and exits 1 when\nthe block on disk is not the one the tree gives now, saying whether HEAD moved on from under it.\n\n## `status [--json]`\n\nThe digest: **six lines, always the same six**, whatever the size of the repo behind them — a\nhundred plans and a hundred ticks print six lines. A digest is a perception surface, and an\nunbounded one is the context window it exists to protect. A contract test pins the exact shape.\n\n```\nHEAD      feat(ledger): tick, proof capture and journal\nplans     ACTIVE 2 · DONE 1\nlast tick | 1 | 2026-08-30 | 002 | abc12345 | proofs/001-a.md | — |\ngate      full — FAILED at 2026-08-30T10:55:00.000Z\nbaseline  6 counter(s)\njournal   0 fallback(s)\n```\n\nNothing here re-runs or re-judges a gate; it reports what the gate report and the baseline already\nsay. A line whose fact is missing says so (`no tick yet`, `no gate report`) rather than disappearing,\nso the shape never moves. The baseline is where `geonosis.ratchet.json`'s `baseline` says it lives,\nelse `gate-baseline.json`, the same answer as the ratchet's `resolveBaseline`, and is read **as\nJSON** — the ledger never imports the ratchet, so it is never one call from rewriting the number it\nreports.\n\n## `burndown --from <rev> [--to <rev>] [--json]`\n\nOpened, closed and carried between two states of `ledger.backlog`: the file at `<rev>` against the\nfile at `--to`, or the working tree when `--to` is not given. A row is a numbered table row, and its\nlast cell is where it stands, matched against `ledger.backlogDone`. A row filed and finished inside\nthe window counts as opened and as closed. A row open at both ends is carried. A row that was there\nbefore and is gone after is listed as vanished, because nobody closed it.\n\nIt is a report: it exits 0 whatever it finds, and 2 when git cannot show the file at `<rev>`. #292\nwas fifty-five rows filed in one day, and a cap on filing would have hidden them; the release review\ncarries the arithmetic instead.\n\n## The delivery gates — `commit-msg` and `delivery check`\n\nTwo ways a delivery can be nothing while looking like something: the narration outgrows the work,\nand the diff is all comments. Both refuse with exit 1, and **`tick` runs both** on the commit it is\ngiven.\n\n### `commit-msg <file> | --message \"<text>\" | --commit <hash>`\n\nRefuses a message longer than `ledger.commitMessageLines` — **default 4: a subject and three body\nlines**. A message that needs a fifth is a delivery that should have been two commits, or a paragraph\nthat belongs in a proof file.\n\nWhat is **not** counted, and why:\n\n| Not counted | Why |\n|---|---|\n| blank lines | they are the format, not the message |\n| lines beginning `#` | a `commit-msg` hook is handed the raw editor file, git's whole `# Please enter…` template included |\n| everything past `# --- >8 ---` | `commit -v` puts the entire diff below the scissors |\n| a **trailing block** of `Token: value` trailers | `Co-authored-by:`, `Signed-off-by:`, `Refs:` are metadata git appends; counting them would ration the body by how much tooling a repo runs |\n\nThe trailing block is git's own definition, so a `Note: …` in the *middle* of a body is counted. The\n**subject is never stripped**, even though `feat: a thing` is character-for-character a trailer —\nthat bug read every one-line message as empty, and it has a test.\n\nUsable directly as a hook:\n\n```bash\n# .husky/commit-msg  or  lefthook commit-msg\nnpx geonosis-ledger commit-msg \"$1\"\n```\n\n### `delivery check --cached | --commit <hash>`\n\nRefuses a diff whose **every** changed line is a comment or whitespace. Comment tokens are per\nlanguage, chosen by extension — `#` opens a comment in a shell script and a heading in markdown, so\nthe token alone cannot decide:\n\n| Extensions | Comment tokens |\n|---|---|\n| `ts tsx js jsx mjs cjs mts cts go rs java kt swift c cc cpp h scss less` | `//` `/*` `*/` `*` `{/*` `*/}` |\n| `css` | `/*` `*/` `*` |\n| `sh bash zsh py rb toml ini cfg conf env properties mk gitignore`, `Dockerfile`, `Makefile` | `#` |\n| `yml yaml` | `#` |\n| `md mdx html xml svg vue svelte astro` | `<!--` `-->` |\n| `sql` | `--` `/*` `*/` `*` |\n\nA blank changed line counts as commentary too, so a whitespace-only change is refused. A file whose\nlanguage is not in the table has its changed lines treated as **code** — the safe direction for a\ngate that refuses.\n\n**Deleting comments counts as a comments-only delivery.** A comment sweep is real work, and it rides\nalong with runtime code exactly the way G0 lets docs ride along; it does not stand alone.\n\n### `--prove`\n\n```\n  PROVEN commit-msg: refuses a 40-line commit message\n  PROVEN delivery check: refuses a diff whose every changed line is a comment\n\nprove PASS — every delivery gate refused the thing it forbids.\n```\n\nIt plants both forbidden shapes for real — the comments-only diff into a throwaway git repo it\ninitialises and deletes — and requires both to be refused. A probe that comes back clean prints\n`CANNOT FAIL` and exits **2**, the same status as a measurement that could not be made: a gate that\nhas never been shown refusing is a claim, not a gate.\n\n## `architecture check [--no-workspace]` and `sync` — one table, three spellings (C8)\n\nAn allowed-edges table is typically written **three times** in a monorepo's tooling: turbo's\n`boundaries.tags`, per-package `no-restricted-imports`, and `layer-walls`. Three spellings of one\nfact is an SSOT violation inside the enforcement itself. So the table is the source and the three\nconfigs are generated from it.\n\n`ledger.architecture` must contain a table whose header is `| tag | packages | may depend on |`\n(whitespace- and emphasis-insensitive):\n\n```\n| tag           | packages        | may depend on                   |\n| ------------- | --------------- | ------------------------------- |\n| `domain`      | domains, utils  | —                               |\n| `storage`     | db              | domain                          |\n| `sdk`         | client          | host-worker (TYPE only), domain |\n```\n\n`architecture check` exits 1 listing: a `packages` cell that names no workspace directory (matched\nagainst the directory, its basename, or the package name — repos write all three), a `may depend on`\nentry that is not a declared tag, and a tag declared twice. `--no-workspace` skips the first of those.\n\nA parenthetical like `(TYPE only)` is a **note**, not a violation: the tag is taken and the\nannotation reported, because none of the three generated spellings can express \"type-only\" and a\nfact the tooling silently discards is a fact the tooling has decided is untrue.\n\n### `sync --target turbo|layer-walls|restricted-imports [--write <file>] [--check <file>] [--package <name>]`\n\n| Target | Generated | Written into |\n|---|---|---|\n| `turbo` | `{ tags: { <tag>: { dependencies: { allow: [...] } } } }` | the `boundaries` key |\n| `layer-walls` | `[{ name: <tag>, paths: ['^<pkgname>', '<dir>/'], mayImport: [...] }]` | the `layers` of the `biological-architecture/layer-walls` rule |\n| `restricted-imports` | per package, every package its tag may **not** depend on | the `paths` of that package's `no-restricted-imports` rule |\n\n`restricted-imports` is per package, so `--write packages/db/.oxlintrc.json` infers the package from\nthe file's directory; `--package` overrides it.\n\n**Nothing is inferred.** If a tag may depend on `storage` and `storage` may depend on `domain`, that\ndoes *not* make `domain` reachable — the table is spelled in full or it does not say what it says. A\ncomputed transitive closure would silently widen an edge no author wrote.\n\n`--write` **splices only the named fragment.** `JSON.parse` → `JSON.stringify` would reformat the\nwhole file, which turns a one-key sync into an unreviewable diff and a fight with the repo's\nformatter. The value's byte span is located by scanning and replaced in place, so `$schema`, `tasks`,\nand every other rule come out identical. `--check` exits 1 and prints what is committed beside what\nis generated.\n\nA key that is **not there yet is created** — a `turbo.json` with no `boundaries`, a config that has\nnever named `layer-walls`, a package whose `no-restricted-imports` has not been written. Still only\nthat fragment: everything already in the file stays where it was, and a rule is created as\n`[\"error\", { … }]`, the severity being the one thing a generator cannot read off the table. A repo\nadopting this starts from its own config, not from a shape hand-copied out of these docs.\n\nThe adoption evidence is in `proofs/`, under plan 022's W4 sync:\nrun read-only over a copy of a Workers + D1 app, `architecture check` found a `may depend on` cell naming a\npackage instead of a tag, and `sync --target turbo --check` showed a config with five tags against a\ndocument with seven — sharing one name, `sdk`, which means different things on the two sides.\n\n### `sync --target agents-md|cursor [--write <path>] [--check <path>]` — the law, in the other tools' vocabularies\n\nSkills and `AGENTS.md` port between agents; hooks, subagent definitions and plan pipelines do not.\nThese two targets take the half that ports and stop it going stale by hand.\n\n`agents-md` writes the file every agent on the standard reads and Claude Code does not: **the law's\nrules section** (the section matching `ledger.lawSection`, not the whole file — a copy of the law is\na second law), **one line per skill** taken from that skill's own frontmatter, and **one row per\nglob-scoped rule** saying which files it binds to. It is a PROJECTION and never a source: the law\nis hand-written in the file `ledger.law` names — `LAW.md` under D-054, with `CLAUDE.md` the one line\nimporting it — and this file is regenerated from it, so the two cannot disagree.\n\n`cursor` writes one `.cursor/rules/geonosis-<area>.mdc` per `.claude/rules/<area>.md`, translating\nthe frontmatter: Cursor's `globs` is ONE comma-separated string rather than a YAML list, and a rule\nscoped to `**` becomes `alwaysApply: true` with no `globs` line at all — Cursor ignores `globs` when\n`alwaysApply` is set, and a line that does nothing beside a line that does is how a config starts\nlying.\n\n```bash\ngeonosis-ledger sync --target agents-md --write AGENTS.md\ngeonosis-ledger sync --target cursor    --write .cursor/rules\ngeonosis-ledger sync --target agents-md --check AGENTS.md      # exit 1 on drift\n```\n\n`--write` names the FILE for `agents-md` and the DIRECTORY for `cursor`. `--check` compares byte for\nbyte and names what differs — including a generated file that **is not there at all**, which is the\ndrift nobody notices: a rule added upstream and never translated reads exactly like one that was.\n\nNeither target reads the architecture table. They are about the law and the rule files, and\ndemanding an edges table before generating an `AGENTS.md` would be a coupling nobody asked for.\n\nThis repo runs both on itself, checked in `tooling/cross-tool-sync.test.ts`: a generator with a\nround-trip test and no repo behind it proves the function, not the files.\n\n## Configuration — the `ledger` block of `geonosis.json`\n\nEvery key is optional and every default is a **contract**, not a consumer's layout.\n\n```jsonc\n{\n  \"ledger\": {\n    \"plans\": \"plans\",                          // directory\n    \"progress\": \"plans/PROGRESS.md\",           // the one file a tick appends to\n    \"proofs\": \"proofs\",                        // directory\n    \"decisions\": \"docs/decisions.md\",\n    \"journal\": \"docs/journal/fallbacks.md\",\n    \"handoff\": \"HANDOFF.md\",\n    \"architecture\": \"docs/architecture.md\",\n    \"backlog\": \"docs/rules-backlog.md\",        // the row file burndown reads\n    \"backlogDone\": \"\\\\bDONE\\\\b\",               // this repo's word for a finished row\n    \"law\": \"CLAUDE.md\",                        // what lawLineCount counts and sync projects\n    \"lawSection\": \"^#{2,3} +The laws\\\\b\",       // the section of it AGENTS.md carries\n    \"agents\": \"AGENTS.md\",                     // where sync --target agents-md writes\n    \"skills\": \".claude/skills\",                // read for the one-line summaries\n    \"rules\": \".claude/rules\",                  // the glob-scoped rules cursor translates\n    \"maxLines\": 200,                           // captured proof output, bounded\n    \"commitMessageLines\": 4,                   // subject + 3\n    \"plan\": {\n      \"statusHeader\": \"^> \\\\*\\\\*Status\\\\*\\\\*: *(\\\\S+)\",  // group 1: the status word\n      \"criteriaHeading\": \"^#{2,3} +Acceptance criteria\\\\b\",\n      \"criteria\": \"^- When .+ shall .+\",\n      \"verificationHeading\": \"^#{2,3} +Verification\\\\b\",\n      \"after\": \"\\\\bafter: *\\\\[([^\\\\]]*)\\\\]\",   // group 1: the plans this one comes after\n      \"done\": \"^DONE$\",                       // which status word means finished\n      \"plannedAt\": \"\\\\bplannedAt: *(\\\\S+)\",    // the revision the plan was written against\n      \"scope\": \"\\\\bscope: *\\\\[([^\\\\]]*)\\\\]\"    // the paths the plan is about\n    },                                         // plus \"since\": <NNN>, unset by default\n    \"land\": { \"branch\": [], \"prepare\": \"\", \"tier\": \"full\", \"verify\": \"geonosis-verify\" },\n    \"runtime\": { \"include\": [\"…\"], \"exclude\": [\"…\"] }\n  }\n}\n```\n\nAn unknown key is an **error**, not a shrug: a typo in a gate's config is silence.\n\n### The plan patterns are regexes because a heading name is a repo's vocabulary\n\nA Workers + D1 app writes `## Done criteria` and `## Test plan` and ticks a checkbox; this repo writes\n`## Acceptance criteria` and an EARS sentence. Neither is the contract — *declaring* criteria and\n*declaring* how they are verified is. A repo with its own words sets four regexes:\n\n```jsonc\n\"plan\": {\n  \"statusHeader\": \"^#{2,3} +Status *$\",\n  \"criteriaHeading\": \"^#{2,3} +Done criteria *$\",\n  \"criteria\": \"^- \\\\[[ x]\\\\] .+\",\n  \"verificationHeading\": \"^#{2,3} +Test plan\\\\b\"\n}\n```\n\n### `runtime` — G0, generalised\n\nA Medusa storefront's G0 gate (\"a tick MUST deliver real runtime code\") greps a staged diff for\n`(apps|packages)/.+/src/`. That anchor is true of a Medusa storefront and of nothing else: a Workers + D1 app keeps\n1,727 of its 2,295 source files outside any `src/` directory, so it would refuse every tick that\nrepo has ever made. What travels is the **kind** of file, so the default is:\n\n```jsonc\n\"runtime\": {\n  \"include\": [\"\\\\.(?:ts|tsx|js|jsx|mjs|cjs|mts|cts|css|scss|sass|less|svg|vue|svelte|astro)$\"],\n  \"exclude\": [\n    \"\\\\.(?:test|spec)\\\\.\",\n    \"\\\\.stories\\\\.\",\n    \"\\\\.d\\\\.ts$\",\n    \"(?:^|/)(?:__tests__|__mocks__|__fixtures__|__snapshots__|__perf__)/\",\n    \"(?:^|/)(?:docs?|tests?|e2e)/\",\n    \"(?:^|/)\\\\.[^/]+/\"\n  ]\n}\n```\n\nThe last exclusion is every dot-directory at once — `.shop/`, `.github/`, `.claude/` — without\nnaming any repo.\n\nOn top of these, `tick` excludes **the ledger's own artefacts**: everything under `ledger.plans`,\n`progress`, `proofs`, `journal`, `decisions`, `handoff` and `architecture`. A Medusa storefront's G0 excluded\n`^\\.shop/`, the directory its ledger lived in; that literal cannot ship, but the fact can, because\nevery one of those files is already a key of this config and so the exclusion follows a repo wherever\nit keeps them. (Found by running G0 over this repo's history: a `test:` commit whose whole diff was\nthree files under `proofs/` passed, on a `.ts` proof harness.)\n\nA repo that wants a Medusa storefront's exact strictness keeps its own anchor:\n\n```jsonc\n\"runtime\": { \"include\": [\"(apps|packages)/.+/src/.+\\\\.(ts|tsx|js|jsx|css|svg)$\"] }\n```\n\n## Licence\n\nApache-2.0.\n","readmeFilename":""}