{"_id":"@geonosis/policy","_rev":"27-d5d9dd00d31b21052a2170e7812e78d9","name":"@geonosis/policy","dist-tags":{"latest":"3.0.0"},"versions":{"1.0.0":{"name":"@geonosis/policy","version":"1.0.0","keywords":["policy","rules-engine","rbac","permissions","precedence","medusa","drizzle"],"license":"Apache-2.0","_id":"@geonosis/policy@1.0.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/policy","dist":{"shasum":"db5d9c3e241ab5e19209d97d458ec0ac001bec88","tarball":"https://registry.npmjs.org/@geonosis/policy/-/policy-1.0.0.tgz","fileCount":13,"integrity":"sha512-4VN1XR6npkXWX0cqeX6qIojq0y7Kk6q+o/bZM9Rp+nKZ50hYQPrx2GnjhbLIOYSIRK/FemQgjgW02XNPn11FYw==","signatures":[{"sig":"MEQCIBuHeuDtX7tLZIl4foSpZym+nfszaUeWGc0znUxEw3SBAiAbJ2f4CA8OxERf2BGlLUi1vGmcJNyDlWvCcHPoxHyyEw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":97834},"main":"dist/index.js","type":"module","engines":{"node":">=22"},"exports":{".":"./dist/index.js","./medusa":"./dist/medusa/index.js","./drizzle":"./dist/drizzle/index.js","./permissions":"./dist/permissions/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/policy"},"description":"A threshold is a value plus the authority that set it, the subject it reaches and the reason it exists. The precedence lattice, the rule → config → constant read with its fallback journalled once per boot, the learning loop, the generated policy prose, an","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0"},"peerDependencies":{"zod":"^4.0.0"},"peerDependenciesMeta":{"zod":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/policy_1.0.0_1788106378902_0.5955642400284769","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@geonosis/policy","version":"1.1.0","keywords":["policy","rules-engine","rbac","permissions","precedence","medusa","drizzle"],"license":"Apache-2.0","_id":"@geonosis/policy@1.1.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/policy","dist":{"shasum":"c95d01ed3a6ee657a321ae1c56aa73dcd64a8276","tarball":"https://registry.npmjs.org/@geonosis/policy/-/policy-1.1.0.tgz","fileCount":13,"integrity":"sha512-JwtQqFVRBSN6LHhQU+ct7kulMjbqre0mdzr2cgDoU29dR8pdRdZsOHZOESh7GZ9+9Zg6qB8BE19ERL/+N3l5ag==","signatures":[{"sig":"MEQCIEpbas9r6WecNX8sVCkAPtz7/3Fpq1klgLk+cwiHyYSIAiBX64cgrKVVrUF+4c4rnqwCwIZpXw846kxKAdCNkmZsYw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98137},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./medusa":{"types":"./dist/medusa/index.d.ts","default":"./dist/medusa/index.js"},"./drizzle":{"types":"./dist/drizzle/index.d.ts","default":"./dist/drizzle/index.js"},"./permissions":{"types":"./dist/permissions/index.d.ts","default":"./dist/permissions/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/policy"},"description":"A threshold is a value plus the authority that set it, the subject it reaches and the reason it exists. The precedence lattice, the rule → config → constant read with its fallback journalled once per boot, the learning loop, the generated policy prose, an","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0"},"peerDependencies":{"zod":"^4.0.0"},"peerDependenciesMeta":{"zod":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/policy_1.1.0_1788114850601_0.9170282018113567","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@geonosis/policy","version":"1.2.0","keywords":["policy","rules-engine","rbac","permissions","precedence","medusa","drizzle"],"license":"Apache-2.0","_id":"@geonosis/policy@1.2.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/policy","dist":{"shasum":"6debca499ce4ca2c4d040f2e05d7f5c437847758","tarball":"https://registry.npmjs.org/@geonosis/policy/-/policy-1.2.0.tgz","fileCount":13,"integrity":"sha512-9+u4M/RVfjZ/PQslLJ5Zln6Pi+2u23Iu3BilAPOXf7VpeziRp94TIdxl+Tt7XPDqWSikTvjjCyl1t8ONkzDNzw==","signatures":[{"sig":"MEUCIQDwhXhDptb1vqj8ZCdi+SrsR+2NUYhsZ+ZNDMHbmKjOiQIgMOhSgbLWp4soxMtBXPddueeQ/nS14KQtbG4jKZNR7Xs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98137},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./medusa":{"types":"./dist/medusa/index.d.ts","default":"./dist/medusa/index.js"},"./drizzle":{"types":"./dist/drizzle/index.d.ts","default":"./dist/drizzle/index.js"},"./permissions":{"types":"./dist/permissions/index.d.ts","default":"./dist/permissions/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/policy"},"description":"A threshold is a value plus the authority that set it, the subject it reaches and the reason it exists. The precedence lattice, the rule → config → constant read with its fallback journalled once per boot, the learning loop, the generated policy prose, an","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0"},"peerDependencies":{"zod":"^4.0.0"},"peerDependenciesMeta":{"zod":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/policy_1.2.0_1788119036947_0.8612998309902815","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@geonosis/policy","version":"1.3.0","keywords":["policy","rules-engine","rbac","permissions","precedence","medusa","drizzle"],"license":"Apache-2.0","_id":"@geonosis/policy@1.3.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/policy","dist":{"shasum":"169f177786a7356e18335f52863a4f4ff183cdaa","tarball":"https://registry.npmjs.org/@geonosis/policy/-/policy-1.3.0.tgz","fileCount":22,"integrity":"sha512-BgYOkaHE57qpno4HcEIfiejbRzBqVLZb0eanufeSUddJkyhbqXiK/FYomLqoxhGHmz8bKP/msbOoytD7yAK4GA==","signatures":[{"sig":"MEQCIFz4PcOnMKgWvRITZmJqHIVkcNsCbiHoWXp1dpE6giwLAiBkZnrc8XKpx4qKK4nneX0mOH3B+XvAX5BNpIdjJdpiGg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":186124},"main":"dist/index.cjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./medusa":{"import":{"types":"./dist/medusa/index.d.ts","default":"./dist/medusa/index.js"},"require":{"types":"./dist/medusa/index.d.cts","default":"./dist/medusa/index.cjs"}},"./drizzle":{"import":{"types":"./dist/drizzle/index.d.ts","default":"./dist/drizzle/index.js"},"require":{"types":"./dist/drizzle/index.d.cts","default":"./dist/drizzle/index.cjs"}},"./permissions":{"import":{"types":"./dist/permissions/index.d.ts","default":"./dist/permissions/index.js"},"require":{"types":"./dist/permissions/index.d.cts","default":"./dist/permissions/index.cjs"}}},"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/policy"},"description":"A threshold is a value plus the authority that set it, the subject it reaches and the reason it exists. The precedence lattice, the rule → config → constant read with its fallback journalled once per boot, the learning loop, the generated policy prose, an","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0"},"peerDependencies":{"zod":"^4.0.0"},"peerDependenciesMeta":{"zod":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/policy_1.3.0_1788254757471_0.7262413502304066","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@geonosis/policy","version":"1.4.0","keywords":["policy","rules-engine","rbac","permissions","precedence","medusa","drizzle"],"license":"Apache-2.0","_id":"@geonosis/policy@1.4.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/policy","dist":{"shasum":"41545d16e361a07123822b953d8f63bd5c9e7547","tarball":"https://registry.npmjs.org/@geonosis/policy/-/policy-1.4.0.tgz","fileCount":22,"integrity":"sha512-YkNiVlrbXcOcn56mOQ+6mGsBf3xrXTVpKQb6aRMs6PRmZVhFmhsDYPpddmeL3XEPxLc5Sb01b0E8AE6kgOZfsQ==","signatures":[{"sig":"MEUCIQDh0CYM8+O/amzQsazlzHSllxWzEtXtZ/a00OnnzG+mpwIgMqdTrRWpg48M/MwHwLKjLGEl0PpoTnZPIaRKn+1AYXs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":186124},"main":"dist/index.cjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./medusa":{"import":{"types":"./dist/medusa/index.d.ts","default":"./dist/medusa/index.js"},"require":{"types":"./dist/medusa/index.d.cts","default":"./dist/medusa/index.cjs"}},"./drizzle":{"import":{"types":"./dist/drizzle/index.d.ts","default":"./dist/drizzle/index.js"},"require":{"types":"./dist/drizzle/index.d.cts","default":"./dist/drizzle/index.cjs"}},"./permissions":{"import":{"types":"./dist/permissions/index.d.ts","default":"./dist/permissions/index.js"},"require":{"types":"./dist/permissions/index.d.cts","default":"./dist/permissions/index.cjs"}}},"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/policy"},"description":"A threshold is a value plus the authority that set it, the subject it reaches and the reason it exists. The precedence lattice, the rule → config → constant read with its fallback journalled once per boot, the learning loop, the generated policy prose, an","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0"},"peerDependencies":{"zod":"^4.0.0"},"peerDependenciesMeta":{"zod":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/policy_1.4.0_1788268906076_0.4197747948284227","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@geonosis/policy","version":"2.0.0","keywords":["policy","rules-engine","rbac","permissions","precedence","medusa","drizzle"],"license":"Apache-2.0","_id":"@geonosis/policy@2.0.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/policy","dist":{"shasum":"f93608a718b74eb59fb605cd0eb394462bd5bfb2","tarball":"https://registry.npmjs.org/@geonosis/policy/-/policy-2.0.0.tgz","fileCount":22,"integrity":"sha512-3Y6Oq15NUKPhWd/X04bbNlXDPMmqwmOrHLhGrkx0PGorp+ACZih/ASe2TnsuVTN88FfdUNB8a4uxZJ1/QgllIQ==","signatures":[{"sig":"MEQCIEuxyiLlzTWL6wsSEcLozaHot6uwEn+EfVaR9NrwC7W4AiA4vXl1D/bew4iumePJiSt5WXW/Hp9HPCq2AV3KHOZNGA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":197438},"main":"dist/index.cjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./medusa":{"import":{"types":"./dist/medusa/index.d.ts","default":"./dist/medusa/index.js"},"require":{"types":"./dist/medusa/index.d.cts","default":"./dist/medusa/index.cjs"}},"./drizzle":{"import":{"types":"./dist/drizzle/index.d.ts","default":"./dist/drizzle/index.js"},"require":{"types":"./dist/drizzle/index.d.cts","default":"./dist/drizzle/index.cjs"}},"./permissions":{"import":{"types":"./dist/permissions/index.d.ts","default":"./dist/permissions/index.js"},"require":{"types":"./dist/permissions/index.d.cts","default":"./dist/permissions/index.cjs"}}},"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/policy"},"description":"A threshold is a value plus the authority that set it, the subject it reaches and the reason it exists. The precedence lattice, the rule → config → constant read with its fallback journalled once per boot, the learning loop, the generated policy prose, an","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0"},"peerDependencies":{"zod":"^4.0.0"},"peerDependenciesMeta":{"zod":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/policy_2.0.0_1788332149873_0.2525892849281983","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"@geonosis/policy","version":"2.1.0","keywords":["policy","rules-engine","rbac","permissions","precedence","medusa","drizzle"],"license":"Apache-2.0","_id":"@geonosis/policy@2.1.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/policy","dist":{"shasum":"f8979c0f42f40401e0a54d4519a3846a5f49bee8","tarball":"https://registry.npmjs.org/@geonosis/policy/-/policy-2.1.0.tgz","fileCount":22,"integrity":"sha512-2IcWzPnyLOnyq+/0z0xej18NYw4P7ga08VQ5/e0dY7Y5aPso4WZE/CEy8ZP9iYdOIb9aObZdqV9wXHISZdkZuw==","signatures":[{"sig":"MEUCIEepnbSpDoDN1YNNCma2CIeJLZRGQkaQRpL6x148Io5oAiEAhdKvMaAbLITvVK+eswaxhNWgcrMI+HuYeGMY0VTLgC8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":197438},"main":"dist/index.cjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./medusa":{"import":{"types":"./dist/medusa/index.d.ts","default":"./dist/medusa/index.js"},"require":{"types":"./dist/medusa/index.d.cts","default":"./dist/medusa/index.cjs"}},"./drizzle":{"import":{"types":"./dist/drizzle/index.d.ts","default":"./dist/drizzle/index.js"},"require":{"types":"./dist/drizzle/index.d.cts","default":"./dist/drizzle/index.cjs"}},"./permissions":{"import":{"types":"./dist/permissions/index.d.ts","default":"./dist/permissions/index.js"},"require":{"types":"./dist/permissions/index.d.cts","default":"./dist/permissions/index.cjs"}}},"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/policy"},"description":"A threshold is a value plus the authority that set it, the subject it reaches and the reason it exists. The precedence lattice, the rule → config → constant read with its fallback journalled once per boot, the learning loop, the generated policy prose, an","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0"},"peerDependencies":{"zod":"^4.0.0"},"peerDependenciesMeta":{"zod":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/policy_2.1.0_1788357158225_0.02525847227679212","host":"s3://npm-registry-packages-npm-production"}},"2.2.0":{"name":"@geonosis/policy","version":"2.2.0","keywords":["policy","rules-engine","rbac","permissions","precedence","medusa","drizzle"],"license":"Apache-2.0","_id":"@geonosis/policy@2.2.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/policy","dist":{"shasum":"13642695aa94eb23f83b10ead0de797f8cd3b5e6","tarball":"https://registry.npmjs.org/@geonosis/policy/-/policy-2.2.0.tgz","fileCount":22,"integrity":"sha512-BnrcJPPqgBBfXeTh109f4Gj6F227JRxTZwPyD1mGpqbxwC/URl3PR54e4cwb1a8Z3D5raqmhiWIPADcPiKo9SA==","signatures":[{"sig":"MEQCIHQA1evwLvi0LLoVLFZZ/GepAicezSG7Kw8GrDd8fIDjAiBxctYiiAGxtLBmIoJjT+xOTmmizUFQSntaNGoAetu7KQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":197438},"main":"dist/index.cjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./medusa":{"import":{"types":"./dist/medusa/index.d.ts","default":"./dist/medusa/index.js"},"require":{"types":"./dist/medusa/index.d.cts","default":"./dist/medusa/index.cjs"}},"./drizzle":{"import":{"types":"./dist/drizzle/index.d.ts","default":"./dist/drizzle/index.js"},"require":{"types":"./dist/drizzle/index.d.cts","default":"./dist/drizzle/index.cjs"}},"./permissions":{"import":{"types":"./dist/permissions/index.d.ts","default":"./dist/permissions/index.js"},"require":{"types":"./dist/permissions/index.d.cts","default":"./dist/permissions/index.cjs"}}},"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/policy"},"description":"A threshold is a value plus the authority that set it, the subject it reaches and the reason it exists. The precedence lattice, the rule → config → constant read with its fallback journalled once per boot, the learning loop, the generated policy prose, an","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0"},"peerDependencies":{"zod":"^4.0.0"},"peerDependenciesMeta":{"zod":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/policy_2.2.0_1788369597784_0.747671152211036","host":"s3://npm-registry-packages-npm-production"}},"2.3.0":{"name":"@geonosis/policy","version":"2.3.0","keywords":["policy","rules-engine","rbac","permissions","precedence","medusa","drizzle"],"license":"Apache-2.0","_id":"@geonosis/policy@2.3.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/policy","dist":{"shasum":"2673159f9275d0c57fd326bff1ad4ee9448b9cc0","tarball":"https://registry.npmjs.org/@geonosis/policy/-/policy-2.3.0.tgz","fileCount":22,"integrity":"sha512-xHUFI3v0TNdDvyXdZ1D3tfbLZ2Z1NhhM4qe1nJJjBo+XFtbdkgJUf0vb322zr1ZohCR/8E3jTNxu8KWXYLjyxw==","signatures":[{"sig":"MEUCIQCSFaA2tCE7BU/oqkD2WlSTPSW/HxbcuR4yPzWeqA3SbgIgevsb0I9Z6WTRHv+DO2q2L0o/Vk54RvGhSK54NbujVSE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":197438},"main":"dist/index.cjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./medusa":{"import":{"types":"./dist/medusa/index.d.ts","default":"./dist/medusa/index.js"},"require":{"types":"./dist/medusa/index.d.cts","default":"./dist/medusa/index.cjs"}},"./drizzle":{"import":{"types":"./dist/drizzle/index.d.ts","default":"./dist/drizzle/index.js"},"require":{"types":"./dist/drizzle/index.d.cts","default":"./dist/drizzle/index.cjs"}},"./permissions":{"import":{"types":"./dist/permissions/index.d.ts","default":"./dist/permissions/index.js"},"require":{"types":"./dist/permissions/index.d.cts","default":"./dist/permissions/index.cjs"}}},"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/policy"},"description":"A threshold is a value plus the authority that set it, the subject it reaches and the reason it exists. The precedence lattice, the rule → config → constant read with its fallback journalled once per boot, the learning loop, the generated policy prose, an","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0"},"peerDependencies":{"zod":"^4.0.0"},"peerDependenciesMeta":{"zod":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/policy_2.3.0_1788419924897_0.5353796423911632","host":"s3://npm-registry-packages-npm-production"}},"2.3.1":{"name":"@geonosis/policy","version":"2.3.1","keywords":["policy","rules-engine","rbac","permissions","precedence","medusa","drizzle"],"license":"Apache-2.0","_id":"@geonosis/policy@2.3.1","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/policy","dist":{"shasum":"088c16cfe4f7d383e956a1864445c5a28e7409c8","tarball":"https://registry.npmjs.org/@geonosis/policy/-/policy-2.3.1.tgz","fileCount":22,"integrity":"sha512-zj1WHzYb2JCxfU3UFT2yjIYr7ovHmS4/oXWRdoZ7vpgw15ywEIiZADc+CojyhGpIlG4j8Dh37g0A+Dfu4ahtTg==","signatures":[{"sig":"MEUCIHXPMzlPDMSOxda+AC36QSrUS01Mc+SlHt1R5rMEPz3AAiEAj24305YAP6qcbCrR94YLXv6C8rkAxTgEOlgK9endJRo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":197438},"main":"dist/index.cjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./medusa":{"import":{"types":"./dist/medusa/index.d.ts","default":"./dist/medusa/index.js"},"require":{"types":"./dist/medusa/index.d.cts","default":"./dist/medusa/index.cjs"}},"./drizzle":{"import":{"types":"./dist/drizzle/index.d.ts","default":"./dist/drizzle/index.js"},"require":{"types":"./dist/drizzle/index.d.cts","default":"./dist/drizzle/index.cjs"}},"./permissions":{"import":{"types":"./dist/permissions/index.d.ts","default":"./dist/permissions/index.js"},"require":{"types":"./dist/permissions/index.d.cts","default":"./dist/permissions/index.cjs"}}},"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/policy"},"description":"A threshold is a value plus the authority that set it, the subject it reaches and the reason it exists. The precedence lattice, the rule → config → constant read with its fallback journalled once per boot, the learning loop, the generated policy prose, an","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0"},"peerDependencies":{"zod":"^4.0.0"},"peerDependenciesMeta":{"zod":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/policy_2.3.1_1788435297733_0.644878197549104","host":"s3://npm-registry-packages-npm-production"}},"2.4.2":{"name":"@geonosis/policy","version":"2.4.2","keywords":["policy","rules-engine","rbac","permissions","precedence","medusa","drizzle"],"license":"Apache-2.0","_id":"@geonosis/policy@2.4.2","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/policy","dist":{"shasum":"1891304708f07233254b1dc272e6bb91cbd0ee30","tarball":"https://registry.npmjs.org/@geonosis/policy/-/policy-2.4.2.tgz","fileCount":23,"integrity":"sha512-KSKgjHsEudjOImnaARKXJyetfXpfJUayIVCiZzMBhXfNC4qCIsKnkRaQwDQy2wRH3IpRxLGEscIUpflDleBmWw==","signatures":[{"sig":"MEUCIQCbXqGDxCGv5fi7FRCMKQQNuIFfkPFYDiTvyX88RgGgEQIgI31fYcaDJrcRUprVRLl/9KhaWjhopryhHdlIfZIF/qo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":205634},"main":"dist/index.cjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./medusa":{"import":{"types":"./dist/medusa/index.d.ts","default":"./dist/medusa/index.js"},"require":{"types":"./dist/medusa/index.d.cts","default":"./dist/medusa/index.cjs"}},"./drizzle":{"import":{"types":"./dist/drizzle/index.d.ts","default":"./dist/drizzle/index.js"},"require":{"types":"./dist/drizzle/index.d.cts","default":"./dist/drizzle/index.cjs"}},"./permissions":{"import":{"types":"./dist/permissions/index.d.ts","default":"./dist/permissions/index.js"},"require":{"types":"./dist/permissions/index.d.cts","default":"./dist/permissions/index.cjs"}}},"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/policy"},"description":"A threshold is a value plus the authority that set it, the subject it reaches and the reason it exists. The precedence lattice, the rule → config → constant read with its fallback journalled once per boot, the learning loop, the generated policy prose, an","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0"},"peerDependencies":{"zod":"^4.0.0"},"peerDependenciesMeta":{"zod":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/policy_2.4.2_1788444807584_0.3373109253477824","host":"s3://npm-registry-packages-npm-production"}},"2.4.3":{"name":"@geonosis/policy","version":"2.4.3","keywords":["policy","rules-engine","rbac","permissions","precedence","medusa","drizzle"],"license":"Apache-2.0","_id":"@geonosis/policy@2.4.3","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/policy","dist":{"shasum":"051dc911545f6816a5fa301e61f2dc1ff84721a3","tarball":"https://registry.npmjs.org/@geonosis/policy/-/policy-2.4.3.tgz","fileCount":23,"integrity":"sha512-SShqZEwywxd9Gr+qBLletBQjB7fh6q3t5szjHDiQvKI/bsUo31moI9Pkoi/NbTgQo67h1RLj95yt93PL67bt0A==","signatures":[{"sig":"MEYCIQCDXBBTFGYt31o3ZKiA2bmq7r8mOexatT8xFyLBlGASxQIhAKZ0/CEU9zK94rsNgBkmWUOduJJ3Sn+nLn8keWxRv/Te","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIAf/JMeO6/zbXbYAzqiqHaeWeSaQOHVSz2W5Qk+BKh4qAiEA3TRFzvy0voon9fckCq59LYfcAB5b2zN7HZMffyrfORc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":205644},"main":"dist/index.cjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./medusa":{"import":{"types":"./dist/medusa/index.d.ts","default":"./dist/medusa/index.js"},"require":{"types":"./dist/medusa/index.d.cts","default":"./dist/medusa/index.cjs"}},"./drizzle":{"import":{"types":"./dist/drizzle/index.d.ts","default":"./dist/drizzle/index.js"},"require":{"types":"./dist/drizzle/index.d.cts","default":"./dist/drizzle/index.cjs"}},"./permissions":{"import":{"types":"./dist/permissions/index.d.ts","default":"./dist/permissions/index.js"},"require":{"types":"./dist/permissions/index.d.cts","default":"./dist/permissions/index.cjs"}}},"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/policy"},"description":"A threshold is a value plus the authority that set it, the subject it reaches and the reason it exists. The precedence lattice, the rule → config → constant read with its fallback journalled once per boot, the learning loop, the generated policy prose, an","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0"},"peerDependencies":{"zod":"^4.0.0"},"peerDependenciesMeta":{"zod":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/policy_2.4.3_1788566158410_0.8934680721772117","host":"s3://npm-registry-packages-npm-production"}},"2.5.0":{"name":"@geonosis/policy","version":"2.5.0","keywords":["policy","rules-engine","rbac","permissions","precedence","medusa","drizzle"],"license":"Apache-2.0","_id":"@geonosis/policy@2.5.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/policy","dist":{"shasum":"246201489f20026a7aa2dc9c3a415030e1e6fe9b","tarball":"https://registry.npmjs.org/@geonosis/policy/-/policy-2.5.0.tgz","fileCount":23,"integrity":"sha512-GvTWtYXDK8MIYZ7aC2AoQcqk+s/G89iNWqUZd40gwzijur6YegElcAPwZI+sJnS1VJ6E7T8AKcHfYd1lVqni6g==","signatures":[{"sig":"MEQCIA1fr0EQ8UF7Vbwtupn4ObgqwwZ2ZFrmAHsIE8W4hgajAiB+GNfeKGFF5rOOKUJHNH2vR5tqIL1wmnuzXh/YtbA4ZA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIAHA9pwKxMF57hn493gofJJuQr/BjOzB5/dnZyqmPL5eAiEArOl3UcvwMBnSP0w5kZTWipaREHXhPQnpkskAAw10xp0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":205654},"main":"dist/index.cjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./medusa":{"import":{"types":"./dist/medusa/index.d.ts","default":"./dist/medusa/index.js"},"require":{"types":"./dist/medusa/index.d.cts","default":"./dist/medusa/index.cjs"}},"./drizzle":{"import":{"types":"./dist/drizzle/index.d.ts","default":"./dist/drizzle/index.js"},"require":{"types":"./dist/drizzle/index.d.cts","default":"./dist/drizzle/index.cjs"}},"./permissions":{"import":{"types":"./dist/permissions/index.d.ts","default":"./dist/permissions/index.js"},"require":{"types":"./dist/permissions/index.d.cts","default":"./dist/permissions/index.cjs"}}},"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/policy"},"description":"A threshold is a value plus the authority that set it, the subject it reaches and the reason it exists. The precedence lattice, the rule → config → constant read with its fallback journalled once per boot, the learning loop, the generated policy prose, an","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0"},"peerDependencies":{"zod":"^4.0.0"},"peerDependenciesMeta":{"zod":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/policy_2.5.0_1788595445874_0.7744174053245523","host":"s3://npm-registry-packages-npm-production"}},"2.5.1":{"name":"@geonosis/policy","version":"2.5.1","keywords":["policy","rules-engine","rbac","permissions","precedence","medusa","drizzle"],"license":"Apache-2.0","_id":"@geonosis/policy@2.5.1","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/policy","dist":{"shasum":"6e6f11e8ef92d9fd06a9c92c05c17077e4843cc5","tarball":"https://registry.npmjs.org/@geonosis/policy/-/policy-2.5.1.tgz","fileCount":23,"integrity":"sha512-ug+Qm8Ql9B1yzFYU9iv8Xlopzj7qAOilMtl4YjN7qs8jEYU1hLk2UWNFBnJwW6eNA7G97ZTLwLX0KQ3aLJKYOg==","signatures":[{"sig":"MEUCIQDioh1EaG4GVDT/vCfnP2J2jWTWuaZWOMYkyxAo1wuKpAIgfs0PtxQIysMr+QkuaHUuCNkcY3SvRFohfVuXplt8+x8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIHhVpMXjrDgBVpyUiUWwkz+wGhE8pzRzLOs2UB+wV+WKAiBqDqcQwmCEDXDFkK4Z6IS8b0Npb6NFO2Jv7Zl4gB/HEw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":205664},"main":"dist/index.cjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./medusa":{"import":{"types":"./dist/medusa/index.d.ts","default":"./dist/medusa/index.js"},"require":{"types":"./dist/medusa/index.d.cts","default":"./dist/medusa/index.cjs"}},"./drizzle":{"import":{"types":"./dist/drizzle/index.d.ts","default":"./dist/drizzle/index.js"},"require":{"types":"./dist/drizzle/index.d.cts","default":"./dist/drizzle/index.cjs"}},"./permissions":{"import":{"types":"./dist/permissions/index.d.ts","default":"./dist/permissions/index.js"},"require":{"types":"./dist/permissions/index.d.cts","default":"./dist/permissions/index.cjs"}}},"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/policy"},"description":"A threshold is a value plus the authority that set it, the subject it reaches and the reason it exists. The precedence lattice, the rule → config → constant read with its fallback journalled once per boot, the learning loop, the generated policy prose, an","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0"},"peerDependencies":{"zod":"^4.0.0"},"peerDependenciesMeta":{"zod":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/policy_2.5.1_1788685808834_0.9442909424990917","host":"s3://npm-registry-packages-npm-production"}},"2.5.2":{"name":"@geonosis/policy","version":"2.5.2","keywords":["policy","rules-engine","rbac","permissions","precedence","medusa","drizzle"],"license":"Apache-2.0","_id":"@geonosis/policy@2.5.2","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/policy","dist":{"shasum":"1c8842c8ef7172873d80afecb31dcd92a454e83c","tarball":"https://registry.npmjs.org/@geonosis/policy/-/policy-2.5.2.tgz","fileCount":23,"integrity":"sha512-g/2vIEKa9CjzMgd4PK3yT5QCa+57Rob6U3qogTtZrpRUyPFkctp+X+VJtZuaBbFkXGFOcKlgjzG3n7PdJy4jzg==","signatures":[{"sig":"MEUCIHBaKSn1AnrM5AFoUFEXSMZB2EGW1AHMNLLWSbgFl/a4AiEAxPXnyfeOCIyL2sqZB/b14TRV/lK1M/I7aQt3EznXq7E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCA6tmoUvPjSNk8BeLBpoy3wmWf751yOKs3tF4aRNcZvQIhAINzsM8hbksKNTaQ+8Hee7QFVs7yC2pbgCx09KKaS1m3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":205674},"main":"dist/index.cjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./medusa":{"import":{"types":"./dist/medusa/index.d.ts","default":"./dist/medusa/index.js"},"require":{"types":"./dist/medusa/index.d.cts","default":"./dist/medusa/index.cjs"}},"./drizzle":{"import":{"types":"./dist/drizzle/index.d.ts","default":"./dist/drizzle/index.js"},"require":{"types":"./dist/drizzle/index.d.cts","default":"./dist/drizzle/index.cjs"}},"./permissions":{"import":{"types":"./dist/permissions/index.d.ts","default":"./dist/permissions/index.js"},"require":{"types":"./dist/permissions/index.d.cts","default":"./dist/permissions/index.cjs"}}},"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/policy"},"description":"A threshold is a value plus the authority that set it, the subject it reaches and the reason it exists. The precedence lattice, the rule → config → constant read with its fallback journalled once per boot, the learning loop, the generated policy prose, an","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0"},"peerDependencies":{"zod":"^4.0.0"},"peerDependenciesMeta":{"zod":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/policy_2.5.2_1788701328295_0.803227841645209","host":"s3://npm-registry-packages-npm-production"}},"2.5.3":{"name":"@geonosis/policy","version":"2.5.3","keywords":["policy","rules-engine","rbac","permissions","precedence","medusa","drizzle"],"license":"Apache-2.0","_id":"@geonosis/policy@2.5.3","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/policy","dist":{"shasum":"d092c311eb9e1878be129aba57bed69d0c4331d0","tarball":"https://registry.npmjs.org/@geonosis/policy/-/policy-2.5.3.tgz","fileCount":23,"integrity":"sha512-y9ZWtkYZZrpF8Dof7ZIKChi9mAdUi885fUAFivoTzdIbb+DskG7Bs+EdqZ8DuvSm/6BWaje9wpQnspULreOvTQ==","signatures":[{"sig":"MEYCIQCIS98RgmeuSKTK4+BLrtPbkYsmWxI5UTRstVPrj+T7xQIhAMbSozpprB5MScr1Hg8hui/e+p+re5aWeM7iV+TxvylH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDYWk/Bmk3XYmaK4ncY0QVmw/zj/zM44EpMCorZVwIZ8QIhALFafLrGEqTMnPOwFPyBSiH96Pu4Xfl+X7+67H3oj5Yp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":205684},"main":"dist/index.cjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./medusa":{"import":{"types":"./dist/medusa/index.d.ts","default":"./dist/medusa/index.js"},"require":{"types":"./dist/medusa/index.d.cts","default":"./dist/medusa/index.cjs"}},"./drizzle":{"import":{"types":"./dist/drizzle/index.d.ts","default":"./dist/drizzle/index.js"},"require":{"types":"./dist/drizzle/index.d.cts","default":"./dist/drizzle/index.cjs"}},"./permissions":{"import":{"types":"./dist/permissions/index.d.ts","default":"./dist/permissions/index.js"},"require":{"types":"./dist/permissions/index.d.cts","default":"./dist/permissions/index.cjs"}}},"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/policy"},"description":"A threshold is a value plus the authority that set it, the subject it reaches and the reason it exists. The precedence lattice, the rule → config → constant read with its fallback journalled once per boot, the learning loop, the generated policy prose, an","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0"},"peerDependencies":{"zod":"^4.0.0"},"peerDependenciesMeta":{"zod":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/policy_2.5.3_1788712703546_0.15882101169149876","host":"s3://npm-registry-packages-npm-production"}},"2.6.0":{"name":"@geonosis/policy","version":"2.6.0","keywords":["policy","rules-engine","rbac","permissions","precedence","medusa","drizzle"],"license":"Apache-2.0","_id":"@geonosis/policy@2.6.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/policy","dist":{"shasum":"1c9ca8fd6dcc1d8b88991b7a53fa677b97ff512b","tarball":"https://registry.npmjs.org/@geonosis/policy/-/policy-2.6.0.tgz","fileCount":23,"integrity":"sha512-lh/nN7p/SQIGuNfLzTstYePaqfLTHMJCuaE/dQHiX2EvPzGyZaAHyBBcPLsn3O8dWngIGt1EbG0xLpJXPoj7rA==","signatures":[{"sig":"MEUCIQCiNitm/1EDwbbQWRV+pEd+avW89TN3rYLQgd9R+S+BZwIgfDWZyCUCXeou2t48HZKwuvIDBTCzrfumHUCFHMkLJdQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIFc0udO5e5V/NyUzLRkbLcf9Tqz13d1pUm0tAyplqFUyAiAJMhQZLQZs3BUE658dV1w3zk0dlm0LY1A0n9sGX6qplA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":206004},"main":"dist/index.cjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./medusa":{"import":{"types":"./dist/medusa/index.d.ts","default":"./dist/medusa/index.js"},"require":{"types":"./dist/medusa/index.d.cts","default":"./dist/medusa/index.cjs"}},"./drizzle":{"import":{"types":"./dist/drizzle/index.d.ts","default":"./dist/drizzle/index.js"},"require":{"types":"./dist/drizzle/index.d.cts","default":"./dist/drizzle/index.cjs"}},"./permissions":{"import":{"types":"./dist/permissions/index.d.ts","default":"./dist/permissions/index.js"},"require":{"types":"./dist/permissions/index.d.cts","default":"./dist/permissions/index.cjs"}}},"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/policy"},"description":"A threshold is a value plus the authority that set it, the subject it reaches and the reason it exists. The precedence lattice, the rule → config → constant read with its fallback journalled once per boot, the learning loop, the generated policy prose, an","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0"},"peerDependencies":{"zod":"^4.0.0"},"peerDependenciesMeta":{"zod":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/policy_2.6.0_1788776308056_0.04814319651571819","host":"s3://npm-registry-packages-npm-production"}},"2.6.1":{"name":"@geonosis/policy","version":"2.6.1","keywords":["policy","rules-engine","rbac","permissions","precedence","medusa","drizzle"],"license":"Apache-2.0","_id":"@geonosis/policy@2.6.1","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/policy","dist":{"shasum":"fbfcf1faf56b58f50b089fda8f088249136467ed","tarball":"https://registry.npmjs.org/@geonosis/policy/-/policy-2.6.1.tgz","fileCount":23,"integrity":"sha512-cTAyux7th9NzkS56radl3p3Xagdu9snXO15U8bLju9Z3XqxHO7i/gG2zU6aQelSFmI4ulS9x79EizFTp2QVJ3g==","signatures":[{"sig":"MEUCIQCojCdbYt2Xo2YWnVjEIsBgYZEpJ1ES0Q2GWdyPx4Vz6wIgGGT4dEtLz1EJmrtgItZT6sHc0amZDb9k2jHyzhHXWqw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDQ9ZrDJPwGR9fSf+LhdmH52VaOpD07j5nOFAa+PfJTKwIhALVsjIiL5/mT7hH80ZAqgEkXDY6d6JZtR2Cc5Ru7sLGK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":206014},"main":"dist/index.cjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./medusa":{"import":{"types":"./dist/medusa/index.d.ts","default":"./dist/medusa/index.js"},"require":{"types":"./dist/medusa/index.d.cts","default":"./dist/medusa/index.cjs"}},"./drizzle":{"import":{"types":"./dist/drizzle/index.d.ts","default":"./dist/drizzle/index.js"},"require":{"types":"./dist/drizzle/index.d.cts","default":"./dist/drizzle/index.cjs"}},"./permissions":{"import":{"types":"./dist/permissions/index.d.ts","default":"./dist/permissions/index.js"},"require":{"types":"./dist/permissions/index.d.cts","default":"./dist/permissions/index.cjs"}}},"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/policy"},"description":"A threshold is a value plus the authority that set it, the subject it reaches and the reason it exists. The precedence lattice, the rule → config → constant read with its fallback journalled once per boot, the learning loop, the generated policy prose, an","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0"},"peerDependencies":{"zod":"^4.0.0"},"peerDependenciesMeta":{"zod":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/policy_2.6.1_1788803943046_0.20959782856973352","host":"s3://npm-registry-packages-npm-production"}},"2.7.0":{"name":"@geonosis/policy","version":"2.7.0","keywords":["policy","rules-engine","rbac","permissions","precedence","medusa","drizzle"],"license":"Apache-2.0","_id":"@geonosis/policy@2.7.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/policy","dist":{"shasum":"3fc0617db47fd5417506d98f7fc131a1d2184d6e","tarball":"https://registry.npmjs.org/@geonosis/policy/-/policy-2.7.0.tgz","fileCount":23,"integrity":"sha512-qFl1Dp9wYTTvf+aei+EAqjF2tpUWMrshznpPKNr1whhbFrYNDSnZPOOAq6G7VjtPVn32EkObcbYRNH3gVnR5eA==","signatures":[{"sig":"MEYCIQDcMjdCy4mVXZJZz2IFA4Pgscodp6NIhitEcTrqb3dcbgIhAMPedRlG0ZouTJqvfz8/+gvcP76Q/ukNLuGPziX3UxCZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDqPL4C0Y6gvxX+xs4g5Z8oUUKd8AqA/7C5QGv2L3um5gIgNW5d/jVfaudjnYjrfv5M2aUEwbVtYxwkeVzWB6Ovo3Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":206024},"main":"dist/index.cjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./medusa":{"import":{"types":"./dist/medusa/index.d.ts","default":"./dist/medusa/index.js"},"require":{"types":"./dist/medusa/index.d.cts","default":"./dist/medusa/index.cjs"}},"./drizzle":{"import":{"types":"./dist/drizzle/index.d.ts","default":"./dist/drizzle/index.js"},"require":{"types":"./dist/drizzle/index.d.cts","default":"./dist/drizzle/index.cjs"}},"./permissions":{"import":{"types":"./dist/permissions/index.d.ts","default":"./dist/permissions/index.js"},"require":{"types":"./dist/permissions/index.d.cts","default":"./dist/permissions/index.cjs"}}},"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/policy"},"description":"A threshold is a value plus the authority that set it, the subject it reaches and the reason it exists. The precedence lattice, the rule → config → constant read with its fallback journalled once per boot, the learning loop, the generated policy prose, an","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0"},"peerDependencies":{"zod":"^4.0.0"},"peerDependenciesMeta":{"zod":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/policy_2.7.0_1789209511597_0.8798796373121656","host":"s3://npm-registry-packages-npm-production"}},"2.8.0":{"name":"@geonosis/policy","version":"2.8.0","keywords":["policy","rules-engine","rbac","permissions","precedence","medusa","drizzle"],"license":"Apache-2.0","_id":"@geonosis/policy@2.8.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/policy","dist":{"shasum":"016f81139a547b326f2359091b6c0aba65ed44a4","tarball":"https://registry.npmjs.org/@geonosis/policy/-/policy-2.8.0.tgz","fileCount":23,"integrity":"sha512-6B56Bz6w49VZNc17h5EjxyohZTdxHWGb46r1DY5vJx27WJg1D9zQYH0rjQmLNj2RCaNtouN9aqIT4vc07gPNBw==","signatures":[{"sig":"MEYCIQDcElZTcQPsoAfZ4IGqedN7ADaYa3RCe+zPbb73dOHJ1wIhANLm5HJHmvHlm0AxW/xb+IMxqReX7Yxw4XiXSpk2Qoh9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCID7lQq6cjoZruWl73GRVLyCrCE3o4+Q+0rlBT41PSlHSAiAp9KHRN/PtZ9cmUzMbyiz4W7ObaYKTNgEa9DlqmiuvmQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":206034},"main":"dist/index.cjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./medusa":{"import":{"types":"./dist/medusa/index.d.ts","default":"./dist/medusa/index.js"},"require":{"types":"./dist/medusa/index.d.cts","default":"./dist/medusa/index.cjs"}},"./drizzle":{"import":{"types":"./dist/drizzle/index.d.ts","default":"./dist/drizzle/index.js"},"require":{"types":"./dist/drizzle/index.d.cts","default":"./dist/drizzle/index.cjs"}},"./permissions":{"import":{"types":"./dist/permissions/index.d.ts","default":"./dist/permissions/index.js"},"require":{"types":"./dist/permissions/index.d.cts","default":"./dist/permissions/index.cjs"}}},"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/policy"},"description":"A threshold is a value plus the authority that set it, the subject it reaches and the reason it exists. The precedence lattice, the rule → config → constant read with its fallback journalled once per boot, the learning loop, the generated policy prose, an","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0"},"peerDependencies":{"zod":"^4.0.0"},"peerDependenciesMeta":{"zod":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/policy_2.8.0_1789421412157_0.735165282028214","host":"s3://npm-registry-packages-npm-production"}},"2.9.0":{"name":"@geonosis/policy","version":"2.9.0","keywords":["policy","rules-engine","rbac","permissions","precedence","medusa","drizzle"],"license":"Apache-2.0","_id":"@geonosis/policy@2.9.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/policy","dist":{"shasum":"6a552752956195e0c4aafa647fecb66439b20c96","tarball":"https://registry.npmjs.org/@geonosis/policy/-/policy-2.9.0.tgz","fileCount":23,"integrity":"sha512-83T4EuoGqTEs2bNaZrvADG4yje1MjCjjA2Y9rrDnbz7sRCr9Atvw/yFrTZCNQFtuRZEfydtxOnBOailTudX7Lw==","signatures":[{"sig":"MEYCIQDUdkEK5LiICSv3FDFT243VftzzLZW4xcjrrGabr/TxCAIhAIGN8Id50z0CFJ5+DIx4Zq+ZHLODQiutPvEcYLdWQqfx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDFUjhrU2deYukOXjyTCbwL0QLqbaTZBhA4Oy1NCMAYKQIhAKhioAooC/IXXUxkarh5wbanWUWVky/21K+gMYyiUcpd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":206044},"main":"dist/index.cjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./medusa":{"import":{"types":"./dist/medusa/index.d.ts","default":"./dist/medusa/index.js"},"require":{"types":"./dist/medusa/index.d.cts","default":"./dist/medusa/index.cjs"}},"./drizzle":{"import":{"types":"./dist/drizzle/index.d.ts","default":"./dist/drizzle/index.js"},"require":{"types":"./dist/drizzle/index.d.cts","default":"./dist/drizzle/index.cjs"}},"./permissions":{"import":{"types":"./dist/permissions/index.d.ts","default":"./dist/permissions/index.js"},"require":{"types":"./dist/permissions/index.d.cts","default":"./dist/permissions/index.cjs"}}},"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/policy"},"description":"A threshold is a value plus the authority that set it, the subject it reaches and the reason it exists. The precedence lattice, the rule → config → constant read with its fallback journalled once per boot, the learning loop, the generated policy prose, an","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0"},"peerDependencies":{"zod":"^4.0.0"},"peerDependenciesMeta":{"zod":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/policy_2.9.0_1789468539312_0.13132480161971172","host":"s3://npm-registry-packages-npm-production"}},"2.10.0":{"name":"@geonosis/policy","version":"2.10.0","keywords":["policy","rules-engine","rbac","permissions","precedence","medusa","drizzle"],"license":"Apache-2.0","_id":"@geonosis/policy@2.10.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/policy","dist":{"shasum":"1eda3df7ad59633e62d5a4e54a758570404904ef","tarball":"https://registry.npmjs.org/@geonosis/policy/-/policy-2.10.0.tgz","fileCount":23,"integrity":"sha512-ccfxyaJ4vBjq67DP/fXohQuBoIhYpiWKQtXcQO7q+qKrFeFydq/HjZErkxW1bZi46O/wEx9/2umCK4XjJmeYmw==","signatures":[{"sig":"MEUCIQCKRyI/uhtDhllSltUJUfoWoJE7+v23jU3Mla5QOUtaBgIgUtKKbCaQ+otDql6T79GAHDvSrOVLbUuefznZG2I2gIk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDzXyqn4s2FErZQ0a1CTODXyB2OPzAzsI/YQ47l0K5aEQIhAPD+uYKI+7lmv62FcShtjLWftkLAtFXAtatPtAI9ChIs","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":206056},"main":"dist/index.cjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./medusa":{"import":{"types":"./dist/medusa/index.d.ts","default":"./dist/medusa/index.js"},"require":{"types":"./dist/medusa/index.d.cts","default":"./dist/medusa/index.cjs"}},"./drizzle":{"import":{"types":"./dist/drizzle/index.d.ts","default":"./dist/drizzle/index.js"},"require":{"types":"./dist/drizzle/index.d.cts","default":"./dist/drizzle/index.cjs"}},"./permissions":{"import":{"types":"./dist/permissions/index.d.ts","default":"./dist/permissions/index.js"},"require":{"types":"./dist/permissions/index.d.cts","default":"./dist/permissions/index.cjs"}}},"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/policy"},"description":"A threshold is a value plus the authority that set it, the subject it reaches and the reason it exists. The precedence lattice, the rule → config → constant read with its fallback journalled once per boot, the learning loop, the generated policy prose, an","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0"},"peerDependencies":{"zod":"^4.0.0"},"peerDependenciesMeta":{"zod":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/policy_2.10.0_1789489909643_0.24275480265245375","host":"s3://npm-registry-packages-npm-production"}},"2.11.0":{"name":"@geonosis/policy","version":"2.11.0","keywords":["policy","rules-engine","rbac","permissions","precedence","medusa","drizzle"],"license":"Apache-2.0","_id":"@geonosis/policy@2.11.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/policy","dist":{"shasum":"41615c4a9f6c4316965c8b4eb0835e99a0a47309","tarball":"https://registry.npmjs.org/@geonosis/policy/-/policy-2.11.0.tgz","fileCount":23,"integrity":"sha512-jFkplVMKj+fgypgYWo9oqLxdiQ66M+CKZ+rqNQo/8bptKi4lZK7TpXLEByTfvDHrBpeIHyR/tOUunRdY+n6HDQ==","signatures":[{"sig":"MEYCIQDuXGy5Su5B0J3k8nRTRJ2KShjAZuFuxod9Ylqd4rIkbQIhAL4VG+EbPlV/+F1nSljhorzbO3HAiB/XB/tsxt3qWxd2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDSs7aYQe0PfixGcOnmqleCtJ98ks8PyfZLHmSbBbnjjwIgWNHhzERJhuvlyKuKBram3T67BWNWmthCqiJVBd4zXNE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":206663},"main":"dist/index.cjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./medusa":{"import":{"types":"./dist/medusa/index.d.ts","default":"./dist/medusa/index.js"},"require":{"types":"./dist/medusa/index.d.cts","default":"./dist/medusa/index.cjs"}},"./drizzle":{"import":{"types":"./dist/drizzle/index.d.ts","default":"./dist/drizzle/index.js"},"require":{"types":"./dist/drizzle/index.d.cts","default":"./dist/drizzle/index.cjs"}},"./permissions":{"import":{"types":"./dist/permissions/index.d.ts","default":"./dist/permissions/index.js"},"require":{"types":"./dist/permissions/index.d.cts","default":"./dist/permissions/index.cjs"}}},"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/policy"},"description":"A threshold is a value plus the authority that set it, the subject it reaches and the reason it exists. The precedence lattice, the rule → config → constant read with its fallback journalled once per boot, the learning loop, the generated policy prose, an","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0"},"peerDependencies":{"zod":"^4.0.0"},"peerDependenciesMeta":{"zod":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/policy_2.11.0_1790271871313_0.013292392299755429","host":"s3://npm-registry-packages-npm-production"}},"2.11.1":{"name":"@geonosis/policy","version":"2.11.1","keywords":["policy","rules-engine","rbac","permissions","precedence","medusa","drizzle"],"license":"Apache-2.0","_id":"@geonosis/policy@2.11.1","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/policy","dist":{"shasum":"c271ab488fbe1984722ad47c552b486878f675c8","tarball":"https://registry.npmjs.org/@geonosis/policy/-/policy-2.11.1.tgz","fileCount":23,"integrity":"sha512-Eikawscgb3GkMciDm2s49XBeBzH9WSmI+aKpYX1PtA4P2/uZ1X+ovUIJVgdk8yUIbf5wB+Nc8AE9vW9pemIYZw==","signatures":[{"sig":"MEYCIQCCNyucvxKeBft9JBnnK7wP00DCTCCLgV4SlptujPo5ewIhANfKUTvNamXZNRpQaUusTxtmJB0XJkerb0n4IJ31/jYy","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDPc9Q2JRga4iWwFYdwTE8L4qdFLUoHeaIMW7ISybWWVAIhAKX3hlVrwmti2rjMB2ITzb4rkc5kl2XNSOtYGPzBjtk/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":206674},"main":"dist/index.cjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./medusa":{"import":{"types":"./dist/medusa/index.d.ts","default":"./dist/medusa/index.js"},"require":{"types":"./dist/medusa/index.d.cts","default":"./dist/medusa/index.cjs"}},"./drizzle":{"import":{"types":"./dist/drizzle/index.d.ts","default":"./dist/drizzle/index.js"},"require":{"types":"./dist/drizzle/index.d.cts","default":"./dist/drizzle/index.cjs"}},"./permissions":{"import":{"types":"./dist/permissions/index.d.ts","default":"./dist/permissions/index.js"},"require":{"types":"./dist/permissions/index.d.cts","default":"./dist/permissions/index.cjs"}}},"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/policy"},"description":"A threshold is a value plus the authority that set it, the subject it reaches and the reason it exists. The precedence lattice, the rule → config → constant read with its fallback journalled once per boot, the learning loop, the generated policy prose, an","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0"},"peerDependencies":{"zod":"^4.0.0"},"peerDependenciesMeta":{"zod":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/policy_2.11.1_1790351290424_0.9854541089895339","host":"s3://npm-registry-packages-npm-production"}},"2.12.0":{"name":"@geonosis/policy","version":"2.12.0","keywords":["policy","rules-engine","rbac","permissions","precedence","medusa","drizzle"],"license":"Apache-2.0","_id":"@geonosis/policy@2.12.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/policy","dist":{"shasum":"9d17b14b96120849c551be847a7db76eb61f4b4c","tarball":"https://registry.npmjs.org/@geonosis/policy/-/policy-2.12.0.tgz","fileCount":23,"integrity":"sha512-Ce6TpV5upeJGRKWhOnvE8y4Cct2K6aOQw6dAgTGIHfYjwhAVPaJiSAcSdOvdyY4Y5mvZc/CxD+BYSs12YOhyjw==","signatures":[{"sig":"MEUCIQDfEeiNA4zU7rjlfYOWaR4c6UWH0vHNBUN/ltpV6QPOWwIgbU8pHjWteZJ/Ke2CJwUKOaCuHeTTHsmUJqb0gD8i0+I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIFa16b76A5BI1H6zw5XlM44ph4dUT2OfBcx4xLevKRNHAiAl3WAPr4cJvt1R43Pl3ae/h4615++z7n0+tMPRnqD2hA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":206685},"main":"dist/index.cjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./medusa":{"import":{"types":"./dist/medusa/index.d.ts","default":"./dist/medusa/index.js"},"require":{"types":"./dist/medusa/index.d.cts","default":"./dist/medusa/index.cjs"}},"./drizzle":{"import":{"types":"./dist/drizzle/index.d.ts","default":"./dist/drizzle/index.js"},"require":{"types":"./dist/drizzle/index.d.cts","default":"./dist/drizzle/index.cjs"}},"./permissions":{"import":{"types":"./dist/permissions/index.d.ts","default":"./dist/permissions/index.js"},"require":{"types":"./dist/permissions/index.d.cts","default":"./dist/permissions/index.cjs"}}},"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/policy"},"description":"A threshold is a value plus the authority that set it, the subject it reaches and the reason it exists. The precedence lattice, the rule → config → constant read with its fallback journalled once per boot, the learning loop, the generated policy prose, an","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0"},"peerDependencies":{"zod":"^4.0.0"},"peerDependenciesMeta":{"zod":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/policy_2.12.0_1790356186787_0.2184822981644441","host":"s3://npm-registry-packages-npm-production"}},"2.13.0":{"name":"@geonosis/policy","version":"2.13.0","keywords":["policy","rules-engine","rbac","permissions","precedence","medusa","drizzle"],"license":"Apache-2.0","_id":"@geonosis/policy@2.13.0","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/policy","dist":{"shasum":"7bcced90b0ecbdf258c957858509cdfde8e2984a","tarball":"https://registry.npmjs.org/@geonosis/policy/-/policy-2.13.0.tgz","fileCount":23,"integrity":"sha512-h7lqSljkzdbZ0ufH02257HL9j+goWIfoMRVSNbZ+L01K8BTyOf7docftO1jkI7L2ooa0gzMHZJiC2V+GzsG0NQ==","signatures":[{"sig":"MEUCIQDuba/e459+zIlyEkUjO5Q3Z90NZS5wS9+sCvJI/Y4T1wIgMxGbon8XBRbgSaFBVKtu8lkTBTaXWyqGDZ1d2gz41vE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDTcUK6fM/ekG28IihvHz9YHECLIDJAgotuHym7+/GAGQIgILteiljlPwGIlZqkalVT6OwYz+ledm8nueqTeOBysgA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":206696},"main":"dist/index.cjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./medusa":{"import":{"types":"./dist/medusa/index.d.ts","default":"./dist/medusa/index.js"},"require":{"types":"./dist/medusa/index.d.cts","default":"./dist/medusa/index.cjs"}},"./drizzle":{"import":{"types":"./dist/drizzle/index.d.ts","default":"./dist/drizzle/index.js"},"require":{"types":"./dist/drizzle/index.d.cts","default":"./dist/drizzle/index.cjs"}},"./permissions":{"import":{"types":"./dist/permissions/index.d.ts","default":"./dist/permissions/index.js"},"require":{"types":"./dist/permissions/index.d.cts","default":"./dist/permissions/index.cjs"}}},"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/policy"},"description":"A threshold is a value plus the authority that set it, the subject it reaches and the reason it exists. The precedence lattice, the rule → config → constant read with its fallback journalled once per boot, the learning loop, the generated policy prose, an","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.0.0"},"peerDependencies":{"zod":"^4.0.0"},"peerDependenciesMeta":{"zod":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/policy_2.13.0_1790432600022_0.967602611044712","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"_id":"@geonosis/policy@3.0.0","dist":{"shasum":"e79a68376e3907d6eb0d31cb936f969cb091c0d0","tarball":"https://registry.npmjs.org/@geonosis/policy/-/policy-3.0.0.tgz","fileCount":64,"integrity":"sha512-edT57TuV8giFIvfyhL9+Z36s7zLSorpAaeBYZIIspQiSgQO6UjNnttcSXHB3jk1Xe49IDrVqEJUj0D0fttNtTA==","signatures":[{"sig":"MEUCIQCRgjYVQhY9fSb0HguXH1gp55Ra+x3n3BND+UDFZRjs5AIgWu5U0+oWe77/gBXitzvLK2ofjJkOrz/J/WB2EGDpKQo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCc9VHxt02gCxDhdMNP2Z/NLKWqPgUBNwxcQLrwMqYV/AIhAI0+77H9VZGfoQmEVOVg8/WhH+b1wbra6DnUyA7Q+wj9"}],"unpackedSize":222598},"main":"dist/index.cjs","name":"@geonosis/policy","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./medusa":{"import":{"types":"./dist/medusa/index.d.ts","default":"./dist/medusa/index.js"},"require":{"types":"./dist/medusa/index.d.cts","default":"./dist/medusa/index.cjs"}},"./drizzle":{"import":{"types":"./dist/drizzle/index.d.ts","default":"./dist/drizzle/index.js"},"require":{"types":"./dist/drizzle/index.d.cts","default":"./dist/drizzle/index.cjs"}},"./permissions":{"import":{"types":"./dist/permissions/index.d.ts","default":"./dist/permissions/index.js"},"require":{"types":"./dist/permissions/index.d.cts","default":"./dist/permissions/index.cjs"}}},"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/policy","keywords":["policy","rules-engine","rbac","permissions","precedence","medusa","drizzle"],"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/policy"},"description":"A threshold is a value plus the authority that set it, the subject it reaches and the reason it exists. The precedence lattice, the rule → config → constant read with its fallback journalled once per boot, the learning loop, the generated policy prose, an","directories":{},"maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.6.5"},"peerDependencies":{"zod":"^4.0.0"},"peerDependenciesMeta":{"zod":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/policy_3.0.0_1790529103817_0.14485263958731043"}}},"time":{"created":"2026-08-30T16:12:58.714Z","modified":"2026-09-27T17:11:44.148Z","1.0.0":"2026-08-30T16:12:59.021Z","1.1.0":"2026-08-30T18:34:10.747Z","1.2.0":"2026-08-30T19:43:57.086Z","1.3.0":"2026-09-01T09:25:57.623Z","1.4.0":"2026-09-01T13:21:46.208Z","2.0.0":"2026-09-02T06:55:50.032Z","2.1.0":"2026-09-02T13:52:38.356Z","2.2.0":"2026-09-02T17:19:57.923Z","2.3.0":"2026-09-03T07:18:45.034Z","2.3.1":"2026-09-03T11:34:57.905Z","2.4.2":"2026-09-03T14:13:27.704Z","2.4.3":"2026-09-04T23:55:58.494Z","2.5.0":"2026-09-05T08:04:05.993Z","2.5.1":"2026-09-06T09:10:08.931Z","2.5.2":"2026-09-06T13:28:48.423Z","2.5.3":"2026-09-06T16:38:23.641Z","2.6.0":"2026-09-07T10:18:28.143Z","2.6.1":"2026-09-07T17:59:03.181Z","2.7.0":"2026-09-12T10:38:31.686Z","2.8.0":"2026-09-14T21:30:12.240Z","2.9.0":"2026-09-15T10:35:39.419Z","2.10.0":"2026-09-15T16:31:49.746Z","2.11.0":"2026-09-24T17:44:31.393Z","2.11.1":"2026-09-25T15:48:10.513Z","2.12.0":"2026-09-25T17:09:46.890Z","2.13.0":"2026-09-26T14:23:20.112Z","3.0.0":"2026-09-27T17:11:43.921Z"},"license":"Apache-2.0","homepage":"https://github.com/microcompanies/geonosis/tree/main/packages/policy","keywords":["policy","rules-engine","rbac","permissions","precedence","medusa","drizzle"],"repository":{"url":"git+https://github.com/microcompanies/geonosis.git","type":"git","directory":"packages/policy"},"description":"A threshold is a value plus the authority that set it, the subject it reaches and the reason it exists. The precedence lattice, the rule → config → constant read with its fallback journalled once per boot, the learning loop, the generated policy prose, an","maintainers":[{"name":"bayraak","email":"bayraak@gmail.com"}],"readme":"# `@geonosis/policy`\n\nA threshold is not a number. It is a number, plus the authority that set it, the subject it reaches\nand the reason it exists — and that difference is what lets the person who was just blocked learn\nsomething instead of filing a ticket.\n\nThat sentence is true of **two tiers**, and the earlier version of this README claimed only the\nfirst, which is why one consumer read the whole package as not applicable and was right to.\n\n| tier | the question it answers | what it costs |\n|---|---|---|\n| **runtime** — `definePolicy` / `readPolicy` | what does *this tenant*, in *this region*, for *this order* get? | a store behind three ports, a boot, and an `await` at every read |\n| **compile-time** — `declareThreshold` | on whose authority is this number 3000? | one call, no ports, no store, no async, no override |\n\nMost thresholds are the second question. `LIVENESS_TIMEOUT_MS = 3000` decides behaviour in code and\nwill never be tenant-settable; what it lacks is not a lattice, it is an authority. Putting it behind\nthe runtime tier would have cost a port and an await to answer a question nobody was asking, and\nthat is precisely why it stayed a magic number.\n\nThe runtime half is the kernel two repos arrived at independently: a precedence lattice with a full\ntrace, a read that resolves **authored rule → config row → the caller's own constant** and RECORDS\nthe third case, the learning loop that reads those recordings back, and a permission lattice with\nthe runtime lifted out of it.\n\n```ts\nimport { definePolicy, readPolicy } from '@geonosis/policy'\n\nconst policy = definePolicy({\n  tiers: [\n    'regulatory',\n    'contract',\n    { name: 'tenant', overridable: true },\n    { name: 'command', overrides: true },\n    { name: 'learned', advisory: true },\n  ],\n  kinds: [{ kind: 'quoteExpiryDays', schema: z.number().positive() }],\n  scopeKeys: ['region', 'customerGroup', 'companyId', 'orderId'], // VAGUEST first\n})\n\nconst { value, usedFallback } = await readPolicy(policy, 'quoteExpiryDays', { companyId }, {\n  fallback: DEFAULT_QUOTE_EXPIRY_DAYS,\n  rule,\n  config,\n  journal,\n  op: 'create-quote',\n})\n```\n\n**The kernel is inert until the data arrives.** Not one tier, kind, scope key or rule is built in: the\ntwo consumers disagreed on every one of them — one's strongest authority is `regulatory`, the other's\nis `physics`, and they share not a single scope key — so all four are declared. A policy with no\nrules decides nothing, every read falls through to the caller's constant, and each of those is\nrecorded exactly **once per boot**: the honest unit of evidence for \"nobody has set this knob\" is a\ndeployment, not a request, and a constraint read once per cart would otherwise write a row per cart\nand drown the one signal anybody is looking for.\n\n## What is in it\n\n| Export | What it does |\n|---|---|\n| `definePolicy({ tiers, kinds, scopeKeys, rules })` | The lattice as data. Refuses two escape hatches, a duplicate tier or kind, and an advisory tier declared stronger than an authority. |\n| `policy.resolve(kind, query, rules)` | The decision plus the whole trace: `winner`, `suppressed`, `overrode`, `conflicts`, `explain`. |\n| `policy.unusableRules()` · `unsupportedScopes()` · `unsetKinds()` | The three honesty reports. A rule this build cannot honour is NAMED, never silently dropped; a kind a reader asks for that no rule sets is named too, because a reader falling back forever looks identical to one that is working. |\n| `readPolicy(policy, kind, scope, opts)` | rule → config → constant, through injected `rule` / `config` / `journal` ports. |\n| `policyOrDefault(policy, input, apply)` | A resolved value that cannot be APPLIED is the same kind of gap: recorded, and the default takes over. A default that also fails still throws — that is our bug, not a misconfiguration. |\n| `generatePolicyMarkdown` · `describePolicy` | The policy as committed prose, and as the bounded instructions an agent gets at connect. Every count and the precedence sentence are derived. |\n| `observeJournal` / `reflect` / `curate` / `promote` / `demote` / `playbookRules` | The learning loop. A promoted learning enters at whatever tier the policy calls **advisory**, so it can only ever fill silence. |\n| `journalRowForEvent` | The other three signals' missing input: real lifecycle events as countable rows. |\n| `rulesToSeed(seed, existing)` | Seeding idempotent by id AND by coverage. |\n| `runPolicyAdapterConformance(harness)` | The suite every storage adapter passes, answering with a report rather than an exit code. |\n| `declareThreshold({ value, authority, reason, subject?, revisit? })` | The compile-time tier. Frozen, so there is no runtime override; refused **at the declaration** — which is module load — when the authority, the reason or the value is missing, or the `revisit` is not an ISO date. |\n| `expiredThresholds(list, now)` · `describeThreshold` · `isThreshold` | A `revisit` that has passed is REPORTED, never thrown: a build that started failing on a date is a build that gets its date deleted. |\n| `@geonosis/policy/permissions` | `definePolicies` / `hasPermission` / `resolvePermissions` / `checkPermissions` / `createPolicyCatalog` / `expandPolicies`. |\n| `@geonosis/policy/medusa` · `/drizzle` | Two stores behind the same ports. Neither imports the store it adapts. |\n\n## Migrating a Medusa storefront's rules engine, in five lines\n\n1. `lib/rules.ts` → `definePolicy({ tiers: POLICY_TIERS, kinds: …, scopeKeys: … })`; the twelve\n   `PolicyConstraint` members become twelve `{ kind, schema }`, and `KNOWN_SCOPE_KEYS` +\n   `scopeSpecificity` both disappear into `scopeKeys` (vaguest first — the weight is the position).\n2. `lib/read-policy.ts` → `readPolicy(policy, kind, query, { fallback, …adapter })`; the SLA tier\n   dereference becomes `isReference` + `dereference` on the `approvalSlaHours` kind.\n3. `lib/config-store-binding.ts` → `createMedusaPolicyAdapter({ container, moduleKey, bindings })`\n   with `configRow(namespace, key)`; drop `positive()` from every binding — the kind's schema now\n   refuses junk once, for the rule layer too.\n4. `lib/learning.ts` → the same functions; `playbookRules(policy, playbook)` takes the policy, and\n   `journalRowForEvent(name, data, { subjectKeys, actorKeys })` takes the fifteen event names' keys.\n5. `modules/rules-engine/service.ts` keeps `MedusaService` and its three models, and loses the\n   mapping: `listActiveRules()` is the adapter's `rule.rules()`, and `resolve()` is `policy.resolve`.\n\n`proofs/022-W7-parity/` lists every one of its 65 kernel cases against this package, the ten that\nstay consumer-side, and the seven behaviours that deliberately differ.\n\n## A threshold without an authority is a gate\n\n```json\n{ \"packs\": [{ \"pack\": \"thresholds\", \"options\": { \"sourceRoots\": [\"packages\", \"apps\"] } }] }\n```\n\n`@geonosis/verify-arch`'s `thresholds` pack, two checks:\n\n- **T1.1** — a module-scope `const` whose name is threshold-shaped (`_MS`, `_LIMIT`, `MAX_`, `_TTL`,\n  `_SECONDS`, …) and whose value is a bare number. It is a number that decides behaviour and can say\n  only \"me, an hour ago\" when asked why.\n- **T1.2** — one such name declared with **two different values** in two files. That is the half no\n  per-file linter can reach: `grep` finds both, and only something holding the whole graph can say\n  they disagree.\n\nThe name shapes are a **default** rather than an empty list, for the reason `rails` defaults its\nthreat classes and not its `caps.auth`: `_MS` and `MAX_` are the units and bounds a threshold is\nspelled in, and none of them is one repo's word for one repo's thing. A repo adds its own with\n`names`, excuses one with `allow`, and names its own wrapper with `helper`.\n\nA bound declared **inside a function** is left alone — it is a step in an algorithm, not a\nrepo-wide decision — and the anchor that does that is column zero.\n\n## a Workers + D1 app, corrected\n\nThe earlier version of this section read: *\"Its thresholds are lint-enforced constants … They are\nnot [policy]. `grep -E '_LIMIT|_THRESHOLD|MAX_|_CAP'` across all 34 [`constants.ts` files] returns\nnothing.\"* Both halves need correcting.\n\n**The grep was over the wrong denominator.** It searched the 34 `constants.ts` files, and the\nfixture is not in one: `LIVENESS_TIMEOUT_MS = 3000` lives in\n`apps/api/src/lib/health-status.ts`, module-private, three lines above its only use. Run over the\nwhole of `packages/` and `apps/` on 2026-09-02, the pack finds **seven**, and the four cache TTLs\nthat section listed as *not policy* are among them:\n\n```\npackages/db/src/constants.ts:6      PLACEMENT_CACHE_SECONDS = 300\npackages/db/src/constants.ts:7      PLACEMENT_HOT_READ_SECONDS = 30\npackages/auth/src/constants.ts:10   PRINCIPAL_HOT_READ_SECONDS = 30\napps/web/features/document/lib/history-stack.ts:1   MAX_PAST = 100\napps/edge/src/constants.ts:5        API_KEY_CACHE_SECONDS = 300\napps/edge/src/constants.ts:9        UNKNOWN_KEY_CACHE_SECONDS = 60\napps/api/src/lib/health-status.ts:8 LIVENESS_TIMEOUT_MS = 3000\n```\n\n**And \"not policy\" was the wrong conclusion from the right observation.** The observation — none of\nthem carries an authority, a subject or a reason — is exactly what separates a policy rule from a\nconstant, and the answer to it is the compile-time tier, not the runtime one. §13.3 is a law about\nWHERE a constant lives; `declareThreshold` is about who said so. Seven declarations, no store, no\nport, no await.\n\nWhat that repo could still adopt on the runtime side, without changing a line of behaviour, is the\nshape of the call — its constant passed as `fallback`, so the gap becomes countable — and that is\nworth precisely as much as its journal is fed, which today is not at all.\n\n**D-027 status: one consumer with pull.** C3 of `docs/challenge-2026-08-30.md` ranked this behind\n`@geonosis/integrations` for that reason and it was right to; this package ships inside 1.0.0 with\na Medusa storefront's kernel as its only live consumer and musa's lattice as a second fixture, not a second\nconsumer. It is DONE when a Medusa storefront depends on the published version and has deleted its `lib/`.\n\n## What it deliberately does NOT do\n\n- **No global registry.** Upstream's `definePolicies` writes into three `globalThis` objects keyed by\n  name with no duplicate check, and rewrites the caller's objects in place. `createPolicyCatalog`\n  is local and refuses a name already taken.\n- **No store.** Rules, config rows and journal entries all arrive through ports. That is what lets\n  every check in the conformance suite run without a booted server.\n- **No opinion about your tiers.** Including the one that looks universal: whether an unmarked rule\n  may be overridden is `overridableByDefault`, because the two consumers answer it oppositely.\n\n## Consumable from CommonJS\n\nA Medusa backend is `module: Node16` CommonJS **by upstream requirement**, not by preference. This\npackage ships both builds and a `require` condition carrying its own `.d.cts`, so a static import\ntype-checks and `require()` works:\n\n```ts\nimport { definePolicy } from '@geonosis/policy'      // ESM, module: Node16 or ESNext\nconst { definePolicy } = require('@geonosis/policy') // CommonJS\n```\n\nAn ESM-only package is a wall for such a backend, and no amount of parity gets over it: a Medusa storefront\nmeasured `@geonosis/testbed` at 15/15 identical and still could not adopt it, because a static\nimport is TS1479 and `await import()` cannot serve the synchronous `describe()` registration its 107\nsuites are built on.\n","readmeFilename":""}