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
@@ -13,7 +13,9 @@ import { TEST_EXECUTION_CONSTANTS, LLM_ANALYSIS_CONSTANTS } from '../../constant
13
13
  import { toErrorMessage, toError } from '../../../shared/error-utils.js';
14
14
  import { safeJsonParse } from '../../../shared/safe-json.js';
15
15
  import { secureRandom, secureRandomInt } from '../../../shared/utils/crypto-random.js';
16
- import { writeQualityEvidence } from '../../quality-assessment/quality-evidence.js';
16
+ import { writeTestRunEvidence } from '../../quality-assessment/quality-evidence.js';
17
+ import { istanbulLineHits } from '../../../coordination/handlers/handler-utils.js';
18
+ import { fileCoverageKey } from '../../coverage-analysis/collected-metrics.js';
17
19
  import { getTestRunnerExecutionError, TestRunnerExecutionError } from '../../../shared/test-runner-verdict.js';
18
20
  import { createVitestJsonReport } from '../../../shared/vitest-json-report.js';
19
21
  import { jestExactPathPattern, runnerFilePath } from '../../../shared/test-runner-args.js';
@@ -78,7 +80,7 @@ export class TestExecutorService {
78
80
  };
79
81
  // Store results
80
82
  this.runResults.set(runId, runResult);
81
- await this.storeResults(runId, runResult);
83
+ await this.storeResults(runId, runResult, request.testFiles);
82
84
  // Create and store stats
