{"_id":"@adjudicate/audit","_rev":"11-5ab02a4eb3c6e5c6d0d89f40e9674be3","name":"@adjudicate/audit","dist-tags":{"latest":"8.0.0"},"versions":{"1.0.0":{"name":"@adjudicate/audit","version":"1.0.0","_id":"@adjudicate/audit@1.0.0","maintainers":[{"name":"brunoro","email":"bnocesar@gmail.com"}],"dist":{"shasum":"c5b32dabbcb819efef99fb4e7a4489c23898784e","tarball":"https://registry.npmjs.org/@adjudicate/audit/-/audit-1.0.0.tgz","fileCount":129,"integrity":"sha512-ctAViamf4DPvY/28ygDYF8dg4EJR+/BpHEkwQ7B6YsWpYiQ73UWqMLxsB90K+OIoB8/YOzclfpbnHIIDrHntSw==","signatures":[{"sig":"MEQCIEZSQUenXOA/47RkBSilMDgtxdTJXxqX32l0LSoMwq6TAiBAhrriWW1MD0YTd8ggbXukMj0VghhfFxNWSP7D0UzwFQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":490969},"main":"./dist/index.js","type":"module","_from":"file:adjudicate-audit-1.0.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"lint":"tsc --noEmit && eslint \"src/**/*.ts\"","test":"vitest run","build":"tsc --outDir dist"},"_npmUser":{"name":"brunoro","email":"bnocesar@gmail.com"},"_resolved":"/private/var/folders/qy/5nvvb1h93ks26dzx6fzypss80000gn/T/561acc79620ad7574a02c99e5f14f757/adjudicate-audit-1.0.0.tgz","_integrity":"sha512-ctAViamf4DPvY/28ygDYF8dg4EJR+/BpHEkwQ7B6YsWpYiQ73UWqMLxsB90K+OIoB8/YOzclfpbnHIIDrHntSw==","_npmVersion":"11.10.0","description":"Execution Ledger + durable audit sinks + replay harness.","directories":{},"_nodeVersion":"25.6.1","dependencies":{"@adjudicate/core":"1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0","vitest":"^3.2.0","typescript":"^5.9.0","@eslint/eslintrc":"^3.0.0","@vitest/coverage-v8":"^3.2.0","@adjudicate/admin-sdk":"1.0.0","@adjudicate/eslint-config":"0.0.1"},"peerDependencies":{"@adjudicate/admin-sdk":"1.0.0"},"peerDependenciesMeta":{"@adjudicate/admin-sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/audit_1.0.0_1779418978249_0.389476227861679","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@adjudicate/audit","version":"1.0.1","_id":"@adjudicate/audit@1.0.1","maintainers":[{"name":"brunoro","email":"bnocesar@gmail.com"}],"dist":{"shasum":"278d70ef682cfe0cba0f26e3f233f32bef1d5b8f","tarball":"https://registry.npmjs.org/@adjudicate/audit/-/audit-1.0.1.tgz","fileCount":129,"integrity":"sha512-9MsRODx4L0KwOTbjPd6he7M7pUoWAbtcIwWTT2UBTS9x43FlQQ8AG3sIEWJJcOh7e4CYdWciFAIU93G4ytWDhQ==","signatures":[{"sig":"MEUCIQCGKDNgEO9X+TRUtvOYF4t/n689CG5Bh8KVcA4YlIynXQIgQN7YbpGik1t0vIo6Vaq6JxloBbdcuHBbgWM49URbZYg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":490969},"main":"./dist/index.js","type":"module","_from":"file:adjudicate-audit-1.0.1.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"lint":"tsc --noEmit && eslint \"src/**/*.ts\"","test":"vitest run","build":"tsc --outDir dist"},"_npmUser":{"name":"brunoro","email":"bnocesar@gmail.com"},"_resolved":"/private/var/folders/qy/5nvvb1h93ks26dzx6fzypss80000gn/T/8ce7e7d6dcd5ff7df57baf26884a6335/adjudicate-audit-1.0.1.tgz","_integrity":"sha512-9MsRODx4L0KwOTbjPd6he7M7pUoWAbtcIwWTT2UBTS9x43FlQQ8AG3sIEWJJcOh7e4CYdWciFAIU93G4ytWDhQ==","_npmVersion":"11.10.0","description":"Execution Ledger + durable audit sinks + replay harness.","directories":{},"_nodeVersion":"25.6.1","dependencies":{"@adjudicate/core":"1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0","vitest":"^3.2.0","typescript":"^5.9.0","@eslint/eslintrc":"^3.0.0","@vitest/coverage-v8":"^3.2.0","@adjudicate/admin-sdk":"1.0.0","@adjudicate/eslint-config":"0.0.1"},"peerDependencies":{"@adjudicate/admin-sdk":"1.0.0"},"peerDependenciesMeta":{"@adjudicate/admin-sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/audit_1.0.1_1779419638419_0.24575217675791805","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@adjudicate/audit","version":"1.1.0","_id":"@adjudicate/audit@1.1.0","maintainers":[{"name":"brunoro","email":"bnocesar@gmail.com"}],"dist":{"shasum":"5accc84532943bfef33e377066097ca7657a149a","tarball":"https://registry.npmjs.org/@adjudicate/audit/-/audit-1.1.0.tgz","fileCount":129,"integrity":"sha512-Qsh55aSExKx9B23NJlO2z7A+AMa3Pj8tyCCKQ4yA2OE4edExn5x/9ZRWed1SJbQgU63mifNEtQHFzhaV7mRjcA==","signatures":[{"sig":"MEUCICJ/Jvqs72vfUfjwdZ2lqquOyaKLbPBlxg3AxwXGtKVRAiEA3w7xG2V6mT+IN28nhIfyGIPnes17Vb1Jue79a4V/UOs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":511395},"main":"./dist/index.js","type":"module","_from":"file:adjudicate-audit-1.1.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"lint":"tsc --noEmit && eslint \"src/**/*.ts\"","test":"vitest run","build":"tsc --outDir dist"},"_npmUser":{"name":"brunoro","email":"bnocesar@gmail.com"},"_resolved":"/private/var/folders/qy/5nvvb1h93ks26dzx6fzypss80000gn/T/f61e27c0d981194d08b19951b615060f/adjudicate-audit-1.1.0.tgz","_integrity":"sha512-Qsh55aSExKx9B23NJlO2z7A+AMa3Pj8tyCCKQ4yA2OE4edExn5x/9ZRWed1SJbQgU63mifNEtQHFzhaV7mRjcA==","_npmVersion":"11.10.0","description":"Execution Ledger + durable audit sinks + replay harness.","directories":{},"_nodeVersion":"25.6.1","dependencies":{"@adjudicate/core":"1.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0","vitest":"^3.2.0","typescript":"^5.9.0","@eslint/eslintrc":"^3.0.0","@vitest/coverage-v8":"^3.2.0","@adjudicate/admin-sdk":"1.1.0","@adjudicate/eslint-config":"0.0.1"},"peerDependencies":{"@adjudicate/admin-sdk":"1.1.0"},"peerDependenciesMeta":{"@adjudicate/admin-sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/audit_1.1.0_1779723513832_0.055557158111285254","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@adjudicate/audit","version":"2.0.0","_id":"@adjudicate/audit@2.0.0","maintainers":[{"name":"brunoro","email":"bnocesar@gmail.com"}],"dist":{"shasum":"3b136f295d39592c5d55ad4cc18a9762f3c59f70","tarball":"https://registry.npmjs.org/@adjudicate/audit/-/audit-2.0.0.tgz","fileCount":135,"integrity":"sha512-CkeNNuTkO0Uc3lFF8D8dZHQph4VvBiFFv/sikZcHOsbz9f6qrslXCCC6ll9zV5gZgRNymhn1jWrQnzBSDvKPLg==","signatures":[{"sig":"MEYCIQCF1ZmRfHBYXmwsR9+H34/yNiCjbJkLQlGMkFx7C4Z1wgIhAIyBPiJmVDmXR7b5NCRMxm87Nkubbn/Vey6K/GypIzIf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":585247},"main":"./dist/index.js","type":"module","_from":"file:adjudicate-audit-2.0.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"lint":"tsc --noEmit && eslint \"src/**/*.ts\"","test":"vitest run","build":"tsc --outDir dist"},"_npmUser":{"name":"brunoro","email":"bnocesar@gmail.com"},"_resolved":"/private/tmp/claude-501/b8e41c3c571024ac4e839b3270a52955/adjudicate-audit-2.0.0.tgz","_integrity":"sha512-CkeNNuTkO0Uc3lFF8D8dZHQph4VvBiFFv/sikZcHOsbz9f6qrslXCCC6ll9zV5gZgRNymhn1jWrQnzBSDvKPLg==","_npmVersion":"11.10.0","description":"Execution Ledger + durable audit sinks + replay harness.","directories":{},"_nodeVersion":"25.6.1","dependencies":{"@adjudicate/core":"1.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0","vitest":"^3.2.0","typescript":"^5.9.0","@eslint/eslintrc":"^3.0.0","@vitest/coverage-v8":"^3.2.0","@adjudicate/admin-sdk":"2.0.0","@adjudicate/eslint-config":"0.0.1"},"peerDependencies":{"@adjudicate/admin-sdk":"2.0.0"},"peerDependenciesMeta":{"@adjudicate/admin-sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/audit_2.0.0_1780624414870_0.7039882323829214","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"@adjudicate/audit","version":"2.0.1","_id":"@adjudicate/audit@2.0.1","maintainers":[{"name":"brunoro","email":"bnocesar@gmail.com"}],"dist":{"shasum":"1d8b260bf4ef9533753ba2046d3326c681000d9d","tarball":"https://registry.npmjs.org/@adjudicate/audit/-/audit-2.0.1.tgz","fileCount":135,"integrity":"sha512-cAVQG0nm84KKNsUXU30YvhJCphWyy+xDopfbeX0xw1ErxAIZwAPDdkzAYdk3HX3NMXBVCibtCxfjuZMLFpimrQ==","signatures":[{"sig":"MEUCIQCZ3MDVHq3EYl+ixzve6NY9DJblTNzZeFafIOkP38XoGwIgPHwGskmU+rKXZxtJT5/CdbPXZ1NfLbk6KgjqdttIg4c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":585732},"main":"./dist/index.js","type":"module","_from":"file:adjudicate-audit-2.0.1.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"lint":"tsc --noEmit && eslint \"src/**/*.ts\"","test":"vitest run","build":"tsc --outDir dist"},"_npmUser":{"name":"brunoro","email":"bnocesar@gmail.com"},"_resolved":"/private/var/folders/qy/5nvvb1h93ks26dzx6fzypss80000gn/T/aca8965855f505dae7f82e0d62a67838/adjudicate-audit-2.0.1.tgz","_integrity":"sha512-cAVQG0nm84KKNsUXU30YvhJCphWyy+xDopfbeX0xw1ErxAIZwAPDdkzAYdk3HX3NMXBVCibtCxfjuZMLFpimrQ==","_npmVersion":"11.10.0","description":"Execution Ledger + durable audit sinks + replay harness.","directories":{},"_nodeVersion":"25.6.1","dependencies":{"@adjudicate/core":"1.3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0","vitest":"^3.2.0","typescript":"^5.9.0","@eslint/eslintrc":"^3.0.0","@vitest/coverage-v8":"^3.2.0","@adjudicate/admin-sdk":"2.1.0","@adjudicate/eslint-config":"0.0.1"},"peerDependencies":{"@adjudicate/admin-sdk":"2.1.0"},"peerDependenciesMeta":{"@adjudicate/admin-sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/audit_2.0.1_1780863193747_0.665808102251843","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"@adjudicate/audit","version":"3.0.0","_id":"@adjudicate/audit@3.0.0","maintainers":[{"name":"brunoro","email":"bnocesar@gmail.com"}],"dist":{"shasum":"c555a8bc362dbe3fa54a292cf9b94627f2aa26bf","tarball":"https://registry.npmjs.org/@adjudicate/audit/-/audit-3.0.0.tgz","fileCount":135,"integrity":"sha512-vSDFtQ+YnQDo2kHUDtPLuhl8+b6nNCt4uO/+WMKM/wovmy0F3h2ylG7oGW6Azm8W75LPYqdRrCHRkSk0gVzGmw==","signatures":[{"sig":"MEQCICUH8LbXB1kMH4LpV3s8+wUZmCa3Szp0QKYX2kCnZNiVAiA/9ySIpMvzXkO4sX1QpR36Z6vL2Jq3Qf/izAQotL6EIg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":585854},"main":"./dist/index.js","type":"module","_from":"file:adjudicate-audit-3.0.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"lint":"tsc --noEmit && eslint \"src/**/*.ts\"","test":"vitest run","build":"tsc --outDir dist"},"_npmUser":{"name":"brunoro","email":"bnocesar@gmail.com"},"_resolved":"/private/var/folders/qy/5nvvb1h93ks26dzx6fzypss80000gn/T/fe333e4652867746c7d819d9701bdde4/adjudicate-audit-3.0.0.tgz","_integrity":"sha512-vSDFtQ+YnQDo2kHUDtPLuhl8+b6nNCt4uO/+WMKM/wovmy0F3h2ylG7oGW6Azm8W75LPYqdRrCHRkSk0gVzGmw==","_npmVersion":"11.10.0","description":"Execution Ledger + durable audit sinks + replay harness.","directories":{},"_nodeVersion":"25.6.1","dependencies":{"@adjudicate/core":"1.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0","vitest":"^3.2.0","typescript":"^5.9.0","@eslint/eslintrc":"^3.0.0","@vitest/coverage-v8":"^3.2.0","@adjudicate/admin-sdk":"3.0.0","@adjudicate/eslint-config":"0.0.1"},"peerDependencies":{"@adjudicate/admin-sdk":"3.0.0"},"peerDependenciesMeta":{"@adjudicate/admin-sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/audit_3.0.0_1781667824822_0.8113819320938653","host":"s3://npm-registry-packages-npm-production"}},"4.0.0":{"name":"@adjudicate/audit","version":"4.0.0","_id":"@adjudicate/audit@4.0.0","maintainers":[{"name":"brunoro","email":"bnocesar@gmail.com"}],"dist":{"shasum":"7206d26a8c6bc7256dda62ffb2550f1d82d554e5","tarball":"https://registry.npmjs.org/@adjudicate/audit/-/audit-4.0.0.tgz","fileCount":135,"integrity":"sha512-lDcuvuH7FMN7l6XgEFltr3wtveBh/U+yc982wCq6eNLkDAxZ0o1b46Osgp1i9v0lNfJb140HaPBWzjyk3z+Lgg==","signatures":[{"sig":"MEQCIFyffRdiCzvxk2BO9O2Z0suq87ZPnDqz0XZpzCWNr6MQAiBjirNgG3MxZmLNNvUNCKyh74tVKmkmb1BKcbtw5ZKbnQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":709155},"main":"./dist/index.js","type":"module","_from":"file:adjudicate-audit-4.0.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"lint":"tsc --noEmit && eslint \"src/**/*.ts\"","test":"vitest run","build":"tsc --outDir dist"},"_npmUser":{"name":"brunoro","email":"bnocesar@gmail.com"},"_resolved":"/private/var/folders/qy/5nvvb1h93ks26dzx6fzypss80000gn/T/e8e482bd66f4b1db54922936814559f2/adjudicate-audit-4.0.0.tgz","_integrity":"sha512-lDcuvuH7FMN7l6XgEFltr3wtveBh/U+yc982wCq6eNLkDAxZ0o1b46Osgp1i9v0lNfJb140HaPBWzjyk3z+Lgg==","_npmVersion":"11.10.0","description":"Execution Ledger + durable audit sinks + replay harness.","directories":{},"_nodeVersion":"25.6.1","dependencies":{"@adjudicate/core":"1.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0","vitest":"^3.2.0","typescript":"^5.9.0","@eslint/eslintrc":"^3.0.0","@vitest/coverage-v8":"^3.2.0","@adjudicate/admin-sdk":"4.0.0","@adjudicate/eslint-config":"0.0.1"},"peerDependencies":{"@adjudicate/admin-sdk":"4.0.0"},"peerDependenciesMeta":{"@adjudicate/admin-sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/audit_4.0.0_1782275522115_0.755990010401016","host":"s3://npm-registry-packages-npm-production"}},"5.0.0":{"name":"@adjudicate/audit","version":"5.0.0","_id":"@adjudicate/audit@5.0.0","maintainers":[{"name":"brunoro","email":"bnocesar@gmail.com"}],"dist":{"shasum":"9c1603ac090c396695fea85d90cdcee4cacbc2b3","tarball":"https://registry.npmjs.org/@adjudicate/audit/-/audit-5.0.0.tgz","fileCount":135,"integrity":"sha512-pSnDA0J40GsQ1sCZZxVF8guKTNL/uVl+1FxaVw4Q2zYMZhjLuZL419sFzZE3nQBTZXaeL29Owj+d6LbQR/V2sQ==","signatures":[{"sig":"MEUCIQCix8678snokfNf6CQTc0ocAllCgvOEYC8XU6taksE6vgIgb4xo7A5dGbR0UIR6Q92Od7UgV8hzd05b9xDCzcvRbvk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":709277},"main":"./dist/index.js","type":"module","_from":"file:adjudicate-audit-5.0.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"lint":"tsc --noEmit && eslint \"src/**/*.ts\"","test":"vitest run","build":"tsc --outDir dist"},"_npmUser":{"name":"brunoro","email":"bnocesar@gmail.com"},"_resolved":"/private/var/folders/qy/5nvvb1h93ks26dzx6fzypss80000gn/T/d97b006a9faf5109b5b4fd05bdf50c7f/adjudicate-audit-5.0.0.tgz","_integrity":"sha512-pSnDA0J40GsQ1sCZZxVF8guKTNL/uVl+1FxaVw4Q2zYMZhjLuZL419sFzZE3nQBTZXaeL29Owj+d6LbQR/V2sQ==","_npmVersion":"11.10.0","description":"Execution Ledger + durable audit sinks + replay harness.","directories":{},"_nodeVersion":"25.6.1","dependencies":{"@adjudicate/core":"1.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0","vitest":"^3.2.0","typescript":"^5.9.0","@eslint/eslintrc":"^3.0.0","@vitest/coverage-v8":"^3.2.0","@adjudicate/admin-sdk":"5.0.0","@adjudicate/eslint-config":"0.0.1"},"peerDependencies":{"@adjudicate/admin-sdk":"5.0.0"},"peerDependenciesMeta":{"@adjudicate/admin-sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/audit_5.0.0_1782443659632_0.11145945722137784","host":"s3://npm-registry-packages-npm-production"}},"6.0.0":{"name":"@adjudicate/audit","version":"6.0.0","_id":"@adjudicate/audit@6.0.0","maintainers":[{"name":"brunoro","email":"bnocesar@gmail.com"}],"dist":{"shasum":"fbc3546a954acfb549dd79ed247ff9b385c173c9","tarball":"https://registry.npmjs.org/@adjudicate/audit/-/audit-6.0.0.tgz","fileCount":132,"integrity":"sha512-Q2v3jpff74p190uh0tjAdrWkTSXLYOjbZD/n2X1l87YOKjtzsoQqqUtawO5axjVKsXnHnG7+y5CFlAOVcaxxcg==","signatures":[{"sig":"MEUCIFsY8zna69wM96sBt52SFfNYEeWlO8bbo5OFdy1+pDGLAiEA6Rc8WHG4znOjnoPwAOSMFz1pLO3GMyTHXPC8wRzsjbg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":707162},"main":"./dist/index.js","type":"module","_from":"file:adjudicate-audit-6.0.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"lint":"tsc --noEmit && eslint \"src/**/*.ts\"","test":"vitest run","build":"tsc --outDir dist"},"_npmUser":{"name":"brunoro","email":"bnocesar@gmail.com"},"_resolved":"/tmp/2ba01344d7ffd3b40a3aec5f72fa8f1c/adjudicate-audit-6.0.0.tgz","_integrity":"sha512-Q2v3jpff74p190uh0tjAdrWkTSXLYOjbZD/n2X1l87YOKjtzsoQqqUtawO5axjVKsXnHnG7+y5CFlAOVcaxxcg==","_npmVersion":"10.9.8","description":"Execution Ledger + durable audit sinks + replay harness.","directories":{},"_nodeVersion":"22.23.0","dependencies":{"@adjudicate/core":"1.7.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0","vitest":"^3.2.0","typescript":"^5.9.0","@eslint/eslintrc":"^3.0.0","@vitest/coverage-v8":"^3.2.0","@adjudicate/admin-sdk":"6.0.0","@adjudicate/eslint-config":"0.0.1"},"peerDependencies":{"@adjudicate/admin-sdk":"6.0.0"},"peerDependenciesMeta":{"@adjudicate/admin-sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/audit_6.0.0_1782665458451_0.6949272424228068","host":"s3://npm-registry-packages-npm-production"}},"7.0.0":{"name":"@adjudicate/audit","version":"7.0.0","_id":"@adjudicate/audit@7.0.0","maintainers":[{"name":"brunoro","email":"bnocesar@gmail.com"}],"dist":{"shasum":"21e7bc80c3bfcf96f8948ab2da87281491d4b647","tarball":"https://registry.npmjs.org/@adjudicate/audit/-/audit-7.0.0.tgz","fileCount":132,"integrity":"sha512-eiPMorAeKV+0eekZ56h9wy5XVg79DSFfbUVqbEawB/774usQUuT/NX0mC2E9Sf4rTo4Y7NzkI1lEFYGhWGtCWw==","signatures":[{"sig":"MEYCIQCZlxaNpZs56h14atDehoLtMqDZuV3o2KIHX57uPtutjgIhAPsNp/ktXmca3MutNJdLdDbGjxFT4Bp+UTzawZLnM13m","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":707284},"main":"./dist/index.js","type":"module","_from":"file:adjudicate-audit-7.0.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"lint":"tsc --noEmit && eslint \"src/**/*.ts\"","test":"vitest run","build":"tsc --outDir dist"},"_npmUser":{"name":"brunoro","email":"bnocesar@gmail.com"},"_resolved":"/tmp/6322519145da089b4248ff83b8123c44/adjudicate-audit-7.0.0.tgz","_integrity":"sha512-eiPMorAeKV+0eekZ56h9wy5XVg79DSFfbUVqbEawB/774usQUuT/NX0mC2E9Sf4rTo4Y7NzkI1lEFYGhWGtCWw==","_npmVersion":"10.9.8","description":"Execution Ledger + durable audit sinks + replay harness.","directories":{},"_nodeVersion":"22.23.0","dependencies":{"@adjudicate/core":"1.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.0.0","vitest":"^3.2.0","typescript":"^5.9.0","@eslint/eslintrc":"^3.0.0","@vitest/coverage-v8":"^3.2.0","@adjudicate/admin-sdk":"7.0.0","@adjudicate/eslint-config":"0.0.1"},"peerDependencies":{"@adjudicate/admin-sdk":"7.0.0"},"peerDependenciesMeta":{"@adjudicate/admin-sdk":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/audit_7.0.0_1782870197690_0.8740636528526102","host":"s3://npm-registry-packages-npm-production"}},"8.0.0":{"name":"@adjudicate/audit","version":"8.0.0","publishConfig":{"access":"public"},"type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"dependencies":{"@adjudicate/core":"1.9.0"},"peerDependencies":{"@adjudicate/admin-sdk":"8.0.0"},"peerDependenciesMeta":{"@adjudicate/admin-sdk":{"optional":true}},"devDependencies":{"@eslint/eslintrc":"^3.0.0","@vitest/coverage-v8":"^3.2.0","eslint":"^9.0.0","typescript":"^5.9.0","vitest":"^3.2.0","@adjudicate/eslint-config":"0.0.1","@adjudicate/admin-sdk":"8.0.0"},"scripts":{"build":"tsc --outDir dist","lint":"tsc --noEmit && eslint \"src/**/*.ts\"","test":"vitest run"},"_id":"@adjudicate/audit@8.0.0","description":"Execution Ledger + durable audit sinks + replay harness.","_integrity":"sha512-gh1798P7H5f6lp3Fnb8PsXqqaMi2Yd1F/SYmq72RNNwJz47ytrhYc79nchrchs2TZooDI0DE0F5ks9A4cIQJow==","_resolved":"/tmp/ff873f2dc7268f43b43b80f9261b2843/adjudicate-audit-8.0.0.tgz","_from":"file:adjudicate-audit-8.0.0.tgz","_nodeVersion":"22.23.1","_npmVersion":"10.9.8","dist":{"integrity":"sha512-gh1798P7H5f6lp3Fnb8PsXqqaMi2Yd1F/SYmq72RNNwJz47ytrhYc79nchrchs2TZooDI0DE0F5ks9A4cIQJow==","shasum":"d610d0de4f590376cac4841e315dc439fe946cde","tarball":"https://registry.npmjs.org/@adjudicate/audit/-/audit-8.0.0.tgz","fileCount":132,"unpackedSize":707406,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIDIcrUIOdynB3d1X/7fy+SX/WCslcIv4UCTKmlFnAwLVAiEA1Vr96c4iVAz3gHoXJeM/2wQsyKF2uVXTQiKHia6jhdM="}]},"_npmUser":{"name":"brunoro","email":"bnocesar@gmail.com"},"directories":{},"maintainers":[{"name":"brunoro","email":"bnocesar@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/audit_8.0.0_1783002072941_0.532907578871511"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-22T03:02:58.111Z","modified":"2026-07-02T14:21:13.229Z","1.0.0":"2026-05-22T03:02:58.435Z","1.0.1":"2026-05-22T03:13:58.599Z","1.1.0":"2026-05-25T15:38:34.018Z","2.0.0":"2026-06-05T01:53:35.066Z","2.0.1":"2026-06-07T20:13:13.943Z","3.0.0":"2026-06-17T03:43:45.154Z","4.0.0":"2026-06-24T04:32:02.281Z","5.0.0":"2026-06-26T03:14:19.833Z","6.0.0":"2026-06-28T16:50:58.663Z","7.0.0":"2026-07-01T01:43:17.832Z","8.0.0":"2026-07-02T14:21:13.091Z"},"description":"Execution Ledger + durable audit sinks + replay harness.","maintainers":[{"name":"brunoro","email":"bnocesar@gmail.com"}],"readme":"# @adjudicate/audit\n\nExecution Ledger + durable audit sinks + replay harness.\n\n## Ledger vs Sink — two concerns, two primitives\n\n| | Purpose | Backend (v1.0) | TTL | Authority |\n|---|---|---|---|---|\n| **Execution Ledger** | Hot-path replay/dedup: \"has `intentHash` already executed?\" | Redis (`SET NX` + JSON blob) | 14 days | **Execution dedup only** — not the governance record of truth |\n| **Audit Sink** | Durable governance trail: \"what happened, why, on what basis?\" | `ConsoleSink`, `NatsSink`, `PostgresSink` (opt-in `@adjudicate/audit-postgres`) | Permanent / stream-lifetime | **Governance record of truth** |\n\n**Do not conflate them.** Redis is not a durable audit substrate. If the\nledger is ever lost, execution dedup regresses (retries may duplicate). Audit\nrecords stay intact because Sinks persist independently.\n\n## Execution Ledger\n\n```ts\nimport { createRedisLedger, createMemoryLedger } from \"@adjudicate/audit\";\n\nconst ledger = createRedisLedger({\n  client: myRedisClient,               // exposes `set(key, value, options)` + `get(key)`\n  keyFor: (suffix) => rk(suffix),      // adopter-supplied namespacer\n  ttlSeconds: 14 * 24 * 60 * 60,       // default 14 days\n});\n\nconst hit = await ledger.checkLedger(envelope.intentHash);\nif (hit) return { alreadyExecuted: true, at: hit.at };\n\nawait ledger.recordExecution({\n  intentHash: envelope.intentHash,\n  resourceVersion: orderVersion,\n  sessionId: envelope.actor.sessionId,\n  kind: envelope.kind,\n});\n```\n\nSET NX + TTL. First writer wins. Memory implementation available for tests.\n\n## Audit Sinks\n\n```ts\nimport { createConsoleSink, createNatsSink, multiSink } from \"@adjudicate/audit\";\n\nconst sink = multiSink(\n  createConsoleSink({ prefix: \"[audit]\" }),\n  createNatsSink({ publisher: myNatsPublisher }),\n);\n\nawait sink.emit(auditRecord);\n```\n\n### Fan-out + decoration helpers\n\n| Helper | Semantics | Use when |\n|---|---|---|\n| `multiSink(...)` (T3 default = **strict**) | At-least-once. Throws `AuditSinkError` if any inner sink rejects. Each rejection also records a `recordSinkFailure({ subject: \"multiSink[i]\" })` telemetry event. | Default for governance-grade audit. The framework's \"every decision is reconstructable\" claim. |\n| `multiSinkStrict(...)` | Alias for `multiSink`. Kept for adopters that already opted in to strict explicitly. | (Same as `multiSink`.) |\n| `multiSinkLossy(...)` | **Explicit fail-open** (the pre-T3 `multiSink` behaviour). Per-sink rejections still emit `recordSinkFailure` for observability but the fan-out itself does not throw. | Non-critical paths where the replay harness is the safety net. NOT recommended for financial, regulated, or kernel-enforced intent paths. |\n| `bufferedSink({ inner, capacity, onOverflow? })` | Bounded **in-memory** replay queue. On `inner` failure: enqueues + rethrows. On next success: drains FIFO. Evicts oldest at capacity. **Lossy on process restart.** | Tests, smoke demos, lightweight adopters. |\n| `persistentBufferedSink({ inner, storage, capacity, onOverflow })` | Bounded in-memory queue with **durable spill** to `PersistentSpillStorage`. Capacity-driven evictions spill instead of being lost; recovery drains spill FIFO before the in-memory queue. Records survive process restart. `onOverflow` is required. | Governance-grade audit with sustained-outage tolerance. Pair with `multiSink` (strict). |\n\nRecommended composition for governance-grade audit (T3 default):\n\n```ts\nimport {\n  createConsoleSink,\n  createNatsSink,\n  createInMemorySpillStorage, // production: filesystem JSONL / SQLite / S3\n  multiSink,\n  persistentBufferedSink,\n  AuditSinkError,\n} from \"@adjudicate/audit\";\nimport { recordSinkFailure } from \"@adjudicate/core/kernel\";\n\nconst sink = multiSink(\n  createConsoleSink(),\n  persistentBufferedSink({\n    inner: createNatsSink({ publisher: myNatsPublisher }),\n    storage: createInMemorySpillStorage(), // swap for a durable backend in prod\n    capacity: 1024,\n    onOverflow: (record) =>\n      recordSinkFailure({\n        sink: \"nats\",\n        subject: \"audit.intent.decision.v1\",\n        errorClass: \"persistent_buffered_sink_overflow\",\n        consecutiveFailures: 1,\n      }),\n  }),\n);\n\ntry {\n  await sink.emit(auditRecord);\n} catch (err) {\n  if (err instanceof AuditSinkError) {\n    for (const failure of err.failures) {\n      // route per-sink failure to telemetry\n    }\n  }\n  throw err;\n}\n```\n\n## Replay harness\n\n```ts\nimport { replay } from \"@adjudicate/audit\";\n\nconst report = replay(records, (r) => adjudicate(r.envelope, state, policy));\n// report.matched === report.total means your policy still produces identical\n// decisions AND identical basis flat-sets for every historical intent.\n```\n\n`report.mismatches[i].kind` classifies divergence by severity:\n\n| Kind | Meaning | Runbook signal |\n|---|---|---|\n| `DECISION_KIND` | The replayed `decision.kind` differs (e.g., EXECUTE → REFUSE). | Page on-call. The policy now produces a different outcome. |\n| `BASIS_DRIFT` | Same kind, different flat-set of `category:code` basis. `basisDelta.missing/extra` carries the symmetric difference. | Investigate within window. Rename or category change without semantic shift is BASIS_DRIFT. |\n| `REFUSAL_CODE_DRIFT` | Both REFUSE, same kind+basis, but `refusal.code` changed. | Track for Phase 6 governance dashboard. Code rename without semantic shift is REFUSAL_CODE_DRIFT. |\n\nComparison rules (applied top-down):\n\n1. Different `decision.kind` → `DECISION_KIND`.\n2. Same kind, different flat-set basis → `BASIS_DRIFT` (subsumes refusal-code drift when basis also drifted).\n3. Both REFUSE, same kind+basis, different refusal code → `REFUSAL_CODE_DRIFT`.\n4. Otherwise matched.\n\nFlat-set semantics: basis order is irrelevant; `basis.detail` is ignored. Mirrors how `Postgres.intent_audit.decision_basis` is stored (`text[]` of `category:code`). Use `classify(intentHash, expected, actual)` for cross-record audits without re-implementing the rule.\n\n## Feature flags\n\n- `IBX_LEDGER_ENABLED=true` → shadow writes (record but do not enforce)\n- `IBX_LEDGER_ENFORCE=true` → `checkLedger` is authoritative on the write path\n\nBoth flags are parsed case-insensitively (`1`, `true`, `yes`, `on`).\n","readmeFilename":"README.md"}