{"_id":"@alma-harness/schedule","_rev":"11-4c7a421859b1d64a04308db385f5596c","name":"@alma-harness/schedule","dist-tags":{"latest":"0.10.2"},"versions":{"0.3.0":{"name":"@alma-harness/schedule","version":"0.3.0","license":"Apache-2.0","_id":"@alma-harness/schedule@0.3.0","maintainers":[{"name":"fabiofernandescarneiro","email":"fabiofernandescarneiro@gmail.com"}],"homepage":"https://github.com/FabioFernandesCarneiro/alma#readme","bugs":{"url":"https://github.com/FabioFernandesCarneiro/alma/issues"},"dist":{"shasum":"3ec45edf258437263eb23a37679b0e7801f0e3d6","tarball":"https://registry.npmjs.org/@alma-harness/schedule/-/schedule-0.3.0.tgz","fileCount":6,"integrity":"sha512-gKokrXdcDKEkl/YiqTdAAK70Nub+1T7h6xRtgG6c1qO/Iq/fgufLy770e/lS6FVSI9ijMW0EKON3g70gmHMfPA==","signatures":[{"sig":"MEQCID3rKG8gaxF+5IJAQB0A6HC+B2an9Cp9NLZ/S2XBMh5eAiBsn1XLykwOv2Q8be47DDYalbuOmULwt//zZu61Jczkcg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39344},"main":"./dist/index.js","type":"module","_from":"file:alma-harness-schedule-0.3.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"fabiofernandescarneiro","email":"fabiofernandescarneiro@gmail.com"},"_resolved":"/private/var/folders/zc/snhwcnp15dj2hk0k9_g1fh3h0000gn/T/b78fcc34a46824fe74081ca29141010e/alma-harness-schedule-0.3.0.tgz","_integrity":"sha512-gKokrXdcDKEkl/YiqTdAAK70Nub+1T7h6xRtgG6c1qO/Iq/fgufLy770e/lS6FVSI9ijMW0EKON3g70gmHMfPA==","repository":{"url":"git+https://github.com/FabioFernandesCarneiro/alma.git","type":"git","directory":"packages/schedule"},"_npmVersion":"11.18.0","description":"Alma's clock: what is due, and the tick an external scheduler calls to run it — no process kept alive.","directories":{},"_nodeVersion":"26.4.0","dependencies":{"croner":"^10.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","typescript":"^5.9.2","@types/node":"^24.1.0"},"peerDependencies":{"@alma-harness/core":"^0.3.0","@alma-harness/loop":"^0.3.0"},"_npmOperationalInternal":{"tmp":"tmp/schedule_0.3.0_1788455645957_0.5455418371946819","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@alma-harness/schedule","version":"0.4.0","license":"Apache-2.0","_id":"@alma-harness/schedule@0.4.0","maintainers":[{"name":"fabiofernandescarneiro","email":"fabiofernandescarneiro@gmail.com"}],"homepage":"https://github.com/FabioFernandesCarneiro/alma#readme","bugs":{"url":"https://github.com/FabioFernandesCarneiro/alma/issues"},"dist":{"shasum":"c0063c669b701b4d5c8d84d58ae2b0a7d5496b9e","tarball":"https://registry.npmjs.org/@alma-harness/schedule/-/schedule-0.4.0.tgz","fileCount":6,"integrity":"sha512-1vT+iMgE90A7gfkYfmxobgIMxO/tO1JpKkn8O3KIuUemksHtTVvBezraMjhUV2AEy0rp8GMc95CQ45+AHscfJw==","signatures":[{"sig":"MEQCIBd6sPPWhFF/vXFhz1dhNVOJq8hc7IPcPpVIgJqbQhc+AiAemXGLRiMiX6u3w4K2raqhi4xVxbiixjXONkv9VLsIbA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39344},"main":"./dist/index.js","type":"module","_from":"file:alma-harness-schedule-0.4.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"fabiofernandescarneiro","email":"fabiofernandescarneiro@gmail.com"},"_resolved":"/private/var/folders/zc/snhwcnp15dj2hk0k9_g1fh3h0000gn/T/65b4bece6bf13b42362f9dd8f7c27ed3/alma-harness-schedule-0.4.0.tgz","_integrity":"sha512-1vT+iMgE90A7gfkYfmxobgIMxO/tO1JpKkn8O3KIuUemksHtTVvBezraMjhUV2AEy0rp8GMc95CQ45+AHscfJw==","repository":{"url":"git+https://github.com/FabioFernandesCarneiro/alma.git","type":"git","directory":"packages/schedule"},"_npmVersion":"11.18.0","description":"Alma's clock: what is due, and the tick an external scheduler calls to run it — no process kept alive.","directories":{},"_nodeVersion":"26.4.0","dependencies":{"croner":"^10.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","typescript":"^5.9.2","@types/node":"^24.1.0"},"peerDependencies":{"@alma-harness/core":"^0.4.0","@alma-harness/loop":"^0.4.0"},"_npmOperationalInternal":{"tmp":"tmp/schedule_0.4.0_1788462111656_0.15720887843161813","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@alma-harness/schedule","version":"0.5.0","license":"Apache-2.0","_id":"@alma-harness/schedule@0.5.0","maintainers":[{"name":"fabiofernandescarneiro","email":"fabiofernandescarneiro@gmail.com"}],"homepage":"https://github.com/FabioFernandesCarneiro/alma#readme","bugs":{"url":"https://github.com/FabioFernandesCarneiro/alma/issues"},"dist":{"shasum":"de6d99f79831e9e23839293373bc8ffe6ad031d6","tarball":"https://registry.npmjs.org/@alma-harness/schedule/-/schedule-0.5.0.tgz","fileCount":6,"integrity":"sha512-QrSXLyR3RPtCaeT7YovvXvaNu4952e5Hi8RQMlH214qPRxHT2GAhkJ71yN4OzPLRElRTypqDMbs+6QmYM3EKVQ==","signatures":[{"sig":"MEUCIAynU8DnXBpThx/Q2aX+c8gbr6kQLF5y7h9YkN82aY9KAiEAgPyNnB2kriz39aT0bQEyCO6wGRD7yPE503gYSp5GsQs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":69532},"main":"./dist/index.js","type":"module","_from":"file:alma-harness-schedule-0.5.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"fabiofernandescarneiro","email":"fabiofernandescarneiro@gmail.com"},"_resolved":"/private/var/folders/zc/snhwcnp15dj2hk0k9_g1fh3h0000gn/T/d456a8ed3b14506a04f1a32ba9dd0e14/alma-harness-schedule-0.5.0.tgz","_integrity":"sha512-QrSXLyR3RPtCaeT7YovvXvaNu4952e5Hi8RQMlH214qPRxHT2GAhkJ71yN4OzPLRElRTypqDMbs+6QmYM3EKVQ==","repository":{"url":"git+https://github.com/FabioFernandesCarneiro/alma.git","type":"git","directory":"packages/schedule"},"_npmVersion":"11.18.0","description":"Alma's clock: what is due, and the tick an external scheduler calls to run it — no process kept alive.","directories":{},"_nodeVersion":"26.4.0","dependencies":{"croner":"^10.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.4","typescript":"^5.9.2","@types/node":"^24.1.0"},"peerDependencies":{"@alma-harness/core":"^0.5.0","@alma-harness/loop":"^0.5.0"},"_npmOperationalInternal":{"tmp":"tmp/schedule_0.5.0_1788472373503_0.9227302706244354","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@alma-harness/schedule","version":"0.6.0","license":"Apache-2.0","_id":"@alma-harness/schedule@0.6.0","maintainers":[{"name":"fabiofernandescarneiro","email":"fabiofernandescarneiro@gmail.com"}],"homepage":"https://github.com/FabioFernandesCarneiro/alma#readme","bugs":{"url":"https://github.com/FabioFernandesCarneiro/alma/issues"},"dist":{"shasum":"9fbcdbeca7f28f78f1feaf20e1798310a287852b","tarball":"https://registry.npmjs.org/@alma-harness/schedule/-/schedule-0.6.0.tgz","fileCount":6,"integrity":"sha512-4ozhTgGd/6CGpEv0KXHmfQMJGk+cPJ1k985k3L1F9PEj1UexpDVkEv+CST2uTIkojv+6WceNvgjyoK/4CNtjYw==","signatures":[{"sig":"MEYCIQD8z6RXqMZkPHjrx2qeacvBvlG6a54ZidsomwqTFYB3QgIhAL+5DpReEUhmTSByISIGgQVfw1FT+ZKHiFbKmS6Qh6of","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":148906},"main":"./dist/index.js","type":"module","_from":"file:alma-harness-schedule-0.6.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"fabiofernandescarneiro","email":"fabiofernandescarneiro@gmail.com"},"_resolved":"/private/var/folders/zc/snhwcnp15dj2hk0k9_g1fh3h0000gn/T/f5c34a5dcd90f3e980fa790d645d6670/alma-harness-schedule-0.6.0.tgz","_integrity":"sha512-4ozhTgGd/6CGpEv0KXHmfQMJGk+cPJ1k985k3L1F9PEj1UexpDVkEv+CST2uTIkojv+6WceNvgjyoK/4CNtjYw==","repository":{"url":"git+https://github.com/FabioFernandesCarneiro/alma.git","type":"git","directory":"packages/schedule"},"_npmVersion":"11.18.0","description":"Alma's clock: what is due, and the tick an external scheduler calls to run it — no process kept alive.","directories":{},"_nodeVersion":"26.4.0","dependencies":{"croner":"^10.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.16.3","vitest":"^3.2.4","@types/pg":"^8.15.5","typescript":"^5.9.2","@types/node":"^24.1.0","@alma-harness/memory":"^0.6.0","@alma-harness/postgres":"^0.6.0","@alma-harness/postgres-execution":"^0.6.0"},"peerDependencies":{"@alma-harness/core":"^0.6.0","@alma-harness/loop":"^0.6.0","@alma-harness/batch":"^0.6.0","@alma-harness/execution":"^0.6.0","@alma-harness/conversation":"^0.6.0"},"_npmOperationalInternal":{"tmp":"tmp/schedule_0.6.0_1788902329417_0.32756173065576855","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"@alma-harness/schedule","version":"0.6.1","license":"Apache-2.0","_id":"@alma-harness/schedule@0.6.1","maintainers":[{"name":"fabiofernandescarneiro","email":"fabiofernandescarneiro@gmail.com"}],"homepage":"https://github.com/FabioFernandesCarneiro/alma#readme","bugs":{"url":"https://github.com/FabioFernandesCarneiro/alma/issues"},"dist":{"shasum":"2100fe5e08552eef7a4a4e5f55ec041d48da422d","tarball":"https://registry.npmjs.org/@alma-harness/schedule/-/schedule-0.6.1.tgz","fileCount":6,"integrity":"sha512-iIkx0J7e+4fiKI3bbLSSwsQIyaXbeUhQOPin12iSkedDi74zIOzbaW+Ryohap0Zmc0cEWXoRolb1juE+jKtumA==","signatures":[{"sig":"MEUCIQCDvNQ5I6ujx/8KtVNzg7MdHQgivdnqoiKyacl4k5DxLwIgf2n5TV92MkxOQi6YD4G5hj7hSbIoMpImMtDyy2tNwqc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":148906},"main":"./dist/index.js","type":"module","_from":"file:alma-harness-schedule-0.6.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"fabiofernandescarneiro","email":"fabiofernandescarneiro@gmail.com"},"_resolved":"/private/var/folders/zc/snhwcnp15dj2hk0k9_g1fh3h0000gn/T/34ca920c028060ee1c3d08f65fc1eefb/alma-harness-schedule-0.6.1.tgz","_integrity":"sha512-iIkx0J7e+4fiKI3bbLSSwsQIyaXbeUhQOPin12iSkedDi74zIOzbaW+Ryohap0Zmc0cEWXoRolb1juE+jKtumA==","repository":{"url":"git+https://github.com/FabioFernandesCarneiro/alma.git","type":"git","directory":"packages/schedule"},"_npmVersion":"11.18.0","description":"Alma's clock: what is due, and the tick an external scheduler calls to run it — no process kept alive.","directories":{},"_nodeVersion":"26.4.0","dependencies":{"croner":"^10.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.16.3","vitest":"^3.2.4","@types/pg":"^8.15.5","typescript":"^5.9.2","@types/node":"^24.1.0","@alma-harness/memory":"^0.6.1","@alma-harness/postgres":"^0.6.1","@alma-harness/postgres-execution":"^0.6.1"},"peerDependencies":{"@alma-harness/core":"^0.6.1","@alma-harness/loop":"^0.6.1","@alma-harness/batch":"^0.6.1","@alma-harness/execution":"^0.6.1","@alma-harness/conversation":"^0.6.1"},"_npmOperationalInternal":{"tmp":"tmp/schedule_0.6.1_1788905833253_0.46459808121991686","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@alma-harness/schedule","version":"0.7.0","license":"Apache-2.0","_id":"@alma-harness/schedule@0.7.0","maintainers":[{"name":"fabiofernandescarneiro","email":"fabiofernandescarneiro@gmail.com"}],"homepage":"https://github.com/FabioFernandesCarneiro/alma#readme","bugs":{"url":"https://github.com/FabioFernandesCarneiro/alma/issues"},"dist":{"shasum":"e2781a39aa997acad91241ed6d3e7522cf64f603","tarball":"https://registry.npmjs.org/@alma-harness/schedule/-/schedule-0.7.0.tgz","fileCount":6,"integrity":"sha512-zaoZ8T1AxuLUCmT0KwCpjsywTy4SyvfhNp+nXzSoj0XCshuHB+GNNQOVu4IlQTcK+SUP3Kh9BiMbe42tDS0mKA==","signatures":[{"sig":"MEYCIQC+x4HLzMdeAyhxRN21Zhnx/VzfYCR4bRrAxBpztysA3wIhAP3IoqQcVhBJxp+K+BPwVd4taAvIPf+g4oX6Dl/4ciFn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIEOwoYgW3jZjbNtqPejE5S3zBmqFNlHF0fpTjvbaRo0dAiB37yWn4dD1QFXm1L81OGra9J2cS9BMMoMOvrtOmo+TTQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":114069},"main":"./dist/index.js","type":"module","_from":"file:alma-harness-schedule-0.7.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"fabiofernandescarneiro","email":"fabiofernandescarneiro@gmail.com"},"_resolved":"/private/var/folders/zc/snhwcnp15dj2hk0k9_g1fh3h0000gn/T/fd53a37d7a4b352cfe2b9465e164a0cb/alma-harness-schedule-0.7.0.tgz","_integrity":"sha512-zaoZ8T1AxuLUCmT0KwCpjsywTy4SyvfhNp+nXzSoj0XCshuHB+GNNQOVu4IlQTcK+SUP3Kh9BiMbe42tDS0mKA==","repository":{"url":"git+https://github.com/FabioFernandesCarneiro/alma.git","type":"git","directory":"packages/schedule"},"_npmVersion":"11.18.0","description":"Alma's clock: what is due, and the tick an external scheduler calls to run it — no process kept alive.","directories":{},"_nodeVersion":"26.4.0","dependencies":{"croner":"^10.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.16.3","vitest":"^3.2.4","@types/pg":"^8.15.5","typescript":"^5.9.2","@types/node":"^24.1.0","@alma-harness/memory":"^0.7.0","@alma-harness/postgres":"^0.7.0","@alma-harness/postgres-execution":"^0.7.0"},"peerDependencies":{"@alma-harness/core":"^0.7.0","@alma-harness/loop":"^0.7.0","@alma-harness/batch":"^0.7.0","@alma-harness/execution":"^0.7.0","@alma-harness/conversation":"^0.7.0"},"_npmOperationalInternal":{"tmp":"tmp/schedule_0.7.0_1789137113019_0.6843216014163325","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@alma-harness/schedule","version":"0.8.0","license":"Apache-2.0","_id":"@alma-harness/schedule@0.8.0","maintainers":[{"name":"fabiofernandescarneiro","email":"fabiofernandescarneiro@gmail.com"}],"homepage":"https://github.com/FabioFernandesCarneiro/alma#readme","bugs":{"url":"https://github.com/FabioFernandesCarneiro/alma/issues"},"dist":{"shasum":"cabe73ddd4e33686ab8899a020f972b266bf6b59","tarball":"https://registry.npmjs.org/@alma-harness/schedule/-/schedule-0.8.0.tgz","fileCount":6,"integrity":"sha512-QQvce71mW4M2nduWxsSk7kgI7wBWkIb50notPbf3wxgzjp9dVoA4CO7EdHNmvT6//vctn3n23nVHxCGPylnAHQ==","signatures":[{"sig":"MEUCIQCYi5XZm5jI2os7Y8qrQg5t2o7pZaEIvVm0XKF/1TSQrgIgQ3eJ0gqnlXZ0YtvYC1G+EnsxkE8Ut7CUum0ELof2l+0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIBuWPop1xs4bTx1AMevuQhs8ZQXyHine7nbXsF0ClqMCAiEA5PIPzi/LNDQcnp9A7ls5X0DaAs/lHJs1qyUZBFlUoCo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":114069},"main":"./dist/index.js","type":"module","_from":"file:alma-harness-schedule-0.8.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"fabiofernandescarneiro","email":"fabiofernandescarneiro@gmail.com"},"_resolved":"/private/var/folders/zc/snhwcnp15dj2hk0k9_g1fh3h0000gn/T/05904a7be1d5f8079625972f02c8d3cb/alma-harness-schedule-0.8.0.tgz","_integrity":"sha512-QQvce71mW4M2nduWxsSk7kgI7wBWkIb50notPbf3wxgzjp9dVoA4CO7EdHNmvT6//vctn3n23nVHxCGPylnAHQ==","repository":{"url":"git+https://github.com/FabioFernandesCarneiro/alma.git","type":"git","directory":"packages/schedule"},"_npmVersion":"11.18.0","description":"Alma's clock: what is due, and the tick an external scheduler calls to run it — no process kept alive.","directories":{},"_nodeVersion":"26.4.0","dependencies":{"croner":"^10.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.16.3","vitest":"^3.2.4","@types/pg":"^8.15.5","typescript":"^5.9.2","@types/node":"^24.1.0","@alma-harness/memory":"^0.8.0","@alma-harness/postgres":"^0.8.0","@alma-harness/postgres-execution":"^0.8.0"},"peerDependencies":{"@alma-harness/core":"^0.8.0","@alma-harness/loop":"^0.8.0","@alma-harness/batch":"^0.8.0","@alma-harness/execution":"^0.8.0","@alma-harness/conversation":"^0.8.0"},"_npmOperationalInternal":{"tmp":"tmp/schedule_0.8.0_1789155381741_0.16456172590149953","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@alma-harness/schedule","version":"0.9.0","license":"Apache-2.0","_id":"@alma-harness/schedule@0.9.0","maintainers":[{"name":"fabiofernandescarneiro","email":"fabiofernandescarneiro@gmail.com"}],"homepage":"https://github.com/FabioFernandesCarneiro/alma#readme","bugs":{"url":"https://github.com/FabioFernandesCarneiro/alma/issues"},"dist":{"shasum":"88faa942b55c7fb7b85d92c8766700f1cf1b5783","tarball":"https://registry.npmjs.org/@alma-harness/schedule/-/schedule-0.9.0.tgz","fileCount":6,"integrity":"sha512-SL7Dm3kkAzqkmWIXy/kQEMLv6xfwR4XU3IJ1psZS49rq2PELOXxjQmP8rb5+cRQvAKqoJLMGyuuim5HplEhBEQ==","signatures":[{"sig":"MEUCIQCvz4ogkeEUvuPpTXReVIM4aZxxeNK0E2gq6BA2aPTCLQIgbyqpILXsory/pd6swEs6wypQImWqMt7n3WYwtUv7cag=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIGLy1C4vdODLY2PoAGhCyw1CWHOeqvRXyP8fgGLzQ34xAiBsNED4OB2jZZ5JnDfLTybwRaic9Vg6X0lKcjcdwYrUbg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":115943},"main":"./dist/index.js","type":"module","_from":"file:alma-harness-schedule-0.9.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"fabiofernandescarneiro","email":"fabiofernandescarneiro@gmail.com"},"_resolved":"/private/var/folders/zc/snhwcnp15dj2hk0k9_g1fh3h0000gn/T/b0ae8e144caf02d645fe50896b82f5a0/alma-harness-schedule-0.9.0.tgz","_integrity":"sha512-SL7Dm3kkAzqkmWIXy/kQEMLv6xfwR4XU3IJ1psZS49rq2PELOXxjQmP8rb5+cRQvAKqoJLMGyuuim5HplEhBEQ==","repository":{"url":"git+https://github.com/FabioFernandesCarneiro/alma.git","type":"git","directory":"packages/schedule"},"_npmVersion":"11.18.0","description":"Alma's clock: what is due, and the tick an external scheduler calls to run it — no process kept alive.","directories":{},"_nodeVersion":"26.4.0","dependencies":{"croner":"^10.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.16.3","vitest":"^3.2.4","@types/pg":"^8.15.5","typescript":"^5.9.2","@types/node":"^24.1.0","@alma-harness/memory":"^0.9.0","@alma-harness/postgres":"^0.9.0","@alma-harness/postgres-execution":"^0.9.0"},"peerDependencies":{"@alma-harness/core":"^0.9.0","@alma-harness/loop":"^0.9.0","@alma-harness/batch":"^0.9.0","@alma-harness/execution":"^0.9.0","@alma-harness/conversation":"^0.9.0"},"_npmOperationalInternal":{"tmp":"tmp/schedule_0.9.0_1789655925259_0.2565277790013627","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"@alma-harness/schedule","version":"0.10.0","license":"Apache-2.0","_id":"@alma-harness/schedule@0.10.0","maintainers":[{"name":"fabiofernandescarneiro","email":"fabiofernandescarneiro@gmail.com"}],"homepage":"https://github.com/FabioFernandesCarneiro/alma#readme","bugs":{"url":"https://github.com/FabioFernandesCarneiro/alma/issues"},"dist":{"shasum":"fc94a0848d503601e1dc83ec74f8410ba95ce7fa","tarball":"https://registry.npmjs.org/@alma-harness/schedule/-/schedule-0.10.0.tgz","fileCount":6,"integrity":"sha512-GYI9tRD+jNWap9OwFmyzA+fw5swlZIphn8wGqkNdZI9akiE4fj/oTePvlcW5RsWSJKcs0aIFfJ/K6q4BchWVSw==","signatures":[{"sig":"MEUCIQCcCqBs3vgdqBXwcAhQXUuoSh0+HdiN4Qzs8cMxOvkf6AIgA75QywBkPx5wHPjulz3Gnejhzjsp2FWtD1K9Jrd4B04=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDfhpdCCxBA+H2xV5ihJpuxaCCTiXwAt56mBvCeVtPx9gIhAIiOqjRnKQb16Erd0NfJLHLcORZQ7ThZod1Fj4Ar50Qi","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":115952},"main":"./dist/index.js","type":"module","_from":"file:alma-harness-schedule-0.10.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"fabiofernandescarneiro","email":"fabiofernandescarneiro@gmail.com"},"_resolved":"/private/var/folders/zc/snhwcnp15dj2hk0k9_g1fh3h0000gn/T/beadca4d9c7d7e2f39473c2c2fc93f9d/alma-harness-schedule-0.10.0.tgz","_integrity":"sha512-GYI9tRD+jNWap9OwFmyzA+fw5swlZIphn8wGqkNdZI9akiE4fj/oTePvlcW5RsWSJKcs0aIFfJ/K6q4BchWVSw==","repository":{"url":"git+https://github.com/FabioFernandesCarneiro/alma.git","type":"git","directory":"packages/schedule"},"_npmVersion":"11.18.0","description":"Alma's clock: what is due, and the tick an external scheduler calls to run it — no process kept alive.","directories":{},"_nodeVersion":"26.4.0","dependencies":{"croner":"^10.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.16.3","vitest":"^3.2.4","@types/pg":"^8.15.5","typescript":"^5.9.2","@types/node":"^24.1.0","@alma-harness/memory":"^0.10.0","@alma-harness/postgres":"^0.10.0","@alma-harness/postgres-execution":"^0.10.0"},"peerDependencies":{"@alma-harness/core":"^0.10.0","@alma-harness/loop":"^0.10.0","@alma-harness/batch":"^0.10.0","@alma-harness/execution":"^0.10.0","@alma-harness/conversation":"^0.10.0"},"_npmOperationalInternal":{"tmp":"tmp/schedule_0.10.0_1789675277320_0.8044309898250201","host":"s3://npm-registry-packages-npm-production"}},"0.10.1":{"name":"@alma-harness/schedule","version":"0.10.1","license":"Apache-2.0","_id":"@alma-harness/schedule@0.10.1","maintainers":[{"name":"fabiofernandescarneiro","email":"fabiofernandescarneiro@gmail.com"}],"homepage":"https://github.com/FabioFernandesCarneiro/alma#readme","bugs":{"url":"https://github.com/FabioFernandesCarneiro/alma/issues"},"dist":{"shasum":"3b90b56270cdaa85051b61de76443266997ba41d","tarball":"https://registry.npmjs.org/@alma-harness/schedule/-/schedule-0.10.1.tgz","fileCount":6,"integrity":"sha512-rPnuTtnZ3hpuKm59Wtx+GyBa/bVYRu/XmDsK4PmXsAHrEG0iGvEvL/V+lja7y45R5jIq0mWYZB+DxzC7yzmz5Q==","signatures":[{"sig":"MEQCIHCW0Eq1pe1VHfYkIEANQJ8hLeySVxHheDBC9NueCu41AiAz11Nc1LQrOCrf7TZH/hjx9/nrlui8TKE5JYHrGsj+nQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIBQkB9DuWsd+lyN25B1jhpWvTm1mVrtacVNfi8iOkgyLAiAFiHd10k93aEXOawYmmXizU4SEq5ydyFCaRifxFw6iqA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":115952},"main":"./dist/index.js","type":"module","_from":"file:alma-harness-schedule-0.10.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"fabiofernandescarneiro","email":"fabiofernandescarneiro@gmail.com"},"_resolved":"/private/var/folders/zc/snhwcnp15dj2hk0k9_g1fh3h0000gn/T/48cb5f0c6cf9c67c4e969b996b393f92/alma-harness-schedule-0.10.1.tgz","_integrity":"sha512-rPnuTtnZ3hpuKm59Wtx+GyBa/bVYRu/XmDsK4PmXsAHrEG0iGvEvL/V+lja7y45R5jIq0mWYZB+DxzC7yzmz5Q==","repository":{"url":"git+https://github.com/FabioFernandesCarneiro/alma.git","type":"git","directory":"packages/schedule"},"_npmVersion":"11.18.0","description":"Alma's clock: what is due, and the tick an external scheduler calls to run it — no process kept alive.","directories":{},"_nodeVersion":"26.4.0","dependencies":{"croner":"^10.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.16.3","vitest":"^3.2.4","@types/pg":"^8.15.5","typescript":"^5.9.2","@types/node":"^24.1.0","@alma-harness/memory":"^0.10.1","@alma-harness/postgres":"^0.10.1","@alma-harness/postgres-execution":"^0.10.1"},"peerDependencies":{"@alma-harness/core":"^0.10.1","@alma-harness/loop":"^0.10.1","@alma-harness/batch":"^0.10.1","@alma-harness/execution":"^0.10.1","@alma-harness/conversation":"^0.10.1"},"_npmOperationalInternal":{"tmp":"tmp/schedule_0.10.1_1789680586597_0.9347182910875027","host":"s3://npm-registry-packages-npm-production"}},"0.10.2":{"_id":"@alma-harness/schedule@0.10.2","bugs":{"url":"https://github.com/FabioFernandesCarneiro/alma/issues"},"dist":{"shasum":"f27ccd6025742ba3a08daa903889394fb48c9061","tarball":"https://registry.npmjs.org/@alma-harness/schedule/-/schedule-0.10.2.tgz","fileCount":6,"integrity":"sha512-BQ2GWCj1j6MbraWlMmgQ9+KoGjxT0jebCy4GxaRkIglx0MtXB1gFMNHpK/HhP5AG1VDXpEnLo+gOkwDPA9MirQ==","signatures":[{"sig":"MEYCIQDUXpbuT2s9E1kr9LJVkmyRId79XFna5J12Iki9GdYD+QIhAOThdU+vicVsLHakbeM5meWElFYxa5ceug+OGLh19NJJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDHZ7B5huzaQxSK5udNcdiXQy4KHwWUdRdnVZak1oChGQIgWw8/58XoSxKLByfgekO5CBBWfoNgM2UMPFRfEiC0Gzw="}],"unpackedSize":115952},"main":"./dist/index.js","name":"@alma-harness/schedule","type":"module","_from":"file:alma-harness-schedule-0.10.2.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"license":"Apache-2.0","scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit"},"version":"0.10.2","_npmUser":{"name":"fabiofernandescarneiro","email":"fabiofernandescarneiro@gmail.com"},"homepage":"https://github.com/FabioFernandesCarneiro/alma#readme","_resolved":"/private/var/folders/zc/snhwcnp15dj2hk0k9_g1fh3h0000gn/T/102b9db1a94a5ff480318b4f796c20f6/alma-harness-schedule-0.10.2.tgz","_integrity":"sha512-BQ2GWCj1j6MbraWlMmgQ9+KoGjxT0jebCy4GxaRkIglx0MtXB1gFMNHpK/HhP5AG1VDXpEnLo+gOkwDPA9MirQ==","repository":{"url":"git+https://github.com/FabioFernandesCarneiro/alma.git","type":"git","directory":"packages/schedule"},"_npmVersion":"11.18.0","description":"Alma's clock: what is due, and the tick an external scheduler calls to run it — no process kept alive.","directories":{},"maintainers":[{"name":"fabiofernandescarneiro","email":"fabiofernandescarneiro@gmail.com"}],"_nodeVersion":"26.4.0","dependencies":{"croner":"^10.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.16.3","vitest":"^3.2.4","@types/pg":"^8.15.5","typescript":"^5.9.2","@types/node":"^24.1.0","@alma-harness/memory":"^0.10.2","@alma-harness/postgres":"^0.10.2","@alma-harness/postgres-execution":"^0.10.2"},"peerDependencies":{"@alma-harness/core":"^0.10.2","@alma-harness/loop":"^0.10.2","@alma-harness/batch":"^0.10.2","@alma-harness/execution":"^0.10.2","@alma-harness/conversation":"^0.10.2"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/schedule_0.10.2_1789687653178_0.6262844751686387"}}},"time":{"created":"2026-09-03T17:14:05.789Z","modified":"2026-09-17T23:27:33.494Z","0.3.0":"2026-09-03T17:14:06.085Z","0.4.0":"2026-09-03T19:01:51.806Z","0.5.0":"2026-09-03T21:52:58.123Z","0.6.0":"2026-09-08T21:18:49.558Z","0.6.1":"2026-09-08T22:17:13.409Z","0.7.0":"2026-09-11T14:31:53.115Z","0.8.0":"2026-09-11T19:36:21.826Z","0.9.0":"2026-09-17T14:38:45.344Z","0.10.0":"2026-09-17T20:01:17.417Z","0.10.1":"2026-09-17T21:29:46.691Z","0.10.2":"2026-09-17T23:27:33.259Z"},"bugs":{"url":"https://github.com/FabioFernandesCarneiro/alma/issues"},"license":"Apache-2.0","homepage":"https://github.com/FabioFernandesCarneiro/alma#readme","repository":{"url":"git+https://github.com/FabioFernandesCarneiro/alma.git","type":"git","directory":"packages/schedule"},"description":"Alma's clock: what is due, and the tick an external scheduler calls to run it — no process kept alive.","maintainers":[{"name":"fabiofernandescarneiro","email":"fabiofernandescarneiro@gmail.com"}],"readme":"# @alma-harness/schedule\n\nThe clock of [Alma](https://github.com/FabioFernandesCarneiro/alma), as a\ntick: what is due, and the call an external scheduler makes to run it. No\nprocess is kept alive (spec: clock-tick).\n\n> **Status: pre-1.0.** The API is still moving; see the\n> [roadmap](../../docs/architecture.md#12-adoption-roadmap) for where it stands.\n\n## What it owns\n\n- `createSchedule({ routines, runs, runner })` — `tick({ now? })` reads\n  the routine store, decides what is due, runs it through the routine\n  runner with the FIRE's instant as the run id, and reports `{ at, due,\n  runs, errors }`. `plan(now?)` answers without running. `runner` may be a\n  resolver, `(routine) => RoutineRunner`, for a deployment with an agent\n  per tenant — `list` crosses every scope. A routine that cannot be\n  planned (a zone typo, a bad cron) is one entry in `errors`; the others\n  run.\n- `register` / `cancel` — register THROUGH the schedule: it asks the runner\n  to validate and reads the schedule once, so what the tick could not run\n  is refused at registration, not at 8h with nobody watching.\n- What is due: the latest fire at or before now — a cron's previous\n  occurrence in its `tz` (UTC when absent), `every` anchored on the\n  routine's registration, `at` once — when it is later than the routine's\n  last run. A job routine whose submission is still open is collected on\n  every tick. Missed fires are not replayed: after downtime a daily routine\n  runs once.\n- `latestFire`, `nextFire`, `validateSchedule` — pure schedule calculations.\n  `nextFire(schedule, registeredAt, after)` returns the first ISO occurrence\n  strictly after the cursor and at or after registration, or `undefined` when\n  exhausted. Intervals stay anchored on registration. Hosts may enqueue an\n  external wake-up at that time, then revalidate current configuration and use\n  native planning/claims on wake. This helper grants no execution authority;\n  hosts must also arrange wake-ups for missed-fire recovery and pending native\n  batch collection.\n- `createGovernedConversationRoutineRunner` runs a triggered conversation;\n  `createGovernedBatchRoutineRunner` submits and collects background batches.\n  Both implement `RoutineRunner`, claim before work, enforce the routine's\n  narrowed cap and daily ceiling, and make at most one delivery attempt per\n  retained fire. The legacy `createRoutineRunner` and `RoutineRunnerConfig`\n  are removed (spec: remove-legacy-routine-runner).\n\n## Wiring\n\nOne endpoint the scheduler calls on a cadence. Cloud Scheduler every\nminute against a Cloud Run service at zero minimum instances is the shape\nit was written for; anything that can call a URL on a cron is the clock.\n\n```ts\nimport { createSchedule } from \"@alma-harness/schedule\";\n\nconst schedule = createSchedule({ routines, runs, runner: (routine) => runnerFor(routine.scope) });\nawait schedule.register(briefing);\n\n// Node's http, Hono, Express — the product's choice. A shared secret, or\n// the platform's OIDC, decides who may tick.\napp.post(\"/tick\", async (req, res) => {\n  if (req.headers[\"x-tick-secret\"] !== process.env.TICK_SECRET) return res.status(401).end();\n  res.json(await schedule.tick());\n});\n```\n\n## Claims and recovery\n\nThe governed runners require atomic `RoutineRunStore.claim`. A retained\n`(org, uid, routineId, runId)` has one execution owner across instances,\nincluding batch submission and collection. Pending tick plans carry\n`collectRunId`, which custom runner wrappers must forward: it collects only\nthat existing run, never a new submission if the plan becomes stale.\nLosing callers return its current\nrecord; `running` can mean active work or an interrupted execution. A turn\nmay take tens of seconds, so the host request timeout must allow it.\n\nA claim is persisted before work starts. Before calling the sink, the runner\nalso records the known session, turn, cost and delivery hash. If a process\ndies or persistence fails, `running` is never expired or automatically\nretried, even when an execution deadline passes. This deliberately\nfavors avoiding duplicates over automatic recovery. Sink errors become\n`failed` and are also not automatically retried: an error may follow a\nsuccessful external action.\n\nReconcile unresolved runs against the session, provider batch and destination\nbefore recording a final outcome through `record`. Age alone cannot prove\nthat the original worker has stopped or that a delivery did not happen.\nRecording a final outcome does not resend that run. Any replacement action\nrequires an explicit operator decision after reconciliation; do not delete\nclaims to enable retries. External exactly-once delivery would require an\nidempotent destination and is not guaranteed here.\n\nText suppression compares only with the last completed delivery. It does not\nserialize different fire ids or enforce a global once-ever rule for equal\ntext. Daily ceilings likewise do not reserve capacity atomically across\ndifferent fire ids. Retention preserves `running` and `submitted`; removing\ncompleted records ends their replay protection. Use a durable store in\nproduction; the in-memory reference survives only its process.\n\n**Upgrade:** drain old runners, run `migrateRoutineRunStore` to expand the\noutcome constraint (existing records are preserved), and deploy matching\ncore, schedule and Postgres packages. Custom stores must implement the atomic\nclaim contract and callers must accept `running`. Run the shared\n`describeRoutineRunStoreContract` against each custom backend. Do not mix old\nrunners that write only after delivery with the new claim protocol.\n\n## What it must never do\n\n- Keep a timer. The clock is outside; this package only answers it.\n- Replay missed fires, or run routines in parallel.\n- Hold a vendor scheduler's SDK. The tick IS the adapter.\n\n## Financial warning policy\n\nA routine can use `budget: { perTurnUsd: { usd: 0.5, onExceeded: \"warn\" } }`.\nTurn routines require a matching warn policy and an amount no greater than\nthe host threshold (or no per-turn cap on the host); validation rejects widening\nbefore claiming a run. A trusted conversation factory composes the exact narrowed\ncaps. Numeric routine caps still block.\n\nKnown crossings are persisted in `RoutineRun.capsCrossed` before delivery and\nforwarded to the sink. Both per-run and persistent batch warnings come from\noriginal governed receipts. A replay returns the metadata\nwithout another call, charge or delivery. Deduplicate host alerts by scope, run\nand cap. Frequency and duplicate guards still apply.\n\nRun `migrateRoutineRunStore` before deploying these matching core, loop, schedule\nand Postgres packages; it adds `caps_crossed` idempotently to existing rows.\n\n## Documentation\n\n[Docs index](../../docs/README.md) · [Architecture §8](../../docs/architecture.md#8-triggered-turns-and-routines)\n· [Routine runner spec](../../docs/specs/047-routine-runner.md)\n\nApache-2.0\n\n## Governed batch routines\n\n`createGovernedBatchRoutineRunner` implements `RoutineRunner` for job routines,\nso pass it directly to `createSchedule`. Configure a `GovernedBatchConfig`, host\n`caps`, `runs`, `sinks`, a synchronous metadata-only `plan`, `runTimeoutMs`,\n`submissionDeadlineMs` and `onBackgroundError`. The plan returns model/prices,\npolicy/price/output versions, controls, consumers, resultRetentionMs and lazy\n`loadRequest`. The request must match the plan at batch tier without tools; its\nmessages are replaced with the original routine goal. Context loads only after\nall governed reservations and audit. The routine per-run cap narrows host policy.\n\nKeep `batch.configRevision` immutable and change it whenever plan, provider account,\nsystem/output policy or sink resolution changes. Pending collection requires the\noriginal revision and full routine definition. `governedRoutineBatchKey(scope,\nroutineId, runId)` exposes correlation for accounting-only repair through the batch\nrunner, including when delivery remains unresolved.\n\nA scoped collection may repeat GET and repair finance. It never writes waiting\nmetadata over a completed run. Only the permanent submitted-to-running claim winner\nmay attempt delivery; interrupted submission or delivery is not retried. Retain\nunresolved records and reconcile externally. Read output again before egress to\nrespect erasure; concurrent erasure during external delivery remains a host boundary.\nWarnings come from governed financial receipts and retain the answer. Closed failure\nreasons never contain raw provider or sink errors. Dedupe compares only the last\nsuccessful text hash; duplicate replies retain their cost. Distinct fire ceilings\nremain non-atomic. Governed conversational routines are not part of this runner.\n\n## Governed conversational routines\n\n`createGovernedConversationRoutineRunner` handles turn routines through a trusted\nsynchronous `conversation(caps)` factory returning `createConversationRunner` with\nthose exact narrowed caps. Supply matching `policyVersion`, `configRevision`,\n`resultContractVersion`, `resultRetentionMs`, `maxCalls`, `rootDeadlineMs`,\n`runTimeoutMs`, host `caps`, `runs`, `sinks` and `onBackgroundError`. Configuration\nrevision covers the factory's provider account, prompts, prices, tools/profiles,\nresult policy and sink mapping. The factory composes configuration only; it cannot\nread context or perform effects. Ordinary mutable data is copied by each runner;\nstore, factory and sink implementations are trusted host capabilities.\n\nThe permanent routine claim precedes factory and conversation invocation. The\nconversation's admission/root/output reservations precede the lazy routine goal and\nall context/effects. An absent profile grants no unattended tools. Main and child\ncosts come only from governed receipts; warnings accompany the single sink attempt.\n`governedRoutineRootKey(scope, routineId, runId)` exposes accounting correlation.\n\nUncertain conversations and late completions retain routine ownership for explicit\nreconciliation. Replaying a root after routine metadata loss does not grant delivery.\nFinal content is rechecked after writing delivery metadata and immediately before\nsink access. Interrupted, failed or unacknowledged delivery never retries itself.\nRegister all conversation result namespaces and sessions in erasure/retention; an\nexternal destination and concurrent egress still require host reconciliation.\n\nThe executable compositions live in the schedule tests on memory/PostgreSQL\nand in Prumo P1. Session/root IDs use governed hashes for correlation. Invalid\nroutine data can throw synchronously before admission; operational errors expose\nfixed metadata and do not release uncertain work.\n\n## Canonical routine invocation\n\nThe conversational adapter now invokes `ConversationRunner.runTurn` with the\nexisting explicit descriptor (spec: canonical-routine-adoption). The legacy `run`\nalias is not called. A canonical `not_admitted/routing_unavailable` response\nfinishes the fire as `refused`, with zero cost and no conversation root. Its\nmetadata replay does not retry that fire; repaired configuration can serve a new\nfire. Uncertain invocation, lost refusal acknowledgement and interrupted delivery\nstill cannot grant new execution or sink authority.\n\nPrumo P1 now composes both governed routine adapters over the canonical runtime's\nfinancial stores and spec 128's separate batch-result namespace. Its clock/inbox\nremain local fixtures; no process, real recipient or production scheduler is added.\n","readmeFilename":"README.md"}