83
85
  const stats = {
84
86
  runId,
@@ -133,7 +135,7 @@ export class TestExecutorService {
133
135
  };
134
136
  // Store results
135
137
  this.runResults.set(runId, runResult);
136
- await this.storeResults(runId, runResult);
138
+ await this.storeResults(runId, runResult, request.testFiles);
137
139
  // Create and store stats
138
140
  const stats = {
139
141
  runId,
@@ -958,17 +960,22 @@ Provide:
958
960
  if (coverages.length === 0) {
959
961
  return undefined;
960
962
  }
961
- const sum = coverages.reduce((acc, cov) => ({
962
- line: acc.line + cov.line,
963
- branch: acc.branch + cov.branch,
964
- function: acc.function + cov.function,
965
- statement: acc.statement + cov.statement,
966
- }), { line: 0, branch: 0, function: 0, statement: 0 });
963
+ // #1015: average each metric over the entries that collected it; a
964
+ // metric nobody collected stays null.
965
+ const mean = (values) => {
966
+ const present = values.filter((v) => typeof v === 'number' && Number.isFinite(v));
967
+ return present.length > 0
968
+ ? Math.round((present.reduce((a, v) => a + v, 0) / present.length) * 100) / 100
969
+ : null;
970
+ };
971
+ const line = mean(coverages.map(c => c.line));
972
+ if (line === null)
973
+ return undefined;
967
974
  return {
968
- line: Math.round((sum.line / coverages.length) * 100) / 100,
969
- branch: Math.round((sum.branch / coverages.length) * 100) / 100,
970
- function: Math.round((sum.function / coverages.length) * 100) / 100,
971
- statement: Math.round((sum.statement / coverages.length) * 100) / 100,
975
+ line,
976
+ branch: mean(coverages.map(c => c.branch)),
977
+ function: mean(coverages.map(c => c.function)),
978
+ statement: mean(coverages.map(c => c.statement)),
972
979
  };
973
980
  }
974
981
  /**
@@ -989,59 +996,61 @@ Provide:
989
996
  // Jest shape: { coverageSummary: { total: { lines: { pct }, branches: { pct }, ... } } }
990
997
  const total = json?.coverageSummary?.total ?? json?.coverageMap?.total;
991
998
  if (total?.lines?.pct !== undefined) {
999
+ const line = summaryPct(total.lines);
992
1000
  return {
993
- summary: {
994
- line: typeof total.lines?.pct === 'number' ? total.lines.pct : 0,
995
- branch: typeof total.branches?.pct === 'number' ? total.branches.pct : 0,
996
- function: typeof total.functions?.pct === 'number' ? total.functions.pct : 0,
997
- statement: typeof total.statements?.pct === 'number' ? total.statements.pct : 0,
1001
+ summary: line === null ? undefined : {
1002
+ line,
1003
+ branch: summaryPct(total.branches),
1004
+ function: summaryPct(total.functions),
1005
+ statement: summaryPct(total.statements),
998
1006
  },
999
1007
  perFile,
1000
1008
  };
1001
1009
  }
1002
- // Vitest v8 shape: coverageMap is keyed by file path
1010
+ // Vitest v8 shape: coverageMap is keyed by file path (istanbul entries)
1003
1011
  const coverageMap = json?.coverageMap;
1004
1012
  if (coverageMap && typeof coverageMap === 'object') {
1005
1013
  const files = Object.keys(coverageMap).filter(k => k !== 'total');
1006
- if (files.length > 0) {
1007
- let lines = 0, branches = 0, functions = 0, statements = 0;
1008
- let count = 0;
1009
- for (const filePath of files) {
1010
- const entry = coverageMap[filePath];
1011
- const s = entry?.s ?? {};
1012
- const f = entry?.f ?? {};
1013
- const b = entry?.b ?? {};
1014
- const stmtTotal = Object.keys(s).length;
1015
- const stmtCovered = Object.values(s).filter((v) => v > 0).length;
1016
- const fnTotal = Object.keys(f).length;
1017
- const fnCovered = Object.values(f).filter((v) => v > 0).length;
1018
- const brTotal = Object.keys(b).length;
1019
- const brCovered = Object.values(b).filter((v) => Array.isArray(v) ? v.every(c => c > 0) : v > 0).length;
1020
- if (stmtTotal > 0) {
1021
- const fileLine = Math.round((stmtCovered / stmtTotal) * 10000) / 100;
1022
- const fileFn = fnTotal > 0 ? Math.round((fnCovered / fnTotal) * 10000) / 100 : 100;
1023
- const fileBr = brTotal > 0 ? Math.round((brCovered / brTotal) * 10000) / 100 : 100;
1024
- const fileStmt = fileLine;
1025
- perFile.push({ path: filePath, line: fileLine, branch: fileBr, function: fileFn, statement: fileStmt });
1026
- statements += fileStmt;
1027
- lines += fileLine;
1028
- functions += fileFn;
1029
- branches += fileBr;
1030
- count++;
1031
- }
1032
- }
1033
- if (count > 0) {
1034
- return {
1035
- summary: {
1036
- line: Math.round((lines / count) * 100) / 100,
1037
- branch: Math.round((branches / count) * 100) / 100,
1038
- function: Math.round((functions / count) * 100) / 100,
1039
- statement: Math.round((statements / count) * 100) / 100,
1040
- },
1041
- perFile,
1042
- };
1014
+ const totals = { line: [0, 0], branch: [0, 0], function: [0, 0], statement: [0, 0] };
1015
+ for (const filePath of files) {
1016
+ const entry = coverageMap[filePath];
1017
+ const s = entry?.s ?? {};
1018
+ const f = entry?.f ?? {};
1019
+ const b = entry?.b ?? {};
1020
+ // #1012: line coverage per SOURCE LINE (istanbul's own rule), not per statement.
1021
+ const lineHits = istanbulLineHits({ statementMap: entry?.statementMap ?? {}, s });
1022
+ const lines = [[...lineHits.values()].filter(v => v > 0).length, lineHits.size];
1023
+ const statements = [Object.values(s).filter(v => v > 0).length, Object.keys(s).length];
1024
+ const fns = [Object.values(f).filter(v => v > 0).length, Object.keys(f).length];
1025
+ const branchCounts = Object.values(b).flatMap(v => (Array.isArray(v) ? v : [v]));
1026
+ const branches = [branchCounts.filter(c => c > 0).length, branchCounts.length];
1027
+ if (lines[1] === 0)
1028
+ continue;
1029
+ // #1015: istanbul's 0/0 (no branches / no functions) is "not
1030
+ // collected" — null — not 100%.
1031
+ perFile.push({
1032
+ path: filePath,
1033
+ line: ratio(lines),
1034
+ branch: ratio(branches),
1035
+ function: ratio(fns),
1036
+ statement: ratio(statements),
1037
+ });
1038
+ for (const [key, [covered, count]] of [['line', lines], ['branch', branches], ['function', fns], ['statement', statements]]) {
1039
+ totals[key][0] += covered;
1040
+ totals[key][1] += count;
1043
1041
  }
1044
1042
  }
1043
+ if (perFile.length > 0) {
1044
+ return {
1045
+ summary: {
1046
+ line: ratio(totals.line),
1047
+ branch: ratio(totals.branch),
1048
+ function: ratio(totals.function),
1049
+ statement: ratio(totals.statement),
1050
+ },
1051
+ perFile,
1052
+ };
1053
+ }
1045
1054
  }
1046
1055
  }
1047
1056
  catch {
@@ -1073,26 +1082,33 @@ Provide:
1073
1082
  if (key === 'total')
1074
1083
  continue;
1075
1084
  // Normalize path: strip cwd prefix, reject traversal sequences
1076
- const normalizedPath = key.replace(process.cwd() + '/', '').replace(process.cwd() + '\\', '');
1077
- if (normalizedPath.includes('..'))
1085
+ // Reject traversal; keep the key absolute (#1027 N7: one key form).
1086
+ const relative = key.replace(process.cwd() + '/', '').replace(process.cwd() + '\\', '');
1087
+ if (relative.includes('..'))
1078
1088
  continue;
1089
+ const normalizedPath = fileCoverageKey(key);
1079
1090
  const entry = value;
1080
- if (entry?.lines?.pct !== undefined) {
1091
+ const line = summaryPct(entry?.lines);
1092
+ if (line !== null) {
1093
+ // #1015: a metric with total 0 is not collected (null), not its 100 pct.
1081
1094
  perFile.push({
1082
1095
  path: normalizedPath,
1083
- line: entry.lines.pct,
1084
- branch: entry.branches?.pct ?? 0,
1085
- function: entry.functions?.pct ?? 0,
1086
- statement: entry.statements?.pct ?? 0,
1096
+ line,
1097
+ branch: summaryPct(entry.branches),
1098
+ function: summaryPct(entry.functions),
1099
+ statement: summaryPct(entry.statements),
1087
1100
  });
1088
1101
  }
1089
1102
  }
1103
+ const line = summaryPct(json.total.lines);
1104
+ if (line === null)
1105
+ continue;
1090
1106
  return {
1091
1107
  summary: {
1092
- line: json.total.lines.pct,
1093
- branch: json.total.branches?.pct ?? 0,
1094
- function: json.total.functions?.pct ?? 0,
1095
- statement: json.total.statements?.pct ?? 0,
1108
+ line,
1109
+ branch: summaryPct(json.total.branches),
1110
+ function: summaryPct(json.total.functions),
1111
+ statement: summaryPct(json.total.statements),
1096
1112
  },
1097
1113
  perFile,
1098
1114
  };
@@ -1111,50 +1127,69 @@ Provide:
1111
1127
  }
1112
1128
  return undefined;
1113
1129
  }
1114
- async storeResults(runId, result) {
1115
- await this.memory.set(`test-run:${runId}`, result, {
1130
+ async storeResults(runId, result, testFiles) {
1131
+ // #1028 N1: the record names the test files it ran, so per-test duration
1132
+ // is compared only between runs of the same test set.
1133
+ const files = testFiles && testFiles.length > 0 ? [...new Set(testFiles)].sort() : undefined;
1134
+ await this.memory.set(`test-run:${runId}`, files ? { ...result, testFiles: files } : result, {
1116
1135
  namespace: 'test-execution',
1117
1136
  persist: true,
1118
1137
  });
1138
+ // A runner ERROR has no trustworthy result: it persists no evidence.
1139
+ if (result.status === 'error')
1140
+ return;
1141
+ const runStatus = result.failed > 0 || result.status !== 'passed' ? 'failed' : 'passed';
1142
+ const coverage = result.coverage && Number.isFinite(result.coverage.line) ? result.coverage : undefined;
1143
+ try {
1144
+ // #1027 NB1: this run's testsPassing and (when measured) its coverage,
1145
+ // written together under this runId — the same writer as
1146
+ // `aqe test execute`. Coverage from a run whose tests FAILED (N4) is
1147
+ // then never read next to a stale testsPassing from an earlier run.
1148
+ await writeTestRunEvidence(this.memory, {
1149
+ runId, passed: result.passed, failed: result.failed, skipped: result.skipped,
1150
+ }, { source: 'test-execution', ...(coverage ? { coverage: coverage.line } : {}) });
1151
+ }
1152
+ catch {
1153
+ // Non-critical — don't break test storage if evidence storage fails
1154
+ }
1119
1155
  // Store coverage data so quality-assess and quality-gate can read it.
1120
1156
  // Note: coverage:previous rotation is owned by coverage-analyzer (the
1121
1157
  // canonical coverage service) to avoid double-rotation race conditions.
1122
- if (result.coverage) {
1123
- try {
1124
- // Write project-level summary using the same CoverageSummary shape
1125
- // as coverage-analyzer to avoid type mismatches
1126
- await this.memory.set('coverage:latest', {
1127
- line: result.coverage.line ?? 0,
1128
- branch: result.coverage.branch ?? 0,
1129
- function: result.coverage.function ?? 0,
1130
- statement: result.coverage.statement ?? 0,
1131
- files: result.fileCoverages?.length ?? 0,
1158
+ if (!coverage)
1159
+ return;
1160
+ try {
1161
+ // Same CoverageSummary shape as coverage-analyzer, stamped with its
1162
+ // provenance (#1008/#1015) so readers can trust it. An uncollected
1163
+ // metric stays null — never 0, never istanbul's 0/0 = 100%.
1164
+ await this.memory.set('coverage:latest', {
1165
+ line: coverage.line,
1166
+ branch: coverage.branch ?? null,
1167
+ function: coverage.function ?? null,
1168
+ statement: coverage.statement ?? null,
1169
+ files: result.fileCoverages?.length ?? 0,
1170
+ measured: true,
1171
+ runStatus,
1172
+ runId,
1173
+ }, { persist: true });
1174
+ // Store per-file coverage via memory.set() (not storeVector) so that
1175
+ // quality-analyzer's getStoredCoverage() can read it with memory.get()
1176
+ for (const fc of result.fileCoverages ?? []) {
1177
+ if (!Number.isFinite(fc.line))
1178
+ continue;
1179
+ // #1027 N7: one key form — the absolute path.
1180
+ await this.memory.set(`coverage:file:${fileCoverageKey(fc.path)}`, {
1181
+ line: fc.line,
1182
+ branch: fc.branch ?? null,
1183
+ function: fc.function ?? null,
1184
+ statement: fc.statement ?? null,
1185
+ measured: true,
1186
+ runStatus,
1132
1187
  }, { persist: true });
1133
- if (Number.isFinite(result.coverage.line)) {
1134
- await writeQualityEvidence(this.memory, {
1135
- coverage: result.coverage.line,
1136
- }, {
1137
- measuredAt: new Date().toISOString(),
1138
- source: 'test-execution coverage',
1139
- });
1140
- }
1141
- // Store per-file coverage via memory.set() (not storeVector) so that
1142
- // quality-analyzer's getStoredCoverage() can read it with memory.get()
1143
- if (result.fileCoverages) {
1144
- for (const fc of result.fileCoverages) {
1145
- await this.memory.set(`coverage:file:${fc.path}`, {
1146
- line: fc.line,
1147
- branch: fc.branch,
1148
- function: fc.function,
1149
- statement: fc.statement,
1150
- }, { persist: true });
1151
- }
1152
- }
1153
- }
1154
- catch {
1155
- // Non-critical — don't break test storage if coverage store fails
1156
1188
  }
1157
1189
  }
1190
+ catch {
1191
+ // Non-critical — don't break test storage if coverage store fails
1192
+ }
1158
1193
  }
1159
1194
  }
1160
1195
  // ============================================================================
@@ -1166,4 +1201,19 @@ Provide:
1166
1201
  export function createTestExecutorService(dependencies, config) {
1167
1202
  return new TestExecutorService(dependencies, config);
1168
1203
  }
1204
+ /** covered/total as a 2-decimal percentage, or null when there is nothing to cover. */
1205
+ function ratio([covered, total]) {
1206
+ return total > 0 ? Math.round((covered / total) * 10000) / 100 : null;
1207
+ }
1208
+ /**
1209
+ * A coverage-summary metric's percentage. istanbul writes `pct: 100` for a
1210
+ * metric with `total: 0`; that is "not collected" — null (#1015).
1211
+ */
1212
+ function summaryPct(metric) {
1213
+ if (!metric || typeof metric.pct !== 'number' || !Number.isFinite(metric.pct))
1214
+ return null;
1215
+ if (typeof metric.total === 'number' && metric.total === 0)
1216
+ return null;
1217
+ return metric.pct;
1218
+ }
1169
1219
  //# sourceMappingURL=test-executor.js.map
@@ -31,6 +31,7 @@ import { DecisionTransformerAlgorithm, } from '../../integrations/rl-suite/algor
31
31
  import { isSONAThreeLoopEnabled } from '../../integrations/ruvector/feature-flags.js';
32
32
  // Coherence Gate Integration (ADR-052)
33
33
  import { createTestGenerationCoherenceGate, } from './services/coherence-gate-service.js';
34
+ import { isMeasuredGapPayload } from '../../shared/events/domain-events.js';
34
35
  const DEFAULT_CONFIG = {
35
36
  maxConcurrentWorkflows: 5,
36
37
  defaultTimeout: 60000, // 60 seconds
@@ -871,6 +872,9 @@ export class TestGenerationCoordinator extends BaseDomainCoordinator {
871
872
  return features.slice(0, 384);
872
873
  }
873
874
  async handleCoverageGapDetected(event) {
875
+ // #1014: only a gap found in MEASURED coverage is acted on / learned from.
876
+ if (!isMeasuredGapPayload(event.payload))
877
+ return;
874
878
  // Auto-generate tests for detected coverage gaps
875
879
  const payload = event.payload;
876
880
  const result = await this.testGenerator.generateForCoverageGap(payload.file, payload.uncoveredLines, 'jest' // Default framework
@@ -10,6 +10,7 @@ import { RoutingFeedbackCollector } from '../../routing/routing-feedback.js';
10
10
  import { createTestGeneratorServiceWithDependencies, } from './services/test-generator.js';
11
11
  import { toError } from '../../shared/error-utils.js';
12
12
  import { PatternMatcherService, } from './services/pattern-matcher.js';
13
+ import { isMeasuredGapPayload } from '../../shared/events/domain-events.js';
13
14
  /**
14
15
  * Test Generation Domain Plugin
15
16
  * Provides AI-powered test generation capabilities
@@ -277,6 +278,9 @@ export class TestGenerationPlugin extends BaseDomainPlugin {
277
278
  // Event Handlers
278
279
  // ============================================================================
279
280
  async handleCoverageGap(event) {
281
+ // #1014: only a gap found in MEASURED coverage is acted on / learned from.
282
+ if (!isMeasuredGapPayload(event.payload))
283
+ return;
280
284
  // Coverage gap detected - could auto-generate tests
281
285
  const payload = event.payload;
282
286
  // Only auto-generate for high-risk gaps
@@ -9,6 +9,7 @@ import { DEFAULT_FEEDBACK_CONFIG } from './types.js';
9
9
  import { getUnifiedMemory } from '../kernel/unified-memory.js';
10
10
  import { toErrorMessage } from '../shared/error-utils.js';
11
11
  import { safeJsonParse } from '../shared/safe-json.js';
12
+ import { MEASURED_COVERAGE_SESSION_SQL } from './coverage-session-provenance.js';
12
13
  // ============================================================================
13
14
  // Coverage Session Store
14
15
  // ============================================================================
@@ -101,8 +102,10 @@ export class CoverageLearner {
101
102
  if (!this.db)
102
103
  return;
103
104
  const database = this.db.getDatabase();
105
+ // #1014: legacy MCP rows without provenance (estimates, 0.0 for
106
+ // unmeasured runs) are not loaded as sessions or learned as strategies.
104
107
  const rows = database.prepare(`
105
- SELECT * FROM coverage_sessions ORDER BY created_at DESC LIMIT ?
108
+ SELECT * FROM coverage_sessions WHERE ${MEASURED_COVERAGE_SESSION_SQL} ORDER BY created_at DESC LIMIT ?
106
109
  `).all(this.config.maxOutcomesInMemory);
107
110
  for (const row of rows.reverse()) {
108
111
  const session = {
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Agentic QE v3 - Provenance of coverage_sessions rows (#1014)
3
+ *
4
+ * Up to 3.15.5 the MCP handler factory (agent `qe-coverage-analysis`) wrote a
5
+ * coverage_sessions row for EVERY coverage_analyze_sublinear call: a static
6
+ * estimate's figure, or 0.0 for an UNMEASURED target. Those rows have no
7
+ * provenance and never expire. Rows written from now on carry
8
+ * `context_json.measured = true`.
9
+ *
10
+ * Readers ignore legacy rows of that agent instead of deleting them (no data
11
+ * is destroyed; the coverage-learner's own retention ages them out). Rows of
12
+ * other writers (e.g. the post-command hook, which records a real istanbul
13
+ * coverage-summary.json) are unaffected.
14
+ */
15
+ /** The agent id of the MCP handler factory's coverage sessions. */
16
+ export declare const MCP_COVERAGE_AGENT_ID = "qe-coverage-analysis";
17
+ /**
18
+ * SQL predicate (no parameters) selecting coverage_sessions rows that are
19
+ * evidence. `CASE` keeps `json_extract` from running on malformed JSON.
20
+ */
21
+ export declare const MEASURED_COVERAGE_SESSION_SQL: string;
22
+ /** JS form of {@link MEASURED_COVERAGE_SESSION_SQL} for rows already loaded. */
23
+ export declare function isMeasuredCoverageSession(row: {
24
+ agent_id?: string;
25
+ agentId?: string;
26
+ context?: unknown;
27
+ context_json?: string | null;
28
+ }): boolean;
29
+ //# sourceMappingURL=coverage-session-provenance.d.ts.map
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Agentic QE v3 - Provenance of coverage_sessions rows (#1014)
3
+ *
4
+ * Up to 3.15.5 the MCP handler factory (agent `qe-coverage-analysis`) wrote a
5
+ * coverage_sessions row for EVERY coverage_analyze_sublinear call: a static
6
+ * estimate's figure, or 0.0 for an UNMEASURED target. Those rows have no
7
+ * provenance and never expire. Rows written from now on carry
8
+ * `context_json.measured = true`.
9
+ *
10
+ * Readers ignore legacy rows of that agent instead of deleting them (no data
11
+ * is destroyed; the coverage-learner's own retention ages them out). Rows of
12
+ * other writers (e.g. the post-command hook, which records a real istanbul
13
+ * coverage-summary.json) are unaffected.
14
+ */
15
+ /** The agent id of the MCP handler factory's coverage sessions. */
16
+ export const MCP_COVERAGE_AGENT_ID = 'qe-coverage-analysis';
17
+ /**
18
+ * SQL predicate (no parameters) selecting coverage_sessions rows that are
19
+ * evidence. `CASE` keeps `json_extract` from running on malformed JSON.
20
+ */
21
+ export const MEASURED_COVERAGE_SESSION_SQL = `(agent_id != '${MCP_COVERAGE_AGENT_ID}' OR ` +
22
+ `(CASE WHEN json_valid(context_json) THEN json_extract(context_json, '$.measured') END) = 1)`;
23
+ /** JS form of {@link MEASURED_COVERAGE_SESSION_SQL} for rows already loaded. */
24
+ export function isMeasuredCoverageSession(row) {
25
+ const agent = row.agent_id ?? row.agentId;
26
+ if (agent !== MCP_COVERAGE_AGENT_ID)
27
+ return true;
28
+ let context = row.context;
29
+ if (context === undefined && typeof row.context_json === 'string') {
30
+ try {
31
+ context = JSON.parse(row.context_json);
32
+ }
33
+ catch {
34
+ return false;
35
+ }
36
+ }
37
+ return !!context && typeof context === 'object' && context.measured === true;
38
+ }
39
+ //# sourceMappingURL=coverage-session-provenance.js.map
@@ -161,6 +161,8 @@ export class ModularInitOrchestrator {
161
161
  workersStarted: workersResult?.data?.workersConfigured ?? 0,
162
162
  codexGuidance: assetsResult?.data?.codexGuidance,
163
163
  codexComponents: assetsResult?.data?.codexComponents,
164
+ retiredAssetsRemoved: assetsResult?.data?.retiredAssetsRemoved,
165
+ retiredAssetsKept: assetsResult?.data?.retiredAssetsKept,
164
166
  },
165
167
  totalDurationMs: Date.now() - startTime,
166
168
  timestamp: new Date(),
@@ -20,6 +20,10 @@ export interface AssetsResult {
20
20
  policy: 'full' | 'compact' | 'none';
21
21
  ownedBytes: number;
22
22
  };
23
+ /** #1017: retired shipped files removed from the project (exact path + shipped hash). */
24
+ retiredAssetsRemoved?: string[];
25
+ /** #1017: retired files left in place (edited, symlinked, or outside the project). */
26
+ retiredAssetsKept?: string[];
23
27
  codexComponents?: {
24
28
  hooks: {
25
29
  status: string;
@@ -8,6 +8,7 @@ import { BasePhase, } from './phase-interface.js';
8
8
  import { createSkillsInstaller } from '../skills-installer.js';
9
9
  import { createAgentsInstaller } from '../agents-installer.js';
10
10
  import { createN8nInstaller } from '../n8n-installer.js';
11
+ import { retireShippedAssets } from '../retired-assets.js';
11
12
  import { installBrowserEngine, detectBrowserEngine, diagnosePlatform, DEFAULT_VIBIUM_SPEC, } from '../browser-engine-installer.js';
12
13
  import { initializeOverlays } from '../../routing/qe-agent-registry.js';
13
14
  /**
@@ -38,6 +39,8 @@ export class AssetsPhase extends BasePhase {
38
39
  let kiroHooks = 0;
39
40
  let codexGuidance;
40
41
  let codexComponents;
42
+ let retiredAssetsRemoved = [];
43
+ let retiredAssetsKept = [];
41
44
  if (options.upgrade) {
42
45
  context.services.log(` Upgrade mode: overwriting existing files`);
43
46
  }
@@ -58,6 +61,36 @@ export class AssetsPhase extends BasePhase {
58
61
  context.services.warn(`Skills warnings: ${skillsResult.errors.join(', ')}`);
59
62
  }
60
63
  }
64
+ // #1017: remove files earlier releases shipped under names the user's test
65
+ // runner collects. Runs on EVERY init that manages the Claude skills, not
66
+ // only --upgrade: plain `init --auto` on an existing install skips skills
67
+ // that are already present, so without this the stale copies would never
68
+ // leave. It is safe on every run because only an exact path whose content
69
+ // still equals a shipped version is deleted (edited copies keep their whole
70
+ // group), and the renamed replacements are installed so the skill keeps
71
+ // working without --upgrade.
72
+ if (!options.noClaude) {
73
+ const retired = retireShippedAssets(projectRoot, {
74
+ sourceSkillsDir: createSkillsInstaller({ projectRoot }).getSourceSkillsDir(),
75
+ });
76
+ retiredAssetsRemoved = retired.removed;
77
+ retiredAssetsKept = retired.kept.flatMap((k) => k.files);
78
+ for (const relPath of retired.removed) {
79
+ context.services.log(` Removed retired asset: ${relPath}`);
80
+ }
81
+ for (const relPath of [...retired.installed, ...retired.refreshed]) {
82
+ context.services.log(` Updated skill file: ${relPath}`);
83
+ }
84
+ for (const kept of retired.kept) {
85
+ context.services.warn(`Kept ${kept.files.join(', ')}: ${kept.why}. ${kept.advice}.`);
86
+ }
87
+ for (const note of retired.replacementWarnings) {
88
+ context.services.warn(`Skill file kept: ${note}.`);
89
+ }
90
+ if (retired.missingReplacements.length > 0) {
91
+ context.services.warn(`Could not install ${retired.missingReplacements.join(', ')}; run "aqe init --upgrade" to refresh the skills.`);
92
+ }
93
+ }
61
94
  // Install agents (Claude Code surface — skipped with --no-claude, #532)
62
95
  if (!options.noClaude) {
63
96
  try {
@@ -354,6 +387,8 @@ export class AssetsPhase extends BasePhase {
354
387
  browserEngine,
355
388
  codexGuidance,
356
389
  codexComponents,
390
+ retiredAssetsRemoved,
391
+ retiredAssetsKept,
357
392
  };
358
393
  }
359
394
  /**
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Retired shipped assets (#1017).
3
+ *
4
+ * Earlier releases copied files into the user's project that 3.15.6 renames.
5
+ * Re-running `aqe init` skips skills that already exist, so an existing install
6
+ * would keep the stale copies, and their test-glob names make the user's own
7
+ * vitest / jest collect AQE's eval fixtures.
8
+ *
9
+ * Each group is retired as a unit:
10
+ * - A retired file is removable only when its path matches exactly, it is a
11
+ * regular file (not a symlink), its resolved parent directory is inside the
12
+ * project root (no symlinked ancestor), and its sha256 equals a version AQE
13
+ * actually shipped.
14
+ * - If ANY present file in a group is not removable (edited, symlink, outside
15
+ * the project, unreadable), the whole group is kept. Deleting a pristine
16
+ * `budget.ts` next to a kept `budget.test.ts` would break the user's test run
17
+ * with "Cannot find module './budget'".
18
+ * - After removal, the renamed replacements are installed from the package
19
+ * (never overwriting an existing file), and companion files that still name
20
+ * the old files (README, eval yaml) are refreshed only when they are AQE's
21
+ * unmodified shipped copies. Plain `init --auto` therefore leaves a working
22
+ * skill without overwriting user edits.
23
+ */
24
+ export interface RetiredFile {
25
+ /** Path relative to the project root, '/'-separated. */
26
+ readonly relPath: string;
27
+ /** sha256 (hex) of every distinct content AQE shipped at this path. */
28
+ readonly shippedSha256: readonly string[];
29
+ }
30
+ export interface ReplacementFile {
31
+ /** Destination relative to the project root. */
32
+ readonly relPath: string;
33
+ /** Source relative to the package skills directory (assets/skills). */
34
+ readonly source: string;
35
+ }
36
+ export interface RefreshFile extends ReplacementFile {
37
+ /** sha256 of every earlier shipped version; only those are overwritten. */
38
+ readonly previousSha256: readonly string[];
39
+ }
40
+ export interface RetiredAssetGroup {
41
+ readonly id: string;
42
+ /** Retired together: if one is kept, all are kept. */
43
+ readonly retired: readonly RetiredFile[];
44
+ /** Installed (if absent) once the group is retired. */
45
+ readonly replacements: readonly ReplacementFile[];
46
+ /** Overwritten once the group is retired, only if still AQE's unmodified copy. */
47
+ readonly refresh: readonly RefreshFile[];
48
+ /** Why the group was retired / what to do if it is kept. */
49
+ readonly advice: string;
50
+ }
51
+ /**
52
+ * Hashes are of `git show <tag>:assets/skills/<path>` over every v3 release tag.
53
+ * Retired files: one distinct content each (v3.13.0–v3.15.5 for qe-court,
54
+ * v3.0.0–v3.15.5 for testability-scoring); the same bytes now ship under the
55
+ * new names, which a unit test pins. Refreshed files list every earlier shipped
56
+ * content (qe-court.yaml changed once, at v3.14.0).
57
+ */
58
+ export declare const RETIRED_ASSET_GROUPS: readonly RetiredAssetGroup[];
59
+ export interface RetireOptions {
60
+ /** Package skills directory (assets/skills) used for replacements and refreshes. */
61
+ sourceSkillsDir?: string;
62
+ groups?: readonly RetiredAssetGroup[];
63
+ }
64
+ export interface RetireResult {
65
+ /** Retired files removed (exact path + shipped content). */
66
+ removed: string[];
67
+ /** Renamed replacements installed. */
68
+ installed: string[];
69
+ /** Companion files updated from AQE's unmodified copy. */
70
+ refreshed: string[];
71
+ /** Groups left in place, with the files, the cause, and what to do. */
72
+ kept: Array<{
73
+ group: string;
74
+ files: string[];
75
+ why: string;
76
+ advice: string;
77
+ }>;
78
+ /** Replacements that could not be installed (missing package source or unsafe target). */
79
+ missingReplacements: string[];
80
+ /** Why a replacement target was left alone (symlink or other non-file in the way). */
81
+ replacementWarnings: string[];
82
+ }
83
+ export declare function sha256Hex(content: Buffer): string;
84
+ /** Remove retired assets AQE shipped unmodified, install replacements; keep anything else. */
85
+ export declare function retireShippedAssets(projectRoot: string, options?: RetireOptions): RetireResult;
86
+ //# sourceMappingURL=retired-assets.d.ts.map