agentic-qe 3.15.17 → 3.15.18

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 (495) hide show
  1. package/.claude/helpers/brain-checkpoint.cjs +107 -10
  2. package/.claude/skills/agentic-quality-engineering/SKILL.md +67 -44
  3. package/.claude/skills/brutal-honesty-review/SKILL.md +12 -7
  4. package/.claude/skills/brutal-honesty-review/evals/brutal-honesty-review.yaml +120 -0
  5. package/.claude/skills/brutal-honesty-review/schemas/output.json +9 -3
  6. package/.claude/skills/code-review-quality/SKILL.md +2 -2
  7. package/.claude/skills/holistic-testing-pact/SKILL.md +11 -11
  8. package/.claude/skills/sherlock-review/SKILL.md +4 -2
  9. package/.claude/skills/sherlock-review/evals/sherlock-review.yaml +124 -0
  10. package/.claude/skills/skills-manifest.json +1 -1
  11. package/.claude/skills/technical-writing/SKILL.md +12 -6
  12. package/.claude/skills/technical-writing/evals/technical-writing.yaml +96 -0
  13. package/.opencode/skills/qe-agentic-quality-engineering.yaml +2 -2
  14. package/.opencode/skills/qe-holistic-testing-pact.yaml +2 -2
  15. package/CHANGELOG.md +123 -0
  16. package/assets/skills/agentic-quality-engineering/SKILL.md +67 -44
  17. package/assets/skills/brutal-honesty-review/SKILL.md +12 -8
  18. package/assets/skills/brutal-honesty-review/evals/brutal-honesty-review.yaml +120 -0
  19. package/assets/skills/brutal-honesty-review/schemas/output.json +9 -3
  20. package/assets/skills/code-review-quality/SKILL.md +2 -2
  21. package/assets/skills/holistic-testing-pact/SKILL.md +11 -11
  22. package/assets/skills/sherlock-review/SKILL.md +4 -3
  23. package/assets/skills/sherlock-review/evals/sherlock-review.yaml +124 -0
  24. package/assets/skills/skills-manifest.json +1 -1
  25. package/assets/skills/technical-writing/SKILL.md +12 -6
  26. package/assets/skills/technical-writing/evals/technical-writing.yaml +96 -0
  27. package/dist/cli/brain-commands.d.ts +5 -0
  28. package/dist/cli/brain-commands.js +4 -0
  29. package/dist/cli/bundle.js +6 -6
  30. package/dist/cli/chunks/adapter-WRSDXLOT.js +2 -0
  31. package/dist/cli/chunks/{agent-booster-wasm-6BUOFQZA.js → agent-booster-wasm-UFNJNF3M.js} +2 -2
  32. package/dist/cli/chunks/{agent-handler-HPDK3JI3.js → agent-handler-EAYVRJXN.js} +2 -2
  33. package/dist/cli/chunks/{agent-memory-branch-5QKUTWK5.js → agent-memory-branch-M65C6WAQ.js} +2 -2
  34. package/dist/cli/chunks/aqe-learning-engine-O6NJBCCM.js +2 -0
  35. package/dist/cli/chunks/{arena-HZ35LESR.js → arena-2GDICP6R.js} +4 -4
  36. package/dist/cli/chunks/{arena-7OKPMNHD.js → arena-CG3X67OE.js} +2 -2
  37. package/dist/cli/chunks/{audit-XI575SVK.js → audit-F4FSPJPL.js} +3 -3
  38. package/dist/cli/chunks/base-J2FXOE77.js +2 -0
  39. package/dist/cli/chunks/{better-sqlite3-YO5X7ZJS.js → better-sqlite3-2MCFXW4J.js} +2 -2
  40. package/dist/cli/chunks/brain-handler-WGTJNYNB.js +95 -0
  41. package/dist/cli/chunks/{branch-enumerator-N6G44UU2.js → branch-enumerator-KL7C535H.js} +2 -2
  42. package/dist/cli/chunks/{browser-EVKPTLOI.js → browser-SJEXDVHS.js} +2 -2
  43. package/dist/cli/chunks/browser-workflow-LXGER6ZD.js +2 -0
  44. package/dist/cli/chunks/{chunk-VLTDW7XJ.js → chunk-244RKAEP.js} +2 -2
  45. package/dist/cli/chunks/{chunk-CVPXHDQU.js → chunk-27TUMXPD.js} +1 -1
  46. package/dist/cli/chunks/{chunk-FBBPRVNF.js → chunk-2MBYDPCP.js} +2 -2
  47. package/dist/cli/chunks/{chunk-P3D7SEHW.js → chunk-2Q6DTBMT.js} +1 -1
  48. package/dist/cli/chunks/{chunk-NE3LRUNC.js → chunk-355MI7RV.js} +13 -13
  49. package/dist/cli/chunks/{chunk-YCVLKU6H.js → chunk-3LX5OKBD.js} +2 -2
  50. package/dist/cli/chunks/{chunk-74MDUIAZ.js → chunk-3RPDKJGV.js} +1 -1
  51. package/dist/cli/chunks/{chunk-OWIQR6N2.js → chunk-3YMIT73A.js} +2 -2
  52. package/dist/cli/chunks/{chunk-VKREKVFI.js → chunk-43KUVBSU.js} +2 -2
  53. package/dist/cli/chunks/chunk-477FKXSS.js +2 -0
  54. package/dist/cli/chunks/{chunk-XPTCQKVE.js → chunk-4BIMTRRX.js} +1 -1
  55. package/dist/cli/chunks/{chunk-HD6W6PHV.js → chunk-4CVNVBX5.js} +2 -2
  56. package/dist/cli/chunks/{chunk-CQER6IJ5.js → chunk-4HL3SD4A.js} +1 -1
  57. package/dist/cli/chunks/{chunk-ZNXM6WVL.js → chunk-4PEG4DU2.js} +2 -2
  58. package/dist/cli/chunks/{chunk-BSIWI4ES.js → chunk-4QSQKFED.js} +2 -2
  59. package/dist/cli/chunks/chunk-53ZBETYR.js +16 -0
  60. package/dist/cli/chunks/{chunk-BHQ2DLJU.js → chunk-544KDWL4.js} +1 -1
  61. package/dist/cli/chunks/chunk-54RCGMLB.js +8 -0
  62. package/dist/cli/chunks/{chunk-TDZ6N43D.js → chunk-5AGXIZQ5.js} +2 -2
  63. package/dist/cli/chunks/{chunk-RKCN4B26.js → chunk-5M24X6W7.js} +2 -2
  64. package/dist/cli/chunks/{chunk-GG7PMTHD.js → chunk-5O5T4LEU.js} +1 -1
  65. package/dist/cli/chunks/{chunk-OWIZBZLN.js → chunk-5RFXX4IF.js} +2 -2
  66. package/dist/cli/chunks/{chunk-VQFV2IPV.js → chunk-62MLAQRJ.js} +1 -1
  67. package/dist/cli/chunks/{chunk-PCL5JRKN.js → chunk-6D6TGL2E.js} +2 -2
  68. package/dist/cli/chunks/{chunk-WBDWHHKP.js → chunk-6IHZDSDL.js} +2 -2
  69. package/dist/cli/chunks/{chunk-UOVCTK5L.js → chunk-6P3Y45QL.js} +2 -2
  70. package/dist/cli/chunks/{chunk-45223KK6.js → chunk-6TEVM3X3.js} +10 -10
  71. package/dist/cli/chunks/{chunk-K7WAI662.js → chunk-7XTUKKRA.js} +1 -1
  72. package/dist/cli/chunks/chunk-A3GDX6UF.js +2 -0
  73. package/dist/cli/chunks/{chunk-GN6OE3JT.js → chunk-A5YTKKNA.js} +1 -1
  74. package/dist/cli/chunks/{chunk-KR2TAAF6.js → chunk-ADNGZAT2.js} +1 -1
  75. package/dist/cli/chunks/{chunk-J7Q5TXFZ.js → chunk-AWQAE3SW.js} +2 -2
  76. package/dist/cli/chunks/{chunk-ZN35XSKF.js → chunk-AXDBQFR4.js} +2 -2
  77. package/dist/cli/chunks/{chunk-ND72UDVH.js → chunk-AXVD7O3F.js} +2 -2
  78. package/dist/cli/chunks/{chunk-SAEECT23.js → chunk-B52ULNYO.js} +2 -2
  79. package/dist/cli/chunks/chunk-B6S4FC7M.js +3 -0
  80. package/dist/cli/chunks/{chunk-Z7SKUC6P.js → chunk-BDVFSMOQ.js} +1 -1
  81. package/dist/cli/chunks/{chunk-CXCMATZ6.js → chunk-BGXXMX3Y.js} +2 -2
  82. package/dist/cli/chunks/{chunk-R3KBOQ3O.js → chunk-BKMQQY5T.js} +2 -2
  83. package/dist/cli/chunks/{chunk-SAZ4PJBR.js → chunk-BN2FROBQ.js} +2 -2
  84. package/dist/cli/chunks/{chunk-G2X3OLMN.js → chunk-BO6EQNOC.js} +2 -2
  85. package/dist/cli/chunks/{chunk-776K4ZLE.js → chunk-BOVAKCDC.js} +2 -2
  86. package/dist/cli/chunks/{chunk-QSQNXBD2.js → chunk-BSXKZDKO.js} +2 -2
  87. package/dist/cli/chunks/{chunk-MGZ6XZHU.js → chunk-C5QVJ5XQ.js} +1 -1
  88. package/dist/cli/chunks/{chunk-LOLSZG5J.js → chunk-CFQLLF3D.js} +2 -2
  89. package/dist/cli/chunks/{chunk-J6QRNQJF.js → chunk-DUCVLT3F.js} +7 -7
  90. package/dist/cli/chunks/{chunk-QTQDX4TZ.js → chunk-E4RMJCGA.js} +3 -3
  91. package/dist/cli/chunks/{chunk-MLMD3I75.js → chunk-EONDCWY4.js} +1 -1
  92. package/dist/cli/chunks/{chunk-7BSOO3CY.js → chunk-F4AGNKL2.js} +2 -2
  93. package/dist/cli/chunks/{chunk-IKB3M7OF.js → chunk-F6YD3BOW.js} +1 -1
  94. package/dist/cli/chunks/{chunk-LIF6UWHV.js → chunk-FQRS7WVA.js} +2 -2
  95. package/dist/cli/chunks/{chunk-QJSSUBO3.js → chunk-FT24SSDG.js} +2 -2
  96. package/dist/cli/chunks/chunk-FV4YNSAJ.js +5 -0
  97. package/dist/cli/chunks/{chunk-VITV7AEC.js → chunk-FVDM3X42.js} +2 -2
  98. package/dist/cli/chunks/{chunk-LN7NKE3N.js → chunk-FVH7TXWU.js} +2 -2
  99. package/dist/cli/chunks/{chunk-FBSBXCZS.js → chunk-FWR5QY37.js} +2 -2
  100. package/dist/cli/chunks/{chunk-X2DWHGCC.js → chunk-FYINK2B7.js} +2 -2
  101. package/dist/cli/chunks/{chunk-ECKHDHR2.js → chunk-GGISVPOZ.js} +2 -2
  102. package/dist/cli/chunks/{chunk-SRBCBVSI.js → chunk-GPIJIZJQ.js} +2 -2
  103. package/dist/cli/chunks/{chunk-YR5QBUHZ.js → chunk-GXEVOT5F.js} +2 -2
  104. package/dist/cli/chunks/{chunk-ZTP3DQ5M.js → chunk-GZ4VB5RI.js} +1 -1
  105. package/dist/cli/chunks/{chunk-HWQPMUSN.js → chunk-HBDSCYSK.js} +2 -2
  106. package/dist/cli/chunks/{chunk-XBTGEYED.js → chunk-HGG4HR7C.js} +2 -2
  107. package/dist/cli/chunks/{chunk-YD2C6EPN.js → chunk-HSCKWWO2.js} +2 -2
  108. package/dist/cli/chunks/{chunk-LOMT4UC2.js → chunk-HSQ3GUYJ.js} +2 -2
  109. package/dist/cli/chunks/{chunk-ZC3KDNJW.js → chunk-HZQBW5EM.js} +3 -3
  110. package/dist/cli/chunks/{chunk-SUAZ5Z47.js → chunk-IGIYANVT.js} +2 -2
  111. package/dist/cli/chunks/{chunk-IHQGNDMX.js → chunk-IPWMSXBF.js} +2 -2
  112. package/dist/cli/chunks/{chunk-6V6BD6PH.js → chunk-IWVNC7VY.js} +1 -1
  113. package/dist/cli/chunks/{chunk-M2YI5YUR.js → chunk-IZODXKZD.js} +2 -2
  114. package/dist/cli/chunks/{chunk-LG5PPJT7.js → chunk-J2MT2OJV.js} +1 -1
  115. package/dist/cli/chunks/{chunk-6LSZCEW2.js → chunk-JKIJVVSP.js} +1 -1
  116. package/dist/cli/chunks/{chunk-REY52O7J.js → chunk-JMRDT2XK.js} +1 -1
  117. package/dist/cli/chunks/{chunk-XEYFZLIT.js → chunk-JR2UMTKG.js} +1 -1
  118. package/dist/cli/chunks/{chunk-DJDVD6RM.js → chunk-K6CH4CFF.js} +2 -2
  119. package/dist/cli/chunks/{chunk-2PCEMDIX.js → chunk-K7KW5QB5.js} +78 -87
  120. package/dist/cli/chunks/{chunk-EPVPXHL7.js → chunk-KFCQP434.js} +2 -2
  121. package/dist/cli/chunks/{chunk-TWBZONKT.js → chunk-KH4T6STG.js} +2 -2
  122. package/dist/cli/chunks/{chunk-JI33PMPZ.js → chunk-KJBYZO57.js} +1 -1
  123. package/dist/cli/chunks/{chunk-PK34KJH7.js → chunk-KP4OKOKV.js} +2 -2
  124. package/dist/cli/chunks/chunk-L2MBKVSE.js +2 -0
  125. package/dist/cli/chunks/{chunk-JVWZAE2H.js → chunk-L3IPUIT3.js} +2 -2
  126. package/dist/cli/chunks/{chunk-KT2QCXO6.js → chunk-L7PSU2YN.js} +2 -2
  127. package/dist/cli/chunks/{chunk-HAQJFUAQ.js → chunk-LA3JPGQA.js} +2 -2
  128. package/dist/cli/chunks/{chunk-LV7UIK4Q.js → chunk-LC2QRN7V.js} +14 -13
  129. package/dist/cli/chunks/{chunk-KTORRIX3.js → chunk-LHY7TMTM.js} +2 -2
  130. package/dist/cli/chunks/{chunk-IJSROBM6.js → chunk-LLQ2UMF6.js} +3 -3
  131. package/dist/cli/chunks/{chunk-NKUHMA4T.js → chunk-LOJ7OO6W.js} +2 -2
  132. package/dist/cli/chunks/{chunk-OJIUIEI4.js → chunk-LPUSH3VF.js} +1 -1
  133. package/dist/cli/chunks/{chunk-WAOEQA3W.js → chunk-LSEC2BU7.js} +2 -2
  134. package/dist/cli/chunks/{chunk-YMUY3TES.js → chunk-LTGB7OIU.js} +2 -2
  135. package/dist/cli/chunks/{chunk-CVYPMGUM.js → chunk-LUG7YNVZ.js} +2 -2
  136. package/dist/cli/chunks/{chunk-YAJOBZE5.js → chunk-LWAFRYKE.js} +2 -2
  137. package/dist/cli/chunks/{chunk-ZP5AWQRO.js → chunk-M24ZAZ4U.js} +2 -2
  138. package/dist/cli/chunks/{chunk-HFZD5KLR.js → chunk-MKRKRXTX.js} +1 -1
  139. package/dist/cli/chunks/{chunk-4YM45Z5B.js → chunk-MNNLONAD.js} +1 -1
  140. package/dist/cli/chunks/{chunk-CMN7PU2H.js → chunk-MQM37KAR.js} +2 -2
  141. package/dist/cli/chunks/{chunk-COTQ44YO.js → chunk-MSX2OHYT.js} +2 -2
  142. package/dist/cli/chunks/{chunk-4UKTIQDT.js → chunk-MVYQRVLP.js} +2 -2
  143. package/dist/cli/chunks/{chunk-HRUHHHVR.js → chunk-MZC5WM2P.js} +2 -2
  144. package/dist/cli/chunks/{chunk-YKRLUTK7.js → chunk-MZRBNBB3.js} +2 -2
  145. package/dist/cli/chunks/{chunk-XEMCHGAJ.js → chunk-N3KQU4UC.js} +2 -2
  146. package/dist/cli/chunks/{chunk-DS5IFRY6.js → chunk-NKU3FFM4.js} +2 -2
  147. package/dist/cli/chunks/chunk-O5EWFR76.js +2 -0
  148. package/dist/cli/chunks/{chunk-J3QFJI2Y.js → chunk-O5RDHD5T.js} +2 -2
  149. package/dist/cli/chunks/chunk-O6UWIXME.js +3 -0
  150. package/dist/cli/chunks/{chunk-Q6F3DYZN.js → chunk-OA4EQDC4.js} +2 -2
  151. package/dist/cli/chunks/{chunk-NQFDJ6BT.js → chunk-OBCXCRXK.js} +1 -1
  152. package/dist/cli/chunks/{chunk-S3TBOKAZ.js → chunk-OHU5P25N.js} +4 -4
  153. package/dist/cli/chunks/{chunk-DNVRTJKB.js → chunk-OOSV2RIA.js} +2 -2
  154. package/dist/cli/chunks/{chunk-NZJVDOUN.js → chunk-OW23N2Y5.js} +2 -2
  155. package/dist/cli/chunks/{chunk-ZWUF27P4.js → chunk-OXOO3YDL.js} +2 -2
  156. package/dist/cli/chunks/{chunk-4L6WX5KC.js → chunk-OYGKSSSI.js} +1 -1
  157. package/dist/cli/chunks/{chunk-DCDSN67A.js → chunk-PGO46IIW.js} +1 -1
  158. package/dist/cli/chunks/{chunk-C7QLLMYI.js → chunk-PZOYQHWS.js} +1 -1
  159. package/dist/cli/chunks/{chunk-BKHEQIRZ.js → chunk-Q2BZSG7Z.js} +2 -2
  160. package/dist/cli/chunks/{chunk-5FSPELOG.js → chunk-Q7V722K5.js} +2 -2
  161. package/dist/cli/chunks/{chunk-2EQK7B5L.js → chunk-QZU6M5IO.js} +2 -2
  162. package/dist/cli/chunks/{chunk-HVT7RMGV.js → chunk-R55Y76SJ.js} +1 -1
  163. package/dist/cli/chunks/{chunk-POPSZDI2.js → chunk-RMEQYJPU.js} +4 -4
  164. package/dist/cli/chunks/{chunk-H2LHWZRE.js → chunk-RTYXFXTI.js} +2 -2
  165. package/dist/cli/chunks/{chunk-QN7HP2UW.js → chunk-SJF3O4FX.js} +236 -236
  166. package/dist/cli/chunks/{chunk-2YWYW7NU.js → chunk-SOUS7Z2H.js} +2 -2
  167. package/dist/cli/chunks/{chunk-U5SMBJ6F.js → chunk-SRVNR3R3.js} +2 -2
  168. package/dist/cli/chunks/{chunk-ZAQMRFBB.js → chunk-SU3SXMVG.js} +2 -2
  169. package/dist/cli/chunks/chunk-SWGPLXWW.js +32 -0
  170. package/dist/cli/chunks/{chunk-S3DT5TPR.js → chunk-TRB3EVH3.js} +2 -2
  171. package/dist/cli/chunks/{chunk-IJZFJPHS.js → chunk-TVBDUMKT.js} +2 -2
  172. package/dist/cli/chunks/{chunk-7SNSI4VY.js → chunk-TWTXPSFU.js} +1 -1
  173. package/dist/cli/chunks/{chunk-ORQ2YBRR.js → chunk-ULYUVUL2.js} +2 -2
  174. package/dist/cli/chunks/{chunk-MVVVGQJ6.js → chunk-UNTBVJ5X.js} +2 -2
  175. package/dist/cli/chunks/{chunk-5WATBVU6.js → chunk-UQAA4PHU.js} +2 -2
  176. package/dist/cli/chunks/{chunk-5WYZVSL2.js → chunk-UWSJVKTE.js} +1 -1
  177. package/dist/cli/chunks/{chunk-JHKKIJT2.js → chunk-V2LJ54KP.js} +2 -2
  178. package/dist/cli/chunks/{chunk-2UUZCQSD.js → chunk-VCCTTKP3.js} +2 -2
  179. package/dist/cli/chunks/{chunk-P4OB6WDJ.js → chunk-VEGUYUVS.js} +1 -1
  180. package/dist/cli/chunks/{chunk-WX4PO65Q.js → chunk-VUQPVWNK.js} +2 -2
  181. package/dist/cli/chunks/{chunk-IQL6XRF5.js → chunk-VVGUE2T2.js} +2 -2
  182. package/dist/cli/chunks/{chunk-HZ5O7G2P.js → chunk-W5ASDHJQ.js} +1 -1
  183. package/dist/cli/chunks/{chunk-U4S74IIZ.js → chunk-WGXT5NWQ.js} +1 -1
  184. package/dist/cli/chunks/chunk-WJN3V7QB.js +7 -0
  185. package/dist/cli/chunks/chunk-WPCRQIIF.js +29 -0
  186. package/dist/cli/chunks/{chunk-AGCS5GSO.js → chunk-WQNLXUWA.js} +6 -6
  187. package/dist/cli/chunks/{chunk-LRY6UIRI.js → chunk-WZVRMKG2.js} +2 -2
  188. package/dist/cli/chunks/{chunk-KPIPVSIP.js → chunk-X27IUWTD.js} +2 -2
  189. package/dist/cli/chunks/{chunk-VDEKVIP5.js → chunk-X4B345B6.js} +2 -2
  190. package/dist/cli/chunks/{chunk-ERYADKMZ.js → chunk-X5I2Y4VO.js} +2 -2
  191. package/dist/cli/chunks/{chunk-EUWG2JG4.js → chunk-X7IQIFTS.js} +2 -2
  192. package/dist/cli/chunks/chunk-XJN3RKUD.js +3 -0
  193. package/dist/cli/chunks/{chunk-JRIJM4LE.js → chunk-XQMGXTHJ.js} +3 -3
  194. package/dist/cli/chunks/{chunk-VYPVU3JF.js → chunk-XTSAMB2Q.js} +2 -2
  195. package/dist/cli/chunks/{chunk-4NKZU2JZ.js → chunk-XZLIF4O2.js} +2 -2
  196. package/dist/cli/chunks/{chunk-XFTX3KLE.js → chunk-Y4LSEOZ3.js} +1 -1
  197. package/dist/cli/chunks/{chunk-ZVMSSCTH.js → chunk-Y4YN2RXR.js} +2 -2
  198. package/dist/cli/chunks/{chunk-X5QD76IU.js → chunk-YDI56L35.js} +2 -2
  199. package/dist/cli/chunks/{chunk-LRKLATSH.js → chunk-YFILS5D5.js} +2 -2
  200. package/dist/cli/chunks/{chunk-AVHYJ3XP.js → chunk-YISDX6WB.js} +2 -2
  201. package/dist/cli/chunks/{chunk-GPPTRKEM.js → chunk-YP2GHQSV.js} +2 -2
  202. package/dist/cli/chunks/{chunk-OO2M2QUV.js → chunk-YSX756AM.js} +4 -4
  203. package/dist/cli/chunks/{chunk-E7XIMOKW.js → chunk-YWANOASW.js} +2 -2
  204. package/dist/cli/chunks/{chunk-UHJVZEQA.js → chunk-YYIJLG7S.js} +2 -2
  205. package/dist/cli/chunks/{chunk-LCWEQRZI.js → chunk-Z7SD7LXM.js} +2 -2
  206. package/dist/cli/chunks/{chunk-TM75GAXG.js → chunk-ZDWD73UF.js} +2 -2
  207. package/dist/cli/chunks/{chunk-IRHXGCQR.js → chunk-ZFT3RLA4.js} +2 -2
  208. package/dist/cli/chunks/{chunk-ZGV7L4MW.js → chunk-ZNTHX5G3.js} +1 -1
  209. package/dist/cli/chunks/{chunk-D75GLKEL.js → chunk-ZS27R7VL.js} +2 -2
  210. package/dist/cli/chunks/{chunk-INI3Q4CN.js → chunk-ZXHHHR7K.js} +1 -1
  211. package/dist/cli/chunks/{ci-3RTTTS2D.js → ci-N5MOMNXH.js} +2 -2
  212. package/dist/cli/chunks/{ci-config-XRUR3I4K.js → ci-config-6L2ROQCW.js} +2 -2
  213. package/dist/cli/chunks/{ci-output-E5IAMU2U.js → ci-output-DSRBYEIK.js} +2 -2
  214. package/dist/cli/chunks/{circuit-breaker-SHR2P44P.js → circuit-breaker-VRPTNBL7.js} +2 -2
  215. package/dist/cli/chunks/{claude-flow-setup-ZDDILFMF.js → claude-flow-setup-4YFG3FU5.js} +2 -2
  216. package/dist/cli/chunks/client-I3L6BKRQ.js +2 -0
  217. package/dist/cli/chunks/{cline-installer-BGYVUM6G.js → cline-installer-7RGYJWGN.js} +2 -2
  218. package/dist/cli/chunks/{code-PJ4MC3MC.js → code-ISC6NW2K.js} +3 -3
  219. package/dist/cli/chunks/{code-index-extractor-IW2P22YG.js → code-index-extractor-2FID75YV.js} +2 -2
  220. package/dist/cli/chunks/{codex-installer-A7WZ6OGL.js → codex-installer-DZ7OG6KM.js} +2 -2
  221. package/dist/cli/chunks/{completions-KS23WD5J.js → completions-SM3LICWK.js} +2 -2
  222. package/dist/cli/chunks/{complexity-analyzer-Q7GLSR2E.js → complexity-analyzer-ZWD2CTAD.js} +2 -2
  223. package/dist/cli/chunks/{continuedev-installer-SK55BFW2.js → continuedev-installer-AGASOA26.js} +2 -2
  224. package/dist/cli/chunks/{copilot-installer-3N5J3WTM.js → copilot-installer-CLPZYTQC.js} +2 -2
  225. package/dist/cli/chunks/core-handlers-5EFOJ37H.js +2 -0
  226. package/dist/cli/chunks/{cost-tracker-NENVSO4A.js → cost-tracker-7PIGQYDV.js} +2 -2
  227. package/dist/cli/chunks/{coverage-5L7UQWDH.js → coverage-T2GEBTYS.js} +9 -9
  228. package/dist/cli/chunks/cross-domain-router-65WJAKVD.js +2 -0
  229. package/dist/cli/chunks/{cursor-installer-XXBO2ZE6.js → cursor-installer-KXBID4MB.js} +2 -2
  230. package/dist/cli/chunks/daemon-43MXIVH3.js +18 -0
  231. package/dist/cli/chunks/{daemon-CDCQU3LR.js → daemon-VAMJLQJ5.js} +3 -3
  232. package/dist/cli/chunks/{dag-attention-scheduler-HOMMF7FA.js → dag-attention-scheduler-UBP4VHTA.js} +2 -2
  233. package/dist/cli/chunks/{detect-FXCOUG6X.js → detect-QWFIQRKI.js} +2 -2
  234. package/dist/cli/chunks/{dist-node-GXQ7FMTY.js → dist-node-I2GICS3W.js} +2 -2
  235. package/dist/cli/chunks/{domain-handler-TI3JBAPC.js → domain-handler-Z66ISB2A.js} +2 -2
  236. package/dist/cli/chunks/{domain-plugins-R7LTUM32.js → domain-plugins-KHMD3FKT.js} +2 -2
  237. package/dist/cli/chunks/{domain-transfer-LBIAFHIQ.js → domain-transfer-JWGNNA6K.js} +2 -2
  238. package/dist/cli/chunks/dream-VQ2PZCVR.js +2 -0
  239. package/dist/cli/chunks/embed-and-insert-pattern-F5P5B6JX.js +3 -0
  240. package/dist/cli/chunks/{embedding-space-HHLWTBF5.js → embedding-space-KHG6TITM.js} +2 -2
  241. package/dist/cli/chunks/{eval-KDOZMAXJ.js → eval-43OHU7EI.js} +2 -2
  242. package/dist/cli/chunks/{experience-capture-middleware-X45PECQN.js → experience-capture-middleware-KXD47H6P.js} +3 -3
  243. package/dist/cli/chunks/{fast-paths-462V6UUB.js → fast-paths-6D75D5KD.js} +2 -2
  244. package/dist/cli/chunks/{feature-flags-NIRQ4YDM.js → feature-flags-IE35Y55N.js} +2 -2
  245. package/dist/cli/chunks/{feature-flags-G66OT3AS.js → feature-flags-OYYHY7LS.js} +2 -2
  246. package/dist/cli/chunks/file-discovery-LGBTY3ID.js +2 -0
  247. package/dist/cli/chunks/{fleet-PXWGB7CU.js → fleet-AGVJMFGD.js} +16 -16
  248. package/dist/cli/chunks/{gnn-wrapper-7MUW3M5M.js → gnn-wrapper-5L66A7LW.js} +2 -2
  249. package/dist/cli/chunks/{heartbeat-handler-5237PB35.js → heartbeat-handler-2BY6YYOT.js} +5 -5
  250. package/dist/cli/chunks/heartbeat-scheduler-3DU3M5AT.js +2 -0
  251. package/dist/cli/chunks/hnsw-adapter-N2IMSRPV.js +2 -0
  252. package/dist/cli/chunks/hnsw-index-DVU7TTJE.js +2 -0
  253. package/dist/cli/chunks/{hnsw-legacy-bridge-OSQPW7JP.js → hnsw-legacy-bridge-RYMWFNAH.js} +2 -2
  254. package/dist/cli/chunks/{hnswlib-node-GX6WG2GB.js → hnswlib-node-GG47HP2P.js} +2 -2
  255. package/dist/cli/chunks/{hooks-GUWHL7VC.js → hooks-FQNACS24.js} +10 -10
  256. package/dist/cli/chunks/hybrid-backend-AS2PNHOD.js +2 -0
  257. package/dist/cli/chunks/{hypergraph-engine-SRWLLCU3.js → hypergraph-engine-6BYNJQEP.js} +2 -2
  258. package/dist/cli/chunks/{hypergraph-handler-AVOPRHHO.js → hypergraph-handler-CYTAXZKJ.js} +3 -3
  259. package/dist/cli/chunks/impact-analyzer-Y4OONLFP.js +2 -0
  260. package/dist/cli/chunks/{init-guard-P4N6EVZS.js → init-guard-METTAV5O.js} +2 -2
  261. package/dist/cli/chunks/{init-handler-LRGWOJMD.js → init-handler-GFT74U5Y.js} +6 -6
  262. package/dist/cli/chunks/init-wizard-HLNUBJQN.js +2 -0
  263. package/dist/cli/chunks/kernel-XKFWCL7Y.js +2 -0
  264. package/dist/cli/chunks/{kilocode-installer-7R2EPOQ6.js → kilocode-installer-GZV2D3FF.js} +2 -2
  265. package/dist/cli/chunks/{kiro-installer-QNM7DPOB.js → kiro-installer-Q4ZXUFC7.js} +2 -2
  266. package/dist/cli/chunks/knowledge-graph-CNL77CSZ.js +2 -0
  267. package/dist/cli/chunks/{learning-7OIZBPXZ.js → learning-WA2QEYL7.js} +35 -34
  268. package/dist/cli/chunks/{llm-router-SIDXES23.js → llm-router-GRTCHWH7.js} +4 -4
  269. package/dist/cli/chunks/llm-router-service-UIYTYKP6.js +2 -0
  270. package/dist/cli/chunks/{load-EI2E2C3S.js → load-WXN3Q7Y5.js} +2 -2
  271. package/dist/cli/chunks/load-test-PXLW4A5B.js +2 -0
  272. package/dist/cli/chunks/{mcp-IOE5WOCS.js → mcp-LIQCPSJN.js} +2 -2
  273. package/dist/cli/chunks/{memory-DLYGJAP7.js → memory-OP6CHRFH.js} +5 -5
  274. package/dist/cli/chunks/memory-backend-XYOSO73Q.js +2 -0
  275. package/dist/cli/chunks/memory-handlers-PQFYVNVG.js +2 -0
  276. package/dist/cli/chunks/{multi-model-executor-WHH4YCHM.js → multi-model-executor-H54DEVRZ.js} +2 -2
  277. package/dist/cli/chunks/{opencode-installer-63FDZAMS.js → opencode-installer-BSQV6UAT.js} +2 -2
  278. package/dist/cli/chunks/{orchestrator-3LA776KK.js → orchestrator-TJDPQ4VL.js} +122 -35
  279. package/dist/cli/chunks/pattern-null-store-BKGTQFNF.js +2 -0
  280. package/dist/cli/chunks/{pattern-usage-recorder-NW54QUGI.js → pattern-usage-recorder-FOVS4M5L.js} +2 -2
  281. package/dist/cli/chunks/{pipeline-P3TYX6J6.js → pipeline-4AY2ZIC6.js} +2 -2
  282. package/dist/cli/chunks/{platform-FNA2WLI6.js → platform-FCSITYMR.js} +2 -2
  283. package/dist/cli/chunks/{plugin-NJS7BC2S.js → plugin-E56TV5S2.js} +2 -2
  284. package/dist/cli/chunks/{prime-radiant-advanced-wasm-NIAVL2OT.js → prime-radiant-advanced-wasm-ACOPC533.js} +2 -2
  285. package/dist/cli/chunks/project-root-MPX7CN2C.js +2 -0
  286. package/dist/cli/chunks/protocol-executor-CRQOCC4A.js +2 -0
  287. package/dist/cli/chunks/{protocol-handler-JU5C4JHY.js → protocol-handler-KRVXF4LS.js} +2 -2
  288. package/dist/cli/chunks/{prove-35VOSLYP.js → prove-KMFPSKGD.js} +2 -2
  289. package/dist/cli/chunks/qe-reasoning-bank-UEGQ3O7F.js +2 -0
  290. package/dist/cli/chunks/{quality-ET74X7HN.js → quality-6DBI3HLB.js} +2 -2
  291. package/dist/cli/chunks/{quality-gate-FEDQISNB.js → quality-gate-3ROZMEIL.js} +3 -3
  292. package/dist/cli/chunks/queen-coordinator-32574XSG.js +2 -0
  293. package/dist/cli/chunks/real-embeddings-MIGZNKK3.js +2 -0
  294. package/dist/cli/chunks/{ref-validation-DTBPYCEB.js → ref-validation-EYIP7DHW.js} +2 -2
  295. package/dist/cli/chunks/{roocode-installer-LYQEMR4J.js → roocode-installer-IGGZHR2Y.js} +2 -2
  296. package/dist/cli/chunks/router-CZJY5WX6.js +2 -0
  297. package/dist/cli/chunks/routing-feedback-RC3UBNFX.js +2 -0
  298. package/dist/cli/chunks/{routing-handler-DJOJFPII.js → routing-handler-BWNHBYDC.js} +2 -2
  299. package/dist/cli/chunks/{ruvector-commands-VXYGJDPW.js → ruvector-commands-PXIHF432.js} +2 -2
  300. package/dist/cli/chunks/rvf-dual-writer-OG7OV2AK.js +2 -0
  301. package/dist/cli/chunks/rvf-migration-adapter-THYMW7ZO.js +2 -0
  302. package/dist/cli/chunks/rvf-migration-coordinator-3H6CLFU7.js +2 -0
  303. package/dist/cli/chunks/rvf-native-adapter-6JQJIKKW.js +2 -0
  304. package/dist/cli/chunks/{rvf-store-integrity-GA2ZYOEG.js → rvf-store-integrity-CVB3NMSL.js} +2 -2
  305. package/dist/cli/chunks/safe-db-QFKCVTIJ.js +2 -0
  306. package/dist/cli/chunks/schedule-6JLVMMYB.js +2 -0
  307. package/dist/cli/chunks/scheduler-3MPZRMJD.js +2 -0
  308. package/dist/cli/chunks/{security-MM6YOECX.js → security-DCRGOTWU.js} +3 -3
  309. package/dist/cli/chunks/{shared-rvf-adapter-6AHPA3V5.js → shared-rvf-adapter-GKD74QUB.js} +2 -2
  310. package/dist/cli/chunks/{shared-rvf-dual-writer-EYAVY2GZ.js → shared-rvf-dual-writer-HVAAVEOH.js} +2 -2
  311. package/dist/cli/chunks/sqlite-persistence-LGTIKAEX.js +2 -0
  312. package/dist/cli/chunks/{standalone-memory-A3PLB4CZ.js → standalone-memory-O7O2U5N4.js} +2 -2
  313. package/dist/cli/chunks/{status-handler-OSSFAP4Z.js → status-handler-BQTPJJTL.js} +2 -2
  314. package/dist/cli/chunks/{structural-health-PGY5XUNO.js → structural-health-4H6J4OHK.js} +2 -2
  315. package/dist/cli/chunks/sync-DJ4TF6QX.js +2 -0
  316. package/dist/cli/chunks/{sync-CWEHYGNN.js → sync-WW5TAVYW.js} +2 -2
  317. package/dist/cli/chunks/{task-handler-LHMQ75W4.js → task-handler-HEM4IEOW.js} +2 -2
  318. package/dist/cli/chunks/{task-handlers-S2TX5FTR.js → task-handlers-JRA3NXIR.js} +3 -3
  319. package/dist/cli/chunks/{test-4EGZZ6NJ.js → test-772ZXVG2.js} +4 -4
  320. package/dist/cli/chunks/test-runner-process-XGF2U3NG.js +2 -0
  321. package/dist/cli/chunks/{test-scheduling-YJQHH3XE.js → test-scheduling-4TRB7LZ7.js} +3 -3
  322. package/dist/cli/chunks/token-bootstrap-CICBIJ7T.js +2 -0
  323. package/dist/cli/chunks/{token-usage-WPNOJR6H.js → token-usage-B7PEKE2G.js} +2 -2
  324. package/dist/cli/chunks/{transformers-4MRPXCPU.js → transformers-V7X7BDZX.js} +2 -2
  325. package/dist/cli/chunks/tree-sitter-wasm-parser-OXPFKFZS.js +2 -0
  326. package/dist/cli/chunks/{types-6P5FB4EB.js → types-AHHTUY3I.js} +2 -2
  327. package/dist/cli/chunks/unified-memory-GUR3IUI6.js +2 -0
  328. package/dist/cli/chunks/unified-memory-hnsw-NJP2F2RY.js +2 -0
  329. package/dist/cli/chunks/unified-persistence-NILBWXDP.js +2 -0
  330. package/dist/cli/chunks/{upgrade-4ICTN63Y.js → upgrade-DZ4DLUQ5.js} +2 -2
  331. package/dist/cli/chunks/{validate-HQF5GZ7L.js → validate-4DTLIDJE.js} +2 -2
  332. package/dist/cli/chunks/{validate-swarm-45JYG7VW.js → validate-swarm-A26UFVIS.js} +2 -2
  333. package/dist/cli/chunks/visual-security-YECYZ27X.js +2 -0
  334. package/dist/cli/chunks/{web-tree-sitter-UOTWZLNH.js → web-tree-sitter-F2C7QRYT.js} +2 -2
  335. package/dist/cli/chunks/{windsurf-installer-WDWSBXGN.js → windsurf-installer-OOBTDA6W.js} +2 -2
  336. package/dist/cli/chunks/{witness-chain-DOYMNPC7.js → witness-chain-KGFZJP32.js} +2 -2
  337. package/dist/cli/chunks/witness-chain-LYBXFLJB.js +2 -0
  338. package/dist/cli/chunks/witness-chain-repair-CNTXOGPN.js +2 -0
  339. package/dist/cli/chunks/{witness-chain-verifier-JB42X62J.js → witness-chain-verifier-OB7ZZOI3.js} +2 -2
  340. package/dist/cli/chunks/{witness-key-manager-LXXO6L2G.js → witness-key-manager-YCKGKGQI.js} +2 -2
  341. package/dist/cli/chunks/{workflow-6ARK47NF.js → workflow-PRERHWKY.js} +4 -4
  342. package/dist/cli/chunks/workflow-orchestrator-UIBGWCU3.js +2 -0
  343. package/dist/cli/chunks/wrappers-L4UY4V63.js +2 -0
  344. package/dist/cli/commands/coverage.js +4 -1
  345. package/dist/cli/commands/learning-prune.js +9 -1
  346. package/dist/cli/handlers/brain-handler.js +32 -2
  347. package/dist/cli/handlers/heartbeat-handler.js +3 -1
  348. package/dist/cli/utils/coverage-data.js +5 -1
  349. package/dist/cli/utils/coverage-verdict.d.ts +10 -2
  350. package/dist/cli/utils/coverage-verdict.js +23 -8
  351. package/dist/cli/utils/fleet-operation.js +9 -3
  352. package/dist/coordination/handlers/code-intelligence-handlers.js +17 -3
  353. package/dist/coordination/handlers/coverage-handlers.js +22 -9
  354. package/dist/coordination/handlers/coverage-target.d.ts +22 -2
  355. package/dist/coordination/handlers/coverage-target.js +45 -9
  356. package/dist/coordination/handlers/handler-utils.d.ts +19 -0
  357. package/dist/coordination/handlers/handler-utils.js +22 -8
  358. package/dist/coordination/protocols/code-intelligence-index.js +6 -3
  359. package/dist/coordination/protocols/learning-consolidation-archive.d.ts +6 -3
  360. package/dist/coordination/protocols/learning-consolidation-archive.js +4 -3
  361. package/dist/coordination/workflow-builtin.js +1 -0
  362. package/dist/domains/defect-intelligence/interfaces.d.ts +2 -0
  363. package/dist/domains/defect-intelligence/prediction-history.d.ts +15 -1
  364. package/dist/domains/defect-intelligence/prediction-history.js +63 -7
  365. package/dist/domains/defect-intelligence/services/defect-predictor.d.ts +1 -0
  366. package/dist/domains/defect-intelligence/services/defect-predictor.js +33 -13
  367. package/dist/domains/learning-optimization/coordinator.js +17 -10
  368. package/dist/domains/learning-optimization/domain-ranking.d.ts +26 -0
  369. package/dist/domains/learning-optimization/domain-ranking.js +28 -0
  370. package/dist/domains/learning-optimization/interfaces.d.ts +5 -0
  371. package/dist/domains/learning-optimization/pattern-archive.d.ts +55 -8
  372. package/dist/domains/learning-optimization/pattern-archive.js +90 -17
  373. package/dist/domains/learning-optimization/pattern-consolidation.js +18 -2
  374. package/dist/domains/learning-optimization/pattern-merge.d.ts +26 -0
  375. package/dist/domains/learning-optimization/pattern-merge.js +127 -0
  376. package/dist/domains/learning-optimization/services/learning-coordinator.js +21 -35
  377. package/dist/domains/test-execution/services/test-executor.js +6 -2
  378. package/dist/init/init-wizard-steps.js +3 -1
  379. package/dist/init/phases/07-hooks.js +97 -10
  380. package/dist/integrations/embeddings/cache/EmbeddingCache.js +1 -1
  381. package/dist/integrations/ruvector/brain-rvf-exporter.d.ts +16 -1
  382. package/dist/integrations/ruvector/brain-rvf-exporter.js +18 -32
  383. package/dist/integrations/ruvector/brain-rvf-richness.d.ts +75 -0
  384. package/dist/integrations/ruvector/brain-rvf-richness.js +127 -0
  385. package/dist/kernel/unified-memory-migration.js +1 -1
  386. package/dist/learning/checkpoint-shrink-ack.d.ts +25 -0
  387. package/dist/learning/checkpoint-shrink-ack.js +57 -0
  388. package/dist/learning/dream/dream-engine.d.ts +44 -3
  389. package/dist/learning/dream/dream-engine.js +6 -2
  390. package/dist/learning/embedder-identity-store.js +3 -1
  391. package/dist/learning/embedding-space-legacy-adoption.d.ts +53 -0
  392. package/dist/learning/embedding-space-legacy-adoption.js +115 -0
  393. package/dist/learning/embedding-space-registry.d.ts +15 -0
  394. package/dist/learning/embedding-space-registry.js +50 -11
  395. package/dist/learning/experience-capture.d.ts +3 -1
  396. package/dist/learning/experience-capture.js +15 -5
  397. package/dist/learning/experience-space-verification.d.ts +2 -0
  398. package/dist/learning/experience-space-verification.js +3 -2
  399. package/dist/learning/learning-retention.js +4 -0
  400. package/dist/learning/pattern-promotion.d.ts +7 -0
  401. package/dist/learning/pattern-promotion.js +64 -12
  402. package/dist/learning/real-embeddings.js +31 -7
  403. package/dist/learning/rvf-pattern-store.js +6 -1
  404. package/dist/mcp/bundle.js +570 -558
  405. package/dist/mcp/handlers/domain-handler-configs.d.ts +3 -0
  406. package/dist/mcp/handlers/domain-handler-configs.js +1 -0
  407. package/dist/mcp/handlers/heartbeat-handlers.d.ts +4 -2
  408. package/dist/mcp/tools/learning-optimization/optimize.d.ts +6 -1
  409. package/dist/mcp/tools/learning-optimization/optimize.js +20 -11
  410. package/dist/planning/goap-planner.js +4 -0
  411. package/dist/planning/plan-executor.js +6 -2
  412. package/dist/shared/git/git-analyzer.d.ts +30 -11
  413. package/dist/shared/git/git-analyzer.js +95 -48
  414. package/dist/shared/io/confined-read.d.ts +32 -7
  415. package/dist/shared/io/confined-read.js +58 -25
  416. package/dist/shared/io/file-reader.js +4 -1
  417. package/dist/shared/safe-db.d.ts +1 -1
  418. package/dist/shared/safe-db.js +20 -5
  419. package/dist/shared/sqlite-journal-mode.d.ts +39 -0
  420. package/dist/shared/sqlite-journal-mode.js +53 -0
  421. package/dist/sync/claude-flow-bridge.js +1 -1
  422. package/dist/sync/readers/sqlite-reader.js +3 -4
  423. package/dist/sync/writers/sqlite-writer.js +1 -1
  424. package/dist/workers/interfaces.d.ts +2 -2
  425. package/dist/workers/quality-daemon/git-watcher.d.ts +8 -0
  426. package/dist/workers/quality-daemon/git-watcher.js +54 -12
  427. package/dist/workers/quality-daemon/index.js +1 -1
  428. package/dist/workers/quality-daemon/priority-queue.d.ts +2 -1
  429. package/dist/workers/workers/defect-predictor.d.ts +9 -4
  430. package/dist/workers/workers/defect-predictor.js +98 -37
  431. package/package.json +1 -1
  432. package/dist/cli/chunks/adapter-OMILP6KH.js +0 -2
  433. package/dist/cli/chunks/aqe-learning-engine-OXH5CCOS.js +0 -2
  434. package/dist/cli/chunks/base-MAK2BLTG.js +0 -2
  435. package/dist/cli/chunks/brain-handler-GCQZFZGQ.js +0 -95
  436. package/dist/cli/chunks/browser-workflow-IR3VF2TL.js +0 -2
  437. package/dist/cli/chunks/chunk-4EJLHNER.js +0 -12
  438. package/dist/cli/chunks/chunk-A4BVDYIL.js +0 -2
  439. package/dist/cli/chunks/chunk-BE7ZHM34.js +0 -3
  440. package/dist/cli/chunks/chunk-DHKSPOUQ.js +0 -16
  441. package/dist/cli/chunks/chunk-FAQ24UHB.js +0 -29
  442. package/dist/cli/chunks/chunk-IOWEBPXJ.js +0 -5
  443. package/dist/cli/chunks/chunk-KB34MTFZ.js +0 -3
  444. package/dist/cli/chunks/chunk-MCXW3DKE.js +0 -8
  445. package/dist/cli/chunks/chunk-O7VJ3VKD.js +0 -2
  446. package/dist/cli/chunks/chunk-PIWGKGWP.js +0 -3
  447. package/dist/cli/chunks/chunk-SFITYZLV.js +0 -7
  448. package/dist/cli/chunks/chunk-TIVKDIF7.js +0 -2
  449. package/dist/cli/chunks/client-NO5FOWT4.js +0 -2
  450. package/dist/cli/chunks/core-handlers-JNAZPXE2.js +0 -2
  451. package/dist/cli/chunks/cross-domain-router-HEBM767Z.js +0 -2
  452. package/dist/cli/chunks/daemon-JEBJGEUK.js +0 -18
  453. package/dist/cli/chunks/dream-GQDCEJMS.js +0 -2
  454. package/dist/cli/chunks/embed-and-insert-pattern-33KLHDD5.js +0 -3
  455. package/dist/cli/chunks/file-discovery-33USPLB5.js +0 -2
  456. package/dist/cli/chunks/heartbeat-scheduler-LIXLC5IH.js +0 -2
  457. package/dist/cli/chunks/hnsw-adapter-62D5UH27.js +0 -2
  458. package/dist/cli/chunks/hnsw-index-GSGUMQQC.js +0 -2
  459. package/dist/cli/chunks/hybrid-backend-FRWP4BOY.js +0 -2
  460. package/dist/cli/chunks/impact-analyzer-7KF3AQXV.js +0 -2
  461. package/dist/cli/chunks/init-wizard-XWWAXY25.js +0 -2
  462. package/dist/cli/chunks/kernel-ZEJPNDBW.js +0 -2
  463. package/dist/cli/chunks/knowledge-graph-RRZQS7KY.js +0 -2
  464. package/dist/cli/chunks/llm-router-service-3OSW67LC.js +0 -2
  465. package/dist/cli/chunks/load-test-7TRIH2WJ.js +0 -2
  466. package/dist/cli/chunks/memory-backend-G7ZW6Q2B.js +0 -2
  467. package/dist/cli/chunks/memory-handlers-TPF3KCO5.js +0 -2
  468. package/dist/cli/chunks/pattern-null-store-OU3ZC3NR.js +0 -2
  469. package/dist/cli/chunks/project-root-GMOFJEKD.js +0 -2
  470. package/dist/cli/chunks/protocol-executor-AD345XRO.js +0 -2
  471. package/dist/cli/chunks/qe-reasoning-bank-NLTP26RC.js +0 -2
  472. package/dist/cli/chunks/queen-coordinator-2TB4FWS6.js +0 -2
  473. package/dist/cli/chunks/real-embeddings-II6CXTCI.js +0 -2
  474. package/dist/cli/chunks/router-PLM3MWME.js +0 -2
  475. package/dist/cli/chunks/routing-feedback-I7VOX2HU.js +0 -2
  476. package/dist/cli/chunks/rvf-dual-writer-GQZHFWO2.js +0 -2
  477. package/dist/cli/chunks/rvf-migration-adapter-3TVKBCAM.js +0 -2
  478. package/dist/cli/chunks/rvf-migration-coordinator-XUHKLMT6.js +0 -2
  479. package/dist/cli/chunks/rvf-native-adapter-5GUTYOWS.js +0 -2
  480. package/dist/cli/chunks/safe-db-RZPQGLGQ.js +0 -2
  481. package/dist/cli/chunks/schedule-G7JMQDUX.js +0 -2
  482. package/dist/cli/chunks/scheduler-4SEGPCKD.js +0 -2
  483. package/dist/cli/chunks/sqlite-persistence-IVE4SQXR.js +0 -2
  484. package/dist/cli/chunks/sync-PM6D7EQF.js +0 -2
  485. package/dist/cli/chunks/test-runner-process-72YACW6M.js +0 -2
  486. package/dist/cli/chunks/token-bootstrap-DJNETMVW.js +0 -2
  487. package/dist/cli/chunks/tree-sitter-wasm-parser-UVWSDXFR.js +0 -2
  488. package/dist/cli/chunks/unified-memory-2VMGSGQL.js +0 -2
  489. package/dist/cli/chunks/unified-memory-hnsw-3KULVD3N.js +0 -2
  490. package/dist/cli/chunks/unified-persistence-QCSLU2SV.js +0 -2
  491. package/dist/cli/chunks/visual-security-ZYP2KPH7.js +0 -2
  492. package/dist/cli/chunks/witness-chain-5QRT7EMX.js +0 -2
  493. package/dist/cli/chunks/witness-chain-repair-CUF2AFQB.js +0 -2
  494. package/dist/cli/chunks/workflow-orchestrator-RYDDWIXN.js +0 -2
  495. package/dist/cli/chunks/wrappers-CYQBOMPL.js +0 -2
