agentic-qe 3.10.4 → 3.10.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (469) hide show
  1. package/.claude/agents/v3/qe-accessibility-auditor.md +8 -0
  2. package/.claude/agents/v3/qe-bdd-generator.md +8 -0
  3. package/.claude/agents/v3/qe-chaos-engineer.md +8 -0
  4. package/.claude/agents/v3/qe-code-complexity.md +8 -0
  5. package/.claude/agents/v3/qe-code-intelligence.md +8 -0
  6. package/.claude/agents/v3/qe-contract-validator.md +8 -0
  7. package/.claude/agents/v3/qe-coverage-specialist.md +8 -0
  8. package/.claude/agents/v3/qe-defect-predictor.md +8 -0
  9. package/.claude/agents/v3/qe-dependency-mapper.md +8 -0
  10. package/.claude/agents/v3/qe-deployment-advisor.md +8 -0
  11. package/.claude/agents/v3/qe-devils-advocate.md +8 -0
  12. package/.claude/agents/v3/qe-flaky-hunter.md +8 -0
  13. package/.claude/agents/v3/qe-fleet-commander.md +8 -0
  14. package/.claude/agents/v3/qe-gap-detector.md +8 -0
  15. package/.claude/agents/v3/qe-graphql-tester.md +8 -0
  16. package/.claude/agents/v3/qe-impact-analyzer.md +8 -0
  17. package/.claude/agents/v3/qe-integration-tester.md +8 -0
  18. package/.claude/agents/v3/qe-kg-builder.md +8 -0
  19. package/.claude/agents/v3/qe-learning-coordinator.md +8 -0
  20. package/.claude/agents/v3/qe-load-tester.md +8 -0
  21. package/.claude/agents/v3/qe-message-broker-tester.md +8 -0
  22. package/.claude/agents/v3/qe-metrics-optimizer.md +8 -0
  23. package/.claude/agents/v3/qe-middleware-validator.md +8 -0
  24. package/.claude/agents/v3/qe-mutation-tester.md +8 -0
  25. package/.claude/agents/v3/qe-odata-contract-tester.md +8 -0
  26. package/.claude/agents/v3/qe-parallel-executor.md +8 -0
  27. package/.claude/agents/v3/qe-pattern-learner.md +8 -0
  28. package/.claude/agents/v3/qe-pentest-validator.md +8 -0
  29. package/.claude/agents/v3/qe-performance-tester.md +8 -0
  30. package/.claude/agents/v3/qe-product-factors-assessor.md +8 -0
  31. package/.claude/agents/v3/qe-property-tester.md +8 -0
  32. package/.claude/agents/v3/qe-quality-criteria-recommender.md +8 -0
  33. package/.claude/agents/v3/qe-quality-gate.md +8 -0
  34. package/.claude/agents/v3/qe-qx-partner.md +8 -0
  35. package/.claude/agents/v3/qe-regression-analyzer.md +8 -0
  36. package/.claude/agents/v3/qe-requirements-validator.md +8 -0
  37. package/.claude/agents/v3/qe-responsive-tester.md +8 -0
  38. package/.claude/agents/v3/qe-retry-handler.md +8 -0
  39. package/.claude/agents/v3/qe-risk-assessor.md +8 -0
  40. package/.claude/agents/v3/qe-root-cause-analyzer.md +8 -0
  41. package/.claude/agents/v3/qe-sap-idoc-tester.md +8 -0
  42. package/.claude/agents/v3/qe-sap-rfc-tester.md +8 -0
  43. package/.claude/agents/v3/qe-security-auditor.md +8 -0
  44. package/.claude/agents/v3/qe-security-scanner.md +8 -0
  45. package/.claude/agents/v3/qe-soap-tester.md +8 -0
  46. package/.claude/agents/v3/qe-sod-analyzer.md +8 -0
  47. package/.claude/agents/v3/qe-tdd-specialist.md +8 -0
  48. package/.claude/agents/v3/qe-test-architect.md +8 -0
  49. package/.claude/agents/v3/qe-test-idea-rewriter.md +8 -0
  50. package/.claude/agents/v3/qe-transfer-specialist.md +8 -0
  51. package/.claude/agents/v3/qe-visual-tester.md +8 -0
  52. package/.claude/skills/qcsd-development-swarm/SKILL.md +27 -6
  53. package/.claude/skills/skills-manifest.json +1 -1
  54. package/CHANGELOG.md +9012 -8863
  55. package/assets/agents/v3/qe-accessibility-auditor.md +8 -0
  56. package/assets/agents/v3/qe-bdd-generator.md +8 -0
  57. package/assets/agents/v3/qe-chaos-engineer.md +8 -0
  58. package/assets/agents/v3/qe-code-complexity.md +8 -0
  59. package/assets/agents/v3/qe-code-intelligence.md +8 -0
  60. package/assets/agents/v3/qe-contract-validator.md +8 -0
  61. package/assets/agents/v3/qe-coverage-specialist.md +8 -0
  62. package/assets/agents/v3/qe-defect-predictor.md +8 -0
  63. package/assets/agents/v3/qe-dependency-mapper.md +8 -0
  64. package/assets/agents/v3/qe-deployment-advisor.md +8 -0
  65. package/assets/agents/v3/qe-devils-advocate.md +8 -0
  66. package/assets/agents/v3/qe-flaky-hunter.md +8 -0
  67. package/assets/agents/v3/qe-fleet-commander.md +8 -0
  68. package/assets/agents/v3/qe-gap-detector.md +8 -0
  69. package/assets/agents/v3/qe-graphql-tester.md +8 -0
  70. package/assets/agents/v3/qe-impact-analyzer.md +8 -0
  71. package/assets/agents/v3/qe-integration-tester.md +8 -0
  72. package/assets/agents/v3/qe-kg-builder.md +8 -0
  73. package/assets/agents/v3/qe-learning-coordinator.md +8 -0
  74. package/assets/agents/v3/qe-load-tester.md +8 -0
  75. package/assets/agents/v3/qe-message-broker-tester.md +8 -0
  76. package/assets/agents/v3/qe-metrics-optimizer.md +8 -0
  77. package/assets/agents/v3/qe-middleware-validator.md +8 -0
  78. package/assets/agents/v3/qe-mutation-tester.md +8 -0
  79. package/assets/agents/v3/qe-odata-contract-tester.md +8 -0
  80. package/assets/agents/v3/qe-parallel-executor.md +8 -0
  81. package/assets/agents/v3/qe-pattern-learner.md +8 -0
  82. package/assets/agents/v3/qe-pentest-validator.md +8 -0
  83. package/assets/agents/v3/qe-performance-tester.md +8 -0
  84. package/assets/agents/v3/qe-product-factors-assessor.md +8 -0
  85. package/assets/agents/v3/qe-property-tester.md +8 -0
  86. package/assets/agents/v3/qe-quality-criteria-recommender.md +8 -0
  87. package/assets/agents/v3/qe-quality-gate.md +8 -0
  88. package/assets/agents/v3/qe-qx-partner.md +8 -0
  89. package/assets/agents/v3/qe-regression-analyzer.md +8 -0
  90. package/assets/agents/v3/qe-requirements-validator.md +8 -0
  91. package/assets/agents/v3/qe-responsive-tester.md +8 -0
  92. package/assets/agents/v3/qe-retry-handler.md +8 -0
  93. package/assets/agents/v3/qe-risk-assessor.md +8 -0
  94. package/assets/agents/v3/qe-root-cause-analyzer.md +8 -0
  95. package/assets/agents/v3/qe-sap-idoc-tester.md +8 -0
  96. package/assets/agents/v3/qe-sap-rfc-tester.md +8 -0
  97. package/assets/agents/v3/qe-security-auditor.md +8 -0
  98. package/assets/agents/v3/qe-security-scanner.md +8 -0
  99. package/assets/agents/v3/qe-soap-tester.md +8 -0
  100. package/assets/agents/v3/qe-sod-analyzer.md +8 -0
  101. package/assets/agents/v3/qe-tdd-specialist.md +8 -0
  102. package/assets/agents/v3/qe-test-architect.md +8 -0
  103. package/assets/agents/v3/qe-test-idea-rewriter.md +8 -0
  104. package/assets/agents/v3/qe-transfer-specialist.md +8 -0
  105. package/assets/agents/v3/qe-visual-tester.md +8 -0
  106. package/dist/arena/arena.d.ts +68 -0
  107. package/dist/arena/arena.js +169 -0
  108. package/dist/arena/mutator.d.ts +23 -0
  109. package/dist/arena/mutator.js +112 -0
  110. package/dist/arena/rng.d.ts +15 -0
  111. package/dist/arena/rng.js +34 -0
  112. package/dist/arena/runner.d.ts +44 -0
  113. package/dist/arena/runner.js +79 -0
  114. package/dist/cli/bundle.js +7 -7
  115. package/dist/cli/chunks/adapter-AMIHQ243.js +2 -0
  116. package/dist/cli/chunks/{agent-booster-wasm-EJPDSWON.js → agent-booster-wasm-J5CITTTV.js} +2 -2
  117. package/dist/cli/chunks/{agent-handler-2DZB7LGI.js → agent-handler-HMN4ZBZ6.js} +2 -2
  118. package/dist/cli/chunks/{agent-memory-branch-SSFYAVIK.js → agent-memory-branch-SCAKN4DU.js} +2 -2
  119. package/dist/cli/chunks/aqe-learning-engine-LRG2UG6P.js +2 -0
  120. package/dist/cli/chunks/arena-CJOLCHZW.js +18 -0
  121. package/dist/cli/chunks/arena-FVBTSGKS.js +4 -0
  122. package/dist/cli/chunks/audit-SOF6L5RY.js +3 -0
  123. package/dist/cli/chunks/base-WDL3FANJ.js +2 -0
  124. package/dist/cli/chunks/{hnswlib-node-3TZFES5I.js → better-sqlite3-5G7LRX7Q.js} +2 -2
  125. package/dist/cli/chunks/{brain-handler-LFHX2TYP.js → brain-handler-D2ZQQI2J.js} +3 -3
  126. package/dist/cli/chunks/{branch-enumerator-AX7DKGV7.js → branch-enumerator-QQXOCGOR.js} +2 -2
  127. package/dist/cli/chunks/{browser-4NYLZ7FA.js → browser-XASHKIEN.js} +2 -2
  128. package/dist/cli/chunks/browser-workflow-W7S4IKWD.js +2 -0
  129. package/dist/cli/chunks/{chunk-VJOPNK2L.js → chunk-2CZQA3NN.js} +2 -2
  130. package/dist/cli/chunks/{chunk-DPKECIKN.js → chunk-2I5RXDNO.js} +2 -2
  131. package/dist/cli/chunks/{chunk-M4ARHDY4.js → chunk-2IC2I525.js} +1 -1
  132. package/dist/cli/chunks/{chunk-M5DBKHM4.js → chunk-2RQSFRON.js} +2 -2
  133. package/dist/cli/chunks/{chunk-WYMQ6FZR.js → chunk-2UI5LQ7C.js} +3 -3
  134. package/dist/cli/chunks/{chunk-ISRTT4I7.js → chunk-3XUPDWMA.js} +8 -8
  135. package/dist/cli/chunks/chunk-434VUSZP.js +2 -0
  136. package/dist/cli/chunks/{chunk-SXMGNMFL.js → chunk-4B22URZJ.js} +3 -3
  137. package/dist/cli/chunks/{chunk-LHPR7ROV.js → chunk-4N4TU7ST.js} +1 -1
  138. package/dist/cli/chunks/{chunk-ND6YSW5N.js → chunk-4XEUJH2M.js} +1 -1
  139. package/dist/cli/chunks/{chunk-BEFRQOLH.js → chunk-5QTUGFFP.js} +2 -2
  140. package/dist/cli/chunks/{chunk-DAIM72HV.js → chunk-5V4IFRG5.js} +2 -2
  141. package/dist/cli/chunks/{chunk-F34OO2Q7.js → chunk-5VTRPOYL.js} +3 -3
  142. package/dist/cli/chunks/{chunk-GILL32E2.js → chunk-6DHJPKAH.js} +2 -2
  143. package/dist/cli/chunks/{chunk-YSLE6NNG.js → chunk-6RFPELCD.js} +2 -2
  144. package/dist/cli/chunks/{chunk-B6CT4ILU.js → chunk-6ZLVQTQ5.js} +4 -4
  145. package/dist/cli/chunks/{chunk-XJXCSCCP.js → chunk-7BPYFDWY.js} +1 -1
  146. package/dist/cli/chunks/{chunk-RJKYPWFD.js → chunk-7NXVVIJZ.js} +2 -2
  147. package/dist/cli/chunks/{chunk-USB7GCIC.js → chunk-7OK5H6ML.js} +1 -1
  148. package/dist/cli/chunks/{chunk-MDWJXSBA.js → chunk-7RTI5WT4.js} +2 -2
  149. package/dist/cli/chunks/{chunk-O3SG32PS.js → chunk-7SFCZ3AE.js} +1 -1
  150. package/dist/cli/chunks/{chunk-OV4BLIKJ.js → chunk-A2DCROAN.js} +2 -2
  151. package/dist/cli/chunks/{chunk-Y2EDDV5U.js → chunk-AJ2VDNPB.js} +3 -3
  152. package/dist/cli/chunks/chunk-AQPFTDGS.js +14 -0
  153. package/dist/cli/chunks/{chunk-MFWWPRBV.js → chunk-B3H2TTYT.js} +2 -2
  154. package/dist/cli/chunks/{chunk-PISW5HUX.js → chunk-BHD6THT5.js} +1 -1
  155. package/dist/cli/chunks/{chunk-5Q3L4QEE.js → chunk-BXOGLZGU.js} +2 -2
  156. package/dist/cli/chunks/{chunk-TWAWEP4X.js → chunk-C75ODWRP.js} +3 -3
  157. package/dist/cli/chunks/{chunk-AMW27FSS.js → chunk-CH7KUYGO.js} +3 -3
  158. package/dist/cli/chunks/{chunk-MHWYQHGN.js → chunk-CSM4LXTH.js} +1 -1
  159. package/dist/cli/chunks/{chunk-SC6UFGJ6.js → chunk-DAUQIXHW.js} +2 -2
  160. package/dist/cli/chunks/{chunk-NJYI7HX7.js → chunk-DF4Z7TKZ.js} +2 -2
  161. package/dist/cli/chunks/{chunk-IYFMDIYZ.js → chunk-DFBVWMX3.js} +2 -2
  162. package/dist/cli/chunks/{chunk-FQ7I4JBQ.js → chunk-EDPVATNH.js} +2 -2
  163. package/dist/cli/chunks/{chunk-STMMZXS6.js → chunk-EJWAKPZD.js} +1 -1
  164. package/dist/cli/chunks/{chunk-EGTOSQZK.js → chunk-ELC6JIXL.js} +2 -2
  165. package/dist/cli/chunks/{chunk-TBJ566KV.js → chunk-ELTN4F4R.js} +2 -2
  166. package/dist/cli/chunks/{chunk-UXJVR323.js → chunk-ESZDW6G7.js} +2 -2
  167. package/dist/cli/chunks/{chunk-XDZXLEJK.js → chunk-EYKID5HA.js} +2 -2
  168. package/dist/cli/chunks/{chunk-VRE2EBFI.js → chunk-F72A356B.js} +2 -2
  169. package/dist/cli/chunks/{chunk-AZJYDM2K.js → chunk-GWHDPEBT.js} +1 -1
  170. package/dist/cli/chunks/{chunk-L6VNEEN6.js → chunk-GXNNKM7F.js} +1 -1
  171. package/dist/cli/chunks/{chunk-NSRDP7RD.js → chunk-H4Q36ILL.js} +2 -2
  172. package/dist/cli/chunks/{chunk-2G2PVVQG.js → chunk-H6UPZFI6.js} +2 -2
  173. package/dist/cli/chunks/chunk-H73FLSBV.js +699 -0
  174. package/dist/cli/chunks/{chunk-Q53M4LI7.js → chunk-HDEFCRHI.js} +1 -1
  175. package/dist/cli/chunks/{chunk-G5FPWH5O.js → chunk-HFU3LTQX.js} +15 -15
  176. package/dist/cli/chunks/{chunk-C2446H7G.js → chunk-HMHQOEU7.js} +2 -2
  177. package/dist/cli/chunks/{chunk-IAK76TIZ.js → chunk-HWKFBRMX.js} +1 -1
  178. package/dist/cli/chunks/{chunk-7BQXEYRV.js → chunk-HZGOVRZ6.js} +2 -2
  179. package/dist/cli/chunks/{chunk-VJ2D6FST.js → chunk-I7ADT6AZ.js} +2 -2
  180. package/dist/cli/chunks/{chunk-3UGUX34A.js → chunk-IB3QQDC4.js} +1 -1
  181. package/dist/cli/chunks/{chunk-5T2HDET6.js → chunk-J2SMTP2L.js} +3 -3
  182. package/dist/cli/chunks/{chunk-4FTLYIMW.js → chunk-J3WUBGLQ.js} +2 -2
  183. package/dist/cli/chunks/{chunk-4BX72XG4.js → chunk-JADBRSQN.js} +2 -2
  184. package/dist/cli/chunks/{chunk-N4CXUGXE.js → chunk-JP2YXWJD.js} +2 -2
  185. package/dist/cli/chunks/chunk-JPL53G4V.js +20 -0
  186. package/dist/cli/chunks/{chunk-GLMDRGJD.js → chunk-JX7HZMW5.js} +1 -1
  187. package/dist/cli/chunks/{chunk-GDMH7NPV.js → chunk-JXCIRWLQ.js} +2 -2
  188. package/dist/cli/chunks/{chunk-UFKVKNAA.js → chunk-K32AUACO.js} +1 -1
  189. package/dist/cli/chunks/{chunk-XVA56PXZ.js → chunk-KQOJYO5Z.js} +4 -4
  190. package/dist/cli/chunks/{chunk-PLD4IGDL.js → chunk-KVMY2ABO.js} +2 -2
  191. package/dist/cli/chunks/{chunk-7VO5IEJ2.js → chunk-L2IMTNZF.js} +2 -2
  192. package/dist/cli/chunks/{chunk-KCXE2LZU.js → chunk-LAGNWKAD.js} +2 -2
  193. package/dist/cli/chunks/{chunk-OIFJH7TF.js → chunk-LEDF3LGZ.js} +1 -1
  194. package/dist/cli/chunks/{chunk-F6QPAVWS.js → chunk-LHA4OQ7G.js} +2 -2
  195. package/dist/cli/chunks/{chunk-EMZ3DXMG.js → chunk-LHZOIXJ6.js} +2 -2
  196. package/dist/cli/chunks/{chunk-MU4P4P4E.js → chunk-LOQMQEKN.js} +1 -1
  197. package/dist/cli/chunks/{chunk-F77X5DAF.js → chunk-LWUIK5DH.js} +2 -2
  198. package/dist/cli/chunks/{chunk-KWZEBHAP.js → chunk-M3APJ7VS.js} +2 -2
  199. package/dist/cli/chunks/{chunk-RUC3FCRK.js → chunk-M4OYZMXE.js} +2 -2
  200. package/dist/cli/chunks/{chunk-IPAQ4HVX.js → chunk-MCMVRPNG.js} +2 -2
  201. package/dist/cli/chunks/{chunk-PMWWWYUM.js → chunk-MJLDZSFB.js} +1 -1
  202. package/dist/cli/chunks/{chunk-M3MKP5VN.js → chunk-MQN3HYFX.js} +1 -1
  203. package/dist/cli/chunks/{chunk-6OLHPWSN.js → chunk-MSJGDIRP.js} +2 -2
  204. package/dist/cli/chunks/{chunk-UW3ZSFFB.js → chunk-NEIJP6TG.js} +2 -2
  205. package/dist/cli/chunks/{chunk-XBFEHVBO.js → chunk-NHC635LL.js} +2 -2
  206. package/dist/cli/chunks/{chunk-Z4BTPQLG.js → chunk-NKEGEQ3J.js} +2 -2
  207. package/dist/cli/chunks/{chunk-6SCIX2W2.js → chunk-NN35QH6X.js} +2 -2
  208. package/dist/cli/chunks/{chunk-ZM4QGYGK.js → chunk-NUCJS3Z7.js} +3 -3
  209. package/dist/cli/chunks/{chunk-WI5WXYIS.js → chunk-O2H5WYFK.js} +2 -2
  210. package/dist/cli/chunks/{chunk-2B6ETC7C.js → chunk-O4MNYX4X.js} +2 -2
  211. package/dist/cli/chunks/{chunk-JYR3X4OC.js → chunk-OBLAWVXM.js} +1 -1
  212. package/dist/cli/chunks/{chunk-K7CW2X6U.js → chunk-OU4HRUVV.js} +2 -2
  213. package/dist/cli/chunks/{chunk-E6CGBOZY.js → chunk-P7EOYGR2.js} +2 -2
  214. package/dist/cli/chunks/{chunk-KJ56OXH4.js → chunk-PFSBUTDA.js} +1 -1
  215. package/dist/cli/chunks/{chunk-PZCSJZVJ.js → chunk-PIIBVLFC.js} +2 -2
  216. package/dist/cli/chunks/{chunk-LYKSIOOT.js → chunk-PIJ5XOMM.js} +2 -2
  217. package/dist/cli/chunks/{chunk-D7IWGQTW.js → chunk-Q4LYWIEX.js} +2 -2
  218. package/dist/cli/chunks/{chunk-TCV5DASI.js → chunk-Q5432RIH.js} +2 -2
  219. package/dist/cli/chunks/{chunk-U27GVYXA.js → chunk-QJXZ4SU7.js} +2 -2
  220. package/dist/cli/chunks/{chunk-K7K4TFJM.js → chunk-QNIL3D6E.js} +1 -1
  221. package/dist/cli/chunks/{chunk-D7PI4CYZ.js → chunk-QUQA4NNZ.js} +2 -2
  222. package/dist/cli/chunks/{chunk-N244P4MM.js → chunk-QZSNYXYC.js} +2 -2
  223. package/dist/cli/chunks/{chunk-NZGLDOU4.js → chunk-RA7HEY5G.js} +17 -17
  224. package/dist/cli/chunks/{chunk-HTLAPMTK.js → chunk-RBZWUWUG.js} +1 -1
  225. package/dist/cli/chunks/{chunk-3ISX5B77.js → chunk-RH3I4Q23.js} +2 -2
  226. package/dist/cli/chunks/{chunk-M2PSXKTG.js → chunk-ROXH622K.js} +2 -2
  227. package/dist/cli/chunks/{chunk-6WF2MOQB.js → chunk-RTAGNKCV.js} +2 -2
  228. package/dist/cli/chunks/{chunk-2L5VFVCG.js → chunk-RTFFD263.js} +1 -1
  229. package/dist/cli/chunks/{chunk-PWJZZCHJ.js → chunk-S574AFAT.js} +1 -1
  230. package/dist/cli/chunks/{chunk-SZKFT6CD.js → chunk-SA5FTDRS.js} +2 -2
  231. package/dist/cli/chunks/{chunk-AIBE3J4A.js → chunk-SHVTMMJB.js} +1 -1
  232. package/dist/cli/chunks/{chunk-MQIAN57O.js → chunk-SUGQZCNI.js} +2 -2
  233. package/dist/cli/chunks/{chunk-LOFA3U4X.js → chunk-T6CUKJHS.js} +1 -1
  234. package/dist/cli/chunks/{chunk-UWAUYDW4.js → chunk-T6SCQVWH.js} +2 -2
  235. package/dist/cli/chunks/{chunk-KUFC4DBX.js → chunk-TFA5UETW.js} +1 -1
  236. package/dist/cli/chunks/{chunk-OO7KJ34Y.js → chunk-TFJDJVPC.js} +2 -2
  237. package/dist/cli/chunks/chunk-TNVOINYC.js +12 -0
  238. package/dist/cli/chunks/{chunk-N3MM4Z33.js → chunk-TUFU3BAK.js} +2 -2
  239. package/dist/cli/chunks/{chunk-SJC7OKF3.js → chunk-TWH3ZL6B.js} +2 -2
  240. package/dist/cli/chunks/{chunk-VDKMBOUK.js → chunk-ULEVKOWQ.js} +1 -1
  241. package/dist/cli/chunks/{chunk-EWI37TJA.js → chunk-ULV5K4V5.js} +1 -1
  242. package/dist/cli/chunks/{chunk-SVILIQQQ.js → chunk-UNDPB5SS.js} +1 -1
  243. package/dist/cli/chunks/{chunk-K72J52JO.js → chunk-UQYDFT6I.js} +2 -2
  244. package/dist/cli/chunks/{chunk-5T4J3IPG.js → chunk-USPBUR6P.js} +2 -2
  245. package/dist/cli/chunks/{chunk-LKK3NIHC.js → chunk-UVWOIF6P.js} +1 -1
  246. package/dist/cli/chunks/{chunk-MKZQBBCU.js → chunk-UWDC3TZP.js} +2 -2
  247. package/dist/cli/chunks/{chunk-KGPAWNNR.js → chunk-VFFIMJWT.js} +1 -1
  248. package/dist/cli/chunks/{chunk-MIQBRVK2.js → chunk-VQM2TC2V.js} +1 -1
  249. package/dist/cli/chunks/{chunk-WIYWDON4.js → chunk-WNAFMYND.js} +2 -2
  250. package/dist/cli/chunks/{chunk-FDFJJFQT.js → chunk-X3YWLJGT.js} +2 -2
  251. package/dist/cli/chunks/{chunk-GS33ZRJH.js → chunk-X5R6SUWM.js} +2 -2
  252. package/dist/cli/chunks/{chunk-V5G3SMAJ.js → chunk-XKRJQIGP.js} +2 -2
  253. package/dist/cli/chunks/{chunk-5FNNCVXR.js → chunk-XLFYVBOD.js} +1 -1
  254. package/dist/cli/chunks/chunk-XOGBTPJI.js +65 -0
  255. package/dist/cli/chunks/{chunk-ICF5RPQU.js → chunk-XOYTW6LI.js} +2 -2
  256. package/dist/cli/chunks/{chunk-MWV4KPOB.js → chunk-Z3RPA3RD.js} +2 -2
  257. package/dist/cli/chunks/{chunk-QPMAXDJ2.js → chunk-ZBSEXVEI.js} +2 -2
  258. package/dist/cli/chunks/{chunk-JRBGHWAM.js → chunk-ZMCMSDXR.js} +2 -2
  259. package/dist/cli/chunks/{chunk-MQ5WMWUK.js → chunk-ZY4G7O7Y.js} +2 -2
  260. package/dist/cli/chunks/{ci-2BLMQNX3.js → ci-COQUVZH6.js} +2 -2
  261. package/dist/cli/chunks/{ci-output-XK4PPSN7.js → ci-output-KVUHUEOT.js} +2 -2
  262. package/dist/cli/chunks/{circuit-breaker-W7X4NPFE.js → circuit-breaker-O4JNXAYH.js} +2 -2
  263. package/dist/cli/chunks/{claude-flow-setup-GLBLSYNJ.js → claude-flow-setup-J65U34NA.js} +2 -2
  264. package/dist/cli/chunks/client-VJNNIAMG.js +2 -0
  265. package/dist/cli/chunks/{cline-installer-7WX7DBGI.js → cline-installer-ZTG234Z2.js} +2 -2
  266. package/dist/cli/chunks/{code-SP3HAQWG.js → code-5GWPY4IX.js} +2 -2
  267. package/dist/cli/chunks/{code-index-extractor-44HH36UG.js → code-index-extractor-TWNKG4VS.js} +2 -2
  268. package/dist/cli/chunks/{codex-installer-LMXRWLPU.js → codex-installer-4TM4BLAE.js} +2 -2
  269. package/dist/cli/chunks/{completions-GL5FTZAN.js → completions-BBNHQXMV.js} +2 -2
  270. package/dist/cli/chunks/{complexity-analyzer-CQMYGETL.js → complexity-analyzer-2SCI2VGH.js} +2 -2
  271. package/dist/cli/chunks/{continuedev-installer-CYVYS5B7.js → continuedev-installer-CTIORASU.js} +2 -2
  272. package/dist/cli/chunks/{copilot-installer-M7XVII2A.js → copilot-installer-4R2V4IYB.js} +2 -2
  273. package/dist/cli/chunks/core-handlers-MV5CAR7O.js +2 -0
  274. package/dist/cli/chunks/{cost-tracker-S4ET4FH3.js → cost-tracker-KDBYQBKG.js} +2 -2
  275. package/dist/cli/chunks/{coverage-DFVSSQ4A.js → coverage-QQJQVDPZ.js} +3 -3
  276. package/dist/cli/chunks/cross-domain-router-ULY4NIML.js +2 -0
  277. package/dist/cli/chunks/{cursor-installer-KWDSQPQC.js → cursor-installer-5WEZCESZ.js} +2 -2
  278. package/dist/cli/chunks/{daemon-2HD54QVO.js → daemon-M4DKHEEA.js} +3 -3
  279. package/dist/cli/chunks/{daemon-CRX46BBO.js → daemon-Y7H3ZUXQ.js} +4 -4
  280. package/dist/cli/chunks/{dag-attention-scheduler-SCP6WPZB.js → dag-attention-scheduler-SD2UIADT.js} +2 -2
  281. package/dist/cli/chunks/{detect-XS2GDCEX.js → detect-WONWUXFH.js} +2 -2
  282. package/dist/cli/chunks/{dist-node-U43MVQ3F.js → dist-node-Q5GQN2R6.js} +2 -2
  283. package/dist/cli/chunks/{domain-handler-HITMDULH.js → domain-handler-EMXE2XQW.js} +2 -2
  284. package/dist/cli/chunks/{domain-transfer-TJF7DNI4.js → domain-transfer-QATUJJRP.js} +2 -2
  285. package/dist/cli/chunks/dream-PIGWXWE4.js +2 -0
  286. package/dist/cli/chunks/{embed-and-insert-pattern-JKG33YZK.js → embed-and-insert-pattern-AAFHLBEJ.js} +2 -2
  287. package/dist/cli/chunks/{eval-NF5Y4W37.js → eval-73BDNLSK.js} +5 -5
  288. package/dist/cli/chunks/{experience-capture-middleware-VMMFYJ4D.js → experience-capture-middleware-YPAPVSYY.js} +3 -3
  289. package/dist/cli/chunks/{fast-paths-W2Q53IR2.js → fast-paths-33ZKMNYY.js} +2 -2
  290. package/dist/cli/chunks/{feature-flags-B4PBMQJO.js → feature-flags-F3DVW4ST.js} +2 -2
  291. package/dist/cli/chunks/{feature-flags-PVI7A4RE.js → feature-flags-QKO5YYDU.js} +2 -2
  292. package/dist/cli/chunks/{file-discovery-E4L3I33I.js → file-discovery-YYVZLRYD.js} +2 -2
  293. package/dist/cli/chunks/{fleet-LE5SHVLK.js → fleet-EJX6BXLR.js} +3 -3
  294. package/dist/cli/chunks/{gnn-wrapper-MWWJBLOH.js → gnn-wrapper-TBNLYPTM.js} +2 -2
  295. package/dist/cli/chunks/{heartbeat-handler-XOUVNPQK.js → heartbeat-handler-HPRTS6SI.js} +4 -4
  296. package/dist/cli/chunks/heartbeat-scheduler-5BBLZP6R.js +2 -0
  297. package/dist/cli/chunks/hnsw-adapter-FMEBL5T4.js +2 -0
  298. package/dist/cli/chunks/hnsw-index-K2R24V4Z.js +2 -0
  299. package/dist/cli/chunks/{hnsw-legacy-bridge-W3T5ZDDP.js → hnsw-legacy-bridge-Z6V6TOF5.js} +2 -2
  300. package/dist/cli/chunks/{better-sqlite3-PX5JM3DG.js → hnswlib-node-LFVNGGCL.js} +2 -2
  301. package/dist/cli/chunks/hooks-GG2Z3BDB.js +285 -0
  302. package/dist/cli/chunks/hybrid-router-LVF6N345.js +2 -0
  303. package/dist/cli/chunks/{hypergraph-engine-VDFK3JYH.js → hypergraph-engine-X4Q2TTET.js} +2 -2
  304. package/dist/cli/chunks/{hypergraph-handler-EUDGEF25.js → hypergraph-handler-6BZWV5PL.js} +3 -3
  305. package/dist/cli/chunks/impact-analyzer-CCVVMGWE.js +2 -0
  306. package/dist/cli/chunks/{init-handler-MZEAJOZK.js → init-handler-EKUS7U6L.js} +6 -6
  307. package/dist/cli/chunks/init-wizard-KDPMO4G3.js +2 -0
  308. package/dist/cli/chunks/kernel-PBYNK5VA.js +2 -0
  309. package/dist/cli/chunks/{kilocode-installer-ECBYWT6M.js → kilocode-installer-BWAVVSQG.js} +2 -2
  310. package/dist/cli/chunks/{kiro-installer-KYFCSYTG.js → kiro-installer-UADO53E5.js} +2 -2
  311. package/dist/cli/chunks/knowledge-graph-C7LVHHLN.js +2 -0
  312. package/dist/cli/chunks/{learning-4RAFMDSB.js → learning-HMUTCYQM.js} +3 -3
  313. package/dist/cli/chunks/{llm-router-JHBNLYP3.js → llm-router-453TBDUY.js} +4 -4
  314. package/dist/cli/chunks/llm-router-service-LMTRJCPP.js +2 -0
  315. package/dist/cli/chunks/{load-4DVQML7P.js → load-DBBSNP6T.js} +2 -2
  316. package/dist/cli/chunks/load-test-FHMZXTXD.js +2 -0
  317. package/dist/cli/chunks/{mcp-LCWMU4GZ.js → mcp-PK3SAKRF.js} +2 -2
  318. package/dist/cli/chunks/{memory-3DTJAURT.js → memory-63NHVBXS.js} +5 -5
  319. package/dist/cli/chunks/memory-backend-UZHPCQTB.js +2 -0
  320. package/dist/cli/chunks/memory-handlers-YIKKORRY.js +2 -0
  321. package/dist/cli/chunks/{multi-model-executor-AVR5SZOO.js → multi-model-executor-HUGRXJ6D.js} +2 -2
  322. package/dist/cli/chunks/{opencode-installer-DW2426QM.js → opencode-installer-A6IXNF26.js} +2 -2
  323. package/dist/cli/chunks/{orchestrator-AHF4W5GS.js → orchestrator-KDFYDNE3.js} +10 -10
  324. package/dist/cli/chunks/pattern-null-store-5PS4JN6V.js +2 -0
  325. package/dist/cli/chunks/{pipeline-N6THEWYE.js → pipeline-HSPRKEYE.js} +2 -2
  326. package/dist/cli/chunks/{platform-MRCFQF7X.js → platform-X74IBN2H.js} +2 -2
  327. package/dist/cli/chunks/{plugin-6YKUN5QM.js → plugin-KDJZ7VFD.js} +2 -2
  328. package/dist/cli/chunks/{prime-radiant-advanced-wasm-2YPAHSVS.js → prime-radiant-advanced-wasm-2YZGKQE7.js} +2 -2
  329. package/dist/cli/chunks/protocol-executor-2GTGIOFD.js +2 -0
  330. package/dist/cli/chunks/{protocol-handler-Y2NMUKWQ.js → protocol-handler-I2SDHC7B.js} +2 -2
  331. package/dist/cli/chunks/{prove-DZUNWBFD.js → prove-JQJDNIZH.js} +2 -2
  332. package/dist/cli/chunks/provider-manager-VH6YTBB3.js +2 -0
  333. package/dist/cli/chunks/qe-reasoning-bank-47JSO76G.js +2 -0
  334. package/dist/cli/chunks/{quality-AIFQMGUV.js → quality-2P7KHVY3.js} +2 -2
  335. package/dist/cli/chunks/queen-coordinator-C7EDY7IS.js +2 -0
  336. package/dist/cli/chunks/{real-embeddings-5XL4LOG2.js → real-embeddings-L7NMMNDO.js} +2 -2
  337. package/dist/cli/chunks/{roocode-installer-LV3WONT5.js → roocode-installer-LA4QN5AG.js} +2 -2
  338. package/dist/cli/chunks/router-7DVH66WB.js +2 -0
  339. package/dist/cli/chunks/routing-feedback-4I2MF235.js +2 -0
  340. package/dist/cli/chunks/{routing-handler-WSMUILGD.js → routing-handler-B5CDEZF3.js} +2 -2
  341. package/dist/cli/chunks/{ruvector-commands-BCEIDTW3.js → ruvector-commands-SOVCRLJ6.js} +2 -2
  342. package/dist/cli/chunks/{rvf-dual-writer-LRSPC6H3.js → rvf-dual-writer-M6WI2KFB.js} +2 -2
  343. package/dist/cli/chunks/{rvf-migration-adapter-QHNX6353.js → rvf-migration-adapter-YDMZGPMA.js} +2 -2
  344. package/dist/cli/chunks/{rvf-migration-coordinator-SLNB3XPW.js → rvf-migration-coordinator-TFGQ5EO4.js} +2 -2
  345. package/dist/cli/chunks/rvf-native-adapter-UN3ESMMW.js +2 -0
  346. package/dist/cli/chunks/safe-db-Y2ZXKWBK.js +2 -0
  347. package/dist/cli/chunks/schedule-PG2NVRGA.js +2 -0
  348. package/dist/cli/chunks/scheduler-CNH6WWU2.js +2 -0
  349. package/dist/cli/chunks/{security-CYY6TECQ.js → security-R3IXQXDA.js} +3 -3
  350. package/dist/cli/chunks/{shared-rvf-adapter-U6JE4O6A.js → shared-rvf-adapter-GZX7LSQZ.js} +2 -2
  351. package/dist/cli/chunks/{shared-rvf-dual-writer-PJBSNBRV.js → shared-rvf-dual-writer-YT7SJX7K.js} +2 -2
  352. package/dist/cli/chunks/sqlite-persistence-WWT4DRRP.js +2 -0
  353. package/dist/cli/chunks/{status-handler-W723LXX5.js → status-handler-7PZSPBHJ.js} +2 -2
  354. package/dist/cli/chunks/{structural-health-WZUPZBB5.js → structural-health-UMJS6IVR.js} +2 -2
  355. package/dist/cli/chunks/sync-HA5SLSBA.js +2 -0
  356. package/dist/cli/chunks/{sync-UA22CKUS.js → sync-UIREA3UG.js} +2 -2
  357. package/dist/cli/chunks/{task-handler-SENTEEXZ.js → task-handler-NV4HGMEG.js} +2 -2
  358. package/dist/cli/chunks/{task-handlers-FGVUZOCC.js → task-handlers-RXYWWOSU.js} +3 -3
  359. package/dist/cli/chunks/{test-Q37C3WI2.js → test-2Y6OXGEU.js} +4 -4
  360. package/dist/cli/chunks/{test-scheduling-E6SPIBTH.js → test-scheduling-N55VFOYT.js} +3 -3
  361. package/dist/cli/chunks/token-bootstrap-FW3ZVMRP.js +2 -0
  362. package/dist/cli/chunks/{token-usage-JHNWTZ7L.js → token-usage-YXKOB3U6.js} +2 -2
  363. package/dist/cli/chunks/{transformers-TEXDUVNI.js → transformers-GBRSFAVA.js} +2 -2
  364. package/dist/cli/chunks/{tree-sitter-wasm-parser-MWSS52H6.js → tree-sitter-wasm-parser-FJHMEHJS.js} +2 -2
  365. package/dist/cli/chunks/{types-YQRKHYH3.js → types-NVMRVSBH.js} +2 -2
  366. package/dist/cli/chunks/unified-memory-PXEJKKMN.js +2 -0
  367. package/dist/cli/chunks/unified-memory-hnsw-M7OI5WUU.js +2 -0
  368. package/dist/cli/chunks/unified-persistence-WR4VDTAF.js +2 -0
  369. package/dist/cli/chunks/{upgrade-JKMEDURI.js → upgrade-L2OTYHD3.js} +2 -2
  370. package/dist/cli/chunks/{validate-URO7G6OE.js → validate-3NWRQYTP.js} +3 -3
  371. package/dist/cli/chunks/{validate-swarm-VZVJ56Z5.js → validate-swarm-MDURRWXK.js} +4 -4
  372. package/dist/cli/chunks/{vibium-G5WZILL6.js → vibium-SZX7RB4H.js} +2 -2
  373. package/dist/cli/chunks/visual-security-CKSZZHKG.js +2 -0
  374. package/dist/cli/chunks/{web-tree-sitter-LECH5T6H.js → web-tree-sitter-LGQT7JRD.js} +2 -2
  375. package/dist/cli/chunks/{windsurf-installer-2NPLC2YW.js → windsurf-installer-EYYGHPPX.js} +2 -2
  376. package/dist/cli/chunks/witness-chain-IOQX3XFG.js +2 -0
  377. package/dist/cli/chunks/{witness-chain-X347C36A.js → witness-chain-YYYA2CU3.js} +2 -2
  378. package/dist/cli/chunks/{workflow-V4ALYZ73.js → workflow-UD45FQAH.js} +4 -4
  379. package/dist/cli/chunks/workflow-orchestrator-Z2ZJRWIN.js +2 -0
  380. package/dist/cli/chunks/wrappers-JXD3KNSR.js +2 -0
  381. package/dist/cli/commands/arena.d.ts +10 -0
  382. package/dist/cli/commands/arena.js +129 -0
  383. package/dist/cli/commands/hooks-handlers/command-hooks.js +38 -2
  384. package/dist/cli/commands/hooks-handlers/hooks-dream-learning.d.ts +4 -0
  385. package/dist/cli/commands/hooks-handlers/hooks-dream-learning.js +66 -3
  386. package/dist/cli/commands/hooks-handlers/nesting-provenance.d.ts +27 -0
  387. package/dist/cli/commands/hooks-handlers/nesting-provenance.js +46 -0
  388. package/dist/cli/commands/hooks-handlers/task-hooks.js +22 -1
  389. package/dist/cli/commands/hooks-handlers/tool-loop-guardrail.d.ts +71 -0
  390. package/dist/cli/commands/hooks-handlers/tool-loop-guardrail.js +142 -0
  391. package/dist/cli/index.js +17 -0
  392. package/dist/contracts/verdicts.d.ts +297 -0
  393. package/dist/contracts/verdicts.js +178 -0
  394. package/dist/coordination/queen-types.d.ts +4 -0
  395. package/dist/integrations/agentic-flow/reasoning-bank/experience-replay.js +15 -6
  396. package/dist/integrations/agentic-flow/reasoning-bank/trajectory-tracker.js +12 -0
  397. package/dist/kernel/unified-memory-schemas.d.ts +3 -2
  398. package/dist/kernel/unified-memory-schemas.js +3 -2
  399. package/dist/kernel/unified-memory.js +3 -1
  400. package/dist/learning/aqe-learning-engine.js +32 -0
  401. package/dist/learning/experience-capture.d.ts +8 -0
  402. package/dist/learning/experience-capture.js +30 -0
  403. package/dist/learning/pattern-null-store.d.ts +32 -0
  404. package/dist/learning/pattern-null-store.js +77 -0
  405. package/dist/learning/pattern-store.d.ts +10 -0
  406. package/dist/learning/pattern-store.js +23 -0
  407. package/dist/mcp/bundle.js +400 -370
  408. package/dist/mcp/handlers/core-handlers.d.ts +20 -0
  409. package/dist/mcp/handlers/core-handlers.js +28 -0
  410. package/dist/mcp/handlers/domain-handler-configs.d.ts +3 -0
  411. package/dist/mcp/handlers/domain-handler-configs.js +22 -10
  412. package/dist/mcp/handlers/validation-pipeline-handler.d.ts +19 -0
  413. package/dist/mcp/handlers/validation-pipeline-handler.js +10 -0
  414. package/dist/migrations/20260611_add_pattern_nulls_table.d.ts +26 -0
  415. package/dist/migrations/20260611_add_pattern_nulls_table.js +63 -0
  416. package/dist/shared/llm/cost-tracker.js +6 -2
  417. package/dist/shared/llm/interfaces.d.ts +4 -0
  418. package/dist/shared/llm/providers/claude.js +16 -2
  419. package/dist/shared/reasoning-scrub.d.ts +29 -0
  420. package/dist/shared/reasoning-scrub.js +75 -0
  421. package/dist/validation/pipeline.d.ts +25 -0
  422. package/dist/validation/pipeline.js +28 -5
  423. package/dist/validation/steps/requirements.js +5 -0
  424. package/package.json +2 -1
  425. package/dist/cli/chunks/adapter-A62ETL5C.js +0 -2
  426. package/dist/cli/chunks/aqe-learning-engine-MTCRAV6N.js +0 -2
  427. package/dist/cli/chunks/audit-42XG5JFB.js +0 -3
  428. package/dist/cli/chunks/base-KKEBUHZC.js +0 -2
  429. package/dist/cli/chunks/browser-workflow-XHYAJUB6.js +0 -2
  430. package/dist/cli/chunks/chunk-2TYO4VZH.js +0 -12
  431. package/dist/cli/chunks/chunk-HPYGMKZF.js +0 -2
  432. package/dist/cli/chunks/chunk-OKKTDHHF.js +0 -65
  433. package/dist/cli/chunks/chunk-PZ4PRZXN.js +0 -699
  434. package/dist/cli/chunks/client-C6CJOCRN.js +0 -2
  435. package/dist/cli/chunks/cross-domain-router-I3GEA5G6.js +0 -2
  436. package/dist/cli/chunks/dream-JCQMG2RL.js +0 -2
  437. package/dist/cli/chunks/heartbeat-scheduler-FBHE4ZWH.js +0 -2
  438. package/dist/cli/chunks/hnsw-adapter-EOOA4WXD.js +0 -2
  439. package/dist/cli/chunks/hnsw-index-TD3KRPND.js +0 -2
  440. package/dist/cli/chunks/hooks-RUPQVIUM.js +0 -250
  441. package/dist/cli/chunks/hybrid-router-64O6PXZ2.js +0 -2
  442. package/dist/cli/chunks/impact-analyzer-ITQHXGTM.js +0 -2
  443. package/dist/cli/chunks/init-wizard-DZ4IKGQI.js +0 -2
  444. package/dist/cli/chunks/kernel-HSVY4ZYK.js +0 -2
  445. package/dist/cli/chunks/knowledge-graph-H32TXXX4.js +0 -2
  446. package/dist/cli/chunks/llm-router-service-3FKESBUX.js +0 -2
  447. package/dist/cli/chunks/load-test-LKHURZGZ.js +0 -2
  448. package/dist/cli/chunks/memory-backend-XRJRZ6CK.js +0 -2
  449. package/dist/cli/chunks/memory-handlers-BL6E3XAK.js +0 -2
  450. package/dist/cli/chunks/protocol-executor-KABPB6PQ.js +0 -2
  451. package/dist/cli/chunks/provider-manager-U7EBM3FA.js +0 -2
  452. package/dist/cli/chunks/qe-reasoning-bank-64O2OQIW.js +0 -2
  453. package/dist/cli/chunks/queen-coordinator-SV3COGIL.js +0 -2
  454. package/dist/cli/chunks/router-QARRPMED.js +0 -2
  455. package/dist/cli/chunks/routing-feedback-KD2JFTPK.js +0 -2
  456. package/dist/cli/chunks/rvf-native-adapter-4LLGF5AY.js +0 -2
  457. package/dist/cli/chunks/safe-db-RAX3H2P7.js +0 -2
  458. package/dist/cli/chunks/schedule-RQZGLLUY.js +0 -2
  459. package/dist/cli/chunks/scheduler-ACWTN4LN.js +0 -2
  460. package/dist/cli/chunks/sqlite-persistence-SWNBO257.js +0 -2
  461. package/dist/cli/chunks/sync-ZLMF53TB.js +0 -2
  462. package/dist/cli/chunks/token-bootstrap-HQFFMZUF.js +0 -2
  463. package/dist/cli/chunks/unified-memory-QG3FDRKR.js +0 -2
  464. package/dist/cli/chunks/unified-memory-hnsw-KOR4EOIG.js +0 -2
  465. package/dist/cli/chunks/unified-persistence-J6NIRYKM.js +0 -2
  466. package/dist/cli/chunks/visual-security-RAWV6YLN.js +0 -2
  467. package/dist/cli/chunks/witness-chain-ZO7FIM35.js +0 -2
  468. package/dist/cli/chunks/workflow-orchestrator-7SKITNIJ.js +0 -2
  469. package/dist/cli/chunks/wrappers-QXOPRPR4.js +0 -2
