agentic-qe 3.15.8 → 3.15.9

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 (479) hide show
  1. package/.claude/skills/skills-manifest.json +1 -1
  2. package/CHANGELOG.md +183 -0
  3. package/assets/skills/skills-manifest.json +1 -1
  4. package/dist/agents/claim-verifier/claim-verifier-service.js +13 -8
  5. package/dist/bridge/captured-experience-bridge.js +12 -13
  6. package/dist/cli/bundle.js +6 -6
  7. package/dist/cli/chunks/adapter-R2Q4QGXQ.js +2 -0
  8. package/dist/cli/chunks/{agent-booster-wasm-W3V5P7LE.js → agent-booster-wasm-427FRKWG.js} +2 -2
  9. package/dist/cli/chunks/{agent-handler-2NQFHAWE.js → agent-handler-RIYHTHVZ.js} +2 -2
  10. package/dist/cli/chunks/{agent-memory-branch-457ECHHK.js → agent-memory-branch-WSUCUHOO.js} +2 -2
  11. package/dist/cli/chunks/aqe-learning-engine-3RENLQWP.js +2 -0
  12. package/dist/cli/chunks/{arena-JV3WSEHU.js → arena-KRIBMIXX.js} +2 -2
  13. package/dist/cli/chunks/{arena-IYBQ3GPY.js → arena-YAJZX6MC.js} +4 -4
  14. package/dist/cli/chunks/{audit-5OS3T3K6.js → audit-7ZNOXWP3.js} +3 -3
  15. package/dist/cli/chunks/base-67DXSAYM.js +2 -0
  16. package/dist/cli/chunks/{better-sqlite3-IQKBFVAO.js → better-sqlite3-ZQAT4I6H.js} +2 -2
  17. package/dist/cli/chunks/{brain-handler-KA3SGAFM.js → brain-handler-452WCPZC.js} +3 -3
  18. package/dist/cli/chunks/{branch-enumerator-QZDU2VOQ.js → branch-enumerator-IJFXJRPN.js} +2 -2
  19. package/dist/cli/chunks/{browser-ZL7OLKJQ.js → browser-CT3MTV6G.js} +2 -2
  20. package/dist/cli/chunks/browser-workflow-NDXRROWZ.js +2 -0
  21. package/dist/cli/chunks/{chunk-IJSFZO7P.js → chunk-2BA45H64.js} +2 -2
  22. package/dist/cli/chunks/{chunk-6GIC2263.js → chunk-2HL3UM5P.js} +2 -2
  23. package/dist/cli/chunks/{chunk-KVMKYUOE.js → chunk-2I2UPJS7.js} +2 -2
  24. package/dist/cli/chunks/{chunk-22DOS3PM.js → chunk-2TDIS6YK.js} +2 -2
  25. package/dist/cli/chunks/{chunk-5MBNRTT5.js → chunk-2URBI52G.js} +2 -2
  26. package/dist/cli/chunks/{chunk-A6GCO6ZU.js → chunk-2XITOPYV.js} +2 -2
  27. package/dist/cli/chunks/{chunk-I77D65X5.js → chunk-2YH62JCN.js} +2 -2
  28. package/dist/cli/chunks/{chunk-2JCLACCS.js → chunk-32UTLDNY.js} +2 -2
  29. package/dist/cli/chunks/{chunk-UTNKMPTC.js → chunk-37BIGMJI.js} +1 -1
  30. package/dist/cli/chunks/{chunk-767SR7WH.js → chunk-3CJCROMW.js} +2 -2
  31. package/dist/cli/chunks/{chunk-LVHZK7GW.js → chunk-3LYU7BLY.js} +2 -2
  32. package/dist/cli/chunks/{chunk-5DZDLOY6.js → chunk-47TYABPD.js} +3 -3
  33. package/dist/cli/chunks/{chunk-SWY6KGMF.js → chunk-47V7FQGX.js} +2 -2
  34. package/dist/cli/chunks/{chunk-KMZW2P3R.js → chunk-4JCY45KV.js} +2 -2
  35. package/dist/cli/chunks/{chunk-D4IBIMWI.js → chunk-4SUOVLJ6.js} +2 -2
  36. package/dist/cli/chunks/{chunk-J7RCI25Q.js → chunk-4URT6JO2.js} +1 -1
  37. package/dist/cli/chunks/{chunk-SHEVM5PF.js → chunk-4V27J6YN.js} +2 -2
  38. package/dist/cli/chunks/{chunk-JWPYMRIX.js → chunk-4W4DYVSH.js} +1 -1
  39. package/dist/cli/chunks/chunk-55HRSNGN.js +2 -0
  40. package/dist/cli/chunks/{chunk-R2NHGESM.js → chunk-5D2I7JUP.js} +2 -2
  41. package/dist/cli/chunks/{chunk-GGSTLKY5.js → chunk-5JWGCIQW.js} +1 -1
  42. package/dist/cli/chunks/chunk-5LAAZLUC.js +4 -0
  43. package/dist/cli/chunks/{chunk-YNQPHRUZ.js → chunk-5NS3USRW.js} +1 -1
  44. package/dist/cli/chunks/{chunk-4YUBWU3E.js → chunk-6EPHNJTL.js} +1 -1
  45. package/dist/cli/chunks/{chunk-ZBI7PJFX.js → chunk-6OOYIO3W.js} +2 -2
  46. package/dist/cli/chunks/{chunk-ST7ASEJO.js → chunk-6PXA2BQJ.js} +58 -58
  47. package/dist/cli/chunks/{chunk-LPSMVBB3.js → chunk-6YL6JOQB.js} +2 -2
  48. package/dist/cli/chunks/{chunk-DY37YMMQ.js → chunk-72AMFDC7.js} +1 -1
  49. package/dist/cli/chunks/{chunk-OWBFVAEH.js → chunk-763SUL4B.js} +2 -2
  50. package/dist/cli/chunks/{chunk-4GYFONJB.js → chunk-7DMA5NYL.js} +1 -1
  51. package/dist/cli/chunks/{chunk-4GUVVGJX.js → chunk-7JKB3Q7O.js} +1 -1
  52. package/dist/cli/chunks/{chunk-DN3AKAPY.js → chunk-7KII4CQG.js} +2 -2
  53. package/dist/cli/chunks/{chunk-VKFVJCIH.js → chunk-7QGYJ5OY.js} +1 -1
  54. package/dist/cli/chunks/{chunk-HNGNRIZZ.js → chunk-7QTB5VJZ.js} +2 -2
  55. package/dist/cli/chunks/{chunk-GSOK4M6V.js → chunk-7X2Y727E.js} +1 -1
  56. package/dist/cli/chunks/{chunk-PZ7FJ4UG.js → chunk-A4RU67VX.js} +2 -2
  57. package/dist/cli/chunks/{chunk-VWSGWYRB.js → chunk-A6YIH4C4.js} +2 -2
  58. package/dist/cli/chunks/{chunk-4I35ARWW.js → chunk-ABFDB4X3.js} +1 -1
  59. package/dist/cli/chunks/{chunk-NQDYOF35.js → chunk-AJ4YDSOI.js} +2 -2
  60. package/dist/cli/chunks/{chunk-CDLG3Q2O.js → chunk-AOFO4N32.js} +2 -2
  61. package/dist/cli/chunks/{chunk-WAWKAYPY.js → chunk-AQTVVLNP.js} +1 -1
  62. package/dist/cli/chunks/chunk-AR2E4B7K.js +6 -0
  63. package/dist/cli/chunks/{chunk-HXCGV5UJ.js → chunk-AVB5QY2Q.js} +2 -2
  64. package/dist/cli/chunks/{chunk-JFWQFB3S.js → chunk-BHKXMIWX.js} +2 -2
  65. package/dist/cli/chunks/{chunk-BEVWCF3Q.js → chunk-BXO536GT.js} +3 -3
  66. package/dist/cli/chunks/{chunk-IMSRWNWF.js → chunk-C6RTMTEH.js} +1 -1
  67. package/dist/cli/chunks/{chunk-UKKFZJME.js → chunk-CTZJUV5I.js} +1 -1
  68. package/dist/cli/chunks/{chunk-MV4S3TEC.js → chunk-D6XVGFTI.js} +2 -2
  69. package/dist/cli/chunks/{chunk-5YOO5QSE.js → chunk-DDPPSSHW.js} +1 -1
  70. package/dist/cli/chunks/{chunk-NHOMVBCI.js → chunk-DGTLJNJH.js} +2 -2
  71. package/dist/cli/chunks/{chunk-NWFBF3KT.js → chunk-DINZR5CF.js} +1 -1
  72. package/dist/cli/chunks/{chunk-RG42LDOB.js → chunk-EFBLP43U.js} +2 -2
  73. package/dist/cli/chunks/chunk-ETG7O5E5.js +5 -0
  74. package/dist/cli/chunks/{chunk-KNHLOANK.js → chunk-F2SQPP6U.js} +2 -2
  75. package/dist/cli/chunks/{chunk-62T7U25U.js → chunk-F3PQZX44.js} +1 -1
  76. package/dist/cli/chunks/{chunk-X3HM7SV4.js → chunk-F4JYIRW2.js} +2 -2
  77. package/dist/cli/chunks/{chunk-NZATJ2C6.js → chunk-FJ4VTLLK.js} +2 -2
  78. package/dist/cli/chunks/{chunk-TMNEK7TP.js → chunk-FL3OYGCS.js} +2 -2
  79. package/dist/cli/chunks/{chunk-HI6OBDDY.js → chunk-FLASM2XB.js} +2 -2
  80. package/dist/cli/chunks/{chunk-GENNJRNK.js → chunk-FV3NHVC7.js} +22 -22
  81. package/dist/cli/chunks/{chunk-PICEGWGB.js → chunk-FV7VAG74.js} +1 -1
  82. package/dist/cli/chunks/{chunk-PWA6XBW4.js → chunk-G3BKZNFL.js} +5 -5
  83. package/dist/cli/chunks/{chunk-T2TDTBFV.js → chunk-GBUIG3FS.js} +1 -1
  84. package/dist/cli/chunks/{chunk-QFYUZYRA.js → chunk-GCWSX2NY.js} +4 -4
  85. package/dist/cli/chunks/{chunk-KJNUETCB.js → chunk-GII5WVAK.js} +1 -1
  86. package/dist/cli/chunks/{chunk-YVWMJZ6O.js → chunk-GKPQ2GRR.js} +2 -2
  87. package/dist/cli/chunks/chunk-GR3JYE5A.js +2 -0
  88. package/dist/cli/chunks/{chunk-CQ5G64EA.js → chunk-H3KBIWTO.js} +2 -2
  89. package/dist/cli/chunks/{chunk-V4QJ3MMT.js → chunk-HAROIAJE.js} +1 -1
  90. package/dist/cli/chunks/{chunk-OJWEZYLR.js → chunk-HCYQHWI2.js} +2 -2
  91. package/dist/cli/chunks/{chunk-FAYXES7R.js → chunk-HGTWAZWU.js} +2 -2
  92. package/dist/cli/chunks/{chunk-LHRVSK44.js → chunk-HTZJSQ3C.js} +2 -2
  93. package/dist/cli/chunks/{chunk-DAFMHM64.js → chunk-HWK5L7IJ.js} +2 -2
  94. package/dist/cli/chunks/{chunk-K5R3WUJP.js → chunk-HZ5NC6U5.js} +1 -1
  95. package/dist/cli/chunks/{chunk-Y5ZBF7MA.js → chunk-I6S35FRO.js} +2 -2
  96. package/dist/cli/chunks/{chunk-UDCYQLTD.js → chunk-ICP2ORGI.js} +2 -2
  97. package/dist/cli/chunks/{chunk-KMVFBYJO.js → chunk-IFEIY3NQ.js} +2 -2
  98. package/dist/cli/chunks/{chunk-NW7HTOSN.js → chunk-J3DTDJDT.js} +2 -2
  99. package/dist/cli/chunks/chunk-J3WGK22W.js +2 -0
  100. package/dist/cli/chunks/{chunk-5ONJ7AV6.js → chunk-J5KNRVXR.js} +1 -1
  101. package/dist/cli/chunks/{chunk-G77Q22EN.js → chunk-JAV5WPSY.js} +2 -2
  102. package/dist/cli/chunks/{chunk-VVK4ECVJ.js → chunk-JEP4ULR6.js} +2 -2
  103. package/dist/cli/chunks/{chunk-TC52M542.js → chunk-JK2ME6IT.js} +2 -2
  104. package/dist/cli/chunks/chunk-JNNZK7KH.js +2 -0
  105. package/dist/cli/chunks/{chunk-NLYUC63R.js → chunk-JP4P3P3D.js} +2 -2
  106. package/dist/cli/chunks/{chunk-BTMEOZYY.js → chunk-JUVHZG7I.js} +1 -1
  107. package/dist/cli/chunks/{chunk-PUYQ6EKC.js → chunk-JWGRWMZP.js} +2 -2
  108. package/dist/cli/chunks/{chunk-OCLAMZJG.js → chunk-K5DJXMAA.js} +2 -2
  109. package/dist/cli/chunks/{chunk-X7ZQIFES.js → chunk-KFUUIAR4.js} +2 -2
  110. package/dist/cli/chunks/chunk-KHSRIPBP.js +180 -0
  111. package/dist/cli/chunks/{chunk-U3BWBP6B.js → chunk-KIKWJM6J.js} +2 -2
  112. package/dist/cli/chunks/{chunk-MUDBF2JC.js → chunk-KIXYKUCI.js} +1 -1
  113. package/dist/cli/chunks/{chunk-P4UT4LBE.js → chunk-KLGYIEJK.js} +3 -3
  114. package/dist/cli/chunks/{chunk-G6CLO74Q.js → chunk-KR3M44CF.js} +3 -3
  115. package/dist/cli/chunks/chunk-KTSLTZSG.js +2 -0
  116. package/dist/cli/chunks/{chunk-FJAO4UX2.js → chunk-KVBEGOJE.js} +2 -2
  117. package/dist/cli/chunks/{chunk-BLZEOGQE.js → chunk-L42JPFCC.js} +2 -2
  118. package/dist/cli/chunks/{chunk-ZOVAZTXE.js → chunk-LCJTEUDC.js} +370 -370
  119. package/dist/cli/chunks/{chunk-JLTGO5BB.js → chunk-LEAKYZ37.js} +2 -2
  120. package/dist/cli/chunks/{chunk-RSMPJWQH.js → chunk-LMU5DUDK.js} +1 -1
  121. package/dist/cli/chunks/{chunk-FEN2DHFM.js → chunk-MZS32SYS.js} +1 -1
  122. package/dist/cli/chunks/{chunk-J7FLNP5L.js → chunk-N3KEY4XJ.js} +2 -2
  123. package/dist/cli/chunks/{chunk-ZG7UKWBB.js → chunk-N3NP6PTT.js} +2 -2
  124. package/dist/cli/chunks/{chunk-2DPHFCMW.js → chunk-N5PDFGCQ.js} +2 -2
  125. package/dist/cli/chunks/{chunk-BQUIZ5QT.js → chunk-NDKLQW6N.js} +2 -2
  126. package/dist/cli/chunks/{chunk-52YRSWPS.js → chunk-NHZIWIQZ.js} +2 -2
  127. package/dist/cli/chunks/{chunk-ZOHS32SI.js → chunk-NTAD5UX4.js} +2 -2
  128. package/dist/cli/chunks/{chunk-7H3GNRNA.js → chunk-O3JLOVZX.js} +2 -2
  129. package/dist/cli/chunks/{chunk-7XGM7Q2N.js → chunk-OCESWNAZ.js} +3 -3
  130. package/dist/cli/chunks/{chunk-7SLEUVPZ.js → chunk-OG2UI6A3.js} +2 -2
  131. package/dist/cli/chunks/{chunk-4TZLZRZ4.js → chunk-OXTFSIGN.js} +1 -1
  132. package/dist/cli/chunks/{chunk-2QRGIEQV.js → chunk-OXZLKP6C.js} +1 -1
  133. package/dist/cli/chunks/{chunk-FEPFXXI7.js → chunk-P2CXVNKK.js} +2 -2
  134. package/dist/cli/chunks/{chunk-P2EA62YS.js → chunk-P73W2K7T.js} +1 -1
  135. package/dist/cli/chunks/{chunk-V7VZSNDK.js → chunk-PBZI2ZPV.js} +3 -3
  136. package/dist/cli/chunks/{chunk-MMY52Y6R.js → chunk-PMCRCEW5.js} +2 -2
  137. package/dist/cli/chunks/{chunk-FWXNFPLS.js → chunk-PVIA2FPD.js} +2 -2
  138. package/dist/cli/chunks/{chunk-NF63NHJH.js → chunk-PX2B5TS2.js} +2 -2
  139. package/dist/cli/chunks/{chunk-SFPGLUXS.js → chunk-Q3JVJRVJ.js} +1 -1
  140. package/dist/cli/chunks/{chunk-XOOBLZXR.js → chunk-QQ5SZH4D.js} +2 -2
  141. package/dist/cli/chunks/{chunk-KITKQUBX.js → chunk-QTVWUQTB.js} +1 -1
  142. package/dist/cli/chunks/{chunk-2UN4JOTN.js → chunk-REUFWGMA.js} +2 -2
  143. package/dist/cli/chunks/{chunk-CQ3SBRDP.js → chunk-SNBYYO6F.js} +2 -2
  144. package/dist/cli/chunks/{chunk-A2UGPKCS.js → chunk-SVHUYVUR.js} +2 -2
  145. package/dist/cli/chunks/{chunk-PIEKGKW6.js → chunk-THAY7WHO.js} +2 -2
  146. package/dist/cli/chunks/{chunk-WLXGUQOZ.js → chunk-TNMQVG4A.js} +2 -2
  147. package/dist/cli/chunks/{chunk-2GSAAUW3.js → chunk-TSYQDRNK.js} +1 -1
  148. package/dist/cli/chunks/{chunk-7DHSHD5B.js → chunk-TUYJ53V4.js} +2 -2
  149. package/dist/cli/chunks/{chunk-U7CIY3YR.js → chunk-UNUTC6TX.js} +2 -2
  150. package/dist/cli/chunks/{chunk-CRUQ6RXU.js → chunk-UOJBR4J3.js} +2 -2
  151. package/dist/cli/chunks/{chunk-3LFLO2WK.js → chunk-UOWHE77F.js} +2 -2
  152. package/dist/cli/chunks/{chunk-O4RRVTXN.js → chunk-UYLYMWV5.js} +2 -2
  153. package/dist/cli/chunks/{chunk-D4O3TJI7.js → chunk-V5PXQSFS.js} +2 -2
  154. package/dist/cli/chunks/{chunk-VQRBBR27.js → chunk-VCMINU7K.js} +2 -2
  155. package/dist/cli/chunks/{chunk-3N627QRU.js → chunk-VQHVHVSF.js} +2 -2
  156. package/dist/cli/chunks/{chunk-J6LL25QJ.js → chunk-VRGCKBF7.js} +2 -2
  157. package/dist/cli/chunks/{chunk-VWRNG3UK.js → chunk-VU2EL424.js} +1 -1
  158. package/dist/cli/chunks/{chunk-KNQUHGNY.js → chunk-VXZJOKOX.js} +2 -2
  159. package/dist/cli/chunks/{chunk-EUVSSIGR.js → chunk-VYLM2YV5.js} +3 -3
  160. package/dist/cli/chunks/{chunk-PJGQ2TKN.js → chunk-W32YU3VI.js} +2 -2
  161. package/dist/cli/chunks/{chunk-YRH7KMTU.js → chunk-W5VJRDDG.js} +2 -2
  162. package/dist/cli/chunks/{chunk-PPIM7B5G.js → chunk-WGDR2KIR.js} +2 -2
  163. package/dist/cli/chunks/{chunk-2ZRNXEVI.js → chunk-WRRCQ2UE.js} +1 -1
  164. package/dist/cli/chunks/{chunk-7C6FMLQR.js → chunk-XDBD4GXO.js} +2 -2
  165. package/dist/cli/chunks/{chunk-W5A36V3Z.js → chunk-XOLDMK23.js} +2 -2
  166. package/dist/cli/chunks/{chunk-DCYUHCPK.js → chunk-XOVNZT7F.js} +1 -1
  167. package/dist/cli/chunks/{chunk-4C7KE2EL.js → chunk-XQ3DDY7X.js} +2 -2
  168. package/dist/cli/chunks/{chunk-K4N2MBCE.js → chunk-XUIA5KMS.js} +2 -2
  169. package/dist/cli/chunks/{chunk-YUP3APSN.js → chunk-XWIUFYM3.js} +1 -1
  170. package/dist/cli/chunks/{chunk-SJMZZMHP.js → chunk-XYCKHYBM.js} +2 -2
  171. package/dist/cli/chunks/{chunk-4NTLGGXO.js → chunk-XZJ2O3VC.js} +1 -1
  172. package/dist/cli/chunks/{chunk-UQLAN5TX.js → chunk-YRBBBUJX.js} +5 -5
  173. package/dist/cli/chunks/{chunk-XZQVC3GD.js → chunk-YZGSJG34.js} +1 -1
  174. package/dist/cli/chunks/{chunk-7CVMT64N.js → chunk-YZYDTABJ.js} +1 -1
  175. package/dist/cli/chunks/{chunk-4C3RYBTT.js → chunk-ZANDSVCK.js} +2 -2
  176. package/dist/cli/chunks/{chunk-6E7EOHMN.js → chunk-ZBDRLF43.js} +2 -2
  177. package/dist/cli/chunks/{chunk-UTFMMZ57.js → chunk-ZVSLCEVC.js} +3 -3
  178. package/dist/cli/chunks/{chunk-DKFSCJEF.js → chunk-ZXBCCO2H.js} +2 -2
  179. package/dist/cli/chunks/{ci-7NUCRGWO.js → ci-7SGRCFPS.js} +2 -2
  180. package/dist/cli/chunks/{ci-config-VQVECCFI.js → ci-config-MX3URPZA.js} +2 -2
  181. package/dist/cli/chunks/{ci-output-P7GQ6TKF.js → ci-output-M47NJY6D.js} +2 -2
  182. package/dist/cli/chunks/{circuit-breaker-5YP6N6HE.js → circuit-breaker-5GAK45SW.js} +2 -2
  183. package/dist/cli/chunks/{claude-flow-setup-W5H7CMU6.js → claude-flow-setup-YXYSRH4Y.js} +2 -2
  184. package/dist/cli/chunks/client-ZP3CTVRF.js +2 -0
  185. package/dist/cli/chunks/{cline-installer-OYANSZ54.js → cline-installer-DLJ5QD5N.js} +2 -2
  186. package/dist/cli/chunks/{code-OMT4UEZI.js → code-ONKLMVQ2.js} +25 -24
  187. package/dist/cli/chunks/{code-index-extractor-M2JEWKNF.js → code-index-extractor-2232LGZN.js} +2 -2
  188. package/dist/cli/chunks/{codex-installer-YBS6N5O3.js → codex-installer-UOWLYCMH.js} +2 -2
  189. package/dist/cli/chunks/{completions-U7GS5RG6.js → completions-MHX7GCC7.js} +2 -2
  190. package/dist/cli/chunks/{complexity-analyzer-QSXPIUIU.js → complexity-analyzer-43ZUJKZU.js} +2 -2
  191. package/dist/cli/chunks/{continuedev-installer-W5TTT743.js → continuedev-installer-6Q5JR4FF.js} +2 -2
  192. package/dist/cli/chunks/{copilot-installer-KC2RT24C.js → copilot-installer-CZUMVHSI.js} +2 -2
  193. package/dist/cli/chunks/core-handlers-JSRXQWPE.js +2 -0
  194. package/dist/cli/chunks/{cost-tracker-OQPVR6V4.js → cost-tracker-VS5ZW3XN.js} +2 -2
  195. package/dist/cli/chunks/{coverage-TCO2A2NX.js → coverage-VWKTWZ6D.js} +3 -3
  196. package/dist/cli/chunks/cross-domain-router-7UKODQWG.js +2 -0
  197. package/dist/cli/chunks/{cursor-installer-MH7GWD4L.js → cursor-installer-YIFEMORH.js} +2 -2
  198. package/dist/cli/chunks/{daemon-UJEARJZ2.js → daemon-SHWJSJW5.js} +7 -7
  199. package/dist/cli/chunks/daemon-YIFT46FH.js +34 -0
  200. package/dist/cli/chunks/{dag-attention-scheduler-F3SUJU5O.js → dag-attention-scheduler-TCC2WM46.js} +2 -2
  201. package/dist/cli/chunks/{detect-5QTCRB32.js → detect-IGTWSQMA.js} +2 -2
  202. package/dist/cli/chunks/{dist-node-XKZPHDBO.js → dist-node-TCOTJVQX.js} +2 -2
  203. package/dist/cli/chunks/{domain-handler-V3UEADKW.js → domain-handler-55ZVYODR.js} +2 -2
  204. package/dist/cli/chunks/{domain-plugins-7PES4UHZ.js → domain-plugins-GJRWOHQP.js} +2 -2
  205. package/dist/cli/chunks/{domain-transfer-NF7UJW7B.js → domain-transfer-6EF75EKU.js} +2 -2
  206. package/dist/cli/chunks/dream-UDLM6M55.js +2 -0
  207. package/dist/cli/chunks/{embed-and-insert-pattern-D2HWORHF.js → embed-and-insert-pattern-XAMNIKQL.js} +2 -2
  208. package/dist/cli/chunks/{eval-UF2UBAUC.js → eval-GO22R4OZ.js} +2 -2
  209. package/dist/cli/chunks/{experience-capture-middleware-2OUCEHHM.js → experience-capture-middleware-F2BRMJ3Y.js} +3 -3
  210. package/dist/cli/chunks/{fast-paths-KV5DKKHC.js → fast-paths-6RGPYALD.js} +2 -2
  211. package/dist/cli/chunks/{feature-flags-6YWMTNO5.js → feature-flags-MIWQIOHU.js} +2 -2
  212. package/dist/cli/chunks/{feature-flags-MTW6NMR3.js → feature-flags-ZGS3KLPH.js} +2 -2
  213. package/dist/cli/chunks/file-discovery-THWOUQ7Z.js +2 -0
  214. package/dist/cli/chunks/fleet-ADL57COA.js +44 -0
  215. package/dist/cli/chunks/{gnn-wrapper-52V6ANOY.js → gnn-wrapper-ALBJVW6T.js} +2 -2
  216. package/dist/cli/chunks/{heartbeat-handler-X7NHNRC7.js → heartbeat-handler-ZMM53NDY.js} +4 -4
  217. package/dist/cli/chunks/heartbeat-scheduler-HGOC5KH3.js +2 -0
  218. package/dist/cli/chunks/hnsw-adapter-EPSA6AP7.js +2 -0
  219. package/dist/cli/chunks/hnsw-index-RMFOPYGY.js +2 -0
  220. package/dist/cli/chunks/{hnsw-legacy-bridge-DZBE3KMK.js → hnsw-legacy-bridge-RYUJPA7B.js} +2 -2
  221. package/dist/cli/chunks/{hnswlib-node-2AWWUJAZ.js → hnswlib-node-XM6XF3YV.js} +2 -2
  222. package/dist/cli/chunks/{hooks-XLPVROL3.js → hooks-X62O7TJO.js} +10 -10
  223. package/dist/cli/chunks/hybrid-backend-NZ3G4WBX.js +2 -0
  224. package/dist/cli/chunks/{hypergraph-engine-6TI7YP6P.js → hypergraph-engine-ZBWUPTVD.js} +2 -2
  225. package/dist/cli/chunks/{hypergraph-handler-DBIBBOXS.js → hypergraph-handler-DUMF6SJV.js} +3 -3
  226. package/dist/cli/chunks/impact-analyzer-WZC6NHFP.js +2 -0
  227. package/dist/cli/chunks/{init-guard-OSO6MIDD.js → init-guard-S4I2R46S.js} +2 -2
  228. package/dist/cli/chunks/{init-handler-7S7IHMUF.js → init-handler-L4KJHVWS.js} +6 -6
  229. package/dist/cli/chunks/init-wizard-422UZYQ5.js +2 -0
  230. package/dist/cli/chunks/kernel-N7PJ6FCE.js +2 -0
  231. package/dist/cli/chunks/{kilocode-installer-2KBRFXMA.js → kilocode-installer-GNNB5FCZ.js} +2 -2
  232. package/dist/cli/chunks/{kiro-installer-5VFR4OQZ.js → kiro-installer-HR6ZAH7T.js} +2 -2
  233. package/dist/cli/chunks/knowledge-graph-SZCVQF37.js +2 -0
  234. package/dist/cli/chunks/{learning-G5NHL3DV.js → learning-4IEEOHJS.js} +3 -3
  235. package/dist/cli/chunks/{llm-router-4EAPPMHS.js → llm-router-ZFMORP36.js} +4 -4
  236. package/dist/cli/chunks/llm-router-service-4DE5WDUZ.js +2 -0
  237. package/dist/cli/chunks/{load-UYMZPEY6.js → load-ZM43WGDO.js} +2 -2
  238. package/dist/cli/chunks/load-test-POMIF4Q4.js +2 -0
  239. package/dist/cli/chunks/{mcp-NOTDZBW5.js → mcp-CRZKZE37.js} +2 -2
  240. package/dist/cli/chunks/{memory-QL53YIHP.js → memory-W5FZGVAD.js} +5 -5
  241. package/dist/cli/chunks/memory-backend-4P6AHSOY.js +2 -0
  242. package/dist/cli/chunks/memory-handlers-NK6NV3GE.js +2 -0
  243. package/dist/cli/chunks/{multi-model-executor-PDDDXF2B.js → multi-model-executor-SXXGAQ2G.js} +2 -2
  244. package/dist/cli/chunks/{opencode-installer-75D2SKOT.js → opencode-installer-PIRBUAB5.js} +2 -2
  245. package/dist/cli/chunks/{orchestrator-3WIZBV4T.js → orchestrator-H5SQCQTB.js} +11 -10
  246. package/dist/cli/chunks/pattern-null-store-CCHQHGQG.js +2 -0
  247. package/dist/cli/chunks/{pattern-usage-recorder-TEX2JGHA.js → pattern-usage-recorder-XZTWDI2T.js} +2 -2
  248. package/dist/cli/chunks/{pipeline-7ATPA6LU.js → pipeline-5LMLBIJ7.js} +2 -2
  249. package/dist/cli/chunks/{platform-WPSKRJE7.js → platform-KJDABL5C.js} +2 -2
  250. package/dist/cli/chunks/{plugin-UUFOVVMU.js → plugin-V4KSBVVM.js} +2 -2
  251. package/dist/cli/chunks/{prime-radiant-advanced-wasm-PDFSYWKZ.js → prime-radiant-advanced-wasm-JDHTKQAT.js} +2 -2
  252. package/dist/cli/chunks/project-root-X72FSM2F.js +2 -0
  253. package/dist/cli/chunks/protocol-executor-QW6XN6QN.js +2 -0
  254. package/dist/cli/chunks/{protocol-handler-3VRYRIQB.js → protocol-handler-BNRONTQV.js} +2 -2
  255. package/dist/cli/chunks/{prove-2NAUROGF.js → prove-ELLL6XMX.js} +2 -2
  256. package/dist/cli/chunks/qe-reasoning-bank-ZD3WF647.js +2 -0
  257. package/dist/cli/chunks/{quality-ZIEI2WGA.js → quality-NH2QA4D4.js} +2 -2
  258. package/dist/cli/chunks/{quality-gate-KWJO4SWQ.js → quality-gate-JTKLF7GW.js} +3 -3
  259. package/dist/cli/chunks/queen-coordinator-S4U4MKK2.js +2 -0
  260. package/dist/cli/chunks/{real-embeddings-TSZ4UIAE.js → real-embeddings-J3KCKLPB.js} +2 -2
  261. package/dist/cli/chunks/{ref-validation-DWFFRETJ.js → ref-validation-HNXQRP4F.js} +2 -2
  262. package/dist/cli/chunks/{roocode-installer-XTZHLUBO.js → roocode-installer-COJ6CX6S.js} +2 -2
  263. package/dist/cli/chunks/router-CXZKOOTR.js +2 -0
  264. package/dist/cli/chunks/routing-feedback-IYFANYY5.js +2 -0
  265. package/dist/cli/chunks/{routing-handler-GG525TDM.js → routing-handler-WM33ZILE.js} +2 -2
  266. package/dist/cli/chunks/{ruvector-commands-QKRJDM7Z.js → ruvector-commands-BBLXEA7A.js} +2 -2
  267. package/dist/cli/chunks/rvf-dual-writer-HCLQ5WUQ.js +2 -0
  268. package/dist/cli/chunks/rvf-migration-adapter-XCLUWOO3.js +2 -0
  269. package/dist/cli/chunks/{rvf-migration-coordinator-FF52OS6Q.js → rvf-migration-coordinator-P7H6HCAG.js} +2 -2
  270. package/dist/cli/chunks/rvf-native-adapter-MRT5H3IP.js +2 -0
  271. package/dist/cli/chunks/{rvf-store-integrity-M6DXTAZ4.js → rvf-store-integrity-R5SPVRFP.js} +2 -2
  272. package/dist/cli/chunks/safe-db-WFODRGVZ.js +2 -0
  273. package/dist/cli/chunks/schedule-RO55OQXG.js +2 -0
  274. package/dist/cli/chunks/scheduler-XXMJCH24.js +2 -0
  275. package/dist/cli/chunks/{security-EHXSW22U.js → security-AUDTRX3I.js} +3 -3
  276. package/dist/cli/chunks/{shared-rvf-adapter-6EH7UVJL.js → shared-rvf-adapter-PVDGBGI2.js} +2 -2
  277. package/dist/cli/chunks/{shared-rvf-dual-writer-WML274E7.js → shared-rvf-dual-writer-LZ2GMSS2.js} +2 -2
  278. package/dist/cli/chunks/sqlite-persistence-AWRIS4MK.js +2 -0
  279. package/dist/cli/chunks/{standalone-memory-C7QKAXS4.js → standalone-memory-XNOAI4G4.js} +2 -2
  280. package/dist/cli/chunks/{status-handler-VLI7MRLM.js → status-handler-K72XZE4T.js} +2 -2
  281. package/dist/cli/chunks/{structural-health-3LPG6MQN.js → structural-health-NF3YY7U5.js} +2 -2
  282. package/dist/cli/chunks/{sync-4IMMQEPT.js → sync-UVXA6CT2.js} +2 -2
  283. package/dist/cli/chunks/{sync-JFJEJBVK.js → sync-VBD5Y3E2.js} +2 -2
  284. package/dist/cli/chunks/{task-handler-IED3K6E4.js → task-handler-24S3WFVJ.js} +13 -7
  285. package/dist/cli/chunks/task-handlers-GUYW2EPJ.js +9 -0
  286. package/dist/cli/chunks/{test-GPKT3CKZ.js → test-XFSGQELD.js} +4 -4
  287. package/dist/cli/chunks/{test-scheduling-Z42XXZP6.js → test-scheduling-VYUQ4CDE.js} +3 -3
  288. package/dist/cli/chunks/{token-bootstrap-HMM3AHXM.js → token-bootstrap-EDK6FNQ3.js} +2 -2
  289. package/dist/cli/chunks/{token-usage-6Y2ERYIY.js → token-usage-VLQ6WO2L.js} +2 -2
  290. package/dist/cli/chunks/{transformers-MB63T2XO.js → transformers-TOFMWWNM.js} +2 -2
  291. package/dist/cli/chunks/{tree-sitter-wasm-parser-56GDQCMR.js → tree-sitter-wasm-parser-MI3NZKUD.js} +2 -2
  292. package/dist/cli/chunks/{types-J4J6QV3I.js → types-JTWLBAZJ.js} +2 -2
  293. package/dist/cli/chunks/unified-memory-6JWHV6EF.js +2 -0
  294. package/dist/cli/chunks/unified-memory-hnsw-4UANU6NU.js +2 -0
  295. package/dist/cli/chunks/unified-persistence-KGGNA46H.js +2 -0
  296. package/dist/cli/chunks/{upgrade-U4XU7LFM.js → upgrade-4ABM72T4.js} +2 -2
  297. package/dist/cli/chunks/{validate-B57HA4YK.js → validate-UDJCWKXI.js} +2 -2
  298. package/dist/cli/chunks/{validate-swarm-UPPA4M6T.js → validate-swarm-TODOUWNN.js} +2 -2
  299. package/dist/cli/chunks/visual-security-6VZNQLH7.js +2 -0
  300. package/dist/cli/chunks/{web-tree-sitter-GDZMUKOZ.js → web-tree-sitter-WBMAJPM5.js} +2 -2
  301. package/dist/cli/chunks/{windsurf-installer-VJRWCHXP.js → windsurf-installer-BTT53TUL.js} +2 -2
  302. package/dist/cli/chunks/witness-chain-AKKHWEWU.js +2 -0
  303. package/dist/cli/chunks/{witness-chain-LFASSMZK.js → witness-chain-TATPXQRK.js} +2 -2
  304. package/dist/cli/chunks/{witness-chain-repair-TPHN4DXN.js → witness-chain-repair-2HGJGE7O.js} +2 -2
  305. package/dist/cli/chunks/{witness-chain-verifier-Z23FVABW.js → witness-chain-verifier-FRY3LMGH.js} +2 -2
  306. package/dist/cli/chunks/{witness-key-manager-745MJ7WO.js → witness-key-manager-X7QHQQWL.js} +2 -2
  307. package/dist/cli/chunks/{workflow-T245QNQM.js → workflow-QMZPAWQW.js} +4 -4
  308. package/dist/cli/chunks/workflow-orchestrator-4GAW7HNZ.js +2 -0
  309. package/dist/cli/chunks/{wrappers-WCAYIQUX.js → wrappers-ZD5NBHYI.js} +2 -2
  310. package/dist/cli/commands/code.js +8 -0
  311. package/dist/cli/commands/daemon.js +8 -0
  312. package/dist/cli/commands/fleet.js +14 -9
  313. package/dist/cli/handlers/task-handler.js +21 -1
  314. package/dist/coordination/handlers/code-intelligence-handlers.js +14 -2
  315. package/dist/coordination/handlers/coverage-collection.js +9 -10
  316. package/dist/coordination/handlers/coverage-handlers.js +21 -3
  317. package/dist/coordination/handlers/coverage-runner.d.ts +2 -1
  318. package/dist/coordination/handlers/coverage-runner.js +9 -2
  319. package/dist/coordination/handlers/coverage-target.d.ts +13 -3
  320. package/dist/coordination/handlers/coverage-target.js +224 -7
  321. package/dist/coordination/handlers/handler-types.d.ts +2 -0
  322. package/dist/coordination/handlers/test-execution-handlers.js +32 -5
  323. package/dist/coordination/index.d.ts +2 -2
  324. package/dist/coordination/index.js +1 -1
  325. package/dist/coordination/protocols/learning-consolidation-archive.d.ts +39 -0
  326. package/dist/coordination/protocols/learning-consolidation-archive.js +57 -0
  327. package/dist/coordination/protocols/learning-consolidation.d.ts +38 -3
  328. package/dist/coordination/protocols/learning-consolidation.js +128 -50
  329. package/dist/coordination/queen-coordinator.d.ts +12 -1
  330. package/dist/coordination/queen-coordinator.js +24 -1
  331. package/dist/coordination/queen-event-handlers.js +2 -1
  332. package/dist/coordination/queen-lifecycle.js +9 -0
  333. package/dist/coordination/queen-task-management.js +113 -40
  334. package/dist/coordination/queen-types.d.ts +10 -0
  335. package/dist/coordination/queen-types.js +8 -0
  336. package/dist/coordination/task-dag/dag-algorithms.d.ts +33 -0
  337. package/dist/coordination/task-dag/dag-algorithms.js +162 -0
  338. package/dist/coordination/task-dag/dag-obligations.d.ts +21 -0
  339. package/dist/coordination/task-dag/dag-obligations.js +83 -0
  340. package/dist/coordination/task-dag/dag.d.ts +69 -19
  341. package/dist/coordination/task-dag/dag.js +215 -269
  342. package/dist/coordination/task-dag/index.d.ts +12 -4
  343. package/dist/coordination/task-dag/index.js +11 -3
  344. package/dist/coordination/task-dag/prerequisite-ledger.d.ts +84 -0
  345. package/dist/coordination/task-dag/prerequisite-ledger.js +252 -0
  346. package/dist/coordination/task-dag/scheduler.d.ts +19 -9
  347. package/dist/coordination/task-dag/scheduler.js +36 -12
  348. package/dist/coordination/task-dag/types.d.ts +160 -1
  349. package/dist/coordination/task-dag/types.js +2 -1
  350. package/dist/coordination/task-executability.d.ts +18 -0
  351. package/dist/coordination/task-executability.js +31 -0
  352. package/dist/coordination/task-executor.d.ts +1 -0
  353. package/dist/coordination/task-executor.js +5 -0
  354. package/dist/domains/code-intelligence/coordinator.js +35 -9
  355. package/dist/domains/code-intelligence/index-path-guard.d.ts +49 -0
  356. package/dist/domains/code-intelligence/index-path-guard.js +125 -0
  357. package/dist/domains/code-intelligence/interfaces.d.ts +12 -0
  358. package/dist/domains/code-intelligence/services/knowledge-graph.d.ts +6 -0
  359. package/dist/domains/code-intelligence/services/knowledge-graph.js +42 -5
  360. package/dist/domains/contract-testing/coordinator.js +3 -1
  361. package/dist/domains/defect-intelligence/services/defect-predictor.js +4 -2
  362. package/dist/domains/learning-optimization/active-patterns.d.ts +12 -12
  363. package/dist/domains/learning-optimization/active-patterns.js +15 -12
  364. package/dist/domains/learning-optimization/coordinator-helpers.js +2 -3
  365. package/dist/domains/learning-optimization/coordinator.d.ts +0 -3
  366. package/dist/domains/learning-optimization/coordinator.js +43 -102
  367. package/dist/domains/learning-optimization/index.d.ts +1 -1
  368. package/dist/domains/learning-optimization/interfaces.d.ts +56 -4
  369. package/dist/domains/learning-optimization/plugin.js +11 -1
  370. package/dist/domains/learning-optimization/reward-source.d.ts +37 -0
  371. package/dist/domains/learning-optimization/reward-source.js +58 -0
  372. package/dist/domains/learning-optimization/services/learning-coordinator.d.ts +4 -4
  373. package/dist/domains/learning-optimization/services/learning-coordinator.js +59 -23
  374. package/dist/domains/learning-optimization/services/metrics-optimizer.d.ts +14 -4
  375. package/dist/domains/learning-optimization/services/metrics-optimizer.js +129 -63
  376. package/dist/domains/learning-optimization/services/transfer-specialist.js +25 -15
  377. package/dist/domains/test-execution/interfaces.d.ts +16 -0
  378. package/dist/domains/test-execution/services/runner-test-cases.d.ts +21 -0
  379. package/dist/domains/test-execution/services/runner-test-cases.js +69 -0
  380. package/dist/domains/test-execution/services/test-executor.d.ts +5 -0
  381. package/dist/domains/test-execution/services/test-executor.js +24 -2
  382. package/dist/init/fleet-integration.js +2 -0
  383. package/dist/init/init-wizard-steps.js +2 -0
  384. package/dist/init/phases/06-code-intelligence.js +2 -0
  385. package/dist/init/phases/10-workers.js +2 -1
  386. package/dist/kernel/anti-drift-middleware.d.ts +44 -5
  387. package/dist/kernel/anti-drift-middleware.js +147 -11
  388. package/dist/kernel/interfaces.d.ts +5 -0
  389. package/dist/learning/dream/dream-insights-pruner.d.ts +18 -4
  390. package/dist/learning/dream/dream-insights-pruner.js +99 -11
  391. package/dist/learning/skill-validation-learner.d.ts +2 -0
  392. package/dist/learning/skill-validation-learner.js +29 -21
  393. package/dist/mcp/background-workers.js +8 -2
  394. package/dist/mcp/bundle.js +507 -483
  395. package/dist/mcp/handlers/domain-handler-configs.d.ts +14 -0
  396. package/dist/mcp/handlers/domain-handler-configs.js +68 -30
  397. package/dist/mcp/handlers/handler-factory.js +1 -0
  398. package/dist/mcp/handlers/task-handlers.js +37 -1
  399. package/dist/mcp/metrics/metrics-collector.d.ts +11 -9
  400. package/dist/mcp/metrics/metrics-collector.js +13 -26
  401. package/dist/mcp/protocol-server.js +8 -3
  402. package/dist/mcp/tools/learning-optimization/optimize.d.ts +34 -3
  403. package/dist/mcp/tools/learning-optimization/optimize.js +106 -70
  404. package/dist/memory/crdt/lww-register.js +11 -1
  405. package/dist/routing/calibration/ema-calibrator.js +3 -1
  406. package/dist/shared/base-domain-plugin.d.ts +4 -0
  407. package/dist/shared/base-domain-plugin.js +6 -0
  408. package/dist/shared/llm/cache.js +4 -1
  409. package/dist/shared/security/compliance-patterns.js +3 -1
  410. package/dist/shared/test-runner-process.d.ts +26 -0
  411. package/dist/shared/test-runner-process.js +91 -0
  412. package/dist/shared/types/index.d.ts +9 -0
  413. package/dist/shared/types/index.js +13 -0
  414. package/dist/shared/utils/namespaced-search.d.ts +42 -0
  415. package/dist/shared/utils/namespaced-search.js +53 -0
  416. package/dist/strange-loop/infra-healing/infra-action-executor.js +7 -3
  417. package/dist/strange-loop/infra-healing/infra-healing-orchestrator.js +10 -9
  418. package/dist/workers/daemon.d.ts +2 -0
  419. package/dist/workers/daemon.js +10 -5
  420. package/dist/workers/namespaced-keys.d.ts +4 -7
  421. package/dist/workers/namespaced-keys.js +4 -15
  422. package/dist/workers/quality-daemon/ci-monitor.js +9 -5
  423. package/dist/workers/worker-env.d.ts +16 -8
  424. package/dist/workers/worker-env.js +25 -12
  425. package/dist/workers/worker-manager.js +4 -0
  426. package/dist/workers/workers/learning-consolidation.d.ts +1 -1
  427. package/dist/workers/workers/learning-consolidation.js +11 -8
  428. package/package.json +1 -1
  429. package/dist/cli/chunks/adapter-FC4EY447.js +0 -2
  430. package/dist/cli/chunks/aqe-learning-engine-AUAL6UBL.js +0 -2
  431. package/dist/cli/chunks/base-2XML4WH7.js +0 -2
  432. package/dist/cli/chunks/browser-workflow-2IFEUAAK.js +0 -2
  433. package/dist/cli/chunks/chunk-6CKTLVYV.js +0 -2
  434. package/dist/cli/chunks/chunk-I4U7YCXG.js +0 -180
  435. package/dist/cli/chunks/chunk-LZWBUVCK.js +0 -5
  436. package/dist/cli/chunks/chunk-X6VYQVUM.js +0 -2
  437. package/dist/cli/chunks/chunk-YTYS2XSY.js +0 -2
  438. package/dist/cli/chunks/chunk-Z3LDUPLQ.js +0 -6
  439. package/dist/cli/chunks/chunk-ZWMFKZEQ.js +0 -3
  440. package/dist/cli/chunks/client-RFUSQRUZ.js +0 -2
  441. package/dist/cli/chunks/core-handlers-ZC7QB432.js +0 -2
  442. package/dist/cli/chunks/cross-domain-router-GRBK7YFZ.js +0 -2
  443. package/dist/cli/chunks/daemon-JER6HE2J.js +0 -12
  444. package/dist/cli/chunks/dream-VALD726W.js +0 -2
  445. package/dist/cli/chunks/file-discovery-VL73ASNI.js +0 -2
  446. package/dist/cli/chunks/fleet-GJ66QFXK.js +0 -43
  447. package/dist/cli/chunks/heartbeat-scheduler-FSX7A3ZA.js +0 -2
  448. package/dist/cli/chunks/hnsw-adapter-UX2QT6RL.js +0 -2
  449. package/dist/cli/chunks/hnsw-index-WRDDAMXH.js +0 -2
  450. package/dist/cli/chunks/hybrid-backend-O67NGIB5.js +0 -2
  451. package/dist/cli/chunks/impact-analyzer-6VXWWYWM.js +0 -2
  452. package/dist/cli/chunks/init-wizard-VH34J4TL.js +0 -2
  453. package/dist/cli/chunks/kernel-KJD24NO7.js +0 -2
  454. package/dist/cli/chunks/knowledge-graph-343O2HEZ.js +0 -2
  455. package/dist/cli/chunks/llm-router-service-2M4BT2AO.js +0 -2
  456. package/dist/cli/chunks/load-test-OTQ2JQ5F.js +0 -2
  457. package/dist/cli/chunks/memory-backend-4QSNRRV6.js +0 -2
  458. package/dist/cli/chunks/memory-handlers-YFFYRSM6.js +0 -2
  459. package/dist/cli/chunks/pattern-null-store-5USH5MNR.js +0 -2
  460. package/dist/cli/chunks/project-root-SRTA6TBL.js +0 -2
  461. package/dist/cli/chunks/protocol-executor-4WYPCNBS.js +0 -2
  462. package/dist/cli/chunks/qe-reasoning-bank-I4D6SFS4.js +0 -2
  463. package/dist/cli/chunks/queen-coordinator-24UMTZTE.js +0 -2
  464. package/dist/cli/chunks/router-AUD4GATI.js +0 -2
  465. package/dist/cli/chunks/routing-feedback-2FE6SIKQ.js +0 -2
  466. package/dist/cli/chunks/rvf-dual-writer-P5LEUF25.js +0 -2
  467. package/dist/cli/chunks/rvf-migration-adapter-ZCYD5YJS.js +0 -2
  468. package/dist/cli/chunks/rvf-native-adapter-QGV6BW2W.js +0 -2
  469. package/dist/cli/chunks/safe-db-Q6JUKG2A.js +0 -2
  470. package/dist/cli/chunks/schedule-44OSMGE5.js +0 -2
  471. package/dist/cli/chunks/scheduler-V3HO2QQT.js +0 -2
  472. package/dist/cli/chunks/sqlite-persistence-N5T7DWMR.js +0 -2
  473. package/dist/cli/chunks/task-handlers-FH6DNTHW.js +0 -9
  474. package/dist/cli/chunks/unified-memory-RQ3Q4CU3.js +0 -2
  475. package/dist/cli/chunks/unified-memory-hnsw-ZOP5FEYX.js +0 -2
  476. package/dist/cli/chunks/unified-persistence-72OCJJKK.js +0 -2
  477. package/dist/cli/chunks/visual-security-7F5UV23J.js +0 -2
  478. package/dist/cli/chunks/witness-chain-KZ57QUFE.js +0 -2
  479. package/dist/cli/chunks/workflow-orchestrator-ZNWEUYBN.js +0 -2
