agentic-qe 3.15.5 → 3.15.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 (536) hide show
  1. package/.claude/skills/qe-court/evals/fixtures/seeded-mutant-delivery/README.md +9 -2
  2. package/.claude/skills/qe-court/evals/qe-court.yaml +3 -2
  3. package/.claude/skills/qe-quality-assessment/schemas/output.json +12 -2
  4. package/.claude/skills/skills-manifest.json +1 -1
  5. package/CHANGELOG.md +121 -0
  6. package/assets/skills/qe-court/evals/fixtures/seeded-mutant-delivery/README.md +9 -2
  7. package/assets/skills/qe-court/evals/qe-court.yaml +3 -2
  8. package/assets/skills/qe-quality-assessment/schemas/output.json +12 -2
  9. package/assets/skills/skills-manifest.json +1 -1
  10. package/dist/cli/bundle.js +5 -5
  11. package/dist/cli/chunks/adapter-PP3XIXDV.js +2 -0
  12. package/dist/cli/chunks/{agent-booster-wasm-CCTTGCQS.js → agent-booster-wasm-SY7UCLBL.js} +2 -2
  13. package/dist/cli/chunks/{agent-handler-DHYUF3NX.js → agent-handler-KAMYBU3S.js} +2 -2
  14. package/dist/cli/chunks/{agent-memory-branch-642W7CYX.js → agent-memory-branch-2CAW3KUM.js} +2 -2
  15. package/dist/cli/chunks/aqe-learning-engine-VDUQJKKY.js +2 -0
  16. package/dist/cli/chunks/{arena-NW2JVAFY.js → arena-4OFLJ3R2.js} +2 -2
  17. package/dist/cli/chunks/{arena-MUCC7UUN.js → arena-QCCVIOAH.js} +4 -4
  18. package/dist/cli/chunks/{audit-VKQTZJAA.js → audit-RBDQJQJB.js} +3 -3
  19. package/dist/cli/chunks/base-QSYWWPCE.js +2 -0
  20. package/dist/cli/chunks/{better-sqlite3-7ZUFVWLQ.js → better-sqlite3-5JRACCDQ.js} +2 -2
  21. package/dist/cli/chunks/{brain-handler-7LKAWSBI.js → brain-handler-W4QIIRT4.js} +3 -3
  22. package/dist/cli/chunks/{branch-enumerator-HUNXJKM4.js → branch-enumerator-IBNGI572.js} +2 -2
  23. package/dist/cli/chunks/{browser-ZSZEYUDP.js → browser-GMSCVAOI.js} +2 -2
  24. package/dist/cli/chunks/browser-workflow-WXXPBSCM.js +2 -0
  25. package/dist/cli/chunks/{chunk-RUSLEOMC.js → chunk-22OZIJAD.js} +2 -2
  26. package/dist/cli/chunks/{chunk-WR64BKUE.js → chunk-24ZSGYC6.js} +1 -1
  27. package/dist/cli/chunks/{chunk-CR2JUANW.js → chunk-2CIDFR2H.js} +3 -3
  28. package/dist/cli/chunks/{chunk-SDWMLT7B.js → chunk-2IWPJUVV.js} +5 -5
  29. package/dist/cli/chunks/{chunk-VYDNLQJN.js → chunk-2ZTWPMTK.js} +2 -2
  30. package/dist/cli/chunks/{chunk-WN55MNZ2.js → chunk-34MDMFET.js} +2 -2
  31. package/dist/cli/chunks/{chunk-D3G2NN7F.js → chunk-3DJNKNBR.js} +66 -65
  32. package/dist/cli/chunks/{chunk-XQRE2HWM.js → chunk-3NJ7O3OH.js} +2 -2
  33. package/dist/cli/chunks/chunk-45MVRQG4.js +2 -0
  34. package/dist/cli/chunks/chunk-46HBVDMU.js +2 -0
  35. package/dist/cli/chunks/{chunk-MNQ36MAF.js → chunk-47Q7JL3V.js} +2 -2
  36. package/dist/cli/chunks/chunk-4CLDYT36.js +2 -0
  37. package/dist/cli/chunks/{chunk-ORTBRO7F.js → chunk-4KOVHQXK.js} +2 -2
  38. package/dist/cli/chunks/{chunk-B2UHTA4Q.js → chunk-4POOJYXA.js} +1 -1
  39. package/dist/cli/chunks/{chunk-QXY3IRBW.js → chunk-5DH5QI7G.js} +26 -26
  40. package/dist/cli/chunks/{chunk-7BIYJRQJ.js → chunk-5GIJU2ZY.js} +2 -2
  41. package/dist/cli/chunks/{chunk-6LG5UEQE.js → chunk-5HAPS6VD.js} +2 -2
  42. package/dist/cli/chunks/{chunk-OU4ZAWCC.js → chunk-5LST62QR.js} +2 -2
  43. package/dist/cli/chunks/{chunk-Y2E3IJ53.js → chunk-5MT7DMD7.js} +2 -2
  44. package/dist/cli/chunks/{chunk-6UYN5PHA.js → chunk-5NC7QEJ6.js} +4 -4
  45. package/dist/cli/chunks/{chunk-3DTEQHFB.js → chunk-5UPIL62W.js} +3 -3
  46. package/dist/cli/chunks/{chunk-YINFES3E.js → chunk-5VUIXDY2.js} +2 -2
  47. package/dist/cli/chunks/chunk-5VZVMO7B.js +3 -0
  48. package/dist/cli/chunks/{chunk-JCC7QEKZ.js → chunk-624QRKQX.js} +1 -1
  49. package/dist/cli/chunks/{chunk-HIUNCO2W.js → chunk-66NW3ZB4.js} +2 -2
  50. package/dist/cli/chunks/{chunk-4AZP7ZCW.js → chunk-6HWARQWV.js} +2 -2
  51. package/dist/cli/chunks/{chunk-LNO5IWGH.js → chunk-6MXAJBEA.js} +1 -1
  52. package/dist/cli/chunks/{chunk-XNEEYXR2.js → chunk-6R3FBFCJ.js} +2 -2
  53. package/dist/cli/chunks/{chunk-ZT3GUYM5.js → chunk-6RDVY26I.js} +2 -2
  54. package/dist/cli/chunks/{chunk-W3ZGNNDV.js → chunk-6T6AHVLF.js} +1 -1
  55. package/dist/cli/chunks/{chunk-JANLATHN.js → chunk-6WOZUSSN.js} +2 -2
  56. package/dist/cli/chunks/chunk-72MQCZSM.js +2 -0
  57. package/dist/cli/chunks/chunk-7QVPMH25.js +3 -0
  58. package/dist/cli/chunks/{chunk-HLFDC4SF.js → chunk-7SAMMQVS.js} +1 -1
  59. package/dist/cli/chunks/{chunk-644DFAGS.js → chunk-7TJZDRDU.js} +1 -1
  60. package/dist/cli/chunks/{chunk-BYXNHGQC.js → chunk-7TVIX4WL.js} +2 -2
  61. package/dist/cli/chunks/{chunk-FBEXG4HD.js → chunk-7VTKR44N.js} +2 -2
  62. package/dist/cli/chunks/{chunk-UE22ODHN.js → chunk-7XTANLTN.js} +1 -1
  63. package/dist/cli/chunks/chunk-7XUB7U6Z.js +4 -0
  64. package/dist/cli/chunks/{chunk-HPLMX62I.js → chunk-A74J23QB.js} +2 -2
  65. package/dist/cli/chunks/{chunk-VRJPH3LG.js → chunk-A7ANPS4E.js} +2 -2
  66. package/dist/cli/chunks/{chunk-IHFUEPZH.js → chunk-AJT3XDRD.js} +2 -2
  67. package/dist/cli/chunks/{chunk-EUEHBERE.js → chunk-ALCIUWFC.js} +1 -1
  68. package/dist/cli/chunks/{chunk-NMJVG22Z.js → chunk-AUN4FG7V.js} +1 -1
  69. package/dist/cli/chunks/{chunk-DWZI3IVB.js → chunk-AUOSHM63.js} +2 -2
  70. package/dist/cli/chunks/{chunk-7EZLOC4K.js → chunk-AX26QJ6T.js} +2 -2
  71. package/dist/cli/chunks/{chunk-PDPEMBFV.js → chunk-B7RHBKHL.js} +2 -2
  72. package/dist/cli/chunks/{chunk-DEGWCUMY.js → chunk-BAYGQRNP.js} +2 -2
  73. package/dist/cli/chunks/{chunk-ONCH5AXU.js → chunk-BIXRTOH3.js} +18 -18
  74. package/dist/cli/chunks/{chunk-U4TV75AC.js → chunk-BO7UFNYV.js} +2 -2
  75. package/dist/cli/chunks/{chunk-FNAYDITO.js → chunk-BUTGIVKW.js} +1 -1
  76. package/dist/cli/chunks/{chunk-HBYQYGXP.js → chunk-BXATKI5S.js} +2 -2
  77. package/dist/cli/chunks/{chunk-BO4PKNYP.js → chunk-CCL436IU.js} +32 -27
  78. package/dist/cli/chunks/{chunk-XIE7OHML.js → chunk-CEXNW5TR.js} +1 -1
  79. package/dist/cli/chunks/{chunk-663ZFPUL.js → chunk-CLAMMGY3.js} +2 -2
  80. package/dist/cli/chunks/{chunk-PVAE65B4.js → chunk-CR66HNAE.js} +1 -1
  81. package/dist/cli/chunks/{chunk-LRASYSGV.js → chunk-CZBIREL5.js} +2 -2
  82. package/dist/cli/chunks/{chunk-WLIYWBQR.js → chunk-D5N2O5EH.js} +2 -2
  83. package/dist/cli/chunks/{chunk-A337MD3C.js → chunk-DA7DGDTI.js} +2 -2
  84. package/dist/cli/chunks/{chunk-WC47GICZ.js → chunk-DLSFT6PO.js} +2 -2
  85. package/dist/cli/chunks/{chunk-KHCALIFP.js → chunk-DQNUPEY5.js} +2 -2
  86. package/dist/cli/chunks/{chunk-GTSOFCMQ.js → chunk-EECF4CMA.js} +1 -1
  87. package/dist/cli/chunks/{chunk-5BOZCMXZ.js → chunk-EF5UHDCG.js} +1 -1
  88. package/dist/cli/chunks/{chunk-L6SVCNXK.js → chunk-EJ4KZFZN.js} +1 -1
  89. package/dist/cli/chunks/{chunk-CFPR24YK.js → chunk-ELI4GDQO.js} +2 -2
  90. package/dist/cli/chunks/{chunk-KJ3KBP24.js → chunk-F3KS3TAB.js} +2 -2
  91. package/dist/cli/chunks/{chunk-RMJ7PJOS.js → chunk-F7A2UBZO.js} +2 -2
  92. package/dist/cli/chunks/{chunk-U6OVPMQX.js → chunk-FOJRPEIP.js} +2 -2
  93. package/dist/cli/chunks/{chunk-JYY7AYGA.js → chunk-FQ5N666N.js} +1 -1
  94. package/dist/cli/chunks/{chunk-4XSCZVON.js → chunk-FU7LNUD7.js} +2 -2
  95. package/dist/cli/chunks/{chunk-OW42F2TX.js → chunk-GFB6BZWU.js} +2 -2
  96. package/dist/cli/chunks/{chunk-JI77KJP7.js → chunk-GI5HWS4H.js} +1 -1
  97. package/dist/cli/chunks/{chunk-4UXPDV7E.js → chunk-GNYOHZVV.js} +1 -1
  98. package/dist/cli/chunks/{chunk-VCKDVOPD.js → chunk-GVRFSXY6.js} +2 -2
  99. package/dist/cli/chunks/{chunk-PURHGLEC.js → chunk-GWM4M5NF.js} +1 -1
  100. package/dist/cli/chunks/{chunk-BY646JOM.js → chunk-HAN4MS5T.js} +2 -2
  101. package/dist/cli/chunks/{chunk-OGYWWZU7.js → chunk-HEGGV2PT.js} +2 -2
  102. package/dist/cli/chunks/{chunk-FHUJCVT3.js → chunk-HOEWMEF2.js} +2 -2
  103. package/dist/cli/chunks/{chunk-CXOXUBYU.js → chunk-HZFK2Z2Z.js} +1 -1
  104. package/dist/cli/chunks/chunk-I7WAW7TM.js +2 -0
  105. package/dist/cli/chunks/{chunk-E4VIVMDL.js → chunk-IEPWO4XP.js} +2 -2
  106. package/dist/cli/chunks/{chunk-DTJODGCE.js → chunk-ITIJ23K2.js} +2 -2
  107. package/dist/cli/chunks/{chunk-AQN5EDBM.js → chunk-IVJIHZSM.js} +1 -1
  108. package/dist/cli/chunks/{chunk-PHP4UJYP.js → chunk-JAPBSSFY.js} +1 -1
  109. package/dist/cli/chunks/{chunk-A2WOQO2N.js → chunk-JCE76MPP.js} +2 -2
  110. package/dist/cli/chunks/{chunk-A5J4XJS6.js → chunk-JPJEAK4G.js} +1 -1
  111. package/dist/cli/chunks/{chunk-3OAQPN2N.js → chunk-JYKQVYX2.js} +2 -2
  112. package/dist/cli/chunks/{chunk-MQGEZA2A.js → chunk-K55EAWZ5.js} +2 -2
  113. package/dist/cli/chunks/chunk-KCB6P463.js +3 -0
  114. package/dist/cli/chunks/{chunk-L375O3CZ.js → chunk-KIDOBLUO.js} +2 -2
  115. package/dist/cli/chunks/{chunk-NLDFNAOS.js → chunk-KYVIOC3C.js} +2 -2
  116. package/dist/cli/chunks/{chunk-CQMHDAJS.js → chunk-L2TDHJR3.js} +2 -2
  117. package/dist/cli/chunks/{chunk-FE3AIZI6.js → chunk-L4D3TPFP.js} +1 -1
  118. package/dist/cli/chunks/{chunk-VLOIEVER.js → chunk-LAY7NCQK.js} +3 -3
  119. package/dist/cli/chunks/{chunk-WT3JC4A6.js → chunk-LCCTJ2PC.js} +2 -2
  120. package/dist/cli/chunks/{chunk-VML4SG3X.js → chunk-LJCEDTUM.js} +3 -3
  121. package/dist/cli/chunks/{chunk-NF6AFIAX.js → chunk-LMAEMVPA.js} +1 -1
  122. package/dist/cli/chunks/{chunk-2XYTS2WY.js → chunk-LZWJ5BMP.js} +2 -2
  123. package/dist/cli/chunks/{chunk-PHAQWAEV.js → chunk-MP3FSUNB.js} +2 -2
  124. package/dist/cli/chunks/{chunk-IJ2EXSMO.js → chunk-MQCTLTGE.js} +2 -2
  125. package/dist/cli/chunks/{chunk-GRIPCYW5.js → chunk-MQTA6KIO.js} +1 -1
  126. package/dist/cli/chunks/{chunk-GGDKOJVF.js → chunk-NBUXM5X6.js} +10 -6
  127. package/dist/cli/chunks/{chunk-DPYDUKVZ.js → chunk-NHRF3V4B.js} +2 -2
  128. package/dist/cli/chunks/chunk-NMY4KTWA.js +16 -0
  129. package/dist/cli/chunks/chunk-NYS2GUNO.js +2 -0
  130. package/dist/cli/chunks/{chunk-AUZXRFOX.js → chunk-ONPPBLRB.js} +2 -2
  131. package/dist/cli/chunks/{chunk-HGBJ2QQ4.js → chunk-OPDZBRIL.js} +2 -2
  132. package/dist/cli/chunks/{chunk-DXVZBJE4.js → chunk-OQ4S6B7P.js} +1 -1
  133. package/dist/cli/chunks/{chunk-Y2WMPEUP.js → chunk-ORBODZSO.js} +2 -2
  134. package/dist/cli/chunks/{chunk-IJOFZBXD.js → chunk-ORFL3YXB.js} +2 -2
  135. package/dist/cli/chunks/{chunk-BMWAWZAN.js → chunk-P7DXVL2S.js} +2 -2
  136. package/dist/cli/chunks/chunk-PEMSXSP2.js +4 -0
  137. package/dist/cli/chunks/chunk-PS6WFCA4.js +6 -0
  138. package/dist/cli/chunks/{chunk-DPV33C77.js → chunk-Q2RBOC7V.js} +2 -2
  139. package/dist/cli/chunks/{chunk-3AYYGR6W.js → chunk-QLKUCMZC.js} +1 -1
  140. package/dist/cli/chunks/{chunk-EVCFUYYK.js → chunk-QLYO3H7E.js} +9 -9
  141. package/dist/cli/chunks/{chunk-3SH23PS3.js → chunk-QS5KZYUZ.js} +2 -2
  142. package/dist/cli/chunks/{chunk-3YNP33GB.js → chunk-R363XXGH.js} +2 -2
  143. package/dist/cli/chunks/chunk-RD5BYLN7.js +2 -0
  144. package/dist/cli/chunks/{chunk-MS3Z2CP5.js → chunk-RFDFET3O.js} +2 -2
  145. package/dist/cli/chunks/{chunk-ZLBBX24Q.js → chunk-RHIQ6QO5.js} +357 -351
  146. package/dist/cli/chunks/chunk-RLB7K7QP.js +2 -0
  147. package/dist/cli/chunks/{chunk-3YASZPLO.js → chunk-RUTO67PT.js} +2 -2
  148. package/dist/cli/chunks/{chunk-V7GNUVYI.js → chunk-RV6HSMKJ.js} +1 -1
  149. package/dist/cli/chunks/{chunk-4PT5KNXL.js → chunk-SOSJWM3E.js} +4 -4
  150. package/dist/cli/chunks/{chunk-6ZIDZ4TJ.js → chunk-SV5BUYHH.js} +2 -2
  151. package/dist/cli/chunks/{chunk-ZTC5FBL6.js → chunk-TL5GV3PR.js} +8 -8
  152. package/dist/cli/chunks/{chunk-GKPRECLL.js → chunk-TLUIO37P.js} +2 -2
  153. package/dist/cli/chunks/{chunk-FWYJ6UDX.js → chunk-TUDENMAE.js} +2 -2
  154. package/dist/cli/chunks/chunk-TVLOED6O.js +2 -0
  155. package/dist/cli/chunks/{chunk-3QD7U3FY.js → chunk-UB6DQGWM.js} +2 -2
  156. package/dist/cli/chunks/{chunk-SAPIRK2G.js → chunk-UHHMAKPE.js} +1 -1
  157. package/dist/cli/chunks/{chunk-35MDATQE.js → chunk-ULCHPPW2.js} +1 -1
  158. package/dist/cli/chunks/chunk-V3OLS2NG.js +2 -0
  159. package/dist/cli/chunks/{chunk-UXZEVIFX.js → chunk-VAYZ5QIE.js} +1 -1
  160. package/dist/cli/chunks/{chunk-VH3EB6ZG.js → chunk-VCONCVSY.js} +3 -3
  161. package/dist/cli/chunks/{chunk-QPV3OKX2.js → chunk-VVF337SV.js} +2 -2
  162. package/dist/cli/chunks/{chunk-XNHB6TLC.js → chunk-WKDWRRDT.js} +2 -2
  163. package/dist/cli/chunks/{chunk-RUJLVJDE.js → chunk-X2DR27AY.js} +2 -2
  164. package/dist/cli/chunks/{chunk-47GEI2LT.js → chunk-X33F7NXH.js} +3 -3
  165. package/dist/cli/chunks/{chunk-MB4VFAJC.js → chunk-XBEI2JBA.js} +2 -2
  166. package/dist/cli/chunks/{chunk-OQDC7GCM.js → chunk-XBFQJZWX.js} +2 -2
  167. package/dist/cli/chunks/{chunk-EAYQCBXL.js → chunk-XFPQIWEH.js} +3 -3
  168. package/dist/cli/chunks/{chunk-2KWI3MT3.js → chunk-XPB5BVU6.js} +2 -2
  169. package/dist/cli/chunks/{chunk-DL5JENWD.js → chunk-XQ53PZEF.js} +3 -3
  170. package/dist/cli/chunks/{chunk-BZFT4QDQ.js → chunk-XZ46CI35.js} +2 -2
  171. package/dist/cli/chunks/chunk-YLNYPQDR.js +2 -0
  172. package/dist/cli/chunks/{chunk-EOR3RECZ.js → chunk-YNG7E26C.js} +2 -2
  173. package/dist/cli/chunks/{chunk-6JFGB2JB.js → chunk-YXU35GGD.js} +1 -1
  174. package/dist/cli/chunks/{chunk-JNMUVBAJ.js → chunk-ZCP4P6O2.js} +2 -2
  175. package/dist/cli/chunks/{chunk-Y7GPLOXB.js → chunk-ZL5LJT7D.js} +2 -2
  176. package/dist/cli/chunks/{chunk-PCCIZFD7.js → chunk-ZOUEQ6DL.js} +1 -1
  177. package/dist/cli/chunks/{chunk-FQKEZVN6.js → chunk-ZSBD4FUX.js} +2 -2
  178. package/dist/cli/chunks/chunk-ZTB32K5N.js +5 -0
  179. package/dist/cli/chunks/{chunk-X52TMBHU.js → chunk-ZUTFHGEO.js} +1 -1
  180. package/dist/cli/chunks/ci-GEJCXMBK.js +81 -0
  181. package/dist/cli/chunks/{ci-config-XDDZOOEI.js → ci-config-2ZVV4OXL.js} +2 -2
  182. package/dist/cli/chunks/{ci-output-7ZUQI4U6.js → ci-output-E45OGVPR.js} +2 -2
  183. package/dist/cli/chunks/{circuit-breaker-ALXKCFAL.js → circuit-breaker-X73ITYZC.js} +2 -2
  184. package/dist/cli/chunks/{claude-flow-setup-RL7K2NI2.js → claude-flow-setup-W4PPH46C.js} +2 -2
  185. package/dist/cli/chunks/client-6XKSQ4JT.js +2 -0
  186. package/dist/cli/chunks/{cline-installer-2Z2QQKC3.js → cline-installer-NUEPMWDE.js} +2 -2
  187. package/dist/cli/chunks/{code-QSZTDINQ.js → code-6WQHBS7G.js} +3 -3
  188. package/dist/cli/chunks/{code-index-extractor-5CGR5D3Y.js → code-index-extractor-BXQIFIFT.js} +2 -2
  189. package/dist/cli/chunks/{codex-installer-7JLSEDE5.js → codex-installer-Z337R2KH.js} +2 -2
  190. package/dist/cli/chunks/{completions-U4NBSXEB.js → completions-F5DMYFHV.js} +2 -2
  191. package/dist/cli/chunks/{complexity-analyzer-WYZD2YSY.js → complexity-analyzer-W2SYPZDI.js} +2 -2
  192. package/dist/cli/chunks/{continuedev-installer-UPXINJFT.js → continuedev-installer-ZCHUIFTN.js} +2 -2
  193. package/dist/cli/chunks/{copilot-installer-WIVYQRIF.js → copilot-installer-M5JNODXF.js} +2 -2
  194. package/dist/cli/chunks/core-handlers-OJYW4Y6M.js +2 -0
  195. package/dist/cli/chunks/{cost-tracker-RIN4JDDM.js → cost-tracker-LSYTHBHV.js} +2 -2
  196. package/dist/cli/chunks/coverage-PGMRS5SS.js +49 -0
  197. package/dist/cli/chunks/cross-domain-router-QVUPQ2SC.js +2 -0
  198. package/dist/cli/chunks/{cursor-installer-POM7NGCC.js → cursor-installer-XPUA73UW.js} +2 -2
  199. package/dist/cli/chunks/{daemon-HFGKQ6LB.js → daemon-ITKDIYMW.js} +5 -5
  200. package/dist/cli/chunks/daemon-QBYTCIMH.js +10 -0
  201. package/dist/cli/chunks/{dag-attention-scheduler-HJXM7Q5P.js → dag-attention-scheduler-T55AXLD6.js} +2 -2
  202. package/dist/cli/chunks/{detect-XKQGLZYN.js → detect-DR7J6K4O.js} +2 -2
  203. package/dist/cli/chunks/{dist-node-SSKB53QL.js → dist-node-LAJJBOUT.js} +2 -2
  204. package/dist/cli/chunks/{domain-handler-6BNDHATU.js → domain-handler-OMSHCRMK.js} +2 -2
  205. package/dist/cli/chunks/{domain-plugins-DOX54YE3.js → domain-plugins-EQXSKC5K.js} +2 -2
  206. package/dist/cli/chunks/{domain-transfer-FW4ZX3Z7.js → domain-transfer-FKRAGVSW.js} +2 -2
  207. package/dist/cli/chunks/dream-3UABDRZJ.js +2 -0
  208. package/dist/cli/chunks/embed-and-insert-pattern-JZFPCNL3.js +3 -0
  209. package/dist/cli/chunks/{eval-K7E4XXBS.js → eval-JSNNASBW.js} +2 -2
  210. package/dist/cli/chunks/experience-capture-middleware-UPD3IZBK.js +40 -0
  211. package/dist/cli/chunks/{fast-paths-5JXXTYAG.js → fast-paths-YNMIBS2E.js} +2 -2
  212. package/dist/cli/chunks/{feature-flags-2CR3CO23.js → feature-flags-SRLXDKBI.js} +2 -2
  213. package/dist/cli/chunks/{feature-flags-RB72LHOJ.js → feature-flags-VIR7O4L7.js} +2 -2
  214. package/dist/cli/chunks/file-discovery-ZFGZTKZ4.js +2 -0
  215. package/dist/cli/chunks/{fleet-SDU7QEOA.js → fleet-K2ED46EL.js} +3 -3
  216. package/dist/cli/chunks/{gnn-wrapper-AWCFODUV.js → gnn-wrapper-QCU4ZRYW.js} +2 -2
  217. package/dist/cli/chunks/{heartbeat-handler-A4PJ3NFP.js → heartbeat-handler-YYQI4WZM.js} +4 -4
  218. package/dist/cli/chunks/heartbeat-scheduler-MJ6MTPDF.js +2 -0
  219. package/dist/cli/chunks/hnsw-adapter-FQWJCFVW.js +2 -0
  220. package/dist/cli/chunks/hnsw-index-NJYKJUHC.js +2 -0
  221. package/dist/cli/chunks/{hnsw-legacy-bridge-KRS7SSFM.js → hnsw-legacy-bridge-C5TJSWTZ.js} +2 -2
  222. package/dist/cli/chunks/{hnswlib-node-OGGCPKPO.js → hnswlib-node-SE3MJJYS.js} +2 -2
  223. package/dist/cli/chunks/{hooks-XNRNMUBW.js → hooks-C572SRDH.js} +43 -43
  224. package/dist/cli/chunks/hybrid-backend-SL7RFID7.js +2 -0
  225. package/dist/cli/chunks/{hypergraph-engine-X35LTXYT.js → hypergraph-engine-35A6G3M5.js} +2 -2
  226. package/dist/cli/chunks/{hypergraph-handler-M6THKAG6.js → hypergraph-handler-U2756CWI.js} +3 -3
  227. package/dist/cli/chunks/impact-analyzer-5ZJTXPVC.js +2 -0
  228. package/dist/cli/chunks/init-handler-PCLYQUSB.js +88 -0
  229. package/dist/cli/chunks/init-wizard-MQMDSIOF.js +2 -0
  230. package/dist/cli/chunks/kernel-MEJ5GMRH.js +2 -0
  231. package/dist/cli/chunks/{kilocode-installer-TEPR2ZJD.js → kilocode-installer-32PX5YH7.js} +2 -2
  232. package/dist/cli/chunks/{kiro-installer-RUKHGDEE.js → kiro-installer-C4ROMMUS.js} +2 -2
  233. package/dist/cli/chunks/knowledge-graph-XUBZSEZE.js +2 -0
  234. package/dist/cli/chunks/learning-GEPVZGJQ.js +122 -0
  235. package/dist/cli/chunks/{llm-router-7GECMDCP.js → llm-router-XRKTTJTX.js} +4 -4
  236. package/dist/cli/chunks/llm-router-service-QZAPAEPX.js +2 -0
  237. package/dist/cli/chunks/{load-NTJ4Y4ZR.js → load-XVH6HW7E.js} +2 -2
  238. package/dist/cli/chunks/load-test-OVXIQ3AF.js +2 -0
  239. package/dist/cli/chunks/{mcp-4335GTTG.js → mcp-IULSTM4Z.js} +2 -2
  240. package/dist/cli/chunks/{memory-HYC4M4XS.js → memory-6K7IAU4T.js} +5 -5
  241. package/dist/cli/chunks/memory-backend-TRPOMPK4.js +2 -0
  242. package/dist/cli/chunks/memory-handlers-CG6DRLAW.js +2 -0
  243. package/dist/cli/chunks/{multi-model-executor-T7FYKM6T.js → multi-model-executor-VZDUYPLX.js} +2 -2
  244. package/dist/cli/chunks/{opencode-installer-3USXVT5M.js → opencode-installer-QUTXKNH4.js} +2 -2
  245. package/dist/cli/chunks/orchestrator-PCKKUWOP.js +452 -0
  246. package/dist/cli/chunks/pattern-null-store-JWYBRBZG.js +2 -0
  247. package/dist/cli/chunks/{pattern-usage-recorder-CMZLPX2K.js → pattern-usage-recorder-PX5HQVRL.js} +2 -2
  248. package/dist/cli/chunks/{pipeline-BTRZOVSL.js → pipeline-O562GTOG.js} +2 -2
  249. package/dist/cli/chunks/{platform-2MCRKC25.js → platform-PM7Q2AZS.js} +2 -2
  250. package/dist/cli/chunks/plugin-OTYTFGPY.js +27 -0
  251. package/dist/cli/chunks/{prime-radiant-advanced-wasm-TXFEMBP6.js → prime-radiant-advanced-wasm-6CFXTHC2.js} +2 -2
  252. package/dist/cli/chunks/project-root-VVSTHIP4.js +2 -0
  253. package/dist/cli/chunks/protocol-executor-PXZCLZD3.js +2 -0
  254. package/dist/cli/chunks/{protocol-handler-DZ26OYVZ.js → protocol-handler-PPGNSAOS.js} +2 -2
  255. package/dist/cli/chunks/{prove-QWONEJWX.js → prove-WQ3BKRZG.js} +2 -2
  256. package/dist/cli/chunks/qe-reasoning-bank-42FRS5V3.js +2 -0
  257. package/dist/cli/chunks/{quality-WFH54FY7.js → quality-C5WUU3AA.js} +2 -2
  258. package/dist/cli/chunks/{quality-gate-ONJB7XU7.js → quality-gate-WSSRKD5U.js} +3 -3
  259. package/dist/cli/chunks/queen-coordinator-UI3B7DI6.js +2 -0
  260. package/dist/cli/chunks/real-embeddings-CFQE7IRQ.js +2 -0
  261. package/dist/cli/chunks/{ref-validation-HW5Y55ZC.js → ref-validation-DHKHXVZT.js} +2 -2
  262. package/dist/cli/chunks/{roocode-installer-5OABDNZT.js → roocode-installer-3PPODABV.js} +2 -2
  263. package/dist/cli/chunks/router-HYRPWLAY.js +2 -0
  264. package/dist/cli/chunks/routing-feedback-BPZ5R6F3.js +2 -0
  265. package/dist/cli/chunks/{routing-handler-CVHVOQTC.js → routing-handler-JNXTGT6T.js} +2 -2
  266. package/dist/cli/chunks/{ruvector-commands-KKDKFGIQ.js → ruvector-commands-6YLROPVP.js} +2 -2
  267. package/dist/cli/chunks/rvf-dual-writer-DEKDQ6KO.js +2 -0
  268. package/dist/cli/chunks/rvf-migration-adapter-L53VBS7I.js +2 -0
  269. package/dist/cli/chunks/rvf-migration-coordinator-4DWB4WRK.js +2 -0
  270. package/dist/cli/chunks/rvf-native-adapter-I6RUGD2D.js +2 -0
  271. package/dist/cli/chunks/{rvf-store-integrity-UGUXKIFX.js → rvf-store-integrity-YKR2ZNBF.js} +2 -2
  272. package/dist/cli/chunks/safe-db-KS65XDCP.js +2 -0
  273. package/dist/cli/chunks/schedule-KD2VN6GB.js +2 -0
  274. package/dist/cli/chunks/scheduler-ZH3RMUHY.js +2 -0
  275. package/dist/cli/chunks/{security-7723AZZ4.js → security-PWQTGDRU.js} +3 -3
  276. package/dist/cli/chunks/shared-rvf-adapter-LNRLFP5I.js +2 -0
  277. package/dist/cli/chunks/{shared-rvf-dual-writer-ZSHYG5IA.js → shared-rvf-dual-writer-GWU6YQNS.js} +2 -2
  278. package/dist/cli/chunks/sqlite-persistence-6DTVME5D.js +2 -0
  279. package/dist/cli/chunks/{standalone-memory-MHZEEYMK.js → standalone-memory-46KKBSSV.js} +2 -2
  280. package/dist/cli/chunks/{status-handler-JKXPJ22K.js → status-handler-35T5FTDQ.js} +2 -2
  281. package/dist/cli/chunks/{structural-health-J4RKCYWF.js → structural-health-P7QPQWLO.js} +2 -2
  282. package/dist/cli/chunks/{sync-PDPORHVN.js → sync-W6Z4R4PL.js} +2 -2
  283. package/dist/cli/chunks/sync-Y43EWBSY.js +2 -0
  284. package/dist/cli/chunks/{task-handler-VERADM44.js → task-handler-5CX3ZYT7.js} +2 -2
  285. package/dist/cli/chunks/{task-handlers-4RUCWUR2.js → task-handlers-DQZGOJNE.js} +3 -3
  286. package/dist/cli/chunks/{test-DMBJFQNL.js → test-TPP53VVV.js} +12 -12
  287. package/dist/cli/chunks/{test-scheduling-LUPTVGCD.js → test-scheduling-WBV4UMQH.js} +3 -3
  288. package/dist/cli/chunks/token-bootstrap-GIIDXHLC.js +2 -0
  289. package/dist/cli/chunks/{token-usage-VOA34IKM.js → token-usage-AKK37RB7.js} +2 -2
  290. package/dist/cli/chunks/{transformers-GU4TYAN5.js → transformers-7MASPELS.js} +2 -2
  291. package/dist/cli/chunks/{tree-sitter-wasm-parser-MZPXAH7C.js → tree-sitter-wasm-parser-YZKD6UGB.js} +2 -2
  292. package/dist/cli/chunks/{types-K4FLXR2K.js → types-AZ3BTXDP.js} +2 -2
  293. package/dist/cli/chunks/unified-memory-FCX7NLFZ.js +2 -0
  294. package/dist/cli/chunks/unified-memory-hnsw-VU5QJK37.js +2 -0
  295. package/dist/cli/chunks/unified-persistence-FM376LGE.js +2 -0
  296. package/dist/cli/chunks/{upgrade-M3ATDRMK.js → upgrade-L7OTDKEK.js} +2 -2
  297. package/dist/cli/chunks/{validate-AAP773B3.js → validate-O3QVFIGP.js} +2 -2
  298. package/dist/cli/chunks/{validate-swarm-7RGAZX5F.js → validate-swarm-2UGBGLTX.js} +2 -2
  299. package/dist/cli/chunks/visual-security-EU7Y3X46.js +2 -0
  300. package/dist/cli/chunks/{web-tree-sitter-GQMRHGGI.js → web-tree-sitter-J75IYPRO.js} +2 -2
  301. package/dist/cli/chunks/{windsurf-installer-HG6HF2GF.js → windsurf-installer-FQ5DBFCG.js} +2 -2
  302. package/dist/cli/chunks/witness-chain-CSEBT52D.js +2 -0
  303. package/dist/cli/chunks/{witness-chain-WKU3ZIBQ.js → witness-chain-I7TN4MXZ.js} +2 -2
  304. package/dist/cli/chunks/witness-chain-repair-D3NE3NQK.js +2 -0
  305. package/dist/cli/chunks/{witness-chain-verifier-Q2KW3QEQ.js → witness-chain-verifier-RU2WOP5M.js} +2 -2
  306. package/dist/cli/chunks/witness-key-manager-IHQB2FR5.js +2 -0
  307. package/dist/cli/chunks/{workflow-CX6SHFBW.js → workflow-6BWTNVV6.js} +28 -28
  308. package/dist/cli/chunks/workflow-orchestrator-ALNKOM3N.js +2 -0
  309. package/dist/cli/chunks/wrappers-URVP25VU.js +2 -0
  310. package/dist/cli/commands/ci.js +47 -25
  311. package/dist/cli/commands/coverage.d.ts +1 -28
  312. package/dist/cli/commands/coverage.js +63 -134
  313. package/dist/cli/commands/daemon.js +7 -1
  314. package/dist/cli/commands/hooks-handlers/stats-hooks.d.ts +15 -0
  315. package/dist/cli/commands/hooks-handlers/stats-hooks.js +54 -2
  316. package/dist/cli/commands/learning.js +47 -7
  317. package/dist/cli/commands/test.js +6 -7
  318. package/dist/cli/commands/workflow.js +9 -5
  319. package/dist/cli/handlers/init-guard.d.ts +13 -0
  320. package/dist/cli/handlers/init-guard.js +23 -0
  321. package/dist/cli/handlers/init-handler.d.ts +3 -0
  322. package/dist/cli/handlers/init-handler.js +9 -0
  323. package/dist/cli/handlers/interfaces.js +5 -1
  324. package/dist/cli/scheduler/persistent-scheduler.d.ts +6 -2
  325. package/dist/cli/scheduler/persistent-scheduler.js +107 -41
  326. package/dist/cli/utils/ci-output.d.ts +8 -1
  327. package/dist/cli/utils/ci-output.js +13 -2
  328. package/dist/cli/utils/coverage-data.d.ts +3 -0
  329. package/dist/cli/utils/coverage-data.js +14 -39
  330. package/dist/cli/utils/coverage-verdict.d.ts +130 -0
  331. package/dist/cli/utils/coverage-verdict.js +193 -0
  332. package/dist/cli/utils/file-discovery.js +5 -0
  333. package/dist/coordination/deterministic-actions.js +24 -13
  334. package/dist/coordination/handlers/code-intelligence-handlers.d.ts +8 -0
  335. package/dist/coordination/handlers/code-intelligence-handlers.js +39 -0
  336. package/dist/coordination/handlers/coverage-handlers.js +34 -6
  337. package/dist/coordination/handlers/coverage-runner.d.ts +22 -0
  338. package/dist/coordination/handlers/coverage-runner.js +105 -10
  339. package/dist/coordination/handlers/coverage-target.d.ts +1 -0
  340. package/dist/coordination/handlers/coverage-target.js +4 -1
  341. package/dist/coordination/handlers/handler-types.d.ts +9 -0
  342. package/dist/coordination/handlers/handler-utils.d.ts +14 -1
  343. package/dist/coordination/handlers/handler-utils.js +46 -22
  344. package/dist/coordination/handlers/quality-handlers.js +108 -18
  345. package/dist/coordination/handlers/test-execution-handlers.js +4 -1
  346. package/dist/coordination/protocols/defect-investigation.d.ts +2 -1
  347. package/dist/coordination/protocols/defect-investigation.js +6 -3
  348. package/dist/coordination/protocols/quality-gate.js +10 -6
  349. package/dist/coordination/result-saver.d.ts +22 -0
  350. package/dist/coordination/result-saver.js +113 -43
  351. package/dist/coordination/task-executor.d.ts +7 -0
  352. package/dist/coordination/task-executor.js +32 -3
  353. package/dist/domains/code-intelligence/plugin.js +4 -0
  354. package/dist/domains/code-intelligence/services/metric-collector/index.js +9 -2
  355. package/dist/domains/code-intelligence/services/metric-collector/interfaces.d.ts +21 -0
  356. package/dist/domains/code-intelligence/services/metric-collector/interfaces.js +25 -0
  357. package/dist/domains/code-intelligence/services/metric-collector/loc-counter.d.ts +12 -0
  358. package/dist/domains/code-intelligence/services/metric-collector/loc-counter.js +69 -3
  359. package/dist/domains/code-intelligence/services/metric-collector/test-counter.js +4 -1
  360. package/dist/domains/coverage-analysis/collected-metrics.d.ts +33 -0
  361. package/dist/domains/coverage-analysis/collected-metrics.js +36 -0
  362. package/dist/domains/coverage-analysis/coordinator.js +18 -6
  363. package/dist/domains/coverage-analysis/interfaces.d.ts +44 -0
  364. package/dist/domains/coverage-analysis/interfaces.js +6 -1
  365. package/dist/domains/coverage-analysis/services/coverage-analyzer.js +61 -34
  366. package/dist/domains/coverage-analysis/services/gap-detector.js +7 -2
  367. package/dist/domains/defect-intelligence/plugin.js +4 -0
  368. package/dist/domains/defect-intelligence/services/defect-predictor.js +6 -4
  369. package/dist/domains/learning-optimization/coordinator.js +4 -0
  370. package/dist/domains/learning-optimization/plugin.js +4 -0
  371. package/dist/domains/quality-assessment/coordinator-rl-integration.d.ts +14 -0
  372. package/dist/domains/quality-assessment/coordinator-rl-integration.js +54 -16
  373. package/dist/domains/quality-assessment/coordinator.js +10 -6
  374. package/dist/domains/quality-assessment/coverage-report-event.d.ts +32 -8
  375. package/dist/domains/quality-assessment/coverage-report-event.js +28 -6
  376. package/dist/domains/quality-assessment/index.d.ts +1 -1
  377. package/dist/domains/quality-assessment/interfaces.d.ts +46 -0
  378. package/dist/domains/quality-assessment/quality-evidence.d.ts +48 -2
  379. package/dist/domains/quality-assessment/quality-evidence.js +62 -0
  380. package/dist/domains/quality-assessment/services/quality-analyzer.d.ts +23 -2
  381. package/dist/domains/quality-assessment/services/quality-analyzer.js +192 -109
  382. package/dist/domains/security-compliance/services/scanners/dast-scanner.js +22 -16
  383. package/dist/domains/test-execution/interfaces.d.ts +10 -6
  384. package/dist/domains/test-execution/plugin.js +4 -0
  385. package/dist/domains/test-execution/services/test-executor.js +152 -102
  386. package/dist/domains/test-generation/coordinator.js +4 -0
  387. package/dist/domains/test-generation/plugin.js +4 -0
  388. package/dist/feedback/coverage-learner.js +4 -1
  389. package/dist/feedback/coverage-session-provenance.d.ts +29 -0
  390. package/dist/feedback/coverage-session-provenance.js +39 -0
  391. package/dist/init/orchestrator.js +2 -0
  392. package/dist/init/phases/09-assets.d.ts +4 -0
  393. package/dist/init/phases/09-assets.js +35 -0
  394. package/dist/init/retired-assets.d.ts +86 -0
  395. package/dist/init/retired-assets.js +230 -0
  396. package/dist/init/skills-installer.d.ts +2 -0
  397. package/dist/init/skills-installer.js +4 -0
  398. package/dist/init/types.d.ts +3 -0
  399. package/dist/integrations/ruvector/rvf-native-adapter.d.ts +2 -0
  400. package/dist/integrations/ruvector/rvf-native-adapter.js +5 -0
  401. package/dist/integrations/ruvector/server-client.js +4 -12
  402. package/dist/kernel/project-root.d.ts +17 -0
  403. package/dist/kernel/project-root.js +54 -2
  404. package/dist/kernel/shared-dirs.d.ts +66 -0
  405. package/dist/kernel/shared-dirs.js +168 -0
  406. package/dist/learning/daily-log.js +2 -1
  407. package/dist/learning/experience-capture-middleware.d.ts +22 -0
  408. package/dist/learning/experience-capture-middleware.js +35 -0
  409. package/dist/learning/learnable-result.d.ts +16 -0
  410. package/dist/learning/learnable-result.js +24 -0
  411. package/dist/learning/pattern-mutation-error.d.ts +8 -0
  412. package/dist/learning/pattern-mutation-error.js +12 -0
  413. package/dist/learning/qe-reasoning-bank.d.ts +10 -0
  414. package/dist/learning/qe-reasoning-bank.js +50 -1
  415. package/dist/learning/rvf-reconcile.d.ts +39 -0
  416. package/dist/learning/rvf-reconcile.js +40 -0
  417. package/dist/learning/sqlite-persistence.d.ts +14 -0
  418. package/dist/learning/sqlite-persistence.js +36 -0
  419. package/dist/mcp/bundle.js +516 -504
  420. package/dist/mcp/handlers/domain-handler-configs.d.ts +31 -1
  421. package/dist/mcp/handlers/domain-handler-configs.js +37 -3
  422. package/dist/mcp/handlers/handler-factory.js +40 -14
  423. package/dist/mcp/protocol-server.js +27 -2
  424. package/dist/mcp/tool-cache-scope.d.ts +31 -0
  425. package/dist/mcp/tool-cache-scope.js +71 -0
  426. package/dist/mcp/tools/code-intelligence/analyze.js +5 -3
  427. package/dist/mcp/types.d.ts +4 -0
  428. package/dist/optimization/session-cache.d.ts +19 -1
  429. package/dist/optimization/session-cache.js +36 -2
  430. package/dist/plugins/cache.js +2 -1
  431. package/dist/plugins/sources/github.js +2 -1
  432. package/dist/plugins/sources/npm.js +2 -1
  433. package/dist/shared/aqe-managed-dirs.d.ts +24 -0
  434. package/dist/shared/aqe-managed-dirs.js +56 -0
  435. package/dist/shared/events/domain-events.d.ts +18 -3
  436. package/dist/shared/events/domain-events.js +4 -0
  437. package/dist/shared/http/http-client.d.ts +6 -0
  438. package/dist/shared/http/http-client.js +13 -15
  439. package/dist/shared/io/file-reader.d.ts +26 -0
  440. package/dist/shared/io/file-reader.js +111 -17
  441. package/dist/shared/llm/providers/response-deadline.d.ts +7 -2
  442. package/dist/shared/llm/providers/response-deadline.js +17 -5
  443. package/dist/shared/metrics/code-metrics.d.ts +24 -0
  444. package/dist/shared/metrics/code-metrics.js +93 -6
  445. package/dist/shared/metrics/index.d.ts +1 -1
  446. package/dist/workers/interfaces.d.ts +9 -1
  447. package/dist/workers/quality-daemon/coverage-delta.d.ts +4 -3
  448. package/dist/workers/quality-daemon/coverage-delta.js +13 -6
  449. package/dist/workers/quality-daemon/index.js +6 -5
  450. package/dist/workers/quality-daemon/notification-service.js +3 -3
  451. package/dist/workers/quality-daemon/persistent-memory.d.ts +2 -2
  452. package/dist/workers/quality-daemon/persistent-memory.js +2 -2
  453. package/dist/workers/worker-manager.js +5 -1
  454. package/dist/workers/workers/coverage-tracker.js +69 -33
  455. package/dist/workers/workers/regression-monitor.d.ts +18 -1
  456. package/dist/workers/workers/regression-monitor.js +276 -117
  457. package/package.json +1 -1
  458. package/dist/cli/chunks/adapter-EGIPTX5H.js +0 -2
  459. package/dist/cli/chunks/aqe-learning-engine-WP4GCBDT.js +0 -2
  460. package/dist/cli/chunks/base-6ORFD62I.js +0 -2
  461. package/dist/cli/chunks/browser-workflow-PIXGERWP.js +0 -2
  462. package/dist/cli/chunks/chunk-2WFTZSRT.js +0 -2
  463. package/dist/cli/chunks/chunk-7YB2KELI.js +0 -5
  464. package/dist/cli/chunks/chunk-BBL6YXD3.js +0 -2
  465. package/dist/cli/chunks/chunk-BJ5P4IV2.js +0 -2
  466. package/dist/cli/chunks/chunk-DFPL5N3Q.js +0 -16
  467. package/dist/cli/chunks/chunk-DLY4YEN3.js +0 -2
  468. package/dist/cli/chunks/chunk-ERGWWI4Y.js +0 -3
  469. package/dist/cli/chunks/chunk-KZVJW2SD.js +0 -2
  470. package/dist/cli/chunks/chunk-L336HFFE.js +0 -2
  471. package/dist/cli/chunks/chunk-N2TJNIHA.js +0 -2
  472. package/dist/cli/chunks/chunk-RCXMUEZN.js +0 -3
  473. package/dist/cli/chunks/chunk-SEZLYRCS.js +0 -2
  474. package/dist/cli/chunks/chunk-TDLKXLJC.js +0 -4
  475. package/dist/cli/chunks/chunk-WOZIXXY5.js +0 -7
  476. package/dist/cli/chunks/ci-KP4GZKJ7.js +0 -81
  477. package/dist/cli/chunks/client-C3KHVRM6.js +0 -2
  478. package/dist/cli/chunks/core-handlers-KSQM6Q6S.js +0 -2
  479. package/dist/cli/chunks/coverage-SPFVHRRU.js +0 -43
  480. package/dist/cli/chunks/coverage-target-GSRBNHXE.js +0 -2
  481. package/dist/cli/chunks/cross-domain-router-CTGNOVCF.js +0 -2
  482. package/dist/cli/chunks/daemon-M5TD5Y6T.js +0 -10
  483. package/dist/cli/chunks/dream-MIK2E4UL.js +0 -2
  484. package/dist/cli/chunks/embed-and-insert-pattern-QST77T2B.js +0 -3
  485. package/dist/cli/chunks/experience-capture-middleware-X66IYSRV.js +0 -40
  486. package/dist/cli/chunks/file-discovery-3NHRUQQB.js +0 -2
  487. package/dist/cli/chunks/heartbeat-scheduler-OCKRACUW.js +0 -2
  488. package/dist/cli/chunks/hnsw-adapter-X67XG73C.js +0 -2
  489. package/dist/cli/chunks/hnsw-index-I7KCQBQR.js +0 -2
  490. package/dist/cli/chunks/hybrid-backend-FOUHTKAK.js +0 -2
  491. package/dist/cli/chunks/impact-analyzer-GXYVX46O.js +0 -2
  492. package/dist/cli/chunks/init-handler-2AXMXHYF.js +0 -86
  493. package/dist/cli/chunks/init-wizard-C2MRX2QG.js +0 -2
  494. package/dist/cli/chunks/kernel-Q2IUDIDC.js +0 -2
  495. package/dist/cli/chunks/knowledge-graph-E2Z6K5EE.js +0 -2
  496. package/dist/cli/chunks/learning-BEA26RNA.js +0 -122
  497. package/dist/cli/chunks/llm-router-service-YATYFEDD.js +0 -2
  498. package/dist/cli/chunks/load-test-LV77JXWA.js +0 -2
  499. package/dist/cli/chunks/memory-backend-XME3X3QX.js +0 -2
  500. package/dist/cli/chunks/memory-handlers-VG47X5DX.js +0 -2
  501. package/dist/cli/chunks/orchestrator-VHUXUYIM.js +0 -452
  502. package/dist/cli/chunks/pattern-null-store-TAXMLENP.js +0 -2
  503. package/dist/cli/chunks/plugin-2VAYWAO3.js +0 -27
  504. package/dist/cli/chunks/project-root-CFFPBGPX.js +0 -2
  505. package/dist/cli/chunks/protocol-executor-ML76QAVQ.js +0 -2
  506. package/dist/cli/chunks/qe-reasoning-bank-LUZH6RYV.js +0 -2
  507. package/dist/cli/chunks/queen-coordinator-EWXNIXB6.js +0 -2
  508. package/dist/cli/chunks/real-embeddings-GZV4VKK4.js +0 -2
  509. package/dist/cli/chunks/router-MXOBVEBF.js +0 -2
  510. package/dist/cli/chunks/routing-feedback-T6CCRUEK.js +0 -2
  511. package/dist/cli/chunks/rvf-dual-writer-WHXVT3V3.js +0 -2
  512. package/dist/cli/chunks/rvf-migration-adapter-JFPWIRCG.js +0 -2
  513. package/dist/cli/chunks/rvf-migration-coordinator-D4KUBNRZ.js +0 -2
  514. package/dist/cli/chunks/rvf-native-adapter-KOXR7TJL.js +0 -2
  515. package/dist/cli/chunks/safe-db-CI6IPSIN.js +0 -2
  516. package/dist/cli/chunks/schedule-X4HW6TVJ.js +0 -2
  517. package/dist/cli/chunks/scheduler-KCNJ2ON3.js +0 -2
  518. package/dist/cli/chunks/shared-rvf-adapter-KEQ5CLNI.js +0 -2
  519. package/dist/cli/chunks/sqlite-persistence-PGHU6VUR.js +0 -2
  520. package/dist/cli/chunks/sync-EFWXMA2H.js +0 -2
  521. package/dist/cli/chunks/token-bootstrap-S346YBVO.js +0 -2
  522. package/dist/cli/chunks/unified-memory-6CK3TUNQ.js +0 -2
  523. package/dist/cli/chunks/unified-memory-hnsw-A7BWBGYN.js +0 -2
  524. package/dist/cli/chunks/unified-persistence-GEPMDBQZ.js +0 -2
  525. package/dist/cli/chunks/visual-security-L4J7LQWT.js +0 -2
  526. package/dist/cli/chunks/witness-chain-CDUMX623.js +0 -2
  527. package/dist/cli/chunks/witness-chain-repair-WNYH6O4L.js +0 -2
  528. package/dist/cli/chunks/witness-key-manager-NQ5DAAC4.js +0 -2
  529. package/dist/cli/chunks/workflow-orchestrator-USJDWVDR.js +0 -2
  530. package/dist/cli/chunks/wrappers-CZDI6Z3X.js +0 -2
  531. /package/.claude/skills/qe-court/evals/fixtures/seeded-mutant-delivery/{budget.test.ts → budget-tests.ts.fixture} +0 -0
  532. /package/.claude/skills/qe-court/evals/fixtures/seeded-mutant-delivery/{budget.ts → budget.ts.fixture} +0 -0
  533. /package/.claude/skills/testability-scoring/resources/templates/{testability-scoring.spec.template.js → testability-scoring-spec.template.js} +0 -0
  534. /package/assets/skills/qe-court/evals/fixtures/seeded-mutant-delivery/{budget.test.ts → budget-tests.ts.fixture} +0 -0
  535. /package/assets/skills/qe-court/evals/fixtures/seeded-mutant-delivery/{budget.ts → budget.ts.fixture} +0 -0
  536. /package/assets/skills/testability-scoring/resources/templates/{testability-scoring.spec.template.js → testability-scoring-spec.template.js} +0 -0
