agentic-qe 3.15.7 → 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 (489) hide show
  1. package/.claude/skills/skills-manifest.json +1 -1
  2. package/CHANGELOG.md +305 -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-OS5G7KMQ.js → agent-booster-wasm-427FRKWG.js} +2 -2
  9. package/dist/cli/chunks/{agent-handler-PI4I7PME.js → agent-handler-RIYHTHVZ.js} +2 -2
  10. package/dist/cli/chunks/{agent-memory-branch-J7TXHX4U.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-OWUGXKNT.js → arena-KRIBMIXX.js} +2 -2
  13. package/dist/cli/chunks/{arena-FXESDCFR.js → arena-YAJZX6MC.js} +4 -4
  14. package/dist/cli/chunks/{audit-EPAWLYIZ.js → audit-7ZNOXWP3.js} +3 -3
  15. package/dist/cli/chunks/base-67DXSAYM.js +2 -0
  16. package/dist/cli/chunks/{better-sqlite3-IYVR5EQY.js → better-sqlite3-ZQAT4I6H.js} +2 -2
  17. package/dist/cli/chunks/{brain-handler-3W2E6TC6.js → brain-handler-452WCPZC.js} +3 -3
  18. package/dist/cli/chunks/{branch-enumerator-HU7VACJ4.js → branch-enumerator-IJFXJRPN.js} +2 -2
  19. package/dist/cli/chunks/{browser-72XOR6E2.js → browser-CT3MTV6G.js} +2 -2
  20. package/dist/cli/chunks/browser-workflow-NDXRROWZ.js +2 -0
  21. package/dist/cli/chunks/{chunk-WXI2STKQ.js → chunk-2BA45H64.js} +2 -2
  22. package/dist/cli/chunks/{chunk-DGK6GQMO.js → chunk-2HL3UM5P.js} +2 -2
  23. package/dist/cli/chunks/{chunk-LGBN7TKC.js → chunk-2I2UPJS7.js} +2 -2
  24. package/dist/cli/chunks/{chunk-ZRLNACPY.js → chunk-2TDIS6YK.js} +2 -2
  25. package/dist/cli/chunks/{chunk-34JLY3U6.js → chunk-2URBI52G.js} +2 -2
  26. package/dist/cli/chunks/{chunk-K7W55B7Q.js → chunk-2XITOPYV.js} +2 -2
  27. package/dist/cli/chunks/{chunk-I7H4IP7T.js → chunk-2YH62JCN.js} +2 -2
  28. package/dist/cli/chunks/{chunk-HPG7354V.js → chunk-32UTLDNY.js} +2 -2
  29. package/dist/cli/chunks/{chunk-C2CUPJGR.js → chunk-37BIGMJI.js} +1 -1
  30. package/dist/cli/chunks/{chunk-2RJYA6WK.js → chunk-3CJCROMW.js} +2 -2
  31. package/dist/cli/chunks/{chunk-CWPRU7ZI.js → chunk-3LYU7BLY.js} +2 -2
  32. package/dist/cli/chunks/{chunk-24CENUT4.js → chunk-47TYABPD.js} +3 -3
  33. package/dist/cli/chunks/{chunk-WUV5RZUI.js → chunk-47V7FQGX.js} +2 -2
  34. package/dist/cli/chunks/{chunk-IWQQIXHO.js → chunk-4JCY45KV.js} +2 -2
  35. package/dist/cli/chunks/{chunk-ZTMZFF25.js → chunk-4SUOVLJ6.js} +2 -2
  36. package/dist/cli/chunks/{chunk-CIFWOMNX.js → chunk-4URT6JO2.js} +1 -1
  37. package/dist/cli/chunks/{chunk-5Q22XPTH.js → chunk-4V27J6YN.js} +2 -2
  38. package/dist/cli/chunks/{chunk-SX2YSHE7.js → chunk-4W4DYVSH.js} +1 -1
  39. package/dist/cli/chunks/chunk-55HRSNGN.js +2 -0
  40. package/dist/cli/chunks/{chunk-F62EKVVC.js → chunk-5D2I7JUP.js} +2 -2
  41. package/dist/cli/chunks/{chunk-XXAVQACL.js → chunk-5JWGCIQW.js} +1 -1
  42. package/dist/cli/chunks/chunk-5LAAZLUC.js +4 -0
  43. package/dist/cli/chunks/{chunk-EDU72RTW.js → chunk-5NS3USRW.js} +1 -1
  44. package/dist/cli/chunks/{chunk-BTYKGVJ5.js → chunk-6EPHNJTL.js} +1 -1
  45. package/dist/cli/chunks/{chunk-JVYPXW6Y.js → chunk-6OOYIO3W.js} +2 -2
  46. package/dist/cli/chunks/{chunk-PG64YV6C.js → chunk-6PXA2BQJ.js} +58 -58
  47. package/dist/cli/chunks/{chunk-IARSGAG7.js → chunk-6YL6JOQB.js} +2 -2
  48. package/dist/cli/chunks/{chunk-LDXQRNTT.js → chunk-72AMFDC7.js} +1 -1
  49. package/dist/cli/chunks/{chunk-Z3VJLWRR.js → chunk-763SUL4B.js} +2 -2
  50. package/dist/cli/chunks/{chunk-EL75G2A3.js → chunk-7DMA5NYL.js} +1 -1
  51. package/dist/cli/chunks/{chunk-J43DV3ME.js → chunk-7JKB3Q7O.js} +1 -1
  52. package/dist/cli/chunks/{chunk-ONVALAZN.js → chunk-7KII4CQG.js} +2 -2
  53. package/dist/cli/chunks/{chunk-AAA4SHEG.js → chunk-7QGYJ5OY.js} +1 -1
  54. package/dist/cli/chunks/{chunk-MMXG3LL6.js → chunk-7QTB5VJZ.js} +2 -2
  55. package/dist/cli/chunks/{chunk-BB7OLQKO.js → chunk-7X2Y727E.js} +1 -1
  56. package/dist/cli/chunks/{chunk-VNW5Q2CX.js → chunk-A4RU67VX.js} +2 -2
  57. package/dist/cli/chunks/{chunk-YFOBQSOW.js → chunk-A6YIH4C4.js} +2 -2
  58. package/dist/cli/chunks/{chunk-MJJC6HUK.js → chunk-ABFDB4X3.js} +1 -1
  59. package/dist/cli/chunks/{chunk-MHZPC4HJ.js → chunk-AJ4YDSOI.js} +2 -2
  60. package/dist/cli/chunks/{chunk-OA4GR3EZ.js → chunk-AOFO4N32.js} +2 -2
  61. package/dist/cli/chunks/{chunk-EB2PP6X2.js → chunk-AQTVVLNP.js} +1 -1
  62. package/dist/cli/chunks/chunk-AR2E4B7K.js +6 -0
  63. package/dist/cli/chunks/{chunk-N4PMPSJJ.js → chunk-AVB5QY2Q.js} +2 -2
  64. package/dist/cli/chunks/{chunk-HLZATDD2.js → chunk-BHKXMIWX.js} +2 -2
  65. package/dist/cli/chunks/{chunk-C2MDBBFF.js → chunk-BXO536GT.js} +3 -3
  66. package/dist/cli/chunks/{chunk-WTLIEBDH.js → chunk-C6RTMTEH.js} +1 -1
  67. package/dist/cli/chunks/{chunk-MNZFEIE5.js → chunk-CTZJUV5I.js} +1 -1
  68. package/dist/cli/chunks/{chunk-XEWXYGJI.js → chunk-D6XVGFTI.js} +2 -2
  69. package/dist/cli/chunks/{chunk-Y4SAWE45.js → chunk-DDPPSSHW.js} +1 -1
  70. package/dist/cli/chunks/{chunk-KPOPBUUJ.js → chunk-DGTLJNJH.js} +2 -2
  71. package/dist/cli/chunks/{chunk-6JT73S5B.js → chunk-DINZR5CF.js} +1 -1
  72. package/dist/cli/chunks/{chunk-HTWIGQL4.js → chunk-EFBLP43U.js} +2 -2
  73. package/dist/cli/chunks/chunk-ETG7O5E5.js +5 -0
  74. package/dist/cli/chunks/{chunk-2AYBYXOA.js → chunk-F2SQPP6U.js} +2 -2
  75. package/dist/cli/chunks/{chunk-V2SAEMZY.js → chunk-F3PQZX44.js} +1 -1
  76. package/dist/cli/chunks/{chunk-JPHDMHFG.js → chunk-F4JYIRW2.js} +2 -2
  77. package/dist/cli/chunks/{chunk-REEIFA6A.js → chunk-FJ4VTLLK.js} +2 -2
  78. package/dist/cli/chunks/{chunk-PTK66HEY.js → chunk-FL3OYGCS.js} +2 -2
  79. package/dist/cli/chunks/{chunk-PEKDSJBC.js → chunk-FLASM2XB.js} +2 -2
  80. package/dist/cli/chunks/{chunk-G762PEFO.js → chunk-FV3NHVC7.js} +22 -22
  81. package/dist/cli/chunks/{chunk-FTTFJ7SJ.js → chunk-FV7VAG74.js} +1 -1
  82. package/dist/cli/chunks/{chunk-2YVJ5OUL.js → chunk-G3BKZNFL.js} +8 -8
  83. package/dist/cli/chunks/{chunk-MDC4G323.js → chunk-GBUIG3FS.js} +1 -1
  84. package/dist/cli/chunks/{chunk-DCJW2DPL.js → chunk-GCWSX2NY.js} +4 -4
  85. package/dist/cli/chunks/{chunk-VCA6YYII.js → chunk-GII5WVAK.js} +1 -1
  86. package/dist/cli/chunks/{chunk-HXBAQKMH.js → chunk-GKPQ2GRR.js} +2 -2
  87. package/dist/cli/chunks/chunk-GR3JYE5A.js +2 -0
  88. package/dist/cli/chunks/{chunk-ZUMDDMDE.js → chunk-H3KBIWTO.js} +2 -2
  89. package/dist/cli/chunks/{chunk-ECSLJJOQ.js → chunk-HAROIAJE.js} +1 -1
  90. package/dist/cli/chunks/{chunk-ICPALF4Q.js → chunk-HCYQHWI2.js} +2 -2
  91. package/dist/cli/chunks/{chunk-V5NGBQAQ.js → chunk-HGTWAZWU.js} +2 -2
  92. package/dist/cli/chunks/{chunk-YK3NOC2R.js → chunk-HTZJSQ3C.js} +2 -2
  93. package/dist/cli/chunks/{chunk-IYQ7XNE5.js → chunk-HWK5L7IJ.js} +2 -2
  94. package/dist/cli/chunks/{chunk-HSDOOFV7.js → chunk-HZ5NC6U5.js} +1 -1
  95. package/dist/cli/chunks/{chunk-M63QB466.js → chunk-I6S35FRO.js} +2 -2
  96. package/dist/cli/chunks/{chunk-LMEU64TR.js → chunk-ICP2ORGI.js} +2 -2
  97. package/dist/cli/chunks/{chunk-PXZKPUW6.js → chunk-IFEIY3NQ.js} +2 -2
  98. package/dist/cli/chunks/{chunk-OJEZNLB6.js → chunk-J3DTDJDT.js} +2 -2
  99. package/dist/cli/chunks/chunk-J3WGK22W.js +2 -0
  100. package/dist/cli/chunks/{chunk-SQHLC6I5.js → chunk-J5KNRVXR.js} +1 -1
  101. package/dist/cli/chunks/{chunk-RORZ5O5Z.js → chunk-JAV5WPSY.js} +2 -2
  102. package/dist/cli/chunks/{chunk-SSP2B2WR.js → chunk-JEP4ULR6.js} +2 -2
  103. package/dist/cli/chunks/{chunk-6FEQ73BF.js → chunk-JK2ME6IT.js} +2 -2
  104. package/dist/cli/chunks/chunk-JNNZK7KH.js +2 -0
  105. package/dist/cli/chunks/{chunk-RXAFLK34.js → chunk-JP4P3P3D.js} +2 -2
  106. package/dist/cli/chunks/{chunk-JY4AIEZ7.js → chunk-JUVHZG7I.js} +1 -1
  107. package/dist/cli/chunks/{chunk-UBYCR3O4.js → chunk-JWGRWMZP.js} +2 -2
  108. package/dist/cli/chunks/{chunk-6BO3WCK7.js → chunk-K5DJXMAA.js} +2 -2
  109. package/dist/cli/chunks/{chunk-MKFQNCXI.js → chunk-KFUUIAR4.js} +2 -2
  110. package/dist/cli/chunks/chunk-KHSRIPBP.js +180 -0
  111. package/dist/cli/chunks/{chunk-UY3REQOK.js → chunk-KIKWJM6J.js} +2 -2
  112. package/dist/cli/chunks/{chunk-YUC7RJGR.js → chunk-KIXYKUCI.js} +1 -1
  113. package/dist/cli/chunks/{chunk-IC2WSSD5.js → chunk-KLGYIEJK.js} +3 -3
  114. package/dist/cli/chunks/{chunk-DVPGBDBP.js → chunk-KR3M44CF.js} +3 -3
  115. package/dist/cli/chunks/chunk-KTSLTZSG.js +2 -0
  116. package/dist/cli/chunks/{chunk-Y6A46M3B.js → chunk-KVBEGOJE.js} +2 -2
  117. package/dist/cli/chunks/{chunk-PZG3542B.js → chunk-L42JPFCC.js} +2 -2
  118. package/dist/cli/chunks/{chunk-J26GADQE.js → chunk-LCJTEUDC.js} +181 -181
  119. package/dist/cli/chunks/{chunk-3JD2USUH.js → chunk-LEAKYZ37.js} +2 -2
  120. package/dist/cli/chunks/{chunk-UCLN6AME.js → chunk-LMU5DUDK.js} +1 -1
  121. package/dist/cli/chunks/{chunk-EV2BYY6T.js → chunk-MZS32SYS.js} +1 -1
  122. package/dist/cli/chunks/{chunk-LVEX4GID.js → chunk-N3KEY4XJ.js} +2 -2
  123. package/dist/cli/chunks/{chunk-XNSQZ3O7.js → chunk-N3NP6PTT.js} +2 -2
  124. package/dist/cli/chunks/{chunk-QVG4ZDXX.js → chunk-N5PDFGCQ.js} +2 -2
  125. package/dist/cli/chunks/{chunk-6PKCQXEW.js → chunk-NDKLQW6N.js} +2 -2
  126. package/dist/cli/chunks/{chunk-6AYRAOCA.js → chunk-NHZIWIQZ.js} +2 -2
  127. package/dist/cli/chunks/{chunk-H4WHDFB5.js → chunk-NTAD5UX4.js} +2 -2
  128. package/dist/cli/chunks/{chunk-JYXOFN3E.js → chunk-O3JLOVZX.js} +2 -2
  129. package/dist/cli/chunks/{chunk-ZLVQSEZK.js → chunk-OCESWNAZ.js} +3 -3
  130. package/dist/cli/chunks/{chunk-7EX4DEQR.js → chunk-OG2UI6A3.js} +2 -2
  131. package/dist/cli/chunks/{chunk-3RM46XFP.js → chunk-OXTFSIGN.js} +1 -1
  132. package/dist/cli/chunks/{chunk-44DPYNPE.js → chunk-OXZLKP6C.js} +1 -1
  133. package/dist/cli/chunks/{chunk-TU4LIIOP.js → chunk-P2CXVNKK.js} +2 -2
  134. package/dist/cli/chunks/{chunk-LDZWIV2O.js → chunk-P73W2K7T.js} +1 -1
  135. package/dist/cli/chunks/{chunk-56ZKQYZY.js → chunk-PBZI2ZPV.js} +3 -3
  136. package/dist/cli/chunks/{chunk-MNCF643K.js → chunk-PMCRCEW5.js} +2 -2
  137. package/dist/cli/chunks/{chunk-4G2VNW4C.js → chunk-PVIA2FPD.js} +2 -2
  138. package/dist/cli/chunks/{chunk-MRHM4COP.js → chunk-PX2B5TS2.js} +2 -2
  139. package/dist/cli/chunks/{chunk-HZFT3P5B.js → chunk-Q3JVJRVJ.js} +1 -1
  140. package/dist/cli/chunks/{chunk-GY2SAIXP.js → chunk-QQ5SZH4D.js} +2 -2
  141. package/dist/cli/chunks/{chunk-LP4AS2E4.js → chunk-QTVWUQTB.js} +1 -1
  142. package/dist/cli/chunks/{chunk-W4X2VTIY.js → chunk-REUFWGMA.js} +2 -2
  143. package/dist/cli/chunks/{chunk-FVBFASOD.js → chunk-SNBYYO6F.js} +2 -2
  144. package/dist/cli/chunks/{chunk-RNYX4CPI.js → chunk-SVHUYVUR.js} +2 -2
  145. package/dist/cli/chunks/{chunk-AXO7OOOA.js → chunk-THAY7WHO.js} +2 -2
  146. package/dist/cli/chunks/{chunk-QWLTHFZW.js → chunk-TNMQVG4A.js} +2 -2
  147. package/dist/cli/chunks/{chunk-JFPXCQNP.js → chunk-TSYQDRNK.js} +1 -1
  148. package/dist/cli/chunks/{chunk-JK6B3ULP.js → chunk-TUYJ53V4.js} +2 -2
  149. package/dist/cli/chunks/{chunk-PUECC4WI.js → chunk-UNUTC6TX.js} +2 -2
  150. package/dist/cli/chunks/{chunk-ED32XJ5R.js → chunk-UOJBR4J3.js} +2 -2
  151. package/dist/cli/chunks/{chunk-CXTJ47QS.js → chunk-UOWHE77F.js} +2 -2
  152. package/dist/cli/chunks/{chunk-5KCBX225.js → chunk-UYLYMWV5.js} +2 -2
  153. package/dist/cli/chunks/{chunk-QNQSM2OG.js → chunk-V5PXQSFS.js} +2 -2
  154. package/dist/cli/chunks/{chunk-VKPKYMCT.js → chunk-VCMINU7K.js} +2 -2
  155. package/dist/cli/chunks/{chunk-QQT6QENQ.js → chunk-VQHVHVSF.js} +2 -2
  156. package/dist/cli/chunks/{chunk-634D2ENF.js → chunk-VRGCKBF7.js} +2 -2
  157. package/dist/cli/chunks/{chunk-T6W5APYP.js → chunk-VU2EL424.js} +1 -1
  158. package/dist/cli/chunks/{chunk-JY4WLN3K.js → chunk-VXZJOKOX.js} +2 -2
  159. package/dist/cli/chunks/{chunk-NZQPP533.js → chunk-VYLM2YV5.js} +3 -3
  160. package/dist/cli/chunks/{chunk-PQV7E7XH.js → chunk-W32YU3VI.js} +2 -2
  161. package/dist/cli/chunks/{chunk-RRPYWBFX.js → chunk-W5VJRDDG.js} +2 -2
  162. package/dist/cli/chunks/{chunk-7UCVYYWL.js → chunk-WGDR2KIR.js} +2 -2
  163. package/dist/cli/chunks/{chunk-2423JAA5.js → chunk-WRRCQ2UE.js} +1 -1
  164. package/dist/cli/chunks/{chunk-RCYLCA7E.js → chunk-XDBD4GXO.js} +2 -2
  165. package/dist/cli/chunks/{chunk-PYHYOKYT.js → chunk-XOLDMK23.js} +2 -2
  166. package/dist/cli/chunks/{chunk-5KS7HA37.js → chunk-XOVNZT7F.js} +1 -1
  167. package/dist/cli/chunks/{chunk-5PBRBS7D.js → chunk-XQ3DDY7X.js} +2 -2
  168. package/dist/cli/chunks/{chunk-4DIZ5BT6.js → chunk-XUIA5KMS.js} +2 -2
  169. package/dist/cli/chunks/{chunk-G7YTZTGU.js → chunk-XWIUFYM3.js} +1 -1
  170. package/dist/cli/chunks/{chunk-B7M323VL.js → chunk-XYCKHYBM.js} +2 -2
  171. package/dist/cli/chunks/{chunk-6OS7HREG.js → chunk-XZJ2O3VC.js} +1 -1
  172. package/dist/cli/chunks/{chunk-BTIBXGVQ.js → chunk-YRBBBUJX.js} +5 -5
  173. package/dist/cli/chunks/{chunk-MQ6OF6DU.js → chunk-YZGSJG34.js} +1 -1
  174. package/dist/cli/chunks/{chunk-XTJMY3KS.js → chunk-YZYDTABJ.js} +1 -1
  175. package/dist/cli/chunks/{chunk-LQOVA4YX.js → chunk-ZANDSVCK.js} +2 -2
  176. package/dist/cli/chunks/{chunk-2E3XWKEU.js → chunk-ZBDRLF43.js} +2 -2
  177. package/dist/cli/chunks/{chunk-UUHIEM2M.js → chunk-ZVSLCEVC.js} +3 -3
  178. package/dist/cli/chunks/{chunk-Q2T5FXEA.js → chunk-ZXBCCO2H.js} +2 -2
  179. package/dist/cli/chunks/{ci-5HEXJZ2C.js → ci-7SGRCFPS.js} +2 -2
  180. package/dist/cli/chunks/{ci-config-WU4NPDAM.js → ci-config-MX3URPZA.js} +2 -2
  181. package/dist/cli/chunks/{ci-output-BJQVXX5E.js → ci-output-M47NJY6D.js} +2 -2
  182. package/dist/cli/chunks/{circuit-breaker-3BMGTQCB.js → circuit-breaker-5GAK45SW.js} +2 -2
  183. package/dist/cli/chunks/{claude-flow-setup-GVDGJWMU.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-V4MRGWVA.js → cline-installer-DLJ5QD5N.js} +2 -2
  186. package/dist/cli/chunks/{code-A3TGQPEO.js → code-ONKLMVQ2.js} +25 -24
  187. package/dist/cli/chunks/{code-index-extractor-YJQSYWD3.js → code-index-extractor-2232LGZN.js} +2 -2
  188. package/dist/cli/chunks/{codex-installer-7N7UQPAH.js → codex-installer-UOWLYCMH.js} +2 -2
  189. package/dist/cli/chunks/{completions-PPGVYLZS.js → completions-MHX7GCC7.js} +2 -2
  190. package/dist/cli/chunks/{complexity-analyzer-XZTFLYV5.js → complexity-analyzer-43ZUJKZU.js} +2 -2
  191. package/dist/cli/chunks/{continuedev-installer-Z5I57RAH.js → continuedev-installer-6Q5JR4FF.js} +2 -2
  192. package/dist/cli/chunks/{copilot-installer-F5YZ6BHB.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-GO33ZQAP.js → cost-tracker-VS5ZW3XN.js} +2 -2
  195. package/dist/cli/chunks/{coverage-GSHKLY74.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-JJ7IVJZB.js → cursor-installer-YIFEMORH.js} +2 -2
  198. package/dist/cli/chunks/{daemon-IRL7QRNE.js → daemon-SHWJSJW5.js} +7 -7
  199. package/dist/cli/chunks/daemon-YIFT46FH.js +34 -0
  200. package/dist/cli/chunks/{dag-attention-scheduler-ORXSUHPA.js → dag-attention-scheduler-TCC2WM46.js} +2 -2
  201. package/dist/cli/chunks/{detect-RHU62KRI.js → detect-IGTWSQMA.js} +2 -2
  202. package/dist/cli/chunks/{dist-node-3VKV4Z6C.js → dist-node-TCOTJVQX.js} +2 -2
  203. package/dist/cli/chunks/{domain-handler-SFIML4FK.js → domain-handler-55ZVYODR.js} +2 -2
  204. package/dist/cli/chunks/{domain-plugins-CJ4FA3OC.js → domain-plugins-GJRWOHQP.js} +2 -2
  205. package/dist/cli/chunks/{domain-transfer-BCRKPCAA.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-VL3HFLPV.js → embed-and-insert-pattern-XAMNIKQL.js} +2 -2
  208. package/dist/cli/chunks/{eval-GGKRI4P5.js → eval-GO22R4OZ.js} +2 -2
  209. package/dist/cli/chunks/{experience-capture-middleware-F72TIRQY.js → experience-capture-middleware-F2BRMJ3Y.js} +3 -3
  210. package/dist/cli/chunks/{fast-paths-7KOOF3MA.js → fast-paths-6RGPYALD.js} +2 -2
  211. package/dist/cli/chunks/{feature-flags-FNHBTHBH.js → feature-flags-MIWQIOHU.js} +2 -2
  212. package/dist/cli/chunks/{feature-flags-IOZEWWFU.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-OH2DOQP7.js → gnn-wrapper-ALBJVW6T.js} +2 -2
  216. package/dist/cli/chunks/{heartbeat-handler-W67NXTNE.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-6MLLOGOE.js → hnsw-legacy-bridge-RYUJPA7B.js} +2 -2
  221. package/dist/cli/chunks/{hnswlib-node-4UDISJ3G.js → hnswlib-node-XM6XF3YV.js} +2 -2
  222. package/dist/cli/chunks/{hooks-NOQJWQ4P.js → hooks-X62O7TJO.js} +10 -10
  223. package/dist/cli/chunks/hybrid-backend-NZ3G4WBX.js +2 -0
  224. package/dist/cli/chunks/{hypergraph-engine-2OD3APVP.js → hypergraph-engine-ZBWUPTVD.js} +2 -2
  225. package/dist/cli/chunks/{hypergraph-handler-5AZGMBUM.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-SMGJ45PW.js → init-guard-S4I2R46S.js} +2 -2
  228. package/dist/cli/chunks/{init-handler-5T4MP2NM.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-RLZYLVQJ.js → kilocode-installer-GNNB5FCZ.js} +2 -2
  232. package/dist/cli/chunks/{kiro-installer-LFZOC7VD.js → kiro-installer-HR6ZAH7T.js} +2 -2
  233. package/dist/cli/chunks/knowledge-graph-SZCVQF37.js +2 -0
  234. package/dist/cli/chunks/{learning-XRPGLUWR.js → learning-4IEEOHJS.js} +3 -3
  235. package/dist/cli/chunks/{llm-router-OMK5HYPH.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-XADC7KCU.js → load-ZM43WGDO.js} +2 -2
  238. package/dist/cli/chunks/load-test-POMIF4Q4.js +2 -0
  239. package/dist/cli/chunks/{mcp-PIBKSSVU.js → mcp-CRZKZE37.js} +2 -2
  240. package/dist/cli/chunks/{memory-AP7EZERS.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-7JJ2FZ33.js → multi-model-executor-SXXGAQ2G.js} +2 -2
  244. package/dist/cli/chunks/{opencode-installer-ZZZ6EBYJ.js → opencode-installer-PIRBUAB5.js} +2 -2
  245. package/dist/cli/chunks/{orchestrator-2H2YKSGJ.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-7MJJWC2Z.js → pattern-usage-recorder-XZTWDI2T.js} +2 -2
  248. package/dist/cli/chunks/{pipeline-LIE5BWQY.js → pipeline-5LMLBIJ7.js} +2 -2
  249. package/dist/cli/chunks/{platform-SMYUNLGX.js → platform-KJDABL5C.js} +2 -2
  250. package/dist/cli/chunks/{plugin-LJDIXQNT.js → plugin-V4KSBVVM.js} +2 -2
  251. package/dist/cli/chunks/{prime-radiant-advanced-wasm-RIDNE5D2.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-YVM66DLI.js → protocol-handler-BNRONTQV.js} +2 -2
  255. package/dist/cli/chunks/{prove-ZBDT52GD.js → prove-ELLL6XMX.js} +2 -2
  256. package/dist/cli/chunks/qe-reasoning-bank-ZD3WF647.js +2 -0
  257. package/dist/cli/chunks/{quality-DUKXGDDO.js → quality-NH2QA4D4.js} +2 -2
  258. package/dist/cli/chunks/{quality-gate-SM3RXF4V.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-4QLQZDB5.js → real-embeddings-J3KCKLPB.js} +2 -2
  261. package/dist/cli/chunks/{ref-validation-M3EO32YQ.js → ref-validation-HNXQRP4F.js} +2 -2
  262. package/dist/cli/chunks/{roocode-installer-S6Q5OLV5.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-55FMUACP.js → routing-handler-WM33ZILE.js} +2 -2
  266. package/dist/cli/chunks/{ruvector-commands-QATKAAPK.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-RFXFU6JD.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-PKDVXQAW.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-CMRB6WA3.js → security-AUDTRX3I.js} +3 -3
  276. package/dist/cli/chunks/{shared-rvf-adapter-YHLLNFHF.js → shared-rvf-adapter-PVDGBGI2.js} +2 -2
  277. package/dist/cli/chunks/{shared-rvf-dual-writer-4BGDVPQ7.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-LUHKQAGM.js → standalone-memory-XNOAI4G4.js} +2 -2
  280. package/dist/cli/chunks/{status-handler-S6S5PNR7.js → status-handler-K72XZE4T.js} +2 -2
  281. package/dist/cli/chunks/{structural-health-PQ7NZAJ4.js → structural-health-NF3YY7U5.js} +2 -2
  282. package/dist/cli/chunks/{sync-S744AEJC.js → sync-UVXA6CT2.js} +2 -2
  283. package/dist/cli/chunks/{sync-Q6KRQXU6.js → sync-VBD5Y3E2.js} +2 -2
  284. package/dist/cli/chunks/{task-handler-GAMGEHUW.js → task-handler-24S3WFVJ.js} +13 -7
  285. package/dist/cli/chunks/task-handlers-GUYW2EPJ.js +9 -0
  286. package/dist/cli/chunks/{test-FNH67DBK.js → test-XFSGQELD.js} +4 -4
  287. package/dist/cli/chunks/{test-scheduling-NZA5SHK6.js → test-scheduling-VYUQ4CDE.js} +3 -3
  288. package/dist/cli/chunks/{token-bootstrap-CXKG55JD.js → token-bootstrap-EDK6FNQ3.js} +2 -2
  289. package/dist/cli/chunks/{token-usage-M7WWEDJX.js → token-usage-VLQ6WO2L.js} +2 -2
  290. package/dist/cli/chunks/{transformers-2IFMCK6A.js → transformers-TOFMWWNM.js} +2 -2
  291. package/dist/cli/chunks/{tree-sitter-wasm-parser-NMNA6RJC.js → tree-sitter-wasm-parser-MI3NZKUD.js} +2 -2
  292. package/dist/cli/chunks/{types-N7FWTOLD.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-KDB5RGL7.js → upgrade-4ABM72T4.js} +2 -2
  297. package/dist/cli/chunks/{validate-KMUV5FUA.js → validate-UDJCWKXI.js} +2 -2
  298. package/dist/cli/chunks/{validate-swarm-ANZWRCJU.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-SXXC4NMS.js → web-tree-sitter-WBMAJPM5.js} +2 -2
  301. package/dist/cli/chunks/{windsurf-installer-2LWSKMBU.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-JJMSJFZP.js → witness-chain-TATPXQRK.js} +2 -2
  304. package/dist/cli/chunks/{witness-chain-repair-OX7VFW6T.js → witness-chain-repair-2HGJGE7O.js} +2 -2
  305. package/dist/cli/chunks/{witness-chain-verifier-QLSMXHAZ.js → witness-chain-verifier-FRY3LMGH.js} +2 -2
  306. package/dist/cli/chunks/{witness-key-manager-3DS4L7LE.js → witness-key-manager-X7QHQQWL.js} +2 -2
  307. package/dist/cli/chunks/{workflow-ARWAMHD3.js → workflow-QMZPAWQW.js} +4 -4
  308. package/dist/cli/chunks/workflow-orchestrator-4GAW7HNZ.js +2 -0
  309. package/dist/cli/chunks/{wrappers-J6KGTUSJ.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 +130 -58
  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/coverage-analysis/collected-metrics.js +2 -1
  362. package/dist/domains/defect-intelligence/services/defect-predictor.js +4 -2
  363. package/dist/domains/learning-optimization/active-patterns.d.ts +55 -0
  364. package/dist/domains/learning-optimization/active-patterns.js +80 -0
  365. package/dist/domains/learning-optimization/coordinator-helpers.js +2 -3
  366. package/dist/domains/learning-optimization/coordinator.d.ts +0 -3
  367. package/dist/domains/learning-optimization/coordinator.js +50 -106
  368. package/dist/domains/learning-optimization/index.d.ts +1 -1
  369. package/dist/domains/learning-optimization/interfaces.d.ts +56 -4
  370. package/dist/domains/learning-optimization/plugin.js +11 -1
  371. package/dist/domains/learning-optimization/reward-source.d.ts +37 -0
  372. package/dist/domains/learning-optimization/reward-source.js +58 -0
  373. package/dist/domains/learning-optimization/services/learning-coordinator.d.ts +4 -4
  374. package/dist/domains/learning-optimization/services/learning-coordinator.js +68 -34
  375. package/dist/domains/learning-optimization/services/metrics-optimizer.d.ts +14 -4
  376. package/dist/domains/learning-optimization/services/metrics-optimizer.js +129 -63
  377. package/dist/domains/learning-optimization/services/transfer-specialist.js +25 -15
  378. package/dist/domains/test-execution/interfaces.d.ts +16 -0
  379. package/dist/domains/test-execution/services/retry-handler.js +18 -2
  380. package/dist/domains/test-execution/services/runner-test-cases.d.ts +21 -0
  381. package/dist/domains/test-execution/services/runner-test-cases.js +69 -0
  382. package/dist/domains/test-execution/services/test-executor.d.ts +5 -0
  383. package/dist/domains/test-execution/services/test-executor.js +24 -2
  384. package/dist/init/fleet-integration.js +2 -0
  385. package/dist/init/init-wizard-steps.js +2 -0
  386. package/dist/init/phases/06-code-intelligence.js +2 -0
  387. package/dist/init/phases/10-workers.js +2 -1
  388. package/dist/kernel/anti-drift-middleware.d.ts +44 -5
  389. package/dist/kernel/anti-drift-middleware.js +147 -11
  390. package/dist/kernel/interfaces.d.ts +5 -0
  391. package/dist/learning/dream/dream-engine.d.ts +27 -1
  392. package/dist/learning/dream/dream-engine.js +56 -2
  393. package/dist/learning/dream/dream-insights-pruner.d.ts +18 -4
  394. package/dist/learning/dream/dream-insights-pruner.js +99 -11
  395. package/dist/learning/dream/rvcow-branch-manager.d.ts +8 -0
  396. package/dist/learning/dream/rvcow-branch-manager.js +8 -0
  397. package/dist/learning/dream/speculative-dreamer.d.ts +8 -0
  398. package/dist/learning/dream/speculative-dreamer.js +8 -0
  399. package/dist/learning/skill-validation-learner.d.ts +2 -0
  400. package/dist/learning/skill-validation-learner.js +29 -21
  401. package/dist/mcp/background-workers.d.ts +15 -0
  402. package/dist/mcp/background-workers.js +77 -0
  403. package/dist/mcp/bundle.js +511 -484
  404. package/dist/mcp/entry.js +4 -49
  405. package/dist/mcp/handlers/domain-handler-configs.d.ts +14 -0
  406. package/dist/mcp/handlers/domain-handler-configs.js +68 -30
  407. package/dist/mcp/handlers/handler-factory.js +1 -0
  408. package/dist/mcp/handlers/task-handlers.js +37 -1
  409. package/dist/mcp/metrics/metrics-collector.d.ts +11 -9
  410. package/dist/mcp/metrics/metrics-collector.js +13 -26
  411. package/dist/mcp/protocol-server.js +8 -3
  412. package/dist/mcp/tools/learning-optimization/optimize.d.ts +34 -3
  413. package/dist/mcp/tools/learning-optimization/optimize.js +106 -70
  414. package/dist/memory/crdt/lww-register.js +11 -1
  415. package/dist/routing/calibration/ema-calibrator.js +3 -1
  416. package/dist/shared/base-domain-plugin.d.ts +4 -0
  417. package/dist/shared/base-domain-plugin.js +6 -0
  418. package/dist/shared/llm/cache.js +4 -1
  419. package/dist/shared/security/compliance-patterns.js +3 -1
  420. package/dist/shared/test-runner-process.d.ts +26 -0
  421. package/dist/shared/test-runner-process.js +91 -0
  422. package/dist/shared/types/index.d.ts +9 -0
  423. package/dist/shared/types/index.js +13 -0
  424. package/dist/shared/utils/namespaced-search.d.ts +42 -0
  425. package/dist/shared/utils/namespaced-search.js +53 -0
  426. package/dist/strange-loop/infra-healing/infra-action-executor.js +7 -3
  427. package/dist/strange-loop/infra-healing/infra-healing-orchestrator.js +10 -9
  428. package/dist/workers/daemon.d.ts +7 -0
  429. package/dist/workers/daemon.js +21 -2
  430. package/dist/workers/namespaced-keys.d.ts +4 -7
  431. package/dist/workers/namespaced-keys.js +4 -15
  432. package/dist/workers/quality-daemon/ci-monitor.js +9 -5
  433. package/dist/workers/worker-env.d.ts +53 -0
  434. package/dist/workers/worker-env.js +89 -0
  435. package/dist/workers/worker-manager.js +4 -0
  436. package/dist/workers/workers/learning-consolidation.d.ts +20 -0
  437. package/dist/workers/workers/learning-consolidation.js +57 -23
  438. package/package.json +1 -1
  439. package/dist/cli/chunks/adapter-PEOUNYXJ.js +0 -2
  440. package/dist/cli/chunks/aqe-learning-engine-DHKZI5RX.js +0 -2
  441. package/dist/cli/chunks/base-QZWK3D5P.js +0 -2
  442. package/dist/cli/chunks/browser-workflow-ITPX72RX.js +0 -2
  443. package/dist/cli/chunks/chunk-CG5DZCOZ.js +0 -2
  444. package/dist/cli/chunks/chunk-QJE6ZW2X.js +0 -6
  445. package/dist/cli/chunks/chunk-T3ZDVU6F.js +0 -5
  446. package/dist/cli/chunks/chunk-UIYKR2SA.js +0 -2
  447. package/dist/cli/chunks/chunk-VJRZFWR5.js +0 -2
  448. package/dist/cli/chunks/chunk-VUFRTGML.js +0 -3
  449. package/dist/cli/chunks/chunk-YDZJWDR6.js +0 -180
  450. package/dist/cli/chunks/client-S7GNYTZ5.js +0 -2
  451. package/dist/cli/chunks/core-handlers-CUEPOQIO.js +0 -2
  452. package/dist/cli/chunks/cross-domain-router-CXN5QFEV.js +0 -2
  453. package/dist/cli/chunks/daemon-3DQCKRYO.js +0 -10
  454. package/dist/cli/chunks/dream-5AUNJW24.js +0 -2
  455. package/dist/cli/chunks/file-discovery-AYWF357I.js +0 -2
  456. package/dist/cli/chunks/fleet-QX5KXTRC.js +0 -43
  457. package/dist/cli/chunks/heartbeat-scheduler-7ZIDVXIP.js +0 -2
  458. package/dist/cli/chunks/hnsw-adapter-P77OC7FM.js +0 -2
  459. package/dist/cli/chunks/hnsw-index-3LBOTQAW.js +0 -2
  460. package/dist/cli/chunks/hybrid-backend-LOM54PDD.js +0 -2
  461. package/dist/cli/chunks/impact-analyzer-QSDJVBPS.js +0 -2
  462. package/dist/cli/chunks/init-wizard-MK2325JJ.js +0 -2
  463. package/dist/cli/chunks/kernel-2NJQQ2KT.js +0 -2
  464. package/dist/cli/chunks/knowledge-graph-SDISHO62.js +0 -2
  465. package/dist/cli/chunks/llm-router-service-YTCMRBAN.js +0 -2
  466. package/dist/cli/chunks/load-test-RPKHLBCC.js +0 -2
  467. package/dist/cli/chunks/memory-backend-BZXFO4JZ.js +0 -2
  468. package/dist/cli/chunks/memory-handlers-MOFDNB6E.js +0 -2
  469. package/dist/cli/chunks/pattern-null-store-4PRPIOR6.js +0 -2
  470. package/dist/cli/chunks/project-root-NBIQF63D.js +0 -2
  471. package/dist/cli/chunks/protocol-executor-BRPGIYWQ.js +0 -2
  472. package/dist/cli/chunks/qe-reasoning-bank-GDZACWKW.js +0 -2
  473. package/dist/cli/chunks/queen-coordinator-LDKLBPD5.js +0 -2
  474. package/dist/cli/chunks/router-H5YSIRH2.js +0 -2
  475. package/dist/cli/chunks/routing-feedback-5R36TJDH.js +0 -2
  476. package/dist/cli/chunks/rvf-dual-writer-TT2DBQQQ.js +0 -2
  477. package/dist/cli/chunks/rvf-migration-adapter-BCLFJKSK.js +0 -2
  478. package/dist/cli/chunks/rvf-native-adapter-UXI66OQJ.js +0 -2
  479. package/dist/cli/chunks/safe-db-MSTD2GDH.js +0 -2
  480. package/dist/cli/chunks/schedule-KST6KIFD.js +0 -2
  481. package/dist/cli/chunks/scheduler-FTQS6YK3.js +0 -2
  482. package/dist/cli/chunks/sqlite-persistence-ZX5QFDMR.js +0 -2
  483. package/dist/cli/chunks/task-handlers-6CRDEELN.js +0 -9
  484. package/dist/cli/chunks/unified-memory-2Z2F446J.js +0 -2
  485. package/dist/cli/chunks/unified-memory-hnsw-A4EWYPJQ.js +0 -2
  486. package/dist/cli/chunks/unified-persistence-Z6N6JZFA.js +0 -2
  487. package/dist/cli/chunks/visual-security-GXYZV7KR.js +0 -2
  488. package/dist/cli/chunks/witness-chain-52PEIEGK.js +0 -2
  489. package/dist/cli/chunks/workflow-orchestrator-DORMQMG7.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
@@ -7,6 +7,8 @@ import { v4 as uuidv4 } from 'uuid';
7
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
+ import { readActivePatterns } from '../active-patterns.js';
11
+ import { isMeasuredPattern, partitionByRewardSource } from '../reward-source.js';
10
12
  import { createQEFlashAttention, } from '../../../integrations/ruvector/wrappers.js';
11
13
  import { getClaudeModelForTier } from '../../../shared/llm/model-registry.js';
12
14
  import { createSafeRecord } from '../../../shared/utils/safe-record.js';
@@ -33,6 +35,13 @@ const logger = LoggerFactory.create('learning-optimization/learning-coordinator'
33
35
  * domain even on installs with hundreds of indexed experiences.
34
36
  */
35
37
  const LEARNING_NS = { namespace: 'learning-optimization' };
38
+ /**
39
+ * #1055: active patterns only. `learning:pattern:*` also holds creation
40
+ * provenance and archived patterns written by this service.
41
+ */
42
+ function readActiveLearnedPatterns(memory) {
43
+ return readActivePatterns(memory, { retrieve: LEARNING_NS });
44
+ }
36
45
  export class LearningCoordinatorService {
37
46
  config;
38
47
  memory;
@@ -205,10 +214,15 @@ Provide:
205
214
  /**
206
215
  * Learn a pattern from a set of experiences
207
216
  */
208
- async learnPattern(experiences) {
217
+ async learnPattern(input) {
209
218
  try {
219
+ // #1109: an assigned reward is not evidence that the action succeeded.
220
+ const { measured: experiences, assignedExcluded } = partitionByRewardSource(input);
210
221
  if (experiences.length < this.config.minExperiencesForPattern) {
211
- 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}`));
212
226
  }
213
227
  // Analyze experiences to extract common patterns
214
228
  const commonActions = this.extractCommonActions(experiences);
@@ -235,6 +249,7 @@ Provide:
235
249
  template,
236
250
  createdAt: new Date(),
237
251
  lastUsedAt: new Date(),
252
+ rewardSource: 'measured',
238
253
  };
239
254
  // Store pattern in memory
240
255
  await this.storePattern(pattern);
@@ -251,14 +266,8 @@ Provide:
251
266
  */
252
267
  async findMatchingPatterns(context, limit = 10) {
253
268
  try {
254
- const patterns = [];
255
- const keys = await this.memory.search('learning:pattern:*', 100, LEARNING_NS);
256
- for (const key of keys) {
257
- const pattern = await this.memory.get(key, LEARNING_NS);
258
- if (pattern && this.matchesContext(pattern, context)) {
259
- patterns.push(pattern);
260
- }
261
- }
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));
262
271
  // Sort by confidence and usage
263
272
  patterns.sort((a, b) => {
264
273
  const scoreA = a.confidence * 0.6 + (a.successRate * 0.4);
@@ -366,6 +375,7 @@ Provide:
366
375
  template: bestPattern.template,
367
376
  createdAt: new Date(),
368
377
  lastUsedAt: new Date(),
378
+ rewardSource: patterns.every(isMeasuredPattern) ? 'measured' : 'assigned',
369
379
  };
370
380
  // Store consolidated pattern
371
381
  await this.storePattern(consolidatedPattern);
@@ -384,14 +394,10 @@ Provide:
384
394
  */
385
395
  async getPatternStats(domain) {
386
396
  try {
387
- const keys = await this.memory.search('learning:pattern:*', 500, LEARNING_NS);
388
- const patterns = [];
389
- for (const key of keys) {
390
- const pattern = await this.memory.get(key, LEARNING_NS);
391
- if (pattern && (!domain || pattern.domain === domain)) {
392
- patterns.push(pattern);
393
- }
394
- }
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;
395
401
  const byType = {
396
402
  'test-pattern': 0,
397
403
  'fix-pattern': 0,
@@ -434,6 +440,7 @@ Provide:
434
440
  avgConfidence: patterns.length > 0 ? totalConfidence / patterns.length : 0,
435
441
  avgSuccessRate: patterns.length > 0 ? totalSuccessRate / patterns.length : 0,
436
442
  topPatterns,
443
+ ...(assignedPatternsExcluded > 0 ? { assignedPatternsExcluded } : {}),
437
444
  });
438
445
  }
439
446
  catch (error) {
@@ -521,20 +528,39 @@ Provide:
521
528
  }
522
529
  }
523
530
  }
524
- /**
525
- * Mine experiences for insights
526
- */
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. */
527
541
  async mineExperiences(domain, timeRange) {
528
542
  try {
529
- 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
+ };
530
551
  if (experiences.length === 0) {
531
552
  return ok({
532
- experienceCount: 0,
533
- successRate: 0,
534
- avgReward: 0,
553
+ ...counts,
554
+ evidenceStatus: 'insufficient-evidence',
555
+ successRate: null,
556
+ avgReward: null,
535
557
  patterns: [],
536
558
  anomalies: [],
537
- 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
+ ],
538
564
  });
539
565
  }
540
566
  const successRate = this.calculateSuccessRate(experiences);
@@ -543,7 +569,7 @@ Provide:
543
569
  const anomalies = this.detectAnomalies(experiences);
544
570
  const recommendations = this.generateRecommendations(experiences, successRate, anomalies);
545
571
  return ok({
546
- experienceCount: experiences.length,
572
+ ...counts,
547
573
  successRate,
548
574
  avgReward,
549
575
  patterns,
@@ -589,7 +615,10 @@ Provide:
589
615
  try {
590
616
  const keys = await this.memory.search(`learning:experience:index:agent:${agentId.value}:*`, limit, LEARNING_NS);
591
617
  const experiences = [];
592
- 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;
593
622
  const experienceId = await this.memory.get(key, LEARNING_NS);
594
623
  if (experienceId) {
595
624
  // #493: rehydrate `timestamp` at the kv-read seam — the sort
@@ -640,7 +669,8 @@ Provide:
640
669
  if (clusterExperiences.length >= 2) {
641
670
  const centroid = this.calculateCentroid(clusterExperiences);
642
671
  const commonActions = this.extractCommonActions(clusterExperiences);
643
- const avgReward = this.calculateAverageReward(clusterExperiences);
672
+ const { measured } = partitionByRewardSource(clusterExperiences);
673
+ const avgReward = measured.length > 0 ? this.calculateAverageReward(measured) : null;
644
674
  result.push({
645
675
  id: `cluster-${clusterId++}`,
646
676
  centroid,
@@ -707,7 +737,10 @@ Provide:
707
737
  async getExperiencesByDomainAndTime(domain, timeRange) {
708
738
  const keys = await this.memory.search(`learning:experience:index:domain:${domain}:*`, 1000, LEARNING_NS);
709
739
  const experiences = [];
710
- 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;
711
744
  const experienceId = await this.memory.get(key, LEARNING_NS);
712
745
  if (experienceId) {
713
746
  const experience = await this.memory.get(`learning:experience:${experienceId}`, LEARNING_NS);
@@ -731,10 +764,10 @@ Provide:
731
764
  return experiences;
732
765
  }
733
766
  async extractPatternsFromExperiences(experiences) {
734
- // Group successful experiences by action type
735
- 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).
736
769
  const actionGroups = new Map();
737
- for (const exp of successfulExperiences) {
770
+ for (const exp of experiences) {
738
771
  const existing = actionGroups.get(exp.action) || [];
739
772
  existing.push(exp);
740
773
  actionGroups.set(exp.action, existing);
@@ -761,7 +794,8 @@ Provide:
761
794
  return false;
762
795
  }
763
796
  if (context.tags.length > 0) {
764
- const hasMatchingTag = context.tags.some((tag) => pattern.context.tags.includes(tag));
797
+ const patternTags = Array.isArray(pattern.context.tags) ? pattern.context.tags : [];
798
+ const hasMatchingTag = context.tags.some((tag) => patternTags.includes(tag));
765
799
  if (!hasMatchingTag) {
766
800
  return false;
767
801
  }
@@ -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;