{"_id":"@adlc/flail-detector","_rev":"17-fa8e01bf5ce8b6d48663dfdf39e2ae58","name":"@adlc/flail-detector","dist-tags":{"latest":"1.11.1"},"versions":{"1.0.0":{"name":"@adlc/flail-detector","version":"1.0.0","keywords":["adlc","agentic","ai","llm","cli","flail-detector","gate"],"author":{"url":"@voodootikigod","name":"Chris Williams"},"license":"MIT","_id":"@adlc/flail-detector@1.0.0","maintainers":[{"name":"voodootikigod","email":"voodootikigod@gmail.com"}],"homepage":"https://github.com/voodootikigod/adlc/tree/main/packages/flail-detector#readme","bugs":{"url":"https://github.com/voodootikigod/adlc/issues"},"bin":{"flail-detector":"bin/flail-detector.mjs"},"dist":{"shasum":"eeb47d0b21a694e3613625efa601a595289b9b2e","tarball":"https://registry.npmjs.org/@adlc/flail-detector/-/flail-detector-1.0.0.tgz","fileCount":8,"integrity":"sha512-yPRhaDqvrtwoOzQq+w8JwT4zh+tTJhT0qGY8FO1z1+WHJ0Y0eK+Vu9G+aU63sn6IcTffQZLopEC0CR1FctZurg==","signatures":[{"sig":"MEYCIQCnH7eARS+vFk88ZAtpCp9MbdC/mEQw87plpd8xWFTxcgIhAMwhFA2ui4f1H+jquMvITNbLvKoRahABrmgkfVllxyHN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adlc%2fflail-detector@1.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":24902},"type":"module","engines":{"node":">=18"},"gitHead":"18f4c2890048cd9d5913b6b3aeeff6c37ae372b9","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/flail-detector"},"_npmVersion":"10.8.2","description":"Session-log flail analysis — mechanical two-strike rule for build agents (C6/P4 supervisor).","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@adlc/core":"1.0.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/flail-detector_1.0.0_1781385135665_0.8846075133321725","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@adlc/flail-detector","version":"1.0.2","keywords":["adlc","agentic","ai","llm","cli","flail-detector","gate"],"author":{"url":"@voodootikigod","name":"Chris Williams"},"license":"MIT","_id":"@adlc/flail-detector@1.0.2","maintainers":[{"name":"voodootikigod","email":"voodootikigod@gmail.com"}],"homepage":"https://github.com/voodootikigod/adlc/tree/main/packages/flail-detector#readme","bugs":{"url":"https://github.com/voodootikigod/adlc/issues"},"bin":{"flail-detector":"bin/flail-detector.mjs"},"dist":{"shasum":"a3bf90589d90cf3227ce5d138e9e0736dca7f9c9","tarball":"https://registry.npmjs.org/@adlc/flail-detector/-/flail-detector-1.0.2.tgz","fileCount":8,"integrity":"sha512-9BEjZ5sQ8bMySPoXj5yvY/d1jZjbYa6gxszkEbhVNVoa8yg8qqEePUiSiILDhTob8fwrMjHI2FiGHuKgpEvNuw==","signatures":[{"sig":"MEQCIQCXl4MbGfbp9BtmtHewPIZGIkJISNkL52wT7+/JMbhTDgIfbOKhM6L1B1O/Abcgb504BIVTEshdL+khXBsbP1BEtQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adlc%2fflail-detector@1.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":24902},"type":"module","engines":{"node":">=18"},"gitHead":"9412678eb342b02cd86c1279d908f1fd56ca7bc4","scripts":{"test":"node --test test/*.test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d3432db1-a135-4932-918f-bffc5ead1a94"}},"repository":{"url":"git+https://github.com/voodootikigod/adlc.git","type":"git","directory":"packages/flail-detector"},"_npmVersion":"11.17.0","description":"Session-log flail analysis — mechanical two-strike rule for build agents (C6/P4 supervisor).","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@adlc/core":"1.0.2"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/flail-detector_1.0.2_1781461004223_0.7491472218531714","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@adlc/flail-detector","version":"1.1.0","keywords":["adlc","agentic","ai","llm","cli","flail-detector","gate"],"author":{"url":"@voodootikigod","name":"Chris Williams"},"license":"MIT","_id":"@adlc/flail-detector@1.1.0","maintainers":[{"name":"voodootikigod","email":"voodootikigod@gmail.com"}],"homepage":"https://github.com/voodootikigod/adlc/tree/main/packages/flail-detector#readme","bugs":{"url":"https://github.com/voodootikigod/adlc/issues"},"bin":{"flail-detector":"bin/flail-detector.mjs"},"dist":{"shasum":"0120ef108f38f0f70725351183054cf484eda66e","tarball":"https://registry.npmjs.org/@adlc/flail-detector/-/flail-detector-1.1.0.tgz","fileCount":8,"integrity":"sha512-MVLSsBPmETjddMXt9ZFRMb5C5YKd6cU94bHDQQye2melwojt0JnVx4Y3EqXBB491BcxbemNJKFHYnbCWcka/Ow==","signatures":[{"sig":"MEUCIE+aidUdIWWHlqewCU3hRMYpqqaciUmF5Dj64OEIIQGAAiEA2mui9D19+gt/Dmp9TVJ6wPoaQgt5WTpkrEd0/jI60w4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adlc%2fflail-detector@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":24902},"type":"module","engines":{"node":">=18"},"gitHead":"30e96544356c997ca986a1f9d5f4422724ad94a5","scripts":{"test":"node --test test/*.test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d3432db1-a135-4932-918f-bffc5ead1a94"}},"repository":{"url":"git+https://github.com/voodootikigod/adlc.git","type":"git","directory":"packages/flail-detector"},"_npmVersion":"11.17.0","description":"Session-log flail analysis — mechanical two-strike rule for build agents (C6/P4 supervisor).","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@adlc/core":"1.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/flail-detector_1.1.0_1782216852693_0.7846957153895986","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@adlc/flail-detector","version":"1.2.0","keywords":["adlc","agentic","ai","llm","cli","flail-detector","gate"],"author":{"url":"@voodootikigod","name":"Chris Williams"},"license":"MIT","_id":"@adlc/flail-detector@1.2.0","maintainers":[{"name":"voodootikigod","email":"voodootikigod@gmail.com"}],"homepage":"https://github.com/voodootikigod/adlc/tree/main/packages/flail-detector#readme","bugs":{"url":"https://github.com/voodootikigod/adlc/issues"},"bin":{"flail-detector":"bin/flail-detector.mjs"},"dist":{"shasum":"34202a7bd9f48c95cc69248d670eb02417b1654e","tarball":"https://registry.npmjs.org/@adlc/flail-detector/-/flail-detector-1.2.0.tgz","fileCount":8,"integrity":"sha512-VWJTJlH8AG45eV1dBO/wPvwoSAuBdM1LM/VR83+6Kqn3y8oW2y37ycQCnzYf4Btx2Ivp27fDV8gcz6EwGJOvVg==","signatures":[{"sig":"MEUCIQCVPVggOploVYtd/MBBeTPe1Bk1ge6tmUo1kLx6fYEYtgIgfdWYYHcwUHsJHPi0CaWfR0IMFVozXBAu8qsa6BioWbM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adlc%2fflail-detector@1.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":24902},"type":"module","engines":{"node":">=18"},"gitHead":"e1a9315750d794959884e3ed0b1cc29398d25f0e","scripts":{"test":"node --test test/*.test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d3432db1-a135-4932-918f-bffc5ead1a94"}},"repository":{"url":"git+https://github.com/voodootikigod/adlc.git","type":"git","directory":"packages/flail-detector"},"_npmVersion":"11.18.0","description":"Session-log flail analysis — mechanical two-strike rule for build agents (C6/P4 supervisor).","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@adlc/core":"1.2.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/flail-detector_1.2.0_1783726071762_0.044488245601141285","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@adlc/flail-detector","version":"1.2.1","keywords":["adlc","agentic","ai","llm","cli","flail-detector","gate"],"author":{"url":"@voodootikigod","name":"Chris Williams"},"license":"MIT","_id":"@adlc/flail-detector@1.2.1","maintainers":[{"name":"voodootikigod","email":"voodootikigod@gmail.com"}],"homepage":"https://github.com/voodootikigod/adlc/tree/main/packages/flail-detector#readme","bugs":{"url":"https://github.com/voodootikigod/adlc/issues"},"bin":{"flail-detector":"bin/flail-detector.mjs"},"dist":{"shasum":"9938f4b302c6ee4dec91d98f379d9deb0fc3640c","tarball":"https://registry.npmjs.org/@adlc/flail-detector/-/flail-detector-1.2.1.tgz","fileCount":8,"integrity":"sha512-9WLD5PFg37diisskIYsntzeEF8b3V7AP4jfvYJGzEr/sRhYV9mjz3sgWHxSzSoOCJAlcGqcG6i1FVAhgx1N9PA==","signatures":[{"sig":"MEQCIDO8/cSJ8urjVbNrEp7sN7fTwXB9fbWpDiV364+vA2rgAiA1NmUpZWWnERJeTZZhoItMWtI5KRDjEiWilqbDWwuq5A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adlc%2fflail-detector@1.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":24902},"type":"module","engines":{"node":">=18"},"gitHead":"7ce933041948a1f8076966b4c05ebcb3f08d9781","scripts":{"test":"node --test test/*.test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d3432db1-a135-4932-918f-bffc5ead1a94"}},"repository":{"url":"git+https://github.com/voodootikigod/adlc.git","type":"git","directory":"packages/flail-detector"},"_npmVersion":"11.18.0","description":"Session-log flail analysis — mechanical two-strike rule for build agents (C6/P4 supervisor).","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@adlc/core":"1.2.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/flail-detector_1.2.1_1783727114431_0.7309834178701002","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@adlc/flail-detector","version":"1.3.0","keywords":["adlc","agentic","ai","llm","cli","flail-detector","gate"],"author":{"url":"@voodootikigod","name":"Chris Williams"},"license":"MIT","_id":"@adlc/flail-detector@1.3.0","maintainers":[{"name":"voodootikigod","email":"voodootikigod@gmail.com"}],"homepage":"https://github.com/voodootikigod/adlc/tree/main/packages/flail-detector#readme","bugs":{"url":"https://github.com/voodootikigod/adlc/issues"},"bin":{"flail-detector":"bin/flail-detector.mjs"},"dist":{"shasum":"37c910219e9fc4487310189920f40c1993973111","tarball":"https://registry.npmjs.org/@adlc/flail-detector/-/flail-detector-1.3.0.tgz","fileCount":8,"integrity":"sha512-Gk2+DY3YxRbIwYKUn3pbHOpRp7/2Mk5X9/tnaFUhrLg0NCzjwqB4Gut0ieWwHZ6XVVbk514/TIF0ssRuX7bvOA==","signatures":[{"sig":"MEUCIAjZ/LiCfe+LT9OHDbxRQbBAzWrZVjJ5CnbXyoA40ZXxAiEA1griChfo8WiLxbLtol6qDCu3D+sDDrfUJrrLEPWLJIo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adlc%2fflail-detector@1.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":24902},"type":"module","engines":{"node":">=18"},"gitHead":"de4b878aa375bcce92f1828afafd87ee6872d2b4","scripts":{"test":"node --test test/*.test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d3432db1-a135-4932-918f-bffc5ead1a94"}},"repository":{"url":"git+https://github.com/voodootikigod/adlc.git","type":"git","directory":"packages/flail-detector"},"_npmVersion":"11.18.0","description":"Session-log flail analysis — mechanical two-strike rule for build agents (C6/P4 supervisor).","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@adlc/core":"1.3.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/flail-detector_1.3.0_1783780332386_0.0003594863423079797","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@adlc/flail-detector","version":"1.4.0","keywords":["adlc","agentic","ai","llm","cli","flail-detector","gate"],"author":{"url":"@voodootikigod","name":"Chris Williams"},"license":"MIT","_id":"@adlc/flail-detector@1.4.0","maintainers":[{"name":"voodootikigod","email":"voodootikigod@gmail.com"}],"homepage":"https://github.com/voodootikigod/adlc/tree/main/packages/flail-detector#readme","bugs":{"url":"https://github.com/voodootikigod/adlc/issues"},"bin":{"flail-detector":"bin/flail-detector.mjs"},"dist":{"shasum":"71177dc90e93f364bc6501d21f7e724bb4e0b6ef","tarball":"https://registry.npmjs.org/@adlc/flail-detector/-/flail-detector-1.4.0.tgz","fileCount":8,"integrity":"sha512-WZGqBFHqycxCRM/1+xOTY5cHRFTmOMqQNv6H3HFQq9vYqE2/DuIsIz8tBipa1AuT6BWIpZwvG4euKQ9zAQwzwg==","signatures":[{"sig":"MEYCIQDlLb7jrXVaagVl50cm0K0DdFhjY1golGu6kpcg26HM7AIhAOYnkE/OA1UJTKUpt4bACB6MEMzBoVHatxbgsW/o8z3i","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adlc%2fflail-detector@1.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":24902},"type":"module","engines":{"node":">=18"},"gitHead":"2be4ff6ef2397811d288ae1de14c21e5b901e76d","scripts":{"test":"node --test test/*.test.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d3432db1-a135-4932-918f-bffc5ead1a94"}},"repository":{"url":"git+https://github.com/voodootikigod/adlc.git","type":"git","directory":"packages/flail-detector"},"_npmVersion":"11.18.0","description":"Session-log flail analysis — mechanical two-strike rule for build agents (C6/P4 supervisor).","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@adlc/core":"1.4.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/flail-detector_1.4.0_1784074807574_0.6044678823996641","host":"s3://npm-registry-packages-npm-production"}},"1.4.1":{"name":"@adlc/flail-detector","version":"1.4.1","keywords":["adlc","agentic","ai","llm","cli","flail-detector","gate"],"author":{"url":"@voodootikigod","name":"Chris Williams"},"license":"MIT","_id":"@adlc/flail-detector@1.4.1","maintainers":[{"name":"voodootikigod","email":"voodootikigod@gmail.com"}],"homepage":"https://github.com/voodootikigod/adlc/tree/main/packages/flail-detector#readme","bugs":{"url":"https://github.com/voodootikigod/adlc/issues"},"bin":{"flail-detector":"bin/flail-detector.mjs"},"dist":{"shasum":"3ad6220cf35f210db1fad276f9264f09cb2aa3b6","tarball":"https://registry.npmjs.org/@adlc/flail-detector/-/flail-detector-1.4.1.tgz","fileCount":8,"integrity":"sha512-jM6FMAIT5yeeXZ7tTFlFB9Z/PemcddhRkPnKeMVTkYyaB1Jny14WkIzirmRxdvdPAVDAU/a2SrWrccY7FiMJng==","signatures":[{"sig":"MEUCIQCRKSckxmdvQUhxNqSeDrvdrnpDSTaitLPDr+eFthwZpQIgVYnfp1YkKoBtFR+OcbSU3k97+qUoNl69PNei7ogx++s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adlc%2fflail-detector@1.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":24902},"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:d3432db1-a135-4932-918f-bffc5ead1a94"}},"repository":{"url":"git+https://github.com/voodootikigod/adlc.git","type":"git","directory":"packages/flail-detector"},"_npmVersion":"11.18.0","description":"Session-log flail analysis — mechanical two-strike rule for build agents (C6/P4 supervisor).","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@adlc/core":"1.4.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/flail-detector_1.4.1_1784076645236_0.8701723644291901","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@adlc/flail-detector","version":"1.5.0","keywords":["adlc","agentic","ai","llm","cli","flail-detector","gate"],"author":{"url":"@voodootikigod","name":"Chris Williams"},"license":"MIT","_id":"@adlc/flail-detector@1.5.0","maintainers":[{"name":"voodootikigod","email":"voodootikigod@gmail.com"}],"homepage":"https://github.com/voodootikigod/adlc/tree/main/packages/flail-detector#readme","bugs":{"url":"https://github.com/voodootikigod/adlc/issues"},"bin":{"flail-detector":"bin/flail-detector.mjs"},"dist":{"shasum":"d2627c5c3d50d7382f5679b84e6ae33ee85a2be2","tarball":"https://registry.npmjs.org/@adlc/flail-detector/-/flail-detector-1.5.0.tgz","fileCount":8,"integrity":"sha512-YXQewvSeE8RcjsZVFyjA7O0AdD8nJQQbzftK07pdd5S/lAgZvWlfQVaXDILkOE4QVPDmkLjU9jbtYGq0OrX8tw==","signatures":[{"sig":"MEUCIQCbFqs5A0KThh8F/llRmRnSlXYQoT896ypJWJPlYFAC8wIgceu9Nf8EYCLh+OcXG8S4AMeLprR1NOuCblur7uzQDXQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adlc%2fflail-detector@1.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":24902},"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:d3432db1-a135-4932-918f-bffc5ead1a94"}},"repository":{"url":"git+https://github.com/voodootikigod/adlc.git","type":"git","directory":"packages/flail-detector"},"_npmVersion":"11.18.0","description":"Session-log flail analysis — mechanical two-strike rule for build agents (C6/P4 supervisor).","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@adlc/core":"1.5.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/flail-detector_1.5.0_1784556912801_0.28481477872745997","host":"s3://npm-registry-packages-npm-production"}},"1.5.1":{"name":"@adlc/flail-detector","version":"1.5.1","keywords":["adlc","agentic","ai","llm","cli","flail-detector","gate"],"author":{"url":"@voodootikigod","name":"Chris Williams"},"license":"MIT","_id":"@adlc/flail-detector@1.5.1","maintainers":[{"name":"voodootikigod","email":"voodootikigod@gmail.com"}],"homepage":"https://github.com/voodootikigod/adlc/tree/main/packages/flail-detector#readme","bugs":{"url":"https://github.com/voodootikigod/adlc/issues"},"bin":{"flail-detector":"bin/flail-detector.mjs"},"dist":{"shasum":"8df7ccee883a1f0b18081e3ebe46b233f30accaf","tarball":"https://registry.npmjs.org/@adlc/flail-detector/-/flail-detector-1.5.1.tgz","fileCount":8,"integrity":"sha512-VL6GWLDKQKict2md5dN1BQ2fjErmCYu8vBCaeP/1R+X/iKpcG/GsQKhULQOge5L/9HCWErDtMXxAZM6cXxPG1g==","signatures":[{"sig":"MEYCIQCwdvEp0cf7BdmydpsYWjfBa6f9OGSu4sm16pfTfr3khQIhAOitKfkjaRtkQYex+FthKDOv582+nxd9a4COOM1mgSsa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adlc%2fflail-detector@1.5.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":24902},"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:d3432db1-a135-4932-918f-bffc5ead1a94"}},"repository":{"url":"git+https://github.com/voodootikigod/adlc.git","type":"git","directory":"packages/flail-detector"},"_npmVersion":"11.18.0","description":"Session-log flail analysis — mechanical two-strike rule for build agents (C6/P4 supervisor).","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@adlc/core":"1.5.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/flail-detector_1.5.1_1784631811192_0.8795054612976443","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"@adlc/flail-detector","version":"1.6.0","keywords":["adlc","agentic","ai","llm","cli","flail-detector","gate"],"author":{"url":"@voodootikigod","name":"Chris Williams"},"license":"MIT","_id":"@adlc/flail-detector@1.6.0","maintainers":[{"name":"voodootikigod","email":"voodootikigod@gmail.com"}],"homepage":"https://github.com/voodootikigod/adlc/tree/main/packages/flail-detector#readme","bugs":{"url":"https://github.com/voodootikigod/adlc/issues"},"bin":{"flail-detector":"bin/flail-detector.mjs"},"dist":{"shasum":"372b9825023f065b07dea2371c12c9e40a43ccce","tarball":"https://registry.npmjs.org/@adlc/flail-detector/-/flail-detector-1.6.0.tgz","fileCount":8,"integrity":"sha512-eC6RjP0tv79CtIZLuQfODwccYryfmfRMWpxmNl3cY5agAHBxVE24VKMjt0/6FiTKAHCr3xaQd0xfCov5G6sL/w==","signatures":[{"sig":"MEQCICsYXtKmQZ/MPWVPBRDMHbyZ74Cj5KgUAT0vWIrPNyv+AiBASyK+2S+VRJm5iur+mwiighAUADBx+egaD+14NL0tww==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adlc%2fflail-detector@1.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":24902},"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:d3432db1-a135-4932-918f-bffc5ead1a94"}},"repository":{"url":"git+https://github.com/voodootikigod/adlc.git","type":"git","directory":"packages/flail-detector"},"_npmVersion":"11.18.0","description":"Session-log flail analysis — mechanical two-strike rule for build agents (C6/P4 supervisor).","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@adlc/core":"1.6.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/flail-detector_1.6.0_1784720476475_0.6109387849141701","host":"s3://npm-registry-packages-npm-production"}},"1.7.0":{"name":"@adlc/flail-detector","version":"1.7.0","keywords":["adlc","agentic","ai","llm","cli","flail-detector","gate"],"author":{"url":"@voodootikigod","name":"Chris Williams"},"license":"MIT","_id":"@adlc/flail-detector@1.7.0","maintainers":[{"name":"voodootikigod","email":"voodootikigod@gmail.com"}],"homepage":"https://github.com/voodootikigod/adlc/tree/main/packages/flail-detector#readme","bugs":{"url":"https://github.com/voodootikigod/adlc/issues"},"bin":{"flail-detector":"bin/flail-detector.mjs"},"dist":{"shasum":"72d6de604162f99ee449204b594682be8d96a6dc","tarball":"https://registry.npmjs.org/@adlc/flail-detector/-/flail-detector-1.7.0.tgz","fileCount":8,"integrity":"sha512-oslwEUYEFx06Q0jUYYZIfSFeq1lga5VlyEofmzmKbPiBpzQr5Kg06asvKMRV0A4GmonpfCxzts4q5daE8IeWLw==","signatures":[{"sig":"MEUCICfbACt4Yb+L+Lg+NxxEJwvgNXcf1KFVdfC8ByOQ1B4jAiEAkto7t+NXIafjZDfwkJ5z0RdrhMqnmVvF5fEF0+fGDoU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adlc%2fflail-detector@1.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":28826},"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:d3432db1-a135-4932-918f-bffc5ead1a94"}},"repository":{"url":"git+https://github.com/voodootikigod/adlc.git","type":"git","directory":"packages/flail-detector"},"_npmVersion":"11.18.0","description":"Session-log flail analysis — mechanical two-strike rule for build agents (C6/P4 supervisor).","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@adlc/core":"1.7.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/flail-detector_1.7.0_1785329223190_0.04727430024529844","host":"s3://npm-registry-packages-npm-production"}},"1.8.0":{"name":"@adlc/flail-detector","version":"1.8.0","keywords":["adlc","agentic","ai","llm","cli","flail-detector","gate"],"author":{"url":"@voodootikigod","name":"Chris Williams"},"license":"MIT","_id":"@adlc/flail-detector@1.8.0","maintainers":[{"name":"voodootikigod","email":"voodootikigod@gmail.com"}],"homepage":"https://github.com/voodootikigod/adlc/tree/main/packages/flail-detector#readme","bugs":{"url":"https://github.com/voodootikigod/adlc/issues"},"bin":{"flail-detector":"bin/flail-detector.mjs"},"dist":{"shasum":"921264fd4735243fe48551f25523a7d7b3dcc682","tarball":"https://registry.npmjs.org/@adlc/flail-detector/-/flail-detector-1.8.0.tgz","fileCount":8,"integrity":"sha512-jyIIAp9JvFhv/B2+hb86J9TAgHYdnuWx8Fy0fVvNgEC8gvtYlUVbWeXO7bbrat+dTkMGlXN1NhGYF537Pdv18Q==","signatures":[{"sig":"MEYCIQC5aRSP/0o0qHuMra9NFaM4knGM4SuQsVXEVzynATfpuAIhAP4qmjGsH+EYDM1XkdEju0GW6Bkdcaa8WEMpQOuTVaUQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adlc%2fflail-detector@1.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":29318},"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:d3432db1-a135-4932-918f-bffc5ead1a94"}},"repository":{"url":"git+https://github.com/voodootikigod/adlc.git","type":"git","directory":"packages/flail-detector"},"_npmVersion":"11.19.0","description":"Session-log flail analysis — mechanical two-strike rule for build agents (C6/P4 supervisor).","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@adlc/core":"1.8.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/flail-detector_1.8.0_1786195762213_0.5161405168340933","host":"s3://npm-registry-packages-npm-production"}},"1.9.0":{"name":"@adlc/flail-detector","version":"1.9.0","keywords":["adlc","agentic","ai","llm","cli","flail-detector","gate"],"author":{"url":"@voodootikigod","name":"Chris Williams"},"license":"MIT","_id":"@adlc/flail-detector@1.9.0","maintainers":[{"name":"voodootikigod","email":"voodootikigod@gmail.com"}],"homepage":"https://github.com/voodootikigod/adlc/tree/main/packages/flail-detector#readme","bugs":{"url":"https://github.com/voodootikigod/adlc/issues"},"bin":{"flail-detector":"bin/flail-detector.mjs"},"dist":{"shasum":"28fb353f42b9623a518cd0dc7ceefeb3cbd7dcc7","tarball":"https://registry.npmjs.org/@adlc/flail-detector/-/flail-detector-1.9.0.tgz","fileCount":8,"integrity":"sha512-/NbFDB36xooy/jFYlJyWq1uo/dzC4Y5DJfLUQEEvFuqGIxR3LdsPXWry9rCT3rLllk35DF7qE0oyk4zdQ6en2Q==","signatures":[{"sig":"MEUCIQCkUbWVKKx/tU7iXer78fIc9CREdRzPz3WOBlwWjXTn4wIgV6GhYuk/AIsDNB1S5pdanjtYH0gEvC9qgTv4WZvJiKU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adlc%2fflail-detector@1.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":29318},"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:d3432db1-a135-4932-918f-bffc5ead1a94"}},"repository":{"url":"git+https://github.com/voodootikigod/adlc.git","type":"git","directory":"packages/flail-detector"},"_npmVersion":"11.19.0","description":"Session-log flail analysis — mechanical two-strike rule for build agents (C6/P4 supervisor).","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@adlc/core":"1.9.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/flail-detector_1.9.0_1786221101002_0.6719249663816709","host":"s3://npm-registry-packages-npm-production"}},"1.10.0":{"name":"@adlc/flail-detector","version":"1.10.0","keywords":["adlc","agentic","ai","llm","cli","flail-detector","gate"],"author":{"url":"@voodootikigod","name":"Chris Williams"},"license":"MIT","_id":"@adlc/flail-detector@1.10.0","maintainers":[{"name":"voodootikigod","email":"voodootikigod@gmail.com"}],"homepage":"https://github.com/voodootikigod/adlc/tree/main/packages/flail-detector#readme","bugs":{"url":"https://github.com/voodootikigod/adlc/issues"},"bin":{"flail-detector":"bin/flail-detector.mjs"},"dist":{"shasum":"4ca1f93cad1a083a2369118bfae3fa307f0f1c78","tarball":"https://registry.npmjs.org/@adlc/flail-detector/-/flail-detector-1.10.0.tgz","fileCount":8,"integrity":"sha512-mTlAKS5h/H0Rw+z5bf5dOY8CMqYvirX3qnPzUMBUjVdwT6veHnVh1xdB2ZlE/Gt7xsCLCTMmScE0hFQNaKk2Xw==","signatures":[{"sig":"MEYCIQCWm1snodQNgXggChPNhlUP/lBpi36Vltt2r6nkDxbyjgIhAJc7kY4SPL0yIjD9HyUQL27sBodFM4Xzj9upiC8CGEA0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adlc%2fflail-detector@1.10.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":29320},"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:d3432db1-a135-4932-918f-bffc5ead1a94"}},"repository":{"url":"git+https://github.com/voodootikigod/adlc.git","type":"git","directory":"packages/flail-detector"},"_npmVersion":"11.19.0","description":"Session-log flail analysis — mechanical two-strike rule for build agents (C6/P4 supervisor).","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@adlc/core":"1.10.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/flail-detector_1.10.0_1786385902848_0.6718362025872053","host":"s3://npm-registry-packages-npm-production"}},"1.11.0":{"name":"@adlc/flail-detector","version":"1.11.0","keywords":["adlc","agentic","ai","llm","cli","flail-detector","gate"],"author":{"url":"@voodootikigod","name":"Chris Williams"},"license":"MIT","_id":"@adlc/flail-detector@1.11.0","maintainers":[{"name":"voodootikigod","email":"voodootikigod@gmail.com"}],"homepage":"https://github.com/voodootikigod/adlc/tree/main/packages/flail-detector#readme","bugs":{"url":"https://github.com/voodootikigod/adlc/issues"},"bin":{"flail-detector":"bin/flail-detector.mjs"},"dist":{"shasum":"6e2b916651051dd5e2df574f353e282cd4e41a5f","tarball":"https://registry.npmjs.org/@adlc/flail-detector/-/flail-detector-1.11.0.tgz","fileCount":8,"integrity":"sha512-dYYD2ChTYBBufql9suOi+RhTW/E0Cj8aUkaWGYfsqYBBaPBzYwKyJNpwTLqwRa5qDfi2yn5hBctshoGobnPoMw==","signatures":[{"sig":"MEUCIQDNWLL3LrmQzrFEDBLv0EKOcf1VN0R1H/eNaWGyy5TDsQIgMRGpEa4DLfr3FtvdyWsQHwgtR3hw/FkGtJmNQ5WgXxI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adlc%2fflail-detector@1.11.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":31122},"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:d3432db1-a135-4932-918f-bffc5ead1a94"}},"repository":{"url":"git+https://github.com/voodootikigod/adlc.git","type":"git","directory":"packages/flail-detector"},"_npmVersion":"11.19.0","description":"Session-log flail analysis — mechanical two-strike rule for build agents (C6/P4 supervisor).","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@adlc/core":"1.11.0","@adlc/gate-manifest":"1.11.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/flail-detector_1.11.0_1787594219850_0.7047980297467","host":"s3://npm-registry-packages-npm-production"}},"1.11.1":{"name":"@adlc/flail-detector","version":"1.11.1","description":"Session-log flail analysis — mechanical two-strike rule for build agents (C6/P4 supervisor).","type":"module","license":"MIT","author":{"name":"Chris Williams","url":"@voodootikigod"},"repository":{"type":"git","url":"git+https://github.com/voodootikigod/adlc.git","directory":"packages/flail-detector"},"homepage":"https://github.com/voodootikigod/adlc/tree/main/packages/flail-detector#readme","bugs":{"url":"https://github.com/voodootikigod/adlc/issues"},"keywords":["adlc","agentic","ai","llm","cli","flail-detector","gate"],"bin":{"flail-detector":"bin/flail-detector.mjs"},"dependencies":{"@adlc/core":"1.11.1","@adlc/gate-manifest":"1.11.1"},"scripts":{"test":"node --test test/*.test.mjs"},"engines":{"node":">=18"},"publishConfig":{"access":"public","provenance":true},"gitHead":"c5772b4ff942bec77a34454c4fc888ae4e4b2c14","_id":"@adlc/flail-detector@1.11.1","_nodeVersion":"20.20.2","_npmVersion":"11.19.1","dist":{"integrity":"sha512-Tz+fUC+xnXDDFjsueli9OhBvsDMwfROey6nqph6UDzXXaMfXNrjZbTJj7gPCCNwgATenCiAOCT0fi6yQCoeaAA==","shasum":"a59956ab2cc8fffa831701026e7d73e3e7beaf71","tarball":"https://registry.npmjs.org/@adlc/flail-detector/-/flail-detector-1.11.1.tgz","fileCount":9,"unpackedSize":35317,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@adlc%2fflail-detector@1.11.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIAOF1bcb4vL/Sc16QnzEaitFNyyx+U/Z6sDLjObpEpMwAiEAjxfxhmU9j/YmuSjeucqAnEHtqj9E8LMcXar091yQ2zA="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d3432db1-a135-4932-918f-bffc5ead1a94"}},"directories":{},"maintainers":[{"name":"voodootikigod","email":"voodootikigod@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/flail-detector_1.11.1_1788949725976_0.35554287565560805"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-13T21:12:15.446Z","modified":"2026-09-09T10:28:46.408Z","1.0.0":"2026-06-13T21:12:15.798Z","1.0.2":"2026-06-14T18:16:44.357Z","1.1.0":"2026-06-23T12:14:12.835Z","1.2.0":"2026-07-10T23:27:51.892Z","1.2.1":"2026-07-10T23:45:14.570Z","1.3.0":"2026-07-11T14:32:12.531Z","1.4.0":"2026-07-15T00:20:07.760Z","1.4.1":"2026-07-15T00:50:45.372Z","1.5.0":"2026-07-20T14:15:12.949Z","1.5.1":"2026-07-21T11:03:31.349Z","1.6.0":"2026-07-22T11:41:16.636Z","1.7.0":"2026-07-29T12:47:03.327Z","1.8.0":"2026-08-08T13:29:22.423Z","1.9.0":"2026-08-08T20:31:41.149Z","1.10.0":"2026-08-10T18:18:22.997Z","1.11.0":"2026-08-24T17:56:59.987Z","1.11.1":"2026-09-09T10:28:46.099Z"},"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/flail-detector#readme","keywords":["adlc","agentic","ai","llm","cli","flail-detector","gate"],"repository":{"type":"git","url":"git+https://github.com/voodootikigod/adlc.git","directory":"packages/flail-detector"},"description":"Session-log flail analysis — mechanical two-strike rule for build agents (C6/P4 supervisor).","maintainers":[{"name":"voodootikigod","email":"voodootikigod@gmail.com"}],"readme":"# flail-detector\n\nSession-log flail analysis — mechanical two-strike rule. ADLC phase **C6 / P4 supervisor**.\n\nWatches a build session log for flail signatures. On trigger: emits verdict\n`flail`, prints a recommendation block, and exits 2 so CI can gate. Fully\ndeterministic; no LLM calls.\n\n## Usage\n\n```\nflail-detector <log-file> [--scope <glob>...] [--max-repeat <n>] [--max-bytes <n>] [--spent-tokens <n>] [--budget <n>] [--record] [--ticket <id>] [--json]\n```\n\n### Arguments\n\n| Argument | Description |\n|----------|-------------|\n| `<log-file>` | Path to the session log file to analyze (required) |\n\n### Flags\n\n| Flag | Default | Description |\n|------|---------|-------------|\n| `--scope <glob>` | _(none)_ | Declared-scope glob pattern (repeatable). When given, file paths found in tool-log lines that fall outside ALL supplied globs are flagged as **scope violations**. |\n| `--max-repeat <n>` | `2` | Trigger the **repeated-error** signal when a normalized error signature appears >= n times. |\n| `--max-bytes <n>` | _(no limit)_ | Trigger the **size** signal when the log file exceeds n bytes. |\n| `--spent-tokens <n>` | _(none)_ | Measured token spend for this ticket (e.g. from `adlc spend --ticket <id> --json`). Must be given with `--budget`. |\n| `--budget <n>` | _(none)_ | The ticket's declared token budget (`ticket.budget`, or `model-router`'s emitted per-ticket `budget`). Triggers the **budget** signal when `--spent-tokens` exceeds it. Must be given with `--spent-tokens` — either alone is a usage error. |\n| `--record` | off | On a clean verdict, append a `flail-check` entry to `.adlc/manifest.jsonl` (ADLC P4 evidence — see `@adlc/runner`). Never writes on a `flail` verdict, and never on a `could-not-analyze` outcome (issue #622). |\n| `--ticket <id>` | _(none)_ | Ticket to scope the recorded manifest entry to. Optional — recorded as `null` when omitted, same as `rails-guard --record`. |\n| `--json` | off | Machine-readable JSON output for orchestrators. |\n| `--help` | — | Print help and exit 0. |\n\n## Exit Codes\n\n| Code | Meaning |\n|------|---------|\n| `0` | Gate passes — no flail signals detected (clean) |\n| `1` | Operational error — file not found, bad argument, or **`could-not-analyze`**: the log had nothing to analyze (no non-empty lines). Never a pass — nothing is recorded even with `--record`. |\n| `2` | Gate fails — one or more flail signals triggered |\n\n## Signals\n\n### 1. repeated-error\n\nLines matching `/error|exception|failed|cannot|ENOENT/i` are normalized\n(lowercase; strip digits, hex literals, quoted strings, and absolute paths),\nthen counted per unique signature. Any signature occurring >= `--max-repeat`\ntimes triggers this signal.\n\n**Normalization** ensures that `Error: cannot find module \"lodash\" at line 42`\nand `Error: cannot find module \"express\" at line 99` collapse to the same\nsignature — the error kind is what matters, not the varying operands.\n\n### 2. scope-violation\n\nOnly active when `--scope` is given. File paths extracted from common\ntool-log patterns:\n\n- `Writing <path>`\n- `Editing <path>`\n- `Created <path>`\n- `\"file_path\":\"<path>\"` (JSON tool-log format)\n\nAny path that does not match at least one `--scope` glob is a violation.\n\n### 3. edit-churn\n\nThe same file path appearing in >= 3 write/edit log lines (regardless of\nwhich verb — Writing, Editing, or Created). Indicates the agent is cycling\nback to the same file repeatedly.\n\n### 4. size\n\nWhen `--max-bytes` is given, triggers if the log file byte count exceeds the\nthreshold.\n\n### 5. budget\n\nWhen both `--spent-tokens` and `--budget` are given, triggers if measured\nspend exceeds the ticket's declared ceiling — ADLC.md C6's \"token spend past\nthe ticket budget\" trigger. Neither figure comes from the log itself:\n`flail-detector` doesn't measure tokens, it only compares two numbers the\ncaller supplies. Pair with `adlc spend` for the measured side and\n`model-router`'s emitted `budget` (or the ticket's own declared `budget`\nfield) for the ceiling. Giving only one of the two flags is a usage error\n(exit 1) rather than a silent no-op.\n\n## Input Handling\n\nIf more than half the non-empty lines of the log parse as JSON objects, the\nfile is treated as **JSONL**: string values of the keys `content`, `text`, and\n`message` are recursively extracted and fed into the signal detectors. All\nother files are treated as **plain text**, one line at a time.\n\n## Output\n\nHuman-readable (default):\n\n```\nflail-detector: FLAIL\n  bytes: 361\n  signals:\n    repeated-error (1 signature(s)):\n      [2x] error: cannot resolve module at line in\n    scope-violation (1 path(s) outside scope):\n      /etc/hosts\n    edit-churn (1 file(s) edited >= 3 times):\n      [3x] src/index.ts\n\n  recommendation:\n    Kill the session. Append these dead-ends to the ticket: error: cannot resolve module at line in\n```\n\nMachine-readable (`--json`):\n\n```json\n{\n  \"verdict\": \"flail\",\n  \"signals\": [...],\n  \"bytes\": 361,\n  \"recommendation\": \"Kill the session. Append these dead-ends to the ticket: ...\"\n}\n```\n\nWhen the log has nothing to analyze — it is empty or whitespace-only — the\nverdict is `could-not-analyze` and the exit code is 1, not 0:\n\n```json\n{\n  \"verdict\": \"could-not-analyze\",\n  \"reasons\": [\"log has no non-empty lines (empty or whitespace-only file)\"],\n  \"bytes\": 0,\n  \"signals\": []\n}\n```\n\nIn text mode the same outcome prints `flail-detector: could not analyze — <reasons>`\nto stderr. It is an operational outcome, never a pass: a supervisor pointed at a log\npath that was never written must not get a green P4 gate, and `--record` writes no\n`flail-check` entry for it (issue #622).\n\nScope is deliberately not part of this decision: a well-behaved session may contain\nno writes at all, and supervisors such as `@adlc/fleet` pass the ticket's `--scope`\non every consult — so a log with lines but no extractable file path is analyzed\nnormally (repeated-error, size and budget signals still fire; the scope signals\nsimply have nothing to flag). Under-extraction of paths from real logs is issue\n#623's domain.\n\n## Examples\n\n```bash\n# Analyze a plain-text session log\nflail-detector session.log\n\n# Enforce scope (write/edit must stay inside src/ or test/)\nflail-detector session.log --scope 'src/**' --scope 'test/**'\n\n# Raise the error-repeat threshold to 3\nflail-detector session.log --max-repeat 3\n\n# Flag oversized logs (e.g. > 1 MB context)\nflail-detector session.log --max-bytes 1048576\n\n# Flag token spend past the ticket's declared budget\nflail-detector session.log --spent-tokens 85000 --budget 50000\n\n# JSON for orchestrators\nflail-detector session.log --json\n\n# Record P4 evidence on a clean pass (adlc run p4 requires this)\nflail-detector session.log --scope 'src/**' --record --ticket T42\n```\n\n## ADLC Phase\n\n**C6 / P4 supervisor.** Encodes the two-strike regeneration rule mechanically.\nSee ADLC.md §C6 for the design rationale.\n\nIntended to be invoked by a P4 supervisor after each build attempt. On `flail`\n(exit 2): kill the session, append the dead-end signatures to the ticket, and\nregenerate fresh. On second trigger: escalate to P2 — the ticket is wrong, not\nthe agent.\n\n## Relationship to Sibling Tools\n\n- **rails-guard (C5)**: enforces frozen rails on git diffs; flail-detector\n  watches live session logs for behavioral drift.\n- **consensus-fix (C7)**: fan-out fix strategy invoked after flail is\n  confirmed; flail-detector is the upstream gate that triggers it.\n- **premortem (C2)**: upstream risk analysis; flail-detector catches the\n  risk materializing at runtime.\n\n## Core Gaps\n\nNone. This tool uses only `parseArgs`, `opError`, `printJson`, `sha256`, `pass`,\n`gateFail`, and `globMatch` from `@adlc/core`. No LLM, no git. `--record` is the\none ledger write this tool performs, via `@adlc/gate-manifest`'s\n`appendManifestEntry`, mirroring `rails-guard`'s `--record` (issue #106) —\nwithout it, `adlc run p4`'s `flail-check` requirement could never be satisfied\nby any documented flow.\n","readmeFilename":"README.md"}