@@ -6,54 +6,12 @@
6
6
  import { Command } from 'commander';
7
7
  import chalk from 'chalk';
8
8
  import { runCoverageAnalysisWizard } from '../wizards/coverage-wizard.js';
9
- import { walkSourceFiles } from '../utils/file-discovery.js';
10
9
  import { writeOutput, toJSON, coverageToMarkdown } from '../utils/ci-output.js';
11
10
  import * as path from 'path';
12
- import { buildCoverageData, summarizeCoverage } from '../utils/coverage-data.js';
13
- import { describeNoData, isUnmeasured, resolveExistingCoverage, reconcileRecommendations, thresholdVerdict, } from '../../coordination/handlers/coverage-target.js';
14
- /** Which optional metrics an instrumented report actually carries. */
15
- function metricsCollected(data) {
16
- if (!data.instrumented)
17
- return { branch: true, function: true }; // labelled heuristic estimate
18
- return {
19
- branch: data.files.some(f => f.branches.total > 0),
20
- function: data.files.some(f => f.functions.total > 0),
21
- };
22
- }
23
- /** `aqe coverage` exit code when the target has no coverage measurement (#995). */
24
- export const EXIT_UNMEASURED = 3;
25
- /**
26
- * Resolve the coverage data for a CLI target (#995).
27
- *
28
- * Uses the SAME resolution and verdict as the MCP `coverage_analyze_sublinear`
29
- * handler (`resolveExistingCoverage`), so CLI and MCP cannot disagree about
30
- * what a report says for a target:
31
- * - a coverage report file (lcov.info, coverage-final.json, ...) is parsed
32
- * directly;
33
- * - a directory or source file is scoped against the instrumented report of
34
- * its PROJECT ROOT (nearest package.json/.git above it), not the cwd;
35
- * - with no report at the project root, the CLI falls back to its labelled
36
- * heuristic estimate (the CLI never runs the test suite).
37
- */
38
- export async function resolveCliCoverageData(targetPath) {
39
- const existing = await resolveExistingCoverage(targetPath);
40
- if (existing.status === 'target-missing') {
41
- return { kind: 'no-data', reason: 'target-missing', message: describeNoData('target-missing', targetPath, null) };
42
- }
43
- if (existing.status === 'evaluated') {
44
- const { evaluation, projectRoot } = existing;
45
- if (evaluation.status === 'measured') {
46
- const files = evaluation.files;
47
- return { kind: 'data', data: { files, summary: summarizeCoverage(files), instrumented: true } };
48
- }
49
- return { kind: 'no-data', reason: evaluation.reason, message: describeNoData(evaluation.reason, targetPath, projectRoot) };
50
- }
51
- const sourceFiles = walkSourceFiles(existing.target, { includeTests: false });
52
- if (sourceFiles.length === 0)
53
- return { kind: 'no-sources' };
54
- console.log(chalk.gray(` Analyzing ${sourceFiles.length} files...\n`));
55
- return { kind: 'data', data: buildCoverageData(sourceFiles, existing.projectRoot) };
56
- }
11
+ import { EXIT_UNMEASURED, coverageExitCode, coverageJson, evaluateCliCoverage, } from '../utils/coverage-verdict.js';
12
+ // #1012 / #1010: resolution and verdict are shared with `aqe ci` (and built on
13
+ // the same functions as MCP); re-exported here for existing importers.
14
+ export { EXIT_UNMEASURED, resolveCliCoverageData } from '../utils/coverage-verdict.js';
57
15
  function getColorForPercent(percent) {
58
16
  if (percent >= 80)
59
17
  return chalk.green;
@@ -87,7 +45,13 @@ Exit codes:
87
45
  1 coverage below the threshold, or an error (missing target, unreadable report)
88
46
  2 coverage within 5% above the threshold
89
47
  ${EXIT_UNMEASURED} UNMEASURED: no coverage measurement exists for the target
90
- (not in the report, the runner ran 0 tests, or only test files were reported)`)
48
+ (not in the report, the runner ran 0 tests, or only test files were reported),
49
+ or NO coverage report exists, so only a labelled static estimate was shown
50
+ (-F json: measured:false, estimated:true; no threshold verdict)
51
+
52
+ In \`aqe ci\`, an UNMEASURED coverage phase is a warning (phase exit code 3); it
53
+ does not fail the pipeline by itself. An enforced quality gate fails on
54
+ missing coverage evidence.`)
91
55
  .action(async (target, options) => {
92
56
  let analyzeTarget = target;
93
57
  let includeRisk = options.risk;
@@ -141,90 +105,62 @@ Exit codes:
141
105
  const targetPath = path.resolve(analyzeTarget);
142
106
  // Fix #280: shared file discovery supporting all languages.
143
107
  // #995: coverage files as targets; reports resolved from the project root.
144
- const resolved = await resolveCliCoverageData(targetPath);
145
- if (resolved.kind === 'no-sources') {
108
+ // #1012: one shared verdict (measured / unmeasured / labelled estimate).
109
+ const outcome = await evaluateCliCoverage(coverageAPI, targetPath, threshold);
110
+ const format = options.format;
111
+ if (outcome.kind === 'no-sources') {
146
112
  console.log(chalk.yellow('No source files found'));
147
113
  return;
148
114
  }
149
- if (resolved.kind === 'no-data') {
150
- // Errors (missing target, unreadable report) exit 1. Everything else
151
- // means "no measurement exists" — distinct exit code, never "0%".
152
- const isError = resolved.reason === 'target-missing' || resolved.reason === 'unreadable-report';
153
- if (options.format === 'json') {
115
+ if (outcome.kind === 'error' || outcome.kind === 'unmeasured' || outcome.kind === 'analysis-failed') {
116
+ // Errors (missing target, unreadable report) exit 1. "No measurement
117
+ // exists" has its own exit code — never "0%".
118
+ if (format === 'json') {
154
119
  // Same shape as a normal result, with nulls (#995 review N4).
155
- emit(toJSON({
156
- summary: { line: null, branch: null, function: null, statement: null },
157
- meetsThreshold: null,
158
- threshold,
159
- measured: false,
160
- unmeasured: isUnmeasured(resolved.reason),
161
- reason: resolved.reason,
162
- target: targetPath,
163
- warning: resolved.message,
164
- }));
120
+ emit(toJSON(coverageJson(outcome, threshold, targetPath)));
165
121
  }
166
122
  else {
167
- console.log((isError ? chalk.red : chalk.yellow)(` ${resolved.message}\n`));
123
+ console.log((outcome.kind === 'unmeasured' ? chalk.yellow : chalk.red)(` ${outcome.message}\n`));
168
124
  }
169
- await cleanupAndExit(isError ? 1 : EXIT_UNMEASURED);
125
+ await cleanupAndExit(coverageExitCode(outcome, threshold));
170
126
  return;
171
127
  }
172
- const coverageData = resolved.data;
173
- if (coverageData.instrumented) {
128
+ const coverageData = outcome.data;
129
+ const isEstimate = outcome.kind === 'estimate';
130
+ if (!isEstimate) {
174
131
  console.log(chalk.green(' Using instrumented coverage data (V8/istanbul)\n'));
175
132
  if (coverageData.unmeasuredFiles?.length) {
176
133
  console.log(chalk.yellow(` ${coverageData.unmeasuredFiles.length} file(s) not in the coverage report — UNMEASURED, excluded from the figures\n`));
177
134
  }
178
135
  }
179
136
  else {
180
- console.log(chalk.yellow(' No instrumented coverage found — using heuristic estimation'));
137
+ console.log(chalk.yellow(' No coverage report found — showing a heuristic STATIC ESTIMATE (UNMEASURED)'));
181
138
  console.log(chalk.gray(' Run tests with coverage first: npm test -- --coverage\n'));
182
139
  }
183
- // #1008: a heuristic estimate is shown, never persisted as coverage evidence.
184
- const result = await coverageAPI.analyze({
185
- coverageData,
186
- threshold,
187
- includeFileDetails: true,
188
- measured: coverageData.instrumented,
189
- });
190
- const format = options.format;
191
- let coverageResult;
192
- let overallCoverage = 0;
193
- if (result.success && result.value) {
194
- const report = result.value;
195
- // #995 review NB5: a metric the report never collected is null — not
196
- // 0 — and is left out of the threshold verdict (same rule as MCP).
197
- const collected = metricsCollected(coverageData);
198
- const verdict = thresholdVerdict(report.summary, threshold, collected);
199
- const summary = {
200
- ...report.summary,
201
- branch: collected.branch ? report.summary.branch : null,
202
- function: collected.function ? report.summary.function : null,
203
- };
204
- // NB-A: the shortfall advice comes from the same verdict (shared with MCP).
205
- const recommendations = reconcileRecommendations(report.recommendations, verdict, threshold, collected);
206
- overallCoverage = verdict.overall;
207
- // For non-text formats, collect all data and output at end
208
- coverageResult = {
209
- summary: summary,
210
- meetsThreshold: verdict.meetsThreshold,
211
- threshold,
212
- recommendations,
213
- };
214
- if (format === 'text') {
215
- const fmt = (v) => v === null ? 'n/a (not collected)' : v.toFixed(1) + '%';
216
- const color = (v) => v === null ? chalk.gray : getColorForPercent(v);
217
- console.log(chalk.cyan(' Coverage Summary:'));
218
- console.log(` Lines: ${color(summary.line)(fmt(summary.line))}`);
219
- console.log(` Branches: ${color(summary.branch)(fmt(summary.branch))}`);
220
- console.log(` Functions: ${color(summary.function)(fmt(summary.function))}`);
221
- console.log(` Statements: ${color(summary.statement)(fmt(summary.statement))}`);
222
- console.log(`\n Threshold: ${verdict.meetsThreshold ? chalk.green(`Met (${threshold}%)`) : chalk.red(`Not met (${threshold}%)`)}`);
223
- if (recommendations.length > 0) {
224
- console.log(chalk.cyan('\n Recommendations:'));
225
- for (const rec of recommendations) {
226
- console.log(chalk.gray(` - ${rec}`));
227
- }
140
+ // #1012: the JSON carries its provenance (measured / estimated /
141
+ // coverageMethod) exactly as MCP does; an estimate has no verdict.
142
+ const coverageResult = coverageJson(outcome, threshold, targetPath);
143
+ const summary = outcome.summary;
144
+ if (format === 'text') {
145
+ const fmt = (v) => v === null ? 'n/a (not collected)' : (isEstimate ? '~' : '') + v.toFixed(1) + '%';
146
+ const color = (v) => v === null || isEstimate ? chalk.gray : getColorForPercent(v);
147
+ console.log(chalk.cyan(isEstimate ? ' Coverage Summary (STATIC ESTIMATE — not measured):' : ' Coverage Summary:'));
148
+ console.log(` Lines: ${color(summary.line)(fmt(summary.line))}`);
149
+ console.log(` Branches: ${color(summary.branch)(fmt(summary.branch))}`);
150
+ console.log(` Functions: ${color(summary.function)(fmt(summary.function))}`);
151
+ console.log(` Statements: ${color(summary.statement)(fmt(summary.statement))}`);
152
+ if (outcome.kind === 'measured') {
153
+ console.log(`\n Threshold: ${outcome.verdict.meetsThreshold ? chalk.green(`Met (${threshold}%)`) : chalk.red(`Not met (${threshold}%)`)}`);
154
+ }
155
+ else {
156
+ console.log(`\n Threshold: ${chalk.yellow(`not evaluated (${threshold}%) — UNMEASURED, estimate only`)}`);
157
+ console.log(chalk.gray(` ${outcome.message}`));
158
+ }
159
+ const recommendations = outcome.kind === 'measured' ? outcome.recommendations : [];
160
+ if (recommendations.length > 0) {
161
+ console.log(chalk.cyan('\n Recommendations:'));
162
+ for (const rec of recommendations) {
163
+ console.log(chalk.gray(` - ${rec}`));
228
164
  }
229
165
  }
230
166
  }
@@ -235,16 +171,17 @@ Exit codes:
235
171
  coverageData,
236
172
  minCoverage: threshold,
237
173
  prioritize: includeRisk ? 'risk' : 'size',
174
+ // #1014: gaps in an estimate are shown, never learned or published.
175
+ measured: !isEstimate,
238
176
  });
239
177
  if (gapResult.success && gapResult.value) {
240
178
  const gaps = gapResult.value;
241
- if (coverageResult)
242
- coverageResult.gaps = gaps.gaps.map(g => ({
243
- file: g.file.replace(process.cwd() + '/', ''),
244
- lines: g.lines,
245
- riskScore: g.riskScore,
246
- severity: g.severity,
247
- }));
179
+ coverageResult.gaps = gaps.gaps.map(g => ({
180
+ file: g.file.replace(process.cwd() + '/', ''),
181
+ lines: g.lines,
182
+ riskScore: g.riskScore,
183
+ severity: g.severity,
184
+ }));
248
185
  console.log(chalk.gray(` Total uncovered lines: ${gaps.totalUncoveredLines}`));
249
186
  console.log(chalk.gray(` Estimated effort: ${gaps.estimatedEffort} hours\n`));
250
187
  for (const gap of gaps.gaps.slice(0, 8)) {
@@ -307,26 +244,18 @@ Exit codes:
307
244
  }
308
245
  }
309
246
  // Non-text format output (collected all data)
310
- if (coverageResult && format === 'json') {
247
+ if (format === 'json') {
311
248
  emit(toJSON(coverageResult));
312
249
  }
313
- else if (coverageResult && format === 'markdown') {
250
+ else if (format === 'markdown') {
314
251
  emit(coverageToMarkdown(coverageResult));
315
252
  }
316
253
  else if (format === 'text') {
317
254
  console.log(chalk.green('\n Coverage analysis complete\n'));
318
255
  }
319
- // Exit codes: 1 = below threshold, 2 = within 5% of threshold, 0 = above threshold
320
- if (coverageResult && !coverageResult.meetsThreshold) {
321
- await cleanupAndExit(1);
322
- }
323
- if (coverageResult) {
324
- const avg = overallCoverage;
325
- if (avg < threshold + 5 && avg >= threshold) {
326
- await cleanupAndExit(2);
327
- }
328
- }
329
- await cleanupAndExit(0);
256
+ // Exit codes: 1 = below threshold, 2 = within 5% of threshold,
257
+ // 0 = above threshold, 3 = UNMEASURED (estimate only) — shared with `aqe ci`.
258
+ await cleanupAndExit(coverageExitCode(outcome, threshold));
330
259
  }
331
260
  catch (error) {
332
261
  console.error(chalk.red('\nFailed:'), error);
@@ -70,7 +70,13 @@ Examples:
70
70
  // Fallback for environments where kernel isn't available
71
71
  const store = new Map();
72
72
  memory = {
73
- async get(key) { return store.get(key); },
73
+ // Like InMemoryWorkerMemory (#1028 N4): this process-local store holds
74
+ // only daemon keys, so a read of another namespace finds nothing.
75
+ async get(key, options) {
76
+ if (options?.namespace)
77
+ return undefined;
78
+ return store.get(key);
79
+ },
74
80
  async set(key, value) { store.set(key, value); },
75
81
  async search(pattern) {
76
82
  const escaped = pattern.replace(/[.+?^${}()|[\]\\]/g, '\\$&');
@@ -5,6 +5,21 @@
5
5
  * Handles pattern management and statistics subcommands.
6
6
  */
7
7
  import { Command } from 'commander';
8
+ /**
9
+ * How a learned pattern reached vector search, by cause (#981, review N1).
10
+ * - `indexed`: stored with its vector in the active index.
11
+ * - `sqlite`: an embedder produced the vector and SQLite holds it (vector
12
+ * search uses it now); only the ANN index (patterns.rvf) was not open in
13
+ * this process. It is ingested automatically the next time the index opens.
14
+ * - `pending`: no vector (no embedding runtime); text search only until an
15
+ * embedder is configured and `aqe learning backfill-embeddings` runs.
16
+ */
17
+ export declare function describeVectorIndexState(pattern: {
18
+ embedding?: ArrayLike<number>;
19
+ }, indexUnavailableCause?: string): {
20
+ vectorIndex: 'indexed' | 'sqlite' | 'pending';
21
+ notice?: string;
22
+ };
8
23
  /**
9
24
  * Register stats, list, emit, learn, and search subcommands on the hooks command.
10
25
  */
@@ -7,7 +7,37 @@
7
7
  import chalk from 'chalk';
8
8
  import { QE_HOOK_EVENTS } from '../../../learning/qe-hooks.js';
9
9
  import { safeJsonParse } from '../../../shared/safe-json.js';
10
+ import { committedPendingIndexPatternId } from '../../../learning/pattern-mutation-error.js';
10
11
  import { getHooksSystem, printJson, printSuccess, printError, } from './hooks-shared.js';
12
+ /**
13
+ * How a learned pattern reached vector search, by cause (#981, review N1).
14
+ * - `indexed`: stored with its vector in the active index.
15
+ * - `sqlite`: an embedder produced the vector and SQLite holds it (vector
16
+ * search uses it now); only the ANN index (patterns.rvf) was not open in
17
+ * this process. It is ingested automatically the next time the index opens.
18
+ * - `pending`: no vector (no embedding runtime); text search only until an
19
+ * embedder is configured and `aqe learning backfill-embeddings` runs.
20
+ */
21
+ export function describeVectorIndexState(pattern, indexUnavailableCause) {
22
+ const hasVector = Boolean(pattern.embedding && pattern.embedding.length > 0);
23
+ if (!hasVector) {
24
+ return {
25
+ vectorIndex: 'pending',
26
+ notice: 'Pattern stored in SQLite without a vector (no embedding runtime is available). ' +
27
+ 'Text search finds it now. Set AQE_EMBEDDER_ENDPOINT or install @huggingface/transformers, then run ' +
28
+ '`aqe learning backfill-embeddings` to enable semantic search for it.',
29
+ };
30
+ }
31
+ if (indexUnavailableCause) {
32
+ return {
33
+ vectorIndex: 'sqlite',
34
+ notice: 'Pattern stored; its vector is stored in SQLite and vector search can use it now. ' +
35
+ `The ANN index (patterns.rvf) was not open in this process (${indexUnavailableCause}); ` +
36
+ 'the vector is added to it automatically the next time the index opens.',
37
+ };
38
+ }
39
+ return { vectorIndex: 'indexed' };
40
+ }
11
41
  /**
12
42
  * Register stats, list, emit, learn, and search subcommands on the hooks command.
13
43
  */
@@ -161,10 +191,27 @@ export function registerStatsHooks(hooks) {
161
191
  tags: options.tags || [],
162
192
  },
163
193
  });
194
+ // #981: COMMITTED_PENDING_INDEX means the authoritative SQLite row was
195
+ // written and only the derived vector index is unavailable (e.g. no
196
+ // embedding runtime). That is a stored pattern, not a failure.
197
+ let pattern = result.success ? result.value : null;
198
+ let indexCause;
164
199
  if (!result.success) {
165
- throw new Error(result.error.message);
200
+ const committedId = committedPendingIndexPatternId(result.error);
201
+ if (!committedId) {
202
+ throw new Error(result.error.message);
203
+ }
204
+ pattern = await reasoningBank.getPattern(committedId);
205
+ if (!pattern) {
206
+ throw new Error(result.error.message);
207
+ }
208
+ const cause = result.error.cause;
209
+ indexCause = cause instanceof Error ? cause.message : 'the vector index is unavailable';
166
210
  }
167
- const pattern = result.value;
211
+ if (!pattern) {
212
+ throw new Error('learn failed: no pattern returned');
213
+ }
214
+ const { vectorIndex, notice: pendingWarning } = describeVectorIndexState(pattern, indexCause);
168
215
  if (options.json) {
169
216
  printJson({
170
217
  success: true,
@@ -174,6 +221,8 @@ export function registerStatsHooks(hooks) {
174
221
  type: pattern.patternType,
175
222
  domain: pattern.qeDomain,
176
223
  },
224
+ vectorIndex,
225
+ ...(pendingWarning ? { warning: pendingWarning } : {}),
177
226
  });
178
227
  }
179
228
  else {
@@ -181,6 +230,9 @@ export function registerStatsHooks(hooks) {
181
230
  console.log(chalk.dim(` ID: ${pattern.id}`));
182
231
  console.log(chalk.dim(` Domain: ${pattern.qeDomain}`));
183
232
  console.log(chalk.dim(` Tier: ${pattern.tier}`));
233
+ if (pendingWarning) {
234
+ console.log(chalk.yellow(` ${vectorIndex === 'pending' ? 'Vector index pending' : 'Vector index'}: ${pendingWarning}`));
235
+ }
184
236
  }
185
237
  }
186
238
  catch (error) {
@@ -24,6 +24,7 @@ import { backupLearningDatabase, restoreLearningDatabase } from './learning-snap
24
24
  import { createSQLitePatternStore } from '../../learning/sqlite-persistence.js';
25
25
  import { getActiveEmbeddingSpaceIdentity } from '../../learning/real-embeddings.js';
26
26
  import { inspectEmbeddingSpaceRows } from '../../learning/embedding-space.js';
27
+ import { committedPendingIndexPatternId } from '../../learning/pattern-mutation-error.js';
27
28
  // Extracted helpers
28
29
  import { initializeLearningSystem, printJson, printSuccess, printError, printInfo, displayDashboard, getDbPath, compressFile, decompressFile, verifyDatabaseIntegrity, getSchemaVersion, padRight, EXPORT_FORMAT_VERSION, DOMAIN_MAPPING, PATTERN_TYPE_MAPPING, } from './learning-helpers.js';
29
30
  // ============================================================================
@@ -151,11 +152,29 @@ function registerBackfillEmbeddingsCommand(learning) {
151
152
  }
152
153
  const result = await store.backfillEmbeddings(batchSize);
153
154
  const after = store.getGhostPatternCount();
155
+ // #981 review B2: backfill writes SQLite vectors only. Opening the
156
+ // reasoning bank reconciles the RVF index with them (ingesting just
157
+ // the ids it is missing), so backfilled patterns reach vector search
158
+ // even when patterns.rvf already held other vectors.
159
+ let rvfIndex = { skipped: 'vector index unavailable' };
160
+ if (result.processed > 0) {
161
+ try {
162
+ const reasoningBank = await initializeLearningSystem();
163
+ const reconciled = reasoningBank.getLastVectorReconcile() ?? reasoningBank.reconcileVectorIndex();
164
+ if (reconciled) {
165
+ rvfIndex = { ingested: reconciled.ingested, missing: reconciled.missing, capped: reconciled.capped };
166
+ }
167
+ }
168
+ catch (error) {
169
+ rvfIndex = { skipped: error instanceof Error ? error.message : String(error) };
170
+ }
171
+ }
154
172
  const output = {
155
173
  ...result,
156
174
  batchSize,
157
175
  missingBefore: before.withoutEmbeddings,
158
176
  missingAfter: after.withoutEmbeddings,
177
+ rvfIndex,
159
178
  };
160
179
  if (options.json) {
161
180
  printJson(output);
@@ -167,6 +186,9 @@ function registerBackfillEmbeddingsCommand(learning) {
167
186
  console.log(` Errors: ${result.errors}`);
168
187
  console.log(` Remaining missing: ${after.withoutEmbeddings}`);
169
188
  console.log(` Method: ${result.method}`);
189
+ console.log('ingested' in rvfIndex
190
+ ? ` Vector index (RVF): ingested ${rvfIndex.ingested} of ${rvfIndex.missing} missing${rvfIndex.capped ? ' (capped; rerun to continue)' : ''}`
191
+ : ` Vector index (RVF): not updated (${rvfIndex.skipped})`);
170
192
  console.log('');
171
193
  }
172
194
  }
@@ -416,6 +438,7 @@ function registerImportCommand(learning) {
416
438
  const reasoningBank = await initializeLearningSystem();
417
439
  let imported = 0;
418
440
  let skipped = 0;
441
+ let pendingIndex = 0;
419
442
  const errors = [];
420
443
  if (!options.dryRun) {
421
444
  for (const pattern of importData.patterns) {
@@ -424,8 +447,17 @@ function registerImportCommand(learning) {
424
447
  patternType: pattern.patternType, name: pattern.name,
425
448
  description: pattern.description, template: pattern.template, context: pattern.context,
426
449
  });
427
- if (result.success)
450
+ if (result.success) {
451
+ imported++;
452
+ // #981 review N2: stored text-only (no embedding runtime) → vector pending.
453
+ if (!(result.value.embedding && result.value.embedding.length > 0))
454
+ pendingIndex++;
455
+ }
456
+ // #981: the row committed; only its vector index is pending.
457
+ else if (committedPendingIndexPatternId(result.error)) {
428
458
  imported++;
459
+ pendingIndex++;
460
+ }
429
461
  else {
430
462
  skipped++;
431
463
  errors.push(`${pattern.name}: ${result.error.message}`);
@@ -438,7 +470,7 @@ function registerImportCommand(learning) {
438
470
  }
439
471
  }
440
472
  if (options.json) {
441
- printJson({ dryRun: options.dryRun || false, totalPatterns: importData.patterns.length, imported, skipped, errors });
473
+ printJson({ dryRun: options.dryRun || false, totalPatterns: importData.patterns.length, imported, skipped, pendingIndex, errors });
442
474
  }
443
475
  else {
444
476
  console.log(chalk.bold('\n📥 Pattern Import\n'));
@@ -450,6 +482,8 @@ function registerImportCommand(learning) {
450
482
  }
451
483
  else {
452
484
  console.log(chalk.green(`\n Imported: ${imported}`));
485
+ if (pendingIndex > 0)
486
+ console.log(chalk.yellow(` Vector index pending: ${pendingIndex} (run "aqe learning backfill-embeddings" once an embedder is available)`));
453
487
  if (skipped > 0)
454
488
  console.log(chalk.yellow(` Skipped: ${skipped}`));
455
489
  }
@@ -593,7 +627,8 @@ function registerExtractCommand(learning) {
593
627
  template: { type: 'code', content: templateContent, variables: [{ name: 'implementation', type: 'code', required: true, description: 'Implementation code for this pattern' }] },
594
628
  context: { tags: [p.domain, p.patternType, `sources:${p.sourceCount}`, `reward:${p.avgReward.toFixed(2)}`] },
595
629
  });
596
- if (result.success)
630
+ // #981: a committed row with a pending vector index is stored.
631
+ if (result.success || committedPendingIndexPatternId(result.error))
597
632
  stored++;
598
633
  else
599
634
  errors.push(`${p.name}: ${result.error.message}`);
@@ -962,7 +997,8 @@ function registerImportMergeCommand(learning) {
962
997
  }
963
998
  try {
964
999
  const result = await reasoningBank.storePattern({ patternType: pattern.patternType, name: pattern.name, description: pattern.description, template: pattern.template, context: pattern.context });
965
- if (result.success) {
1000
+ // #981: a committed row with a pending vector index is imported.
1001
+ if (result.success || committedPendingIndexPatternId(result.error)) {
966
1002
  if (isDuplicate)
967
1003
  updated++;
968
1004
  else
@@ -1148,14 +1184,18 @@ function registerDreamCommand(learning) {
1148
1184
  template: { type: 'workflow', content: insight.suggestedAction || insight.description, variables: [] },
1149
1185
  context: { tags: ['dream-generated', insight.type, ...insight.sourceConcepts.slice(0, 3)], complexity: 'medium' },
1150
1186
  });
1187
+ // #981: a committed row with a pending vector index is a created pattern.
1188
+ const createdPatternId = patternResult.success
1189
+ ? patternResult.value.id
1190
+ : committedPendingIndexPatternId(patternResult.error);
1151
1191
  if (options.json) {
1152
- printJson({ insightId: insight.id, applied: result.success, patternId: patternResult.success ? patternResult.value.id : null, error: result.error || (patternResult.success ? null : patternResult.error?.message) });
1192
+ printJson({ insightId: insight.id, applied: result.success, patternId: createdPatternId, error: result.error || (createdPatternId ? null : patternResult.success ? null : patternResult.error?.message) });
1153
1193
  }
1154
1194
  else {
1155
1195
  if (result.success) {
1156
1196
  printSuccess(`Applied insight ${insight.id.slice(0, 8)}`);
1157
- if (patternResult.success)
1158
- printSuccess(`Created pattern ${patternResult.value.id} in ReasoningBank`);
1197
+ if (createdPatternId)
1198
+ printSuccess(`Created pattern ${createdPatternId} in ReasoningBank`);
1159
1199
  }
1160
1200
  else
1161
1201
  printError(`Failed to apply insight: ${result.error}`);
@@ -7,7 +7,7 @@ import { Command } from 'commander';
7
7
  import chalk from 'chalk';
8
8
  import { filterTestFilesForFramework, walkSourceFiles } from '../utils/file-discovery.js';
9
9
  import { writeOutput, toJSON, toJUnit, testRunToMarkdown } from '../utils/ci-output.js';
10
- import { writeQualityEvidence } from '../../domains/quality-assessment/quality-evidence.js';
10
+ import { writeTestRunEvidence } from '../../domains/quality-assessment/quality-evidence.js';
11
11
  import { validateBehaviorExamples } from '../../domains/test-generation/services/behavior-example-validation.js';
12
12
  import { findProjectRoot } from '../../kernel/project-root.js';
13
13
  import { writeGeneratedTestFile } from '../utils/generated-test-writer.js';
@@ -192,12 +192,11 @@ export function createTestCommand(context, cleanupAndExit, ensureInitialized) {
192
192
  duration: run.duration,
193
193
  measuredAt: new Date().toISOString(),
194
194
  }, { namespace: 'test-execution', persist: true });
195
- await writeQualityEvidence(context.kernel.memory, {
196
- testsPassing: total > 0 ? (run.passed / total) * 100 : 0,
197
- }, {
198
- measuredAt: new Date().toISOString(),
199
- source: 'aqe test execute',
200
- });
195
+ // #1027 NB1: the shared run-scoped writer (same as test_execute_parallel),
196
+ // stamped with this run's id so it pairs with the run's own coverage.
197
+ await writeTestRunEvidence(context.kernel.memory, {
198
+ runId: run.runId, passed: run.passed, failed: run.failed, skipped: run.skipped,
199
+ }, { source: 'aqe test execute' });
201
200
  if (format === 'json') {
202
201
  writeOutput(toJSON(run), options.output);
203
202
  }
@@ -227,13 +227,17 @@ export function createWorkflowCommand(context, cleanupAndExit, ensureInitialized
227
227
  console.log(chalk.gray(' No scheduled workflows\n'));
228
228
  }
229
229
  else {
230
+ // #991: entries loaded from a hand-edited or legacy file may lack
231
+ // fields; show "(missing)" rather than "undefined".
232
+ const show = (value) => value === undefined || value === null || value === '' ? '(missing)' : String(value);
230
233
  for (const sched of scheduled) {
231
234
  const statusIcon = sched.enabled ? chalk.green('*') : chalk.gray('o');
232
- console.log(` ${statusIcon} ${chalk.white(sched.workflowId)}`);
233
- console.log(chalk.gray(` ID: ${sched.id}`));
234
- console.log(chalk.gray(` Schedule: ${sched.schedule} (${sched.scheduleDescription})`));
235
- console.log(chalk.gray(` File: ${sched.pipelinePath}`));
236
- console.log(chalk.gray(` Next run: ${sched.nextRun}`));
235
+ console.log(` ${statusIcon} ${chalk.white(show(sched.workflowId))}`);
236
+ console.log(chalk.gray(` ID: ${show(sched.id)}`));
237
+ const description = sched.scheduleDescription ? ` (${sched.scheduleDescription})` : '';
238
+ console.log(chalk.gray(` Schedule: ${show(sched.schedule)}${description}`));
239
+ console.log(chalk.gray(` File: ${show(sched.pipelinePath)}`));
240
+ console.log(chalk.gray(` Next run: ${show(sched.nextRun)}`));
237
241
  if (sched.lastRun) {
238
242
  console.log(chalk.gray(` Last run: ${sched.lastRun}`));
239
243
  }
@@ -0,0 +1,13 @@
1
+ /**
2
+ * `aqe init` guard for shared directories (#1006, review of #1026 N3).
3
+ *
4
+ * Initializing in the OS temp dir or a system dir wrote `<tmp>/.agentic-qe`
5
+ * and `.mcp.json` there, but every later command resolves such a dir to a
6
+ * private scratch root, so the initialized store was never used. Refusing
7
+ * with a clear next step is less surprising than initializing a hidden root.
8
+ *
9
+ * @module cli/handlers/init-guard
10
+ */
11
+ /** Error message when `cwd` must not be initialized, otherwise null. */
12
+ export declare function sharedDirInitError(cwd: string, env?: NodeJS.ProcessEnv): string | null;
13
+ //# sourceMappingURL=init-guard.d.ts.map
@@ -0,0 +1,23 @@
1
+ /**
2
+ * `aqe init` guard for shared directories (#1006, review of #1026 N3).
3
+ *
4
+ * Initializing in the OS temp dir or a system dir wrote `<tmp>/.agentic-qe`
5
+ * and `.mcp.json` there, but every later command resolves such a dir to a
6
+ * private scratch root, so the initialized store was never used. Refusing
7
+ * with a clear next step is less surprising than initializing a hidden root.
8
+ *
9
+ * @module cli/handlers/init-guard
10
+ */
11
+ import { isSharedSystemDir } from '../../kernel/shared-dirs.js';
12
+ /** Error message when `cwd` must not be initialized, otherwise null. */
13
+ export function sharedDirInitError(cwd, env = process.env) {
14
+ if (env.AQE_PROJECT_ROOT)
15
+ return null;
16
+ if (!isSharedSystemDir(cwd))
17
+ return null;
18
+ return (`Refusing to initialize in "${cwd}": it is a shared temp/system directory, ` +
19
+ 'so a store here would be shared by every unrelated project below it and ' +
20
+ 'later commands would not use it. Create a project directory first ' +
21
+ '(mkdir my-project && cd my-project) or set AQE_PROJECT_ROOT to choose a root.');
22
+ }
23
+ //# sourceMappingURL=init-guard.js.map
@@ -80,6 +80,9 @@ export interface InitJsonOutput {
80
80
  error?: string;
81
81
  };
82
82
  };
83
+ /** #1017: pre-3.15.6 test-named skill files removed / kept by init. */
84
+ retiredAssetsRemoved?: string[];
85
+ retiredAssetsKept?: string[];
83
86
  };
84
87
  totalDurationMs: number;
85
88
  timestamp: string;