{"_id":"@adlc/prosecute","_rev":"15-bd3672b93d267e8aa23d0af6a1df54a6","name":"@adlc/prosecute","dist-tags":{"latest":"1.11.1"},"versions":{"1.1.0":{"name":"@adlc/prosecute","version":"1.1.0","keywords":["adlc","agentic","ai","llm","cli","prosecute","gate"],"author":{"url":"@voodootikigod","name":"Chris Williams"},"license":"MIT","_id":"@adlc/prosecute@1.1.0","maintainers":[{"name":"voodootikigod","email":"voodootikigod@gmail.com"}],"homepage":"https://github.com/voodootikigod/adlc/tree/main/packages/prosecute#readme","bugs":{"url":"https://github.com/voodootikigod/adlc/issues"},"bin":{"adlc-prosecute":"bin/adlc-prosecute.mjs"},"dist":{"shasum":"f450e9c2df501a74048a940097d090e72995638b","tarball":"https://registry.npmjs.org/@adlc/prosecute/-/prosecute-1.1.0.tgz","fileCount":6,"integrity":"sha512-fDFWQBpxz94gNRWE8bu8LzVSN+MNEp4H7YqhHqCSxdhxlQYsPl33wjXOrbOICfJ7nKN0SFJK4mLXikMRF56cDQ==","signatures":[{"sig":"MEYCIQCNd6l352/dqrfhLmfJnIFKQ+8+avJ86dddxcGJP0MEbgIhAMVGhgJEK4Q0Au3N0PoaAfGxzAHLOcTUyHnFeIeGxRtp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adlc%2fprosecute@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":22295},"type":"module","engines":{"node":">=18"},"gitHead":"30e96544356c997ca986a1f9d5f4422724ad94a5","scripts":{"test":"node --test test/*.test.mjs"},"_npmUser":{"name":"voodootikigod","email":"voodootikigod@gmail.com"},"repository":{"url":"git+https://github.com/voodootikigod/adlc.git","type":"git","directory":"packages/prosecute"},"_npmVersion":"11.17.0","description":"P5 review-evidence recorder for ticket- and revision-bound findings and dry-pass completion.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@adlc/core":"1.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/prosecute_1.1.0_1782216897915_0.9758487469174832","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@adlc/prosecute","version":"1.2.0","keywords":["adlc","agentic","ai","llm","cli","prosecute","gate"],"author":{"url":"@voodootikigod","name":"Chris Williams"},"license":"MIT","_id":"@adlc/prosecute@1.2.0","maintainers":[{"name":"voodootikigod","email":"voodootikigod@gmail.com"}],"homepage":"https://github.com/voodootikigod/adlc/tree/main/packages/prosecute#readme","bugs":{"url":"https://github.com/voodootikigod/adlc/issues"},"bin":{"adlc-prosecute":"bin/adlc-prosecute.mjs"},"dist":{"shasum":"cecc38cc4977b8452978f6fbdf14f1f8e3749caa","tarball":"https://registry.npmjs.org/@adlc/prosecute/-/prosecute-1.2.0.tgz","fileCount":6,"integrity":"sha512-l8MWgdVL5AFanXaYuTExzXSa3qsVeHVSwC1f2s/tkt30HXuFb/ji4+PpSuhc5cidQXfxGPQxfwRgt4eYXQLsLw==","signatures":[{"sig":"MEYCIQCYzu4xal1+FPlJMl3bQzRb3T7aXp9e2CYSGBKzEOT1ywIhALV8qYlg3kDwl8CtrguqU7yz7EeEJ6g72rsfeNOAGRY2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adlc%2fprosecute@1.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":25388},"type":"module","engines":{"node":">=18"},"gitHead":"e1a9315750d794959884e3ed0b1cc29398d25f0e","scripts":{"test":"node --test test/*.test.mjs"},"_npmUser":{"name":"voodootikigod","email":"voodootikigod@gmail.com"},"repository":{"url":"git+https://github.com/voodootikigod/adlc.git","type":"git","directory":"packages/prosecute"},"_npmVersion":"11.18.0","description":"P5 review-evidence recorder for ticket- and revision-bound findings and dry-pass completion.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@adlc/core":"1.2.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/prosecute_1.2.0_1783726115986_0.8891133928612902","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@adlc/prosecute","version":"1.2.1","keywords":["adlc","agentic","ai","llm","cli","prosecute","gate"],"author":{"url":"@voodootikigod","name":"Chris Williams"},"license":"MIT","_id":"@adlc/prosecute@1.2.1","maintainers":[{"name":"voodootikigod","email":"voodootikigod@gmail.com"}],"homepage":"https://github.com/voodootikigod/adlc/tree/main/packages/prosecute#readme","bugs":{"url":"https://github.com/voodootikigod/adlc/issues"},"bin":{"adlc-prosecute":"bin/adlc-prosecute.mjs"},"dist":{"shasum":"61e739f06ce033c085129eebb516646cc90925bc","tarball":"https://registry.npmjs.org/@adlc/prosecute/-/prosecute-1.2.1.tgz","fileCount":6,"integrity":"sha512-PfzVZWLekzh2F3lIicmC+efPyUEWaxNEaQTf6vb3ucsz+6znrD5mOuKrDLzbXluNYHZDU7l8yxV3w0GMlKHvSQ==","signatures":[{"sig":"MEUCIQDbwhmd5uvcCdS33ruscpNAz68cPOA50LyWRgoGLG4lgwIgY4moNcwKyuayE6uSb17Ek5a52qb82tqNxC6B6/MZPDo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adlc%2fprosecute@1.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":25388},"type":"module","engines":{"node":">=18"},"gitHead":"7ce933041948a1f8076966b4c05ebcb3f08d9781","scripts":{"test":"node --test test/*.test.mjs"},"_npmUser":{"name":"voodootikigod","email":"voodootikigod@gmail.com"},"repository":{"url":"git+https://github.com/voodootikigod/adlc.git","type":"git","directory":"packages/prosecute"},"_npmVersion":"11.18.0","description":"P5 review-evidence recorder for ticket- and revision-bound findings and dry-pass completion.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@adlc/core":"1.2.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/prosecute_1.2.1_1783727157913_0.9791444832789435","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@adlc/prosecute","version":"1.3.0","keywords":["adlc","agentic","ai","llm","cli","prosecute","gate"],"author":{"url":"@voodootikigod","name":"Chris Williams"},"license":"MIT","_id":"@adlc/prosecute@1.3.0","maintainers":[{"name":"voodootikigod","email":"voodootikigod@gmail.com"}],"homepage":"https://github.com/voodootikigod/adlc/tree/main/packages/prosecute#readme","bugs":{"url":"https://github.com/voodootikigod/adlc/issues"},"bin":{"adlc-prosecute":"bin/adlc-prosecute.mjs"},"dist":{"shasum":"ba3c268407051d58528c983f884c23e796d9e505","tarball":"https://registry.npmjs.org/@adlc/prosecute/-/prosecute-1.3.0.tgz","fileCount":6,"integrity":"sha512-9ahOnzn8TS4U8/kF/OnZtvSposszc9agMy5HPWKd5yY6kPvWzxUG8OBQgzaXcoLGoK9qfxqA4YgtYPZD5AJb0Q==","signatures":[{"sig":"MEYCIQDYunls0Nprcnu6p1adbIN2pqQYqjDAGG5azWp3igsxggIhAKeA5NMCB6TKVRvtpektP/zPV/O6efANIkRcUJNfwPHR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adlc%2fprosecute@1.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":25388},"type":"module","engines":{"node":">=18"},"gitHead":"de4b878aa375bcce92f1828afafd87ee6872d2b4","scripts":{"test":"node --test test/*.test.mjs"},"_npmUser":{"name":"voodootikigod","email":"voodootikigod@gmail.com"},"repository":{"url":"git+https://github.com/voodootikigod/adlc.git","type":"git","directory":"packages/prosecute"},"_npmVersion":"11.18.0","description":"P5 review-evidence recorder for ticket- and revision-bound findings and dry-pass completion.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@adlc/core":"1.3.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/prosecute_1.3.0_1783780374450_0.6726499297595172","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@adlc/prosecute","version":"1.4.0","keywords":["adlc","agentic","ai","llm","cli","prosecute","gate"],"author":{"url":"@voodootikigod","name":"Chris Williams"},"license":"MIT","_id":"@adlc/prosecute@1.4.0","maintainers":[{"name":"voodootikigod","email":"voodootikigod@gmail.com"}],"homepage":"https://github.com/voodootikigod/adlc/tree/main/packages/prosecute#readme","bugs":{"url":"https://github.com/voodootikigod/adlc/issues"},"bin":{"adlc-prosecute":"bin/adlc-prosecute.mjs"},"dist":{"shasum":"aaa041d4e01265c83254e22ba601b0f354259f2c","tarball":"https://registry.npmjs.org/@adlc/prosecute/-/prosecute-1.4.0.tgz","fileCount":8,"integrity":"sha512-CaWKO/fWfztNR1OSMdmFOM19FSdvmiD8Rk+Ke9K7m+FDO6PohhfiMsFDuUUl12nV0q1oB+cGKpGBj436T1tfPA==","signatures":[{"sig":"MEYCIQDOyWe73oH7HkM9NGtcHqcfRMmioQ+aTDBTrHMjl/55TAIhAO3CMfoSeVR2UawQ1aFhQj12W1LLNp6SmCBQNrCe0ovf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adlc%2fprosecute@1.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":50694},"type":"module","engines":{"node":">=18"},"gitHead":"2be4ff6ef2397811d288ae1de14c21e5b901e76d","scripts":{"test":"node --test test/*.test.mjs"},"_npmUser":{"name":"voodootikigod","email":"voodootikigod@gmail.com"},"repository":{"url":"git+https://github.com/voodootikigod/adlc.git","type":"git","directory":"packages/prosecute"},"_npmVersion":"11.18.0","description":"P5 review-evidence recorder for ticket- and revision-bound findings and dry-pass completion.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@adlc/core":"1.4.0","@adlc/tickets":"1.4.0","@adlc/gate-manifest":"1.4.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/prosecute_1.4.0_1784074866295_0.5614541754011024","host":"s3://npm-registry-packages-npm-production"}},"1.4.1":{"name":"@adlc/prosecute","version":"1.4.1","keywords":["adlc","agentic","ai","llm","cli","prosecute","gate"],"author":{"url":"@voodootikigod","name":"Chris Williams"},"license":"MIT","_id":"@adlc/prosecute@1.4.1","maintainers":[{"name":"voodootikigod","email":"voodootikigod@gmail.com"}],"homepage":"https://github.com/voodootikigod/adlc/tree/main/packages/prosecute#readme","bugs":{"url":"https://github.com/voodootikigod/adlc/issues"},"bin":{"adlc-prosecute":"bin/adlc-prosecute.mjs"},"dist":{"shasum":"0c18e5b120c103a147623119b68dfff4e08abe9b","tarball":"https://registry.npmjs.org/@adlc/prosecute/-/prosecute-1.4.1.tgz","fileCount":8,"integrity":"sha512-wa5/Y4JOY6/ZEmZVGYTot5H4MmqHMPSTdMHQ9QEnsGdQxW33VWi/1xWP0Aw5HLlqGHNvIZ3odZ1Z5Z0O0+Xzsg==","signatures":[{"sig":"MEYCIQCtgRdm477dO7cDpVNAdyo9ciluWNm4ZP4d69p5lOC0ogIhAIA1ImYpbPLCxB3Rchuu2/A57Lcm4cSSNEJ7Z3jCnGVc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adlc%2fprosecute@1.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":50694},"type":"module","engines":{"node":">=18"},"gitHead":"d1765e679c224131056836f13f5a9c296b5316f8","scripts":{"test":"node --test test/*.test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5de2aef1-9815-4e11-bdd1-efff2f3b2feb"}},"repository":{"url":"git+https://github.com/voodootikigod/adlc.git","type":"git","directory":"packages/prosecute"},"_npmVersion":"11.18.0","description":"P5 review-evidence recorder for ticket- and revision-bound findings and dry-pass completion.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@adlc/core":"1.4.1","@adlc/tickets":"1.4.1","@adlc/gate-manifest":"1.4.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/prosecute_1.4.1_1784076701238_0.817278018887653","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@adlc/prosecute","version":"1.5.0","keywords":["adlc","agentic","ai","llm","cli","prosecute","gate"],"author":{"url":"@voodootikigod","name":"Chris Williams"},"license":"MIT","_id":"@adlc/prosecute@1.5.0","maintainers":[{"name":"voodootikigod","email":"voodootikigod@gmail.com"}],"homepage":"https://github.com/voodootikigod/adlc/tree/main/packages/prosecute#readme","bugs":{"url":"https://github.com/voodootikigod/adlc/issues"},"bin":{"adlc-prosecute":"bin/adlc-prosecute.mjs"},"dist":{"shasum":"6086a2fd7af506555b0e397400ca4a78e9f36296","tarball":"https://registry.npmjs.org/@adlc/prosecute/-/prosecute-1.5.0.tgz","fileCount":8,"integrity":"sha512-QoNSGZmiKzsRJ4JkCd2q12a6+uQwT++1HHA8vU29skmapm3nnWed9q1tEV77fcXsWZEpXp4EZtT3sgvj6K7KfQ==","signatures":[{"sig":"MEUCIQCduCa8YxwfUFJ34ZKaTtT8sj1Uuy+u9gonA41wEpvLJQIgeCRDzHclr4dmBbZMXeKYPKeABit+8vF3/6DBSvUaDec=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adlc%2fprosecute@1.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":50694},"type":"module","engines":{"node":">=18"},"gitHead":"c2763540068dd7deb26b089209de3bd03e2437c5","scripts":{"test":"node --test test/*.test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5de2aef1-9815-4e11-bdd1-efff2f3b2feb"}},"repository":{"url":"git+https://github.com/voodootikigod/adlc.git","type":"git","directory":"packages/prosecute"},"_npmVersion":"11.18.0","description":"P5 review-evidence recorder for ticket- and revision-bound findings and dry-pass completion.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@adlc/core":"1.5.0","@adlc/tickets":"1.5.0","@adlc/gate-manifest":"1.5.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/prosecute_1.5.0_1784556975510_0.0858097464791927","host":"s3://npm-registry-packages-npm-production"}},"1.5.1":{"name":"@adlc/prosecute","version":"1.5.1","keywords":["adlc","agentic","ai","llm","cli","prosecute","gate"],"author":{"url":"@voodootikigod","name":"Chris Williams"},"license":"MIT","_id":"@adlc/prosecute@1.5.1","maintainers":[{"name":"voodootikigod","email":"voodootikigod@gmail.com"}],"homepage":"https://github.com/voodootikigod/adlc/tree/main/packages/prosecute#readme","bugs":{"url":"https://github.com/voodootikigod/adlc/issues"},"bin":{"adlc-prosecute":"bin/adlc-prosecute.mjs"},"dist":{"shasum":"00dae5a9dc40892bfda2ef711e630aa1bddae2fc","tarball":"https://registry.npmjs.org/@adlc/prosecute/-/prosecute-1.5.1.tgz","fileCount":8,"integrity":"sha512-0OGcMe+/gqjSJde20vnWhwbRB26xr1oVP6CU/I/Ke97i+7DW3MjPip/DK98sMYA0V1L+xPOEaKP7ClKSvV4o+A==","signatures":[{"sig":"MEQCIAd0bz9QnRqW6/YWXee4JhqDhIcxCZfsNCyqcw5EGfBMAiAnLR+gPuLB8oeFVuY7GuJCXmm6FulyfGYuU0YWW6fA+A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adlc%2fprosecute@1.5.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":50694},"type":"module","engines":{"node":">=18"},"gitHead":"ba648f21aeafb9a253a243c0e268044da3513217","scripts":{"test":"node --test test/*.test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5de2aef1-9815-4e11-bdd1-efff2f3b2feb"}},"repository":{"url":"git+https://github.com/voodootikigod/adlc.git","type":"git","directory":"packages/prosecute"},"_npmVersion":"11.18.0","description":"P5 review-evidence recorder for ticket- and revision-bound findings and dry-pass completion.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@adlc/core":"1.5.1","@adlc/tickets":"1.5.1","@adlc/gate-manifest":"1.5.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/prosecute_1.5.1_1784631863054_0.25651120196392374","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"@adlc/prosecute","version":"1.6.0","keywords":["adlc","agentic","ai","llm","cli","prosecute","gate"],"author":{"url":"@voodootikigod","name":"Chris Williams"},"license":"MIT","_id":"@adlc/prosecute@1.6.0","maintainers":[{"name":"voodootikigod","email":"voodootikigod@gmail.com"}],"homepage":"https://github.com/voodootikigod/adlc/tree/main/packages/prosecute#readme","bugs":{"url":"https://github.com/voodootikigod/adlc/issues"},"bin":{"adlc-prosecute":"bin/adlc-prosecute.mjs"},"dist":{"shasum":"919ed6dd6f7a17523566ddc6fd42ad53b2b112e0","tarball":"https://registry.npmjs.org/@adlc/prosecute/-/prosecute-1.6.0.tgz","fileCount":8,"integrity":"sha512-1+z+SQne3C8C0bDbuiaTmctok0KMPDsyGAofG7uZqS49zPlLpAiHjuuVx/lTxwWVqxyKa5wUeAUvzZzDWthosQ==","signatures":[{"sig":"MEUCIE4MENI7NVic4FrNXTBQfZw0ClXYvg6QWWfoiTsoD2ebAiEAoaverCo2UGO6kDQEeczdhwtyFiQgq+ppLcQetojpZZM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adlc%2fprosecute@1.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":50694},"type":"module","engines":{"node":">=18"},"gitHead":"390a608f51165db92da1ccf68a965770db0b0376","scripts":{"test":"node --test test/*.test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5de2aef1-9815-4e11-bdd1-efff2f3b2feb"}},"repository":{"url":"git+https://github.com/voodootikigod/adlc.git","type":"git","directory":"packages/prosecute"},"_npmVersion":"11.18.0","description":"P5 review-evidence recorder for ticket- and revision-bound findings and dry-pass completion.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@adlc/core":"1.6.0","@adlc/tickets":"1.6.0","@adlc/gate-manifest":"1.6.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/prosecute_1.6.0_1784720610204_0.5908580434072301","host":"s3://npm-registry-packages-npm-production"}},"1.7.0":{"name":"@adlc/prosecute","version":"1.7.0","keywords":["adlc","agentic","ai","llm","cli","prosecute","gate"],"author":{"url":"@voodootikigod","name":"Chris Williams"},"license":"MIT","_id":"@adlc/prosecute@1.7.0","maintainers":[{"name":"voodootikigod","email":"voodootikigod@gmail.com"}],"homepage":"https://github.com/voodootikigod/adlc/tree/main/packages/prosecute#readme","bugs":{"url":"https://github.com/voodootikigod/adlc/issues"},"bin":{"adlc-prosecute":"bin/adlc-prosecute.mjs"},"dist":{"shasum":"d63f98350cbd1caeed957d6324c31bb23bf0b221","tarball":"https://registry.npmjs.org/@adlc/prosecute/-/prosecute-1.7.0.tgz","fileCount":10,"integrity":"sha512-lOhsRDb3q1VWPE6kog7RGCkdPHCe0DAD1ubXLwJZfo+8m5b4tieeng0+a+L7si80T0NgiAB1ulOZY1Ll5yw7RA==","signatures":[{"sig":"MEUCIQDsD8cjTV0hEYTMiMWSJTJTc2cY1KqJvN0qLPn5DjiJawIgcR7Usu9EbYW1t8ZNWTev5gav2wSQ3t5/kEhO8aXFC0Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adlc%2fprosecute@1.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":121786},"type":"module","engines":{"node":">=18"},"gitHead":"d7eca2696e43aa6caf3de655840fae14aa0efd57","scripts":{"test":"node --test test/*.test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5de2aef1-9815-4e11-bdd1-efff2f3b2feb"}},"repository":{"url":"git+https://github.com/voodootikigod/adlc.git","type":"git","directory":"packages/prosecute"},"_npmVersion":"11.18.0","description":"P5 review-evidence recorder for ticket- and revision-bound findings and dry-pass completion.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@adlc/core":"1.7.0","@adlc/tickets":"1.7.0","@adlc/gate-manifest":"1.7.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/prosecute_1.7.0_1785329280630_0.2254229613540799","host":"s3://npm-registry-packages-npm-production"}},"1.8.0":{"name":"@adlc/prosecute","version":"1.8.0","keywords":["adlc","agentic","ai","llm","cli","prosecute","gate"],"author":{"url":"@voodootikigod","name":"Chris Williams"},"license":"MIT","_id":"@adlc/prosecute@1.8.0","maintainers":[{"name":"voodootikigod","email":"voodootikigod@gmail.com"}],"homepage":"https://github.com/voodootikigod/adlc/tree/main/packages/prosecute#readme","bugs":{"url":"https://github.com/voodootikigod/adlc/issues"},"bin":{"adlc-prosecute":"bin/adlc-prosecute.mjs"},"dist":{"shasum":"27f6d1c1188a6c9360820fbbdc0d88060e59aa58","tarball":"https://registry.npmjs.org/@adlc/prosecute/-/prosecute-1.8.0.tgz","fileCount":10,"integrity":"sha512-oa2OZIKSvPUpH5/LRVTYDb/lxFsKrfTLFZl5wTkTWBr/Uf1hsDLvzmy+OMolNpWGMYDzmk6Mpe47/FBdLdeE2g==","signatures":[{"sig":"MEUCIGH6AJf9hb6KsYGAQRhIJx5CDoAQWiPjviasSEwYgaunAiEAzShXTLvxLR57NAQMzWlCjWl1lKxCYIUaiGsm9qWlTZ8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adlc%2fprosecute@1.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":140955},"type":"module","engines":{"node":">=18"},"gitHead":"e6b6525502d3deb214f58cffeb6c9db4b9787e39","scripts":{"test":"node --test test/*.test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5de2aef1-9815-4e11-bdd1-efff2f3b2feb"}},"repository":{"url":"git+https://github.com/voodootikigod/adlc.git","type":"git","directory":"packages/prosecute"},"_npmVersion":"11.19.0","description":"P5 review-evidence recorder for ticket- and revision-bound findings and dry-pass completion.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@adlc/core":"1.8.0","@adlc/tickets":"1.8.0","@adlc/gate-manifest":"1.8.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/prosecute_1.8.0_1786195814992_0.8793521350435136","host":"s3://npm-registry-packages-npm-production"}},"1.9.0":{"name":"@adlc/prosecute","version":"1.9.0","keywords":["adlc","agentic","ai","llm","cli","prosecute","gate"],"author":{"url":"@voodootikigod","name":"Chris Williams"},"license":"MIT","_id":"@adlc/prosecute@1.9.0","maintainers":[{"name":"voodootikigod","email":"voodootikigod@gmail.com"}],"homepage":"https://github.com/voodootikigod/adlc/tree/main/packages/prosecute#readme","bugs":{"url":"https://github.com/voodootikigod/adlc/issues"},"bin":{"adlc-prosecute":"bin/adlc-prosecute.mjs"},"dist":{"shasum":"7c4d48e8e7dd934c3224cf23845371cff27a3e3c","tarball":"https://registry.npmjs.org/@adlc/prosecute/-/prosecute-1.9.0.tgz","fileCount":10,"integrity":"sha512-wKXJsCkHu1fn4js1ecejKAbLYkCJ1+ql+07CJ+00LAWcbXDRHEq5a85NVt5g3iM0217s8joKJov3xur4wUqp1Q==","signatures":[{"sig":"MEUCIQDvtzft6O4FNtHWemPYDOkwi5mztq3LsMmhSDIXqOn1pAIgD8zssysBdNlrFVtwZ5jtuXxNPdTWfdkYnccthjVjxyo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adlc%2fprosecute@1.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":140955},"type":"module","engines":{"node":">=18"},"gitHead":"a928a7eeb3c2c5078b44c181702c3220ba1a7a5b","scripts":{"test":"node --test test/*.test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5de2aef1-9815-4e11-bdd1-efff2f3b2feb"}},"repository":{"url":"git+https://github.com/voodootikigod/adlc.git","type":"git","directory":"packages/prosecute"},"_npmVersion":"11.19.0","description":"P5 review-evidence recorder for ticket- and revision-bound findings and dry-pass completion.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@adlc/core":"1.9.0","@adlc/tickets":"1.9.0","@adlc/gate-manifest":"1.9.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/prosecute_1.9.0_1786221179774_0.851565234511209","host":"s3://npm-registry-packages-npm-production"}},"1.10.0":{"name":"@adlc/prosecute","version":"1.10.0","keywords":["adlc","agentic","ai","llm","cli","prosecute","gate"],"author":{"url":"@voodootikigod","name":"Chris Williams"},"license":"MIT","_id":"@adlc/prosecute@1.10.0","maintainers":[{"name":"voodootikigod","email":"voodootikigod@gmail.com"}],"homepage":"https://github.com/voodootikigod/adlc/tree/main/packages/prosecute#readme","bugs":{"url":"https://github.com/voodootikigod/adlc/issues"},"bin":{"adlc-prosecute":"bin/adlc-prosecute.mjs"},"dist":{"shasum":"b3f78c48eb7b78adfd4450969c6c3272c23cd6e7","tarball":"https://registry.npmjs.org/@adlc/prosecute/-/prosecute-1.10.0.tgz","fileCount":10,"integrity":"sha512-jJcfRyuwWYBdAcICpM1PVoz1iEdlNmiRBB9ECdbEzwM3F7Zsa5pRg12Rgu/smeW3+wBDL9ISReM4Rs5OIr7p1A==","signatures":[{"sig":"MEQCIE751Pe/26Ju0hLZ1qafM27C7XTu7iJQXicMrHWXYavzAiAnl0zqykHTrqF1WQUWrEnkvox+Aor4cQNB27ha26KFOg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adlc%2fprosecute@1.10.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":140959},"type":"module","engines":{"node":">=18"},"gitHead":"905d493f596a62b4bc3236f97281a43982c1e300","scripts":{"test":"node --test test/*.test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5de2aef1-9815-4e11-bdd1-efff2f3b2feb"}},"repository":{"url":"git+https://github.com/voodootikigod/adlc.git","type":"git","directory":"packages/prosecute"},"_npmVersion":"11.19.0","description":"P5 review-evidence recorder for ticket- and revision-bound findings and dry-pass completion.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@adlc/core":"1.10.0","@adlc/tickets":"1.10.0","@adlc/gate-manifest":"1.10.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/prosecute_1.10.0_1786385986177_0.4674498061504371","host":"s3://npm-registry-packages-npm-production"}},"1.11.0":{"name":"@adlc/prosecute","version":"1.11.0","keywords":["adlc","agentic","ai","llm","cli","prosecute","gate"],"author":{"url":"@voodootikigod","name":"Chris Williams"},"license":"MIT","_id":"@adlc/prosecute@1.11.0","maintainers":[{"name":"voodootikigod","email":"voodootikigod@gmail.com"}],"homepage":"https://github.com/voodootikigod/adlc/tree/main/packages/prosecute#readme","bugs":{"url":"https://github.com/voodootikigod/adlc/issues"},"bin":{"adlc-prosecute":"bin/adlc-prosecute.mjs"},"dist":{"shasum":"7846a77f807db497215d47c95e9e4c6afd21fce5","tarball":"https://registry.npmjs.org/@adlc/prosecute/-/prosecute-1.11.0.tgz","fileCount":10,"integrity":"sha512-FbhNNNwT9GM7jsxWxZTpSqln/kbHU0IXLqOgQ0NKgMczemGR9jcJcRAubRQ3Wr1GBklhgLqhzGPnN3KGMAauhw==","signatures":[{"sig":"MEYCIQDVfDGKa4Wa+cYRjhN5VTfUNH3PL7V4sPrBe/WxKetcQwIhALbI3huS0PIHrGd2tISkudE3vhfrT8oJZo61YoWUXcRY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adlc%2fprosecute@1.11.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":158155},"type":"module","engines":{"node":">=18"},"gitHead":"1e4e6f704912c912d9b3c87f57e077a48ca78c5d","scripts":{"test":"node --test test/*.test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5de2aef1-9815-4e11-bdd1-efff2f3b2feb"}},"repository":{"url":"git+https://github.com/voodootikigod/adlc.git","type":"git","directory":"packages/prosecute"},"_npmVersion":"11.19.0","description":"P5 review-evidence recorder for ticket- and revision-bound findings and dry-pass completion.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@adlc/core":"1.11.0","@adlc/tickets":"1.11.0","@adlc/gate-manifest":"1.11.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/prosecute_1.11.0_1787594239637_0.3291761854158144","host":"s3://npm-registry-packages-npm-production"}},"1.11.1":{"name":"@adlc/prosecute","version":"1.11.1","description":"P5 review-evidence recorder for ticket- and revision-bound findings and dry-pass completion.","type":"module","license":"MIT","author":{"name":"Chris Williams","url":"@voodootikigod"},"repository":{"type":"git","url":"git+https://github.com/voodootikigod/adlc.git","directory":"packages/prosecute"},"homepage":"https://github.com/voodootikigod/adlc/tree/main/packages/prosecute#readme","bugs":{"url":"https://github.com/voodootikigod/adlc/issues"},"keywords":["adlc","agentic","ai","llm","cli","prosecute","gate"],"bin":{"adlc-prosecute":"bin/adlc-prosecute.mjs"},"dependencies":{"@adlc/core":"1.11.1","@adlc/gate-manifest":"1.11.1","@adlc/tickets":"1.11.1"},"scripts":{"test":"node --test test/*.test.mjs"},"engines":{"node":">=18"},"publishConfig":{"access":"public","provenance":true},"gitHead":"c5772b4ff942bec77a34454c4fc888ae4e4b2c14","_id":"@adlc/prosecute@1.11.1","_nodeVersion":"20.20.2","_npmVersion":"11.19.1","dist":{"integrity":"sha512-YIWCG0DOKK2u9uX5xZBFMQqxIFAs/LedG7mG0W1t9FHvjHy8LeFKmmF218A5NEzGWlR8rmmVGRPvRN2seyEkNw==","shasum":"df79df2fc61597b2c94e545f6d78800bb894fd8d","tarball":"https://registry.npmjs.org/@adlc/prosecute/-/prosecute-1.11.1.tgz","fileCount":10,"unpackedSize":163417,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adlc%2fprosecute@1.11.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDpm97+PscQ6/HR2ZnmeqPzXu8yiU6iTBlsVygwUgyJxwIhAI/Ah47Nwe3k9x2VoeZ6H0j6OULTENrC3YyeOjKaspSF"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5de2aef1-9815-4e11-bdd1-efff2f3b2feb"}},"directories":{},"maintainers":[{"name":"voodootikigod","email":"voodootikigod@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/prosecute_1.11.1_1788949743726_0.41907067279974997"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-23T12:14:57.714Z","modified":"2026-09-09T10:29:04.146Z","1.1.0":"2026-06-23T12:14:58.079Z","1.2.0":"2026-07-10T23:28:36.127Z","1.2.1":"2026-07-10T23:45:58.043Z","1.3.0":"2026-07-11T14:32:54.590Z","1.4.0":"2026-07-15T00:21:06.437Z","1.4.1":"2026-07-15T00:51:41.397Z","1.5.0":"2026-07-20T14:16:15.653Z","1.5.1":"2026-07-21T11:04:23.189Z","1.6.0":"2026-07-22T11:43:30.367Z","1.7.0":"2026-07-29T12:48:00.777Z","1.8.0":"2026-08-08T13:30:15.155Z","1.9.0":"2026-08-08T20:32:59.916Z","1.10.0":"2026-08-10T18:19:46.320Z","1.11.0":"2026-08-24T17:57:19.796Z","1.11.1":"2026-09-09T10:29:03.845Z"},"bugs":{"url":"https://github.com/voodootikigod/adlc/issues"},"author":{"name":"Chris Williams","url":"@voodootikigod"},"license":"MIT","homepage":"https://github.com/voodootikigod/adlc/tree/main/packages/prosecute#readme","keywords":["adlc","agentic","ai","llm","cli","prosecute","gate"],"repository":{"type":"git","url":"git+https://github.com/voodootikigod/adlc.git","directory":"packages/prosecute"},"description":"P5 review-evidence recorder for ticket- and revision-bound findings and dry-pass completion.","maintainers":[{"name":"voodootikigod","email":"voodootikigod@gmail.com"}],"readme":"# @adlc/prosecute\n\n> **Design decision: this is a recorder, not a reviewer.** `@adlc/prosecute` makes zero\n> model calls and runs no adversarial review of its own. It is a P5 evidence ledger: it\n> validates, hashes, and appends normalized reviewer-produced pass records to\n> `.adlc/manifest.jsonl`. The actual model-judged review is a separate tool -- run\n> `npx adversarial-review` (or `adlc review`, which passes args through to it) -- and feed\n> **its** output into `prosecute` as the `--input` evidence. If you run `adlc prosecute`\n> expecting it to find bugs, it will not; it only proves that a real review already did.\n\nP5 review-evidence recorder. It consumes normalized reviewer-produced pass evidence,\nrecords ticket- and revision-scoped P5 evidence to `.adlc/manifest.jsonl`, and passes\nonly after two consecutive dry passes with at least three distinct dry lenses.\n\n## Usage\n\n```sh\nadlc-prosecute --input p5-passes.json --ticket T1 --dir .adlc --json\n```\n\n## Input shape\n\n```json\n{\n  \"target\": \"feature branch\",\n  \"provenance\": {\n      \"reviewer\": \"local-reviewer\",\n      \"session\": \"codex-session-123\",\n      \"command\": \"npx adversarial-review --scope working-tree --include-files\",\n      \"transcript\": \".omo/evidence/p5-review.txt\"\n  },\n  \"review_packet\": {\n      \"prompt\": \".omo/evidence/p5-prompt.txt\",\n      \"prompt_hash\": \"sha256-of-prompt-file\",\n      \"inputs\": \".omo/evidence/p5-inputs.txt\",\n      \"inputs_hash\": \"sha256-of-reviewed-input-packet\",\n      \"clean_worktree\": \"git-worktree:...\"\n  },\n  \"passes\": [\n    {\n      \"lens\": \"security\",\n      \"findings\": [\n        {\n          \"id\": \"F1\",\n          \"severity\": \"high\",\n          \"category\": \"security\",\n          \"file\": \"src/auth.js\",\n          \"line_start\": 10,\n          \"line_end\": 12,\n          \"evidence\": \"quoted changed code\",\n          \"claim\": \"token bypass\",\n          \"recommendation\": \"validate issuer\",\n          \"confidence\": 0.8,\n          \"verified_status\": \"verified\"\n        }\n      ]\n    },\n    {\n      \"lens\": \"security\",\n      \"findings\": [],\n      \"dry_evidence\": \"review transcript reports no verified security findings\"\n    },\n    {\n      \"lens\": \"correctness\",\n      \"findings\": [],\n      \"dry_evidence\": \"review transcript reports no verified correctness findings\"\n    }\n  ]\n}\n```\n\n`verified_status` must be `verified`, `killed`, or `needs-human`. Killed findings must\ninclude `verification.reason`, `verification.method`, and `verification.evidence`.\nInputs must use the built-in lens names: `security`, `correctness`, `tests`, `behavior`,\n`integration`, or `docs`. Clean reviews with zero finding candidates are accepted when the\ndry passes include evidence. If no finding is marked `verified`, the input must include\n`no_findings_attestation` with\n`reason`, `method`, and `evidence`. Only passes with zero findings count as dry; killed\nfindings are recorded but do not advance dry-pass convergence.\n\nThe transcript is not treated as a generic attachment. It must be readable, at least 64\nbytes, and it must reference both the `--ticket` value and the resolved reviewed revision\nstring (`git-worktree:<hash>` unless `--revision` is supplied). This binds the recorded\nP5 evidence to the ticket and revision that P6 later checks, but it still does not prove\nthat an external reviewer ran. Use the named `provenance.command` and transcript from the\nactual skeptical review run, not a hand-written placeholder.\n\nThe review packet binds the reviewer prompt and reviewed input packet to P5 evidence.\n`prompt` and `inputs` are file paths, their hashes must match the supplied SHA-256 values,\nand `clean_worktree` must equal the exact reviewed revision.\n\n**Evidence file location is enforced, not just convention.** If `provenance.transcript`,\n`review_packet.prompt`, or `review_packet.inputs` resolves to a path *inside* the worktree,\nit must live under `.adlc/` or `.omo/evidence/` -- `lib/run.mjs`'s `isEvidencePath()` rejects\nany other in-worktree location. This is a trust-boundary control: it stops review \"evidence\"\nfrom pointing at an arbitrary file elsewhere in the repo that could be edited to fake a\nclean review. `.omo/evidence/` is otherwise-gitignored scratch space, but the three files\nbacking the bundled example (`docs/examples/p5-passes.json`) are deliberately carved out\nof that ignore rule and tracked -- see the comment in `.gitignore` before treating anything\nunder `.omo/` as safe to delete.\n\n## Trust-root tier — required cross-model review (T39)\n\nFor the **trust-root tier**, a clean same-model P5 is not sufficient. The CLI computes the\nchanged-file set from the **WORKING TREE vs `<base>`** (default `--base main`) — the two-dot\n`git diff --name-only <base>` (tracked changes incl. uncommitted) unioned with untracked,\nnon-ignored files (`git ls-files --others --exclude-standard`) — and classifies it with\n`lib/tier.mjs`. Working-tree-inclusive is load-bearing: prosecution binds to the working-tree\nrevision, so a three-dot `<base>...HEAD` diff (committed only) would miss an **uncommitted**\nedit to a trust-root file and let a converged P5 exit 0 with no attestation. A change is\ntrust-root tier iff it touches an enforcement package\n(`packages/rails-guard|prosecute|gate-manifest|build-gate/`), a gated-artifact producer\n(`packages/ticket-prune|ticket-sync/`), a declared rails deny-path of any ticket, or a\ntrust-root file (`scripts/rails-guard-ci.mjs`, `docs/ci/rails-guard.yml`,\n`scripts/test/rails-guard-workflow-hashes.json`, `.adlc/tickets.json`). The ticket table for\nrails-deny-path tiering is read from the **same `--dir`** the prosecution uses (falling back\nto `.adlc/tickets.json`), so rails declared under a custom `--dir` are not invisible to the\ntier. A **completed** ticket's rails (`completed: true`, strict boolean) contribute no\nrails-deny-path reason — they auto-expire, matching rail-freeze's own T36 completion\nlifecycle reading, so a change under `packages/` does not tier forever just because some\nlong-finished ticket once declared `packages/**` as a rail (#905). Duplicate ticket ids\nacross the base and worktree/HEAD ticket tables are merged before classification, with\nthe base tip winning for `completed` and rails unioned across copies — so a branch cut\nbefore a ticket completes on the base still benefits once the base tip completes it, and a\nHEAD-only completion claim still cannot exempt a ticket the base tip keeps active. For such\na change, a passing P5 **additionally** requires a `cross-model-review`\n**`approve`** in the manifest whose `provider` is distinct from the author and whose\n`revision` equals the reviewed revision. Missing → exit 2.\n\n**Author identity is anchored to the prosecution run.** A tiered run MUST declare the author\nvia `--author-provider <p>` (or `ADLC_AUTHOR_PROVIDER`); distinctness is measured against\n*that* prosecution-declared author, not the entry's self-reported `authorProvider` (an\nattestation defines both sides, so comparing only its own fields is forgeable). The gate also\nrequires the record to have been made for that author context. A tiered run with **no**\nauthor-provider **fails closed** (exit 1) — distinctness cannot be proven without knowing the\nauthor.\n\n**Fail-closed on an unresolvable base.** Tiering needs the base ref to compute the diff. If\n`<base>` cannot be resolved (e.g. a shallow CI checkout with no `main`), the CLI **refuses\nthe run with exit 1** rather than silently skipping the cross-model requirement — a silent\nungated pass is the fail-open class this gate exists to prevent. **CI must provide the\nbase** (fetch it, e.g. `git fetch --no-tags origin main`, or pass an explicit `--base\n<ref>`). Hermetic unit runs that assert convergence only (not tiering) pass `--base HEAD`\nso, from a **clean committed** worktree, the working-tree diff is empty and the tier gate\nstays off (run such checks post-commit; uncommitted trust-root edits deliberately tier).\n\nRecord the attestation (after an actual cross-model review approves) with:\n\n```\nADLC_MANIFEST_KEY=<key> adlc prosecute record-cross-model --ticket <id> \\\n  --provider <p> --author-provider <a> --verdict approve [--input <passes.json>] [--revision <r>]\n```\n\n**Recording requires the signing key (#370).** The gate trusts an attestation only via its\nHMAC signature, so an unsigned entry is inert. Without `ADLC_MANIFEST_KEY` the command\ntherefore **fails closed** — exit 1, nothing written, and a message naming the consequence —\nrather than writing an unsigned entry and reporting success. That old behaviour cost the\noperator a full distinct-provider review before CI revealed the attestation was worthless,\nand the entry was permanent: the manifest is append-only and hash-chained. Note the key is\ncommonly kept in a gitignored `.env.local` in the **main checkout**, which is absent from\nevery git worktree; `record-cross-model` reads it from `./.env.local` (never `tier-check` —\nsee `lib/load-env-local.mjs`), so from a worktree source it explicitly.\n\nWriting an unsigned entry on purpose — #326's forge-resistance test does, to prove the gate\nrejects one — needs the explicit `--allow-unsigned`. An unsigned write never prints the\nsuccess line; it prints a warning naming the consequence instead. `--json` reports\n`\"signed\": true|false` alongside the recorded entry either way.\n\nIt resolves the revision the same way the gate does (`resolveProsecutionRevision`), so pass\nthe same `--input`/`--revision` you use for the gate run. `--provider` must differ from\n`--author-provider` — a same-model attestation is refused at record time and rejected by the\ngate (`lib/cross-model.mjs`, fail-closed). Like rails-guard this cannot prove a model ran; the\nauthor identity now comes from the prosecution invocation (not a self-report), and the record\nis an auditable, revision-bound, append-only, distinct-provider, author-anchored entry. See\n[ADR-0007](../../docs/adr/0007-multimodel-adversarial-review.md).\n\n## Truncation anti-rollback anchor (opt-in, #355)\n\n**This is a hardening mode for this repo's own dogfooding. It is NOT a required ADLC\ncapability — no adopter needs or is expected to use it.**\n\nThe cross-model gate above closes **forgery** (signatures cover the entry) and **rewrite**\n(the hash chain + per-entry signature reject an edited-in-place line) — see the HONEST LIMIT\ncomment in `lib/cross-model.mjs`. One gap remained: an author who controls the PR branch can\n**truncate** the manifest, dropping a signed `needs-attention` revocation entirely and leaving\na valid, shorter, validly-signed chain ending in an earlier genuine `approve`. Because the\nrevision hash excludes manifest paths (so recording an attestation doesn't change what it's\nattesting to), the dropped revocation is invisible to a required check alone — it evaluates\nonly the truncated tree.\n\n`lib/attestation-store.mjs` closes it with a protected-ref mirror: an orphan branch\n(`adlc-attestations`, ruleset-protected — see\n`docs/github-rulesets/adlc-attestations-ruleset.json`) holds every signed cross-model entry a\ntrusted CI run has ever observed, appended by the new `mirror-attestations` subcommand. `tier-check`\ngains an optional `--attestation-store <path>` flag; when passed, a signed entry the store has\nseen that is missing from the PR's own manifest fails the gate closed with a distinct\n\"ROLLBACK/TRUNCATION DETECTED\" message (separate from \"no attestation\" and \"chain broken\").\n**Omitting the flag reproduces today's behavior exactly** — this is why the mechanism is\nopt-in rather than baked into the shared library's default path. Only this repo's own\n`.github/workflows/cross-model-gate.yml` is wired to use it (that workflow has never been a\ndistributed template, unlike `docs/ci/*.yml`).\n\n**Documented residual limit**: a revocation is protected only once a trusted CI run has\nobserved it (pushed to the PR and the workflow ran at least once before truncation). A\nrecorded-but-never-pushed revocation is invisible to everyone — the same exposure as an\nunsubmitted review. This is strictly better than the forgery/rewrite-only gate above, not a\nclaim of completeness.\n\n**A tampered or key-rotated store entry FAILS CLOSED, not silently ignored.** `readObservedAttestations`\nand `mirrorObservedAttestations` both throw if any store entry's signature does not verify —\nthis is either an `ADLC_MANIFEST_KEY` rotation (every historical store entry needs migrating\nonto the new key, the same treatment the main manifest chain already requires) or tampering by\nwhoever has bypass-level write access to `adlc-attestations`. Rotating the signing key is\ntherefore a migration event for this store too: rebootstrap or re-sign it, don't expect\n`tier-check --attestation-store` to keep working across a rotation without that step.\n\n**Observed entries are scoped by `(revision, authorProvider)`, not by PR/branch identity — deliberately.**\nTwo different PRs that coincidentally produce a byte-identical reviewed change (same base, same\ndiff — a duplicate branch, for instance) share observed-entry history, so a revocation mirrored\nfrom one can block the other. This is intentional, not a gap: `revision` (the change-set identity\nfrom #365) already means \"the identity of the reviewed change,\" and #365's own carry-forward\nfeature treats an identical change-set digest as grounds to carry a verdict *forward*. Treating an\nidentical digest as grounds to carry a *revocation* forward too is the symmetric, consistent\nconsequence — adding a PR-unique discriminator to avoid this would let an attacker dodge a revoked\nreview by opening a new PR with byte-identical content. See\n[the design doc](../../docs/superpowers/specs/2026-07-28-cross-model-truncation-anchor-design.md)\nfor the full threat model, the premortem/parallax findings that shaped the final design, and\nwhy the store path must live outside the tree being tiered.\n\n## Exit codes\n\n- `0`: two consecutive dry passes were recorded (or a finding/attestation was recorded)\n- `1`: operational error\n- `2`: verified/needs-human findings remain, the convergence budget ended before two dry\n  passes, a trust-root-tier change lacks a matching cross-model attestation, or (with\n  `--attestation-store`) a rollback/truncation was detected\n\n## Core gaps\n\nThis package records cross-model attestations through `@adlc/gate-manifest`'s chained\n`record()` (see `lib/cross-model.mjs`) and reads them back via `@adlc/core`'s `readEntries`.\nThe trust-root-tier classifier (`lib/tier.mjs`) lives here rather than in `@adlc/core`\n(frozen) because it is prosecute-specific policy; if a second package ever needs the same\nbinary trust-root decision, the enumerated surfaces (enforcement packages, producers,\ntrust-root files) would ideally graduate into `@adlc/core` alongside the existing\n`railpath`/`risk-tier` helpers so the list has a single source of truth.\n\n## ADLC phase\n\nP5 Prosecute. This tool makes the review-evidence and dry-pass record executable, but\nthe reviewer command named in `provenance.command` remains the source of the review.\n","readmeFilename":"README.md"}