@@ -37,6 +37,26 @@ export declare function getFleetState(): FleetState;
37
37
  * Check if fleet is initialized
38
38
  */
39
39
  export declare function isFleetInitialized(): boolean;
40
+ /**
41
+ * Adopt already-initialized components into the fleet state.
42
+ *
43
+ * The CLI's autoInitialize() builds the same kernel/queen/router stack as
44
+ * handleFleetInit but kept it in its own CLIContext, so every handler guarded
45
+ * by isFleetInitialized() (memory, agent, task, team, pipeline) rejected CLI
46
+ * invocations with "Fleet not initialized" even after a successful auto-init.
47
+ * Bridging the components here gives the MCP server and the CLI one shared
48
+ * fleet state (MCP-CLI parity).
49
+ *
50
+ * Idempotent: if a fleet is already initialized, returns the existing fleetId
51
+ * without touching state.
52
+ */
53
+ export declare function adoptExternalFleet(components: {
54
+ kernel: QEKernel;
55
+ queen: QueenCoordinator;
56
+ router?: CrossDomainEventRouter | null;
57
+ workflowOrchestrator?: WorkflowOrchestrator | null;
58
+ topology?: TopologyType;
59
+ }): string;
40
60
  /**
41
61
  * Get the current fleet topology
42
62
  */
