{"_id":"tla-precheck","_rev":"8-517a1d7eeacd91266eb265a068a6e898","name":"tla-precheck","dist-tags":{"latest":"0.1.7"},"versions":{"0.1.0":{"name":"tla-precheck","version":"0.1.0","keywords":["tla+","state-machine","formal-verification","model-checking","typescript","code-generation","agentic","postgres"],"license":"MIT","_id":"tla-precheck@0.1.0","maintainers":[{"name":"bootoshi","email":"kingbootoshi@gmail.com"}],"homepage":"https://github.com/kingbootoshi/tla-precheck#readme","bugs":{"url":"https://github.com/kingbootoshi/tla-precheck/issues"},"bin":{"tla-precheck":"bin/tla-precheck.js"},"dist":{"shasum":"e079c7f3c4b3856fcfabbe5868c3571bd1fa15d6","tarball":"https://registry.npmjs.org/tla-precheck/-/tla-precheck-0.1.0.tgz","fileCount":76,"integrity":"sha512-HJ/6lGy3WJM4d70BMKACXiHJLamDK6eHojX/ygd0dQpBztLehxGJt+7GzW9Zlq6S/lnYt80FaKUCfIwqsLmA1Q==","signatures":[{"sig":"MEQCIF/j3Acee3HGeUOtAm7q6h/uROcZohsReEcaA45qqfyMAiAhDBhu4O1dxnhLBCJy5D6Bljqql9YS1jKQMBgrQI+Ilw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":283625},"type":"module","exports":{".":{"types":"./dist/core/dsl.d.ts","import":"./dist/core/dsl.js"},"./interpreter":{"types":"./dist/core/interpreter.d.ts","import":"./dist/core/interpreter.js"}},"gitHead":"d729a130703816334fa81a3f3373a01ce912c925","scripts":{"lint":"bun run lint:all","test":"bun test src","build":"bun ./node_modules/typescript/lib/tsc.js -p tsconfig.build.json","ci:pr":"bash ./scripts/ci.sh pr","verify":"bun dist/cli/machine.js verify-all dist","test:db":"bun test src/db/postgres.integration.test.ts","ci:local":"bash ./scripts/ci.sh pr","estimate":"bun dist/cli/machine.js estimate dist/examples/agentRuns.machine.js --tier pr","generate":"bun dist/cli/machine.js generate dist/examples/agentRuns.machine.js --tier pr","lint:all":"bun ./node_modules/typescript/lib/tsc.js --noEmit && bun src/cli/machine.ts lint-all src --tsconfig tsconfig.json","build:dev":"bun ./node_modules/typescript/lib/tsc.js -p tsconfig.json","test:fuzz":"RUN_FUZZ_TESTS=1 bun test src/fuzz/differential.test.ts","typecheck":"bun ./node_modules/typescript/lib/tsc.js --noEmit","verify:db":"bun dist/cli/machine.js verify-db-all dist","ci:nightly":"bash ./scripts/ci.sh nightly","verify:all":"bun dist/cli/machine.js verify-all dist","agent-build":"bun dist/cli/machine.js agent-build dist/examples/agentRuns.machine.js","generate:db":"bun dist/cli/machine.js generate-db dist/examples/agentRuns.machine.js","verify:db:all":"bun dist/cli/machine.js verify-db-all dist","test:fuzz:smoke":"RUN_FUZZ_TESTS=1 FUZZ_CASES=12 bun test src/fuzz/differential.test.ts","verify:all:full":"bun dist/cli/machine.js verify-all dist --all-tiers","test:fuzz:nightly":"RUN_FUZZ_TESTS=1 FUZZ_CASES=64 bun test src/fuzz/differential.test.ts"},"_npmUser":{"name":"bootoshi","email":"kingbootoshi@gmail.com"},"repository":{"url":"git+https://github.com/kingbootoshi/tla-precheck.git","type":"git"},"_npmVersion":"11.9.0","description":"Write state machines once in TypeScript. The compiler mathematically proves correctness via TLA+, then generates runtime code and Postgres constraints from the same source.","directories":{},"_nodeVersion":"24.14.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^22.13.10"},"_npmOperationalInternal":{"tmp":"tmp/tla-precheck_0.1.0_1773620269373_0.5824809374777251","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"tla-precheck","version":"0.1.1","keywords":["tla+","state-machine","formal-verification","model-checking","typescript","code-generation","agentic","postgres"],"license":"MIT","_id":"tla-precheck@0.1.1","maintainers":[{"name":"bootoshi","email":"kingbootoshi@gmail.com"}],"homepage":"https://github.com/kingbootoshi/tla-precheck#readme","bugs":{"url":"https://github.com/kingbootoshi/tla-precheck/issues"},"bin":{"tla-precheck":"bin/tla-precheck.js"},"dist":{"shasum":"5e5a8185cd899b545c8993f53f014ec99a1d64ac","tarball":"https://registry.npmjs.org/tla-precheck/-/tla-precheck-0.1.1.tgz","fileCount":80,"integrity":"sha512-JQ5Uno3DwOZMkNWbrfj2wh9tgyd76pjMyXGzsrQBDU/SqP2GweHJADwP5emxtOKEd1NJthbypnZnD+x+U5tQAQ==","signatures":[{"sig":"MEQCIDoccl24kdoeBpsu+6tCEARRopr7F0E82xuAfGffOG61AiARKeya4eH9vP1EDlfNah5xeL7x/2srXYFjKIchqxBTXQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":288354},"type":"module","exports":{".":{"types":"./dist/core/dsl.d.ts","import":"./dist/core/dsl.js"},"./interpreter":{"types":"./dist/core/interpreter.d.ts","import":"./dist/core/interpreter.js"}},"gitHead":"18b8d92fb63eb117e16b9bfd80a0494930fb2cbc","scripts":{"lint":"bun run lint:all","test":"bun test src","build":"bun ./node_modules/typescript/lib/tsc.js -p tsconfig.build.json","ci:pr":"bash ./scripts/ci.sh pr","verify":"bun dist/cli/machine.js verify-all dist","test:db":"bun test src/db/postgres.integration.test.ts","ci:local":"bash ./scripts/ci.sh pr","estimate":"bun dist/cli/machine.js estimate dist/examples/agentRuns.machine.js --tier pr","generate":"bun dist/cli/machine.js generate dist/examples/agentRuns.machine.js --tier pr","lint:all":"bun ./node_modules/typescript/lib/tsc.js --noEmit && bun src/cli/machine.ts lint-all src --tsconfig tsconfig.json","build:dev":"bun ./node_modules/typescript/lib/tsc.js -p tsconfig.json","test:fuzz":"RUN_FUZZ_TESTS=1 bun test src/fuzz/differential.test.ts","typecheck":"bun ./node_modules/typescript/lib/tsc.js --noEmit","verify:db":"bun dist/cli/machine.js verify-db-all dist","ci:nightly":"bash ./scripts/ci.sh nightly","verify:all":"bun dist/cli/machine.js verify-all dist","agent-build":"bun dist/cli/machine.js agent-build dist/examples/agentRuns.machine.js","generate:db":"bun dist/cli/machine.js generate-db dist/examples/agentRuns.machine.js","verify:db:all":"bun dist/cli/machine.js verify-db-all dist","test:fuzz:smoke":"RUN_FUZZ_TESTS=1 FUZZ_CASES=12 bun test src/fuzz/differential.test.ts","verify:all:full":"bun dist/cli/machine.js verify-all dist --all-tiers","test:fuzz:nightly":"RUN_FUZZ_TESTS=1 FUZZ_CASES=64 bun test src/fuzz/differential.test.ts"},"_npmUser":{"name":"bootoshi","email":"kingbootoshi@gmail.com"},"repository":{"url":"git+https://github.com/kingbootoshi/tla-precheck.git","type":"git"},"_npmVersion":"11.9.0","description":"Write state machines once in TypeScript. The compiler mathematically proves correctness via TLA+, then generates runtime code and Postgres constraints from the same source.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"typescript":"^5.9.3"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^22.13.10"},"_npmOperationalInternal":{"tmp":"tmp/tla-precheck_0.1.1_1773622118911_0.8948862503351029","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"tla-precheck","version":"0.1.2","keywords":["tla+","state-machine","formal-verification","model-checking","typescript","code-generation","agentic","postgres"],"license":"MIT","_id":"tla-precheck@0.1.2","maintainers":[{"name":"bootoshi","email":"kingbootoshi@gmail.com"}],"homepage":"https://github.com/kingbootoshi/tla-precheck#readme","bugs":{"url":"https://github.com/kingbootoshi/tla-precheck/issues"},"bin":{"tla-precheck":"bin/tla-precheck.js"},"dist":{"shasum":"6a072799b58cd0ee53dd50474601a1019dbe9d2f","tarball":"https://registry.npmjs.org/tla-precheck/-/tla-precheck-0.1.2.tgz","fileCount":80,"integrity":"sha512-GRShqbaFm2V5HOT0R+HPGYEtW3IWR9V7FEdVcYXzwJjfA9fU+6Io8wsIHEH/f/c/8H+V2csUBW9VjmSpsdsXiA==","signatures":[{"sig":"MEUCIEBZWgecXKfzzhcIuErOx4dtCXKj76FOO610YAKBH2NPAiEAod/ILOADG8JQ2J3o+RoNVXoniUqy9fxdKjRh0nizNg0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":288354},"type":"module","exports":{".":{"types":"./dist/core/dsl.d.ts","import":"./dist/core/dsl.js"},"./interpreter":{"types":"./dist/core/interpreter.d.ts","import":"./dist/core/interpreter.js"}},"gitHead":"2630bf9d1790a2bc10eb6185bf1ef551c415ae94","scripts":{"lint":"bun run lint:all","test":"bun test src","build":"bun ./node_modules/typescript/lib/tsc.js -p tsconfig.build.json","ci:pr":"bash ./scripts/ci.sh pr","verify":"bun dist/cli/machine.js verify-all dist","test:db":"bun test src/db/postgres.integration.test.ts","ci:local":"bash ./scripts/ci.sh pr","estimate":"bun dist/cli/machine.js estimate dist/examples/agentRuns.machine.js --tier pr","generate":"bun dist/cli/machine.js generate dist/examples/agentRuns.machine.js --tier pr","lint:all":"bun ./node_modules/typescript/lib/tsc.js --noEmit && bun src/cli/machine.ts lint-all src --tsconfig tsconfig.json","build:dev":"bun ./node_modules/typescript/lib/tsc.js -p tsconfig.json","test:fuzz":"RUN_FUZZ_TESTS=1 bun test src/fuzz/differential.test.ts","typecheck":"bun ./node_modules/typescript/lib/tsc.js --noEmit","verify:db":"bun dist/cli/machine.js verify-db-all dist","ci:nightly":"bash ./scripts/ci.sh nightly","verify:all":"bun dist/cli/machine.js verify-all dist","agent-build":"bun dist/cli/machine.js agent-build dist/examples/agentRuns.machine.js","generate:db":"bun dist/cli/machine.js generate-db dist/examples/agentRuns.machine.js","verify:db:all":"bun dist/cli/machine.js verify-db-all dist","test:fuzz:smoke":"RUN_FUZZ_TESTS=1 FUZZ_CASES=12 bun test src/fuzz/differential.test.ts","verify:all:full":"bun dist/cli/machine.js verify-all dist --all-tiers","test:fuzz:nightly":"RUN_FUZZ_TESTS=1 FUZZ_CASES=64 bun test src/fuzz/differential.test.ts"},"_npmUser":{"name":"bootoshi","email":"kingbootoshi@gmail.com"},"repository":{"url":"git+https://github.com/kingbootoshi/tla-precheck.git","type":"git"},"_npmVersion":"11.9.0","description":"Write state machines once in TypeScript. The compiler mathematically proves correctness via TLA+, then generates runtime code and Postgres constraints from the same source.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"typescript":"^5.9.3"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^22.13.10"},"_npmOperationalInternal":{"tmp":"tmp/tla-precheck_0.1.2_1773623668005_0.08264144220115965","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"tla-precheck","version":"0.1.3","keywords":["tla+","state-machine","formal-verification","model-checking","typescript","code-generation","agentic","postgres"],"license":"MIT","_id":"tla-precheck@0.1.3","maintainers":[{"name":"bootoshi","email":"kingbootoshi@gmail.com"}],"homepage":"https://github.com/kingbootoshi/tla-precheck#readme","bugs":{"url":"https://github.com/kingbootoshi/tla-precheck/issues"},"bin":{"tla-precheck":"bin/tla-precheck.js"},"dist":{"shasum":"3d9e1a28c9d4eb3e0c1017a577ed62b48228501c","tarball":"https://registry.npmjs.org/tla-precheck/-/tla-precheck-0.1.3.tgz","fileCount":82,"integrity":"sha512-KqDELxsr3vNX+9LbBMO/okynmiWpyP9dAjA9RPnlr/kMO1RlvRRV4o24xYYWm5YTME0nYFijX/N6l7Q9tnVWYA==","signatures":[{"sig":"MEYCIQD2ldT9Ztx0I2Zd4so4kDas8KXh8ZCB9p7Aq6xCY4lY+QIhAN6C2wr8RuUaHvgKP7Ag9TmdjLHzGoMoxzwpWTldoBYt","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":291803},"type":"module","exports":{".":{"types":"./dist/core/dsl.d.ts","import":"./dist/core/dsl.js"},"./interpreter":{"types":"./dist/core/interpreter.d.ts","import":"./dist/core/interpreter.js"}},"gitHead":"ce103b34e02cc0baec13006e4143f102d67adb8c","scripts":{"lint":"bun run lint:all","test":"bun test src","build":"bun ./node_modules/typescript/lib/tsc.js -p tsconfig.build.json","ci:pr":"bash ./scripts/ci.sh pr","verify":"bun dist/cli/machine.js verify-all dist","test:db":"bun test src/db/postgres.integration.test.ts","ci:local":"bash ./scripts/ci.sh pr","estimate":"bun dist/cli/machine.js estimate dist/examples/agentRuns.machine.js --tier pr","generate":"bun dist/cli/machine.js generate dist/examples/agentRuns.machine.js --tier pr","lint:all":"bun ./node_modules/typescript/lib/tsc.js --noEmit && bun src/cli/machine.ts lint-all src --tsconfig tsconfig.json","build:dev":"bun ./node_modules/typescript/lib/tsc.js -p tsconfig.json","test:fuzz":"RUN_FUZZ_TESTS=1 bun test src/fuzz/differential.test.ts","typecheck":"bun ./node_modules/typescript/lib/tsc.js --noEmit","verify:db":"bun dist/cli/machine.js verify-db-all dist","ci:nightly":"bash ./scripts/ci.sh nightly","verify:all":"bun dist/cli/machine.js verify-all dist","agent-build":"bun dist/cli/machine.js agent-build dist/examples/agentRuns.machine.js","generate:db":"bun dist/cli/machine.js generate-db dist/examples/agentRuns.machine.js","verify:db:all":"bun dist/cli/machine.js verify-db-all dist","test:fuzz:smoke":"RUN_FUZZ_TESTS=1 FUZZ_CASES=12 bun test src/fuzz/differential.test.ts","verify:all:full":"bun dist/cli/machine.js verify-all dist --all-tiers","test:fuzz:nightly":"RUN_FUZZ_TESTS=1 FUZZ_CASES=64 bun test src/fuzz/differential.test.ts"},"_npmUser":{"name":"bootoshi","email":"kingbootoshi@gmail.com"},"repository":{"url":"git+https://github.com/kingbootoshi/tla-precheck.git","type":"git"},"_npmVersion":"11.9.0","description":"Write state machines once in TypeScript. The compiler mathematically proves correctness via TLA+, then generates runtime code and Postgres constraints from the same source.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"typescript":"^5.9.3"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^22.13.10"},"_npmOperationalInternal":{"tmp":"tmp/tla-precheck_0.1.3_1773625739895_0.888623598065347","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"tla-precheck","version":"0.1.4","keywords":["tla+","state-machine","formal-verification","model-checking","typescript","code-generation","agentic","postgres"],"license":"MIT","_id":"tla-precheck@0.1.4","maintainers":[{"name":"bootoshi","email":"kingbootoshi@gmail.com"}],"homepage":"https://github.com/kingbootoshi/tla-precheck#readme","bugs":{"url":"https://github.com/kingbootoshi/tla-precheck/issues"},"bin":{"tla-precheck":"bin/tla-precheck.js"},"dist":{"shasum":"233613e3b967e0e8a5c64b63ff7bc7dd86c6a2c6","tarball":"https://registry.npmjs.org/tla-precheck/-/tla-precheck-0.1.4.tgz","fileCount":82,"integrity":"sha512-ndK/y/WneHYzkrildw21FLHTHOQNLNImarakKhfc/+hsXG4Wlkxq0gyYsH3FDQh3kuQeMddz825Jy6TPg1a5oQ==","signatures":[{"sig":"MEYCIQCenUHJzWLVFfQiTwm6vllVWzAFe/1iDim7OMrWy75gxwIhALWJ+P/1Ad4gPMyJ4qeLwiLEBspqyuYAblVPW26d7Xdm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":293635},"type":"module","exports":{".":{"types":"./dist/core/dsl.d.ts","import":"./dist/core/dsl.js"},"./interpreter":{"types":"./dist/core/interpreter.d.ts","import":"./dist/core/interpreter.js"},"./db/adapterRuntime":{"types":"./dist/db/adapterRuntime.d.ts","import":"./dist/db/adapterRuntime.js"}},"gitHead":"5a9d4ed3e169013b6193286e5e487807247c6ad5","scripts":{"lint":"bun run lint:all","test":"bun test src","build":"bun ./node_modules/typescript/lib/tsc.js -p tsconfig.build.json","ci:pr":"bash ./scripts/ci.sh pr","verify":"bun dist/cli/machine.js verify-all dist","test:db":"bun test src/db/postgres.integration.test.ts","ci:local":"bash ./scripts/ci.sh pr","estimate":"bun dist/cli/machine.js estimate dist/examples/agentRuns.machine.js --tier pr","generate":"bun dist/cli/machine.js generate dist/examples/agentRuns.machine.js --tier pr","lint:all":"bun ./node_modules/typescript/lib/tsc.js --noEmit && bun src/cli/machine.ts lint-all src --tsconfig tsconfig.json","build:dev":"bun ./node_modules/typescript/lib/tsc.js -p tsconfig.json","test:fuzz":"RUN_FUZZ_TESTS=1 bun test src/fuzz/differential.test.ts","typecheck":"bun ./node_modules/typescript/lib/tsc.js --noEmit","verify:db":"bun dist/cli/machine.js verify-db-all dist","ci:nightly":"bash ./scripts/ci.sh nightly","verify:all":"bun dist/cli/machine.js verify-all dist","agent-build":"bun dist/cli/machine.js agent-build dist/examples/agentRuns.machine.js","generate:db":"bun dist/cli/machine.js generate-db dist/examples/agentRuns.machine.js","verify:db:all":"bun dist/cli/machine.js verify-db-all dist","test:fuzz:smoke":"RUN_FUZZ_TESTS=1 FUZZ_CASES=12 bun test src/fuzz/differential.test.ts","verify:all:full":"bun dist/cli/machine.js verify-all dist --all-tiers","test:fuzz:nightly":"RUN_FUZZ_TESTS=1 FUZZ_CASES=64 bun test src/fuzz/differential.test.ts"},"_npmUser":{"name":"bootoshi","email":"kingbootoshi@gmail.com"},"repository":{"url":"git+https://github.com/kingbootoshi/tla-precheck.git","type":"git"},"_npmVersion":"11.9.0","description":"Write state machines once in TypeScript. The compiler mathematically proves correctness via TLA+, then generates runtime code and Postgres constraints from the same source.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"typescript":"^5.9.3"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^22.13.10"},"_npmOperationalInternal":{"tmp":"tmp/tla-precheck_0.1.4_1773628828361_0.7831543066419384","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"tla-precheck","version":"0.1.5","keywords":["tla+","state-machine","formal-verification","model-checking","typescript","code-generation","agentic","postgres"],"license":"MIT","_id":"tla-precheck@0.1.5","maintainers":[{"name":"bootoshi","email":"kingbootoshi@gmail.com"}],"homepage":"https://github.com/kingbootoshi/tla-precheck#readme","bugs":{"url":"https://github.com/kingbootoshi/tla-precheck/issues"},"bin":{"tla-precheck":"bin/tla-precheck.js"},"dist":{"shasum":"b8d0f61c26f1cc977e9d15d3a239a01fc5c3fe28","tarball":"https://registry.npmjs.org/tla-precheck/-/tla-precheck-0.1.5.tgz","fileCount":84,"integrity":"sha512-BGWwAjMEdFVIOK6CY3E/Z1IESFHeQWberixYD5tCSWF1taE3AqbhiIZJ+8Ra/uz2ws50FY4OoSBQN1DmizangA==","signatures":[{"sig":"MEUCIQDediXv8L1D48wWTm8vYPFCWpEEyUXv186D+1HoQX4cXgIgFZgQ99NAO3UJ13KK18v69T2XfOJUGzK6zOnueMn/HXc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":294762},"type":"module","exports":{".":{"types":"./dist/core/dsl.d.ts","import":"./dist/core/dsl.js"},"./interpreter":{"types":"./dist/core/interpreter.d.ts","import":"./dist/core/interpreter.js"},"./db/adapterRuntime":{"types":"./dist/db/adapterRuntime.d.ts","import":"./dist/db/adapterRuntime.js"}},"gitHead":"cf2d8b5d93033056e6398a99232e0f92e79f3f2a","scripts":{"lint":"bun run lint:all","test":"bun test src","build":"bun ./node_modules/typescript/lib/tsc.js -p tsconfig.build.json","ci:pr":"bash ./scripts/ci.sh pr","verify":"bun dist/cli/machine.js verify-all dist","test:db":"bun test src/db/postgres.integration.test.ts","ci:local":"bash ./scripts/ci.sh pr","estimate":"bun dist/cli/machine.js estimate dist/examples/agentRuns.machine.js --tier pr","generate":"bun dist/cli/machine.js generate dist/examples/agentRuns.machine.js --tier pr","lint:all":"bun ./node_modules/typescript/lib/tsc.js --noEmit && bun src/cli/machine.ts lint-all src --tsconfig tsconfig.json","build:dev":"bun ./node_modules/typescript/lib/tsc.js -p tsconfig.json","test:fuzz":"RUN_FUZZ_TESTS=1 bun test src/fuzz/differential.test.ts","typecheck":"bun ./node_modules/typescript/lib/tsc.js --noEmit","verify:db":"bun dist/cli/machine.js verify-db-all dist","ci:nightly":"bash ./scripts/ci.sh nightly","verify:all":"bun dist/cli/machine.js verify-all dist","agent-build":"bun dist/cli/machine.js agent-build dist/examples/agentRuns.machine.js","generate:db":"bun dist/cli/machine.js generate-db dist/examples/agentRuns.machine.js","verify:db:all":"bun dist/cli/machine.js verify-db-all dist","test:fuzz:smoke":"RUN_FUZZ_TESTS=1 FUZZ_CASES=12 bun test src/fuzz/differential.test.ts","verify:all:full":"bun dist/cli/machine.js verify-all dist --all-tiers","test:fuzz:nightly":"RUN_FUZZ_TESTS=1 FUZZ_CASES=64 bun test src/fuzz/differential.test.ts"},"_npmUser":{"name":"bootoshi","email":"kingbootoshi@gmail.com"},"repository":{"url":"git+https://github.com/kingbootoshi/tla-precheck.git","type":"git"},"_npmVersion":"11.9.0","description":"Write state machines once in TypeScript. The compiler mathematically proves correctness via TLA+, then generates runtime code and Postgres constraints from the same source.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"typescript":"^5.9.3"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^22.13.10"},"_npmOperationalInternal":{"tmp":"tmp/tla-precheck_0.1.5_1773629364218_0.10492373569680202","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"tla-precheck","version":"0.1.6","keywords":["tla+","state-machine","formal-verification","model-checking","typescript","code-generation","agentic","postgres"],"license":"MIT","_id":"tla-precheck@0.1.6","maintainers":[{"name":"bootoshi","email":"kingbootoshi@gmail.com"}],"homepage":"https://github.com/kingbootoshi/tla-precheck#readme","bugs":{"url":"https://github.com/kingbootoshi/tla-precheck/issues"},"bin":{"tla-precheck":"bin/tla-precheck.js"},"dist":{"shasum":"80bda1321d25b9a7e84fc59f2205433b07a98a7e","tarball":"https://registry.npmjs.org/tla-precheck/-/tla-precheck-0.1.6.tgz","fileCount":84,"integrity":"sha512-xRrbr/hljIQYge82OxPTeE6ObaAB+qUnNvOYRNzu7PheFvplKK+8pS8K4R0HeNRsC2SwfmPBdy6S7RdyGMkN4A==","signatures":[{"sig":"MEUCICzi5V8SO3lropu4P/QBRGv2nW+c4nLLHDFoPRHSV2brAiEAiOKx7C9nGsejlVb3EVUkWTaqlxdGHEXJBmIvERKX3Y4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":294866},"type":"module","exports":{".":{"types":"./dist/core/dsl.d.ts","import":"./dist/core/dsl.js"},"./proof":{"types":"./dist/core/proof.d.ts","import":"./dist/core/proof.js"},"./interpreter":{"types":"./dist/core/interpreter.d.ts","import":"./dist/core/interpreter.js"},"./db/adapterRuntime":{"types":"./dist/db/adapterRuntime.d.ts","import":"./dist/db/adapterRuntime.js"}},"gitHead":"b2413f5b37743f5f2f2ffc8dba305a697c7547f4","scripts":{"lint":"bun run lint:all","test":"bun test src","build":"bun ./node_modules/typescript/lib/tsc.js -p tsconfig.build.json","ci:pr":"bash ./scripts/ci.sh pr","verify":"bun dist/cli/machine.js verify-all dist","test:db":"bun test src/db/postgres.integration.test.ts","ci:local":"bash ./scripts/ci.sh pr","estimate":"bun dist/cli/machine.js estimate dist/examples/agentRuns.machine.js --tier pr","generate":"bun dist/cli/machine.js generate dist/examples/agentRuns.machine.js --tier pr","lint:all":"bun ./node_modules/typescript/lib/tsc.js --noEmit && bun src/cli/machine.ts lint-all src --tsconfig tsconfig.json","build:dev":"bun ./node_modules/typescript/lib/tsc.js -p tsconfig.json","test:fuzz":"RUN_FUZZ_TESTS=1 bun test src/fuzz/differential.test.ts","typecheck":"bun ./node_modules/typescript/lib/tsc.js --noEmit","verify:db":"bun dist/cli/machine.js verify-db-all dist","ci:nightly":"bash ./scripts/ci.sh nightly","verify:all":"bun dist/cli/machine.js verify-all dist","agent-build":"bun dist/cli/machine.js agent-build dist/examples/agentRuns.machine.js","generate:db":"bun dist/cli/machine.js generate-db dist/examples/agentRuns.machine.js","verify:db:all":"bun dist/cli/machine.js verify-db-all dist","test:fuzz:smoke":"RUN_FUZZ_TESTS=1 FUZZ_CASES=12 bun test src/fuzz/differential.test.ts","verify:all:full":"bun dist/cli/machine.js verify-all dist --all-tiers","test:fuzz:nightly":"RUN_FUZZ_TESTS=1 FUZZ_CASES=64 bun test src/fuzz/differential.test.ts"},"_npmUser":{"name":"bootoshi","email":"kingbootoshi@gmail.com"},"repository":{"url":"git+https://github.com/kingbootoshi/tla-precheck.git","type":"git"},"_npmVersion":"11.9.0","description":"Write state machines once in TypeScript. The compiler mathematically proves correctness via TLA+, then generates runtime code and Postgres constraints from the same source.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"typescript":"^5.9.3"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^22.13.10"},"_npmOperationalInternal":{"tmp":"tmp/tla-precheck_0.1.6_1773630006624_0.9240903343843274","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"tla-precheck","version":"0.1.7","description":"Write state machines once in TypeScript. The compiler mathematically proves correctness via TLA+, then generates runtime code and Postgres constraints from the same source.","type":"module","license":"MIT","repository":{"type":"git","url":"git+https://github.com/kingbootoshi/tla-precheck.git"},"keywords":["tla+","state-machine","formal-verification","model-checking","typescript","code-generation","agentic","postgres"],"bin":{"tla-precheck":"bin/tla-precheck.js"},"exports":{".":{"import":"./dist/core/dsl.js","types":"./dist/core/dsl.d.ts"},"./db/adapterRuntime":{"import":"./dist/db/adapterRuntime.js","types":"./dist/db/adapterRuntime.d.ts"},"./interpreter":{"import":"./dist/core/interpreter.js","types":"./dist/core/interpreter.d.ts"},"./proof":{"import":"./dist/core/proof.js","types":"./dist/core/proof.d.ts"}},"scripts":{"build":"bun ./node_modules/typescript/lib/tsc.js -p tsconfig.build.json","build:dev":"bun ./node_modules/typescript/lib/tsc.js -p tsconfig.json","typecheck":"bun ./node_modules/typescript/lib/tsc.js --noEmit","ci:local":"bash ./scripts/ci.sh pr","ci:pr":"bash ./scripts/ci.sh pr","ci:nightly":"bash ./scripts/ci.sh nightly","lint":"bun run lint:all","lint:all":"bun ./node_modules/typescript/lib/tsc.js --noEmit && bun src/cli/machine.ts lint-all src --tsconfig tsconfig.json","test":"bun test src","test:db":"bun test src/db/postgres.integration.test.ts","test:fuzz":"RUN_FUZZ_TESTS=1 bun test src/fuzz/differential.test.ts","test:fuzz:smoke":"RUN_FUZZ_TESTS=1 FUZZ_CASES=12 bun test src/fuzz/differential.test.ts","test:fuzz:nightly":"RUN_FUZZ_TESTS=1 FUZZ_CASES=64 bun test src/fuzz/differential.test.ts","estimate":"bun dist/cli/machine.js estimate dist/examples/agentRuns.machine.js --tier pr","generate":"bun dist/cli/machine.js generate dist/examples/agentRuns.machine.js --tier pr","generate:db":"bun dist/cli/machine.js generate-db dist/examples/agentRuns.machine.js","verify":"bun dist/cli/machine.js verify-all dist","verify:all":"bun dist/cli/machine.js verify-all dist","verify:all:full":"bun dist/cli/machine.js verify-all dist --all-tiers","verify:db":"bun dist/cli/machine.js verify-db-all dist","verify:db:all":"bun dist/cli/machine.js verify-db-all dist","agent-build":"bun dist/cli/machine.js agent-build dist/examples/agentRuns.machine.js"},"dependencies":{"typescript":"^5.9.3"},"devDependencies":{"@types/node":"^22.13.10"},"gitHead":"9130cb983062f4e51c306730e6656046dd76d81d","_id":"tla-precheck@0.1.7","bugs":{"url":"https://github.com/kingbootoshi/tla-precheck/issues"},"homepage":"https://github.com/kingbootoshi/tla-precheck#readme","_nodeVersion":"24.14.0","_npmVersion":"11.9.0","dist":{"integrity":"sha512-UZeHqQhYeRm4rETI68fK1t9+bM7u3g3tqY40BG8aRjSx1K9j6R9Aj5IXsva+S+Nq62tsW/NsqlsHmxclwhRZ+g==","shasum":"e9f5c1a28d13c86702f531312aa9afed2acf1fac","tarball":"https://registry.npmjs.org/tla-precheck/-/tla-precheck-0.1.7.tgz","fileCount":84,"unpackedSize":298508,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDsAhJ70MF1JHzuBbm/020UwmXDBmxDuv6zjaNIvnoI7QIgLPry33vPo6s/23KeVPpEBYed+UxRGWEkFdZyAvNhXJ8="}]},"_npmUser":{"name":"bootoshi","email":"kingbootoshi@gmail.com"},"directories":{},"maintainers":[{"name":"bootoshi","email":"kingbootoshi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/tla-precheck_0.1.7_1773632001076_0.9011578015565376"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-16T00:17:49.372Z","modified":"2026-03-16T03:33:21.352Z","0.1.0":"2026-03-16T00:17:49.537Z","0.1.1":"2026-03-16T00:48:39.094Z","0.1.2":"2026-03-16T01:14:28.174Z","0.1.3":"2026-03-16T01:49:00.055Z","0.1.4":"2026-03-16T02:40:28.599Z","0.1.5":"2026-03-16T02:49:24.347Z","0.1.6":"2026-03-16T03:00:06.765Z","0.1.7":"2026-03-16T03:33:21.224Z"},"bugs":{"url":"https://github.com/kingbootoshi/tla-precheck/issues"},"license":"MIT","homepage":"https://github.com/kingbootoshi/tla-precheck#readme","keywords":["tla+","state-machine","formal-verification","model-checking","typescript","code-generation","agentic","postgres"],"repository":{"type":"git","url":"git+https://github.com/kingbootoshi/tla-precheck.git"},"description":"Write state machines once in TypeScript. The compiler mathematically proves correctness via TLA+, then generates runtime code and Postgres constraints from the same source.","maintainers":[{"name":"bootoshi","email":"kingbootoshi@gmail.com"}],"readme":"<p align=\"center\">\n  <img src=\"tla-precheck-banner.jpeg\" alt=\"TLA PreCheck\" width=\"100%\" />\n</p>\n\n<h3 align=\"center\">Find invisible bugs in your state machine design before writing a single line of code.<br/>Then generate the proven-correct code from the same source.</h3>\n\n<p align=\"center\">\n  <a href=\"#the-problem\">The Problem</a> -\n  <a href=\"#how-it-works\">How It Works</a> -\n  <a href=\"#before-and-after\">Before & After</a> -\n  <a href=\"#quickstart\">Quickstart</a> -\n  <a href=\"#install\">Install</a> -\n  <a href=\"#the-design-loop\">The Design Loop</a> -\n  <a href=\"docs/TECHNICAL_REFERENCE.md\">Technical Reference</a>\n</p>\n\n---\n\nWrite your state machine once. The compiler mathematically checks every possible state\nfor bugs, then generates the runtime code. One source of truth. No drift. No if/else\nchains. No praying your guards are consistent across services.\n\nTLA PreCheck uses [TLA+](https://lamport.azurewebsites.net/tla/tla.html) model checking\nunder the hood - the same math Amazon used to find bugs in DynamoDB that no amount of\ntesting could catch. You don't need to know TLA+. You write TypeScript. The compiler\nhandles the rest.\n\n## How It Works\n\nYou write the state machine once in a restricted TypeScript DSL. The compiler generates\neverything else:\n\n```\n                                    +---> TLA+ Spec -----------> TLC Model Checker (proves design correct)\n                                    |\nMachine DSL (one source of truth) --+---> TypeScript Interpreter (runtime execution)\n                                    |\n                                    +---> Generated Adapter ----> Typed functions you import\n                                    |\n                                    +---> Postgres DDL ---------> Database-level enforcement\n```\n\nThen it proves the TLA+ spec and the TypeScript interpreter produce **bit-identical state\ngraphs** across every reachable state. Not \"similar.\" Identical. Mathematically verified.\n\nIf they diverge, your build fails. If an invariant is violated in any reachable state,\nyour build fails. No bugs ship.\n\n## Before and After\n\n**Before: scattered if/else guards across your codebase**\n\n```typescript\n// api/runs/cancel.ts - hope this matches the other 6 places that check run status\nif (run.status === \"queued\" || run.status === \"running\") {\n  if (run.owner === userId || isAdmin(userId)) {\n    await db.update(\"agent_runs\", { id: runId, status: \"cancelled\" });\n  } else {\n    throw new Error(\"Not authorized to cancel this run\");\n  }\n} else {\n  throw new Error(\"Cannot cancel a run that is not active\");\n}\n\n// api/runs/complete.ts - is this consistent with cancel? who knows\nif (run.status === \"running\") {\n  await db.update(\"agent_runs\", { id: runId, status: \"completed\" });\n} else {\n  throw new Error(\"Can only complete a running run\");\n}\n\n// background/sweep.ts - third place with status logic, probably slightly different\nif (run.status === \"running\" && isStale(run)) {\n  await db.update(\"agent_runs\", { id: runId, status: \"failed\" });\n}\n```\n\n**After: one DSL, proven correct, generated functions**\n\n```typescript\n// The machine - every guard, every transition, every invariant in one place\nexport const agentRunsMachine = defineMachine({\n  version: 2,\n  moduleName: \"AgentRuns\",\n  variables: {\n    status: mapVar(\"Runs\", enumType(\"idle\", \"queued\", \"running\", \"completed\", \"failed\", \"cancelled\"), lit(\"idle\")),\n    owner: mapVar(\"Runs\", optionType(domainType(\"Users\")), lit(null))\n  },\n  actions: {\n    create: {\n      params: { u: \"Users\", r: \"Runs\" },\n      guard: and(\n        eq(index(status, param(\"r\")), lit(\"idle\")),\n        eq(index(owner, param(\"r\")), lit(null)),\n        eq(count(\"Runs\", \"c\", and(\n          eq(index(owner, param(\"c\")), param(\"u\")),\n          isin(index(status, param(\"c\")), activeStatuses)\n        )), lit(0))\n      ),\n      updates: [\n        setMap(\"status\", param(\"r\"), lit(\"queued\")),\n        setMap(\"owner\", param(\"r\"), param(\"u\"))\n      ]\n    },\n    cancel: {\n      params: { r: \"Runs\" },\n      guard: isin(index(status, param(\"r\")), activeStatuses),\n      updates: [setMap(\"status\", param(\"r\"), lit(\"cancelled\"))]\n    },\n    // complete, fail, sweepStale...\n  },\n  invariants: {\n    oneActivePerUser: {\n      description: \"At most one queued or running run per user\",\n      formula: forall(\"Users\", \"u\", lte(\n        count(\"Runs\", \"c\", and(\n          eq(index(owner, param(\"c\")), param(\"u\")),\n          isin(index(status, param(\"c\")), activeStatuses)\n        )),\n        lit(1)\n      ))\n    }\n  }\n});\n```\n\n```typescript\n// Your application code - no if/else, no guards, just function calls\nimport { create, cancel, complete } from \"./machine-adapters/AgentRuns.adapter\";\n\n// Each function: opens transaction, locks rows, runs proven interpreter,\n// diffs state, writes changes. If transition is invalid, throws.\nawait create(sql, { u: userId, r: runId });\nawait cancel(sql, { r: runId });\nawait complete(sql, { r: runId });\n```\n\nThe scattered if/else checks are gone. The guard logic lives in the DSL, was proven\ncorrect by the model checker across every possible state, and executes inside the\ngenerated adapter. Your code just calls functions.\n\n## The Mathematical Guarantee\n\nWhen TLA PreCheck passes:\n\n1. **Design is correct** - TLC exhaustively checked every reachable state, every\n   interleaving, every edge case. Not sampled. Every single one.\n2. **Interpreter matches the proof** - the TypeScript interpreter and TLC produce\n   bit-identical state graphs. The code you run is the spec you proved.\n3. **Database enforces invariants** - generated Postgres constraints (partial unique\n   indexes, CHECK constraints) enforce critical invariants at the storage level,\n   closing race conditions no application code can prevent.\n4. **Raw writes are blocked** - lint rule catches any code that bypasses the generated\n   adapter and writes directly to machine-owned tables.\n\n## Quickstart\n\nIf you are trying TLA PreCheck from GitHub, you do not need to install it globally first.\n\n### 1. Prepare your machine\n\n```bash\nnpx tla-precheck setup\nnpx tla-precheck doctor\n```\n\n`setup` installs the agent skill and downloads the pinned TLC jar into `~/.tla-precheck`.\n`doctor` confirms Java, TLC, and skill installation.\n\n### 2. Start in your codebase\n\n```bash\nnpx tla-precheck init\n```\n\nThat prompts for a machine name or path and creates `<name>.machine.ts`.\n\n### 3. Run the design loop\n\n```bash\nnpx tla-precheck check billing\n```\n\nThis validates the machine, estimates the state space, runs TLC, and checks equivalence\nbetween the generated TLA+ model and the TypeScript interpreter.\n\n### 4. Generate runtime artifacts\n\n```bash\nnpx tla-precheck build billing\n```\n\nThis reruns proof and then generates:\n- TLA+ artifacts\n- Postgres storage contract\n- typed adapter functions in `src/machine-adapters/`\n\n`build` requires machine metadata for the adapter path:\n- `metadata.runtimeAdapter`\n- `metadata.ownedTables`\n- `metadata.ownedColumns`\n\n### 5. Agent-first flow\n\nAfter `setup`, you can also invoke the installed skill in Claude Code or Codex:\n\n```text\n/tla-precheck\n```\n\nThe intended workflow is:\n- let the agent write or refine the `.machine.ts`\n- run `npx tla-precheck check <machine>`\n- fix the design if proof fails\n- run `npx tla-precheck build <machine>` once the machine is adapter-capable\n\n## Install\n\n```bash\nbun add -d tla-precheck\n# or: npm install -D tla-precheck\n\nnpx tla-precheck setup\nnpx tla-precheck doctor\n```\n\nRequirements: Java 17+ for TLC model checking. `setup` downloads a pinned\n`tla2tools.jar` into `~/.tla-precheck/tla2tools.jar`, and `check` / `build` use that\ncached jar automatically. On macOS with Homebrew Java, the CLI prefers\n`/opt/homebrew/opt/openjdk/bin/java`.\n\n## The Design Loop\n\nTLA PreCheck is a design tool, not just a code tool. The design is where the real bugs\nlive. By the time you're writing code, you've already committed to a design that might\nbe fundamentally broken.\n\n### For agents (the intended workflow)\n\n```\n1. Identify a critical state flow (billing, subscriptions, agent runs...)\n2. Write the machine in the DSL\n3. Run: `npx tla-precheck check agent-runs`\n4. If proof or equivalence fails, fix the DESIGN, not the code\n5. Loop until: `proofPassed: true` and `equivalent: true`\n6. Run: `npx tla-precheck build agent-runs`\n7. Import generated adapter functions from `src/machine-adapters` into your codebase\n8. Done. Zero hallucination surface. Proven correct by construction.\n```\n\nThe agent isn't just coding faster. It's designing better. The model checker sees every\npossible future of the system and tells the agent exactly where things break.\n\n### CLI commands\n\n```bash\n# Scaffold a machine\nnpx tla-precheck init\n\n# Validate + estimate + verify directly from the source .machine.ts file\nnpx tla-precheck check agent-runs\n\n# Verify and generate the runtime adapter for machines that declare adapter metadata\nnpx tla-precheck build agent-runs\n\n# Verify a live Postgres schema against generated constraints\n# verify-db currently requires Bun because it uses Bun.SQL\nbunx tla-precheck verify-db agent-runs\n```\n\n`build` needs explicit database mapping metadata in the machine:\n- `metadata.runtimeAdapter`\n- `metadata.ownedTables`\n- `metadata.ownedColumns`\n\nWithout that metadata, `check` can still pass while `build` stops at adapter generation.\n\nIf you are not using the generated adapter, the manual interpreter path is:\n\n```typescript\nimport { resolveMachine } from \"tla-precheck/proof\";\nimport { buildInitialState, enabled, step } from \"tla-precheck/interpreter\";\nimport myMachine from \"./my.machine.js\";\n\nconst resolved = resolveMachine(myMachine, \"pr\");\nlet state = buildInitialState(resolved);\n\nif (!enabled(resolved, state, \"activate\", { r: \"r1\" })) {\n  throw new Error(\"Transition not enabled\");\n}\n\nconst next = step(resolved, state, \"activate\", { r: \"r1\" });\nif (next === null) {\n  throw new Error(\"Transition not enabled\");\n}\n\nstate = next;\n```\n\nFor repo contributors, the Bun scripts remain available:\n\n```bash\nbun run build\nbun run typecheck\nbun run lint\nbun run test\nbun run verify\nbun run verify:all:full\nbun run verify:db\n```\n\n### Design principles\n\n- **Target one workflow at a time.** Don't model your entire system. Model the billing\n  state machine. Model the subscription lifecycle. One machine per critical flow.\n- **Keep domains tiny.** 2 users, 3 runs is enough to find most bugs. Scale proof\n  tiers for nightly runs.\n- **Verification failure means the design is wrong.** Don't patch around it with code.\n  Fix the state machine. Redesign the transitions.\n- **Multiple small machines beat one giant spec.** Compose at the application layer,\n  prove at the machine layer.\n\n## What It Replaces\n\n| Before | After |\n|--------|-------|\n| Status columns + scattered if/else | One DSL, generated typed functions |\n| \"I think these transitions are right\" | Mathematical proof across every reachable state |\n| Spec and code drift apart over time | One artifact generates both - drift is impossible |\n| Agent writes spec AND code (two hallucination surfaces) | Agent writes DSL only, compiler generates the rest |\n| Manual DB constraints you hope match the logic | Generated Postgres DDL from the same machine |\n| Pray your concurrent transitions don't race | Transactional adapter with row locking + DB constraints |\n\n## How the Proof Works\n\nThe DSL is intentionally restricted to 13 expression kinds. Every expression has exactly\none translation to TLA+ and exactly one evaluation in TypeScript. This restriction is\nwhat makes equivalence provable.\n\nThe compiler generates both a TLA+ spec and a TypeScript interpreter from the same DSL.\nTLC (the TLA+ model checker) exhaustively explores every reachable state of the spec.\nThe interpreter does the same via breadth-first search. Then the verifier compares both\nstate graphs and checks they are bit-identical.\n\nIf someone introduces a bug in the TLA+ generator, the equivalence check catches it.\nIf someone introduces a bug in the interpreter, the equivalence check catches it.\nThe two backends keep each other honest.\n\nThe generated adapter doesn't introduce new semantics. It calls the same verified\ninterpreter inside a database transaction. Load rows, reconstruct state, call `step()`,\ndiff the result, write changes. The proven interpreter is the runtime.\n\n## Proof Tiers\n\nState explosion is the practical killer of model checking. TLA PreCheck manages this\nwith bounded proof tiers:\n\n```typescript\nproof: {\n  defaultTier: \"pr\",\n  tiers: {\n    pr: {\n      domains: {\n        Users: modelValues(\"u\", { size: 2, symmetry: true }),\n        Runs: ids({ prefix: \"r\", size: 3 })\n      },\n      budgets: { maxEstimatedStates: 10_000 }\n    },\n    nightly: {\n      domains: {\n        Users: modelValues(\"u\", { size: 3, symmetry: true }),\n        Runs: ids({ prefix: \"r\", size: 5 })\n      },\n      budgets: { maxEstimatedStates: 10_000_000 }\n    }\n  }\n}\n```\n\nSmall tiers run in seconds during PR checks. Larger tiers run nightly.\nBudget estimation fails fast before TLC runs, so you don't wait hours\nto find out the state space is too large.\n\n## Examples\n\nThe repo includes two example machines:\n\n- **Dog** (`src/examples/dog.machine.ts`) - minimal teaching example. 3 modes, 2 tempers,\n  6 type-possible states, only 4 reachable. Shows the difference between \"what the types\n  allow\" and \"what the system can actually reach.\"\n\n- **AgentRuns** (`src/examples/agentRuns.machine.ts`) - production-grade. Models distributed\n  agent execution with concurrent create/cancel/complete/fail/sweep transitions, a\n  one-active-per-user invariant, and storage constraints. 29 million states checked in\n  under 3 minutes.\n\n## Further Reading\n\n- [Technical Reference](docs/TECHNICAL_REFERENCE.md) - full DSL reference, CI integration,\n  proof tiers, storage backend, testing strategy\n- [Problem Statement](docs/THE_PROBLEM.md) - why this exists, the north star\n\n---\n\n<p align=\"center\">MIT License</p>\n","readmeFilename":"README.md"}