{"_id":"@agentplat/collective-planning","_rev":"13-0c32b1c37b73b17f23c6a0b3403979b6","name":"@agentplat/collective-planning","dist-tags":{"agentplat-stage-74c331e7b716":"0.3.0-beta.3","agentplat-stage-61ee591e79b0":"0.3.0-beta.4","agentplat-stage-ffca668731c9":"0.3.0-beta.4","agentplat-stage-dbd047c3c9a9":"0.3.0-beta.4","agentplat-stage-dc16b2267584":"0.3.0-beta.5","next":"0.3.0-beta.8","latest":"1.2.0"},"versions":{"0.3.0-beta.3":{"name":"@agentplat/collective-planning","version":"0.3.0-beta.3","license":"Apache-2.0","_id":"@agentplat/collective-planning@0.3.0-beta.3","maintainers":[{"name":"douglas-grishen","email":"douglas@grishen.com"}],"homepage":"https://github.com/Agentplat/agentplat#readme","bugs":{"url":"https://github.com/Agentplat/agentplat/issues"},"dist":{"shasum":"38da74db0c8c3cd05f69df4f86a51e732aa2a985","tarball":"https://registry.npmjs.org/@agentplat/collective-planning/-/collective-planning-0.3.0-beta.3.tgz","fileCount":67,"integrity":"sha512-FHMMCiFgOLw2+LQoXrmS3uRmuwT1/QAQYwe+DuszPxKsOrFUd9PW75xHKFuYMjIU36uU+maySfx2nFo90Keupw==","signatures":[{"sig":"MEUCIQCEhw7P2r3QuhYAhSNSpWaP+xwzERMAPs0j23KqxV/K5wIgFsjK0yPPVsXT1BLDmYwr9WROWTwxfug5dARaBfox1oQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1186563},"main":"./dist/index.js","type":"module","_from":"file:/tmp/agentplat-publish-vZAAOr/tarballs/agentplat-collective-planning-0.3.0-beta.3.tgz","types":"./dist/index.d.ts","engines":{"node":">=20.19.3"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./mesh":{"types":"./dist/mesh.d.ts","import":"./dist/mesh.js"},"./evaluation":{"types":"./dist/evaluation.d.ts","import":"./dist/evaluation.js"},"./development-evidence":{"types":"./dist/development-evidence.d.ts","import":"./dist/development-evidence.js"},"./distributed-decomposition":{"types":"./dist/distributed-decomposition.d.ts","import":"./dist/distributed-decomposition.js"}},"scripts":{"build":"tsc -p tsconfig.json","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","type-check":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"douglas-grishen","email":"douglas@grishen.com"},"_resolved":"/tmp/agentplat-publish-vZAAOr/tarballs/agentplat-collective-planning-0.3.0-beta.3.tgz","_integrity":"sha512-FHMMCiFgOLw2+LQoXrmS3uRmuwT1/QAQYwe+DuszPxKsOrFUd9PW75xHKFuYMjIU36uU+maySfx2nFo90Keupw==","repository":{"url":"git+https://github.com/Agentplat/agentplat.git","type":"git","directory":"packages/collective-planning"},"_npmVersion":"10.8.2","description":"Portable contracts and deterministic primitives for distributed mission planning.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"@agentplat/core":"^0.3.0-beta.3","@agentplat/mesh":"^0.3.0-beta.3","@agentplat/mesh-protocol":"^0.3.0-beta.3","@agentplat/collective-control":"^0.3.0-beta.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/collective-planning_0.3.0-beta.3_1786673553543_0.12564221255881303","host":"s3://npm-registry-packages-npm-production"}},"0.3.0-beta.4":{"name":"@agentplat/collective-planning","version":"0.3.0-beta.4","license":"Apache-2.0","_id":"@agentplat/collective-planning@0.3.0-beta.4","maintainers":[{"name":"douglas-grishen","email":"douglas@grishen.com"}],"homepage":"https://github.com/Agentplat/agentplat#readme","bugs":{"url":"https://github.com/Agentplat/agentplat/issues"},"dist":{"shasum":"e72cd75283736c147cf1fc27c95c0547847a27f8","tarball":"https://registry.npmjs.org/@agentplat/collective-planning/-/collective-planning-0.3.0-beta.4.tgz","fileCount":71,"integrity":"sha512-4zODNtMHqQ+FVFZoQgzzt240dJg6GjPgzWSDi5A43fD7Cp7cEcAr7IGeRIQ3NDLh/Do2WYrRh/lS+aDAgrB12g==","signatures":[{"sig":"MEQCIE6ORRJyPFMS4zBK1MgW5/8Rkerdgz1BXKQJSIgR7quoAiAidgYOVed704BH2QMpLf+F61+9NE+cZQBMNQimJBmcTA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1201124},"main":"./dist/index.js","type":"module","_from":"file:/tmp/agentplat-publish-jABHQZ/tarballs/agentplat-collective-planning-0.3.0-beta.4.tgz","types":"./dist/index.d.ts","engines":{"node":">=20.19.3"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./mesh":{"types":"./dist/mesh.d.ts","import":"./dist/mesh.js"},"./evaluation":{"types":"./dist/evaluation.d.ts","import":"./dist/evaluation.js"},"./mission-continuity":{"types":"./dist/mission-continuity.d.ts","import":"./dist/mission-continuity.js"},"./development-evidence":{"types":"./dist/development-evidence.d.ts","import":"./dist/development-evidence.js"},"./distributed-decomposition":{"types":"./dist/distributed-decomposition.d.ts","import":"./dist/distributed-decomposition.js"}},"scripts":{"build":"tsc -p tsconfig.json","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","type-check":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"douglas-grishen","email":"douglas@grishen.com"},"_resolved":"/tmp/agentplat-publish-jABHQZ/tarballs/agentplat-collective-planning-0.3.0-beta.4.tgz","_integrity":"sha512-4zODNtMHqQ+FVFZoQgzzt240dJg6GjPgzWSDi5A43fD7Cp7cEcAr7IGeRIQ3NDLh/Do2WYrRh/lS+aDAgrB12g==","repository":{"url":"git+https://github.com/Agentplat/agentplat.git","type":"git","directory":"packages/collective-planning"},"_npmVersion":"10.8.2","description":"Portable contracts and deterministic primitives for distributed mission planning.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"@agentplat/core":"^0.3.0-beta.4","@agentplat/mesh":"^0.3.0-beta.4","@agentplat/mesh-protocol":"^0.3.0-beta.4","@agentplat/collective-control":"^0.3.0-beta.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/collective-planning_0.3.0-beta.4_1786996613810_0.9558585850532013","host":"s3://npm-registry-packages-npm-production"}},"0.3.0-beta.5":{"name":"@agentplat/collective-planning","version":"0.3.0-beta.5","license":"Apache-2.0","_id":"@agentplat/collective-planning@0.3.0-beta.5","maintainers":[{"name":"douglas-grishen","email":"douglas@grishen.com"}],"homepage":"https://github.com/Agentplat/agentplat#readme","bugs":{"url":"https://github.com/Agentplat/agentplat/issues"},"dist":{"shasum":"96e93664de16a08b6431d0639498c7b1aa0706f5","tarball":"https://registry.npmjs.org/@agentplat/collective-planning/-/collective-planning-0.3.0-beta.5.tgz","fileCount":71,"integrity":"sha512-TqNeuenphAbC1YiXQTxppEx8A+vBFw1uU09y6nPbm+aCOhMaety/n44ZC4TGvxegkK2wjs+J8/eT91p4CDPgQQ==","signatures":[{"sig":"MEUCIQDlwhMc/ZVfN+YflvEL7J9hrscGNSdOKGOW1F9XOnZHXAIgB73ZQRz1LbAWmnp1DJpqC/4SYvWKLxy5BHPmkjztKRw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDnpZAG2atSc2pmC4vqctDFPuGLKXzMYLHIF/ULlPIp/gIgBok+H/aWRXyf7isg6uCXyYnX96ViSTJ8dAmDsNJgLdM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@agentplat%2fcollective-planning@0.3.0-beta.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1201124},"main":"./dist/index.js","type":"module","_from":"file:/tmp/agentplat-publish-QbF2qw/tarballs/agentplat-collective-planning-0.3.0-beta.5.tgz","types":"./dist/index.d.ts","engines":{"node":">=20.19.3"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./mesh":{"types":"./dist/mesh.d.ts","import":"./dist/mesh.js"},"./evaluation":{"types":"./dist/evaluation.d.ts","import":"./dist/evaluation.js"},"./mission-continuity":{"types":"./dist/mission-continuity.d.ts","import":"./dist/mission-continuity.js"},"./development-evidence":{"types":"./dist/development-evidence.d.ts","import":"./dist/development-evidence.js"},"./distributed-decomposition":{"types":"./dist/distributed-decomposition.d.ts","import":"./dist/distributed-decomposition.js"}},"scripts":{"build":"tsc -p tsconfig.json","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","type-check":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4da1fef7-af53-4727-854c-017d1e441525"}},"_resolved":"/tmp/agentplat-publish-QbF2qw/tarballs/agentplat-collective-planning-0.3.0-beta.5.tgz","_integrity":"sha512-TqNeuenphAbC1YiXQTxppEx8A+vBFw1uU09y6nPbm+aCOhMaety/n44ZC4TGvxegkK2wjs+J8/eT91p4CDPgQQ==","repository":{"url":"git+https://github.com/Agentplat/agentplat.git","type":"git","directory":"packages/collective-planning"},"_npmVersion":"11.17.0","description":"Portable contracts and deterministic primitives for distributed mission planning.","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","dependencies":{"@agentplat/core":"^0.3.0-beta.5","@agentplat/mesh":"^0.3.0-beta.5","@agentplat/mesh-protocol":"^0.3.0-beta.5","@agentplat/collective-control":"^0.3.0-beta.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/collective-planning_0.3.0-beta.5_1787371969673_0.21325492790698908","host":"s3://npm-registry-packages-npm-production"}},"0.3.0-beta.7":{"name":"@agentplat/collective-planning","version":"0.3.0-beta.7","license":"Apache-2.0","_id":"@agentplat/collective-planning@0.3.0-beta.7","maintainers":[{"name":"douglas-grishen","email":"douglas@grishen.com"}],"homepage":"https://github.com/Agentplat/agentplat#readme","bugs":{"url":"https://github.com/Agentplat/agentplat/issues"},"dist":{"shasum":"202565c88d7524cc52443070d681449cf0322a82","tarball":"https://registry.npmjs.org/@agentplat/collective-planning/-/collective-planning-0.3.0-beta.7.tgz","fileCount":71,"integrity":"sha512-q1PUf1rcFkValPUCoHBd7YFqOGUlbXJB33MDCS/h7Rwax+LYvUBMT/pTNe2ed0ZFQ0WeGK5WVSl3nZEEmMxIQQ==","signatures":[{"sig":"MEQCIC4tVUJoynCTF/jBc3yoxA9HKEQgPEprbpo5loIV4ZfuAiAU6vjiH1yxL8G6E+8LUdhu8XVBZIaio5T2w08aw3DZNw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@agentplat%2fcollective-planning@0.3.0-beta.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1220130},"main":"./dist/index.js","type":"module","_from":"file:/home/runner/work/agentplat/agentplat/release-artifacts/agentplat-collective-planning-0.3.0-beta.7.tgz","types":"./dist/index.d.ts","engines":{"node":">=20.19.3"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./mesh":{"types":"./dist/mesh.d.ts","import":"./dist/mesh.js"},"./evaluation":{"types":"./dist/evaluation.d.ts","import":"./dist/evaluation.js"},"./mission-continuity":{"types":"./dist/mission-continuity.d.ts","import":"./dist/mission-continuity.js"},"./development-evidence":{"types":"./dist/development-evidence.d.ts","import":"./dist/development-evidence.js"},"./distributed-decomposition":{"types":"./dist/distributed-decomposition.d.ts","import":"./dist/distributed-decomposition.js"}},"scripts":{"build":"tsc -p tsconfig.json","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","type-check":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"douglas-grishen","email":"douglas@grishen.com"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:fd11cc84-6b1c-4350-8feb-6e7de798e17e"}},"_resolved":"/home/runner/work/agentplat/agentplat/release-artifacts/agentplat-collective-planning-0.3.0-beta.7.tgz","_integrity":"sha512-q1PUf1rcFkValPUCoHBd7YFqOGUlbXJB33MDCS/h7Rwax+LYvUBMT/pTNe2ed0ZFQ0WeGK5WVSl3nZEEmMxIQQ==","repository":{"url":"git+https://github.com/Agentplat/agentplat.git","type":"git","directory":"packages/collective-planning"},"_npmVersion":"11.19.0","description":"Portable contracts and deterministic primitives for distributed mission planning.","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","dependencies":{"@agentplat/core":"^0.3.0-beta.7","@agentplat/mesh":"^0.3.0-beta.7","@agentplat/mesh-protocol":"^0.3.0-beta.7","@agentplat/collective-control":"^0.3.0-beta.7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/collective-planning_0.3.0-beta.7_1788979572560_0.7465753608613499","host":"s3://npm-registry-packages-npm-production"}},"0.3.0-beta.8":{"name":"@agentplat/collective-planning","version":"0.3.0-beta.8","license":"Apache-2.0","_id":"@agentplat/collective-planning@0.3.0-beta.8","maintainers":[{"name":"douglas-grishen","email":"douglas@grishen.com"}],"homepage":"https://github.com/Agentplat/agentplat#readme","bugs":{"url":"https://github.com/Agentplat/agentplat/issues"},"dist":{"shasum":"ea7752ee37a2b5e7ec56af5c36f894d58eea052f","tarball":"https://registry.npmjs.org/@agentplat/collective-planning/-/collective-planning-0.3.0-beta.8.tgz","fileCount":71,"integrity":"sha512-+HSqfKHlLSsmWho7XCBDfRxZz2OuubxZ+Yrw90fqD6hm28/Mh4Jljnf0AhIQX0js/hqfwRYnX6XYr5r4IZqttg==","signatures":[{"sig":"MEQCICUtN4jtExP3W3FNN1Djl3JQ6PYxmVC+0I+hJzvcPnPKAiACldAPySC6PBYgxIB/fnfDJtc6kcthR2IYu9E9tXfOVw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@agentplat%2fcollective-planning@0.3.0-beta.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1220669},"main":"./dist/index.js","type":"module","_from":"file:/home/runner/work/agentplat/agentplat/release-artifacts/agentplat-collective-planning-0.3.0-beta.8.tgz","types":"./dist/index.d.ts","engines":{"node":">=20.19.3"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./mesh":{"types":"./dist/mesh.d.ts","import":"./dist/mesh.js"},"./evaluation":{"types":"./dist/evaluation.d.ts","import":"./dist/evaluation.js"},"./mission-continuity":{"types":"./dist/mission-continuity.d.ts","import":"./dist/mission-continuity.js"},"./development-evidence":{"types":"./dist/development-evidence.d.ts","import":"./dist/development-evidence.js"},"./distributed-decomposition":{"types":"./dist/distributed-decomposition.d.ts","import":"./dist/distributed-decomposition.js"}},"scripts":{"build":"tsc -p tsconfig.json","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","type-check":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"douglas-grishen","email":"douglas@grishen.com"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:fd11cc84-6b1c-4350-8feb-6e7de798e17e"}},"_resolved":"/home/runner/work/agentplat/agentplat/release-artifacts/agentplat-collective-planning-0.3.0-beta.8.tgz","_integrity":"sha512-+HSqfKHlLSsmWho7XCBDfRxZz2OuubxZ+Yrw90fqD6hm28/Mh4Jljnf0AhIQX0js/hqfwRYnX6XYr5r4IZqttg==","repository":{"url":"git+https://github.com/Agentplat/agentplat.git","type":"git","directory":"packages/collective-planning"},"_npmVersion":"11.19.0","description":"Portable contracts and deterministic primitives for distributed mission planning.","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","dependencies":{"@agentplat/core":"^0.3.0-beta.8","@agentplat/mesh":"^0.3.0-beta.8","@agentplat/mesh-protocol":"^0.3.0-beta.8","@agentplat/collective-control":"^0.3.0-beta.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/collective-planning_0.3.0-beta.8_1789349109673_0.7564858546936257","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@agentplat/collective-planning","version":"1.0.0","license":"Apache-2.0","_id":"@agentplat/collective-planning@1.0.0","maintainers":[{"name":"douglas-grishen","email":"douglas@grishen.com"}],"homepage":"https://github.com/Agentplat/agentplat#readme","bugs":{"url":"https://github.com/Agentplat/agentplat/issues"},"dist":{"shasum":"664663a94db6b6a8d9581bcc82d389b1b32e4ffd","tarball":"https://registry.npmjs.org/@agentplat/collective-planning/-/collective-planning-1.0.0.tgz","fileCount":71,"integrity":"sha512-eZgKvcK7YXPJ61gQilMVNSsNDPCxgdWrKnChjXd19Gq4uMfrKFAkcyTefWt6Y3mmYd2vMwdxC88srJn7rjrckA==","signatures":[{"sig":"MEUCIFVfZvxlzqnsaLw7luae+2zQOWDhrBynSJfw61bX6ALXAiEAkZXTZBXH2+sisPxl6OJNu1Ngt3cqJSZAiDV28uVN3x8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQD+J50TW6DnXgMRNG3bkD+CpTpS5dA3zIm9g9zdUBhHKQIhAOSiGUXxWxORDwGmUHbqljY0RcFCLNIv3w1+rBwFsovT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@agentplat%2fcollective-planning@1.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1220848},"main":"./dist/index.js","type":"module","_from":"file:/home/runner/work/agentplat/agentplat/release-artifacts/agentplat-collective-planning-1.0.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=20.19.3"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./mesh":{"types":"./dist/mesh.d.ts","import":"./dist/mesh.js"},"./evaluation":{"types":"./dist/evaluation.d.ts","import":"./dist/evaluation.js"},"./mission-continuity":{"types":"./dist/mission-continuity.d.ts","import":"./dist/mission-continuity.js"},"./development-evidence":{"types":"./dist/development-evidence.d.ts","import":"./dist/development-evidence.js"},"./distributed-decomposition":{"types":"./dist/distributed-decomposition.d.ts","import":"./dist/distributed-decomposition.js"}},"scripts":{"build":"tsc -p tsconfig.json","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","type-check":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d6eaed8c-c83b-49a4-b7d3-0cce040683a7"}},"_resolved":"/home/runner/work/agentplat/agentplat/release-artifacts/agentplat-collective-planning-1.0.0.tgz","_integrity":"sha512-eZgKvcK7YXPJ61gQilMVNSsNDPCxgdWrKnChjXd19Gq4uMfrKFAkcyTefWt6Y3mmYd2vMwdxC88srJn7rjrckA==","repository":{"url":"git+https://github.com/Agentplat/agentplat.git","type":"git","directory":"packages/collective-planning"},"_npmVersion":"11.19.0","description":"Portable contracts and deterministic primitives for distributed mission planning.","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","dependencies":{"@agentplat/core":"^1.0.0","@agentplat/mesh":"^1.0.0","@agentplat/mesh-protocol":"^1.0.0","@agentplat/collective-control":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/collective-planning_1.0.0_1790116413001_0.9696858622665838","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@agentplat/collective-planning","version":"1.1.0","license":"Apache-2.0","_id":"@agentplat/collective-planning@1.1.0","maintainers":[{"name":"douglas-grishen","email":"douglas@grishen.com"}],"homepage":"https://github.com/Agentplat/agentplat#readme","bugs":{"url":"https://github.com/Agentplat/agentplat/issues"},"dist":{"shasum":"ecec8f4ecad383ada3aa297072ec741c6abccd82","tarball":"https://registry.npmjs.org/@agentplat/collective-planning/-/collective-planning-1.1.0.tgz","fileCount":71,"integrity":"sha512-Tr2CpUEaRGauSGQrq8JxfyolllyPaOo2pe6hUDqeZbe/cYevrzLLYn1pC0WxrW/R7wZ9X74eB3WnJk8uu3eLvg==","signatures":[{"sig":"MEUCIQD68isto8e2sgjFrW98bvuqf6WUIABFeuhdHpBJTIr8NAIgJ3fXiY29NM5MqMBFcpyGkcvuDdPVgkWUiZk0wMaxn20=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQD1GV2mqJ0c5Tw3f370njtiSSW1F8HafXnGsvQiBY3GKgIhAJX/8q4Gg4HScvtnYAre63PBSr/bTRUaTl/50yiRzSvR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@agentplat%2fcollective-planning@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1220848},"main":"./dist/index.js","type":"module","_from":"file:/home/runner/work/agentplat/agentplat/release-artifacts/agentplat-collective-planning-1.1.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=20.19.3"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./mesh":{"types":"./dist/mesh.d.ts","import":"./dist/mesh.js"},"./evaluation":{"types":"./dist/evaluation.d.ts","import":"./dist/evaluation.js"},"./mission-continuity":{"types":"./dist/mission-continuity.d.ts","import":"./dist/mission-continuity.js"},"./development-evidence":{"types":"./dist/development-evidence.d.ts","import":"./dist/development-evidence.js"},"./distributed-decomposition":{"types":"./dist/distributed-decomposition.d.ts","import":"./dist/distributed-decomposition.js"}},"scripts":{"build":"tsc -p tsconfig.json","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","type-check":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"d6eaed8c-c83b-49a4-b7d3-0cce040683a7"}},"_resolved":"/home/runner/work/agentplat/agentplat/release-artifacts/agentplat-collective-planning-1.1.0.tgz","_integrity":"sha512-Tr2CpUEaRGauSGQrq8JxfyolllyPaOo2pe6hUDqeZbe/cYevrzLLYn1pC0WxrW/R7wZ9X74eB3WnJk8uu3eLvg==","repository":{"url":"git+https://github.com/Agentplat/agentplat.git","type":"git","directory":"packages/collective-planning"},"_npmVersion":"11.19.0","description":"Portable contracts and deterministic primitives for distributed mission planning.","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","dependencies":{"@agentplat/core":"^1.1.0","@agentplat/mesh":"^1.1.0","@agentplat/mesh-protocol":"^1.1.0","@agentplat/collective-control":"^1.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/collective-planning_1.1.0_1790699492306_0.8219643293813228","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"_id":"@agentplat/collective-planning@1.2.0","bugs":{"url":"https://github.com/Agentplat/agentplat/issues"},"dist":{"shasum":"bfacb5d49b750cb664eb3546de4f0ed2776012f8","tarball":"https://registry.npmjs.org/@agentplat/collective-planning/-/collective-planning-1.2.0.tgz","fileCount":71,"integrity":"sha512-J9WMsFTZxszJlkVgKfwhqr9vt4mLUrYcJdRemREbuiepFdmkPntvZHvL7SLIJFXx+kjVfmcFkU7ROX4JMQ8tWQ==","signatures":[{"sig":"MEUCICdIYB/bnfRAlFFkAltSuF8xSTjahek+ka6CU8sSeYpjAiEAs4wMsk5BUP+qpZoKGfX88wTLWQs8V+U9/J20ATzwsj0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIFhmAddlxcjO6F8JeuA85Fd40Bjah3grC3sT/0vevxf0AiEArvIGP1KJvYVNDkEhAcT5IocakPXVwo5ckvp6EB+KqW0="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@agentplat%2fcollective-planning@1.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1220848},"main":"./dist/index.js","name":"@agentplat/collective-planning","type":"module","_from":"file:/home/runner/work/agentplat/agentplat/release-artifacts/agentplat-collective-planning-1.2.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=20.19.3"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./mesh":{"types":"./dist/mesh.d.ts","import":"./dist/mesh.js"},"./evaluation":{"types":"./dist/evaluation.d.ts","import":"./dist/evaluation.js"},"./mission-continuity":{"types":"./dist/mission-continuity.d.ts","import":"./dist/mission-continuity.js"},"./development-evidence":{"types":"./dist/development-evidence.d.ts","import":"./dist/development-evidence.js"},"./distributed-decomposition":{"types":"./dist/distributed-decomposition.d.ts","import":"./dist/distributed-decomposition.js"}},"license":"Apache-2.0","scripts":{"build":"tsc -p tsconfig.json","clean":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","type-check":"tsc -p tsconfig.json --noEmit"},"version":"1.2.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"d6eaed8c-c83b-49a4-b7d3-0cce040683a7"}},"homepage":"https://github.com/Agentplat/agentplat#readme","_resolved":"/home/runner/work/agentplat/agentplat/release-artifacts/agentplat-collective-planning-1.2.0.tgz","_integrity":"sha512-J9WMsFTZxszJlkVgKfwhqr9vt4mLUrYcJdRemREbuiepFdmkPntvZHvL7SLIJFXx+kjVfmcFkU7ROX4JMQ8tWQ==","repository":{"url":"git+https://github.com/Agentplat/agentplat.git","type":"git","directory":"packages/collective-planning"},"_npmVersion":"11.19.0","description":"Portable contracts and deterministic primitives for distributed mission planning.","directories":{},"maintainers":[{"name":"douglas-grishen","email":"douglas@grishen.com"}],"sideEffects":false,"_nodeVersion":"24.20.0","dependencies":{"@agentplat/core":"^1.2.0","@agentplat/mesh":"^1.2.0","@agentplat/mesh-protocol":"^1.2.0","@agentplat/collective-control":"^1.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/collective-planning_1.2.0_1790812272675_0.2508460011795617"}}},"time":{"created":"2026-08-14T02:12:33.401Z","modified":"2026-09-30T23:51:13.257Z","0.3.0-beta.3":"2026-08-14T02:12:33.687Z","0.3.0-beta.4":"2026-08-17T19:56:53.965Z","0.3.0-beta.5":"2026-08-22T04:12:49.768Z","0.3.0-beta.7":"2026-09-09T18:46:12.637Z","0.3.0-beta.8":"2026-09-14T01:25:09.768Z","1.0.0":"2026-09-22T22:33:33.084Z","1.1.0":"2026-09-29T16:31:32.509Z","1.2.0":"2026-09-30T23:51:12.814Z"},"bugs":{"url":"https://github.com/Agentplat/agentplat/issues"},"license":"Apache-2.0","homepage":"https://github.com/Agentplat/agentplat#readme","repository":{"url":"git+https://github.com/Agentplat/agentplat.git","type":"git","directory":"packages/collective-planning"},"description":"Portable contracts and deterministic primitives for distributed mission planning.","maintainers":[{"name":"douglas-grishen","email":"douglas@grishen.com"}],"readme":"# `@agentplat/collective-planning`\n\nPortable, provider-neutral contracts and a deterministic reducer for forming\nbounded local mission plans. The root entry point is browser safe, has no\nimport-time side effects and depends only on `@agentplat/core` types. The\nopt-in `@agentplat/collective-planning/mesh` entry point composes those records\nwith the existing Mesh coordination and Collective Control contracts. The\nbrowser-safe `@agentplat/collective-planning/evaluation` entry point defines a\nseparate runner/environment boundary and replay-derived evidence contracts.\n\n## Installation (developer preview)\n\nInstall the coordinated preview explicitly:\n\n```sh\nnpm install @agentplat/collective-planning@next\n```\n\nKeep all `@agentplat/*` packages on the same release version. npm's default\n`latest` tag can point to an older preview. See the\n[release channels](https://github.com/Agentplat/agentplat/blob/main/docs/release-channels.md)\nfor distribution status and version selection.\n\nThe browser-safe `@agentplat/collective-planning/development-evidence` entry\npoint closes a fixed source-development inventory only from signed capability\nattestations. Each receipt must resolve to the exact manifest authorized by the\nlocal policy, match its public-surface, integration-boundary and threat-model\ndigests, bind one source commit and tree, and verify under the authorized issuer\nand key. The required artifact resolver returns the ordered frozen source tree\nand every file's exact bytes; the assessor recomputes the tree digest, byte\nlengths and raw SHA-256 content digests before covering any capability. Closure\nalso requires the construction-bound\n`WebCryptoDevelopmentEvidenceAttestationVerifierV1`; a caller-authored boolean\nverifier is rejected. Caller-supplied hashes or an unsigned receipt therefore\ncannot close a capability. This remains source evidence rather than an\nevaluation: empirical validation stays `pending` and `executionPermitted` is\nalways `false`.\n\n## What this increment contains\n\n- closed immutable mission-intent, observation, proposal, selection, decision,\n  fragment, plan-view, adaptive-role and snapshot records;\n- canonical bounded JSON and synchronous browser-safe SHA-256;\n- domain-separated digests and deterministic proposal/fragment identifiers;\n- strict validators that reject unknown fields, malformed Unicode, unsafe\n  integers, invalid time intervals, digest mismatches and inconsistent graphs;\n- constructors that validate and deeply freeze their result;\n- a pure, immutable planning reducer with trusted logical-time commands,\n  atomic acceptance or rejection, deterministic candidate-batch selection and\n  self-contained snapshot/replay state;\n- an opt-in Mesh facade with an exact capability profile and critical\n  extension, a bounded content-addressed fragment repository, local\n  proposal-to-Work admission, replay-only inbound rejection, and\n  assignment-derived Work Contract and adaptive-role composition.\n- an opt-in evaluation surface with strict environment ports, peer-local\n  observation requests, fenced protected-effect receipts, logical-time and\n  opaque snapshot handles, append-only trace V2, a replay-only interaction\n  ledger and an independent invariant monitor.\n\nIt does not contain a transport, signer, assignment implementation, execution\nauthority, environment implementation, runner, campaign or model integration. A\nproposal, fragment, plan view, capability advertisement or adaptive role\nbinding is evidence and coordination data; none of these records grants\nexecution authority.\n\n## Reducer boundary\n\nThe reducer is a synchronous, deterministic state transition. It reads no host\nclock, randomness, transport, storage, model, environment or Mesh state. The\ncaller supplies a closed command and a non-decreasing logical time. The result\nis a deeply frozen next state or a rejection that retains the exact prior state.\n\nConstruction binds planning budget shards to the exact admitted subject set:\neach subject is an ordered peer and instance pair. Discovery, remote proposals,\ncapability changes and Trust changes cannot add a subject, resize a shard or\ntransfer unused budget. The reducer retains accepted observations and\ncursor-tombstone records, so a repeated cursor is idempotent and conflicting\nreuse fails before any plan, budget or lifecycle mutation.\n\nCommands are closed and deterministic: `observation.record`,\n`proposal.record`, `slot.evaluate`, `fragment.transition`,\n`fragment.project-to-work`, `fragment.assignment.observe`,\n`fragment.execution.observe`, `fragment.terminal.observe`,\n`work.revision.observe` and `logical-time.advance`. The five observed Work\nlifecycle commands can only mirror an already accepted adapter decision; they\ncannot select an assignee or create assignment authority. Every command has a\nlogical identifier, required\n`expectedStateDigest`, and logical time. `expectedStateDigest: null` permits a\ncausality-only reordered command; a digest binds optimistic concurrency to that\nexact state. Reuse of an identifier with the same canonical digest is\nidempotent; reuse with different content is a conflict. Invalid shape, scope,\nstate digest, time, graph, budget or lifecycle input is rejected atomically.\n\n`expectedStateDigest` is an optimistic-concurrency precondition for the first\napplication, not domain content. `transitionedAtLogicalMs` is likewise an\nadmission-time precondition for a fragment transition whose identity already\nbinds the fragment, predecessor and terminal status. Both are excluded from the\nidempotency digest. After the domain command is accepted, retries with different\nvalues for either precondition remain idempotent; changing domain payload is\nstill a conflict. `expectedStateDigest` is normalized in retained evidence.\nIncrement 3 lifecycle records additionally retain the first accepted\ntransition time and reducer logical-time witness so snapshot validation can\nre-check the original bounded-time admission without changing command\nidentity. Logical-time advancement is a max-register: a value at or below the\nretained high-water is idempotent and never lowers time.\n\nSnapshot restore is a separate strict API, not a reducer command. It verifies\nthe complete self-contained snapshot before it returns a restored state.\n\nCandidate batches are ordered by the frozen selection policy: constraints first,\nthen policy score, then the policy's declared digest tie-break. A batch produces\nat most one current head for a semantic slot. Predecessor/dependency graphs,\ndepth, fanout, revisions, proposal bytes and concurrency are checked before\nstate change. Reservations are conserved across every accepted prefix; release\nis available only through the safe lifecycle subset and cannot recreate a\nterminal fragment, intent or role.\n\nReducer snapshots are self-contained: they retain identity, intent, policy,\nadmitted subjects and shards, observations and cursor tombstones, domain\nhigh-waters, idempotency records, plan records, budget ledger and logical-time\nhigh-water. Restoring or replaying the same accepted command sequence produces\nthe same state digest without consulting an external observation store.\n\n## Minimal use\n\n```ts\nimport {\n  createPlanSelectionPolicyV1,\n  createPlanningReducerCommandV1,\n  createPlanningReducerStateV1,\n  reducePlanningCommandV1,\n  validateMissionIntentV1,\n} from \"@agentplat/collective-planning\";\n\nconst policy = createPlanSelectionPolicyV1({\n  schemaVersion: 1,\n  selectionPolicyId: \"balanced-v1\",\n  revision: 1,\n  scoringDimensions: [\n    {\n      schemaVersion: 1,\n      dimension: \"outcome_coverage\",\n      weight: 100,\n      direction: \"maximize\",\n    },\n  ],\n  hardConstraintKeys: [\"authority_bounds\"],\n  acceptanceScoreThreshold: 80,\n  challengeScoreThreshold: 50,\n  tieBreakOrder: [\n    \"score\",\n    \"requested_budget_units\",\n    \"work_deadline\",\n    \"proposed_at_logical_ms\",\n    \"proposal_digest\",\n  ],\n});\n\nconst intent = validateMissionIntentV1(inputFromATrustedBoundary);\n\nconst initialState = createPlanningReducerStateV1({\n  tenantId: intent.tenantId,\n  policyDomainId: intent.policyDomainId,\n  peerId: \"planner-a\",\n  peerInstanceId: \"planner-a-instance-1\",\n  missionIntent: intent,\n  selectionPolicy: policy,\n  admittedSubjects: [\n    {\n      schemaVersion: 1,\n      peerId: \"planner-a\",\n      peerInstanceId: \"planner-a-instance-1\",\n    },\n  ],\n});\n\nconst result = reducePlanningCommandV1(\n  initialState,\n  createPlanningReducerCommandV1({\n    schemaVersion: 1,\n    kind: \"logical-time.advance\",\n    expectedStateDigest: initialState.stateDigest,\n    logicalTimeMs: 1,\n  }),\n);\n```\n\nAll set-like arrays are encoded in ascending lexical order and contain no\nduplicates. A validator returns a detached, deeply frozen value.\n\nFragment lifecycle is append-only. `fragmentRevision: 1` has a null\n`previousStateDigest`; every later state revision retains the exact fragment ID\nand proposal binding, names the preceding state digest and follows a permitted\nstatus transition. A plan view retains that history, while selected heads,\nbudget reservations, Work mappings, roles and fragment high-waters bind only\nthe latest state revision.\n\nEvery latest fragment retains its exact planning reservation. Candidate budget\nis reserved; active, projected, completed and failed work is committed;\ncancelled or superseded work may be released only when no usage must be\nretained. A Work mapping is valid only for a latest projected fragment whose\ndependencies have latest state `completed`.\n\nObservation values reject normalized authority, assignment, hidden-state and\nfuture-schedule field aliases. This structural guard is defense in depth: only\nan environment adapter and independent monitor can establish whether an\nobservation was genuinely visible and truthful. Records crossing a JavaScript\nplugin boundary should be serialized data, not same-realm Proxy objects;\nfactories reject top-level accessor properties before reading their inputs.\n\n`AdaptiveRoleBindingV1.planViewDigest` identifies the already-admitted plan\nview from which the binding was derived. It is intentionally not the digest of\nthe later view that contains the binding, avoiding a circular content address.\n\n## Opt-in Mesh facade\n\nImport the facade explicitly; the browser-safe root never imports Mesh:\n\n```ts\nimport {\n  InMemoryPlanningFragmentRepositoryV1,\n  PLANNING_MESH_CAPABILITY_PROFILE_V1,\n  PLANNING_WORK_EXTENSION_KEY_V1,\n  createPlanningLocalWorkProjectionV1,\n  createPlanningMeshInboundProcessorV1,\n  selectPlanningOfferRecipientsV1,\n} from \"@agentplat/collective-planning/mesh\";\n```\n\nThe sender advertises the exact planning profile through ordinary verified\nMesh discovery and also enables the same critical extension locally. A current\naccepted fragment is first projected to an existing Mesh Work identity. The\noffered fragment, its proposal and decision, and its complete source PlanView\nare then stored as one immutable repository record. The signed Work offer\nnames that content reference and carries the exact critical extension. No\nlegacy or non-critical retry is generated when a peer lacks support.\nEvery envelope in one offer must carry identical critical semantics, and a\nreoffer cannot remove or change previously critical evidence. The selected\npeer IDs may be supplied to the Mesh allocation evaluator as its opt-in\neligible-recipient constraint, allowing the exact planning-capable subset in a\nmixed-capability Peer View without changing the default allocation behavior.\n\nOn receipt, the ordinary Mesh inbound processor verifies and tentatively\nevaluates the offer first. The planning gate then validates the extension,\nrepository evidence, sender identity, Objective and executable Work fields;\nadmits the proposal through the local reducer; and requires the locally\nselected head to bind the same proposal and Work projection. Local and remote\nfragment digests are intentionally allowed to differ because each PlanView is\npeer-local. A rejection returns the original Mesh and planning projections\nwith only the inbound replay/message-ID high-water retained.\n\nCapability advertisements remain self-claims used only for interoperability\nand recipient filtering. A Work Contract and adaptive role can be derived only\nfrom a current accepted Mesh assignment through Collective Control. The facade\ndoes not construct an assignee, assignment epoch, fencing token, lease or\naction grant.\n\nWork revision is composed only while the Work is unassigned. Planning cannot\ncarry an existing role, Work Contract, epoch or fence across a revision; an\nassigned or executing Work must first terminate or drain and later obtain a\nfresh accepted Mesh assignment.\n\n## Opt-in evaluation boundary\n\nImport evaluation contracts explicitly; neither the package root nor the Mesh\nfacade imports an environment implementation:\n\n```ts\nimport {\n  createCollectiveTraceV2,\n  replayCollectiveInteractionLedgerV2,\n  type CollectiveEnvironmentPortV1,\n} from \"@agentplat/collective-planning/evaluation\";\n```\n\nThe runner-visible port has exactly seven frozen data members: `version`,\n`initialize`, `observe`, `applyEffect`, `advance`, `snapshot` and `restore`.\nIt cannot enumerate monitor state, global membership, hidden predicates,\nfuture inputs or an authoritative effect ledger. Observation requests bind one\npeer, instance and exact cursor. Protected-effect attempts bind the registered\nintent, Work Contract, assignment epoch, authority generation, fence, action\nclass and input digest.\n\n`CollectiveTraceEventV2` has closed event kinds and canonical accounting.\n`replayCollectiveInteractionLedgerV2()` is the only ledger constructor: callers\ncannot supply metric totals. The invariant-monitor verdict is likewise derived\nfrom its independent append-only event chain. Boundary evidence replays both\nstreams, rejects unknown causal parents and chain rewrites, and scans public\nartifacts for raw, JSON-escaped, hexadecimal, Base64 or Base64URL forms of the\nregistered hidden canary. Snapshot handles contain only public digests and\ncounters; hidden snapshot state belongs to the environment implementation.\n\n### Frozen statistical campaign registration\n\nThe evaluation subpath also exports an additive V1 registration and terminal\nmanifest for paired multi-seed campaigns. The preflight profile fixes eight\n50-agent cells (two seeds across four strata); the normative profile fixes 240\ncells across 50, 100, 250 and 500 agents, using 10 paired seeds per smaller\nscale/stratum and 30 at 500. Every cell binds its exact scale configuration,\ninteraction ceiling, adaptive and centralized definitions, fault plan and\nfault-matrix row before execution.\n\nThe terminal manifest has exactly one ordered `success` or `failure` entry per\nregistered cell. A failure retains a closed reason code and cannot carry\nsuccess evidence; a success must bind both runners' result, trace, ledger and\ncampaign-evidence digests plus the paired comparison digest. Validation\nrecomputes registration and manifest digests and rejects omissions,\nsubstitutions, reordering, accessors and unknown fields.\n\nThe diagnostic profile is a separate closed schedule: two seeds at 50 and 100\nagents across the same four strata. It cannot be substituted for either the\npreflight or normative profile. Execution state is also explicit and portable:\nevery cell contains the exact adaptive/centralized × first/replay slots, each\nwith a deterministic `runKey`. Claims use revision compare-and-swap plus fenced,\nexpiring leases. An expired lease can be reclaimed only before a run starts;\nan expired running slot requires reconciliation with its external commit.\n\nSettling one failed slot does not erase or cancel the other three. A terminal\nmanifest can be materialized only after every registered cell is terminal, and\nlate or stale workers cannot overwrite a newer lease generation.\n\n### Normative campaign control plane\n\nThe evaluation subpath also exposes a provider-neutral, static control plane\nfor the full 50/100/250/500-agent statistical campaign. It creates immutable\n240-cell / 960-slot plans partitioned into 48 five-cell shards, bounded\nauthorization records, evaluator-owned metric projections, and fail-closed\neligibility attestations. A descriptor marked `diagnostic` or\n`synthetic_conformance` cannot become eligible.\n\nThe companion `@agentplat/mesh-sim` operation boundary can execute one exact\nauthorized five-cell shard through a trusted registry-resolved runner/evaluator\npair plus caller-supplied durable-store and artifact-writer ports. The\ndescriptor commits independent runner and evaluator digests, authorization\nfixes an exact five-cells-per-shard budget and credential identity, and the\ndurable namespace derives from the plan plus stable authenticated authorization\ndigest. This repository registers no real normative adapter, executes\nno campaign, accesses no hosted service, publishes no package and makes no\nrelease claim.\n\n### Campaign readiness boundary\n\nThe evaluation subpath exports a separate provider-neutral readiness contract\nfor reviewing the complete registered campaign before authorization. It binds\nthe exact source tree, registration, operation plan and adapter descriptor to a\nfixed capacity ceiling, then derives `no_go` or\n`ready_for_operator_authorization` from a closed set of content-addressed\nevidence receipts. Callers cannot select the recommendation.\n\nReadiness never grants authority: every plan, estimate and assessment keeps\n`executionPermitted` and `fullCampaignPermitted` false. Campaign-produced\nstatistical outcomes and release-produced registry outcomes are retained as\nseparate pending sets, so repository checks cannot be mistaken for campaign or\npublication evidence. Monetary cost remains unresolved until an operator\nsupplies a separately bound provider rate card.\n","readmeFilename":"README.md"}