@@ -23,6 +23,11 @@ export interface LearnedPattern {
23
23
  readonly template: PatternTemplate;
24
24
  readonly createdAt: Date;
25
25
  readonly lastUsedAt: Date;
26
+ /**
27
+ * #1109: 'assigned' when the pattern's rates were learned from assigned
28
+ * rewards. Untagged patterns are read by `patternRewardSourceOf`.
29
+ */
30
+ readonly rewardSource?: 'measured' | 'assigned';
26
31
  }
27
32
  export type PatternType = 'test-pattern' | 'fix-pattern' | 'optimization-pattern' | 'detection-pattern' | 'workflow-pattern' | 'failure-pattern';
28
33
  export interface PatternContext {
@@ -63,6 +68,13 @@ export interface Experience {
63
68
  * when real matched-pattern data exists, never a placeholder.
64
69
  */
65
70
  readonly appliedPatternIds?: readonly string[];
71
+ /**
72
+ * #1109: whether `result.success` and `reward` come from an observed
73
+ * outcome ('measured') or were assigned by the recorder before any outcome
74
+ * existed ('assigned'). Assigned experiences are kept but excluded from
75
+ * every reported rate. Untagged rows are read by `rewardSourceOf`.
76
+ */
77
+ readonly rewardSource?: 'measured' | 'assigned';
66
78
  }
67
79
  export interface StateSnapshot {
68
80
  readonly context: Record<string, unknown>;
@@ -110,9 +122,25 @@ export interface OptimizedStrategy {
110
122
  readonly objective: OptimizationObjective;
111
123
  readonly currentStrategy: Strategy;
112
124
  readonly optimizedStrategy: Strategy;
125
+ /** Relative improvement; an estimate, see `evaluation.estimated` (#1099). */
113
126
  readonly improvement: number;
127
+ /** Share of held-out experiences matching the fitted expectation. */
114
128
  readonly confidence: number;
115
129
  readonly validationResults: ValidationResult[];
130
+ readonly evaluation?: OptimizationEvaluation;
131
+ }
132
+ /**
133
+ * How an optimization's figures were derived (#1099). The optimizer fits on
134
+ * the older experiences and validates on the most recent ones it never saw.
135
+ */
136
+ export interface OptimizationEvaluation {
137
+ readonly method: 'held-out';
138
+ readonly trainingSamples: number;
139
+ readonly heldOutSamples: number;
140
+ /** Figures that were modelled, not observed: the optimized strategy never ran. */
141
+ readonly estimated: string[];
142
+ /** Figures that could not be computed from the experiences given. */
143
+ readonly unmeasured?: string[];
116
144
  }
117
145
  export interface OptimizationObjective {
118
146
  readonly metric: string;
@@ -205,6 +233,8 @@ export interface PatternStats {
205
233
  readonly avgConfidence: number;
206
234
  readonly avgSuccessRate: number;
207
235
  readonly topPatterns: LearnedPattern[];
236
+ /** #1109: patterns left out of every figure because they were learned from assigned rewards. */
237
+ readonly assignedPatternsExcluded?: number;
208
238
  }
209
239
  /**
210
240
  * Experience Mining Service
@@ -233,9 +263,16 @@ export interface IExperienceMiningService {
233
263
  clusterExperiences(experiences: Experience[]): Promise<Result<ExperienceCluster[]>>;
234
264
  }
235
265
  export interface MinedInsights {
266
+ /** Every experience recorded in the range, measured or assigned. */
236
267
  readonly experienceCount: number;
237
- readonly successRate: number;
238
- readonly avgReward: number;
268
+ /** #1109: experiences with a measured outcome; the rates below use only these. */
269
+ readonly measuredExperienceCount?: number;
270
+ /** #1109: experiences left out of the rates because their reward was assigned. */
271
+ readonly assignedRewardsExcluded?: number;
272
+ /** Set when no measured experience exists; the rates are then null. */
273
+ readonly evidenceStatus?: 'insufficient-evidence';
274
+ readonly successRate: number | null;
275
+ readonly avgReward: number | null;
239
276
  readonly patterns: LearnedPattern[];
240
277
  readonly anomalies: ExperienceAnomaly[];
241
278
  readonly recommendations: string[];
@@ -245,7 +282,8 @@ export interface ExperienceCluster {
245
282
  readonly centroid: StateSnapshot;
246
283
  readonly experiences: Experience[];
247
284
  readonly commonActions: string[];
248
- readonly avgReward: number;
285
+ /** Over members with a measured outcome; null when every member's reward was assigned. */
286
+ readonly avgReward: number | null;
249
287
  }
250
288
  export interface ExperienceAnomaly {
251
289
  readonly experienceId: string;
@@ -283,9 +321,15 @@ export interface ABTestConfig {
283
321
  }
284
322
  export interface ABTestResult {
285
323
  readonly winner: 'A' | 'B' | 'inconclusive';
324
+ /** Set when either strategy has fewer recorded samples than `minSamples`. */
325
+ readonly evidenceStatus?: 'insufficient-evidence';
326
+ readonly unmeasured?: string[];
286
327
  readonly strategyAMetrics: Record<string, number>;
287
328
  readonly strategyBMetrics: Record<string, number>;
288
- readonly pValue: number;
329
+ /** Absent when there was not enough recorded evidence to test. */
330
+ readonly pValue?: number;
331
+ /** Why pValue is absent although both arms had enough samples. */
332
+ readonly pValueUnavailableReason?: 'zero-variance';
289
333
  readonly sampleSizeA: number;
290
334
  readonly sampleSizeB: number;
291
335
  }
@@ -295,6 +339,9 @@ export interface StrategyEvaluation {
295
339
  readonly strengths: string[];
296
340
  readonly weaknesses: string[];
297
341
  readonly improvementAreas: string[];
342
+ /** #1109: no measured experience was available, so no metric is reported. */
343
+ readonly evidenceStatus?: 'insufficient-evidence';
344
+ readonly assignedRewardsExcluded?: number;
298
345
  }
299
346
  /**
300
347
  * Knowledge Synthesis Service
@@ -419,15 +466,20 @@ export interface Improvement {
419
466
  readonly before: number;
420
467
  readonly after: number;
421
468
  readonly percentChange: number;
469
+ /** True when `after` and `percentChange` were modelled, not observed (#1099). */
470
+ readonly estimated?: boolean;
422
471
  }
423
472
  export interface OptimizationReport {
424
473
  readonly domainsOptimized: number;
425
474
  readonly totalStrategies: number;
475
+ /** Mean of the optimizers' estimated improvements (#1099). */
426
476
  readonly avgImprovement: number;
477
+ readonly improvementEstimated?: boolean;
427
478
  readonly byDomain: Record<DomainName, DomainOptimizationResult>;
428
479
  }
429
480
  export interface DomainOptimizationResult {
430
481
  readonly strategiesOptimized: number;
482
+ /** Estimated, see OptimizedStrategy.evaluation (#1099). */
431
483
  readonly avgImprovement: number;
432
484
  readonly bestStrategy: Strategy;
433
485
  }
@@ -397,6 +397,8 @@ export class LearningOptimizationPlugin extends BaseDomainPlugin {
397
397
  duration: 0,
398
398
  },
399
399
  reward: 0.8,
400
+ // #1109: generation is recorded before any run, so no outcome exists yet.
401
+ rewardSource: 'assigned',
400
402
  // ADR-110: real matched-pattern IDs from test-generation/coordinator.ts's
401
403
  // GeneratedTests.patternsUsed. This event always represents a successful
402
404
  // generation, so nulls won't fire from here in practice — threaded for
@@ -435,6 +437,7 @@ export class LearningOptimizationPlugin extends BaseDomainPlugin {
435
437
  duration: payload.duration,
436
438
  },
437
439
  reward: successRate,
440
+ rewardSource: 'measured',
438
441
  });
439
442
  // Record production metric
440
443
  await this.productionIntel.recordMetric('test_success_rate', successRate, 'ratio', 'test-execution', ['automated']);
@@ -462,6 +465,8 @@ export class LearningOptimizationPlugin extends BaseDomainPlugin {
462
465
  duration: 0,
463
466
  },
464
467
  reward: 1 - payload.riskScore,
468
+ // #1109: finding a gap is not an observed success of the detection.
469
+ rewardSource: 'assigned',
465
470
  });