@@ -42,6 +42,34 @@ export function getFleetState() {
42
42
  export function isFleetInitialized() {
43
43
  return state.initialized && state.kernel !== null && state.queen !== null;
44
44
  }
45
+ /**
46
+ * Adopt already-initialized components into the fleet state.
47
+ *
48
+ * The CLI's autoInitialize() builds the same kernel/queen/router stack as
49
+ * handleFleetInit but kept it in its own CLIContext, so every handler guarded
50
+ * by isFleetInitialized() (memory, agent, task, team, pipeline) rejected CLI
51
+ * invocations with "Fleet not initialized" even after a successful auto-init.
52
+ * Bridging the components here gives the MCP server and the CLI one shared
53
+ * fleet state (MCP-CLI parity).
54
+ *
55
+ * Idempotent: if a fleet is already initialized, returns the existing fleetId
56
+ * without touching state.
57
+ */
58
+ export function adoptExternalFleet(components) {
59
+ if (isFleetInitialized()) {
60
+ return state.fleetId;
61
+ }
62
+ state.fleetId = `fleet-${uuidv4().slice(0, 8)}`;
63
+ state.kernel = components.kernel;
64
+ state.queen = components.queen;
65
+ state.router = components.router ?? null;
66
+ state.workflowOrchestrator = components.workflowOrchestrator ?? null;
67
+ state.initialized = true;
68
+ state.initTime = new Date();
69
+ state.topology = components.topology ?? 'hierarchical';
70
+ state.agentLevels.clear();
71
+ return state.fleetId;
72
+ }
45
73
  /**
46
74
  * Get the current fleet topology
47
75
  */
@@ -8,6 +8,7 @@
8
8
  */
9
9
  import { DomainHandlerConfig } from './handler-factory';
10
10
  import { TestGenerateParams, TestGenerateResult, TestExecuteParams, CoverageAnalyzeParams, CoverageAnalyzeResult, QualityAssessParams, SecurityScanParams, ContractValidateParams, AccessibilityTestParams, ChaosTestParams } from '../types';
11
+ import { type RiskDecision } from '../../contracts/verdicts.js';
11
12
  export interface TestExecuteResult {
12
13
  taskId: string;
13
14
  status: string;
@@ -32,6 +33,8 @@ export interface QualityAssessResult {
32
33
  recommendations: string[];
33
34
  duration: number;
34
35
  savedFiles?: string[];
36
+ /** ADR-103: versioned, schema-validated gate verdict (additive) */
37
+ riskDecision?: RiskDecision;
35
38
  }
36
39
  export interface SecurityScanResult {
37
40
  taskId: string;
@@ -9,6 +9,7 @@
9
9
  import { generateV2LearningFeedback, analyzeComplexity, generateV2AIInsights, generateV2Tests, detectAntiPatterns, generateTestId, } from './handler-factory';
10
10
  import { MetricsCollector } from '../metrics';
11
11
  import { DEFAULT_FRAMEWORKS, FRAMEWORK_TO_LANGUAGE, } from '../../shared/types/test-frameworks.js';
12
+ import { buildRiskDecisionFromQualityGate, validateRiskDecision, } from '../../contracts/verdicts.js';
12
13
  const SUPPORTED_LANGUAGES = Object.keys(DEFAULT_FRAMEWORKS);
13
14
  /**
14
15
  * Normalize a language string from MCP input. Returns the canonical
@@ -348,16 +349,27 @@ export const qualityAssessConfig = {
348
349
  useAgentBooster: routingResult?.useAgentBooster,
349
350
  compiledContext: routingResult?.compiledContext,
350
351
  }),
351
- mapToResult: (taskId, data, duration, savedFiles) => ({
352
- taskId,
353
- status: 'completed',
354
- qualityScore: data.qualityScore || 0,
355
- passed: data.passed || false,
356
- metrics: data.metrics || {},
357
- recommendations: data.recommendations || [],
358
- duration,
359
- savedFiles,
360
- }),
352
+ mapToResult: (taskId, data, duration, savedFiles) => {
353
+ // ADR-103: attach a schema-validated RiskDecision envelope at the MCP
354
+ // boundary (additive — existing fields unchanged). Omit rather than
355
+ // emit an invalid envelope.
356
+ const riskDecision = buildRiskDecisionFromQualityGate({
357
+ passed: typeof data.passed === 'boolean' ? data.passed : undefined,
358
+ qualityScore: data.qualityScore,
359
+ recommendations: data.recommendations || [],
360
+ });
361
+ return {
362
+ taskId,
363
+ status: 'completed',
364
+ qualityScore: data.qualityScore || 0,
365
+ passed: data.passed || false,
366
+ metrics: data.metrics || {},
367
+ recommendations: data.recommendations || [],
368
+ duration,
369
+ savedFiles,
370
+ ...(validateRiskDecision(riskDecision).valid ? { riskDecision } : {}),
371
+ };
372
+ },
361
373
  };
362
374
  // ============================================================================
363
375
  // Security Scan Configuration
@@ -42,6 +42,25 @@ export interface ValidationPipelineResult {
42
42
  id: string;
43
43
  stepId: string;
44
44
  severity: string;
45
+ /** ADR-105: what kind of evidence backs this finding */
46
+ evidenceClass: string;
47
+ evidenceArtifact?: {
48
+ command?: string;
49
+ output?: string;
50
+ dataSource?: string;
51
+ };
52
+ title: string;
53
+ description: string;
54
+ }>;
55
+ /**
56
+ * INFERRED findings from failed blocking steps (ADR-105) — queued for
57
+ * adversarial verification, not allowed to gate. Same projection as findings.
58
+ */
59
+ needsVerification: Array<{
60
+ id: string;
61
+ stepId: string;
62
+ severity: string;
63
+ evidenceClass: string;
45
64
  title: string;
46
65
  description: string;
47
66
  }>;
@@ -102,9 +102,19 @@ export async function handleValidationPipeline(params) {
102
102
  id: f.id,
103
103
  stepId: f.stepId,
104
104
  severity: f.severity,
105
+ evidenceClass: f.evidenceClass,
106
+ evidenceArtifact: f.evidenceArtifact,
105
107
  title: f.title,
106
108
  description: f.description,
107
109
  }))),