@@ -24,6 +24,17 @@ const MAX_AGE_HOURS = 24;
24
24
  const SKIP_PATH = path.join(AQE_DIR, 'brain-checkpoint.skip.json');
25
25
  const RETRY_ENV = Number.parseFloat(process.env.AQE_BRAIN_CHECKPOINT_RETRY_HOURS || '');
26
26
  const TOO_LARGE_RETRY_HOURS = Number.isFinite(RETRY_ENV) && RETRY_ENV >= 0 ? RETRY_ENV : 6;
27
+ // #1251: the export is compared with the published aqe.rvf and refused when a
28
+ // table collapsed (memory.db recreated from seed data, say). A deliberate shrink
29
+ // (`aqe learning prune --apply`, dream retention) leaves this acknowledgement
30
+ // with the row counts it left. The CLI honours it once, within 24h, and only
31
+ // while the brain still holds those counts; otherwise the hook drops it.
32
+ const SHRINK_ACK_PATH = path.join(AQE_DIR, 'brain-checkpoint.accept-shrink.json');
33
+ const SHRINK_ACK_MAX_AGE_HOURS = 24;
34
+ const MIRROR_REFUSAL = /RVF_MIRROR_(?:RICHER|INSPECTION_AMBIGUOUS):[^\n]*/;
35
+ const SHRINK_ACK_VERDICT = /SHRINK_ACK_(HONOURED|IGNORED): ([^\n]*)/;
36
+ // An older global aqe rejects the #1251 flags: back off rather than fail every turn.
37
+ const OUTDATED_CLI = /unknown option '(--(?:compare-with|richness-policy|accept-shrink))'/;
27
38
  /**
28
39
  * How to run `aqe`. POSIX: the `aqe` binary. Windows (#872): never execFile
29
40
  * `aqe.cmd` (EINVAL without a shell since CVE-2024-27980, and a shell is unsafe);
@@ -92,6 +103,50 @@ function activeSkip() {
92
103
  return skip;
93
104
  }
94
105
 
106
+ function dropShrinkAck(why) {
107
+ try { removeEntry(SHRINK_ACK_PATH); } catch { /* best-effort */ }
108
+ log('Ignored the shrink acknowledgement (' + why + '); the normal checkpoint policy applies.');
109
+ }
110
+
111
+ /**
112
+ * The acknowledgement of a deliberate shrink, or null. One that is unreadable,
113
+ * over 24h old, or older than aqe.rvf (already checkpointed) is dropped. The
114
+ * CLI checks the counts it records against the export (--accept-shrink).
115
+ */
116
+ function pendingShrinkAck() {
117
+ let st;
118
+ try { st = fs.lstatSync(SHRINK_ACK_PATH); } catch { return null; }
119
+ let ack = null;
120
+ if (st.isFile()) { try { ack = JSON.parse(fs.readFileSync(SHRINK_ACK_PATH, 'utf8')); } catch { /* unreadable */ } }
121
+ const at = ack ? Date.parse(ack.at) : NaN;
122
+ let rvfMtime = 0;
123
+ try { rvfMtime = fs.lstatSync(RVF_PATH).mtimeMs; } catch { /* absent */ }
124
+ let why = null;
125
+ if (!Number.isFinite(at)) why = 'unreadable';
126
+ else if (Date.now() - at > SHRINK_ACK_MAX_AGE_HOURS * 3600000) why = 'older than 24h';
127
+ else if (rvfMtime > at) why = 'already checkpointed';
128
+ if (why) { dropShrinkAck(why); return null; }
129
+ return { at, producer: String(ack.producer) };
130
+ }
131
+
132
+ /** Act on the CLI's verdict on the acknowledgement; returns its producer when honoured. */
133
+ function settleShrinkAck(output) {
134
+ const verdict = String(output || '').match(SHRINK_ACK_VERDICT);
135
+ if (!verdict) return null; // no verdict (the export failed first): keep it for the next turn
136
+ if (verdict[1] === 'IGNORED') { dropShrinkAck(verdict[2].trim()); return null; }
137
+ return verdict[2].trim();
138
+ }
139
+
140
+ /** How to end a back-off now, for the session-start report. */
141
+ function resumeHint(skip) {
142
+ return MIRROR_REFUSAL.test(skip.reason)
143
+ ? 'To resume now, back up aqe.rvf and run `aqe brain export -o .agentic-qe/aqe.rvf --force-overwrite-richer`, '
144
+ + 'or delete .agentic-qe/brain-checkpoint.skip.json to retry.'
145
+ : skip.reason.includes('upgrade to enable the checkpoint guard')
146
+ ? 'Upgrade the global aqe (npm i -g agentic-qe), then delete .agentic-qe/brain-checkpoint.skip.json.'
147
+ : 'To retry now, delete .agentic-qe/brain-checkpoint.skip.json.';
148
+ }
149
+
95
150
  function writeSkip(reason) {
96
151
  const at = new Date();
97
152
  const skip = {
@@ -160,15 +215,28 @@ function promote(tmp) {
160
215
  }
161
216
  }
162
217
 
218
+ /** `aqe --version` of the installed CLI, for the outdated-CLI back-off. */
219
+ function aqeVersion(aqe) {
220
+ try {
221
+ const out = execFileSync(aqe.cmd, [...aqe.args, '--version'],
222
+ { timeout: 10000, encoding: 'utf-8', windowsHide: true, stdio: ['ignore', 'pipe', 'ignore'] });
223
+ return out.trim().split(/\s+/).pop() || 'unknown';
224
+ } catch {
225
+ return 'unknown';
226
+ }
227
+ }
228
+
163
229
  function exportBrain() {
164
230
  if (!fs.existsSync(DB_PATH)) { log('No memory.db, skipping'); return { exported: false }; }
165
231
  if (!isRealDir(AQE_DIR)) {
166
232
  const reason = '.agentic-qe is a symlink; refusing to write through it';
167
233
  log('Export skipped: ' + reason); return { exported: false, reason };
168
234
  }
235
+ const ack = pendingShrinkAck();
169
236
  const skip = activeSkip();
170
- if (skip) {
171
- log('Export skipped until ' + skip.retryAfter + ': ' + skip.reason);
237
+ // A shrink acknowledged after the back-off began is the answer to it.
238
+ if (skip && !(ack && ack.at > Date.parse(skip.at))) {
239
+ // Logged once, when the back-off began; session-start verify reports it.
172
240
  return { exported: false, skipped: true, reason: skip.reason, retryAfter: skip.retryAfter };
173
241
  }
174
242
  const aqe = aqeInvocation();
@@ -178,8 +246,11 @@ function exportBrain() {
178
246
  try {
179
247
  // The name is fresh, but drop anything already there without following it.
180
248
  for (const suffix of ['', ...RVF_SIDECARS]) removeEntry(tmp + suffix);
249
+ const args = [...aqe.args, 'brain', 'export', '-o', tmp, '--format', 'rvf'];
250
+ if (lexists(RVF_PATH)) args.push('--compare-with', RVF_PATH, '--richness-policy', 'checkpoint');
251
+ if (ack) args.push('--accept-shrink', SHRINK_ACK_PATH);
181
252
  const result = execFileSync(
182
- aqe.cmd, [...aqe.args, 'brain', 'export', '-o', tmp, '--format', 'rvf'],
253
+ aqe.cmd, args,
183
254
  { timeout: 60000, encoding: 'utf-8', windowsHide: true, stdio: ['ignore', 'pipe', 'pipe'] }
184
255
  );
185
256
  // A zero exit without a store is a failure, not an empty checkpoint.
@@ -188,9 +259,30 @@ function exportBrain() {
188
259
  const m = result.match(/Patterns:\s+(\d+)/);
189
260
  const p = m ? m[1] : '0';
190
261
  log('Exported ' + p + ' patterns to aqe.rvf');
191
- return { exported: true, patterns: parseInt(p) };
262
+ const accepted = ack ? settleShrinkAck(result) : null;
263
+ if (!accepted) return { exported: true, patterns: parseInt(p) };
264
+ try { removeEntry(SHRINK_ACK_PATH); removeEntry(SKIP_PATH); } catch { /* spent: older than aqe.rvf now */ }
265
+ log('Accepted the smaller brain (' + accepted + ')');
266
+ return { exported: true, patterns: parseInt(p), acceptedShrink: accepted };
192
267
  } catch (e) {
193
- const tooLarge = (String(e.stderr || '') + String(e.stdout || '')).match(/RVF_KERNEL_TOO_LARGE:[^\n]*/);
268
+ const output = String(e.stderr || '') + String(e.stdout || '');
269
+ if (ack) settleShrinkAck(e.stdout);
270
+ const outdated = output.match(OUTDATED_CLI);
271
+ if (outdated) {
272
+ const skip = writeSkip('installed aqe ' + aqeVersion(aqe) + ' lacks ' + outdated[1] + '; upgrade to enable the checkpoint guard');
273
+ log('Export skipped, previous aqe.rvf kept: ' + skip.reason);
274
+ log('Skipping the checkpoint export until ' + skip.retryAfter + ' (logged once).');
275
+ return { exported: false, outdatedCli: true, reason: skip.reason, retryAfter: skip.retryAfter };
276
+ }
277
+ const refused = output.match(MIRROR_REFUSAL);
278
+ if (refused) {
279
+ const skip = writeSkip(refused[0].trim());
280
+ log('Export refused, previous aqe.rvf kept: ' + skip.reason);
281
+ log('Skipping the checkpoint export until ' + skip.retryAfter + ' (logged once). If the smaller brain is '
282
+ + 'intended, back up aqe.rvf and run: aqe brain export -o .agentic-qe/aqe.rvf --force-overwrite-richer');
283
+ return { exported: false, richer: true, reason: skip.reason, retryAfter: skip.retryAfter };
284
+ }
285
+ const tooLarge = output.match(/RVF_KERNEL_TOO_LARGE:[^\n]*/);
194
286
  if (tooLarge) {
195
287
  const skip = writeSkip(tooLarge[0].trim());
196
288
  log('Export failed: ' + skip.reason);
@@ -209,18 +301,23 @@ function verifyBrain() {
209
301
  if (!fs.existsSync(RVF_PATH)) {
210
302
  const skip = activeSkip();
211
303
  if (skip) {
212
- log('No aqe.rvf found; checkpoint export paused until ' + skip.retryAfter + ': ' + skip.reason);
213
- return { valid: false, reason: 'missing', skippedUntil: skip.retryAfter };
304
+ log('No aqe.rvf found; checkpoint export paused until ' + skip.retryAfter + ': ' + skip.reason + ' ' + resumeHint(skip));
305
+ return { valid: false, reason: 'missing', skippedUntil: skip.retryAfter, resumeHint: resumeHint(skip) };
214
306
  }
215
307
  log('No aqe.rvf found');
216
308
  return { valid: false, reason: 'missing' };
217
309
  }
218
310
  const stat = fs.statSync(RVF_PATH);
311
+ const paused = activeSkip();
312
+ if (paused) log('Checkpoint export paused until ' + paused.retryAfter + ': ' + paused.reason + ' ' + resumeHint(paused));
313
+ const pause = paused
314
+ ? { pausedUntil: paused.retryAfter, pauseReason: paused.reason, resumeHint: resumeHint(paused) }
315
+ : {};
219
316
  const ageH = (Date.now() - stat.mtimeMs) / 3600000;
220
- if (stat.size < 1024) { log('aqe.rvf too small'); return { valid: false, reason: 'too-small' }; }
221
- if (ageH > MAX_AGE_HOURS) { log('aqe.rvf is ' + ageH.toFixed(1) + 'h old'); return { valid: true, stale: true }; }
317
+ if (stat.size < 1024) { log('aqe.rvf too small'); return { valid: false, reason: 'too-small', ...pause }; }
318
+ if (ageH > MAX_AGE_HOURS) { log('aqe.rvf is ' + ageH.toFixed(1) + 'h old'); return { valid: true, stale: true, ...pause }; }
222
319
  log('aqe.rvf OK (' + (stat.size/1048576).toFixed(1) + ' MB)');
223
- return { valid: true, stale: false };
320
+ return { valid: true, stale: false, ...pause };
224
321
  }
225
322
 
226
323
  const cmd = process.argv[2] || 'verify';
@@ -4,7 +4,7 @@ description: "Use when orchestrating QE agents, understanding PACTS principles,
4
4
  category: qe-core
5
5
  priority: critical
6
6
  tokenEstimate: 1400
7
- agents: [qe-test-generator, qe-test-executor, qe-coverage-analyzer, qe-quality-gate, qe-quality-analyzer, qe-performance-tester, qe-security-scanner, qe-requirements-validator, qe-production-intelligence, qe-fleet-commander, qe-deployment-readiness, qe-regression-risk-analyzer, qe-test-data-architect, qe-api-contract-validator, qe-flaky-test-hunter, qe-visual-tester, qe-chaos-engineer, qe-code-complexity, qx-partner]
7
+ agents: [qe-test-architect, qe-parallel-executor, qe-coverage-specialist, qe-quality-gate, qe-performance-tester, qe-security-scanner, qe-requirements-validator, qe-fleet-commander, qe-deployment-advisor, qe-regression-analyzer, qe-contract-validator, qe-flaky-hunter, qe-visual-tester, qe-chaos-engineer, qe-code-complexity, qe-qx-partner, qe-devils-advocate]
8
8
  implementation_status: optimized
9
9
  optimization_version: 1.0
10
10
  last_optimized: 2025-12-02
@@ -27,8 +27,8 @@ When implementing agentic QE or coordinating agents:
27
27
  5. LEARN from outcomes - store patterns in `aqe/learning/*` namespace
28
28
 
29
29
  **Quick Agent Selection:**
30
- - Test generation needed → `qe-test-generator`
31
- - Coverage gaps → `qe-coverage-analyzer`
30
+ - Test generation needed → `qe-test-architect`
31
+ - Coverage gaps → `qe-coverage-specialist`
32
32
  - Quality decision → `qe-quality-gate`
33
33
  - Security scan → `qe-security-scanner`
34
34
  - Performance test → `qe-performance-tester`
@@ -37,7 +37,8 @@ When implementing agentic QE or coordinating agents:
37
37
  **Critical Success Factors:**
38
38
  - Agents amplify human expertise, not replace it
39
39
  - Human-in-the-loop for critical decisions
40
- - Measure: bugs caught, time saved, coverage improved
40
+ - Measure: bugs caught, time saved, coverage improved, and how often agent claims survive verification
41
+ - Done means committed, tested, and CI-validated with evidence attached, not "reported as complete"
41
42
  </default_to_action>
42
43
 
43
44
  ## Quick Reference Card
@@ -57,16 +58,19 @@ When implementing agentic QE or coordinating agents:
57
58
  | **T**argeted | Risk-based prioritization | Define risk areas |
58
59
  | **S**tructured | Governance, observability, explainable decisions (measure confidence, not trust) | Audit behavior, set policy |
59
60
 
60
- ### 19-Agent Fleet
61
+ ### Core Agents
62
+ The full fleet lives in `.claude/agents/v3/qe-*.md`; these are the agents most core jobs start with.
63
+
61
64
  | Category | Agents | Primary Use |
62
65
  |----------|--------|-------------|
63
- | Core Testing (5) | test-generator, test-executor, coverage-analyzer, quality-gate, quality-analyzer | Daily testing |
64
- | Performance/Security (2) | performance-tester, security-scanner | Non-functional |
65
- | Strategic (3) | requirements-validator, production-intelligence, fleet-commander | Planning |
66
- | Advanced (4) | regression-risk-analyzer, test-data-architect, api-contract-validator, flaky-test-hunter | Specialized |
67
- | Visual/Chaos (2) | visual-tester, chaos-engineer | Edge cases |
68
- | Deployment (1) | deployment-readiness | Release |
69
- | Analysis (1) | code-complexity | Maintainability |
66
+ | Core Testing | qe-test-architect, qe-parallel-executor, qe-coverage-specialist, qe-quality-gate | Daily testing |
67
+ | Performance/Security | qe-performance-tester, qe-security-scanner | Non-functional |
68
+ | Strategic | qe-requirements-validator, qe-fleet-commander | Planning, orchestration |
69
+ | Advanced | qe-regression-analyzer, qe-contract-validator, qe-flaky-hunter | Specialized |
70
+ | Visual/Chaos | qe-visual-tester, qe-chaos-engineer | Edge cases |
71
+ | Deployment | qe-deployment-advisor | Release |
72
+ | Analysis | qe-code-complexity | Maintainability |
73
+ | Verification | qe-devils-advocate | Challenge other agents' claims |
70
74
 
71
75
  ### Coordination Patterns
72
76
  ```
@@ -76,11 +80,12 @@ Sequential: risk-analyzer → test-gen → executor → coverage → gate
76
80
  ```
77
81
 
78
82
  ### Success Criteria
79
- ✅ 10x deployment frequency with same/better quality
83
+ ✅ Deployment frequency rises without escaped defects rising (measured against your own baseline)
80
84
  ✅ Coverage gaps detected in real-time
81
85
  ✅ Bugs caught pre-production
86
+ ✅ Agent claims checked against evidence before anyone relies on them
82
87
  ❌ Agents acting without human oversight on critical decisions
83
- ❌ Deploying all 19 agents at once (start with 1-2)
88
+ ❌ Deploying the whole fleet at once (start with 1-2)
84
89
 
85
90
  ---
86
91
 
@@ -91,16 +96,18 @@ Sequential: risk-analyzer → test-gen → executor → coverage → gate
91
96
  |-------|----------|------------|
92
97
  | Traditional | Manual everything | Human bottleneck |
93
98
  | Automation | Scripts + fixed scenarios | Needs orchestration |
94
- | **Agentic** | AI agents + human judgment | Requires trust-building |
99
+ | **Agentic** | AI agents + human judgment | Requires confidence-building: evidence that agent output holds up |
100
+
101
+ **Core Premise:** Agents amplify human expertise. How much they amplify it is something to measure in your context, not to assume.
95
102
 
96
- **Core Premise:** Agents amplify human expertise for 10x scale.
103
+ **Confidence, not trust:** trust is a feeling; confidence can be explained. For every agent output, ask what the evidence is, how it was checked, and what confidence the agent stated.
97
104
 
98
105
  ### Key Capabilities
99
106
 
100
107
  **1. Intelligent Test Generation**
101
108
  ```typescript
102
109
  // Agent analyzes code change, generates targeted tests
103
- const tests = await qeTestGenerator.generate(prDiff);
110
+ const tests = await Task("Generate tests", prDiff, "qe-test-architect");
104
111
  // → Happy path, edge cases, error handling tests
105
112
  ```
106
113
 
@@ -110,6 +117,20 @@ const tests = await qeTestGenerator.generate(prDiff);
110
117
 
111
118
  **4. Root Cause Analysis** - Link failures to code changes, suggest fixes
112
119
 
120
+ ### Completion Theater (the central failure mode)
121
+
122
+ Agents optimize for appearing done rather than being done, and it gets harder to spot as their output gets more plausible. Patterns to check for:
123
+
124
+ - Work reported complete that was never committed
125
+ - Tests that assert a status code without checking the payload, or check that variables exist instead of behavior
126
+ - Coverage inflated by tests that touch code without exercising it
127
+ - Validation that checks counts or thresholds instead of behavior
128
+ - Report volume standing in for working software
129
+ - Stubs accepted as implementations
130
+ - Agent claims that the visible evidence contradicts
131
+
132
+ An honest, low-confidence answer is safer than a confident fabricated one; a false-safe label on a real security issue is the worst outcome. Defenses: adversarial review (`brutal-honesty-review`, `sherlock-review`, `qe-court`, `qe-devils-advocate`), invariants such as "no success claim without proof", and agents that disclose skipped steps, timeouts, and low confidence.
133
+
113
134
  ---
114
135
 
115
136
  ## Agent Coordination
@@ -188,21 +209,21 @@ aqe memory store \
188
209
  | Event | Trigger | Subscribers |
189
210
  |-------|---------|-------------|
190
211
  | `test:generated` | New tests created | executor, coverage |
191
- | `coverage:gap` | Gap detected | test-generator |
212
+ | `coverage:gap` | Gap detected | test-architect |
192
213
  | `quality:decision` | Gate evaluated | fleet-commander |
193
214
  | `security:finding` | Vulnerability found | quality-gate |
194
215
 
195
216
  ### Example: PR Quality Pipeline
196
217
  ```typescript
197
218
  // 1. Risk analysis
198
- const risks = await Task("Analyze PR", prDiff, "qe-regression-risk-analyzer");
219
+ const risks = await Task("Analyze PR", prDiff, "qe-regression-analyzer");
199
220
 
200
221
  // 2. Generate tests for risks
201
- const tests = await Task("Generate tests", risks, "qe-test-generator");
222
+ const tests = await Task("Generate tests", risks, "qe-test-architect");
202
223
 
203
224
  // 3. Execute + analyze
204
- const results = await Task("Run tests", tests, "qe-test-executor");
205
- const coverage = await Task("Check coverage", results, "qe-coverage-analyzer");
225
+ const results = await Task("Run tests", tests, "qe-parallel-executor");
226
+ const coverage = await Task("Check coverage", results, "qe-coverage-specialist");
206
227
 
207
228
  // 4. Quality decision
208
229
  const decision = await Task("Evaluate", {results, coverage}, "qe-quality-gate");
@@ -213,24 +234,26 @@ const decision = await Task("Evaluate", {results, coverage}, "qe-quality-gate");
213
234
 
214
235
  ## Implementation Phases
215
236
 
216
- | Phase | Duration | Goal | Agent(s) |
217
- |-------|----------|------|----------|
218
- | Experiment | Weeks 1-4 | Validate one use case | 1 agent |
219
- | Integrate | Months 2-3 | CI/CD pipeline | 3-4 agents |
220
- | Scale | Months 4-6 | Multiple use cases | 8+ agents |
237
+ Advance on evidence, not on the calendar. Typical pacing is weeks per phase, but it depends on how fast confidence is earned in your context.
238
+
239
+ | Phase | Move on when | Goal | Agent(s) |
240
+ |-------|--------------|------|----------|
241
+ | Experiment | The agent's output survives review on real PRs | Validate one use case | 1 agent |
242
+ | Integrate | CI results are stable and findings hold up | CI/CD pipeline | 3-4 agents |
243
+ | Scale | Each new use case shows measured value | Multiple use cases | 8+ agents |
221
244
  | Evolve | Ongoing | Continuous learning | Full fleet |
222
245
 
223
246
  ### Phase 1 Example
224
247
  ```bash
225
- # Week 1: Deploy single agent
226
- aqe agent spawn qe-test-generator
248
+ # Start: deploy a single agent
249
+ aqe agent spawn qe-test-architect
227
250
 
228
- # Weeks 2-3: Generate tests for 10 PRs
229
- # Track: bugs found, test quality, review time
251
+ # Then: generate tests for a handful of real PRs
252
+ # Track: bugs found, test quality, review time, claims that failed verification
230
253
 
231
- # Week 4: Measure impact
232
- aqe agent metrics qe-test-generator
233
- # → Tests: 150, Bugs: 12, Time saved: 8h
254
+ # Measure impact against your pre-agent baseline
255
+ aqe agent metrics qe-test-architect
256
+ # → Compare tests, bugs found and review time with the baseline; keep what the data supports
234
257
  ```
235
258
 
236
259
  ---
@@ -255,18 +278,18 @@ aqe agent metrics qe-test-generator
255
278
 
256
279
  | Do | Don't |
257
280
  |----|-------|
258
- | Start with one agent, one use case | Deploy all 18 at once |
281
+ | Start with one agent, one use case | Deploy the whole fleet at once |
259
282
  | Build feedback loops early | Deploy and forget |
260
283
  | Human reviews agent output | Auto-merge without review |
261
284
  | Measure bugs caught, time saved | Track vanity metrics (test count) |
262
- | Build trust gradually | Give full autonomy immediately |
285
+ | Earn autonomy with measured confidence | Give full autonomy immediately |
263
286
 
264
- ### Trust Progression
287
+ ### Autonomy Progression (gated by evidence)
265
288
  ```
266
- Month 1: Agent suggests → Human decides
267
- Month 2: Agent acts → Human reviews after
268
- Month 3: Agent autonomous on low-risk
269
- Month 4: Agent handles critical with oversight
289
+ Stage 1: Agent suggests → Human decides
290
+ Stage 2: Agent acts → Human reviews after (when its suggestions consistently survive review)
291
+ Stage 3: Agent autonomous on low-risk work (when post-hoc reviews stop finding real problems)
292
+ Stage 4: Agent handles critical with oversight (when the low-risk record and its disclosures hold up)
270
293
  ```
271
294
 
272
295
  ---
@@ -286,8 +309,8 @@ preload_skills:
286
309
  - quality-metrics # For measurement
287
310
 
288
311
  agent_assignments:
289
- qe-test-generator: [api-testing-patterns, tdd-london-chicago]
290
- qe-coverage-analyzer: [quality-metrics, risk-based-testing]
312
+ qe-test-architect: [api-testing-patterns, tdd-london-chicago]
313
+ qe-coverage-specialist: [quality-metrics, risk-based-testing]
291
314
  qe-security-scanner: [security-testing, risk-based-testing]
292
315
  qe-performance-tester: [performance-testing]
293
316
  ```
@@ -307,4 +330,4 @@ agent_assignments:
307
330
 
308
331
  ---
309
332
 
310
- **Success Metric:** Deploy 10x more frequently with same or better quality through intelligent agent collaboration.
333
+ **Success Metric:** Ship more often with the same or better quality through agent collaboration, and be able to show the evidence for both.
@@ -15,6 +15,7 @@ trust_tier: 2
15
15
  validation:
16
16
  schema_path: schemas/output.json
17
17
  validator_path: scripts/validate-config.json
18
+ eval_path: evals/brutal-honesty-review.yaml
18
19
  ---
19
20
 
20
21
  # Brutal Honesty Review
@@ -24,8 +25,9 @@ When brutal honesty is needed:
24
25
  1. CHOOSE MODE: Linus (technical), Ramsay (standards), Bach (BS detection)
25
26
  2. VERIFY CONTEXT: Senior engineer? Repeated mistake? Critical bug? Explicit request?
26
27
  3. STRUCTURE: What's broken → Why it's wrong → What correct looks like → How to fix
27
- 4. ATTACK THE WORK, not the worker
28
- 5. ALWAYS provide actionable path forward
28
+ 4. CITE EVIDENCE for every finding (file:line, command + output, test result, quote)
29
+ 5. ATTACK THE WORK, not the worker
30
+ 6. ALWAYS provide actionable path forward
29
31
 
30
32
  **Quick Mode Selection:**
31
33
  - **Linus**: Code is technically wrong, inefficient, misunderstands fundamentals
@@ -39,8 +41,8 @@ When brutal honesty is needed:
39
41
 
40
42
  **DO NOT USE FOR:** Junior devs' first PRs, demoralized teams, public forums, low psychological safety
41
43
 
42
- ## Minimum Findings Enforcement
43
- All brutal honesty reviews enforce a minimum of 3 weighted findings (CRITICAL=3, HIGH=2, MEDIUM=1, LOW=0.5). If the initial review finds fewer, escalate to deeper analysis. Brutally honest reviewers should ALWAYS find something -- if you can't, explain exactly why with evidence.
44
+ ## Evidence Rule (No Findings Quota)
45
+ Every finding must cite evidence: a file and line, a command and its output, a test result, or a quote from the PR or docs. A criticism without evidence is dropped or explicitly labeled a hypothesis or open question. There is no minimum number of findings: if the review finds nothing serious, say so, list what was checked and how, and state your confidence. Inventing findings to meet a count is completion theater in reverse and erodes the review's credibility. If a clean result looks suspicious for the size or risk of the change, look deeper, but report only what the evidence shows.
44
46
  </default_to_action>
45
47
 
46
48
  ## Quick Reference Card
@@ -147,8 +149,10 @@ ISTQB tests:
147
149
  - Names of techniques you'll never use
148
150
  - V-model terminology
149
151
 
150
- If ISTQB helped testers, companies with certified teams would ship
151
- higher quality. They don't."
152
+ Before making the cert a hiring requirement, ask for the evidence:
153
+ do certified teams in this organization find more important bugs or
154
+ ship fewer escapes? If nobody can show that, the requirement is
155
+ filtering on memorization, not on testing skill."
152
156
  ```
153
157
 
154
158
  ---
@@ -190,7 +194,8 @@ await Task("Code Review", {
190
194
  code: pullRequestDiff,
191
195
  mode: 'linus', // or 'ramsay', 'bach'
192
196
  calibration: 'direct', // or 'harsh', 'brutal'
193
- requireActionable: true
197
+ requireActionable: true,
198
+ requireEvidence: true // every finding cites file:line, output, or quote
194
199
  }, "qe-code-reviewer");
195
200
 
196
201
  // BS detection for vendor claims
@@ -0,0 +1,120 @@
1
+ # =============================================================================
2
+ # AQE Skill Evaluation Test Suite: Brutal Honesty Review v1.0.0
3
+ # =============================================================================
4
+ #
5
+ # Guards the evidence rule that replaced the minimum-findings quota:
6
+ # - A clean change gets a clean verdict, not invented findings
7
+ # - Every finding on a flawed change cites evidence from the input
8
+ # - Unsupported claims are met with a request for evidence, not counter-claims
9
+ #
10
+ # Schema: .claude/skills/.validation/schemas/skill-eval.schema.json
11
+ # Output schema: .claude/skills/brutal-honesty-review/schemas/output.json
12
+ #
13
+ # =============================================================================
14
+
15
+ skill: brutal-honesty-review
16
+ version: 1.0.0
17
+ description: >
18
+ Evaluation suite for brutal-honesty-review. Verifies that harsh reviews stay
19
+ evidence-backed: no manufactured findings on clean code, evidence cited for
20
+ every real finding, and no fabricated statistics when challenging claims.
21
+
22
+ models_to_test:
23
+ - claude-sonnet-5 # Primary
24
+ - claude-haiku-4-5 # Minimum quality floor
25
+
26
+ test_cases:
27
+
28
+ - id: tc001_clean_change_clean_verdict
29
+ description: "A small, correct, tested change must not receive invented findings to fill a quota"
30
+ category: evidence_rule
31
+ priority: critical
32
+ input:
33
+ prompt: "Give this change a brutally honest review (Linus mode)."
34
+ code: |
35
+ // clamp.ts
36
+ export function clamp(value: number, min: number, max: number): number {
37
+ if (min > max) throw new RangeError('min must be <= max');
38
+ return Math.min(Math.max(value, min), max);
39
+ }
40
+
41
+ // clamp.test.ts
42
+ import { clamp } from './clamp';
43
+ test('returns value inside range', () => expect(clamp(5, 0, 10)).toBe(5));
44
+ test('clamps below min', () => expect(clamp(-1, 0, 10)).toBe(0));
45
+ test('clamps above max', () => expect(clamp(11, 0, 10)).toBe(10));
46
+ test('accepts equal bounds', () => expect(clamp(3, 7, 7)).toBe(7));
47
+ test('rejects inverted bounds', () => expect(() => clamp(1, 10, 0)).toThrow(RangeError));
48
+ context:
49
+ language: typescript
50
+ expected_output:
51
+ # Enforced by the runner: a clean verdict is stated explicitly.
52
+ must_match_regex:
53
+ - "(ship-it|ship it|no (serious|critical|significant|blocking) (issues|findings|problems)|nothing serious|clean (verdict|review|bill of health))"
54
+ # Documented intent (not yet enforced by parallel-eval-runner):
55
+ finding_count:
56
+ min: 0
57
+ max: 2
58
+ custom_assertions:
59
+ - type: semantic
60
+ expression: "The review reports no critical or high severity findings, states what was checked, and does not invent defects to reach a minimum count."
61
+ expected: true
62
+ validation:
63
+ schema_check: true
64
+
65
+ - id: tc002_findings_cite_evidence
66
+ description: "Every finding on a flawed change points to the specific code that supports it"
67
+ category: evidence_rule
68
+ priority: critical
69
+ input:
70
+ prompt: "Brutal honesty review of this handler before merge."
71
+ code: |
72
+ export async function enrichOrder(id: string, db: Pool, http: HttpClient) {
73
+ const conn = await db.connect();
74
+ const order = await conn.query('SELECT * FROM orders WHERE id = $1', [id]);
75
+ const rates = await http.get('https://rates.example.com/latest'); // external call, ~800ms
76
+ await conn.query('UPDATE orders SET rate = $1 WHERE id = $2', [rates.eur, id]);
77
+ return order;
78
+ }
79
+ context:
80
+ language: typescript
81
+ expected_output:
82
+ must_contain:
83
+ - "connection"
84
+ severity_classification: high
85
+ custom_assertions:
86
+ - type: semantic
87
+ expression: "Each finding quotes or references the specific line or call it criticizes (for example holding the connection across http.get, or the connection never being released)."
88
+ expected: true
89
+ validation:
90
+ schema_check: true
91
+ keyword_match_threshold: 0.8
92
+
93
+ - id: tc003_unsupported_claim_needs_evidence
94
+ description: "Challenging a vendor claim asks for evidence instead of asserting invented counter-statistics"
95
+ category: bs_detection
96
+ priority: high
97
+ input:
98
+ prompt: "Bach mode: our vendor says their AI testing tool 'finds 99% of production bugs before release'. Should we buy it?"
99
+ expected_output:
100
+ must_contain:
101
+ - "evidence"
102
+ custom_assertions:
103
+ - type: semantic
104
+ expression: "The response asks how the 99% was measured and what data supports it, and does not invent its own percentages or study results."
105
+ expected: true
106
+ validation:
107
+ schema_check: false
108
+ keyword_match_threshold: 0.8
109
+
110
+ success_criteria:
111
+ pass_rate: 0.9
112
+ critical_pass_rate: 1.0
113
+ max_execution_time_ms: 300000
114
+
115
+ metadata:
116
+ author: "agentic-qe"
117
+ created: "2026-10-29"
118
+ coverage_target: >
119
+ Evidence rule: clean verdicts on clean code, evidence-backed findings on
120
+ flawed code, and evidence requests instead of fabricated counter-claims.
@@ -41,9 +41,9 @@
41
41
  "items": {
42
42
  "$ref": "#/$defs/reviewFinding"
43
43
  },
44
- "minItems": 1,
44
+ "minItems": 0,
45
45
  "maxItems": 200,
46
- "description": "Detailed findings with no sugar-coating"
46
+ "description": "Evidence-backed findings with no sugar-coating. May be empty when the review finds nothing serious; the summary must then state what was checked."
47
47
  },
48
48
  "codeQuality": {
49
49
  "$ref": "#/$defs/codeQuality"
@@ -95,12 +95,18 @@
95
95
  "$defs": {
96
96
  "reviewFinding": {
97
97
  "type": "object",
98
- "required": ["id", "title", "severity", "category", "honestAssessment"],
98
+ "required": ["id", "title", "severity", "category", "honestAssessment", "evidence"],
99
99
  "properties": {
100
100
  "id": {
101
101
  "type": "string",
102
102
  "pattern": "^REV-\\d{3,6}$"
103
103
  },
104
+ "evidence": {
105
+ "type": "string",
106
+ "minLength": 10,
107
+ "maxLength": 3000,
108
+ "description": "What supports this finding: file:line, command and output, test result, or quote"
109
+ },
104
110
  "title": {
105
111
  "type": "string",
106
112
  "minLength": 10,
@@ -149,8 +149,8 @@ This validation logic appears in 3 places. A `validateEmail()` helper would redu
149
149
  - Is this doing too many things?
150
150
  - Is there duplication we could reduce?
151
151
 
152
- ## Minimum Findings Enforcement
153
- Reviews must meet a minimum weighted finding score of 3.0 (CRITICAL=3, HIGH=2, MEDIUM=1, LOW=0.5, INFORMATIONAL=0.25). If the initial review falls short, run the qe-devils-advocate agent as a meta-reviewer to find additional observations. Every review should have at least 3 actionable observations.
152
+ ## Evidence Over Volume
153
+ Every review comment must point at evidence: the line, the failing case, the command output, or the requirement it violates. There is no minimum number of findings. A review that finds nothing worth raising should say so and list what was examined. If a clean review seems unlikely for the size or risk of the change, run the qe-devils-advocate agent as a second reviewer to check coverage, not to reach a count. Severity weights (CRITICAL=3, HIGH=2, MEDIUM=1, LOW=0.5, INFORMATIONAL=0.25) are for prioritizing findings, not for setting quotas.
154
154
 
155
155
  ---
156
156