{"_id":"@am_shork/attest","_rev":"39-68a66b5ff6a290375ab3e514029a5da0","name":"@am_shork/attest","dist-tags":{"latest":"1.5.0"},"versions":{"0.1.0":{"name":"@am_shork/attest","version":"0.1.0","keywords":["tdd","spec","requirements","drift","vitest"],"license":"MIT","_id":"@am_shork/attest@0.1.0","maintainers":[{"name":"am_shork","email":"am_shork@proton.me"}],"homepage":"https://gitlab.com/Pseudorca/attest#readme","bugs":{"url":"https://gitlab.com/Pseudorca/attest/-/issues"},"bin":{"attest":"bin/attest.js"},"dist":{"shasum":"32cc73203ff75450b6c7ecd79304bbd0be51cf78","tarball":"https://registry.npmjs.org/@am_shork/attest/-/attest-0.1.0.tgz","fileCount":65,"integrity":"sha512-yf/UNAGC1lSgufhIRsMAKOmTmRzrxXYhxvIhVcHd/+6crSkMrAI96DDzBxXKLXCR2mEpf9v1qPAGaNRsxGjypQ==","signatures":[{"sig":"MEYCIQCW1GQ83m5qu8yEk6dtisZ1+LgGJ9YGAwkz8VK9rdoR9QIhALYYdHPfdceoqmLu+dW/X9cNK6Wkqj9u/xymTKhJ5Jlb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":91352},"pnpm":{"onlyBuiltDependencies":["esbuild"]},"type":"module","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"db94dd6286a9910f2c2f4cf57cc2d0f0174acbb6","scripts":{"lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.json","attest":"node bin/attest.js","prepack":"pnpm run build","typecheck":"tsc -p tsconfig.json --noEmit","check:self":"node bin/attest.js check self","cover:self":"node bin/attest.js cover self","test:watch":"vitest","verify:self":"node bin/attest.js verify self"},"_npmUser":{"name":"am_shork","email":"am_shork@proton.me"},"repository":{"url":"git+https://gitlab.com/Pseudorca/attest.git","type":"git"},"_npmVersion":"11.10.1","description":"TDD-native spec framework: tests are the source of truth for verification, ID-bound requirements the source of truth for intent.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^3.23.0","chalk":"^5.3.0","commander":"^12.1.0","typescript":"^5.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.28.0","devDependencies":{"vite":"^5.4.0","eslint":"^9.9.0","vitest":"^2.0.0","@eslint/js":"^9.9.0","@types/node":"^20.19.0","typescript-eslint":"^8.2.0"},"peerDependencies":{"vite":"^5.0.0 || ^6.0.0","vitest":"^2.0.0 || ^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/attest_0.1.0_1784610829229_0.8925746565782358","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@am_shork/attest","version":"0.1.1","keywords":["tdd","spec","requirements","drift","vitest"],"license":"MIT","_id":"@am_shork/attest@0.1.1","maintainers":[{"name":"am_shork","email":"am_shork@proton.me"}],"homepage":"https://gitlab.com/Pseudorca/attest#readme","bugs":{"url":"https://gitlab.com/Pseudorca/attest/-/issues"},"bin":{"attest":"bin/attest.js"},"dist":{"shasum":"b55ae21e4ec202c36f401072a47ec106830faa43","tarball":"https://registry.npmjs.org/@am_shork/attest/-/attest-0.1.1.tgz","fileCount":65,"integrity":"sha512-CPyV52csOqq3rFSne04lmN84M4dtrMH63USR+E5/YdYQjmM1HmOJIulPSj9vgEPfonz5cOlrAbYlINUnl145Sw==","signatures":[{"sig":"MEUCIQCkGs15HQvhPgxX+EP0FCieU+U3u6Qrn82H020tc8FYIAIgMaSsC+t8uLsL+5YasnnM98Qo/sHNLVVhs79Gj7G0KZY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":92509},"pnpm":{"onlyBuiltDependencies":["esbuild"]},"type":"module","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./define":{"types":"./dist/core/registry.d.ts","default":"./dist/core/registry.js"}},"gitHead":"9d6f29c2c68038b7cb579de2ec5130e2eee97a49","scripts":{"lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.json","attest":"node bin/attest.js","prepack":"pnpm run build","typecheck":"tsc -p tsconfig.json --noEmit","check:self":"node bin/attest.js check self","cover:self":"node bin/attest.js cover self","test:watch":"vitest","verify:self":"node bin/attest.js verify self"},"_npmUser":{"name":"am_shork","email":"am_shork@proton.me"},"repository":{"url":"git+https://gitlab.com/Pseudorca/attest.git","type":"git"},"_npmVersion":"11.10.1","description":"TDD-native spec framework: tests are the source of truth for verification, ID-bound requirements the source of truth for intent.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^3.23.0","chalk":"^5.3.0","commander":"^12.1.0","typescript":"^5.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.28.0","devDependencies":{"vite":"^5.4.0","eslint":"^9.9.0","vitest":"^2.0.0","@eslint/js":"^9.9.0","@types/node":"^20.19.0","typescript-eslint":"^8.2.0"},"peerDependencies":{"vite":"^5.0.0 || ^6.0.0","vitest":"^2.0.0 || ^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/attest_0.1.1_1784706495044_0.7058091805766795","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@am_shork/attest","version":"0.1.2","keywords":["tdd","spec","requirements","drift","vitest"],"license":"MIT","_id":"@am_shork/attest@0.1.2","maintainers":[{"name":"am_shork","email":"am_shork@proton.me"}],"homepage":"https://gitlab.com/Pseudorca/attest#readme","bugs":{"url":"https://gitlab.com/Pseudorca/attest/-/issues"},"bin":{"attest":"bin/attest.js"},"dist":{"shasum":"58690afb05426fa57e74c45aa1ff1bafa5db2b16","tarball":"https://registry.npmjs.org/@am_shork/attest/-/attest-0.1.2.tgz","fileCount":73,"integrity":"sha512-7srkwycClrBQxXzstVO6l0BKbUpCk3eds+y2Brt4jIJvVqHjQeZZIhX7uOCefwCbZMK5/fwKG5rbsLY6ETYVpA==","signatures":[{"sig":"MEUCIQDDakhMxhVh3a6NdkliF6F7SsrzxPQY8xapniwDQk5ocgIgHrgrbJhreOuTFaa8xtvBxJVgYm9WEExeadTzYOEro+Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":107834},"type":"module","_from":"file:am_shork-attest-0.1.2.tgz","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./define":{"types":"./dist/core/registry.d.ts","default":"./dist/core/registry.js"}},"scripts":{"lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.json","attest":"node bin/attest.js","typecheck":"tsc -p tsconfig.json --noEmit","check:self":"node bin/attest.js check self","cover:self":"node bin/attest.js cover self","test:watch":"vitest","verify:self":"node bin/attest.js verify self","test:consumer":"pnpm run build && vitest run --config vitest.consumer.config.ts"},"_npmUser":{"name":"am_shork","email":"am_shork@proton.me"},"_resolved":"/tmp/9d10e21e0951ee69ad58408df058970d/am_shork-attest-0.1.2.tgz","_integrity":"sha512-7srkwycClrBQxXzstVO6l0BKbUpCk3eds+y2Brt4jIJvVqHjQeZZIhX7uOCefwCbZMK5/fwKG5rbsLY6ETYVpA==","repository":{"url":"git+https://gitlab.com/Pseudorca/attest.git","type":"git"},"_npmVersion":"10.9.8","description":"TDD-native spec framework: tests are the source of truth for verification, ID-bound requirements the source of truth for intent.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^3.23.0","chalk":"^5.3.0","commander":"^12.1.0","typescript":"^5.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.0","eslint":"^9.9.0","vitest":"^2.0.0","@eslint/js":"^9.9.0","@types/node":"^20.19.0","typescript-eslint":"^8.2.0"},"peerDependencies":{"vite":"^5.0.0 || ^6.0.0","vitest":"^2.0.0 || ^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/attest_0.1.2_1784821404069_0.199844135432234","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@am_shork/attest","version":"0.1.3","keywords":["tdd","spec","requirements","drift","vitest"],"license":"MIT","_id":"@am_shork/attest@0.1.3","maintainers":[{"name":"am_shork","email":"am_shork@proton.me"}],"homepage":"https://gitlab.com/Pseudorca/attest#readme","bugs":{"url":"https://gitlab.com/Pseudorca/attest/-/issues"},"bin":{"attest":"bin/attest.js"},"dist":{"shasum":"bd412daa16a5c1320d4ffcbd480291ee50e3694d","tarball":"https://registry.npmjs.org/@am_shork/attest/-/attest-0.1.3.tgz","fileCount":73,"integrity":"sha512-SYYOIlzDDFRE+WJ/zvp131Jx/2xuFqAwqbhyvCcjOYWQMWyu5YwfXeo0PbO/OVi1nLS+d2eGoJON4t7qv4sayg==","signatures":[{"sig":"MEYCIQCZfPasTL4sq4cXhLPykS1RhBu+WXJvvk/Y6OYoNCVxWQIhAK+tAEhTIONbnrDIlLtHePtbj3QkYnsc+iEqe43maZvO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":112962},"type":"module","_from":"file:am_shork-attest-0.1.3.tgz","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./define":{"types":"./dist/core/registry.d.ts","default":"./dist/core/registry.js"}},"scripts":{"lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.json","attest":"node bin/attest.js","typecheck":"tsc -p tsconfig.json --noEmit","check:self":"node bin/attest.js check self","cover:self":"node bin/attest.js cover self","test:watch":"vitest","verify:self":"node bin/attest.js verify self","test:consumer":"pnpm run build && vitest run --config vitest.consumer.config.ts"},"_npmUser":{"name":"am_shork","email":"am_shork@proton.me"},"_resolved":"/tmp/5a6b25eacfa671054362a0796d36a462/am_shork-attest-0.1.3.tgz","_integrity":"sha512-SYYOIlzDDFRE+WJ/zvp131Jx/2xuFqAwqbhyvCcjOYWQMWyu5YwfXeo0PbO/OVi1nLS+d2eGoJON4t7qv4sayg==","repository":{"url":"git+https://gitlab.com/Pseudorca/attest.git","type":"git"},"_npmVersion":"10.9.8","description":"TDD-native spec framework: tests are the source of truth for verification, ID-bound requirements the source of truth for intent.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^3.23.0","chalk":"^5.3.0","commander":"^12.1.0","typescript":"^5.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.0","eslint":"^9.9.0","vitest":"^2.0.0","@eslint/js":"^9.9.0","@types/node":"^20.19.0","typescript-eslint":"^8.2.0"},"peerDependencies":{"vite":"^5.0.0 || ^6.0.0","vitest":"^2.0.0 || ^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/attest_0.1.3_1784858956002_0.7927364929139176","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@am_shork/attest","version":"0.1.4","keywords":["tdd","spec","requirements","drift","vitest"],"license":"MIT","_id":"@am_shork/attest@0.1.4","maintainers":[{"name":"am_shork","email":"am_shork@proton.me"}],"homepage":"https://gitlab.com/Pseudorca/attest#readme","bugs":{"url":"https://gitlab.com/Pseudorca/attest/-/issues"},"bin":{"attest":"bin/attest.js"},"dist":{"shasum":"a147b7d41b106d093b7712e35f944f67baba45a9","tarball":"https://registry.npmjs.org/@am_shork/attest/-/attest-0.1.4.tgz","fileCount":73,"integrity":"sha512-roCRFmCOwlx3QO1Xy77fIIoYjCMu6YgIBlp5E/DvI0Aiv+4bl2zf0mxOyHLwfOuSJ8QF9uoHE6bg+W6/28g3lw==","signatures":[{"sig":"MEQCIHwKM8c9jkW/hzM46F4H5t9T1AGxZfcHHIoJFZhO3c8zAiBrvG715npaZQCzzBBiaSKibdmQAvk25QBZlWNjbfKRPA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":119190},"type":"module","_from":"file:am_shork-attest-0.1.4.tgz","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./define":{"types":"./dist/core/registry.d.ts","default":"./dist/core/registry.js"}},"scripts":{"lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.json","attest":"node bin/attest.js","typecheck":"tsc -p tsconfig.json --noEmit","check:self":"node bin/attest.js check self","cover:self":"node bin/attest.js cover self","test:watch":"vitest","verify:self":"node bin/attest.js verify self","test:consumer":"pnpm run build && vitest run --config vitest.consumer.config.ts"},"_npmUser":{"name":"am_shork","email":"am_shork@proton.me"},"_resolved":"/tmp/42057c30006c2694336ea4827c18c4ed/am_shork-attest-0.1.4.tgz","_integrity":"sha512-roCRFmCOwlx3QO1Xy77fIIoYjCMu6YgIBlp5E/DvI0Aiv+4bl2zf0mxOyHLwfOuSJ8QF9uoHE6bg+W6/28g3lw==","repository":{"url":"git+https://gitlab.com/Pseudorca/attest.git","type":"git"},"_npmVersion":"10.9.8","description":"TDD-native spec framework: tests are the source of truth for verification, ID-bound requirements the source of truth for intent.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^3.23.0","chalk":"^5.3.0","commander":"^12.1.0","typescript":"^5.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.0","eslint":"^9.9.0","vitest":"^2.0.0","@eslint/js":"^9.9.0","@types/node":"^20.19.0","typescript-eslint":"^8.2.0"},"peerDependencies":{"vite":"^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0","vitest":"^2.0.0 || ^3.0.0 || ^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/attest_0.1.4_1784867144524_0.3850909194889387","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@am_shork/attest","version":"0.1.5","keywords":["tdd","spec","requirements","drift","vitest"],"license":"MIT","_id":"@am_shork/attest@0.1.5","maintainers":[{"name":"am_shork","email":"am_shork@proton.me"}],"homepage":"https://gitlab.com/Pseudorca/attest#readme","bugs":{"url":"https://gitlab.com/Pseudorca/attest/-/issues"},"bin":{"attest":"bin/attest.js"},"dist":{"shasum":"fb7c151e26097ca2ef06290c6abdba3bf378c063","tarball":"https://registry.npmjs.org/@am_shork/attest/-/attest-0.1.5.tgz","fileCount":73,"integrity":"sha512-uQrHfj0DRZL3S91RK73dFqvdWCY7yLiXCnhQygMBGrbuSdsokp5YC4ZvRILJTxFF5b01sAHZFDrD72SLARP1VA==","signatures":[{"sig":"MEYCIQD05EfVR8RV9L4t4XhHX06zfgYeaVBkOQHPfuxPhAv/HwIhAKYK2xW04HEoC2GJkwtZ5/usabqf9275k+J3R4pAZgx1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":123629},"type":"module","_from":"file:am_shork-attest-0.1.5.tgz","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./define":{"types":"./dist/core/registry.d.ts","default":"./dist/core/registry.js"}},"scripts":{"lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.json","attest":"node bin/attest.js","typecheck":"tsc -p tsconfig.json --noEmit","check:self":"node bin/attest.js check self","cover:self":"node bin/attest.js cover self","test:watch":"vitest","verify:self":"node bin/attest.js verify self","test:consumer":"pnpm run build && vitest run --config vitest.consumer.config.ts"},"_npmUser":{"name":"am_shork","email":"am_shork@proton.me"},"_resolved":"/tmp/180af83e684a2b07b3fd1b08ef91d7f2/am_shork-attest-0.1.5.tgz","_integrity":"sha512-uQrHfj0DRZL3S91RK73dFqvdWCY7yLiXCnhQygMBGrbuSdsokp5YC4ZvRILJTxFF5b01sAHZFDrD72SLARP1VA==","repository":{"url":"git+https://gitlab.com/Pseudorca/attest.git","type":"git"},"_npmVersion":"10.9.8","description":"TDD-native spec framework: tests are the source of truth for verification, ID-bound requirements the source of truth for intent.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^3.23.0","chalk":"^5.3.0","commander":"^12.1.0","typescript":"^5.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.0","eslint":"^9.9.0","vitest":"^2.0.0","@eslint/js":"^9.9.0","@types/node":"^20.19.0","typescript-eslint":"^8.2.0"},"peerDependencies":{"vite":"^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0","vitest":"^2.0.0 || ^3.0.0 || ^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/attest_0.1.5_1784869662916_0.04406412836385187","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@am_shork/attest","version":"0.1.6","keywords":["tdd","spec","requirements","drift","vitest"],"license":"MIT","_id":"@am_shork/attest@0.1.6","maintainers":[{"name":"am_shork","email":"am_shork@proton.me"}],"homepage":"https://gitlab.com/Pseudorca/attest#readme","bugs":{"url":"https://gitlab.com/Pseudorca/attest/-/issues"},"bin":{"attest":"bin/attest.js"},"dist":{"shasum":"b0d8274d025e42369bb92d925b88a0706ec526a4","tarball":"https://registry.npmjs.org/@am_shork/attest/-/attest-0.1.6.tgz","fileCount":77,"integrity":"sha512-FgA5V8IHPssRPAb/25j/ShoBIQUm4QsWD12zYsOd0EQ56EEh6oZEqQk13GXH7lGF3/NtnxoKG9eaVDHKLVt2XA==","signatures":[{"sig":"MEUCIAL7P5wm3u8MV/nXR7sLlr6Ez9bX9nL+hfjwSCvnWY6xAiEAzysdefoDrhD18B/2hnbzLui0QN7jfUEdW5TGqu8titE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":161059},"type":"module","_from":"file:am_shork-attest-0.1.6.tgz","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./define":{"types":"./dist/core/registry.d.ts","default":"./dist/core/registry.js"}},"scripts":{"lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.json","attest":"node bin/attest.js","typecheck":"tsc -p tsconfig.json --noEmit","check:self":"node bin/attest.js check self","cover:self":"node bin/attest.js cover self","test:watch":"vitest","render:self":"node bin/attest.js render self --out self/requirements/SPEC.md","verify:self":"node bin/attest.js verify self","test:consumer":"pnpm run build && vitest run --config vitest.consumer.config.ts","render:self:check":"node bin/attest.js render self --out self/requirements/SPEC.md --check"},"_npmUser":{"name":"am_shork","email":"am_shork@proton.me"},"_resolved":"/tmp/141d2b6ed5393540c2aaf6b71b82f668/am_shork-attest-0.1.6.tgz","_integrity":"sha512-FgA5V8IHPssRPAb/25j/ShoBIQUm4QsWD12zYsOd0EQ56EEh6oZEqQk13GXH7lGF3/NtnxoKG9eaVDHKLVt2XA==","repository":{"url":"git+https://gitlab.com/Pseudorca/attest.git","type":"git"},"_npmVersion":"10.9.8","description":"TDD-native spec framework: tests are the source of truth for verification, ID-bound requirements the source of truth for intent.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^3.23.0","chalk":"^5.3.0","commander":"^12.1.0","typescript":"^5.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.0","eslint":"^9.9.0","vitest":"^2.0.0","@eslint/js":"^9.9.0","@types/node":"^20.19.0","typescript-eslint":"^8.2.0"},"peerDependencies":{"vite":"^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0","vitest":"^2.0.0 || ^3.0.0 || ^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/attest_0.1.6_1784960002368_0.5220786036771021","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@am_shork/attest","version":"0.1.7","keywords":["tdd","spec","requirements","drift","vitest"],"license":"MIT","_id":"@am_shork/attest@0.1.7","maintainers":[{"name":"am_shork","email":"am_shork@proton.me"}],"homepage":"https://gitlab.com/Pseudorca/attest#readme","bugs":{"url":"https://gitlab.com/Pseudorca/attest/-/issues"},"bin":{"attest":"bin/attest.js"},"dist":{"shasum":"f8c50de25a17c859a8b2b7fa96ae6e9ec56d1b5b","tarball":"https://registry.npmjs.org/@am_shork/attest/-/attest-0.1.7.tgz","fileCount":81,"integrity":"sha512-bvSlGbrkAAauniN0ldTZk88qhuSteufTDX5ku5jG7Rm8AynJmXnIQUwRVZdGHte8VK/xA8EG9iL+NM7OmFXsnw==","signatures":[{"sig":"MEUCICz5xFgMcN90JeTcU3sdhsQsX7XJkoUfUjH1sd9CbUi/AiEAryNhtt6+X8GlF9IjlesKqkwmrcZBnNQgpfRvQs2MjVU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":182588},"type":"module","_from":"file:am_shork-attest-0.1.7.tgz","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./define":{"types":"./dist/core/registry.d.ts","default":"./dist/core/registry.js"}},"scripts":{"lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.json","attest":"node bin/attest.js","typecheck":"tsc -p tsconfig.json --noEmit","check:self":"node bin/attest.js check self","cover:self":"node bin/attest.js cover self","test:watch":"vitest","render:self":"node bin/attest.js render self --out self/requirements/SPEC.md","verify:self":"node bin/attest.js verify self","test:consumer":"pnpm run build && vitest run --config vitest.consumer.config.ts","render:self:check":"node bin/attest.js render self --out self/requirements/SPEC.md --check"},"_npmUser":{"name":"am_shork","email":"am_shork@proton.me"},"_resolved":"/tmp/f0f0bb0b1cd75e6984f683f43c9a7c3e/am_shork-attest-0.1.7.tgz","_integrity":"sha512-bvSlGbrkAAauniN0ldTZk88qhuSteufTDX5ku5jG7Rm8AynJmXnIQUwRVZdGHte8VK/xA8EG9iL+NM7OmFXsnw==","repository":{"url":"git+https://gitlab.com/Pseudorca/attest.git","type":"git"},"_npmVersion":"10.9.8","description":"TDD-native spec framework: tests are the source of truth for verification, ID-bound requirements the source of truth for intent.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^3.23.0","chalk":"^5.3.0","commander":"^12.1.0","typescript":"^5.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.0","eslint":"^9.9.0","vitest":"^2.0.0","@eslint/js":"^9.9.0","@types/node":"^20.19.0","typescript-eslint":"^8.2.0"},"peerDependencies":{"vite":"^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0","vitest":"^2.0.0 || ^3.0.0 || ^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/attest_0.1.7_1785001165661_0.717968260148665","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@am_shork/attest","version":"0.2.0","keywords":["tdd","spec","requirements","drift","vitest"],"license":"MIT","_id":"@am_shork/attest@0.2.0","maintainers":[{"name":"am_shork","email":"am_shork@proton.me"}],"homepage":"https://gitlab.com/Pseudorca/attest#readme","bugs":{"url":"https://gitlab.com/Pseudorca/attest/-/issues"},"bin":{"attest":"bin/attest.js"},"dist":{"shasum":"2e4d114e360277e976e6c8c97dc9c1537c4a5d17","tarball":"https://registry.npmjs.org/@am_shork/attest/-/attest-0.2.0.tgz","fileCount":85,"integrity":"sha512-HuMBqDyT/soKwNUHcGM9PYBZHPI53y4lm2MGzzDfeUEuHel1lmDdckxsPB+w0hr5514dvEDHQWy5bMVW09NjPA==","signatures":[{"sig":"MEQCIA+0cRwgF0kVGVBKbqlhOo+DqbvGXWgo1ChpB4N7ui6pAiBktMB+WXZ2oh3AyK3d3cgZyTgtO+FtjpoFEO4liHFV1Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":223212},"type":"module","_from":"file:am_shork-attest-0.2.0.tgz","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./define":{"types":"./dist/core/registry.d.ts","default":"./dist/core/registry.js"}},"scripts":{"lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.json","attest":"node bin/attest.js","typecheck":"tsc -p tsconfig.json --noEmit","check:self":"node bin/attest.js check self","cover:self":"node bin/attest.js cover self","test:watch":"vitest","render:self":"node bin/attest.js render self --out self/requirements/SPEC.md","verify:self":"node bin/attest.js verify self","test:consumer":"pnpm run build && vitest run --config vitest.consumer.config.ts","render:self:check":"node bin/attest.js render self --out self/requirements/SPEC.md --check"},"_npmUser":{"name":"am_shork","email":"am_shork@proton.me"},"_resolved":"/tmp/1283dd9d14f58c869280a68e2d31b132/am_shork-attest-0.2.0.tgz","_integrity":"sha512-HuMBqDyT/soKwNUHcGM9PYBZHPI53y4lm2MGzzDfeUEuHel1lmDdckxsPB+w0hr5514dvEDHQWy5bMVW09NjPA==","repository":{"url":"git+https://gitlab.com/Pseudorca/attest.git","type":"git"},"_npmVersion":"10.9.8","description":"TDD-native spec framework: tests are the source of truth for verification, ID-bound requirements the source of truth for intent.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^3.23.0","chalk":"^5.3.0","commander":"^12.1.0","typescript":"^5.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.0","eslint":"^9.9.0","vitest":"^2.0.0","@eslint/js":"^9.9.0","@types/node":"^20.19.0","typescript-eslint":"^8.2.0"},"peerDependencies":{"vite":"^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0","vitest":"^2.0.0 || ^3.0.0 || ^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/attest_0.2.0_1785047696545_0.46157271720088056","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@am_shork/attest","version":"0.2.1","keywords":["tdd","spec","requirements","drift","vitest"],"license":"MIT","_id":"@am_shork/attest@0.2.1","maintainers":[{"name":"am_shork","email":"am_shork@proton.me"}],"homepage":"https://gitlab.com/Pseudorca/attest#readme","bugs":{"url":"https://gitlab.com/Pseudorca/attest/-/issues"},"bin":{"attest":"bin/attest.js"},"dist":{"shasum":"5f9dedfe659bae4406fdb20981e7ef65287c5660","tarball":"https://registry.npmjs.org/@am_shork/attest/-/attest-0.2.1.tgz","fileCount":85,"integrity":"sha512-eq/d6UHargerP8onxkHK06DbS07TCVd4e7IS24IIwe7owdezGWpQRRcK4D47lqcwoUkWRCOzdKVCj4lxcXDGWw==","signatures":[{"sig":"MEUCIBwmtyupUXcDRm2u/u2GekqHbZ9F1v60AtTs3WqX+G9SAiEAy32VWzGXzkPzwnPa9Gc4BwJXTtcAtnqja5jv+XSJ/JE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":240585},"type":"module","_from":"file:am_shork-attest-0.2.1.tgz","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./define":{"types":"./dist/core/registry.d.ts","default":"./dist/core/registry.js"}},"scripts":{"lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.json","attest":"node bin/attest.js","typecheck":"tsc -p tsconfig.json --noEmit","check:self":"node bin/attest.js check self","cover:self":"node bin/attest.js cover self","test:watch":"vitest","render:self":"node bin/attest.js render self --out self/requirements/SPEC.md","verify:self":"node bin/attest.js verify self","test:consumer":"pnpm run build && vitest run --config vitest.consumer.config.ts","typecheck:all":"tsc -p tsconfig.typecheck.json","render:self:check":"node bin/attest.js render self --out self/requirements/SPEC.md --check"},"_npmUser":{"name":"am_shork","email":"am_shork@proton.me"},"_resolved":"/tmp/26ba8da377d0189425cf4820e538adfb/am_shork-attest-0.2.1.tgz","_integrity":"sha512-eq/d6UHargerP8onxkHK06DbS07TCVd4e7IS24IIwe7owdezGWpQRRcK4D47lqcwoUkWRCOzdKVCj4lxcXDGWw==","repository":{"url":"git+https://gitlab.com/Pseudorca/attest.git","type":"git"},"_npmVersion":"10.9.8","description":"TDD-native spec framework: tests are the source of truth for verification, ID-bound requirements the source of truth for intent.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^3.23.0","chalk":"^5.3.0","commander":"^12.1.0","typescript":"^5.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.0","eslint":"^9.9.0","vitest":"^2.0.0","@eslint/js":"^9.9.0","@types/node":"^20.19.0","typescript-eslint":"^8.2.0"},"peerDependencies":{"vite":"^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0","vitest":"^2.0.0 || ^3.0.0 || ^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/attest_0.2.1_1785064736899_0.7275073106236833","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@am_shork/attest","version":"0.2.2","keywords":["tdd","spec","requirements","drift","vitest"],"license":"MIT","_id":"@am_shork/attest@0.2.2","maintainers":[{"name":"am_shork","email":"am_shork@proton.me"}],"homepage":"https://gitlab.com/Pseudorca/attest#readme","bugs":{"url":"https://gitlab.com/Pseudorca/attest/-/issues"},"bin":{"attest":"bin/attest.js"},"dist":{"shasum":"3316d476efbdf18a400a4472003fd2320078e652","tarball":"https://registry.npmjs.org/@am_shork/attest/-/attest-0.2.2.tgz","fileCount":85,"integrity":"sha512-QeMJT3dwS3Oa0VHKdATfDhp4bZVdQ7R3YD9YAUl/XsuQgorfpCVQt8MB+RnXE3I21kfxos+N2k3JQ2iwT4trmg==","signatures":[{"sig":"MEUCIQDQqIB2vALnRhZDJ7FZwM4ZM5H0CVXODF4lOASrZsJ2LQIgWDM4hLR+TehjG5qM2e038zYmtAj1g6L63N2uEXANupI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":248321},"type":"module","_from":"file:am_shork-attest-0.2.2.tgz","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./define":{"types":"./dist/core/registry.d.ts","default":"./dist/core/registry.js"}},"scripts":{"lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.json","attest":"node bin/attest.js","typecheck":"tsc -p tsconfig.json --noEmit","check:self":"node bin/attest.js check self","cover:self":"node bin/attest.js cover self","test:watch":"vitest","render:self":"node bin/attest.js render self --out self/requirements/SPEC.md","verify:self":"node bin/attest.js verify self","test:consumer":"pnpm run build && vitest run --config vitest.consumer.config.ts","typecheck:all":"tsc -p tsconfig.typecheck.json","render:self:check":"node bin/attest.js render self --out self/requirements/SPEC.md --check"},"_npmUser":{"name":"am_shork","email":"am_shork@proton.me"},"_resolved":"/tmp/49fcfaeced5dcd608008a9a02822fab3/am_shork-attest-0.2.2.tgz","_integrity":"sha512-QeMJT3dwS3Oa0VHKdATfDhp4bZVdQ7R3YD9YAUl/XsuQgorfpCVQt8MB+RnXE3I21kfxos+N2k3JQ2iwT4trmg==","repository":{"url":"git+https://gitlab.com/Pseudorca/attest.git","type":"git"},"_npmVersion":"10.9.8","description":"TDD-native spec framework: tests are the source of truth for verification, ID-bound requirements the source of truth for intent.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^3.23.0","chalk":"^5.3.0","commander":"^12.1.0","typescript":"^5.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.0","eslint":"^9.9.0","vitest":"^2.0.0","@eslint/js":"^9.9.0","@types/node":"^20.19.0","typescript-eslint":"^8.2.0"},"peerDependencies":{"vite":"^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0","vitest":"^2.0.0 || ^3.0.0 || ^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/attest_0.2.2_1785078931087_0.10938988004372407","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@am_shork/attest","version":"0.3.0","keywords":["tdd","spec","requirements","drift","vitest"],"license":"MIT","_id":"@am_shork/attest@0.3.0","maintainers":[{"name":"am_shork","email":"am_shork@proton.me"}],"homepage":"https://gitlab.com/Pseudorca/attest#readme","bugs":{"url":"https://gitlab.com/Pseudorca/attest/-/issues"},"bin":{"attest":"bin/attest.js"},"dist":{"shasum":"e3a8f7dddd92ad8603a39faa96ba1beb33d9be57","tarball":"https://registry.npmjs.org/@am_shork/attest/-/attest-0.3.0.tgz","fileCount":109,"integrity":"sha512-1PRxIHVxqsyn0eAiH7ATQsP3CEdS07rHTbyYvwCT/CMjkcieTQN6k/1YMss63sXEHOBsCdOdD74EaL6qwNYrvw==","signatures":[{"sig":"MEYCIQCTi8l5nNgNcNFCgrxlY0r3LvlKQR2+/ENkV23U6u7g+wIhAKAGkCxzgslCaqiTU7zSA6meAqS/A7glRrvzPRjLvETY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":398268},"type":"module","_from":"file:am_shork-attest-0.3.0.tgz","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./define":{"types":"./dist/core/registry.d.ts","default":"./dist/core/registry.js"}},"scripts":{"lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.json","attest":"node bin/attest.js","typecheck":"tsc -p tsconfig.json --noEmit","check:self":"node bin/attest.js check self","cover:self":"node bin/attest.js cover self","test:watch":"vitest","render:self":"node bin/attest.js render self --out self/requirements/SPEC.md","verify:self":"node bin/attest.js verify self","test:consumer":"pnpm run build && vitest run --config vitest.consumer.config.ts","typecheck:all":"tsc -p tsconfig.typecheck.json","render:self:check":"node bin/attest.js render self --out self/requirements/SPEC.md --check"},"_npmUser":{"name":"am_shork","email":"am_shork@proton.me"},"_resolved":"/tmp/edc4a5c9af699a9438bb0000fbd6d02f/am_shork-attest-0.3.0.tgz","_integrity":"sha512-1PRxIHVxqsyn0eAiH7ATQsP3CEdS07rHTbyYvwCT/CMjkcieTQN6k/1YMss63sXEHOBsCdOdD74EaL6qwNYrvw==","repository":{"url":"git+https://gitlab.com/Pseudorca/attest.git","type":"git"},"_npmVersion":"10.9.8","description":"TDD-native spec framework: tests are the source of truth for verification, ID-bound requirements the source of truth for intent.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^3.23.0","chalk":"^5.3.0","commander":"^12.1.0","typescript":"^5.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.4.0","eslint":"^9.9.0","vitest":"^2.0.0","@eslint/js":"^9.9.0","@types/node":"^20.19.0","typescript-eslint":"^8.2.0"},"peerDependencies":{"vite":"^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0","vitest":"^2.0.0 || ^3.0.0 || ^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/attest_0.3.0_1785151950260_0.5293621860022553","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@am_shork/attest","version":"0.4.0","keywords":["tdd","spec","requirements","drift","vitest"],"license":"MIT","_id":"@am_shork/attest@0.4.0","maintainers":[{"name":"am_shork","email":"am_shork@proton.me"}],"homepage":"https://gitlab.com/Pseudorca/attest#readme","bugs":{"url":"https://gitlab.com/Pseudorca/attest/-/issues"},"bin":{"attest":"bin/attest.js"},"dist":{"shasum":"e525aaee9d3e04cf94e757555f02d967ac3aba80","tarball":"https://registry.npmjs.org/@am_shork/attest/-/attest-0.4.0.tgz","fileCount":109,"integrity":"sha512-nlSoOy1zAoRc/A++cQAx5vJH8YftILtRDYzNqazAx76DTurnnsYxuHglPU36p3jkfmBZtiFgLQJdtjv2ALraqA==","signatures":[{"sig":"MEUCIFodLy7bTOtzATStY6lHcpjTkHm0ElPjZIezxOqE9oYdAiEAwiP+6UnqZuUe5RAmJsrFzYbCABYaDb8NGg1EZE4AWkQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":438282},"type":"module","_from":"file:am_shork-attest-0.4.0.tgz","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./define":{"types":"./dist/core/registry.d.ts","default":"./dist/core/registry.js"}},"scripts":{"lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.json","attest":"node bin/attest.js","typecheck":"tsc -p tsconfig.json --noEmit","check:self":"node bin/attest.js check self","cover:self":"node bin/attest.js cover self","test:watch":"vitest","render:self":"node bin/attest.js render self --out self/requirements/SPEC.md","verify:self":"node bin/attest.js verify self","test:consumer":"pnpm run build && vitest run --config vitest.consumer.config.ts","typecheck:all":"tsc -p tsconfig.typecheck.json","render:self:check":"node bin/attest.js render self --out self/requirements/SPEC.md --check"},"_npmUser":{"name":"am_shork","email":"am_shork@proton.me"},"_resolved":"/tmp/cb63193f1d96a9426cfdee132ce4a6b0/am_shork-attest-0.4.0.tgz","_integrity":"sha512-nlSoOy1zAoRc/A++cQAx5vJH8YftILtRDYzNqazAx76DTurnnsYxuHglPU36p3jkfmBZtiFgLQJdtjv2ALraqA==","repository":{"url":"git+https://gitlab.com/Pseudorca/attest.git","type":"git"},"_npmVersion":"10.9.8","description":"TDD-native spec framework: tests are the source of truth for verification, ID-bound requirements the source of truth for intent.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^3.23.0","chalk":"^5.3.0","commander":"^12.1.0","typescript":"^5.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.1.5","eslint":"^9.9.0","vitest":"^4.1.10","@eslint/js":"^9.9.0","@types/node":"^20.19.0","typescript-eslint":"^8.2.0"},"peerDependencies":{"vite":"^8.0.0","vitest":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/attest_0.4.0_1785224926318_0.9370814530614398","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@am_shork/attest","version":"0.4.1","keywords":["tdd","spec","requirements","drift","vitest"],"license":"MIT","_id":"@am_shork/attest@0.4.1","maintainers":[{"name":"am_shork","email":"am_shork@proton.me"}],"homepage":"https://gitlab.com/Pseudorca/attest#readme","bugs":{"url":"https://gitlab.com/Pseudorca/attest/-/issues"},"bin":{"attest":"bin/attest.js"},"dist":{"shasum":"e644655f7f3a5b2d316433a071d8d8dfe6fa84f7","tarball":"https://registry.npmjs.org/@am_shork/attest/-/attest-0.4.1.tgz","fileCount":113,"integrity":"sha512-8iETXVTT0/USijmIo9hMlwczEdgw+Xlj+DfM/lZtvLZ96XlbYrukeV7lTRqhEQLpqTsj7jpl9kjchim6pDdpQg==","signatures":[{"sig":"MEYCIQCQnFh8+WskOIcHQDdRQQRrFXopVlSBQgTNv/1QmsKnlgIhANTwjKQHrjM01omeMD7SvyXATzuK/xLR4j4ftHU6Om/5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":444400},"type":"module","_from":"file:am_shork-attest-0.4.1.tgz","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./define":{"types":"./dist/core/registry.d.ts","default":"./dist/core/registry.js"}},"scripts":{"lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.json","attest":"node bin/attest.js","typecheck":"tsc -p tsconfig.json --noEmit","check:self":"node bin/attest.js check self","cover:self":"node bin/attest.js cover self","test:watch":"vitest","render:self":"node bin/attest.js render self --out self/requirements/SPEC.md","verify:self":"node bin/attest.js verify self","test:consumer":"pnpm run build && vitest run --config vitest.consumer.config.ts","typecheck:all":"tsc -p tsconfig.typecheck.json","render:self:check":"node bin/attest.js render self --out self/requirements/SPEC.md --check"},"_npmUser":{"name":"am_shork","email":"am_shork@proton.me"},"_resolved":"/tmp/a9e36d309e4963137809ce37bed0c340/am_shork-attest-0.4.1.tgz","_integrity":"sha512-8iETXVTT0/USijmIo9hMlwczEdgw+Xlj+DfM/lZtvLZ96XlbYrukeV7lTRqhEQLpqTsj7jpl9kjchim6pDdpQg==","repository":{"url":"git+https://gitlab.com/Pseudorca/attest.git","type":"git"},"_npmVersion":"10.9.8","description":"TDD-native spec framework: tests are the source of truth for verification, ID-bound requirements the source of truth for intent.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^3.23.0","chalk":"^5.3.0","commander":"^12.1.0","typescript":"^5.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.1.5","eslint":"^9.9.0","vitest":"^4.1.10","@eslint/js":"^9.9.0","@types/node":"^20.19.0","typescript-eslint":"^8.2.0"},"peerDependencies":{"vite":"^8.0.0","vitest":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/attest_0.4.1_1785301127451_0.032546514171514884","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@am_shork/attest","version":"0.4.2","keywords":["tdd","spec","requirements","drift","vitest"],"license":"MIT","_id":"@am_shork/attest@0.4.2","maintainers":[{"name":"am_shork","email":"am_shork@proton.me"}],"homepage":"https://gitlab.com/Pseudorca/attest#readme","bugs":{"url":"https://gitlab.com/Pseudorca/attest/-/issues"},"bin":{"attest":"bin/attest.js"},"dist":{"shasum":"e75482a7d5ca84312b537644ab0e95c22ed0924a","tarball":"https://registry.npmjs.org/@am_shork/attest/-/attest-0.4.2.tgz","fileCount":61,"integrity":"sha512-5yyfyADibMo2Oxa90YMp0EPMfjnJxQBlLiOQf8mxcYa91KAoXkphlsY527dU++Xwyx530KErVj+/haNw8FNKpQ==","signatures":[{"sig":"MEQCID9rRYwyyppuIWJWw1uXAFXXeTFY4p0fQeLdk61I6XxtAiA3Ppaa8mH/GFzhXgjGtTiv/F/pNiLAwtsQMdL9vyN0yw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":397164},"type":"module","_from":"file:am_shork-attest-0.4.2.tgz","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./define":{"types":"./dist/core/registry.d.ts","default":"./dist/core/registry.js"}},"scripts":{"lint":"eslint .","test":"vitest run","build":"pnpm run clean && tsc -p tsconfig.json","clean":"node -e \"require('fs').rmSync('dist', {recursive: true, force: true})\"","attest":"node bin/attest.js","typecheck":"tsc -p tsconfig.json --noEmit","check:self":"node bin/attest.js check self","cover:self":"node bin/attest.js cover self","test:watch":"vitest","render:self":"node bin/attest.js render self --out self/requirements/SPEC.md","verify:self":"node bin/attest.js verify self","test:consumer":"pnpm run build && vitest run --config vitest.consumer.config.ts","typecheck:all":"tsc -p tsconfig.typecheck.json","render:self:check":"node bin/attest.js render self --out self/requirements/SPEC.md --check"},"_npmUser":{"name":"am_shork","email":"am_shork@proton.me"},"_resolved":"/tmp/7ef227cecfd51effedb933dd2d8cfad8/am_shork-attest-0.4.2.tgz","_integrity":"sha512-5yyfyADibMo2Oxa90YMp0EPMfjnJxQBlLiOQf8mxcYa91KAoXkphlsY527dU++Xwyx530KErVj+/haNw8FNKpQ==","repository":{"url":"git+https://gitlab.com/Pseudorca/attest.git","type":"git"},"_npmVersion":"10.9.8","description":"TDD-native spec framework: tests are the source of truth for verification, ID-bound requirements the source of truth for intent.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.23.0","chalk":"^5.3.0","commander":"^12.1.0","typescript":"^5.5.0 || ^6.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.1.5","eslint":"^9.9.0","vitest":"^4.1.10","@eslint/js":"^9.9.0","@types/node":"^20.19.0","typescript-eslint":"^8.2.0"},"peerDependencies":{"vite":"^8.0.0","vitest":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/attest_0.4.2_1785389623482_0.5209270211198791","host":"s3://npm-registry-packages-npm-production"}},"0.4.3":{"name":"@am_shork/attest","version":"0.4.3","keywords":["tdd","spec","requirements","drift","vitest"],"license":"MIT","_id":"@am_shork/attest@0.4.3","maintainers":[{"name":"am_shork","email":"am_shork@proton.me"}],"homepage":"https://gitlab.com/Pseudorca/attest#readme","bugs":{"url":"https://gitlab.com/Pseudorca/attest/-/issues"},"bin":{"attest":"bin/attest.js"},"dist":{"shasum":"ced53cf901c97e7e94f3b690801e852c05f9f17a","tarball":"https://registry.npmjs.org/@am_shork/attest/-/attest-0.4.3.tgz","fileCount":61,"integrity":"sha512-D1DmNWrCD9NlmRGapmS3OMJdfWBGCcD2qm0UJXOpOITkCd3f0bJEFQcrKt+/fi/vdqKhUehaq64HKrWejrd6bA==","signatures":[{"sig":"MEUCIHIIdsJ09381Q8Go8FNAfJb4NAsUHvkII99SLjqT2SwbAiEAx5FiOSliXWiJzzk3D+CwetuRw8UipSIVvnrae6zN0D0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":408860},"type":"module","_from":"file:am_shork-attest-0.4.3.tgz","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./define":{"types":"./dist/core/registry.d.ts","default":"./dist/core/registry.js"}},"scripts":{"lint":"eslint .","test":"vitest run","build":"pnpm run clean && tsc -p tsconfig.json","clean":"node -e \"require('fs').rmSync('dist', {recursive: true, force: true})\"","attest":"node bin/attest.js","typecheck":"tsc -p tsconfig.json --noEmit","check:self":"node bin/attest.js check self","cover:self":"node bin/attest.js cover self","test:watch":"vitest","render:self":"node bin/attest.js render self --out self/requirements/SPEC.md","verify:self":"node bin/attest.js verify self","test:consumer":"pnpm run build && vitest run --config vitest.consumer.config.ts","typecheck:all":"tsc -p tsconfig.typecheck.json","render:self:check":"node bin/attest.js render self --out self/requirements/SPEC.md --check"},"_npmUser":{"name":"am_shork","email":"am_shork@proton.me"},"_resolved":"/tmp/375a60a12982c05ffd242437eaaea4e4/am_shork-attest-0.4.3.tgz","_integrity":"sha512-D1DmNWrCD9NlmRGapmS3OMJdfWBGCcD2qm0UJXOpOITkCd3f0bJEFQcrKt+/fi/vdqKhUehaq64HKrWejrd6bA==","repository":{"url":"git+https://gitlab.com/Pseudorca/attest.git","type":"git"},"_npmVersion":"10.9.8","description":"TDD-native spec framework: tests are the source of truth for verification, ID-bound requirements the source of truth for intent.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.23.0","chalk":"^5.3.0","commander":"^12.1.0","typescript":"^5.5.0 || ^6.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.1.5","eslint":"^9.9.0","vitest":"^4.1.10","@eslint/js":"^9.9.0","@types/node":"^20.19.0","typescript-eslint":"^8.2.0"},"peerDependencies":{"vite":"^8.0.0","vitest":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/attest_0.4.3_1785547909820_0.9161429398107257","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@am_shork/attest","version":"0.5.0","keywords":["tdd","spec","requirements","drift","vitest"],"license":"MIT","_id":"@am_shork/attest@0.5.0","maintainers":[{"name":"am_shork","email":"am_shork@proton.me"}],"homepage":"https://gitlab.com/Pseudorca/attest#readme","bugs":{"url":"https://gitlab.com/Pseudorca/attest/-/issues"},"bin":{"attest":"bin/attest.js"},"dist":{"shasum":"4d21159bb8fa2d028baf47da178b0218ba7cc11a","tarball":"https://registry.npmjs.org/@am_shork/attest/-/attest-0.5.0.tgz","fileCount":61,"integrity":"sha512-x38ooLI/lb+5GyZPJf3FtHv6HrBN1FG5k+lp1sVAFVr8FuCx7Nbqyhm4CC8x8HEg+CPXhirKZ4fkbXfUqE+9Sg==","signatures":[{"sig":"MEYCIQCRGxlF1v4LDmHO5TKG1PeiJdUnTen2iRTx/JI/DURzZAIhALtusJ1EBXtRQl46qanhzd+ki5XfbYw8qHWVwRSRQarE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":464047},"type":"module","_from":"file:am_shork-attest-0.5.0.tgz","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./define":{"types":"./dist/core/registry.d.ts","default":"./dist/core/registry.js"}},"scripts":{"lint":"eslint .","test":"vitest run","build":"pnpm run clean && tsc -p tsconfig.json","clean":"node -e \"require('fs').rmSync('dist', {recursive: true, force: true})\"","attest":"node bin/attest.js","typecheck":"tsc -p tsconfig.json --noEmit","check:self":"node bin/attest.js check self","cover:self":"node bin/attest.js cover self","test:watch":"vitest","render:self":"node bin/attest.js render self --out self/requirements/SPEC.md","verify:self":"node bin/attest.js verify self","test:consumer":"pnpm run build && vitest run --config vitest.consumer.config.ts","typecheck:all":"tsc -p tsconfig.typecheck.json","render:self:check":"node bin/attest.js render self --out self/requirements/SPEC.md --check"},"_npmUser":{"name":"am_shork","email":"am_shork@proton.me"},"_resolved":"/tmp/cb39b65c7b104888246d89537aefe611/am_shork-attest-0.5.0.tgz","_integrity":"sha512-x38ooLI/lb+5GyZPJf3FtHv6HrBN1FG5k+lp1sVAFVr8FuCx7Nbqyhm4CC8x8HEg+CPXhirKZ4fkbXfUqE+9Sg==","repository":{"url":"git+https://gitlab.com/Pseudorca/attest.git","type":"git"},"_npmVersion":"10.9.8","description":"TDD-native spec framework: tests are the source of truth for verification, ID-bound requirements the source of truth for intent.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.23.0","chalk":"^5.3.0","commander":"^12.1.0","typescript":"^5.5.0 || ^6.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.1.5","eslint":"^9.9.0","vitest":"^4.1.10","@eslint/js":"^9.9.0","@types/node":"^20.19.0","typescript-eslint":"^8.2.0"},"peerDependencies":{"vite":"^8.0.0","vitest":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/attest_0.5.0_1785731279824_0.08314404499702421","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@am_shork/attest","version":"0.6.0","keywords":["tdd","spec","requirements","drift","vitest"],"license":"MIT","_id":"@am_shork/attest@0.6.0","maintainers":[{"name":"am_shork","email":"am_shork@proton.me"}],"homepage":"https://gitlab.com/Pseudorca/attest#readme","bugs":{"url":"https://gitlab.com/Pseudorca/attest/-/issues"},"bin":{"attest":"bin/attest.js"},"dist":{"shasum":"af93e041a3bc710e1c13e943efd5cc97974d6e7c","tarball":"https://registry.npmjs.org/@am_shork/attest/-/attest-0.6.0.tgz","fileCount":67,"integrity":"sha512-iblwU1wYJ8q0wHxG6oFgLA07q+dqz8qZzvBTE4GKrMYnl66KAWjhsrgmEZGXk7a6G7S5nsfNPxNkS1hSrmrTQA==","signatures":[{"sig":"MEYCIQCWN2l3iTDIYz+f06GcWSOz2fJipVxkrb4RnKP0wgWxZAIhAILMcCUTlQKqynJXevzWaCu2ZPT3kQcRuwe/XSGn3vlN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":522572},"type":"module","_from":"file:am_shork-attest-0.6.0.tgz","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./define":{"types":"./dist/core/registry.d.ts","default":"./dist/core/registry.js"}},"scripts":{"lint":"eslint .","test":"vitest run","build":"pnpm run clean && tsc -p tsconfig.json","clean":"node -e \"require('fs').rmSync('dist', {recursive: true, force: true})\"","attest":"node bin/attest.js","typecheck":"tsc -p tsconfig.json --noEmit","check:self":"node bin/attest.js check self","cover:self":"node bin/attest.js cover self","test:watch":"vitest","render:self":"node bin/attest.js render self --out self/requirements/SPEC.md","verify:self":"node bin/attest.js verify self","test:consumer":"pnpm run build && vitest run --config vitest.consumer.config.ts","typecheck:all":"tsc -p tsconfig.typecheck.json","render:self:check":"node bin/attest.js render self --out self/requirements/SPEC.md --check"},"_npmUser":{"name":"am_shork","email":"am_shork@proton.me"},"_resolved":"/tmp/1a199ddf718bea231e24ed274e653faf/am_shork-attest-0.6.0.tgz","_integrity":"sha512-iblwU1wYJ8q0wHxG6oFgLA07q+dqz8qZzvBTE4GKrMYnl66KAWjhsrgmEZGXk7a6G7S5nsfNPxNkS1hSrmrTQA==","repository":{"url":"git+https://gitlab.com/Pseudorca/attest.git","type":"git"},"_npmVersion":"10.9.8","description":"TDD-native spec framework: tests are the source of truth for verification, ID-bound requirements the source of truth for intent.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.23.0","chalk":"^5.3.0","commander":"^12.1.0","typescript":"^5.5.0 || ^6.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.1.5","eslint":"^9.9.0","vitest":"^4.1.10","@eslint/js":"^9.9.0","@types/node":"^20.19.0","typescript-eslint":"^8.2.0"},"peerDependencies":{"vite":"^8.0.0","vitest":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/attest_0.6.0_1785753485198_0.23716995643861472","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@am_shork/attest","version":"0.7.0","keywords":["tdd","spec","requirements","drift","vitest"],"license":"MIT","_id":"@am_shork/attest@0.7.0","maintainers":[{"name":"am_shork","email":"am_shork@proton.me"}],"homepage":"https://gitlab.com/Pseudorca/attest#readme","bugs":{"url":"https://gitlab.com/Pseudorca/attest/-/issues"},"bin":{"attest":"bin/attest.js"},"dist":{"shasum":"a9b7bffb2fa79ca462d048d3e53b01f72b612de7","tarball":"https://registry.npmjs.org/@am_shork/attest/-/attest-0.7.0.tgz","fileCount":69,"integrity":"sha512-wAQv7hG7yuTmAXNkUzjMMY06H6/wQoA6XELLYcwVcr9bfmqunenamQIIckA4eNltoQaol0XU7QCrg8gSaPh2Dw==","signatures":[{"sig":"MEQCIFz22G6wN+DjF2tyTVKcLncJiuWvEl5QUXsKoKkFg1AnAiBPYFVUP0AgU+LlCXrsny0Tvu0gwflqlmO64t8VWfM8aQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":618994},"type":"module","_from":"file:am_shork-attest-0.7.0.tgz","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./define":{"types":"./dist/core/registry.d.ts","default":"./dist/core/registry.js"}},"scripts":{"lint":"eslint .","test":"vitest run","build":"pnpm run clean && tsc -p tsconfig.json","clean":"node -e \"require('fs').rmSync('dist', {recursive: true, force: true})\"","attest":"node bin/attest.js","typecheck":"tsc -p tsconfig.json --noEmit","check:self":"node bin/attest.js check self","cover:self":"node bin/attest.js cover self","test:watch":"vitest","render:self":"node bin/attest.js render self --out self/requirements/SPEC.md","verify:self":"node bin/attest.js verify self","test:consumer":"pnpm run build && vitest run --config vitest.consumer.config.ts","typecheck:all":"tsc -p tsconfig.typecheck.json","render:self:check":"node bin/attest.js render self --out self/requirements/SPEC.md --check"},"_npmUser":{"name":"am_shork","email":"am_shork@proton.me"},"_resolved":"/tmp/8e743731b8ccaa5fd5b93d782ac8bda1/am_shork-attest-0.7.0.tgz","_integrity":"sha512-wAQv7hG7yuTmAXNkUzjMMY06H6/wQoA6XELLYcwVcr9bfmqunenamQIIckA4eNltoQaol0XU7QCrg8gSaPh2Dw==","repository":{"url":"git+https://gitlab.com/Pseudorca/attest.git","type":"git"},"_npmVersion":"10.9.8","description":"TDD-native spec framework: tests are the source of truth for verification, ID-bound requirements the source of truth for intent.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.23.0","chalk":"^5.3.0","commander":"^12.1.0","typescript":"^5.5.0 || ^6.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.1.5","eslint":"^9.9.0","vitest":"^4.1.10","@eslint/js":"^9.9.0","@types/node":"^20.19.0","typescript-eslint":"^8.2.0"},"peerDependencies":{"vite":"^8.0.0","vitest":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/attest_0.7.0_1785841006060_0.05991882351770417","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"@am_shork/attest","version":"0.7.1","keywords":["tdd","spec","requirements","drift","vitest"],"license":"MIT","_id":"@am_shork/attest@0.7.1","maintainers":[{"name":"am_shork","email":"am_shork@proton.me"}],"homepage":"https://gitlab.com/Pseudorca/attest#readme","bugs":{"url":"https://gitlab.com/Pseudorca/attest/-/issues"},"bin":{"attest":"bin/attest.js"},"dist":{"shasum":"11d4d2938cf15b2ce561f15323369c7f9a94a0c8","tarball":"https://registry.npmjs.org/@am_shork/attest/-/attest-0.7.1.tgz","fileCount":69,"integrity":"sha512-AwjZdPkuhhhToo+ebg82805YJBH8m80hCywEusQkHznhzV/+7wmJkeoEeXmk5w2ueowMiUTYAC8d4hYhe2AylQ==","signatures":[{"sig":"MEUCIQDej+rYrIf/l8bxvaGbGCi/hZuOeUGYK10tbOvKUKZV4wIgBk3RzlJyAvem/hSof1bQEeGMfF4rBjFo/DdLXuSHccw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":638664},"type":"module","_from":"file:am_shork-attest-0.7.1.tgz","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./define":{"types":"./dist/core/registry.d.ts","default":"./dist/core/registry.js"}},"scripts":{"lint":"eslint .","test":"vitest run","build":"pnpm run clean && tsc -p tsconfig.json","clean":"node -e \"require('fs').rmSync('dist', {recursive: true, force: true})\"","attest":"node bin/attest.js","typecheck":"tsc -p tsconfig.json --noEmit","check:self":"node bin/attest.js check self","cover:self":"node bin/attest.js cover self","test:watch":"vitest","render:self":"node bin/attest.js render self --out self/requirements/SPEC.md","verify:self":"node bin/attest.js verify self","test:consumer":"pnpm run build && vitest run --config vitest.consumer.config.ts","typecheck:all":"tsc -p tsconfig.typecheck.json","render:self:check":"node bin/attest.js render self --out self/requirements/SPEC.md --check"},"_npmUser":{"name":"am_shork","email":"am_shork@proton.me"},"_resolved":"/tmp/feeaeb3090d5fa3ea68dd0f785e2557e/am_shork-attest-0.7.1.tgz","_integrity":"sha512-AwjZdPkuhhhToo+ebg82805YJBH8m80hCywEusQkHznhzV/+7wmJkeoEeXmk5w2ueowMiUTYAC8d4hYhe2AylQ==","repository":{"url":"git+https://gitlab.com/Pseudorca/attest.git","type":"git"},"_npmVersion":"10.9.8","description":"TDD-native spec framework: tests are the source of truth for verification, ID-bound requirements the source of truth for intent.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.23.0","chalk":"^5.3.0","commander":"^12.1.0","typescript":"^5.5.0 || ^6.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.1.5","eslint":"^9.9.0","vitest":"^4.1.10","@eslint/js":"^9.9.0","@types/node":"^20.19.0","typescript-eslint":"^8.2.0"},"peerDependencies":{"vite":"^8.0.0","vitest":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/attest_0.7.1_1785925624831_0.39531774030562006","host":"s3://npm-registry-packages-npm-production"}},"0.7.2":{"name":"@am_shork/attest","version":"0.7.2","keywords":["tdd","spec","requirements","drift","vitest"],"license":"MIT","_id":"@am_shork/attest@0.7.2","maintainers":[{"name":"am_shork","email":"am_shork@proton.me"}],"homepage":"https://gitlab.com/Pseudorca/attest#readme","bugs":{"url":"https://gitlab.com/Pseudorca/attest/-/issues"},"bin":{"attest":"bin/attest.js"},"dist":{"shasum":"fc4ba420c056c4d0b23e2211b5facad54063b7ca","tarball":"https://registry.npmjs.org/@am_shork/attest/-/attest-0.7.2.tgz","fileCount":71,"integrity":"sha512-mtsZkht3QcffrqpqSxmi7pPg5302bLABktuujnRhNYFh59XOD94ltvLaqupESHsP+vQWQoFqKX9zR3qwNCw4cg==","signatures":[{"sig":"MEUCIQCj0HZRQFe/2DXXT2D1mG3xBIUbOuy2fWSVkmbWTMc6jwIgEKOmb4rEQNs35kU0GlNHWoNgT7kbJwBaM6+Y8oESFQs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@am_shork%2fattest@0.7.2","provenance":{"predicateType":"https://slsa.dev/provenance/v0.2"}},"unpackedSize":669756},"pnpm":{"overrides":{"js-yaml@<4.3.1":">=4.3.1","brace-expansion@<5.0.9":">=5.0.9"},"onlyBuiltDependencies":["esbuild"]},"type":"module","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./define":{"types":"./dist/core/registry.d.ts","default":"./dist/core/registry.js"}},"gitHead":"f2dd51b8668ed833f1254311ae93c88cf4cafbbb","scripts":{"lint":"eslint .","test":"vitest run","build":"pnpm run clean && tsc -p tsconfig.json","clean":"node -e \"require('fs').rmSync('dist', {recursive: true, force: true})\"","attest":"node bin/attest.js","prepack":"pnpm run build","typecheck":"tsc -p tsconfig.json --noEmit","check:self":"node bin/attest.js check self","cover:self":"node bin/attest.js cover self","test:watch":"vitest","render:self":"node bin/attest.js render self --out self/requirements/SPEC.md","verify:self":"node bin/attest.js verify self","test:consumer":"pnpm run build && vitest run --config vitest.consumer.config.ts","typecheck:all":"tsc -p tsconfig.typecheck.json","prepublishOnly":"pnpm run test:consumer","render:self:check":"node bin/attest.js render self --out self/requirements/SPEC.md --check"},"_npmUser":{"name":"am_shork","email":"am_shork@proton.me"},"repository":{"url":"git+https://gitlab.com/Pseudorca/attest.git","type":"git"},"_npmVersion":"10.9.8","description":"TDD-native spec framework: tests are the source of truth for verification, ID-bound requirements the source of truth for intent.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.23.0","chalk":"^5.3.0","commander":"^12.1.0","typescript":"^5.5.0 || ^6.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.28.0","devDependencies":{"vite":"^8.1.5","eslint":"^9.9.0","vitest":"^4.1.10","@eslint/js":"^9.9.0","@types/node":"^20.19.0","typescript-eslint":"^8.2.0"},"peerDependencies":{"vite":"^8.0.0","vitest":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/attest_0.7.2_1786077553998_0.0780633189825457","host":"s3://npm-registry-packages-npm-production"}},"0.7.3":{"name":"@am_shork/attest","version":"0.7.3","keywords":["tdd","spec","requirements","drift","vitest"],"license":"MIT","_id":"@am_shork/attest@0.7.3","maintainers":[{"name":"am_shork","email":"am_shork@proton.me"}],"homepage":"https://gitlab.com/Pseudorca/attest#readme","bugs":{"url":"https://gitlab.com/Pseudorca/attest/-/issues"},"bin":{"attest":"bin/attest.js"},"dist":{"shasum":"4305c6ef15796deb55f266f5d3602ce838b5b828","tarball":"https://registry.npmjs.org/@am_shork/attest/-/attest-0.7.3.tgz","fileCount":71,"integrity":"sha512-0B3Sc9R6iOP0P6HxW0xQs6E9nRDgBa5E5GjX3A9Tv5AcIosZZY+05Lc19Np3buBkKrad/k0hFl+Y0KT8c6LYZw==","signatures":[{"sig":"MEQCICttzFoEAsTSfxADEyIfYteFk1s3Py9m8xS6FrY1DDKUAiB5eU1RoIvFl6XBi24db9x5vYKn3mgD8wYtHEaytbK4HA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@am_shork%2fattest@0.7.3","provenance":{"predicateType":"https://slsa.dev/provenance/v0.2"}},"unpackedSize":700598},"type":"module","_from":"file:am_shork-attest-0.7.3.tgz","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./define":{"types":"./dist/core/registry.d.ts","default":"./dist/core/registry.js"}},"scripts":{"lint":"eslint .","test":"vitest run","build":"pnpm run clean && tsc -p tsconfig.json","clean":"node -e \"require('fs').rmSync('dist', {recursive: true, force: true})\"","attest":"node bin/attest.js","typecheck":"tsc -p tsconfig.json --noEmit","check:self":"node bin/attest.js check self","cover:self":"node bin/attest.js cover self","test:watch":"vitest","render:self":"node bin/attest.js render self --out self/requirements/SPEC.md","verify:self":"node bin/attest.js verify self","test:consumer":"pnpm run build && vitest run --config vitest.consumer.config.ts","typecheck:all":"tsc -p tsconfig.typecheck.json","render:self:check":"node bin/attest.js render self --out self/requirements/SPEC.md --check"},"_npmUser":{"name":"am_shork","email":"am_shork@proton.me"},"_resolved":"/tmp/ec83e0cbe07cabc21ae7a9964444aa9a/am_shork-attest-0.7.3.tgz","_integrity":"sha512-0B3Sc9R6iOP0P6HxW0xQs6E9nRDgBa5E5GjX3A9Tv5AcIosZZY+05Lc19Np3buBkKrad/k0hFl+Y0KT8c6LYZw==","repository":{"url":"git+https://gitlab.com/Pseudorca/attest.git","type":"git"},"_npmVersion":"10.9.8","description":"TDD-native spec framework: tests are the source of truth for verification, ID-bound requirements the source of truth for intent.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.23.0","chalk":"^5.3.0","commander":"^12.1.0","typescript":"^5.5.0 || ^6.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.1.5","eslint":"^9.9.0","vitest":"^4.1.10","@eslint/js":"^9.9.0","@types/node":"^20.19.0","typescript-eslint":"^8.2.0"},"peerDependencies":{"vite":"^8.0.0","vitest":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/attest_0.7.3_1786099942200_0.2955647513327624","host":"s3://npm-registry-packages-npm-production"}},"0.7.4":{"name":"@am_shork/attest","version":"0.7.4","keywords":["tdd","spec","requirements","drift","vitest"],"license":"MIT","_id":"@am_shork/attest@0.7.4","maintainers":[{"name":"am_shork","email":"am_shork@proton.me"}],"homepage":"https://gitlab.com/Pseudorca/attest#readme","bugs":{"url":"https://gitlab.com/Pseudorca/attest/-/issues"},"bin":{"attest":"bin/attest.js"},"dist":{"shasum":"bb71b09d6e187efa1cc88c178c7e0225d309bec0","tarball":"https://registry.npmjs.org/@am_shork/attest/-/attest-0.7.4.tgz","fileCount":71,"integrity":"sha512-PftDfI/14vglQTjv760Q18k1jYlykEho9T17JP4q3HZkXoe3oUCqtF3y+NQEnW2xcPKLIGkk1P2LQvGDecnF4Q==","signatures":[{"sig":"MEUCIAh/PVZGiUC3bh9zIcbhb2grosY1YHn+JHv+gOkFbjqdAiEA68VkPvS30PaDjSK2toLO+1T5ReUUVBLL5SwfpY1/fWk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@am_shork%2fattest@0.7.4","provenance":{"predicateType":"https://slsa.dev/provenance/v0.2"}},"unpackedSize":738291},"type":"module","_from":"file:am_shork-attest-0.7.4.tgz","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./define":{"types":"./dist/core/registry.d.ts","default":"./dist/core/registry.js"}},"scripts":{"lint":"eslint .","test":"vitest run","build":"pnpm run clean && tsc -p tsconfig.json","clean":"node -e \"require('fs').rmSync('dist', {recursive: true, force: true})\"","attest":"node bin/attest.js","typecheck":"tsc -p tsconfig.json --noEmit","check:self":"node bin/attest.js check self","cover:self":"node bin/attest.js cover self","test:watch":"vitest","render:self":"node bin/attest.js render self --out self/requirements/SPEC.md","verify:self":"node bin/attest.js verify self","test:consumer":"pnpm run build && vitest run --config vitest.consumer.config.ts","typecheck:all":"tsc -p tsconfig.typecheck.json","render:self:check":"node bin/attest.js render self --out self/requirements/SPEC.md --check"},"_npmUser":{"name":"am_shork","email":"am_shork@proton.me"},"_resolved":"/tmp/7339dadb217484aead3373b9f94579ab/am_shork-attest-0.7.4.tgz","_integrity":"sha512-PftDfI/14vglQTjv760Q18k1jYlykEho9T17JP4q3HZkXoe3oUCqtF3y+NQEnW2xcPKLIGkk1P2LQvGDecnF4Q==","repository":{"url":"git+https://gitlab.com/Pseudorca/attest.git","type":"git"},"_npmVersion":"10.9.8","description":"TDD-native spec framework: tests are the source of truth for verification, ID-bound requirements the source of truth for intent.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.23.0","chalk":"^5.3.0","commander":"^12.1.0","typescript":"^5.5.0 || ^6.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.1.5","eslint":"^9.9.0","vitest":"^4.1.10","@eslint/js":"^9.9.0","@types/node":"^20.19.0","typescript-eslint":"^8.2.0"},"peerDependencies":{"vite":"^8.0.0","vitest":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/attest_0.7.4_1786174279473_0.014440254048099455","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@am_shork/attest","version":"0.8.0","keywords":["tdd","spec","requirements","drift","vitest"],"license":"MIT","_id":"@am_shork/attest@0.8.0","maintainers":[{"name":"am_shork","email":"am_shork@proton.me"}],"homepage":"https://gitlab.com/Pseudorca/attest#readme","bugs":{"url":"https://gitlab.com/Pseudorca/attest/-/issues"},"bin":{"attest":"bin/attest.js"},"dist":{"shasum":"cec5118d651862ed8f2d17795f8e8c8232904fb5","tarball":"https://registry.npmjs.org/@am_shork/attest/-/attest-0.8.0.tgz","fileCount":73,"integrity":"sha512-vkMifbKyGRhI6ZQdrzK5oVf0EVcg8p5aNWhVyabc5DzJZKvC+n3Cq9dJGfuBle3MQXkZZjVVinBo2/I5jAJUEQ==","signatures":[{"sig":"MEUCIQDeb646OyUInZhI3YqwqWgNFrRT5KE9R7DNTqWDiu0W6gIgCE48l4TGH1IqcU3gHUuN0G/rZM3WptTbXxYG0HKt6Hs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@am_shork%2fattest@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v0.2"}},"unpackedSize":805579},"type":"module","_from":"file:am_shork-attest-0.8.0.tgz","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./define":{"types":"./dist/core/registry.d.ts","default":"./dist/core/registry.js"}},"scripts":{"lint":"eslint .","test":"vitest run","build":"pnpm run clean && tsc -p tsconfig.json","clean":"node -e \"require('fs').rmSync('dist', {recursive: true, force: true})\"","attest":"node bin/attest.js","typecheck":"tsc -p tsconfig.json --noEmit","check:self":"node bin/attest.js check self","cover:self":"node bin/attest.js cover self","test:watch":"vitest","render:self":"node bin/attest.js render self --out self/requirements/SPEC.md","verify:self":"node bin/attest.js verify self","test:consumer":"pnpm run build && vitest run --config vitest.consumer.config.ts","typecheck:all":"tsc -p tsconfig.typecheck.json","render:self:check":"node bin/attest.js render self --out self/requirements/SPEC.md --check"},"_npmUser":{"name":"am_shork","email":"am_shork@proton.me"},"_resolved":"/tmp/e6cd4b139d53cf8b3e0cfed98c6d1ba9/am_shork-attest-0.8.0.tgz","_integrity":"sha512-vkMifbKyGRhI6ZQdrzK5oVf0EVcg8p5aNWhVyabc5DzJZKvC+n3Cq9dJGfuBle3MQXkZZjVVinBo2/I5jAJUEQ==","repository":{"url":"git+https://gitlab.com/Pseudorca/attest.git","type":"git"},"_npmVersion":"10.9.8","description":"TDD-native spec framework: tests are the source of truth for verification, ID-bound requirements the source of truth for intent.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","chalk":"^5.3.0","commander":"^12.1.0","typescript":"^5.5.0 || ^6.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.1.5","eslint":"^9.9.0","vitest":"^4.1.10","@eslint/js":"^9.9.0","@types/node":"^20.19.0","typescript-eslint":"^8.2.0"},"peerDependencies":{"vite":"^8.0.0","vitest":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/attest_0.8.0_1786249139301_0.4037128066745961","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@am_shork/attest","version":"0.9.0","keywords":["tdd","spec","requirements","drift","vitest"],"license":"MIT","_id":"@am_shork/attest@0.9.0","maintainers":[{"name":"am_shork","email":"am_shork@proton.me"}],"homepage":"https://gitlab.com/Pseudorca/attest#readme","bugs":{"url":"https://gitlab.com/Pseudorca/attest/-/issues"},"bin":{"attest":"bin/attest.js"},"dist":{"shasum":"6c60c88be0a7dba911b85170faf81bd023d5f049","tarball":"https://registry.npmjs.org/@am_shork/attest/-/attest-0.9.0.tgz","fileCount":73,"integrity":"sha512-PGMgGZN1upucs6+1saABzwPe5nlf+MLMWc4BaOFbIlO9/34YnBNFbdOy6MkYagXN9+BKFvSROygvX7jhS028gQ==","signatures":[{"sig":"MEQCIBrkbdAi5J7z6Yb50UdKuyBrkkkBqSS+LP7jbTgztUKVAiAHdOcawF9NIMJmpu+1GStKZOFGf7A18KegeuPji7dt4w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@am_shork%2fattest@0.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v0.2"}},"unpackedSize":895265},"type":"module","_from":"file:am_shork-attest-0.9.0.tgz","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./define":{"types":"./dist/core/registry.d.ts","default":"./dist/core/registry.js"}},"scripts":{"lint":"eslint .","test":"vitest run","build":"pnpm run clean && tsc -p tsconfig.json","clean":"node -e \"require('fs').rmSync('dist', {recursive: true, force: true})\"","attest":"node bin/attest.js","typecheck":"tsc -p tsconfig.json --noEmit","check:self":"node bin/attest.js check self","cover:self":"node bin/attest.js cover self","test:watch":"vitest","render:self":"node bin/attest.js render self --out self/requirements/SPEC.md","verify:self":"node bin/attest.js verify self","test:consumer":"pnpm run build && vitest run --config vitest.consumer.config.ts","typecheck:all":"tsc -p tsconfig.typecheck.json","render:self:check":"node bin/attest.js render self --out self/requirements/SPEC.md --check"},"_npmUser":{"name":"am_shork","email":"am_shork@proton.me"},"_resolved":"/tmp/5032365599b342c9e9301b3461db73a5/am_shork-attest-0.9.0.tgz","_integrity":"sha512-PGMgGZN1upucs6+1saABzwPe5nlf+MLMWc4BaOFbIlO9/34YnBNFbdOy6MkYagXN9+BKFvSROygvX7jhS028gQ==","repository":{"url":"git+https://gitlab.com/Pseudorca/attest.git","type":"git"},"_npmVersion":"10.9.8","description":"TDD-native spec framework: tests are the source of truth for verification, ID-bound requirements the source of truth for intent.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","chalk":"^5.3.0","commander":"^12.1.0","typescript":"^5.5.0 || ^6.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.1.5","eslint":"^9.9.0","vitest":"^4.1.10","@eslint/js":"^9.9.0","@types/node":"^20.19.0","typescript-eslint":"^8.2.0"},"peerDependencies":{"vite":"^8.0.0","vitest":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/attest_0.9.0_1786523146296_0.11660819927006316","host":"s3://npm-registry-packages-npm-production"}},"0.9.1":{"name":"@am_shork/attest","version":"0.9.1","keywords":["tdd","spec","requirements","drift","vitest"],"license":"MIT","_id":"@am_shork/attest@0.9.1","maintainers":[{"name":"am_shork","email":"am_shork@proton.me"}],"homepage":"https://gitlab.com/Pseudorca/attest#readme","bugs":{"url":"https://gitlab.com/Pseudorca/attest/-/issues"},"bin":{"attest":"bin/attest.js"},"dist":{"shasum":"f326b9094a83a1bc626780b5b18509d82c606856","tarball":"https://registry.npmjs.org/@am_shork/attest/-/attest-0.9.1.tgz","fileCount":73,"integrity":"sha512-N2jsWeOfeZYpuqFQrrJABpZ4UUIMt8c6b1QZYAHpdpZRppHCEM155/n0kunOsH2TR83qV4FzlYYqv2UZ6xGlzg==","signatures":[{"sig":"MEYCIQC6b2vjjFDAu7dw1GgbUQkMF+KiYm1p2E+j/f0HtFo6WAIhAKCK64SApS3d7KZgnCVVImsSAee3DdzK4NmszK4hWljA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@am_shork%2fattest@0.9.1","provenance":{"predicateType":"https://slsa.dev/provenance/v0.2"}},"unpackedSize":912757},"type":"module","_from":"file:am_shork-attest-0.9.1.tgz","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./define":{"types":"./dist/core/registry.d.ts","default":"./dist/core/registry.js"},"./package.json":"./package.json"},"scripts":{"lint":"eslint .","test":"vitest run","build":"pnpm run clean && tsc -p tsconfig.json","clean":"node -e \"require('fs').rmSync('dist', {recursive: true, force: true})\"","attest":"node bin/attest.js","typecheck":"tsc -p tsconfig.json --noEmit","check:self":"node bin/attest.js check self","cover:self":"node bin/attest.js cover self","test:watch":"vitest","render:self":"node bin/attest.js render self --out self/requirements/SPEC.md","verify:self":"node bin/attest.js verify self","test:consumer":"pnpm run build && vitest run --config vitest.consumer.config.ts","typecheck:all":"tsc -p tsconfig.typecheck.json","render:self:check":"node bin/attest.js render self --out self/requirements/SPEC.md --check"},"_npmUser":{"name":"am_shork","email":"am_shork@proton.me"},"_resolved":"/tmp/2fde0e29d0af0ac0bf501a18bcb66988/am_shork-attest-0.9.1.tgz","_integrity":"sha512-N2jsWeOfeZYpuqFQrrJABpZ4UUIMt8c6b1QZYAHpdpZRppHCEM155/n0kunOsH2TR83qV4FzlYYqv2UZ6xGlzg==","repository":{"url":"git+https://gitlab.com/Pseudorca/attest.git","type":"git"},"_npmVersion":"10.9.8","description":"TDD-native spec framework: tests are the source of truth for verification, ID-bound requirements the source of truth for intent.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","chalk":"^5.3.0","commander":"^12.1.0","typescript":"^5.5.0 || ^6.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.1.5","eslint":"^9.9.0","vitest":"^4.1.10","@eslint/js":"^9.9.0","@types/node":"^20.19.0","typescript-eslint":"^8.2.0"},"peerDependencies":{"vite":"^8.0.0","vitest":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/attest_0.9.1_1786616932983_0.45299788571569755","host":"s3://npm-registry-packages-npm-production"}},"0.9.2":{"name":"@am_shork/attest","version":"0.9.2","keywords":["tdd","spec","requirements","drift","vitest"],"license":"MIT","_id":"@am_shork/attest@0.9.2","maintainers":[{"name":"am_shork","email":"am_shork@proton.me"}],"homepage":"https://gitlab.com/Pseudorca/attest#readme","bugs":{"url":"https://gitlab.com/Pseudorca/attest/-/issues"},"bin":{"attest":"bin/attest.js"},"dist":{"shasum":"fae539591858e2c855742e97dba2abdabb092c8f","tarball":"https://registry.npmjs.org/@am_shork/attest/-/attest-0.9.2.tgz","fileCount":75,"integrity":"sha512-MvmmjyGDv/0hk2apx7OTw5/FLzAnJCLPiZdQmMLoTANr3hCe4CWQDmzvgvnzbuMnMwqAQBup3aQfTWtf9CIxlQ==","signatures":[{"sig":"MEQCIHaTazNQRqzpaecpPN+YKX44GxfQPIHqEy+GJEtiRlUVAiAst8tedqvyBQJ8QLCJwMJve9gP6NcA5+klYfDqA01aTg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@am_shork%2fattest@0.9.2","provenance":{"predicateType":"https://slsa.dev/provenance/v0.2"}},"unpackedSize":932550},"type":"module","_from":"file:am_shork-attest-0.9.2.tgz","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./define":{"types":"./dist/core/registry.d.ts","default":"./dist/core/registry.js"},"./inspect":{"types":"./dist/inspect.d.ts","default":"./dist/inspect.js"},"./package.json":"./package.json"},"scripts":{"lint":"eslint .","test":"vitest run","build":"pnpm run clean && tsc -p tsconfig.json","clean":"node -e \"require('fs').rmSync('dist', {recursive: true, force: true})\"","attest":"node bin/attest.js","typecheck":"tsc -p tsconfig.json --noEmit","check:self":"node bin/attest.js check self","cover:self":"node bin/attest.js cover self","test:watch":"vitest","render:self":"node bin/attest.js render self --out self/requirements/SPEC.md","verify:self":"node bin/attest.js verify self","test:consumer":"pnpm run build && vitest run --config vitest.consumer.config.ts","typecheck:all":"tsc -p tsconfig.typecheck.json","render:self:check":"node bin/attest.js render self --out self/requirements/SPEC.md --check"},"_npmUser":{"name":"am_shork","email":"am_shork@proton.me"},"_resolved":"/tmp/9372800ac5919df1b4b23c0c66bc09a2/am_shork-attest-0.9.2.tgz","_integrity":"sha512-MvmmjyGDv/0hk2apx7OTw5/FLzAnJCLPiZdQmMLoTANr3hCe4CWQDmzvgvnzbuMnMwqAQBup3aQfTWtf9CIxlQ==","repository":{"url":"git+https://gitlab.com/Pseudorca/attest.git","type":"git"},"_npmVersion":"10.9.8","description":"TDD-native spec framework: tests are the source of truth for verification, ID-bound requirements the source of truth for intent.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","chalk":"^5.3.0","commander":"^12.1.0","typescript":"^5.5.0 || ^6.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.1.5","eslint":"^9.9.0","vitest":"^4.1.10","@eslint/js":"^9.9.0","@types/node":"^20.19.0","typescript-eslint":"^8.2.0"},"peerDependencies":{"vite":"^8.0.0","vitest":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/attest_0.9.2_1786949299091_0.5353784695381383","host":"s3://npm-registry-packages-npm-production"}},"0.9.3":{"name":"@am_shork/attest","version":"0.9.3","keywords":["tdd","spec","requirements","drift","vitest"],"license":"MIT","_id":"@am_shork/attest@0.9.3","maintainers":[{"name":"am_shork","email":"am_shork@proton.me"}],"homepage":"https://gitlab.com/Pseudorca/attest#readme","bugs":{"url":"https://gitlab.com/Pseudorca/attest/-/issues"},"bin":{"attest":"bin/attest.js"},"dist":{"shasum":"b36cf932641461f65d506e097749cae34f7bf52a","tarball":"https://registry.npmjs.org/@am_shork/attest/-/attest-0.9.3.tgz","fileCount":77,"integrity":"sha512-n7N72womHw2Kxrkapkx7udvUPg+XrxAChyZq70tZ2dUaWHlBbNHfZRa+kUt760fC9Uo21ZyiWNgCr7Ox5LAg4A==","signatures":[{"sig":"MEUCIC1M7WNBIdfQ/BoJqBiPODSX5QkFcS9z6cXNPV/xT3dtAiEA/5MtiefC70Jporg1qo7C3htUcff1o0ZoPMTcwFXG36Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@am_shork%2fattest@0.9.3","provenance":{"predicateType":"https://slsa.dev/provenance/v0.2"}},"unpackedSize":993801},"type":"module","_from":"file:am_shork-attest-0.9.3.tgz","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./define":{"types":"./dist/core/registry.d.ts","default":"./dist/core/registry.js"},"./inspect":{"types":"./dist/inspect.d.ts","default":"./dist/inspect.js"},"./package.json":"./package.json"},"scripts":{"lint":"eslint .","test":"vitest run","build":"pnpm run clean && tsc -p tsconfig.json","clean":"node -e \"require('fs').rmSync('dist', {recursive: true, force: true})\"","attest":"node bin/attest.js","typecheck":"tsc -p tsconfig.json --noEmit","check:self":"node bin/attest.js check self","cover:self":"node bin/attest.js cover self","test:watch":"vitest","render:self":"node bin/attest.js render self --out self/requirements/SPEC.md","verify:self":"node bin/attest.js verify self","test:consumer":"pnpm run build && vitest run --config vitest.consumer.config.ts","typecheck:all":"tsc -p tsconfig.typecheck.json","render:self:check":"node bin/attest.js render self --out self/requirements/SPEC.md --check"},"_npmUser":{"name":"am_shork","email":"am_shork@proton.me"},"_resolved":"/tmp/a89f0d20343ad24a3abe57a33e0de47f/am_shork-attest-0.9.3.tgz","_integrity":"sha512-n7N72womHw2Kxrkapkx7udvUPg+XrxAChyZq70tZ2dUaWHlBbNHfZRa+kUt760fC9Uo21ZyiWNgCr7Ox5LAg4A==","repository":{"url":"git+https://gitlab.com/Pseudorca/attest.git","type":"git"},"_npmVersion":"10.9.8","description":"TDD-native spec framework: tests are the source of truth for verification, ID-bound requirements the source of truth for intent.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","chalk":"^5.3.0","commander":"^12.1.0","typescript":"^5.5.0 || ^6.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.1.5","eslint":"^9.9.0","vitest":"^4.1.10","@eslint/js":"^9.9.0","@types/node":"^20.19.0","typescript-eslint":"^8.2.0"},"peerDependencies":{"vite":"^8.0.0","vitest":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/attest_0.9.3_1787050885883_0.9275686022833298","host":"s3://npm-registry-packages-npm-production"}},"0.9.4":{"name":"@am_shork/attest","version":"0.9.4","keywords":["tdd","spec","requirements","drift","vitest"],"license":"MIT","_id":"@am_shork/attest@0.9.4","maintainers":[{"name":"am_shork","email":"am_shork@proton.me"}],"homepage":"https://gitlab.com/Pseudorca/attest#readme","bugs":{"url":"https://gitlab.com/Pseudorca/attest/-/issues"},"bin":{"attest":"bin/attest.js"},"dist":{"shasum":"8f533f3257720079f917aab3400dec774b1f274d","tarball":"https://registry.npmjs.org/@am_shork/attest/-/attest-0.9.4.tgz","fileCount":77,"integrity":"sha512-8b16Raz6UGbMi6geYWgw8JuUFLQNvss3OouVx8AcLkqeH0hgndxKJbSBhNErn8TQ3jKprNb7AhNikxcyGZwshw==","signatures":[{"sig":"MEYCIQClegXZ4dpH4Hw8LBtoKA0XCfLArFu3MhonW2y4fbDReAIhAIvIy4uPaeoc31nR3tOLc+AbhwRoLMRuufrK6U9jUjrE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@am_shork%2fattest@0.9.4","provenance":{"predicateType":"https://slsa.dev/provenance/v0.2"}},"unpackedSize":1022166},"pnpm":{"overrides":{"js-yaml@<4.3.1":">=4.3.1","nanoid@<3.3.17":">=3.3.17","postcss@<8.5.23":">=8.5.23","brace-expansion@<5.0.9":">=5.0.9"},"onlyBuiltDependencies":["esbuild"]},"type":"module","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./define":{"types":"./dist/core/registry.d.ts","default":"./dist/core/registry.js"},"./inspect":{"types":"./dist/inspect.d.ts","default":"./dist/inspect.js"},"./package.json":"./package.json"},"gitHead":"11e732b6cd2f500cc18b3986e52fc28daa0abb18","scripts":{"lint":"eslint .","test":"vitest run","build":"pnpm run clean && tsc -p tsconfig.json","clean":"node -e \"require('fs').rmSync('dist', {recursive: true, force: true})\"","attest":"node bin/attest.js","prepack":"pnpm run build","typecheck":"tsc -p tsconfig.json --noEmit","check:self":"node bin/attest.js check self","cover:self":"node bin/attest.js cover self","test:watch":"vitest","render:self":"node bin/attest.js render self --out self/requirements/SPEC.md","verify:self":"node bin/attest.js verify self","test:consumer":"pnpm run build && vitest run --config vitest.consumer.config.ts","typecheck:all":"tsc -p tsconfig.typecheck.json","prepublishOnly":"pnpm run test:consumer","render:self:check":"node bin/attest.js render self --out self/requirements/SPEC.md --check"},"_npmUser":{"name":"GitLab CI/CD","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"gitlab","oidcConfigId":"oidc:d95ef546-042a-4e47-8029-9d3c31bbfcd6"}},"repository":{"url":"git+https://gitlab.com/Pseudorca/attest.git","type":"git"},"_npmVersion":"11.19.0","description":"TDD-native spec framework: tests are the source of truth for verification, ID-bound requirements the source of truth for intent.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","chalk":"^5.3.0","commander":"^12.1.0","typescript":"^5.5.0 || ^6.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.28.0","devDependencies":{"vite":"^8.1.5","eslint":"^9.9.0","vitest":"^4.1.10","@eslint/js":"^9.9.0","@types/node":"^20.19.0","typescript-eslint":"^8.2.0"},"peerDependencies":{"vite":"^8.0.0","vitest":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/attest_0.9.4_1787116729834_0.35699264732883274","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"@am_shork/attest","version":"0.10.0","keywords":["tdd","spec","requirements","drift","vitest"],"license":"MIT","_id":"@am_shork/attest@0.10.0","maintainers":[{"name":"am_shork","email":"am_shork@proton.me"}],"homepage":"https://gitlab.com/Pseudorca/attest#readme","bugs":{"url":"https://gitlab.com/Pseudorca/attest/-/issues"},"bin":{"attest":"bin/attest.js"},"dist":{"shasum":"96777de3a9efc41c46511d221074840a33334381","tarball":"https://registry.npmjs.org/@am_shork/attest/-/attest-0.10.0.tgz","fileCount":77,"integrity":"sha512-zhOU8UxHwWP0NqMPDGQlHJWSutqQL49rNoryLxZRWRSJN1yfxu6t47WI3TP7vi0dgYvVQKQMTwtW3HWpO+KzpA==","signatures":[{"sig":"MEUCIEmAe7qwBxAuNb+krEPVXv4k3LohCUAz88OXYSdyka3NAiEA92UQEgYPMRnk/rXUM03T7fDj9MZVcaSHrWbl7ieyDrY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@am_shork%2fattest@0.10.0","provenance":{"predicateType":"https://slsa.dev/provenance/v0.2"}},"unpackedSize":1070695},"pnpm":{"overrides":{"js-yaml@<4.3.1":">=4.3.1","nanoid@<3.3.17":">=3.3.17","postcss@<8.5.23":">=8.5.23","brace-expansion@<5.0.9":">=5.0.9"},"onlyBuiltDependencies":["esbuild"]},"type":"module","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./define":{"types":"./dist/core/registry.d.ts","default":"./dist/core/registry.js"},"./inspect":{"types":"./dist/inspect.d.ts","default":"./dist/inspect.js"},"./package.json":"./package.json"},"gitHead":"9ad85b2ff5bac5c27037cbb78326788d4f4397e6","scripts":{"lint":"eslint .","test":"vitest run","build":"pnpm run clean && tsc -p tsconfig.json","clean":"node -e \"require('fs').rmSync('dist', {recursive: true, force: true})\"","attest":"node bin/attest.js","prepack":"pnpm run build","typecheck":"tsc -p tsconfig.json --noEmit","check:self":"node bin/attest.js check self","cover:self":"node bin/attest.js cover self","test:watch":"vitest","render:self":"node bin/attest.js render self --out self/requirements/SPEC.md","verify:self":"node bin/attest.js verify self","test:consumer":"pnpm run build && vitest run --config vitest.consumer.config.ts","typecheck:all":"tsc -p tsconfig.typecheck.json","prepublishOnly":"pnpm run test:consumer","render:self:check":"node bin/attest.js render self --out self/requirements/SPEC.md --check"},"_npmUser":{"name":"GitLab CI/CD","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"gitlab","oidcConfigId":"oidc:d95ef546-042a-4e47-8029-9d3c31bbfcd6"}},"repository":{"url":"git+https://gitlab.com/Pseudorca/attest.git","type":"git"},"_npmVersion":"11.19.0","description":"TDD-native spec framework: tests are the source of truth for verification, ID-bound requirements the source of truth for intent.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","chalk":"^5.3.0","commander":"^12.1.0","typescript":"^5.5.0 || ^6.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.28.0","devDependencies":{"vite":"^8.1.5","eslint":"^9.9.0","vitest":"^4.1.10","@eslint/js":"^9.9.0","@types/node":"^20.19.0","typescript-eslint":"^8.2.0"},"peerDependencies":{"vite":"^8.0.0","vitest":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/attest_0.10.0_1787334109870_0.8658435078265123","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"@am_shork/attest","version":"0.11.0","keywords":["tdd","spec","requirements","drift","vitest"],"license":"MIT","_id":"@am_shork/attest@0.11.0","maintainers":[{"name":"am_shork","email":"am_shork@proton.me"}],"homepage":"https://gitlab.com/Pseudorca/attest#readme","bugs":{"url":"https://gitlab.com/Pseudorca/attest/-/issues"},"bin":{"attest":"bin/attest.js"},"dist":{"shasum":"b3defb509be945d004c9fc7a2971ff2d9e60b98c","tarball":"https://registry.npmjs.org/@am_shork/attest/-/attest-0.11.0.tgz","fileCount":77,"integrity":"sha512-gE7gyrRMOqnaevPvdpc5mJT06Nmfd0i/4BWTb75rA0yt0tVNequ/O/sRSGh7OXb4jQhkf9RwJesf4VAE738MEw==","signatures":[{"sig":"MEQCIDH36174WlVL0avrGAXEWulIKYH8hVhIayzgqckCDmfIAiB/ygn5f+yH05d2UJhatqeVEcvnUEg8WTuuem8CKTp1UA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@am_shork%2fattest@0.11.0","provenance":{"predicateType":"https://slsa.dev/provenance/v0.2"}},"unpackedSize":1122305},"pnpm":{"overrides":{"js-yaml@<4.3.1":">=4.3.1","nanoid@<3.3.17":">=3.3.17","postcss@<8.5.23":">=8.5.23","brace-expansion@<5.0.9":">=5.0.9"},"onlyBuiltDependencies":["esbuild"]},"type":"module","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./define":{"types":"./dist/core/registry.d.ts","default":"./dist/core/registry.js"},"./inspect":{"types":"./dist/inspect.d.ts","default":"./dist/inspect.js"},"./package.json":"./package.json"},"gitHead":"fc7f7c6cab42779629742ddc723e502716085ac5","scripts":{"lint":"eslint .","test":"vitest run","build":"pnpm run clean && tsc -p tsconfig.json","clean":"node -e \"require('fs').rmSync('dist', {recursive: true, force: true})\"","attest":"node bin/attest.js","prepack":"pnpm run build","typecheck":"tsc -p tsconfig.json --noEmit","check:self":"node bin/attest.js check self","cover:self":"node bin/attest.js cover self","debug:self":"vitest run --config vitest.self.config.ts","test:watch":"vitest","render:self":"node bin/attest.js render self --out self/requirements/SPEC.md","verify:self":"node bin/attest.js verify self","test:consumer":"pnpm run build && vitest run --config vitest.consumer.config.ts","typecheck:all":"tsc -p tsconfig.typecheck.json","prepublishOnly":"pnpm run test:consumer","render:self:check":"node bin/attest.js render self --out self/requirements/SPEC.md --check"},"_npmUser":{"name":"GitLab CI/CD","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"gitlab","oidcConfigId":"oidc:d95ef546-042a-4e47-8029-9d3c31bbfcd6"}},"repository":{"url":"git+https://gitlab.com/Pseudorca/attest.git","type":"git"},"_npmVersion":"11.19.1","description":"TDD-native spec framework: tests are the source of truth for verification, ID-bound requirements the source of truth for intent.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","chalk":"^5.3.0","commander":"^12.1.0","typescript":"^5.5.0 || ^6.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.28.0","devDependencies":{"vite":"^8.1.5","eslint":"^9.9.0","vitest":"^4.1.10","@eslint/js":"^9.9.0","@types/node":"^20.19.0","typescript-eslint":"^8.2.0"},"peerDependencies":{"vite":"^8.0.0","vitest":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/attest_0.11.0_1787912398262_0.6613838405811168","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@am_shork/attest","version":"1.0.0","keywords":["tdd","spec","requirements","drift","vitest"],"license":"MIT","_id":"@am_shork/attest@1.0.0","maintainers":[{"name":"am_shork","email":"am_shork@proton.me"}],"homepage":"https://gitlab.com/Pseudorca/attest#readme","bugs":{"url":"https://gitlab.com/Pseudorca/attest/-/issues"},"bin":{"attest":"bin/attest.js"},"dist":{"shasum":"752cb32fa8df65a11187301f3973591c89352fb4","tarball":"https://registry.npmjs.org/@am_shork/attest/-/attest-1.0.0.tgz","fileCount":77,"integrity":"sha512-d7NZ9NKZju0xfao+xHzKirK42N6K9SjwSJzQFyE9DkTwQMcb3Sno26+hnWbQiwpDGn0Vkr3/NIfvWgaBjhIl3Q==","signatures":[{"sig":"MEUCIQDEa28H5wsNYMPiRdh1dEU7NC2LrQfsWASvVQgtsY/9QwIgMhfVP85P/bnx+VkEomFKb1PjH+o6itgYndX3uw46bSU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@am_shork%2fattest@1.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v0.2"}},"unpackedSize":1173705},"pnpm":{"overrides":{"js-yaml@<4.3.1":">=4.3.1","nanoid@<3.3.17":">=3.3.17","postcss@<8.5.23":">=8.5.23","brace-expansion@<5.0.9":">=5.0.9"},"onlyBuiltDependencies":["esbuild"]},"type":"module","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./define":{"types":"./dist/core/registry.d.ts","default":"./dist/core/registry.js"},"./inspect":{"types":"./dist/inspect.d.ts","default":"./dist/inspect.js"},"./package.json":"./package.json"},"gitHead":"8adb1040727cb708a04579778251636b759fbe85","scripts":{"lint":"eslint .","test":"vitest run","build":"pnpm run clean && tsc -p tsconfig.json","clean":"node -e \"require('fs').rmSync('dist', {recursive: true, force: true})\"","attest":"node bin/attest.js","prepack":"pnpm run build","typecheck":"tsc -p tsconfig.json --noEmit","check:self":"node bin/attest.js check self","cover:self":"node bin/attest.js cover self","debug:self":"vitest run --config vitest.self.config.ts","test:watch":"vitest","render:self":"node bin/attest.js render self --out self/requirements/SPEC.md","verify:self":"node bin/attest.js verify self","test:consumer":"pnpm run build && vitest run --config vitest.consumer.config.ts","typecheck:all":"tsc -p tsconfig.typecheck.json","prepublishOnly":"pnpm run test:consumer","render:self:check":"node bin/attest.js render self --out self/requirements/SPEC.md --check"},"_npmUser":{"name":"GitLab CI/CD","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"gitlab","oidcConfigId":"oidc:d95ef546-042a-4e47-8029-9d3c31bbfcd6"}},"repository":{"url":"git+https://gitlab.com/Pseudorca/attest.git","type":"git"},"_npmVersion":"11.19.1","description":"TDD-native spec framework: tests are the source of truth for verification, ID-bound requirements the source of truth for intent.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","chalk":"^5.3.0","commander":"^12.1.0","typescript":"^5.5.0 || ^6.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.28.0","devDependencies":{"vite":"^8.1.5","eslint":"^9.9.0","vitest":"^4.1.10","@eslint/js":"^9.9.0","@types/node":"^20.19.0","typescript-eslint":"^8.2.0"},"peerDependencies":{"vite":"^8.0.0","vitest":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/attest_1.0.0_1788250292755_0.46358556045042176","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@am_shork/attest","version":"1.1.0","keywords":["tdd","spec","requirements","drift","vitest"],"license":"MIT","_id":"@am_shork/attest@1.1.0","maintainers":[{"name":"am_shork","email":"am_shork@proton.me"}],"homepage":"https://gitlab.com/Pseudorca/attest#readme","bugs":{"url":"https://gitlab.com/Pseudorca/attest/-/issues"},"bin":{"attest":"bin/attest.js"},"dist":{"shasum":"8027c62ee5fa01065fe0b1cb70fe5ccd45dcae6e","tarball":"https://registry.npmjs.org/@am_shork/attest/-/attest-1.1.0.tgz","fileCount":77,"integrity":"sha512-qbis1loB/bwGGGGOipxL3VIMiKud1G/0WE08UoeeBxZo5qgSKK3+QS7ZSZNpG2qLs+7BC49tldpD+1wLVD4CJA==","signatures":[{"sig":"MEYCIQC9I2ftK41g8fDTA+JsLyLFQBpOhrDkZhslQNdPp0xRhwIhALAVQR5V7bUf61XNY4nMi1Rs3ob2VJlIwV7Zz4TJrXNH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@am_shork%2fattest@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v0.2"}},"unpackedSize":1217094},"pnpm":{"overrides":{"js-yaml@<4.3.1":">=4.3.1","nanoid@<3.3.17":">=3.3.17","postcss@<8.5.23":">=8.5.23","brace-expansion@<5.0.9":">=5.0.9"},"onlyBuiltDependencies":["esbuild"]},"type":"module","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./define":{"types":"./dist/core/registry.d.ts","default":"./dist/core/registry.js"},"./inspect":{"types":"./dist/inspect.d.ts","default":"./dist/inspect.js"},"./package.json":"./package.json"},"gitHead":"238a95254951bad06f2bdf2199254a1aed046842","scripts":{"lint":"eslint .","test":"vitest run","build":"pnpm run clean && tsc -p tsconfig.json","clean":"node -e \"require('fs').rmSync('dist', {recursive: true, force: true})\"","attest":"node bin/attest.js","prepack":"pnpm run build","typecheck":"tsc -p tsconfig.json --noEmit","check:self":"node bin/attest.js check self","cover:self":"node bin/attest.js cover self","debug:self":"vitest run --config vitest.self.config.ts","test:watch":"vitest","render:self":"node bin/attest.js render self --out self/requirements/SPEC.md","verify:self":"node bin/attest.js verify self","test:consumer":"pnpm run build && vitest run --config vitest.consumer.config.ts","typecheck:all":"tsc -p tsconfig.typecheck.json","prepublishOnly":"pnpm run test:consumer","render:self:check":"node bin/attest.js render self --out self/requirements/SPEC.md --check"},"_npmUser":{"name":"GitLab CI/CD","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"gitlab","oidcConfigId":"oidc:d95ef546-042a-4e47-8029-9d3c31bbfcd6"}},"repository":{"url":"git+https://gitlab.com/Pseudorca/attest.git","type":"git"},"_npmVersion":"11.19.1","description":"TDD-native spec framework: tests are the source of truth for verification, ID-bound requirements the source of truth for intent.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","chalk":"^5.3.0","commander":"^12.1.0","typescript":"^5.5.0 || ^6.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.28.0","devDependencies":{"vite":"^8.1.5","eslint":"^9.9.0","vitest":"^4.1.10","@eslint/js":"^9.9.0","@types/node":"^20.19.0","typescript-eslint":"^8.2.0"},"peerDependencies":{"vite":"^8.0.0","vitest":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/attest_1.1.0_1788328455518_0.9448427921687601","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@am_shork/attest","version":"1.1.1","keywords":["tdd","spec","drift","requirements","traceability","requirements-traceability","vitest","typescript"],"license":"MIT","_id":"@am_shork/attest@1.1.1","maintainers":[{"name":"am_shork","email":"am_shork@proton.me"}],"homepage":"https://gitlab.com/Pseudorca/attest#readme","bugs":{"url":"https://gitlab.com/Pseudorca/attest/-/issues"},"bin":{"attest":"bin/attest.js"},"dist":{"shasum":"bfe70715282689c9514d9beaa815355c443e878a","tarball":"https://registry.npmjs.org/@am_shork/attest/-/attest-1.1.1.tgz","fileCount":77,"integrity":"sha512-QeUlPyV8d8B3FqiRKuvRStrJ0eaQkgrXFTo68QWV8X1u6mkE5ixEyWxlyYaVuF5odLEmESoNGg6tRVpqLfc/QA==","signatures":[{"sig":"MEYCIQCZOvQX53MWWG1Gj9nPo8UkK+jN74DbNsYi4CxF+EltwwIhANxBowHKfVjfcNnLFTric+ff3jlH4Ln3HJzH3in/Z9m9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@am_shork%2fattest@1.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v0.2"}},"unpackedSize":1230658},"pnpm":{"overrides":{"js-yaml@<4.3.1":">=4.3.1","nanoid@<3.3.17":">=3.3.17","postcss@<8.5.23":">=8.5.23","brace-expansion@<5.0.9":">=5.0.9"},"onlyBuiltDependencies":["esbuild"]},"type":"module","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./define":{"types":"./dist/core/registry.d.ts","default":"./dist/core/registry.js"},"./inspect":{"types":"./dist/inspect.d.ts","default":"./dist/inspect.js"},"./package.json":"./package.json"},"gitHead":"32ae273aaf1665f4d48482c6e875ea6a6d0c2910","scripts":{"lint":"eslint .","test":"vitest run","build":"pnpm run clean && tsc -p tsconfig.json","clean":"node -e \"require('fs').rmSync('dist', {recursive: true, force: true})\"","attest":"node bin/attest.js","prepack":"pnpm run build","typecheck":"tsc -p tsconfig.json --noEmit","check:self":"node bin/attest.js check self","cover:self":"node bin/attest.js cover self","debug:self":"vitest run --config vitest.self.config.ts","test:watch":"vitest","render:self":"node bin/attest.js render self --out self/requirements/SPEC.md","verify:self":"node bin/attest.js verify self","test:consumer":"pnpm run build && vitest run --config vitest.consumer.config.ts","typecheck:all":"tsc -p tsconfig.typecheck.json","prepublishOnly":"pnpm run test:consumer","render:self:check":"node bin/attest.js render self --out self/requirements/SPEC.md --check"},"_npmUser":{"name":"GitLab CI/CD","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"gitlab","oidcConfigId":"oidc:d95ef546-042a-4e47-8029-9d3c31bbfcd6"}},"repository":{"url":"git+https://gitlab.com/Pseudorca/attest.git","type":"git"},"_npmVersion":"11.19.1","description":"TDD-native spec framework: tests are the source of truth for verification, ID-bound requirements the source of truth for intent.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","chalk":"^5.3.0","commander":"^12.1.0","typescript":"^5.5.0 || ^6.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.28.0","devDependencies":{"vite":"^8.1.5","eslint":"^9.9.0","vitest":"^4.1.10","@eslint/js":"^9.9.0","@types/node":"^20.19.0","typescript-eslint":"^8.2.0"},"peerDependencies":{"vite":"^8.0.0","vitest":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/attest_1.1.1_1788432121139_0.02941172084975041","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@am_shork/attest","version":"1.2.0","keywords":["tdd","test-driven-development","spec","spec-driven-development","drift","requirements","traceability","requirements-traceability","ai-agent","coding-agent","agent-guardrails","vitest","typescript"],"license":"MIT","_id":"@am_shork/attest@1.2.0","maintainers":[{"name":"am_shork","email":"am_shork@proton.me"}],"homepage":"https://gitlab.com/Pseudorca/attest#readme","bugs":{"url":"https://gitlab.com/Pseudorca/attest/-/issues"},"bin":{"attest":"bin/attest.js"},"dist":{"shasum":"f4e59b43fe86a46ce807ccee52a3d8e3702bfe46","tarball":"https://registry.npmjs.org/@am_shork/attest/-/attest-1.2.0.tgz","fileCount":77,"integrity":"sha512-TQsMFWInws673TYYpG8LETMxMG5BHh5+a0bM6hD1qqHwqHMNURNx8+Bi+hWg1Zm56UdYb3mDmAReNEdwsy+iRw==","signatures":[{"sig":"MEUCIQD+SSgzf24m/1prfnpGm1Hd2YLthDyq4SjFgAF1JaXBCQIgIu1pm9U2GAS/M9NS2KN4MpAq+CXD9Rxw9KOvaNjgMB8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@am_shork%2fattest@1.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v0.2"}},"unpackedSize":1302938},"pnpm":{"overrides":{"js-yaml@<4.3.1":">=4.3.1","nanoid@<3.3.17":">=3.3.17","postcss@<8.5.23":">=8.5.23","brace-expansion@<5.0.9":">=5.0.9"},"onlyBuiltDependencies":["esbuild"]},"type":"module","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./define":{"types":"./dist/core/registry.d.ts","default":"./dist/core/registry.js"},"./inspect":{"types":"./dist/inspect.d.ts","default":"./dist/inspect.js"},"./package.json":"./package.json"},"gitHead":"959d50e70efc847503421a9d86ca190ef90ecf2c","scripts":{"lint":"eslint .","test":"vitest run","build":"pnpm run clean && tsc -p tsconfig.json","clean":"node -e \"require('fs').rmSync('dist', {recursive: true, force: true})\"","attest":"node bin/attest.js","prepack":"pnpm run build","typecheck":"tsc -p tsconfig.json --noEmit","check:self":"node bin/attest.js check self","cover:self":"node bin/attest.js cover self","debug:self":"vitest run --config vitest.self.config.ts","test:watch":"vitest","render:self":"node bin/attest.js render self --out self/requirements/SPEC.md","verify:self":"node bin/attest.js verify self","test:consumer":"pnpm run build && vitest run --config vitest.consumer.config.ts","typecheck:all":"tsc -p tsconfig.typecheck.json","prepublishOnly":"pnpm run test:consumer","render:self:check":"node bin/attest.js render self --out self/requirements/SPEC.md --check"},"_npmUser":{"name":"GitLab CI/CD","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"gitlab","oidcConfigId":"oidc:d95ef546-042a-4e47-8029-9d3c31bbfcd6"}},"repository":{"url":"git+https://gitlab.com/Pseudorca/attest.git","type":"git"},"_npmVersion":"11.19.1","description":"TDD-native spec framework: tests are the source of truth for verification, ID-bound requirements the source of truth for intent.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","chalk":"^5.3.0","commander":"^12.1.0","typescript":"^5.5.0 || ^6.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.28.0","devDependencies":{"vite":"^8.1.5","eslint":"^9.9.0","vitest":"^4.1.10","@eslint/js":"^9.9.0","@types/node":"^20.19.0","typescript-eslint":"^8.2.0"},"peerDependencies":{"vite":"^8.0.0","vitest":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/attest_1.2.0_1788532763968_0.15112372710518818","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@am_shork/attest","version":"1.3.0","keywords":["tdd","test-driven-development","spec","spec-driven-development","drift","requirements","traceability","requirements-traceability","ai-agent","coding-agent","agent-guardrails","vitest","typescript"],"license":"MIT","_id":"@am_shork/attest@1.3.0","maintainers":[{"name":"am_shork","email":"am_shork@proton.me"}],"homepage":"https://gitlab.com/Pseudorca/attest#readme","bugs":{"url":"https://gitlab.com/Pseudorca/attest/-/issues"},"bin":{"attest":"bin/attest.js"},"dist":{"shasum":"9460844e13be288a87d47493b9806c61f0635507","tarball":"https://registry.npmjs.org/@am_shork/attest/-/attest-1.3.0.tgz","fileCount":79,"integrity":"sha512-5cHOXuxFg+eJC4pTrZ+o7fQPMjt2eFL6epBncyXcQHKdgmCT4SFIKf07XvgsWK2cRhfIUjv3XMYFQnqFk4J27w==","signatures":[{"sig":"MEUCIFzEtwsSZE1o1D6dDed1T3A3gB8iDUMj/HodyipuUojmAiEA/VdbGk1Gizbf8dyvtv3VUhNtT242pW/LFn2n/FoTWqk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@am_shork%2fattest@1.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v0.2"}},"unpackedSize":1401882},"pnpm":{"overrides":{"js-yaml@<4.3.1":">=4.3.1","nanoid@<3.3.17":">=3.3.17","postcss@<8.5.23":">=8.5.23","brace-expansion@<5.0.9":">=5.0.9"},"onlyBuiltDependencies":["esbuild"]},"type":"module","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./define":{"types":"./dist/core/registry.d.ts","default":"./dist/core/registry.js"},"./inspect":{"types":"./dist/inspect.d.ts","default":"./dist/inspect.js"},"./package.json":"./package.json"},"gitHead":"a05d48bb440eaf481a7ab84a9d3cff1ef6084e0d","scripts":{"lint":"eslint .","test":"vitest run","build":"pnpm run clean && tsc -p tsconfig.json","clean":"node -e \"require('fs').rmSync('dist', {recursive: true, force: true})\"","attest":"node bin/attest.js","prepack":"pnpm run build","typecheck":"tsc -p tsconfig.json --noEmit","check:self":"node bin/attest.js check self","cover:self":"node bin/attest.js cover self","debug:self":"vitest run --config vitest.self.config.ts","test:watch":"vitest","render:self":"node bin/attest.js render self --out self/requirements/SPEC.md","verify:self":"node bin/attest.js verify self","test:consumer":"pnpm run build && vitest run --config vitest.consumer.config.ts","typecheck:all":"tsc -p tsconfig.typecheck.json","prepublishOnly":"pnpm run test:consumer","render:self:check":"node bin/attest.js render self --out self/requirements/SPEC.md --check"},"_npmUser":{"name":"GitLab CI/CD","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"gitlab","oidcConfigId":"oidc:d95ef546-042a-4e47-8029-9d3c31bbfcd6"}},"repository":{"url":"git+https://gitlab.com/Pseudorca/attest.git","type":"git"},"_npmVersion":"11.19.1","description":"TDD-native spec framework: tests are the source of truth for verification, ID-bound requirements the source of truth for intent.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","chalk":"^5.3.0","commander":"^12.1.0","typescript":"^5.5.0 || ^6.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.28.0","devDependencies":{"vite":"^8.1.5","eslint":"^9.9.0","vitest":"^4.1.10","@eslint/js":"^9.9.0","@types/node":"^20.19.0","typescript-eslint":"^8.2.0"},"peerDependencies":{"vite":"^8.0.0","vitest":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/attest_1.3.0_1788706509932_0.5867830734692963","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@am_shork/attest","version":"1.4.0","keywords":["tdd","test-driven-development","spec","spec-driven-development","drift","requirements","traceability","requirements-traceability","ai-agent","coding-agent","agent-guardrails","vitest","typescript"],"license":"MIT","_id":"@am_shork/attest@1.4.0","maintainers":[{"name":"am_shork","email":"am_shork@proton.me"}],"homepage":"https://gitlab.com/Pseudorca/attest#readme","bugs":{"url":"https://gitlab.com/Pseudorca/attest/-/issues"},"bin":{"attest":"bin/attest.js"},"dist":{"shasum":"5cef142aac0b0566ddda4d9d23348e6f16c77fa3","tarball":"https://registry.npmjs.org/@am_shork/attest/-/attest-1.4.0.tgz","fileCount":79,"integrity":"sha512-zAQfm6YCeChNnXq35oJHISnJGtEcHOCwvEa/LYLRCCovBsCzfAwfiklDBrBWhQU+HpkJXj5K3cImJ7fpINEppw==","signatures":[{"sig":"MEUCIAIoDVCV+9FyyaOA9mmtAGaRP+JRoO39nKoy2XLkQS+zAiEAtaeiA/vKg7mJDXwIEBESHW6on8OehujO53kwEqpMYp4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@am_shork%2fattest@1.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v0.2"}},"unpackedSize":1426290},"pnpm":{"overrides":{"js-yaml@<4.3.1":">=4.3.1","nanoid@<3.3.17":">=3.3.17","postcss@<8.5.23":">=8.5.23","brace-expansion@<5.0.9":">=5.0.9"},"onlyBuiltDependencies":["esbuild"]},"type":"module","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./define":{"types":"./dist/core/registry.d.ts","default":"./dist/core/registry.js"},"./inspect":{"types":"./dist/inspect.d.ts","default":"./dist/inspect.js"},"./package.json":"./package.json"},"gitHead":"15a7aec4f5f1a64c12c59c4dd9d42c2e624e0254","scripts":{"lint":"eslint .","test":"vitest run","build":"pnpm run clean && tsc -p tsconfig.json","clean":"node -e \"require('fs').rmSync('dist', {recursive: true, force: true})\"","attest":"node bin/attest.js","prepack":"pnpm run build","typecheck":"tsc -p tsconfig.json --noEmit","check:self":"node bin/attest.js check self","cover:self":"node bin/attest.js cover self","debug:self":"vitest run --config vitest.self.config.ts","test:watch":"vitest","render:self":"node bin/attest.js render self --out self/requirements/SPEC.md","verify:self":"node bin/attest.js verify self","test:consumer":"pnpm run build && vitest run --config vitest.consumer.config.ts","typecheck:all":"tsc -p tsconfig.typecheck.json","prepublishOnly":"pnpm run test:consumer","render:self:check":"node bin/attest.js render self --out self/requirements/SPEC.md --check"},"_npmUser":{"name":"GitLab CI/CD","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"gitlab","oidcConfigId":"oidc:d95ef546-042a-4e47-8029-9d3c31bbfcd6"}},"repository":{"url":"git+https://gitlab.com/Pseudorca/attest.git","type":"git"},"_npmVersion":"11.19.1","description":"TDD-native spec framework: tests are the source of truth for verification, ID-bound requirements the source of truth for intent.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","chalk":"^5.3.0","commander":"^12.1.0","typescript":"^5.5.0 || ^6.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.28.0","devDependencies":{"vite":"^8.1.5","eslint":"^9.9.0","vitest":"^4.1.11","@eslint/js":"^9.9.0","@types/node":"^20.19.0","typescript-eslint":"^8.2.0"},"peerDependencies":{"vite":"^8.0.0","vitest":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/attest_1.4.0_1789134147331_0.8060346376549508","host":"s3://npm-registry-packages-npm-production"}},"1.4.1":{"name":"@am_shork/attest","version":"1.4.1","keywords":["tdd","test-driven-development","spec","spec-driven-development","drift","requirements","traceability","requirements-traceability","ai-agent","coding-agent","agent-guardrails","vitest","typescript"],"license":"MIT","_id":"@am_shork/attest@1.4.1","maintainers":[{"name":"am_shork","email":"am_shork@proton.me"}],"homepage":"https://gitlab.com/Pseudorca/attest#readme","bugs":{"url":"https://gitlab.com/Pseudorca/attest/-/issues"},"bin":{"attest":"bin/attest.js"},"dist":{"shasum":"83eaf3b2ddf6d97f5b643aca445bd18e988016fb","tarball":"https://registry.npmjs.org/@am_shork/attest/-/attest-1.4.1.tgz","fileCount":81,"integrity":"sha512-mZjynB00ChBiDsShKRI7D7krJvd2NeuQCpivRoD5dNCGY95tUSQjQvFVtq2r45lTOwobvm/z+uu3SKEAA/poWQ==","signatures":[{"sig":"MEYCIQDG7cGZgHYwW85eqaBCzJP52aArkroLQOEQ7BL0wvmBpQIhAOi5e0ecZ9KstyERBYJ7m8l7waPTY9TIJZRs4aKpp3hX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@am_shork%2fattest@1.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v0.2"}},"unpackedSize":1467741},"pnpm":{"overrides":{"js-yaml@<4.3.1":">=4.3.1","nanoid@<3.3.17":">=3.3.17","postcss@<8.5.23":">=8.5.23","brace-expansion@<5.0.9":">=5.0.9"},"onlyBuiltDependencies":["esbuild"]},"type":"module","engines":{"node":">=20.19"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./define":{"types":"./dist/core/registry.d.ts","default":"./dist/core/registry.js"},"./inspect":{"types":"./dist/inspect.d.ts","default":"./dist/inspect.js"},"./package.json":"./package.json"},"gitHead":"cc22c96a8237fa8c9c278e7360506ab27be10c83","scripts":{"lint":"eslint .","test":"vitest run","build":"pnpm run clean && tsc -p tsconfig.json","clean":"node -e \"require('fs').rmSync('dist', {recursive: true, force: true})\"","attest":"node bin/attest.js","prepack":"pnpm run build","typecheck":"tsc -p tsconfig.json --noEmit","check:self":"node bin/attest.js check self","cover:self":"node bin/attest.js cover self","debug:self":"vitest run --config vitest.self.config.ts","test:watch":"vitest","render:self":"node bin/attest.js render self --out self/requirements/SPEC.md","verify:self":"node bin/attest.js verify self","test:consumer":"pnpm run build && vitest run --config vitest.consumer.config.ts","typecheck:all":"tsc -p tsconfig.typecheck.json","prepublishOnly":"pnpm run test:consumer","render:self:check":"node bin/attest.js render self --out self/requirements/SPEC.md --check"},"_npmUser":{"name":"GitLab CI/CD","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"gitlab","oidcConfigId":"oidc:d95ef546-042a-4e47-8029-9d3c31bbfcd6"}},"repository":{"url":"git+https://gitlab.com/Pseudorca/attest.git","type":"git"},"_npmVersion":"11.19.1","description":"TDD-native spec framework: tests are the source of truth for verification, ID-bound requirements the source of truth for intent.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","chalk":"^5.3.0","commander":"^12.1.0","typescript":"^5.5.0 || ^6.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.28.0","devDependencies":{"vite":"^8.1.5","eslint":"^9.9.0","vitest":"^4.1.11","@eslint/js":"^9.9.0","@types/node":"^20.19.0","typescript-eslint":"^8.2.0"},"peerDependencies":{"vite":"^8.0.0","vitest":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/attest_1.4.1_1789392191346_0.5231263899045968","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@am_shork/attest","version":"1.5.0","description":"TDD-native spec framework: tests are the source of truth for verification, ID-bound requirements the source of truth for intent.","type":"module","packageManager":"pnpm@10.28.0","engines":{"node":">=20.19"},"repository":{"type":"git","url":"git+https://gitlab.com/Pseudorca/attest.git"},"homepage":"https://gitlab.com/Pseudorca/attest#readme","bugs":{"url":"https://gitlab.com/Pseudorca/attest/-/issues"},"bin":{"attest":"bin/attest.js"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./define":{"types":"./dist/core/registry.d.ts","default":"./dist/core/registry.js"},"./inspect":{"types":"./dist/inspect.d.ts","default":"./dist/inspect.js"},"./package.json":"./package.json"},"publishConfig":{"access":"public"},"scripts":{"clean":"node -e \"require('fs').rmSync('dist', {recursive: true, force: true})\"","build":"pnpm run clean && tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.json --noEmit","typecheck:all":"tsc -p tsconfig.typecheck.json","test":"vitest run","test:watch":"vitest","test:consumer":"pnpm run build && vitest run --config vitest.consumer.config.ts","lint":"eslint .","prepack":"pnpm run build","prepublishOnly":"pnpm run test:consumer","attest":"node bin/attest.js","check:self":"node bin/attest.js check self","verify:self":"node bin/attest.js verify self","debug:self":"vitest run --config vitest.self.config.ts","cover:self":"node bin/attest.js cover self","render:self":"node bin/attest.js render self --out self/requirements/SPEC.md","render:self:check":"node bin/attest.js render self --out self/requirements/SPEC.md --check"},"keywords":["tdd","test-driven-development","spec","spec-driven-development","drift","requirements","traceability","requirements-traceability","ai-agent","coding-agent","agent-guardrails","vitest","typescript"],"license":"MIT","dependencies":{"chalk":"^5.3.0","commander":"^12.1.0","typescript":"^5.5.0 || ^6.0.0","zod":"^4.4.3"},"peerDependencies":{"vite":"^8.0.0","vitest":"^4.0.0"},"devDependencies":{"@eslint/js":"^9.9.0","@types/node":"^20.19.0","eslint":"^9.9.0","typescript-eslint":"^8.2.0","vite":"^8.1.5","vitest":"^4.1.11"},"pnpm":{"overrides":{"brace-expansion@<5.0.9":">=5.0.9","js-yaml@<4.3.1":">=4.3.1","nanoid@<3.3.17":">=3.3.17","postcss@<8.5.23":">=8.5.23"}},"gitHead":"79cf30102116aff7cb39f9eddfab418bdcf9b4fa","_id":"@am_shork/attest@1.5.0","_nodeVersion":"22.23.2","_npmVersion":"11.19.1","dist":{"integrity":"sha512-OAoawRKAWEHOamcJMHdEeNfySbCUDuC8gLdbjRegM6wuTR6rfwzcKQyReNFGIgRt7XJiXNFGYC/jv/Tr/SAsbg==","shasum":"6de58e6c8f5a17b666837d607244758d51b04aeb","tarball":"https://registry.npmjs.org/@am_shork/attest/-/attest-1.5.0.tgz","fileCount":83,"unpackedSize":1509973,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@am_shork%2fattest@1.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v0.2"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDsMSSf7xpyDwkVSZ6JNzHgXA9B46t2benSU9q/lT6UnwIgPs/0F9pTmZI6lDnEzNVunl02GxE6+zUuNwD0cNLIZNE="}]},"_npmUser":{"name":"GitLab CI/CD","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"gitlab","oidcConfigId":"oidc:d95ef546-042a-4e47-8029-9d3c31bbfcd6"}},"directories":{},"maintainers":[{"name":"am_shork","email":"am_shork@proton.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/attest_1.5.0_1789444319675_0.8023890453177958"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-21T05:13:49.142Z","modified":"2026-09-15T03:52:00.122Z","0.1.0":"2026-07-21T05:13:49.360Z","0.1.1":"2026-07-22T07:48:15.181Z","0.1.2":"2026-07-23T15:43:24.240Z","0.1.3":"2026-07-24T02:09:16.178Z","0.1.4":"2026-07-24T04:25:44.650Z","0.1.5":"2026-07-24T05:07:43.028Z","0.1.6":"2026-07-25T06:13:22.519Z","0.1.7":"2026-07-25T17:39:25.795Z","0.2.0":"2026-07-26T06:34:56.729Z","0.2.1":"2026-07-26T11:18:57.068Z","0.2.2":"2026-07-26T15:15:31.238Z","0.3.0":"2026-07-27T11:32:30.429Z","0.4.0":"2026-07-28T07:48:46.451Z","0.4.1":"2026-07-29T04:58:47.594Z","0.4.2":"2026-07-30T05:33:43.652Z","0.4.3":"2026-08-01T01:31:49.972Z","0.5.0":"2026-08-03T04:27:59.985Z","0.6.0":"2026-08-03T10:38:05.345Z","0.7.0":"2026-08-04T10:56:46.201Z","0.7.1":"2026-08-05T10:27:04.991Z","0.7.2":"2026-08-07T04:39:14.124Z","0.7.3":"2026-08-07T10:52:22.376Z","0.7.4":"2026-08-08T07:31:19.633Z","0.8.0":"2026-08-09T04:18:59.486Z","0.9.0":"2026-08-12T08:25:46.443Z","0.9.1":"2026-08-13T10:28:53.140Z","0.9.2":"2026-08-17T06:48:19.251Z","0.9.3":"2026-08-18T11:01:26.053Z","0.9.4":"2026-08-19T05:18:50.011Z","0.10.0":"2026-08-21T17:41:50.037Z","0.11.0":"2026-08-28T10:19:58.405Z","1.0.0":"2026-09-01T08:11:32.895Z","1.1.0":"2026-09-02T05:54:15.664Z","1.1.1":"2026-09-03T10:42:01.301Z","1.2.0":"2026-09-04T14:39:24.124Z","1.3.0":"2026-09-06T14:55:10.092Z","1.4.0":"2026-09-11T13:42:27.495Z","1.4.1":"2026-09-14T13:23:11.484Z","1.5.0":"2026-09-15T03:51:59.820Z"},"bugs":{"url":"https://gitlab.com/Pseudorca/attest/-/issues"},"license":"MIT","homepage":"https://gitlab.com/Pseudorca/attest#readme","keywords":["tdd","test-driven-development","spec","spec-driven-development","drift","requirements","traceability","requirements-traceability","ai-agent","coding-agent","agent-guardrails","vitest","typescript"],"repository":{"type":"git","url":"git+https://gitlab.com/Pseudorca/attest.git"},"description":"TDD-native spec framework: tests are the source of truth for verification, ID-bound requirements the source of truth for intent.","maintainers":[{"name":"am_shork","email":"am_shork@proton.me"}],"readme":"<p align=\"center\">\n  <img src=\"https://gitlab.com/Pseudorca/attest/-/raw/main/assets/brand/attest-logo-horizontal-auto.svg\" alt=\"Attest\" width=\"260\">\n</p>\n\nA TDD-native spec framework. **Tests are the source of truth for verification;\nID-bound requirements are the source of truth for intent.** Attest binds the two\nby a stable ID and continuously detects drift.\n\n- **Coverage** — does every requirement have ≥1 scenario? (statically, or from the run)\n- **Result** — is every test green? (from the test runner)\n- **Drift** — do intent and assertions still agree? (static + runtime cross-check)\n\nThe killer move against drift: values a requirement **promises** (timeouts,\nlimits, budgets) live **once** in its `params`, and tests read them from there —\nso a number is physically impossible to drift between the spec and the assertion.\nValues that merely tune behaviour stay ordinary constants; nothing is owed to\nanyone when a tuning knob changes. A param may be any JSON value, so a\ncomposite constant — a vendor blacklist, a `kind -> payload` table — gets the\nsame single source as a lone number, which is where drift is worst.\n\n## Why this shape, when an agent is writing the code\n\nEverything above holds whoever the author is. Three of the properties change\ncharacter when the author is not a person, and they are the reason the framework\nis shaped this way rather than as a linter:\n\n- **Intent outlives the context window.** A requirement is a file with a stable\n  id, not a paragraph in a conversation. A summarised or truncated context\n  cannot drop it, and the next session reads the same one — so \"what did we\n  agree this should do\" is answered by the tree rather than by recall.\n- **\"Done\" is not the author's to declare.** `attest archive` is the definition\n  of done, and green tests do not clear it. Every scenario of a requirement the\n  change adds must have been **observed failing** at least once — recorded in a\n  file the gate trusts and cannot regenerate from a green tree. An assertion\n  that never discriminated is the cheapest way to finish a task, and it is the\n  one thing this gate exists to refuse.\n- **Every diagnostic is a next action.** Issues carry a stable `code`, a link\n  to the section explaining that code, and a file and line wherever the finding\n  has a location — on stdout and in `--json` alike. Consumers branch on `code`,\n  never on wording, so a report is something to act on rather than something to\n  interpret, and rewording a message breaks nobody's CI.\n\nNone of that asks you to hand the work over. It is the same gate whether a person\nor an agent is on the other side of it, which is the point: the evidence a\nreviewer reads does not depend on who wrote the code.\n[Working with an agent](#working-with-an-agent) is the setup, and it is one\ncommand.\n\n## Prerequisites\n\n- Node ≥ 20.19\n- pnpm, plus `vitest` ≥ 4 and `vite` ≥ 8 (peer dependencies)\n\nThe peer range is exactly the one CI runs, which is the point of it. Older majors\nare not merely untested: `verify` relies on a `startVitest` signature that Vitest\nnarrowed by 4, and ATX-36 — reading a registry opens no listening socket — is\nasserted against the Vite that is installed, so on any other major it is a claim\nrather than a measurement. If you are on Vitest 2 or 3, stay on `0.3.x`.\n\nThe TypeScript compiler is a **bundled dependency**, not a peer — Attest reads\nyour registries and specs through the compiler API, and `typescript@7` no longer\nexposes one (its AST moved behind `typescript/unstable/*`). So the supported\nrange is `^5.5.0 || ^6.0.0`, both ends run in CI, and your own compiler is not\ninvolved: on a project already using TypeScript 5 or 6 the two resolve to one\ncopy, and on TypeScript 7 you will simply have a second one that only Attest\nuses. Your project's TypeScript version is yours to choose either way.\n\n## Getting started\n\n**Install** (the framework plus its `vitest` + `vite` peers):\n\n```bash\npnpm add -D @am_shork/attest vitest vite\n```\n\n**1. Declare a requirement** (`requirements/auth.reqs.ts`) — import the intent API\nfrom the vitest-free `/define` subpath so registry loading never touches the\nruntime. A registry is a **literal**: every value is written where you can read\nit, because the commands below read it without executing it\n([why](https://gitlab.com/Pseudorca/attest/-/blob/main/docs/en/cli-reference.md#a-registry-is-a-literal)).\n\n```ts\nimport { defineRequirements } from '@am_shork/attest/define';\n\nexport default defineRequirements({\n  'AUTH-3': {\n    statement:\n      'The system SHALL expire a session after {idleTimeoutMin} minutes of inactivity.',\n    rationale: 'Security: limit the exposure window of an unattended session.',\n    params: { idleTimeoutMin: 30 }, // the single source for this number\n  },\n});\n```\n\n**2. Attest it with scenarios** (`session.spec.ts`):\n\n```ts\nimport { expect } from 'vitest';\nimport { requirement, scenario } from '@am_shork/attest';\nimport reqs from './requirements/auth.reqs.js';\nimport { createSession, advance, touch, isValid } from './session.js';\n\nrequirement('AUTH-3', () => {\n  scenario('idle timeout invalidates the session', () => {\n    const t = reqs['AUTH-3'].params.idleTimeoutMin; // single source, typed `30` — no cast\n    const s = createSession();\n    advance(s, t + 1, 'minutes');\n    expect(isValid(s, t)).toBe(false);\n  });\n\n  scenario('activity resets the idle timer', () => {\n    const t = reqs['AUTH-3'].params.idleTimeoutMin;\n    const s = createSession();\n    advance(s, t - 1, 'minutes');\n    touch(s);\n    advance(s, t - 1, 'minutes');\n    expect(isValid(s, t)).toBe(true);\n  });\n});\n```\n\nBoth files above are quoted from `fixtures/consumer/`, which the packaging test\ninstalls from a real tarball and runs — a test asserts the quotes are byte-equal\nto the files, so a sample the engine would now reject cannot survive here.\n\n**3. Run the engine:**\n\n```bash\nattest check    # static: orphan tests, uncovered requirements, unbound params\n                # (reads your registry; runs none of your code)\nattest verify   # run tests + coverage + drift, graded report\n                # (runs only the spec files that declare a requirement())\nattest cover    # which requirements lack a scenario\nattest render   # the requirements as Markdown, for people who don't read TS\nattest archive <change>   # gate a proposed change: green + covered + no drift\nattest status <change>    # per added id: scenario written? seen red? (part of that\n                          # gate, without running anything — never a verdict)\n```\n\nEvery command takes the project root as an optional last argument, and `--json`\nfor exactly one machine-readable document on stdout. Flags, per-command\nbehaviour and the JSON shape are in the\n[CLI reference](https://gitlab.com/Pseudorca/attest/-/blob/main/docs/en/cli-reference.md).\n\nReading a param is necessary and **not sufficient** — an assertion that\nrecomputes its expectation from the same param the code just read has no\nindependent term, and a scenario that loops over a list param covers exactly\nthat list. Both have a known shape and a known repair, and both are in\n[Judging your own intent layer](https://gitlab.com/Pseudorca/attest/-/blob/main/docs/en/intent-quality.md#writing-a-param-that-pins-something),\nalong with the decision table — the shape a composite param is best at.\n\n## Working with an agent\n\nThe engine above is only half the framework. The other half is the workflow —\nagree on intent, write the delta, drive the scenarios red, then implement to\ngreen — and it is written for an agent to follow:\n\n```bash\nattest init                    # .claude/skills/attest/SKILL.md\nattest init --target cursor    # .cursor/rules/attest.mdc\nattest init --target copilot   # .github/instructions/attest.instructions.md\n```\n\n\"Every scenario has been seen to fail\" is enforced rather than advised:\n`archive` records how each of a change's scenarios ended in every run it\nobserves, into `changes/<name>/first-run.json`, and blocks with `never-red` on\nany requirement the delta adds whose scenarios were never seen to fail. Commit\n`first-run.json` with the change — it is the evidence, and CI has to reach the\nsame verdict as you do.\n\n**It does not require you to write the test first.** A recorded failure is\npermanent and a recorded pass is not, so a failure observed after the\nimplementation exists satisfies the gate exactly like one observed before it:\nif you wrote the intent, the scenario and the code together, remove the\nimplementation, run `archive`, and put it back. What is enforced is that the\nassertion can fail — not the order you worked in.\n\n**Before any of that, in Claude Code, there is a plugin.** This repository is\nits own plugin marketplace, and what it hosts is a *setup* helper — not a second\ncopy of the workflow:\n\n```shell\n/plugin marketplace add https://gitlab.com/Pseudorca/attest.git\n/plugin install attest-setup@attest\n```\n\nIt knows what Attest is, what to install, and to run `attest init` — and then it\nsays so and stops. **The workflow is deliberately not shipped as a plugin.** A\nplugin installs per-user, so a teammate who does not have it would see nothing\nand no file in the repository would record which workflow was followed. The\ndocument `init` writes is committed to your project, which is the whole point of\nwriting it there.\n\nAn agent loads the document on its own — its description is already in the\nagent's context, or its path matches what you have open — so nothing has to be\nfound or pasted. See\n[`attest init`](https://gitlab.com/Pseudorca/attest/-/blob/main/docs/en/cli-reference.md#attest-init)\nfor the targets and what `init` deliberately does not write.\n\n## When something goes wrong\n\nEvery diagnostic carries a `code`, and every code has a section in\n**Troubleshooting** — which the diagnostic itself links to:\n\n```\nERROR   registry-not-static (requirements/upload.reqs.ts:5)\n    Value is not a literal.\n    → https://gitlab.com/Pseudorca/attest/-/blob/v1.5.0/docs/en/troubleshooting.md#registry-not-static\n```\n\nThe anchor **is** the code, so the link cannot point somewhere the section\nisn't. In `--json` the same link is on each issue as `docsUrl`.\n\n## Documentation\n\n| Document | English | 中文 |\n|---|---|---|\n| **CLI reference** — every command, flag and JSON field | [en](https://gitlab.com/Pseudorca/attest/-/blob/main/docs/en/cli-reference.md) | [中文](https://gitlab.com/Pseudorca/attest/-/blob/main/docs/zh/cli-reference.md) |\n| **Troubleshooting** — one section per issue code | [en](https://gitlab.com/Pseudorca/attest/-/blob/main/docs/en/troubleshooting.md) | [中文](https://gitlab.com/Pseudorca/attest/-/blob/main/docs/zh/troubleshooting.md) |\n| **Design** — the authoritative design of the framework | [en](https://gitlab.com/Pseudorca/attest/-/blob/main/docs/en/attest-design.md) | [中文](https://gitlab.com/Pseudorca/attest/-/blob/main/docs/zh/attest-design.md) |\n| **Judging your own intent layer** — what no gate checks, and a method for it | [en](https://gitlab.com/Pseudorca/attest/-/blob/main/docs/en/intent-quality.md) | [中文](https://gitlab.com/Pseudorca/attest/-/blob/main/docs/zh/intent-quality.md) |\n| **Feedback template** — report how adoption actually went | [en](https://gitlab.com/Pseudorca/attest/-/blob/main/docs/en/feedback.template.md) | [中文](https://gitlab.com/Pseudorca/attest/-/blob/main/docs/zh/feedback.template.md) |\n\nThe change workflow is not here: it is what `attest init` writes into your\nproject, as a skill, a rule or an instructions file, depending on which agent\nreads it.\n\n## Development\n\n```bash\npnpm install\npnpm build       # tsc -> dist/\npnpm test        # vitest run (the framework's own unit tests)\npnpm typecheck\npnpm lint\n```\n\n### Dogfooding\n\nAttest describes its own behaviour under [`self/`](https://gitlab.com/Pseudorca/attest/-/tree/main/self) and verifies itself:\n\n```bash\npnpm verify:self   # attest verify self  -> all green\n```\n\n### Packaging test\n\n`pnpm test:consumer` packs a real tarball, `npm install`s it into a throwaway\nproject outside the repo, and drives the installed CLI against\n[`fixtures/consumer/`](https://gitlab.com/Pseudorca/attest/-/tree/main/fixtures/consumer). It is the only test that exercises\nthe published surface — the `files` allowlist, the `exports` map, the `bin`\nlauncher, peer resolution from a foreign `node_modules` — so it is what catches\n\"green in-repo, broken once installed\" bugs. It needs network and is excluded\nfrom `pnpm test`; it runs in CI and as `prepublishOnly`.\n\n## Feedback\n\nAdoption reports drive the roadmap. After using Attest on a real project, fill in\nthe feedback template (linked above) and open it as an issue — it is also the\n**Usage feedback** issue template. It covers greenfield and mid-project adoption\nalike, and ends with a prompt to run inside the adopting repo that fills most of\nthe report automatically and probes for problems you haven't hit yet. The\nhighest-value part is **false negatives**: drift the engine should have caught\nand didn't.\n\n## Acknowledgments\n\nAttest's architecture — the four-stage truth engine (AST parse → graded\nvalidation → diff-first delta apply → archive gate) and its diff-first change\nmodel — is adapted from [OpenSpec](https://github.com/Fission-AI/OpenSpec) (MIT),\nswapping two parts: parsing moves to the TypeScript Compiler API, and `verify`\nbecomes running the tests. The design is re-implemented from scratch; no\nOpenSpec source code is included.\n\n## License\n\n[MIT](https://gitlab.com/Pseudorca/attest/-/blob/main/LICENSE)\n","readmeFilename":"README.md"}