466
471
  }
467
472
  async handleQualityGate(event) {
@@ -484,6 +489,7 @@ export class LearningOptimizationPlugin extends BaseDomainPlugin {
484
489
  duration: 0,
485
490
  },
486
491
  reward: payload.passed ? 1 : 0,
492
+ rewardSource: 'measured',
487
493
  });
488
494
  }
489
495
  async handleDefectPredicted(event) {
@@ -505,7 +511,9 @@ export class LearningOptimizationPlugin extends BaseDomainPlugin {
505
511
  outcome: { probability: payload.probability },
506
512
  duration: 0,
507
513
  },
508
- reward: 0.7, // Predictions are valuable
514
+ reward: 0.7,
515
+ // #1109: the prediction has not been confirmed or refuted yet.
516
+ rewardSource: 'assigned',
509
517
  });
510
518
  }
511
519
  async handleImpactAnalysis(event) {
@@ -534,6 +542,8 @@ export class LearningOptimizationPlugin extends BaseDomainPlugin {
534
542
  duration: 0,
535
543
  },
536
544
  reward: 0.8,
545
+ // #1109: the analysis has no observed outcome to score.
546
+ rewardSource: 'assigned',
537
547
  });
538
548
  }
539
549
  // ============================================================================
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Agentic QE v3 - Experience reward provenance (#1109)
3
+ *
4
+ * Some event handlers record an experience before any outcome has been
5
+ * observed: a generated test, a defect prediction, an impact analysis or a
6
+ * detected coverage gap is stored with a fixed `success: true` and a reward
7
+ * the handler chose. Those experiences are kept, but they are tagged
8
+ * `rewardSource: 'assigned'` and excluded from every reported success rate,
9
+ * confidence, ranking, milestone, average reward and anomaly baseline.
10
+ *
11
+ * Reading rule for rows written before the tag existed:
12
+ * - `rewardSource` present: it is authoritative.
13
+ * - absent, and the row was written by one of the event handlers that always
14
+ * assigned its reward (matched on agent + action below): `assigned`.
15
+ * - absent otherwise: `measured`. Every other writer derived success and
16
+ * reward from an observed outcome (test-run pass rate, quality-gate verdict,
17
+ * captured task quality).
18
+ *
19
+ * Patterns learned before the tag existed are read the same way: a pattern
20
+ * whose template lists only actions from those handlers, in the handler's own
21
+ * domain, was mined from assigned rewards (its 100% rate came from them).
22
+ */
23
+ import type { Experience, LearnedPattern } from './interfaces.js';
24
+ export type RewardSource = 'measured' | 'assigned';
25
+ type ProvenanceFields = Pick<Experience, 'agentId' | 'action' | 'rewardSource'>;
26
+ export declare function rewardSourceOf(experience: ProvenanceFields): RewardSource;
27
+ export declare function isMeasuredExperience(experience: ProvenanceFields): boolean;
28
+ /** Split experiences into those with a measured outcome and a count of the rest. */
29
+ export declare function partitionByRewardSource<T extends ProvenanceFields>(experiences: readonly T[]): {
30
+ measured: T[];
31
+ assignedExcluded: number;
32
+ };
33
+ type PatternProvenanceFields = Pick<LearnedPattern, 'domain' | 'template' | 'rewardSource'>;
34
+ export declare function patternRewardSourceOf(pattern: PatternProvenanceFields): RewardSource;
35
+ export declare function isMeasuredPattern(pattern: PatternProvenanceFields): boolean;
36
+ export {};
37
+ //# sourceMappingURL=reward-source.d.ts.map
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Agentic QE v3 - Experience reward provenance (#1109)
3
+ *
4
+ * Some event handlers record an experience before any outcome has been
5
+ * observed: a generated test, a defect prediction, an impact analysis or a
6
+ * detected coverage gap is stored with a fixed `success: true` and a reward
7
+ * the handler chose. Those experiences are kept, but they are tagged
8
+ * `rewardSource: 'assigned'` and excluded from every reported success rate,
9
+ * confidence, ranking, milestone, average reward and anomaly baseline.
10
+ *
11
+ * Reading rule for rows written before the tag existed:
12
+ * - `rewardSource` present: it is authoritative.
13
+ * - absent, and the row was written by one of the event handlers that always
14
+ * assigned its reward (matched on agent + action below): `assigned`.
15
+ * - absent otherwise: `measured`. Every other writer derived success and
16
+ * reward from an observed outcome (test-run pass rate, quality-gate verdict,
17
+ * captured task quality).
18
+ *
19
+ * Patterns learned before the tag existed are read the same way: a pattern
20
+ * whose template lists only actions from those handlers, in the handler's own
21
+ * domain, was mined from assigned rewards (its 100% rate came from them).
22
+ */
23
+ /** `agentId.value:action` pairs whose untagged rows carry an assigned reward. */
24
+ const LEGACY_ASSIGNED = new Set([
25
+ 'test-generation:test-generated',
26
+ 'coverage-analysis:gap-detection',
27
+ 'defect-intelligence:defect-prediction',
28
+ 'code-intelligence:impact-analysis',
29
+ ]);
30
+ export function rewardSourceOf(experience) {
31
+ if (experience.rewardSource)
32
+ return experience.rewardSource;
33
+ return LEGACY_ASSIGNED.has(`${experience.agentId?.value}:${experience.action}`)
34
+ ? 'assigned'
35
+ : 'measured';
36
+ }
37
+ export function isMeasuredExperience(experience) {
38
+ return rewardSourceOf(experience) === 'measured';
39
+ }
40
+ /** Split experiences into those with a measured outcome and a count of the rest. */
41
+ export function partitionByRewardSource(experiences) {
42
+ const measured = experiences.filter(isMeasuredExperience);
43
+ return { measured, assignedExcluded: experiences.length - measured.length };
44
+ }
45
+ const COMMON_ACTIONS_LINE = /^\/\/ Common actions: (.*)$/m;
46
+ export function patternRewardSourceOf(pattern) {
47
+ if (pattern.rewardSource)
48
+ return pattern.rewardSource;
49
+ const line = COMMON_ACTIONS_LINE.exec(pattern.template?.content ?? '');
50
+ const actions = line ? line[1].split(',').map((a) => a.trim()).filter(Boolean) : [];
51
+ const allAssigned = actions.length > 0
52
+ && actions.every((action) => LEGACY_ASSIGNED.has(`${pattern.domain}:${action}`));
53
+ return allAssigned ? 'assigned' : 'measured';
54
+ }
55
+ export function isMeasuredPattern(pattern) {
56
+ return patternRewardSourceOf(pattern) === 'measured';
57
+ }
58
+ //# sourceMappingURL=reward-source.js.map
@@ -120,7 +120,7 @@ export declare class LearningCoordinatorService implements IPatternLearningServi
120
120
  /**
121
121
  * Learn a pattern from a set of experiences
122
122
  */
123
- learnPattern(experiences: Experience[]): Promise<Result<LearnedPattern>>;
123
+ learnPattern(input: Experience[]): Promise<Result<LearnedPattern>>;
124
124
  /**
125
125
  * Find patterns matching the given context
126
126
  */
@@ -153,9 +153,9 @@ export declare class LearningCoordinatorService implements IPatternLearningServi
153
153
  */
154
154
  private getNullStore;
155
155
  private recordPatternNulls;
156
- /**
157
- * Mine experiences for insights
158
- */
156
+ /** Read recorded input without the pattern-mining side effects. */
157
+ getExperiences(domain: DomainName, timeRange: TimeRange): Promise<Result<Experience[]>>;
158
+ /** Mine experiences for insights. */
159
159
  mineExperiences(domain: DomainName, timeRange: TimeRange): Promise<Result<MinedInsights>>;
160
160
  /**
161
161
  * Calculate reward for an experience result
@@ -8,6 +8,7 @@ import { ok, err } from '../../../shared/types/index.js';
8
8
  import { rehydrateDates } from '../../../shared/utils/kv-date-rehydrate.js';
9
9
  import { toError } from '../../../shared/error-utils.js';
10
10
  import { readActivePatterns } from '../active-patterns.js';
11
+ import { isMeasuredPattern, partitionByRewardSource } from '../reward-source.js';
11
12
  import { createQEFlashAttention, } from '../../../integrations/ruvector/wrappers.js';
12
13
  import { getClaudeModelForTier } from '../../../shared/llm/model-registry.js';
13
14
  import { createSafeRecord } from '../../../shared/utils/safe-record.js';
@@ -39,10 +40,7 @@ const LEARNING_NS = { namespace: 'learning-optimization' };
39
40
  * provenance and archived patterns written by this service.
40
41
  */
41
42
  function readActiveLearnedPatterns(memory) {
42
- return readActivePatterns(memory, {
43
- retrieve: LEARNING_NS,
44
- onTruncated: (scanned) => logger.warn('Active pattern key scan hit its cap; results may be incomplete', { scanned }),
45
- });
43
+ return readActivePatterns(memory, { retrieve: LEARNING_NS });
46
44
  }
47
45
  export class LearningCoordinatorService {
48
46
  config;
@@ -216,10 +214,15 @@ Provide:
216
214
  /**
217
215
  * Learn a pattern from a set of experiences
218
216
  */
219
- async learnPattern(experiences) {
217
+ async learnPattern(input) {
220
218
  try {
219
+ // #1109: an assigned reward is not evidence that the action succeeded.
220
+ const { measured: experiences, assignedExcluded } = partitionByRewardSource(input);
221
221
  if (experiences.length < this.config.minExperiencesForPattern) {
222
- return err(new Error(`Need at least ${this.config.minExperiencesForPattern} experiences to learn a pattern`));
222
+ const excluded = assignedExcluded > 0
223
+ ? ` (${assignedExcluded} with an assigned reward excluded)`
224
+ : '';
225
+ return err(new Error(`Need at least ${this.config.minExperiencesForPattern} measured experiences to learn a pattern${excluded}`));
223
226
  }
224
227
  // Analyze experiences to extract common patterns
225
228
  const commonActions = this.extractCommonActions(experiences);
@@ -246,6 +249,7 @@ Provide:
246
249
  template,
247
250
  createdAt: new Date(),
248
251
  lastUsedAt: new Date(),
252
+ rewardSource: 'measured',
249
253
  };
250
254
  // Store pattern in memory
251
255
  await this.storePattern(pattern);
@@ -262,7 +266,8 @@ Provide:
262
266
  */
263
267
  async findMatchingPatterns(context, limit = 10) {
264
268
  try {
265
- const patterns = (await readActiveLearnedPatterns(this.memory)).filter((pattern) => this.matchesContext(pattern, context));
269
+ // #1109: a pattern learned from assigned rewards has no observed rate to rank by.
270
+ const patterns = (await readActiveLearnedPatterns(this.memory)).filter((pattern) => isMeasuredPattern(pattern) && this.matchesContext(pattern, context));
266
271
  // Sort by confidence and usage
267
272
  patterns.sort((a, b) => {
268
273
  const scoreA = a.confidence * 0.6 + (a.successRate * 0.4);
@@ -370,6 +375,7 @@ Provide:
370
375
  template: bestPattern.template,
371
376
  createdAt: new Date(),
372
377
  lastUsedAt: new Date(),
378
+ rewardSource: patterns.every(isMeasuredPattern) ? 'measured' : 'assigned',
373
379
  };
374
380
  // Store consolidated pattern
375
381
  await this.storePattern(consolidatedPattern);
@@ -388,7 +394,10 @@ Provide:
388
394
  */
389
395
  async getPatternStats(domain) {
390
396
  try {
391
- const patterns = (await readActiveLearnedPatterns(this.memory)).filter((pattern) => !domain || pattern.domain === domain);
397
+ const inDomain = (await readActiveLearnedPatterns(this.memory)).filter((pattern) => !domain || pattern.domain === domain);
398
+ // #1109: every figure below describes patterns with measured rates only.
399
+ const patterns = inDomain.filter(isMeasuredPattern);
400
+ const assignedPatternsExcluded = inDomain.length - patterns.length;
392
401
  const byType = {
393
402
  'test-pattern': 0,
394
403
  'fix-pattern': 0,
@@ -431,6 +440,7 @@ Provide:
431
440
  avgConfidence: patterns.length > 0 ? totalConfidence / patterns.length : 0,
432
441
  avgSuccessRate: patterns.length > 0 ? totalSuccessRate / patterns.length : 0,
433
442
  topPatterns,
443
+ ...(assignedPatternsExcluded > 0 ? { assignedPatternsExcluded } : {}),
434
444
  });
435
445
  }
436
446
  catch (error) {
@@ -518,20 +528,39 @@ Provide:
518
528
  }
519
529
  }
520
530
  }
521
- /**
522
- * Mine experiences for insights
523
- */
531
+ /** Read recorded input without the pattern-mining side effects. */
532
+ async getExperiences(domain, timeRange) {
533
+ try {
534
+ return ok(await this.getExperiencesByDomainAndTime(domain, timeRange));
535
+ }
536
+ catch (error) {
537
+ return err(toError(error));
538
+ }
539
+ }
540
+ /** Mine experiences for insights. */
524
541
  async mineExperiences(domain, timeRange) {
525
542
  try {
526
- const experiences = await this.getExperiencesByDomainAndTime(domain, timeRange);
543
+ const recorded = await this.getExperiencesByDomainAndTime(domain, timeRange);
544
+ // #1109: rates, rewards, patterns and anomalies use measured outcomes only.
545
+ const { measured: experiences, assignedExcluded } = partitionByRewardSource(recorded);
546
+ const counts = {
547
+ experienceCount: recorded.length,
548
+ measuredExperienceCount: experiences.length,
549
+ assignedRewardsExcluded: assignedExcluded,
550
+ };
527
551
  if (experiences.length === 0) {
528
552
  return ok({
529
- experienceCount: 0,
530
- successRate: 0,
531
- avgReward: 0,
553
+ ...counts,
554
+ evidenceStatus: 'insufficient-evidence',
555
+ successRate: null,
556
+ avgReward: null,
532
557
  patterns: [],
533
558
  anomalies: [],
534
- recommendations: ['No experiences found in the given time range'],
559
+ recommendations: [
560
+ recorded.length === 0
561
+ ? 'No experiences found in the given time range'
562
+ : `No measured outcomes in the given time range; ${assignedExcluded} experience(s) with an assigned reward were not scored`,
563
+ ],
535
564
  });
536
565
  }
537
566
  const successRate = this.calculateSuccessRate(experiences);
@@ -540,7 +569,7 @@ Provide:
540
569
  const anomalies = this.detectAnomalies(experiences);
541
570
  const recommendations = this.generateRecommendations(experiences, successRate, anomalies);
542
571
  return ok({
543
- experienceCount: experiences.length,
572
+ ...counts,
544
573
  successRate,
545
574
  avgReward,
546
575
  patterns,
@@ -586,7 +615,10 @@ Provide:
586
615
  try {
587
616
  const keys = await this.memory.search(`learning:experience:index:agent:${agentId.value}:*`, limit, LEARNING_NS);
588
617
  const experiences = [];
589
- for (const key of keys) {
618
+ for (const found of keys) {
619
+ // In-memory search includes its namespace; SQLite returns a bare key.
620
+ const prefix = 'learning-optimization:';
621
+ const key = found.startsWith(prefix) ? found.slice(prefix.length) : found;
590
622
  const experienceId = await this.memory.get(key, LEARNING_NS);
591
623
  if (experienceId) {
592
624
  // #493: rehydrate `timestamp` at the kv-read seam — the sort
@@ -637,7 +669,8 @@ Provide:
637
669
  if (clusterExperiences.length >= 2) {
638
670
  const centroid = this.calculateCentroid(clusterExperiences);
639
671
  const commonActions = this.extractCommonActions(clusterExperiences);
640
- const avgReward = this.calculateAverageReward(clusterExperiences);
672
+ const { measured } = partitionByRewardSource(clusterExperiences);
673
+ const avgReward = measured.length > 0 ? this.calculateAverageReward(measured) : null;
641
674
  result.push({
642
675
  id: `cluster-${clusterId++}`,
643
676
  centroid,
@@ -704,7 +737,10 @@ Provide:
704
737
  async getExperiencesByDomainAndTime(domain, timeRange) {
705
738
  const keys = await this.memory.search(`learning:experience:index:domain:${domain}:*`, 1000, LEARNING_NS);
706
739
  const experiences = [];
707
- for (const key of keys) {
740
+ for (const found of keys) {
741
+ // In-memory search includes its namespace; SQLite returns a bare key.
742
+ const prefix = 'learning-optimization:';
743
+ const key = found.startsWith(prefix) ? found.slice(prefix.length) : found;
708
744
  const experienceId = await this.memory.get(key, LEARNING_NS);
709
745
  if (experienceId) {
710
746
  const experience = await this.memory.get(`learning:experience:${experienceId}`, LEARNING_NS);
@@ -728,10 +764,10 @@ Provide:
728
764
  return experiences;
729
765
  }
730
766
  async extractPatternsFromExperiences(experiences) {
731
- // Group successful experiences by action type
732
- const successfulExperiences = experiences.filter((e) => e.result.success);
767
+ // Group by action type. Failures stay in their group so a pattern's
768
+ // success rate is the observed rate, not 100% by selection (#1109).
733
769
  const actionGroups = new Map();
734
- for (const exp of successfulExperiences) {
770
+ for (const exp of experiences) {
735
771
  const existing = actionGroups.get(exp.action) || [];
736
772
  existing.push(exp);
737
773
  actionGroups.set(exp.action, existing);
@@ -35,7 +35,7 @@ export declare class MetricsOptimizerService implements IStrategyOptimizerServic
35
35
  /**
36
36
  * Optimize a strategy for a given objective
37
37
  */
38
- optimizeStrategy(currentStrategy: Strategy, objective: OptimizationObjective, experiences: Experience[]): Promise<Result<OptimizedStrategy>>;
38
+ optimizeStrategy(currentStrategy: Strategy, objective: OptimizationObjective, input: Experience[]): Promise<Result<OptimizedStrategy>>;
39
39
  /**
40
40
  * Run A/B test between two strategies
41
41
  */
@@ -47,7 +47,7 @@ export declare class MetricsOptimizerService implements IStrategyOptimizerServic
47
47
  /**
48
48
  * Evaluate strategy performance
49
49
  */
50
- evaluateStrategy(strategy: Strategy, experiences: Experience[]): Promise<Result<StrategyEvaluation>>;
50
+ evaluateStrategy(strategy: Strategy, input: Experience[]): Promise<Result<StrategyEvaluation>>;
51
51
  /**
52
52
  * Track metrics for a strategy
53
53
  */
@@ -60,18 +60,28 @@ export declare class MetricsOptimizerService implements IStrategyOptimizerServic
60
60
  * Calculate optimal parameters using grid search
61
61
  */
62
62
  gridSearchOptimize(parameterRanges: Record<string, number[]>, objective: OptimizationObjective, experiences: Experience[]): Promise<Result<Record<string, unknown>>>;
63
- private evaluateStrategyPerformance;
63
+ /**
64
+ * Keys matching `pattern` under LEARNING_NS, ready for a namespaced get().
65
+ * In-memory search includes its namespace; SQLite returns a bare key.
66
+ */
67
+ private searchLearningKeys;
64
68
  private optimizeParameters;
65
69
  private scoreParameters;
66
70
  private calculateParamSimilarity;
67
71
  private predictOutcome;
68
72
  private validateOptimization;
73
+ /** Relative change; undefined when there is no baseline to compare with. */
69
74
  private calculateImprovement;
70
- private calculateOptimizationConfidence;
71
75
  private inferDomainFromExperiences;
76
+ /**
77
+ * Values of `metric` recorded for this strategy through trackMetrics(),
78
+ * whose strategy id is the strategy name. Only recorded observations are
79
+ * returned; the caller decides whether there are enough (#1099).
80
+ */
72
81
  private collectStrategyMetrics;
73
82
  private calculateMean;
74
83
  private calculateStdDev;
84
+ /** Undefined when neither group varies: the test statistic is undefined. */
75
85
  private calculatePValue;
76
86
  private normalCDF;
77
87
  private scoreContextMatch;