110
+ needsVerification: result.needsVerification.map(f => ({
111
+ id: f.id,
112
+ stepId: f.stepId,
113
+ severity: f.severity,
114
+ evidenceClass: f.evidenceClass,
115
+ title: f.title,
116
+ description: f.description,
117
+ })),
108
118
  },
109
119
  };
110
120
  }
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Agentic QE v3 - Pattern Nulls Migration (ADR-110, issue #522)
3
+ *
4
+ * Kept nulls: first-class negative pattern records. When an applied pattern
5
+ * fails in a context, the failure is stored and consolidated per
6
+ * (pattern, context_fingerprint) so retrieval can surface "succeeded 12x,
7
+ * failed 3x — failures clustered in <context>" and ranking can discount by
8
+ * context-matched null density. Nulls are information, not tombstones —
9
+ * never deleted on pattern success elsewhere.
10
+ *
11
+ * Additive-only: no existing table or row is touched.
12
+ */
13
+ import type { Database as DatabaseType } from 'better-sqlite3';
14
+ export declare const MIGRATION_VERSION = "20260611_add_pattern_nulls_table";
15
+ export declare const PATTERN_NULLS_SCHEMA = "\n -- Negative pattern records (ADR-110 kept nulls)\n CREATE TABLE IF NOT EXISTS qe_pattern_nulls (\n id TEXT PRIMARY KEY,\n pattern_id TEXT NOT NULL REFERENCES qe_patterns(id),\n context_fingerprint TEXT NOT NULL,\n failure_mode TEXT NOT NULL,\n trajectory_ref TEXT,\n evidence_class TEXT NOT NULL DEFAULT 'EXECUTED'\n CHECK (evidence_class IN ('EXECUTED','STATIC','INFERRED','CONJECTURE')),\n consolidated_count INTEGER NOT NULL DEFAULT 1,\n created_at TEXT DEFAULT (datetime('now')),\n updated_at TEXT DEFAULT (datetime('now')),\n UNIQUE (pattern_id, context_fingerprint)\n );\n\n CREATE INDEX IF NOT EXISTS idx_pattern_nulls_pattern ON qe_pattern_nulls(pattern_id);\n CREATE INDEX IF NOT EXISTS idx_pattern_nulls_context ON qe_pattern_nulls(context_fingerprint);\n";
16
+ export declare function applyMigration(db: DatabaseType): void;
17
+ export declare function isMigrationApplied(db: DatabaseType): boolean;
18
+ export declare function rollbackMigration(db: DatabaseType): void;
19
+ declare const _default: {
20
+ version: string;
21
+ apply: typeof applyMigration;
22
+ isApplied: typeof isMigrationApplied;
23
+ rollback: typeof rollbackMigration;
24
+ };
25
+ export default _default;
26
+ //# sourceMappingURL=20260611_add_pattern_nulls_table.d.ts.map
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Agentic QE v3 - Pattern Nulls Migration (ADR-110, issue #522)
3
+ *
4
+ * Kept nulls: first-class negative pattern records. When an applied pattern
5
+ * fails in a context, the failure is stored and consolidated per
6
+ * (pattern, context_fingerprint) so retrieval can surface "succeeded 12x,
7
+ * failed 3x — failures clustered in <context>" and ranking can discount by
8
+ * context-matched null density. Nulls are information, not tombstones —
9
+ * never deleted on pattern success elsewhere.
10
+ *
11
+ * Additive-only: no existing table or row is touched.
12
+ */
13
+ export const MIGRATION_VERSION = '20260611_add_pattern_nulls_table';
14
+ export const PATTERN_NULLS_SCHEMA = `
15
+ -- Negative pattern records (ADR-110 kept nulls)
16
+ CREATE TABLE IF NOT EXISTS qe_pattern_nulls (
17
+ id TEXT PRIMARY KEY,
18
+ pattern_id TEXT NOT NULL REFERENCES qe_patterns(id),
19
+ context_fingerprint TEXT NOT NULL,
20
+ failure_mode TEXT NOT NULL,
21
+ trajectory_ref TEXT,
22
+ evidence_class TEXT NOT NULL DEFAULT 'EXECUTED'
23
+ CHECK (evidence_class IN ('EXECUTED','STATIC','INFERRED','CONJECTURE')),
24
+ consolidated_count INTEGER NOT NULL DEFAULT 1,
25
+ created_at TEXT DEFAULT (datetime('now')),
26
+ updated_at TEXT DEFAULT (datetime('now')),
27
+ UNIQUE (pattern_id, context_fingerprint)
28
+ );
29
+
30
+ CREATE INDEX IF NOT EXISTS idx_pattern_nulls_pattern ON qe_pattern_nulls(pattern_id);
31
+ CREATE INDEX IF NOT EXISTS idx_pattern_nulls_context ON qe_pattern_nulls(context_fingerprint);
32
+ `;
33
+ export function applyMigration(db) {
34
+ db.exec(PATTERN_NULLS_SCHEMA);
35
+ }
36
+ export function isMigrationApplied(db) {
37
+ try {
38
+ const result = db.prepare(`
39
+ SELECT COUNT(*) as count FROM sqlite_master
40
+ WHERE type='table' AND name = 'qe_pattern_nulls'
41
+ `).get();
42
+ return result.count === 1;
43
+ }
44
+ catch {
45
+ return false;
46
+ }
47
+ }
48
+ export function rollbackMigration(db) {
49
+ // Safety check: refuse to drop a table that contains data (kept nulls are data)
50
+ const count = db.prepare('SELECT COUNT(*) as cnt FROM qe_pattern_nulls').get()?.cnt ?? 0;
51
+ if (count > 0) {
52
+ throw new Error(`REFUSING rollback: qe_pattern_nulls contains ${count} kept nulls. ` +
53
+ 'Backup and manually drop if you really need to rollback.');
54
+ }
55
+ db.exec('DROP TABLE IF EXISTS qe_pattern_nulls;');
56
+ }
57
+ export default {
58
+ version: MIGRATION_VERSION,
59
+ apply: applyMigration,
60
+ isApplied: isMigrationApplied,
61
+ rollback: rollbackMigration,
62
+ };
63
+ //# sourceMappingURL=20260611_add_pattern_nulls_table.js.map
@@ -116,8 +116,12 @@ export class CostTracker {
116
116
  currency: 'USD',
117
117
  };
118
118
  }
119
- // Convert from per-million to actual cost
120
- const inputCost = (usage.promptTokens / 1_000_000) * pricing.input;
119
+ // Convert from per-million to actual cost.
120
+ // ADR-088: cache reads bill at ~0.1x input rate, cache writes at ~1.25x
121
+ // (5-minute TTL); promptTokens already excludes both.
122
+ const inputCost = (usage.promptTokens / 1_000_000) * pricing.input +
123
+ ((usage.cacheReadTokens ?? 0) / 1_000_000) * pricing.input * 0.1 +
124
+ ((usage.cacheCreationTokens ?? 0) / 1_000_000) * pricing.input * 1.25;
121
125
  const outputCost = (usage.completionTokens / 1_000_000) * pricing.output;
122
126
  return {
123
127
  inputCost,
@@ -30,6 +30,10 @@ export interface TokenUsage {
30
30
  promptTokens: number;
31
31
  completionTokens: number;
32
32
  totalTokens: number;
33
+ /** ADR-088: tokens written to the prompt cache this request (billed ~1.25x input rate) */
34
+ cacheCreationTokens?: number;
35
+ /** ADR-088: tokens served from the prompt cache this request (billed ~0.1x input rate) */
36
+ cacheReadTokens?: number;
33
37
  }
34
38
  /**
35
39
  * Cost information for a request
@@ -122,7 +122,15 @@ export class ClaudeProvider {
122
122
  messages,
123
123
  };
124
124
  if (options?.systemPrompt) {
125
- body.system = options.systemPrompt;
125
+ // ADR-088: when caching is enabled, send the system prompt as a
126
+ // content-block array with an ephemeral cache breakpoint — repeated
127
+ // calls within the TTL read the cached prefix at ~0.1x input price.
128
+ // Anthropic-native provider only (ADR-092: other providers untouched).
129
+ // Note: prefixes below the model's minimum (1024-4096 tokens) silently
130
+ // don't cache; the breakpoint is harmless in that case.
131
+ body.system = this.config.enableCache !== false
132
+ ? [{ type: 'text', text: options.systemPrompt, cache_control: { type: 'ephemeral' } }]
133
+ : options.systemPrompt;
126
134
  }
127
135
  if (options?.stopSequences && options.stopSequences.length > 0) {
128
136
  body.stop_sequences = options.stopSequences;
@@ -164,10 +172,16 @@ export class ClaudeProvider {
164
172
  throw this.handleApiError(response.status, errorData, model);
165
173
  }
166
174
  const data = await response.json();
175
+ // ADR-088: input_tokens is the uncached remainder only — cache
176
+ // read/creation tokens are reported separately by the API.
177
+ const cacheCreationTokens = data.usage.cache_creation_input_tokens ?? 0;
178
+ const cacheReadTokens = data.usage.cache_read_input_tokens ?? 0;
167
179
  const usage = {
168
180
  promptTokens: data.usage.input_tokens,
169
181
  completionTokens: data.usage.output_tokens,
170
- totalTokens: data.usage.input_tokens + data.usage.output_tokens,
182
+ totalTokens: data.usage.input_tokens + cacheCreationTokens + cacheReadTokens + data.usage.output_tokens,
183
+ cacheCreationTokens,
184
+ cacheReadTokens,
171
185
  };
172
186
  const cost = CostTracker.calculateCost(model, usage);
173
187
  // ADR-042: Track token usage in TokenMetricsCollector
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Agentic QE v3 - Reasoning-Tag Scrubber (ADR-099)
3
+ *
4
+ * Strips extended-thinking blocks (<think>, <thinking>, <reasoning>,
5
+ * <REASONING_SCRATCHPAD>) from text before it enters the learning pipeline —
6
+ * pattern distillation, trajectory persistence, and embedding generation.
7
+ *
8
+ * Why: reasoning-capable models (Fable 5 era) emit large scratchpad blocks
9
+ * inside task results and step actions. Embedding them verbatim contaminates
10
+ * the 384-dim pattern vectors in memory.db, degrading HNSW retrieval quality
11
+ * (the scratchpad dominates the signal of what the step actually did).
12
+ *
13
+ * Boundary-gated: only well-formed `<tag ...> ... </tag>` pairs are removed.
14
+ * Prose that merely *mentions* a tag name (e.g. documentation about
15
+ * "<thinking> blocks") without a closing tag is left intact.
16
+ */
17
+ /**
18
+ * Remove reasoning scratchpad blocks from text destined for the learning
19
+ * pipeline. Collapses the whitespace gap a removed block leaves behind so
20
+ * surrounding prose re-joins cleanly. Non-string / empty input returns as-is.
21
+ */
22
+ export declare function scrubReasoningBlocks(text: string): string;
23
+ /**
24
+ * Scrub a value that may be a string or a JSON-serializable structure whose
25
+ * string leaves may contain reasoning blocks. Non-objects pass through.
26
+ * Used for trajectory step `result.data` payloads serialized into memory.db.
27
+ */
28
+ export declare function scrubReasoningDeep<T>(value: T): T;
29
+ //# sourceMappingURL=reasoning-scrub.d.ts.map
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Agentic QE v3 - Reasoning-Tag Scrubber (ADR-099)
3
+ *
4
+ * Strips extended-thinking blocks (<think>, <thinking>, <reasoning>,
5
+ * <REASONING_SCRATCHPAD>) from text before it enters the learning pipeline —
6
+ * pattern distillation, trajectory persistence, and embedding generation.
7
+ *
8
+ * Why: reasoning-capable models (Fable 5 era) emit large scratchpad blocks
9
+ * inside task results and step actions. Embedding them verbatim contaminates
10
+ * the 384-dim pattern vectors in memory.db, degrading HNSW retrieval quality
11
+ * (the scratchpad dominates the signal of what the step actually did).
12
+ *
13
+ * Boundary-gated: only well-formed `<tag ...> ... </tag>` pairs are removed.
14
+ * Prose that merely *mentions* a tag name (e.g. documentation about
15
+ * "<thinking> blocks") without a closing tag is left intact.
16
+ */
17
+ /**
18
+ * Tag names treated as reasoning scratchpads. Matched case-insensitively
19
+ * as whole tag names (open tag may carry attributes).
20
+ */
21
+ const REASONING_TAG_NAMES = ['think', 'thinking', 'reasoning', 'reasoning_scratchpad'];
22
+ /**
23
+ * One alternation per tag, each backreference-paired so an open tag is only
24
+ * consumed when its own matching close tag exists. Non-greedy body keeps
25
+ * adjacent blocks separate. The `\s*` before `>` tolerates `</thinking >`.
26
+ */
27
+ const REASONING_BLOCK_RE = new RegExp(`<(${REASONING_TAG_NAMES.join('|')})(?:\\s[^>]*)?>[\\s\\S]*?</\\1\\s*>`, 'gi');
28
+ /**
29
+ * Remove reasoning scratchpad blocks from text destined for the learning
30
+ * pipeline. Collapses the whitespace gap a removed block leaves behind so
31
+ * surrounding prose re-joins cleanly. Non-string / empty input returns as-is.
32
+ */
33
+ export function scrubReasoningBlocks(text) {
34
+ if (!text || typeof text !== 'string' || !text.includes('<')) {
35
+ return text;
36
+ }
37
+ let out = text;
38
+ // Repeat until stable: removing an inner block can expose an outer pair
39
+ // (e.g. <thinking><thinking>…</thinking></thinking>).
40
+ for (let i = 0; i < 5; i++) {
41
+ const next = out.replace(REASONING_BLOCK_RE, ' ');
42
+ if (next === out)
43
+ break;
44
+ out = next;
45
+ }
46
+ // If nothing was removed, return the original text untouched (don't
47
+ // re-format whitespace of clean input).
48
+ if (out === text) {
49
+ return text;
50
+ }
51
+ // Collapse the space runs left where blocks were removed; preserve newlines.
52
+ return out.replace(/[ \t]{2,}/g, ' ').trim();
53
+ }
54
+ /**
55
+ * Scrub a value that may be a string or a JSON-serializable structure whose
56
+ * string leaves may contain reasoning blocks. Non-objects pass through.
57
+ * Used for trajectory step `result.data` payloads serialized into memory.db.
58
+ */
59
+ export function scrubReasoningDeep(value) {
60
+ if (typeof value === 'string') {
61
+ return scrubReasoningBlocks(value);
62
+ }
63
+ if (Array.isArray(value)) {
64
+ return value.map((v) => scrubReasoningDeep(v));
65
+ }
66
+ if (value !== null && typeof value === 'object') {
67
+ const out = {};
68
+ for (const [k, v] of Object.entries(value)) {
69
+ out[k] = scrubReasoningDeep(v);
70
+ }
71
+ return out;
72
+ }
73
+ return value;
74
+ }
75
+ //# sourceMappingURL=reasoning-scrub.js.map
@@ -7,10 +7,28 @@
7
7
  export type StepCategory = 'format' | 'content' | 'quality' | 'traceability' | 'compliance';
8
8
  export type StepSeverity = 'blocking' | 'warning' | 'info';
9
9
  export type StepStatus = 'pass' | 'fail' | 'warn' | 'skip';
10
+ /**
11
+ * Evidence class of a finding (ADR-105). Quality gates may pass/block only on
12
+ * EXECUTED or STATIC findings; INFERRED routes to adversarial verification
13
+ * (ADR-102) before it can gate; CONJECTURE never gates.
14
+ */
15
+ export type EvidenceClass = 'EXECUTED' | 'STATIC' | 'INFERRED' | 'CONJECTURE';
16
+ /** Provenance attached to a finding — required for EXECUTED claims. */
17
+ export interface EvidenceArtifact {
18
+ /** Command that was actually run */
19
+ command?: string;
20
+ /** Captured output backing the claim */
21
+ output?: string;
22
+ /** Data source for STATIC findings (coverage file, AST, lockfile, …) */
23
+ dataSource?: string;
24
+ }
10
25
  export interface Finding {
11
26
  id: string;
12
27
  stepId: string;
13
28
  severity: 'critical' | 'high' | 'medium' | 'low' | 'info';
29
+ /** ADR-105: what kind of evidence backs this finding */
30
+ evidenceClass: EvidenceClass;
31
+ evidenceArtifact?: EvidenceArtifact;
14
32
  title: string;
15
33
  description: string;
16
34
  location?: string;
@@ -63,7 +81,14 @@ export interface PipelineResult {
63
81
  overall: 'pass' | 'fail' | 'warn';
64
82
  score: number;
65
83
  steps: StepResult[];
84
+ /** Findings from failed blocking steps that may gate (EXECUTED/STATIC only, ADR-105) */
66
85
  blockers: Finding[];
86
+ /**
87
+ * INFERRED findings from failed blocking steps (ADR-105): not allowed to
88
+ * gate; queued for adversarial verification (ADR-102) to be promoted to
89
+ * blockers or demoted. Their presence downgrades overall to 'warn'.
90
+ */
91
+ needsVerification: Finding[];
67
92
  halted: boolean;
68
93
  haltedAt?: string;
69
94
  totalDuration: number;
@@ -25,6 +25,7 @@ export async function runPipeline(config, content, filePath, metadata) {
25
25
  };
26
26
  const stepResults = [];
27
27
  const blockers = [];
28
+ const needsVerification = [];
28
29
  let halted = false;
29
30
  let haltedAt;
30
31
  // Filter steps if specified
@@ -47,6 +48,8 @@ export async function runPipeline(config, content, filePath, metadata) {
47
48
  id: `${step.id}-error`,
48
49
  stepId: step.id,
49
50
  severity: 'critical',
51
+ evidenceClass: 'EXECUTED',
52
+ evidenceArtifact: { output: err.message },
50
53
  title: `Step execution failed: ${step.name}`,
51
54
  description: err.message,
52
55
  }],
@@ -60,10 +63,15 @@ export async function runPipeline(config, content, filePath, metadata) {
60
63
  }
61
64
  stepResults.push(result);
62
65
  context.previousResults.push(result);
63
- // Check for blocking failure
66
+ // Check for blocking failure (ADR-105: only EXECUTED/STATIC may gate)
64
67
  if (step.severity === 'blocking' && result.status === 'fail') {
65
- blockers.push(...result.findings);
66
- if (!config.continueOnFailure) {
68
+ const gating = result.findings.filter(f => f.evidenceClass === 'EXECUTED' || f.evidenceClass === 'STATIC');
69
+ needsVerification.push(...result.findings.filter(f => f.evidenceClass === 'INFERRED'));
70
+ // CONJECTURE findings stay visible on the step but never gate.
71
+ blockers.push(...gating);
72
+ // Halt only when verified evidence blocks; a step that failed purely on
73
+ // unverified inference must not stop the pipeline.
74
+ if (gating.length > 0 && !config.continueOnFailure) {
67
75
  halted = true;
68
76
  haltedAt = step.id;
69
77
  break;
@@ -91,11 +99,16 @@ export async function runPipeline(config, content, filePath, metadata) {
91
99
  totalWeight += weight;
92
100
  }
93
101
  const finalScore = totalWeight > 0 ? Math.round(weightedScore / totalWeight) : 0;
94
- // Determine overall status
102
+ // Determine overall status (ADR-105: unverified inference warns, never fails)
95
103
  let overall;
96
104
  if (blockers.length > 0) {
97
105
  overall = 'fail';
98
106
  }
107
+ else if (needsVerification.length > 0 || stepResults.some(r => r.status === 'fail')) {
108
+ // A failed step without gating evidence (INFERRED queued, or CONJECTURE
109
+ // suppressed) must never silently read as a clean pass.
110
+ overall = 'warn';
111
+ }
99
112
  else if (stepResults.some(r => r.status === 'warn')) {
100
113
  overall = 'warn';
101
114
  }
@@ -112,6 +125,7 @@ export async function runPipeline(config, content, filePath, metadata) {
112
125
  score: finalScore,
113
126
  steps: stepResults,
114
127
  blockers,
128
+ needsVerification,
115
129
  halted,
116
130
  haltedAt,
117
131
  totalDuration: Date.now() - startTime,
@@ -146,13 +160,22 @@ export function formatPipelineReport(result) {
146
160
  lines.push('## Blockers');
147
161
  lines.push('');
148
162
  for (const blocker of result.blockers) {
149
- lines.push(`- **${blocker.title}** (${blocker.severity}): ${blocker.description}`);
163
+ lines.push(`- **${blocker.title}** (${blocker.severity}, ${blocker.evidenceClass}): ${blocker.description}`);
150
164
  if (blocker.suggestion) {
151
165
  lines.push(` - Suggestion: ${blocker.suggestion}`);
152
166
  }
153
167
  }
154
168
  lines.push('');
155
169
  }
170
+ // Unverified inference awaiting adversarial verification (ADR-105/ADR-102)
171
+ if (result.needsVerification.length > 0) {
172
+ lines.push('## Needs Verification (INFERRED — did not gate)');
173
+ lines.push('');
174
+ for (const f of result.needsVerification) {
175
+ lines.push(`- **${f.title}** (${f.severity}): ${f.description}`);
176
+ }
177
+ lines.push('');
178
+ }
156
179
  // Detailed findings
157
180
  const allFindings = result.steps.flatMap(s => s.findings);
158
181
  if (allFindings.length > 0) {
@@ -9,6 +9,11 @@ function createFinding(stepId, severity, title, description, opts) {
9
9
  id: `${stepId}-${Date.now()}-${Math.random().toString(36).slice(2, 6)}`,
10
10
  stepId,
11
11
  severity,
12
+ // Every step in this file is deterministic structure/content analysis of
13
+ // the document itself — STATIC per ADR-105. LLM-derived steps must pass
14
+ // evidenceClass explicitly.
15
+ evidenceClass: opts?.evidenceClass ?? 'STATIC',
16
+ evidenceArtifact: opts?.evidenceArtifact,
12
17
  title,
13
18
  description,
14
19
  location: opts?.location,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentic-qe",
3
- "version": "3.10.4",
3
+ "version": "3.10.6",
4
4
  "description": "Agentic Quality Engineering V3 - Domain-Driven Design Architecture with 13 Bounded Contexts, O(log n) coverage analysis, ReasoningBank learning, 60 specialized QE agents, mathematical Coherence verification, deep Claude Flow integration",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -72,6 +72,7 @@
72
72
  "mcp:parity": "node scripts/audit-mcp-tool-parity.mjs",
73
73
  "mcp:report": "echo 'MCP Report: uses vitest for test reporting' && exit 0",
74
74
  "test:code-intelligence": "npm test -- --run tests/unit/domains/code-intelligence/ tests/unit/coordination/mincut/",
75
+ "verify:invariants": "tsx scripts/verify-shipped-invariants.ts",
75
76
  "verify:counts": "node -e \"const fs=require('fs'),g=require('glob'),p=require('path');const src=g.globSync('src/**/*.ts',{ignore:'src/**/*.test.ts'});const tests=g.globSync('tests/**/*.test.ts');const agents=g.globSync('.claude/agents/v3/qe-*.md');const skills=g.globSync('.claude/skills/**/*.md');const ok=src.length>500&&tests.length>300;const r={status:ok?'pass':'fail',srcFiles:src.length,testFiles:tests.length,agents:agents.length,skills:skills.length};fs.mkdirSync('reports',{recursive:true});fs.writeFileSync(p.join('reports','verification-counts.json'),JSON.stringify(r,null,2));console.log('Counts:',JSON.stringify(r));if(!ok)process.exit(1)\"",
76
77
  "verify:agent-skills": "node -e \"const fs=require('fs'),g=require('glob'),p=require('path');const agents=g.globSync('.claude/agents/v3/qe-*.md');const skills=g.globSync('.claude/skills/**/*.md');const missing=[];for(const a of agents){const name=p.basename(a,'.md');const hasSkill=skills.some(s=>s.includes(name.replace('qe-','')));if(!hasSkill)missing.push(name)}const ok=missing.length<agents.length/2;const r={status:ok?'pass':'fail',agents:agents.length,skills:skills.length,unmatchedAgents:missing.length,missing:missing.slice(0,10)};fs.mkdirSync('reports',{recursive:true});fs.writeFileSync(p.join('reports','verification-agent-skills.json'),JSON.stringify(r,null,2));console.log('Agent-Skills:',JSON.stringify(r));if(!ok)process.exit(1)\"",
77
78
  "verify:features": "node -e \"const fs=require('fs'),p=require('path');const pkg=JSON.parse(fs.readFileSync('package.json','utf8'));const hasBin=!!pkg.bin&&Object.keys(pkg.bin).length>=2;const hasExports=!!pkg.exports&&Object.keys(pkg.exports).length>=3;const cliBundleExists=fs.existsSync('dist/cli/bundle.js');const mcpBundleExists=fs.existsSync('dist/mcp/bundle.js');const ok=hasBin&&hasExports&&cliBundleExists&&mcpBundleExists;const r={status:ok?'pass':'fail',binCount:Object.keys(pkg.bin||{}).length,exportsCount:Object.keys(pkg.exports||{}).length,cliBundleExists,mcpBundleExists};fs.mkdirSync('reports',{recursive:true});fs.writeFileSync(p.join('reports','verification-features.json'),JSON.stringify(r,null,2));console.log('Features:',JSON.stringify(r));if(!ok)process.exit(1)\"",
@@ -1,2 +0,0 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.4");process.exit(0)}
2
- import{a,b,c}from"./chunk-ZM4QGYGK.js";import"./chunk-LYKSIOOT.js";import"./chunk-USB7GCIC.js";import"./chunk-IYFMDIYZ.js";import"./chunk-2B6ETC7C.js";import"./chunk-SVILIQQQ.js";export{a as AgentBoosterAdapter,b as createAgentBoosterAdapter,c as createAgentBoosterAdapterSync};
@@ -1,2 +0,0 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.4");process.exit(0)}
2
- import{a,b,c,d,e,f}from"./chunk-2TYO4VZH.js";import"./chunk-5Q3L4QEE.js";import"./chunk-AMW27FSS.js";import"./chunk-GLMDRGJD.js";import"./chunk-OKKTDHHF.js";import"./chunk-SC6UFGJ6.js";import"./chunk-VDKMBOUK.js";import"./chunk-KGPAWNNR.js";import"./chunk-OIFJH7TF.js";import"./chunk-MQIAN57O.js";import"./chunk-YSLE6NNG.js";import"./chunk-XBFEHVBO.js";import"./chunk-TCV5DASI.js";import"./chunk-5T2HDET6.js";import"./chunk-NZGLDOU4.js";import"./chunk-K72J52JO.js";import"./chunk-U27GVYXA.js";import"./chunk-IYFMDIYZ.js";import"./chunk-KWZEBHAP.js";import"./chunk-HPYGMKZF.js";import"./chunk-VRE2EBFI.js";import"./chunk-UFKVKNAA.js";import"./chunk-2B6ETC7C.js";import"./chunk-PISW5HUX.js";import"./chunk-RJKYPWFD.js";import"./chunk-2G2PVVQG.js";import"./chunk-UWAUYDW4.js";import"./chunk-N3MM4Z33.js";import"./chunk-6OLHPWSN.js";import"./chunk-WI5WXYIS.js";import"./chunk-EMZ3DXMG.js";import"./chunk-MFWWPRBV.js";import"./chunk-D7IWGQTW.js";import"./chunk-SVILIQQQ.js";export{b as AQELearningEngine,a as DEFAULT_ENGINE_CONFIG,c as DEFAULT_META_LEARNING_CONFIG,d as MetaLearningEngine,e as createAQELearningEngine,f as createDefaultLearningEngine};
@@ -1,3 +0,0 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.4");process.exit(0)}
2
- import{d as c,e as u,f as h,g as m}from"./chunk-UW3ZSFFB.js";import{m as p}from"./chunk-NZGLDOU4.js";import"./chunk-K72J52JO.js";import{b as s}from"./chunk-U27GVYXA.js";import"./chunk-IYFMDIYZ.js";import"./chunk-HPYGMKZF.js";import"./chunk-VRE2EBFI.js";import"./chunk-2B6ETC7C.js";import"./chunk-RJKYPWFD.js";import{p as l,q as d}from"./chunk-2G2PVVQG.js";import"./chunk-UWAUYDW4.js";import"./chunk-N3MM4Z33.js";import"./chunk-6OLHPWSN.js";import"./chunk-WI5WXYIS.js";import"./chunk-EMZ3DXMG.js";import"./chunk-MFWWPRBV.js";import"./chunk-D7IWGQTW.js";import{g as f}from"./chunk-SVILIQQQ.js";import{Command as g}from"commander";import a from"chalk";p();import{existsSync as y}from"node:fs";import b from"node:path";function C(n,i){let t=[];t.push(a.bold("Witness Chain Audit Verification")),t.push("");let e=i?a.green("ENABLED"):a.yellow("DISABLED");t.push(` Feature Flag: ${e}`),t.push(` Chain Length: ${n.length} receipts`);let r=n.valid?a.green("VALID"):a.red("BROKEN");return t.push(` Integrity: ${r}`),n.length>0&&t.push(` Last Hash: ${n.lastHash.slice(0,16)}...`),!n.valid&&n.brokenAt>=0&&(t.push(""),t.push(a.red(` Break detected at index ${n.brokenAt}`)),t.push(a.red(` ${n.message}`))),t.push(""),t.join(`
3
- `)}function x(){try{let n=s(),i=b.join(n,".agentic-qe","memory.db");if(!y(i))return null;let t=(d(),f(l)),e=new t(i),r=c(e),o=h(r);return e.close(),o}catch{return null}}async function A(n){let i=m(),e=(x()??u()).verifyChain(),r={featureEnabled:i,chainLength:e.length,integrity:e.valid,brokenAt:e.brokenAt,lastHash:e.lastHash,message:e.message};return n.format==="json"?console.log(JSON.stringify(r,null,2)):console.log(C(e,i)),r}function v(n,i,t){let e=new g("audit").description("Witness chain audit trail management");return e.command("verify").description("Verify witness chain integrity").option("-F, --format <format>","Output format (json|text)","text").action(async r=>{try{await A({format:r.format}),await i(0)}catch(o){console.error("Failed to verify witness chain:",o),await i(1)}}),e}export{v as createAuditCommand,C as formatVerificationText,A as handleAuditVerify};
@@ -1,2 +0,0 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.4");process.exit(0)}
2
- import{a,b,c,d,e,f,g,h,i,j}from"./chunk-F77X5DAF.js";import"./chunk-TBJ566KV.js";import"./chunk-NZGLDOU4.js";import"./chunk-K72J52JO.js";import"./chunk-U27GVYXA.js";import"./chunk-IYFMDIYZ.js";import"./chunk-HPYGMKZF.js";import"./chunk-VRE2EBFI.js";import"./chunk-2B6ETC7C.js";import"./chunk-PISW5HUX.js";import"./chunk-RJKYPWFD.js";import"./chunk-2G2PVVQG.js";import"./chunk-UWAUYDW4.js";import"./chunk-N3MM4Z33.js";import"./chunk-6OLHPWSN.js";import"./chunk-WI5WXYIS.js";import"./chunk-EMZ3DXMG.js";import"./chunk-MFWWPRBV.js";import"./chunk-D7IWGQTW.js";import"./chunk-SVILIQQQ.js";export{j as MCPToolBase,i as defaultToolLogger,h as getLLMRouter,d as getMemoryBackend,f as getSharedLLMRouter,b as getSharedMemoryBackend,a as registerRvfResetFn,g as resetSharedLLMRouter,c as resetSharedMemoryBackend,e as setSharedLLMRouter};
@@ -1,2 +0,0 @@
1
- import{createRequire as __cr}from"module";const require=__cr(import.meta.url);if(process.argv.includes('--version')||process.argv.includes('-v')){console.log("3.10.4");process.exit(0)}
2
- import{a}from"./chunk-UXJVR323.js";import"./chunk-F77X5DAF.js";import"./chunk-TBJ566KV.js";import"./chunk-NZGLDOU4.js";import"./chunk-K72J52JO.js";import"./chunk-U27GVYXA.js";import"./chunk-IYFMDIYZ.js";import"./chunk-HPYGMKZF.js";import"./chunk-VRE2EBFI.js";import"./chunk-2B6ETC7C.js";import"./chunk-PISW5HUX.js";import"./chunk-RJKYPWFD.js";import"./chunk-2G2PVVQG.js";import"./chunk-UWAUYDW4.js";import"./chunk-N3MM4Z33.js";import"./chunk-6OLHPWSN.js";import"./chunk-WI5WXYIS.js";import"./chunk-EMZ3DXMG.js";import"./chunk-MFWWPRBV.js";import"./chunk-D7IWGQTW.js";import"./chunk-SVILIQQQ.js";export{a as BrowserWorkflowTool};