agentic-qe 3.15.6 → 3.15.8

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 (441) hide show
  1. package/.claude/skills/skills-manifest.json +1 -1
  2. package/CHANGELOG.md +263 -0
  3. package/README.md +2 -0
  4. package/assets/skills/skills-manifest.json +1 -1
  5. package/dist/cli/bundle.js +8 -6
  6. package/dist/cli/chunks/adapter-FC4EY447.js +2 -0
  7. package/dist/cli/chunks/{agent-booster-wasm-SY7UCLBL.js → agent-booster-wasm-W3V5P7LE.js} +2 -2
  8. package/dist/cli/chunks/{agent-handler-KAMYBU3S.js → agent-handler-2NQFHAWE.js} +2 -2
  9. package/dist/cli/chunks/{agent-memory-branch-2CAW3KUM.js → agent-memory-branch-457ECHHK.js} +2 -2
  10. package/dist/cli/chunks/aqe-learning-engine-AUAL6UBL.js +2 -0
  11. package/dist/cli/chunks/{arena-QCCVIOAH.js → arena-IYBQ3GPY.js} +4 -4
  12. package/dist/cli/chunks/{arena-4OFLJ3R2.js → arena-JV3WSEHU.js} +2 -2
  13. package/dist/cli/chunks/{audit-RBDQJQJB.js → audit-5OS3T3K6.js} +3 -3
  14. package/dist/cli/chunks/base-2XML4WH7.js +2 -0
  15. package/dist/cli/chunks/{better-sqlite3-5JRACCDQ.js → better-sqlite3-IQKBFVAO.js} +2 -2
  16. package/dist/cli/chunks/{brain-handler-W4QIIRT4.js → brain-handler-KA3SGAFM.js} +3 -3
  17. package/dist/cli/chunks/{branch-enumerator-IBNGI572.js → branch-enumerator-QZDU2VOQ.js} +2 -2
  18. package/dist/cli/chunks/{browser-GMSCVAOI.js → browser-ZL7OLKJQ.js} +2 -2
  19. package/dist/cli/chunks/browser-workflow-2IFEUAAK.js +2 -0
  20. package/dist/cli/chunks/{chunk-6HWARQWV.js → chunk-22DOS3PM.js} +2 -2
  21. package/dist/cli/chunks/{chunk-VCONCVSY.js → chunk-2DPHFCMW.js} +2 -2
  22. package/dist/cli/chunks/{chunk-ALCIUWFC.js → chunk-2GSAAUW3.js} +1 -1
  23. package/dist/cli/chunks/{chunk-AX26QJ6T.js → chunk-2JCLACCS.js} +2 -2
  24. package/dist/cli/chunks/{chunk-7XTANLTN.js → chunk-2QRGIEQV.js} +1 -1
  25. package/dist/cli/chunks/{chunk-MP3FSUNB.js → chunk-2UN4JOTN.js} +2 -2
  26. package/dist/cli/chunks/{chunk-CR66HNAE.js → chunk-2ZRNXEVI.js} +1 -1
  27. package/dist/cli/chunks/{chunk-WKDWRRDT.js → chunk-3LFLO2WK.js} +2 -2
  28. package/dist/cli/chunks/{chunk-QLYO3H7E.js → chunk-3N627QRU.js} +2 -2
  29. package/dist/cli/chunks/{chunk-VVF337SV.js → chunk-4C3RYBTT.js} +2 -2
  30. package/dist/cli/chunks/{chunk-MQCTLTGE.js → chunk-4C7KE2EL.js} +2 -2
  31. package/dist/cli/chunks/{chunk-AUN4FG7V.js → chunk-4GUVVGJX.js} +1 -1
  32. package/dist/cli/chunks/{chunk-ZOUEQ6DL.js → chunk-4GYFONJB.js} +1 -1
  33. package/dist/cli/chunks/{chunk-24ZSGYC6.js → chunk-4I35ARWW.js} +1 -1
  34. package/dist/cli/chunks/{chunk-6MXAJBEA.js → chunk-4NTLGGXO.js} +1 -1
  35. package/dist/cli/chunks/{chunk-EF5UHDCG.js → chunk-4TZLZRZ4.js} +1 -1
  36. package/dist/cli/chunks/{chunk-RD5BYLN7.js → chunk-4YUBWU3E.js} +1 -1
  37. package/dist/cli/chunks/{chunk-7TVIX4WL.js → chunk-52YRSWPS.js} +2 -2
  38. package/dist/cli/chunks/{chunk-LAY7NCQK.js → chunk-5DZDLOY6.js} +3 -3
  39. package/dist/cli/chunks/{chunk-34MDMFET.js → chunk-5MBNRTT5.js} +2 -2
  40. package/dist/cli/chunks/{chunk-VAYZ5QIE.js → chunk-5ONJ7AV6.js} +1 -1
  41. package/dist/cli/chunks/{chunk-RV6HSMKJ.js → chunk-5YOO5QSE.js} +1 -1
  42. package/dist/cli/chunks/{chunk-BUTGIVKW.js → chunk-62T7U25U.js} +1 -1
  43. package/dist/cli/chunks/{chunk-66NW3ZB4.js → chunk-6CKTLVYV.js} +2 -2
  44. package/dist/cli/chunks/{chunk-TUDENMAE.js → chunk-6E7EOHMN.js} +2 -2
  45. package/dist/cli/chunks/{chunk-GVRFSXY6.js → chunk-6GIC2263.js} +2 -2
  46. package/dist/cli/chunks/{chunk-KIDOBLUO.js → chunk-767SR7WH.js} +2 -2
  47. package/dist/cli/chunks/{chunk-NBUXM5X6.js → chunk-7C6FMLQR.js} +2 -2
  48. package/dist/cli/chunks/{chunk-4POOJYXA.js → chunk-7CVMT64N.js} +1 -1
  49. package/dist/cli/chunks/{chunk-R363XXGH.js → chunk-7DHSHD5B.js} +2 -2
  50. package/dist/cli/chunks/{chunk-IEPWO4XP.js → chunk-7H3GNRNA.js} +2 -2
  51. package/dist/cli/chunks/{chunk-DQNUPEY5.js → chunk-7SLEUVPZ.js} +2 -2
  52. package/dist/cli/chunks/{chunk-YNG7E26C.js → chunk-7XGM7Q2N.js} +2 -2
  53. package/dist/cli/chunks/{chunk-5MT7DMD7.js → chunk-A2UGPKCS.js} +2 -2
  54. package/dist/cli/chunks/{chunk-2CIDFR2H.js → chunk-A6GCO6ZU.js} +2 -2
  55. package/dist/cli/chunks/{chunk-XFPQIWEH.js → chunk-BEVWCF3Q.js} +3 -3
  56. package/dist/cli/chunks/{chunk-LCCTJ2PC.js → chunk-BLZEOGQE.js} +2 -2
  57. package/dist/cli/chunks/{chunk-6R3FBFCJ.js → chunk-BQUIZ5QT.js} +2 -2
  58. package/dist/cli/chunks/{chunk-ZUTFHGEO.js → chunk-BTMEOZYY.js} +1 -1
  59. package/dist/cli/chunks/{chunk-FU7LNUD7.js → chunk-CDLG3Q2O.js} +2 -2
  60. package/dist/cli/chunks/{chunk-NYS2GUNO.js → chunk-CQ3SBRDP.js} +2 -2
  61. package/dist/cli/chunks/chunk-CQ5G64EA.js +3 -0
  62. package/dist/cli/chunks/{chunk-JCE76MPP.js → chunk-CRUQ6RXU.js} +2 -2
  63. package/dist/cli/chunks/{chunk-XBFQJZWX.js → chunk-D4IBIMWI.js} +2 -2
  64. package/dist/cli/chunks/{chunk-LZWJ5BMP.js → chunk-D4O3TJI7.js} +2 -2
  65. package/dist/cli/chunks/{chunk-AUOSHM63.js → chunk-DAFMHM64.js} +2 -2
  66. package/dist/cli/chunks/{chunk-V3OLS2NG.js → chunk-DCYUHCPK.js} +2 -2
  67. package/dist/cli/chunks/{chunk-F7A2UBZO.js → chunk-DKFSCJEF.js} +2 -2
  68. package/dist/cli/chunks/{chunk-5LST62QR.js → chunk-DN3AKAPY.js} +2 -2
  69. package/dist/cli/chunks/{chunk-OQ4S6B7P.js → chunk-DY37YMMQ.js} +1 -1
  70. package/dist/cli/chunks/{chunk-XQ53PZEF.js → chunk-EUVSSIGR.js} +3 -3
  71. package/dist/cli/chunks/{chunk-6WOZUSSN.js → chunk-FAYXES7R.js} +2 -2
  72. package/dist/cli/chunks/{chunk-GNYOHZVV.js → chunk-FEN2DHFM.js} +1 -1
  73. package/dist/cli/chunks/{chunk-BAYGQRNP.js → chunk-FEPFXXI7.js} +2 -2
  74. package/dist/cli/chunks/{chunk-DLSFT6PO.js → chunk-FJAO4UX2.js} +2 -2
  75. package/dist/cli/chunks/{chunk-22OZIJAD.js → chunk-FWXNFPLS.js} +2 -2
  76. package/dist/cli/chunks/{chunk-X33F7NXH.js → chunk-G6CLO74Q.js} +3 -3
  77. package/dist/cli/chunks/{chunk-HAN4MS5T.js → chunk-G77Q22EN.js} +2 -2
  78. package/dist/cli/chunks/{chunk-5DH5QI7G.js → chunk-GENNJRNK.js} +3 -3
  79. package/dist/cli/chunks/{chunk-LMAEMVPA.js → chunk-GGSTLKY5.js} +1 -1
  80. package/dist/cli/chunks/{chunk-EJ4KZFZN.js → chunk-GSOK4M6V.js} +1 -1
  81. package/dist/cli/chunks/{chunk-DA7DGDTI.js → chunk-HI6OBDDY.js} +2 -2
  82. package/dist/cli/chunks/{chunk-XZ46CI35.js → chunk-HNGNRIZZ.js} +2 -2
  83. package/dist/cli/chunks/{chunk-CLAMMGY3.js → chunk-HXCGV5UJ.js} +2 -2
  84. package/dist/cli/chunks/{chunk-5UPIL62W.js → chunk-I4U7YCXG.js} +3 -3
  85. package/dist/cli/chunks/{chunk-RFDFET3O.js → chunk-I77D65X5.js} +2 -2
  86. package/dist/cli/chunks/{chunk-HEGGV2PT.js → chunk-IJSFZO7P.js} +2 -2
  87. package/dist/cli/chunks/{chunk-GWM4M5NF.js → chunk-IMSRWNWF.js} +1 -1
  88. package/dist/cli/chunks/{chunk-B7RHBKHL.js → chunk-J6LL25QJ.js} +2 -2
  89. package/dist/cli/chunks/{chunk-KYVIOC3C.js → chunk-J7FLNP5L.js} +2 -2
  90. package/dist/cli/chunks/{chunk-YLNYPQDR.js → chunk-J7RCI25Q.js} +1 -1
  91. package/dist/cli/chunks/{chunk-72MQCZSM.js → chunk-JFWQFB3S.js} +2 -2
  92. package/dist/cli/chunks/{chunk-SV5BUYHH.js → chunk-JLTGO5BB.js} +2 -2
  93. package/dist/cli/chunks/{chunk-CCL436IU.js → chunk-JWPYMRIX.js} +14 -6
  94. package/dist/cli/chunks/{chunk-ONPPBLRB.js → chunk-K4N2MBCE.js} +2 -2
  95. package/dist/cli/chunks/{chunk-7SAMMQVS.js → chunk-K5R3WUJP.js} +1 -1
  96. package/dist/cli/chunks/{chunk-GI5HWS4H.js → chunk-KITKQUBX.js} +1 -1
  97. package/dist/cli/chunks/{chunk-7TJZDRDU.js → chunk-KJNUETCB.js} +1 -1
  98. package/dist/cli/chunks/{chunk-JYKQVYX2.js → chunk-KMVFBYJO.js} +2 -2
  99. package/dist/cli/chunks/{chunk-ZSBD4FUX.js → chunk-KMZW2P3R.js} +2 -2
  100. package/dist/cli/chunks/{chunk-PEMSXSP2.js → chunk-KNHLOANK.js} +2 -2
  101. package/dist/cli/chunks/{chunk-47Q7JL3V.js → chunk-KNQUHGNY.js} +2 -2
  102. package/dist/cli/chunks/{chunk-A7ANPS4E.js → chunk-KVMKYUOE.js} +2 -2
  103. package/dist/cli/chunks/{chunk-XBEI2JBA.js → chunk-LHRVSK44.js} +2 -2
  104. package/dist/cli/chunks/{chunk-AJT3XDRD.js → chunk-LPSMVBB3.js} +2 -2
  105. package/dist/cli/chunks/{chunk-ORBODZSO.js → chunk-LVHZK7GW.js} +2 -2
  106. package/dist/cli/chunks/{chunk-ZTB32K5N.js → chunk-LZWBUVCK.js} +3 -3
  107. package/dist/cli/chunks/{chunk-OPDZBRIL.js → chunk-MMY52Y6R.js} +2 -2
  108. package/dist/cli/chunks/{chunk-MQTA6KIO.js → chunk-MUDBF2JC.js} +1 -1
  109. package/dist/cli/chunks/{chunk-GFB6BZWU.js → chunk-MV4S3TEC.js} +2 -2
  110. package/dist/cli/chunks/{chunk-UB6DQGWM.js → chunk-NF63NHJH.js} +2 -2
  111. package/dist/cli/chunks/{chunk-D5N2O5EH.js → chunk-NHOMVBCI.js} +2 -2
  112. package/dist/cli/chunks/{chunk-3NJ7O3OH.js → chunk-NLYUC63R.js} +2 -2
  113. package/dist/cli/chunks/{chunk-4CLDYT36.js → chunk-NQDYOF35.js} +2 -2
  114. package/dist/cli/chunks/{chunk-ORFL3YXB.js → chunk-NW7HTOSN.js} +2 -2
  115. package/dist/cli/chunks/{chunk-FQ5N666N.js → chunk-NWFBF3KT.js} +1 -1
  116. package/dist/cli/chunks/{chunk-P7DXVL2S.js → chunk-NZATJ2C6.js} +2 -2
  117. package/dist/cli/chunks/{chunk-HOEWMEF2.js → chunk-O4RRVTXN.js} +2 -2
  118. package/dist/cli/chunks/{chunk-4KOVHQXK.js → chunk-OCLAMZJG.js} +2 -2
  119. package/dist/cli/chunks/{chunk-TLUIO37P.js → chunk-OJWEZYLR.js} +2 -2
  120. package/dist/cli/chunks/{chunk-A74J23QB.js → chunk-OWBFVAEH.js} +2 -2
  121. package/dist/cli/chunks/{chunk-6T6AHVLF.js → chunk-P2EA62YS.js} +1 -1
  122. package/dist/cli/chunks/{chunk-TL5GV3PR.js → chunk-P4UT4LBE.js} +3 -3
  123. package/dist/cli/chunks/{chunk-IVJIHZSM.js → chunk-PICEGWGB.js} +1 -1
  124. package/dist/cli/chunks/{chunk-ITIJ23K2.js → chunk-PIEKGKW6.js} +2 -2
  125. package/dist/cli/chunks/{chunk-2ZTWPMTK.js → chunk-PJGQ2TKN.js} +2 -2
  126. package/dist/cli/chunks/{chunk-KCB6P463.js → chunk-PPIM7B5G.js} +2 -2
  127. package/dist/cli/chunks/{chunk-L2TDHJR3.js → chunk-PUYQ6EKC.js} +2 -2
  128. package/dist/cli/chunks/{chunk-2IWPJUVV.js → chunk-PWA6XBW4.js} +8 -8
  129. package/dist/cli/chunks/{chunk-XPB5BVU6.js → chunk-PZ7FJ4UG.js} +2 -2
  130. package/dist/cli/chunks/{chunk-SOSJWM3E.js → chunk-QFYUZYRA.js} +4 -4
  131. package/dist/cli/chunks/{chunk-RUTO67PT.js → chunk-R2NHGESM.js} +2 -2
  132. package/dist/cli/chunks/{chunk-K55EAWZ5.js → chunk-RG42LDOB.js} +2 -2
  133. package/dist/cli/chunks/{chunk-JAPBSSFY.js → chunk-RSMPJWQH.js} +1 -1
  134. package/dist/cli/chunks/{chunk-46HBVDMU.js → chunk-SFPGLUXS.js} +1 -1
  135. package/dist/cli/chunks/{chunk-TVLOED6O.js → chunk-SHEVM5PF.js} +2 -2
  136. package/dist/cli/chunks/{chunk-6RDVY26I.js → chunk-SJMZZMHP.js} +2 -2
  137. package/dist/cli/chunks/{chunk-3DJNKNBR.js → chunk-ST7ASEJO.js} +57 -57
  138. package/dist/cli/chunks/{chunk-QS5KZYUZ.js → chunk-SWY6KGMF.js} +2 -2
  139. package/dist/cli/chunks/{chunk-UHHMAKPE.js → chunk-T2TDTBFV.js} +1 -1
  140. package/dist/cli/chunks/{chunk-5HAPS6VD.js → chunk-TC52M542.js} +2 -2
  141. package/dist/cli/chunks/chunk-TMNEK7TP.js +2 -0
  142. package/dist/cli/chunks/{chunk-ELI4GDQO.js → chunk-U3BWBP6B.js} +2 -2
  143. package/dist/cli/chunks/{chunk-CZBIREL5.js → chunk-U7CIY3YR.js} +2 -2
  144. package/dist/cli/chunks/{chunk-X2DR27AY.js → chunk-UDCYQLTD.js} +2 -2
  145. package/dist/cli/chunks/{chunk-CEXNW5TR.js → chunk-UKKFZJME.js} +1 -1
  146. package/dist/cli/chunks/{chunk-5NC7QEJ6.js → chunk-UQLAN5TX.js} +4 -4
  147. package/dist/cli/chunks/{chunk-BIXRTOH3.js → chunk-UTFMMZ57.js} +3 -3
  148. package/dist/cli/chunks/{chunk-YXU35GGD.js → chunk-UTNKMPTC.js} +1 -1
  149. package/dist/cli/chunks/{chunk-HZFK2Z2Z.js → chunk-V4QJ3MMT.js} +1 -1
  150. package/dist/cli/chunks/{chunk-LJCEDTUM.js → chunk-V7VZSNDK.js} +3 -3
  151. package/dist/cli/chunks/{chunk-RLB7K7QP.js → chunk-VKFVJCIH.js} +1 -1
  152. package/dist/cli/chunks/{chunk-5GIJU2ZY.js → chunk-VQRBBR27.js} +2 -2
  153. package/dist/cli/chunks/{chunk-Q2RBOC7V.js → chunk-VVK4ECVJ.js} +2 -2
  154. package/dist/cli/chunks/{chunk-624QRKQX.js → chunk-VWRNG3UK.js} +1 -1
  155. package/dist/cli/chunks/{chunk-F3KS3TAB.js → chunk-VWSGWYRB.js} +2 -2
  156. package/dist/cli/chunks/{chunk-I7WAW7TM.js → chunk-W5A36V3Z.js} +2 -2
  157. package/dist/cli/chunks/chunk-WAWKAYPY.js +2 -0
  158. package/dist/cli/chunks/{chunk-NMY4KTWA.js → chunk-WLXGUQOZ.js} +2 -2
  159. package/dist/cli/chunks/{chunk-7VTKR44N.js → chunk-X3HM7SV4.js} +2 -2
  160. package/dist/cli/chunks/chunk-X6VYQVUM.js +2 -0
  161. package/dist/cli/chunks/{chunk-ZL5LJT7D.js → chunk-X7ZQIFES.js} +2 -2
  162. package/dist/cli/chunks/{chunk-5VUIXDY2.js → chunk-XOOBLZXR.js} +2 -2
  163. package/dist/cli/chunks/{chunk-L4D3TPFP.js → chunk-XZQVC3GD.js} +1 -1
  164. package/dist/cli/chunks/{chunk-BO7UFNYV.js → chunk-Y5ZBF7MA.js} +2 -2
  165. package/dist/cli/chunks/{chunk-ULCHPPW2.js → chunk-YNQPHRUZ.js} +1 -1
  166. package/dist/cli/chunks/{chunk-ZCP4P6O2.js → chunk-YRH7KMTU.js} +2 -2
  167. package/dist/cli/chunks/{chunk-QLKUCMZC.js → chunk-YTYS2XSY.js} +1 -1
  168. package/dist/cli/chunks/{chunk-JPJEAK4G.js → chunk-YUP3APSN.js} +1 -1
  169. package/dist/cli/chunks/{chunk-BXATKI5S.js → chunk-YVWMJZ6O.js} +2 -2
  170. package/dist/cli/chunks/{chunk-PS6WFCA4.js → chunk-Z3LDUPLQ.js} +2 -2
  171. package/dist/cli/chunks/{chunk-FOJRPEIP.js → chunk-ZBI7PJFX.js} +2 -2
  172. package/dist/cli/chunks/{chunk-NHRF3V4B.js → chunk-ZG7UKWBB.js} +2 -2
  173. package/dist/cli/chunks/{chunk-7XUB7U6Z.js → chunk-ZOHS32SI.js} +2 -2
  174. package/dist/cli/chunks/{chunk-RHIQ6QO5.js → chunk-ZOVAZTXE.js} +430 -430
  175. package/dist/cli/chunks/{chunk-7QVPMH25.js → chunk-ZWMFKZEQ.js} +2 -2
  176. package/dist/cli/chunks/{ci-GEJCXMBK.js → ci-7NUCRGWO.js} +2 -2
  177. package/dist/cli/chunks/{ci-config-2ZVV4OXL.js → ci-config-VQVECCFI.js} +2 -2
  178. package/dist/cli/chunks/{ci-output-E45OGVPR.js → ci-output-P7GQ6TKF.js} +2 -2
  179. package/dist/cli/chunks/{circuit-breaker-X73ITYZC.js → circuit-breaker-5YP6N6HE.js} +2 -2
  180. package/dist/cli/chunks/{claude-flow-setup-W4PPH46C.js → claude-flow-setup-W5H7CMU6.js} +2 -2
  181. package/dist/cli/chunks/client-RFUSQRUZ.js +2 -0
  182. package/dist/cli/chunks/{cline-installer-NUEPMWDE.js → cline-installer-OYANSZ54.js} +2 -2
  183. package/dist/cli/chunks/{code-6WQHBS7G.js → code-OMT4UEZI.js} +3 -3
  184. package/dist/cli/chunks/{code-index-extractor-BXQIFIFT.js → code-index-extractor-M2JEWKNF.js} +2 -2
  185. package/dist/cli/chunks/{codex-installer-Z337R2KH.js → codex-installer-YBS6N5O3.js} +2 -2
  186. package/dist/cli/chunks/{completions-F5DMYFHV.js → completions-U7GS5RG6.js} +2 -2
  187. package/dist/cli/chunks/{complexity-analyzer-W2SYPZDI.js → complexity-analyzer-QSXPIUIU.js} +2 -2
  188. package/dist/cli/chunks/{continuedev-installer-ZCHUIFTN.js → continuedev-installer-W5TTT743.js} +2 -2
  189. package/dist/cli/chunks/{copilot-installer-M5JNODXF.js → copilot-installer-KC2RT24C.js} +2 -2
  190. package/dist/cli/chunks/core-handlers-ZC7QB432.js +2 -0
  191. package/dist/cli/chunks/{cost-tracker-LSYTHBHV.js → cost-tracker-OQPVR6V4.js} +2 -2
  192. package/dist/cli/chunks/{coverage-PGMRS5SS.js → coverage-TCO2A2NX.js} +3 -3
  193. package/dist/cli/chunks/cross-domain-router-GRBK7YFZ.js +2 -0
  194. package/dist/cli/chunks/{cursor-installer-XPUA73UW.js → cursor-installer-MH7GWD4L.js} +2 -2
  195. package/dist/cli/chunks/daemon-JER6HE2J.js +12 -0
  196. package/dist/cli/chunks/{daemon-ITKDIYMW.js → daemon-UJEARJZ2.js} +3 -3
  197. package/dist/cli/chunks/{dag-attention-scheduler-T55AXLD6.js → dag-attention-scheduler-F3SUJU5O.js} +2 -2
  198. package/dist/cli/chunks/{detect-DR7J6K4O.js → detect-5QTCRB32.js} +2 -2
  199. package/dist/cli/chunks/{dist-node-LAJJBOUT.js → dist-node-XKZPHDBO.js} +2 -2
  200. package/dist/cli/chunks/{domain-handler-OMSHCRMK.js → domain-handler-V3UEADKW.js} +2 -2
  201. package/dist/cli/chunks/{domain-plugins-EQXSKC5K.js → domain-plugins-7PES4UHZ.js} +2 -2
  202. package/dist/cli/chunks/{domain-transfer-FKRAGVSW.js → domain-transfer-NF7UJW7B.js} +2 -2
  203. package/dist/cli/chunks/dream-VALD726W.js +2 -0
  204. package/dist/cli/chunks/{embed-and-insert-pattern-JZFPCNL3.js → embed-and-insert-pattern-D2HWORHF.js} +2 -2
  205. package/dist/cli/chunks/{eval-JSNNASBW.js → eval-UF2UBAUC.js} +2 -2
  206. package/dist/cli/chunks/{experience-capture-middleware-UPD3IZBK.js → experience-capture-middleware-2OUCEHHM.js} +3 -3
  207. package/dist/cli/chunks/{fast-paths-YNMIBS2E.js → fast-paths-KV5DKKHC.js} +2 -2
  208. package/dist/cli/chunks/{feature-flags-SRLXDKBI.js → feature-flags-6YWMTNO5.js} +2 -2
  209. package/dist/cli/chunks/{feature-flags-VIR7O4L7.js → feature-flags-MTW6NMR3.js} +2 -2
  210. package/dist/cli/chunks/file-discovery-VL73ASNI.js +2 -0
  211. package/dist/cli/chunks/{fleet-K2ED46EL.js → fleet-GJ66QFXK.js} +3 -3
  212. package/dist/cli/chunks/{gnn-wrapper-QCU4ZRYW.js → gnn-wrapper-52V6ANOY.js} +2 -2
  213. package/dist/cli/chunks/{heartbeat-handler-YYQI4WZM.js → heartbeat-handler-X7NHNRC7.js} +4 -4
  214. package/dist/cli/chunks/heartbeat-scheduler-FSX7A3ZA.js +2 -0
  215. package/dist/cli/chunks/hnsw-adapter-UX2QT6RL.js +2 -0
  216. package/dist/cli/chunks/hnsw-index-WRDDAMXH.js +2 -0
  217. package/dist/cli/chunks/{hnsw-legacy-bridge-C5TJSWTZ.js → hnsw-legacy-bridge-DZBE3KMK.js} +2 -2
  218. package/dist/cli/chunks/{hnswlib-node-SE3MJJYS.js → hnswlib-node-2AWWUJAZ.js} +2 -2
  219. package/dist/cli/chunks/{hooks-C572SRDH.js → hooks-XLPVROL3.js} +10 -10
  220. package/dist/cli/chunks/hybrid-backend-O67NGIB5.js +2 -0
  221. package/dist/cli/chunks/{hypergraph-engine-35A6G3M5.js → hypergraph-engine-6TI7YP6P.js} +2 -2
  222. package/dist/cli/chunks/{hypergraph-handler-U2756CWI.js → hypergraph-handler-DBIBBOXS.js} +3 -3
  223. package/dist/cli/chunks/impact-analyzer-6VXWWYWM.js +2 -0
  224. package/dist/cli/chunks/init-guard-OSO6MIDD.js +2 -0
  225. package/dist/cli/chunks/init-handler-7S7IHMUF.js +88 -0
  226. package/dist/cli/chunks/init-wizard-VH34J4TL.js +2 -0
  227. package/dist/cli/chunks/kernel-KJD24NO7.js +2 -0
  228. package/dist/cli/chunks/{kilocode-installer-32PX5YH7.js → kilocode-installer-2KBRFXMA.js} +2 -2
  229. package/dist/cli/chunks/{kiro-installer-C4ROMMUS.js → kiro-installer-5VFR4OQZ.js} +2 -2
  230. package/dist/cli/chunks/knowledge-graph-343O2HEZ.js +2 -0
  231. package/dist/cli/chunks/{learning-GEPVZGJQ.js → learning-G5NHL3DV.js} +20 -20
  232. package/dist/cli/chunks/{llm-router-XRKTTJTX.js → llm-router-4EAPPMHS.js} +4 -4
  233. package/dist/cli/chunks/llm-router-service-2M4BT2AO.js +2 -0
  234. package/dist/cli/chunks/{load-XVH6HW7E.js → load-UYMZPEY6.js} +2 -2
  235. package/dist/cli/chunks/load-test-OTQ2JQ5F.js +2 -0
  236. package/dist/cli/chunks/{mcp-IULSTM4Z.js → mcp-NOTDZBW5.js} +2 -2
  237. package/dist/cli/chunks/{memory-6K7IAU4T.js → memory-QL53YIHP.js} +5 -5
  238. package/dist/cli/chunks/memory-backend-4QSNRRV6.js +2 -0
  239. package/dist/cli/chunks/{memory-handlers-CG6DRLAW.js → memory-handlers-YFFYRSM6.js} +2 -2
  240. package/dist/cli/chunks/{multi-model-executor-VZDUYPLX.js → multi-model-executor-PDDDXF2B.js} +2 -2
  241. package/dist/cli/chunks/{opencode-installer-QUTXKNH4.js → opencode-installer-75D2SKOT.js} +2 -2
  242. package/dist/cli/chunks/{orchestrator-PCKKUWOP.js → orchestrator-3WIZBV4T.js} +5 -5
  243. package/dist/cli/chunks/pattern-null-store-5USH5MNR.js +2 -0
  244. package/dist/cli/chunks/{pattern-usage-recorder-PX5HQVRL.js → pattern-usage-recorder-TEX2JGHA.js} +2 -2
  245. package/dist/cli/chunks/{pipeline-O562GTOG.js → pipeline-7ATPA6LU.js} +2 -2
  246. package/dist/cli/chunks/{platform-PM7Q2AZS.js → platform-WPSKRJE7.js} +2 -2
  247. package/dist/cli/chunks/{plugin-OTYTFGPY.js → plugin-UUFOVVMU.js} +2 -2
  248. package/dist/cli/chunks/{prime-radiant-advanced-wasm-6CFXTHC2.js → prime-radiant-advanced-wasm-PDFSYWKZ.js} +2 -2
  249. package/dist/cli/chunks/project-root-SRTA6TBL.js +2 -0
  250. package/dist/cli/chunks/protocol-executor-4WYPCNBS.js +2 -0
  251. package/dist/cli/chunks/{protocol-handler-PPGNSAOS.js → protocol-handler-3VRYRIQB.js} +2 -2
  252. package/dist/cli/chunks/{prove-WQ3BKRZG.js → prove-2NAUROGF.js} +2 -2
  253. package/dist/cli/chunks/qe-reasoning-bank-I4D6SFS4.js +2 -0
  254. package/dist/cli/chunks/{quality-C5WUU3AA.js → quality-ZIEI2WGA.js} +2 -2
  255. package/dist/cli/chunks/{quality-gate-WSSRKD5U.js → quality-gate-KWJO4SWQ.js} +3 -3
  256. package/dist/cli/chunks/queen-coordinator-24UMTZTE.js +2 -0
  257. package/dist/cli/chunks/{real-embeddings-CFQE7IRQ.js → real-embeddings-TSZ4UIAE.js} +2 -2
  258. package/dist/cli/chunks/{ref-validation-DHKHXVZT.js → ref-validation-DWFFRETJ.js} +2 -2
  259. package/dist/cli/chunks/{roocode-installer-3PPODABV.js → roocode-installer-XTZHLUBO.js} +2 -2
  260. package/dist/cli/chunks/router-AUD4GATI.js +2 -0
  261. package/dist/cli/chunks/routing-feedback-2FE6SIKQ.js +2 -0
  262. package/dist/cli/chunks/{routing-handler-JNXTGT6T.js → routing-handler-GG525TDM.js} +2 -2
  263. package/dist/cli/chunks/{ruvector-commands-6YLROPVP.js → ruvector-commands-QKRJDM7Z.js} +2 -2
  264. package/dist/cli/chunks/rvf-dual-writer-P5LEUF25.js +2 -0
  265. package/dist/cli/chunks/rvf-migration-adapter-ZCYD5YJS.js +2 -0
  266. package/dist/cli/chunks/{rvf-migration-coordinator-4DWB4WRK.js → rvf-migration-coordinator-FF52OS6Q.js} +2 -2
  267. package/dist/cli/chunks/rvf-native-adapter-QGV6BW2W.js +2 -0
  268. package/dist/cli/chunks/{rvf-store-integrity-YKR2ZNBF.js → rvf-store-integrity-M6DXTAZ4.js} +2 -2
  269. package/dist/cli/chunks/safe-db-Q6JUKG2A.js +2 -0
  270. package/dist/cli/chunks/schedule-44OSMGE5.js +2 -0
  271. package/dist/cli/chunks/scheduler-V3HO2QQT.js +2 -0
  272. package/dist/cli/chunks/security-EHXSW22U.js +18 -0
  273. package/dist/cli/chunks/{shared-rvf-adapter-LNRLFP5I.js → shared-rvf-adapter-6EH7UVJL.js} +2 -2
  274. package/dist/cli/chunks/{shared-rvf-dual-writer-GWU6YQNS.js → shared-rvf-dual-writer-WML274E7.js} +2 -2
  275. package/dist/cli/chunks/sqlite-persistence-N5T7DWMR.js +2 -0
  276. package/dist/cli/chunks/{standalone-memory-46KKBSSV.js → standalone-memory-C7QKAXS4.js} +2 -2
  277. package/dist/cli/chunks/{status-handler-35T5FTDQ.js → status-handler-VLI7MRLM.js} +2 -2
  278. package/dist/cli/chunks/{structural-health-P7QPQWLO.js → structural-health-3LPG6MQN.js} +2 -2
  279. package/dist/cli/chunks/{sync-Y43EWBSY.js → sync-4IMMQEPT.js} +2 -2
  280. package/dist/cli/chunks/{sync-W6Z4R4PL.js → sync-JFJEJBVK.js} +2 -2
  281. package/dist/cli/chunks/{task-handler-5CX3ZYT7.js → task-handler-IED3K6E4.js} +2 -2
  282. package/dist/cli/chunks/{task-handlers-DQZGOJNE.js → task-handlers-FH6DNTHW.js} +3 -3
  283. package/dist/cli/chunks/{test-TPP53VVV.js → test-GPKT3CKZ.js} +4 -4
  284. package/dist/cli/chunks/{test-scheduling-WBV4UMQH.js → test-scheduling-Z42XXZP6.js} +3 -3
  285. package/dist/cli/chunks/{token-bootstrap-GIIDXHLC.js → token-bootstrap-HMM3AHXM.js} +2 -2
  286. package/dist/cli/chunks/{token-usage-AKK37RB7.js → token-usage-6Y2ERYIY.js} +2 -2
  287. package/dist/cli/chunks/{transformers-7MASPELS.js → transformers-MB63T2XO.js} +2 -2
  288. package/dist/cli/chunks/{tree-sitter-wasm-parser-YZKD6UGB.js → tree-sitter-wasm-parser-56GDQCMR.js} +2 -2
  289. package/dist/cli/chunks/{types-AZ3BTXDP.js → types-J4J6QV3I.js} +2 -2
  290. package/dist/cli/chunks/unified-memory-RQ3Q4CU3.js +2 -0
  291. package/dist/cli/chunks/unified-memory-hnsw-ZOP5FEYX.js +2 -0
  292. package/dist/cli/chunks/unified-persistence-72OCJJKK.js +2 -0
  293. package/dist/cli/chunks/{upgrade-L7OTDKEK.js → upgrade-U4XU7LFM.js} +2 -2
  294. package/dist/cli/chunks/{validate-O3QVFIGP.js → validate-B57HA4YK.js} +2 -2
  295. package/dist/cli/chunks/{validate-swarm-2UGBGLTX.js → validate-swarm-UPPA4M6T.js} +2 -2
  296. package/dist/cli/chunks/visual-security-7F5UV23J.js +2 -0
  297. package/dist/cli/chunks/{web-tree-sitter-J75IYPRO.js → web-tree-sitter-GDZMUKOZ.js} +2 -2
  298. package/dist/cli/chunks/{windsurf-installer-FQ5DBFCG.js → windsurf-installer-VJRWCHXP.js} +2 -2
  299. package/dist/cli/chunks/witness-chain-KZ57QUFE.js +2 -0
  300. package/dist/cli/chunks/{witness-chain-I7TN4MXZ.js → witness-chain-LFASSMZK.js} +2 -2
  301. package/dist/cli/chunks/{witness-chain-repair-D3NE3NQK.js → witness-chain-repair-TPHN4DXN.js} +2 -2
  302. package/dist/cli/chunks/{witness-chain-verifier-RU2WOP5M.js → witness-chain-verifier-Z23FVABW.js} +2 -2
  303. package/dist/cli/chunks/{witness-key-manager-IHQB2FR5.js → witness-key-manager-745MJ7WO.js} +2 -2
  304. package/dist/cli/chunks/{workflow-6BWTNVV6.js → workflow-T245QNQM.js} +4 -4
  305. package/dist/cli/chunks/workflow-orchestrator-ZNWEUYBN.js +2 -0
  306. package/dist/cli/chunks/{wrappers-URVP25VU.js → wrappers-WCAYIQUX.js} +2 -2
  307. package/dist/cli/commands/learning.js +3 -2
  308. package/dist/cli/commands/security.d.ts +16 -0
  309. package/dist/cli/commands/security.js +76 -9
  310. package/dist/cli/handlers/init-guard.d.ts +21 -1
  311. package/dist/cli/handlers/init-guard.js +51 -8
  312. package/dist/cli/handlers/init-handler.js +57 -56
  313. package/dist/cli/index.js +11 -0
  314. package/dist/cli/utils/ci-output.d.ts +5 -0
  315. package/dist/cli/utils/ci-output.js +8 -0
  316. package/dist/coordination/handlers/security-handlers.js +22 -6
  317. package/dist/coordination/protocols/defect-investigation.js +7 -1
  318. package/dist/coordination/protocols/learning-consolidation.js +6 -12
  319. package/dist/coordination/protocols/security-audit.js +11 -0
  320. package/dist/coordination/result-saver.d.ts +9 -0
  321. package/dist/coordination/result-saver.js +34 -4
  322. package/dist/domains/coverage-analysis/collected-metrics.d.ts +2 -0
  323. package/dist/domains/coverage-analysis/collected-metrics.js +8 -1
  324. package/dist/domains/defect-intelligence/services/defect-predictor.js +9 -6
  325. package/dist/domains/learning-optimization/active-patterns.d.ts +55 -0
  326. package/dist/domains/learning-optimization/active-patterns.js +77 -0
  327. package/dist/domains/learning-optimization/coordinator.js +12 -9
  328. package/dist/domains/learning-optimization/services/learning-coordinator.js +15 -17
  329. package/dist/domains/quality-assessment/interfaces.d.ts +4 -0
  330. package/dist/domains/quality-assessment/quality-evidence.d.ts +1 -1
  331. package/dist/domains/quality-assessment/services/quality-analyzer.js +7 -5
  332. package/dist/domains/quality-assessment/services/quality-gate.js +12 -3
  333. package/dist/domains/security-compliance/dependency-advisory-engine.d.ts +52 -0
  334. package/dist/domains/security-compliance/dependency-advisory-engine.js +113 -0
  335. package/dist/domains/security-compliance/interfaces.d.ts +30 -0
  336. package/dist/domains/security-compliance/plugin.d.ts +7 -1
  337. package/dist/domains/security-compliance/plugin.js +19 -0
  338. package/dist/domains/security-compliance/services/scanners/dependency-resolver.d.ts +71 -0
  339. package/dist/domains/security-compliance/services/scanners/dependency-resolver.js +232 -0
  340. package/dist/domains/security-compliance/services/scanners/dependency-scanner.d.ts +21 -6
  341. package/dist/domains/security-compliance/services/scanners/dependency-scanner.js +142 -64
  342. package/dist/domains/security-compliance/services/scanners/lockfile-versions.d.ts +43 -0
  343. package/dist/domains/security-compliance/services/scanners/lockfile-versions.js +248 -0
  344. package/dist/domains/security-compliance/services/scanners/scanner-types.d.ts +30 -2
  345. package/dist/domains/security-compliance/services/security-auditor.d.ts +19 -6
  346. package/dist/domains/security-compliance/services/security-auditor.js +133 -92
  347. package/dist/domains/test-execution/services/retry-handler.js +34 -7
  348. package/dist/domains/test-execution/services/test-executor.d.ts +1 -0
  349. package/dist/domains/test-execution/services/test-executor.js +87 -7
  350. package/dist/kernel/shared-dirs.js +17 -5
  351. package/dist/learning/dream/dream-engine.d.ts +27 -1
  352. package/dist/learning/dream/dream-engine.js +56 -2
  353. package/dist/learning/dream/rvcow-branch-manager.d.ts +8 -0
  354. package/dist/learning/dream/rvcow-branch-manager.js +8 -0
  355. package/dist/learning/dream/speculative-dreamer.d.ts +8 -0
  356. package/dist/learning/dream/speculative-dreamer.js +8 -0
  357. package/dist/mcp/background-workers.d.ts +15 -0
  358. package/dist/mcp/background-workers.js +71 -0
  359. package/dist/mcp/bundle.js +881 -878
  360. package/dist/mcp/entry.js +4 -49
  361. package/dist/mcp/handlers/domain-handler-configs.d.ts +4 -0
  362. package/dist/mcp/handlers/domain-handler-configs.js +5 -1
  363. package/dist/mcp/protocol-server.js +2 -1
  364. package/dist/mcp/types.d.ts +6 -0
  365. package/dist/shared/security/index.d.ts +2 -2
  366. package/dist/shared/security/index.js +1 -1
  367. package/dist/shared/security/osv-client.d.ts +79 -132
  368. package/dist/shared/security/osv-client.js +344 -167
  369. package/dist/shared/security/osv-lookup.d.ts +124 -0
  370. package/dist/shared/security/osv-lookup.js +246 -0
  371. package/dist/shared/security/osv-types.d.ts +119 -0
  372. package/dist/shared/security/osv-types.js +6 -0
  373. package/dist/workers/daemon.d.ts +5 -0
  374. package/dist/workers/daemon.js +16 -2
  375. package/dist/workers/interfaces.d.ts +6 -1
  376. package/dist/workers/namespaced-keys.d.ts +16 -0
  377. package/dist/workers/namespaced-keys.js +24 -0
  378. package/dist/workers/quality-daemon/persistent-memory.d.ts +1 -1
  379. package/dist/workers/quality-daemon/persistent-memory.js +2 -2
  380. package/dist/workers/worker-env.d.ts +45 -0
  381. package/dist/workers/worker-env.js +76 -0
  382. package/dist/workers/worker-manager.js +5 -2
  383. package/dist/workers/workers/defect-predictor.d.ts +25 -8
  384. package/dist/workers/workers/defect-predictor.js +223 -216
  385. package/dist/workers/workers/learning-consolidation.d.ts +20 -0
  386. package/dist/workers/workers/learning-consolidation.js +53 -22
  387. package/dist/workers/workers/performance-baseline.d.ts +24 -9
  388. package/dist/workers/workers/performance-baseline.js +187 -230
  389. package/dist/workers/workers/quality-gate.d.ts +11 -9
  390. package/dist/workers/workers/quality-gate.js +125 -267
  391. package/dist/workers/workers/security-scan-records.d.ts +111 -0
  392. package/dist/workers/workers/security-scan-records.js +128 -0
  393. package/dist/workers/workers/security-scan.d.ts +25 -7
  394. package/dist/workers/workers/security-scan.js +187 -164
  395. package/package.json +2 -2
  396. package/dist/cli/chunks/adapter-PP3XIXDV.js +0 -2
  397. package/dist/cli/chunks/aqe-learning-engine-VDUQJKKY.js +0 -2
  398. package/dist/cli/chunks/base-QSYWWPCE.js +0 -2
  399. package/dist/cli/chunks/browser-workflow-WXXPBSCM.js +0 -2
  400. package/dist/cli/chunks/chunk-45MVRQG4.js +0 -2
  401. package/dist/cli/chunks/chunk-5VZVMO7B.js +0 -3
  402. package/dist/cli/chunks/chunk-EECF4CMA.js +0 -2
  403. package/dist/cli/chunks/client-6XKSQ4JT.js +0 -2
  404. package/dist/cli/chunks/core-handlers-OJYW4Y6M.js +0 -2
  405. package/dist/cli/chunks/cross-domain-router-QVUPQ2SC.js +0 -2
  406. package/dist/cli/chunks/daemon-QBYTCIMH.js +0 -10
  407. package/dist/cli/chunks/dream-3UABDRZJ.js +0 -2
  408. package/dist/cli/chunks/file-discovery-ZFGZTKZ4.js +0 -2
  409. package/dist/cli/chunks/heartbeat-scheduler-MJ6MTPDF.js +0 -2
  410. package/dist/cli/chunks/hnsw-adapter-FQWJCFVW.js +0 -2
  411. package/dist/cli/chunks/hnsw-index-NJYKJUHC.js +0 -2
  412. package/dist/cli/chunks/hybrid-backend-SL7RFID7.js +0 -2
  413. package/dist/cli/chunks/impact-analyzer-5ZJTXPVC.js +0 -2
  414. package/dist/cli/chunks/init-handler-PCLYQUSB.js +0 -88
  415. package/dist/cli/chunks/init-wizard-MQMDSIOF.js +0 -2
  416. package/dist/cli/chunks/kernel-MEJ5GMRH.js +0 -2
  417. package/dist/cli/chunks/knowledge-graph-XUBZSEZE.js +0 -2
  418. package/dist/cli/chunks/llm-router-service-QZAPAEPX.js +0 -2
  419. package/dist/cli/chunks/load-test-OVXIQ3AF.js +0 -2
  420. package/dist/cli/chunks/memory-backend-TRPOMPK4.js +0 -2
  421. package/dist/cli/chunks/pattern-null-store-JWYBRBZG.js +0 -2
  422. package/dist/cli/chunks/project-root-VVSTHIP4.js +0 -2
  423. package/dist/cli/chunks/protocol-executor-PXZCLZD3.js +0 -2
  424. package/dist/cli/chunks/qe-reasoning-bank-42FRS5V3.js +0 -2
  425. package/dist/cli/chunks/queen-coordinator-UI3B7DI6.js +0 -2
  426. package/dist/cli/chunks/router-HYRPWLAY.js +0 -2
  427. package/dist/cli/chunks/routing-feedback-BPZ5R6F3.js +0 -2
  428. package/dist/cli/chunks/rvf-dual-writer-DEKDQ6KO.js +0 -2
  429. package/dist/cli/chunks/rvf-migration-adapter-L53VBS7I.js +0 -2
  430. package/dist/cli/chunks/rvf-native-adapter-I6RUGD2D.js +0 -2
  431. package/dist/cli/chunks/safe-db-KS65XDCP.js +0 -2
  432. package/dist/cli/chunks/schedule-KD2VN6GB.js +0 -2
  433. package/dist/cli/chunks/scheduler-ZH3RMUHY.js +0 -2
  434. package/dist/cli/chunks/security-PWQTGDRU.js +0 -13
  435. package/dist/cli/chunks/sqlite-persistence-6DTVME5D.js +0 -2
  436. package/dist/cli/chunks/unified-memory-FCX7NLFZ.js +0 -2
  437. package/dist/cli/chunks/unified-memory-hnsw-VU5QJK37.js +0 -2
  438. package/dist/cli/chunks/unified-persistence-FM376LGE.js +0 -2
  439. package/dist/cli/chunks/visual-security-EU7Y3X46.js +0 -2
  440. package/dist/cli/chunks/witness-chain-CSEBT52D.js +0 -2
  441. package/dist/cli/chunks/workflow-orchestrator-ALNKOM3N.js +0 -2
@@ -2,24 +2,39 @@
2
2
  * Agentic QE v3 - Performance Baseline Worker
3
3
  * ADR-014: Background Workers for QE Monitoring
4
4
  *
5
- * Tracks performance trends including:
6
- * - Test execution time baselines
7
- * - Build performance tracking
8
- * - Resource utilization trends
9
- * - Performance anomaly detection
5
+ * Tracks test execution time against a baseline built from measured runs.
6
+ *
7
+ * #1043: every figure comes from a recorded test run — the run behind the
8
+ * latest usable testsPassing evidence (`test-run:<runId>` in `test-execution`),
9
+ * read the same way the regression monitor reads it (#1028). Build and
10
+ * resource figures have no measured source and are reported unmeasured.
11
+ * Nothing measured → nothing stored or compared. A baseline without the
12
+ * measured stamp (the invented one written by <= 3.15.6) is ignored and
13
+ * replaced by the next measured run.
10
14
  */
11
15
  import { BaseWorker } from '../base-worker';
12
16
  import { WorkerContext, WorkerResult } from '../interfaces';
13
17
  export declare class PerformanceBaselineWorker extends BaseWorker {
14
18
  constructor();
15
19
  protected doExecute(context: WorkerContext): Promise<WorkerResult>;
16
- private collectPerformanceMetrics;
17
- private getOrCalculateBaseline;
20
+ private baselineStatus;
21
+ /**
22
+ * #1043: the run behind the latest usable testsPassing evidence, with its
23
+ * recorded wall time and test count. `null` when there is no such evidence
24
+ * or the run's result was not recorded.
25
+ */
26
+ private collectMeasuredRun;
27
+ /**
28
+ * Compare a measured run with the measured baseline of the same test set.
29
+ * The recorded duration is the run's wall time; per-test time across
30
+ * different test sets would mostly measure runner overhead (#1028 N1).
31
+ */
18
32
  private detectAnomalies;
19
33
  private analyzeAnomalies;
20
34
  private formatMetricName;
21
- private updateBaseline;
22
- private storeMetricsHistory;
35
+ /** Blend a measured run into a comparable baseline, or start a new one from it. */
36
+ private nextBaseline;
37
+ private appendHistory;
23
38
  private calculateHealthScore;
24
39
  }
25
40
  //# sourceMappingURL=performance-baseline.d.ts.map
@@ -2,13 +2,18 @@
2
2
  * Agentic QE v3 - Performance Baseline Worker
3
3
  * ADR-014: Background Workers for QE Monitoring
4
4
  *
5
- * Tracks performance trends including:
6
- * - Test execution time baselines
7
- * - Build performance tracking
8
- * - Resource utilization trends
9
- * - Performance anomaly detection
5
+ * Tracks test execution time against a baseline built from measured runs.
6
+ *
7
+ * #1043: every figure comes from a recorded test run — the run behind the
8
+ * latest usable testsPassing evidence (`test-run:<runId>` in `test-execution`),
9
+ * read the same way the regression monitor reads it (#1028). Build and
10
+ * resource figures have no measured source and are reported unmeasured.
11
+ * Nothing measured → nothing stored or compared. A baseline without the
12
+ * measured stamp (the invented one written by <= 3.15.6) is ignored and
13
+ * replaced by the next measured run.
10
14
  */
11
15
  import { BaseWorker } from '../base-worker.js';
16
+ import { readQualityEvidenceRecord } from '../../domains/quality-assessment/quality-evidence.js';
12
17
  const CONFIG = {
13
18
  id: 'performance-baseline',
14
19
  name: 'Performance Baseline Tracker',
@@ -21,6 +26,57 @@ const CONFIG = {
21
26
  retryCount: 2,
22
27
  retryDelayMs: 30000,
23
28
  };
29
+ const BASELINE_KEY = 'performance:baseline';
30
+ const HISTORY_KEY = 'performance:history';
31
+ const SCHEMA_VERSION = 1;
32
+ /** Allowed slowdown before a measured run is an anomaly (30%). */
33
+ const DURATION_THRESHOLD = 1.3;
34
+ /** Weight of a new measured run in the baseline average. */
35
+ const EMA_ALPHA = 0.1;
36
+ /** Keep the last 168 measured runs. */
37
+ const MAX_HISTORY = 168;
38
+ const isNonNegative = (v) => typeof v === 'number' && Number.isFinite(v) && v >= 0;
39
+ const round = (v) => Math.round(v * 100) / 100;
40
+ /** A recorded test set `{ total, files }`, or `null`. */
41
+ function parseTestSet(raw) {
42
+ if (!raw || typeof raw !== 'object')
43
+ return null;
44
+ const { total, files } = raw;
45
+ if (typeof total !== 'number' || !Number.isInteger(total) || total <= 0)
46
+ return null;
47
+ if (!Array.isArray(files) || files.length === 0 || !files.every((f) => typeof f === 'string'))
48
+ return null;
49
+ return { total, files: [...new Set(files)].sort() };
50
+ }
51
+ const sameTestSet = (a, b) => a !== null && b !== null && a.total === b.total
52
+ && a.files.length === b.files.length && a.files.every((f, i) => f === b.files[i]);
53
+ /** The stored baseline when it carries the measured stamp and is well-formed, else `null`. */
54
+ function measuredBaseline(raw) {
55
+ if (!raw || typeof raw !== 'object')
56
+ return null;
57
+ const r = raw;
58
+ if (r.measured !== true || r.schemaVersion !== SCHEMA_VERSION)
59
+ return null;
60
+ const t = r.testExecution;
61
+ if (!t || typeof t !== 'object')
62
+ return null;
63
+ if (!isNonNegative(t.avgTestDurationMs) || !isNonNegative(t.totalDurationMs)
64
+ || typeof t.samples !== 'number' || !Number.isInteger(t.samples) || t.samples < 1
65
+ || typeof t.lastRunId !== 'string')
66
+ return null;
67
+ return {
68
+ measured: true,
69
+ schemaVersion: SCHEMA_VERSION,
70
+ updatedAt: typeof r.updatedAt === 'string' ? r.updatedAt : '',
71
+ testExecution: {
72
+ avgTestDurationMs: t.avgTestDurationMs,
73
+ totalDurationMs: t.totalDurationMs,
74
+ samples: t.samples,
75
+ lastRunId: t.lastRunId,
76
+ testSet: parseTestSet(t.testSet),
77
+ },
78
+ };
79
+ }
24
80
  export class PerformanceBaselineWorker extends BaseWorker {
25
81
  constructor() {
26
82
  super(CONFIG);
@@ -30,170 +86,133 @@ export class PerformanceBaselineWorker extends BaseWorker {
30
86
  context.logger.info('Starting performance baseline tracking');
31
87
  const findings = [];
32
88
  const recommendations = [];
33
- // Collect current metrics
34
- const currentMetrics = await this.collectPerformanceMetrics(context);
35
- // Get or calculate baseline
36
- const baseline = await this.getOrCalculateBaseline(context);
37
- // Detect anomalies
38
- const anomalies = this.detectAnomalies(currentMetrics, baseline);
39
- // Analyze anomalies
40
- this.analyzeAnomalies(anomalies, findings, recommendations);
41
- // Update baseline with new data point
42
- await this.updateBaseline(context, currentMetrics, baseline);
43
- // Store metrics history
44
- await this.storeMetricsHistory(context, currentMetrics);
89
+ const current = await this.collectMeasuredRun(context);
90
+ const stored = await context.memory.get(BASELINE_KEY);
91
+ const baseline = measuredBaseline(stored);
92
+ const baselineStatus = this.baselineStatus(stored, baseline);
93
+ if (baselineStatus === 'legacy-ignored') {
94
+ context.logger.info('Ignoring a performance:baseline without the measured stamp (written by <= 3.15.6)');
95
+ }
96
+ else if (baselineStatus === 'invalid-ignored') {
97
+ context.logger.warn('Ignoring a malformed measured performance:baseline');
98
+ }
99
+ let anomalies = [];
100
+ let compared = false;
101
+ if (!current) {
102
+ findings.push({
103
+ type: 'performance-unmeasured',
104
+ severity: 'info',
105
+ domain: 'test-execution',
106
+ title: 'Performance Baseline Unmeasured',
107
+ description: 'No recorded test run backs the current testsPassing evidence, so no timing was stored or ' +
108
+ 'compared. Run the test suite (test_execute_parallel, or `aqe test execute`) to start tracking. ' +
109
+ 'Build and resource figures are not measured by AQE.',
110
+ });
111
+ }
112
+ else if (baseline?.testExecution.lastRunId === current.runId) {
113
+ // The same run was already blended in on an earlier tick.
114
+ context.logger.debug('Latest measured run already in the performance baseline', { runId: current.runId });
115
+ }
116
+ else {
117
+ if (baseline && sameTestSet(baseline.testExecution.testSet, current.testSet)) {
118
+ compared = true;
119
+ anomalies = this.detectAnomalies(current, baseline);
120
+ this.analyzeAnomalies(anomalies, findings, recommendations);
121
+ }
122
+ await context.memory.set(BASELINE_KEY, this.nextBaseline(current, compared ? baseline : null));
123
+ await this.appendHistory(context, current);
124
+ }
45
125
  const healthScore = this.calculateHealthScore(anomalies);
46
126
  context.logger.info('Performance baseline tracking complete', {
47
127
  healthScore,
128
+ measured: current !== null,
129
+ baselineStatus,
48
130
  anomaliesDetected: anomalies.length,
49
131
  });
50
132
  return this.createResult(Date.now() - startTime, {
51
- itemsAnalyzed: 10, // Number of metrics tracked
133
+ itemsAnalyzed: compared ? 2 : 0,
52
134
  issuesFound: anomalies.length,
53
135
  healthScore,
54
- trend: anomalies.length > 2 ? 'degrading' : 'stable',
136
+ trend: anomalies.length > 0 ? 'degrading' : 'stable',
55
137
  domainMetrics: {
56
- avgTestDuration: `${currentMetrics.testExecution.avgTestDurationMs}ms`,
57
- p95TestDuration: `${currentMetrics.testExecution.p95DurationMs}ms`,
58
- compileDuration: `${currentMetrics.build.compileDurationMs}ms`,
59
- bundleSize: `${currentMetrics.build.bundleSizeKb}KB`,
60
- peakMemory: `${currentMetrics.resources.peakMemoryMb}MB`,
138
+ baselineStatus,
139
+ avgTestDuration: current ? `${round(current.avgTestDurationMs)}ms` : 'unmeasured',
140
+ totalTestDuration: current ? `${round(current.totalDurationMs)}ms` : 'unmeasured',
141
+ compileDuration: 'unmeasured',
142
+ bundleSize: 'unmeasured',
143
+ peakMemory: 'unmeasured',
61
144
  anomalies: anomalies.length,
62
145
  },
63
146
  }, findings, recommendations);
64
147
  }
65
- async collectPerformanceMetrics(_context) {
66
- // In a real implementation, this would collect actual metrics
67
- return {
68
- timestamp: new Date(),
69
- testExecution: {
70
- totalDurationMs: 45000,
71
- avgTestDurationMs: 245,
72
- slowestTestMs: 3500,
73
- slowestTestName: 'workflow-orchestrator.test.ts::complex scenario',
74
- p50DurationMs: 120,
75
- p95DurationMs: 800,
76
- p99DurationMs: 2500,
77
- },
78
- build: {
79
- compileDurationMs: 12000,
80
- bundleSizeKb: 2500,
81
- dependencyCount: 45,
82
- },
83
- resources: {
84
- peakMemoryMb: 512,
85
- avgCpuPercent: 65,
86
- diskReadMb: 150,
87
- diskWriteMb: 50,
88
- },
89
- };
148
+ baselineStatus(stored, baseline) {
149
+ if (baseline)
150
+ return 'measured';
151
+ if (stored === undefined || stored === null)
152
+ return 'none';
153
+ const stamped = typeof stored === 'object' && stored.measured === true;
154
+ return stamped ? 'invalid-ignored' : 'legacy-ignored';
90
155
  }
91
- async getOrCalculateBaseline(context) {
92
- const existing = await context.memory.get('performance:baseline');
93
- if (existing) {
94
- return existing;
95
- }
96
- // Default baseline if none exists
156
+ /**
157
+ * #1043: the run behind the latest usable testsPassing evidence, with its
158
+ * recorded wall time and test count. `null` when there is no such evidence
159
+ * or the run's result was not recorded.
160
+ */
161
+ async collectMeasuredRun(context) {
162
+ const evidence = await readQualityEvidenceRecord(context.memory, 'testsPassing');
163
+ if (!evidence?.runId)
164
+ return null;
165
+ const run = await context.memory.get(`test-run:${evidence.runId}`, {
166
+ namespace: 'test-execution',
167
+ });
168
+ if (!run || typeof run !== 'object')
169
+ return null;
170
+ const { total, duration } = run;
171
+ if (typeof total !== 'number' || !Number.isInteger(total) || total <= 0 || !isNonNegative(duration))
172
+ return null;
97
173
  return {
98
- testExecution: {
99
- avgDurationMs: 200,
100
- p95DurationMs: 700,
101
- threshold: 1.3, // 30% deviation allowed
102
- },
103
- build: {
104
- avgCompileMs: 10000,
105
- avgBundleSizeKb: 2400,
106
- threshold: 1.2, // 20% deviation allowed
107
- },
108
- resources: {
109
- avgMemoryMb: 450,
110
- avgCpuPercent: 60,
111
- threshold: 1.25, // 25% deviation allowed
112
- },
174
+ measured: true,
175
+ runId: evidence.runId,
176
+ measuredAt: evidence.measuredAt,
177
+ totalDurationMs: duration,
178
+ testCount: total,
179
+ avgTestDurationMs: duration / total,
180
+ testSet: parseTestSet({ total, files: run.testFiles }),
113
181
  };
114
182
  }
115
- detectAnomalies(metrics, baseline) {
183
+ /**
184
+ * Compare a measured run with the measured baseline of the same test set.
185
+ * The recorded duration is the run's wall time; per-test time across
186
+ * different test sets would mostly measure runner overhead (#1028 N1).
187
+ */
188
+ detectAnomalies(current, baseline) {
116
189
  const anomalies = [];
117
- // Test execution anomalies
118
- const avgTestDeviation = metrics.testExecution.avgTestDurationMs / baseline.testExecution.avgDurationMs;
119
- if (avgTestDeviation > baseline.testExecution.threshold) {
120
- anomalies.push({
121
- metric: 'avgTestDuration',
122
- category: 'test',
123
- currentValue: metrics.testExecution.avgTestDurationMs,
124
- baselineValue: baseline.testExecution.avgDurationMs,
125
- deviationPercent: (avgTestDeviation - 1) * 100,
126
- severity: avgTestDeviation > 1.5 ? 'high' : 'medium',
127
- });
128
- }
129
- const p95Deviation = metrics.testExecution.p95DurationMs / baseline.testExecution.p95DurationMs;
130
- if (p95Deviation > baseline.testExecution.threshold) {
131
- anomalies.push({
132
- metric: 'p95TestDuration',
133
- category: 'test',
134
- currentValue: metrics.testExecution.p95DurationMs,
135
- baselineValue: baseline.testExecution.p95DurationMs,
136
- deviationPercent: (p95Deviation - 1) * 100,
137
- severity: p95Deviation > 1.5 ? 'high' : 'medium',
138
- });
139
- }
140
- // Build anomalies
141
- const compileDeviation = metrics.build.compileDurationMs / baseline.build.avgCompileMs;
142
- if (compileDeviation > baseline.build.threshold) {
143
- anomalies.push({
144
- metric: 'compileDuration',
145
- category: 'build',
146
- currentValue: metrics.build.compileDurationMs,
147
- baselineValue: baseline.build.avgCompileMs,
148
- deviationPercent: (compileDeviation - 1) * 100,
149
- severity: compileDeviation > 1.5 ? 'high' : 'medium',
150
- });
151
- }
152
- const bundleDeviation = metrics.build.bundleSizeKb / baseline.build.avgBundleSizeKb;
153
- if (bundleDeviation > baseline.build.threshold) {
154
- anomalies.push({
155
- metric: 'bundleSize',
156
- category: 'build',
157
- currentValue: metrics.build.bundleSizeKb,
158
- baselineValue: baseline.build.avgBundleSizeKb,
159
- deviationPercent: (bundleDeviation - 1) * 100,
160
- severity: bundleDeviation > 1.3 ? 'high' : 'medium',
161
- });
162
- }
163
- // Resource anomalies
164
- const memoryDeviation = metrics.resources.peakMemoryMb / baseline.resources.avgMemoryMb;
165
- if (memoryDeviation > baseline.resources.threshold) {
166
- anomalies.push({
167
- metric: 'peakMemory',
168
- category: 'resource',
169
- currentValue: metrics.resources.peakMemoryMb,
170
- baselineValue: baseline.resources.avgMemoryMb,
171
- deviationPercent: (memoryDeviation - 1) * 100,
172
- severity: memoryDeviation > 1.5 ? 'critical' : memoryDeviation > 1.3 ? 'high' : 'medium',
173
- });
174
- }
175
- const cpuDeviation = metrics.resources.avgCpuPercent / baseline.resources.avgCpuPercent;
176
- if (cpuDeviation > baseline.resources.threshold) {
177
- anomalies.push({
178
- metric: 'avgCpu',
179
- category: 'resource',
180
- currentValue: metrics.resources.avgCpuPercent,
181
- baselineValue: baseline.resources.avgCpuPercent,
182
- deviationPercent: (cpuDeviation - 1) * 100,
183
- severity: cpuDeviation > 1.4 ? 'high' : 'medium',
184
- });
185
- }
190
+ const check = (metric, value, base) => {
191
+ if (base <= 0)
192
+ return;
193
+ const ratio = value / base;
194
+ if (ratio > DURATION_THRESHOLD) {
195
+ anomalies.push({
196
+ metric,
197
+ currentValue: round(value),
198
+ baselineValue: round(base),
199
+ deviationPercent: (ratio - 1) * 100,
200
+ severity: ratio > 1.5 ? 'high' : 'medium',
201
+ });
202
+ }
203
+ };
204
+ check('avgTestDuration', current.avgTestDurationMs, baseline.testExecution.avgTestDurationMs);
205
+ check('totalTestDuration', current.totalDurationMs, baseline.testExecution.totalDurationMs);
186
206
  return anomalies;
187
207
  }
188
208
  analyzeAnomalies(anomalies, findings, recommendations) {
189
209
  for (const anomaly of anomalies) {
190
- const domain = anomaly.category === 'test' ? 'test-execution' : 'chaos-resilience';
191
210
  findings.push({
192
- type: `performance-anomaly-${anomaly.category}`,
211
+ type: 'performance-anomaly-test',
193
212
  severity: anomaly.severity,
194
- domain,
213
+ domain: 'test-execution',
195
214
  title: `Performance Anomaly: ${this.formatMetricName(anomaly.metric)}`,
196
- description: `${this.formatMetricName(anomaly.metric)} is ${anomaly.deviationPercent.toFixed(1)}% above baseline`,
215
+ description: `${this.formatMetricName(anomaly.metric)} is ${anomaly.deviationPercent.toFixed(1)}% above the measured baseline`,
197
216
  context: {
198
217
  currentValue: anomaly.currentValue,
199
218
  baselineValue: anomaly.baselineValue,
@@ -201,11 +220,9 @@ export class PerformanceBaselineWorker extends BaseWorker {
201
220
  },
202
221
  });
203
222
  }
204
- // Category-specific recommendations
205
- const testAnomalies = anomalies.filter(a => a.category === 'test');
206
- if (testAnomalies.length > 0) {
223
+ if (anomalies.length > 0) {
207
224
  recommendations.push({
208
- priority: testAnomalies.some(a => a.severity === 'high') ? 'p1' : 'p2',
225
+ priority: anomalies.some(a => a.severity === 'high') ? 'p1' : 'p2',
209
226
  domain: 'test-execution',
210
227
  action: 'Investigate Test Performance Degradation',
211
228
  description: 'Test execution times have increased. Review for slow tests or infrastructure issues.',
@@ -214,100 +231,40 @@ export class PerformanceBaselineWorker extends BaseWorker {
214
231
  autoFixable: false,
215
232
  });
216
233
  }
217
- const buildAnomalies = anomalies.filter(a => a.category === 'build');
218
- if (buildAnomalies.length > 0) {
219
- const bundleAnomaly = buildAnomalies.find(a => a.metric === 'bundleSize');
220
- if (bundleAnomaly) {
221
- recommendations.push({
222
- priority: 'p2',
223
- domain: 'chaos-resilience',
224
- action: 'Analyze Bundle Size Increase',
225
- description: 'Bundle size has grown. Review for unnecessary dependencies or unoptimized imports.',
226
- estimatedImpact: 'medium',
227
- effort: 'low',
228
- autoFixable: true,
229
- });
230
- }
231
- }
232
- const resourceAnomalies = anomalies.filter(a => a.category === 'resource');
233
- if (resourceAnomalies.length > 0) {
234
- const memoryAnomaly = resourceAnomalies.find(a => a.metric === 'peakMemory');
235
- if (memoryAnomaly && memoryAnomaly.severity === 'critical') {
236
- recommendations.push({
237
- priority: 'p0',
238
- domain: 'chaos-resilience',
239
- action: 'Investigate Memory Usage Spike',
240
- description: 'Memory usage is significantly above baseline. Check for memory leaks.',
241
- estimatedImpact: 'high',
242
- effort: 'high',
243
- autoFixable: false,
244
- });
245
- }
246
- }
247
234
  }
248
235
  formatMetricName(metric) {
249
- const names = {
250
- avgTestDuration: 'Average Test Duration',
251
- p95TestDuration: 'P95 Test Duration',
252
- compileDuration: 'Compile Duration',
253
- bundleSize: 'Bundle Size',
254
- peakMemory: 'Peak Memory Usage',
255
- avgCpu: 'Average CPU Usage',
256
- };
257
- return names[metric] || metric;
236
+ return metric === 'avgTestDuration' ? 'Average Test Duration' : 'Total Test Duration';
258
237
  }
259
- async updateBaseline(context, metrics, baseline) {
260
- // Use exponential moving average to update baseline
261
- const alpha = 0.1; // Weight for new values
262
- const updatedBaseline = {
238
+ /** Blend a measured run into a comparable baseline, or start a new one from it. */
239
+ nextBaseline(current, comparable) {
240
+ const prev = comparable?.testExecution;
241
+ const blend = (base, value) => base * (1 - EMA_ALPHA) + value * EMA_ALPHA;
242
+ return {
243
+ measured: true,
244
+ schemaVersion: SCHEMA_VERSION,
245
+ updatedAt: new Date().toISOString(),
263
246
  testExecution: {
264
- avgDurationMs: baseline.testExecution.avgDurationMs * (1 - alpha) +
265
- metrics.testExecution.avgTestDurationMs * alpha,
266
- p95DurationMs: baseline.testExecution.p95DurationMs * (1 - alpha) +
267
- metrics.testExecution.p95DurationMs * alpha,
268
- threshold: baseline.testExecution.threshold,
269
- },
270
- build: {
271
- avgCompileMs: baseline.build.avgCompileMs * (1 - alpha) +
272
- metrics.build.compileDurationMs * alpha,
273
- avgBundleSizeKb: baseline.build.avgBundleSizeKb * (1 - alpha) +
274
- metrics.build.bundleSizeKb * alpha,
275
- threshold: baseline.build.threshold,
276
- },
277
- resources: {
278
- avgMemoryMb: baseline.resources.avgMemoryMb * (1 - alpha) +
279
- metrics.resources.peakMemoryMb * alpha,
280
- avgCpuPercent: baseline.resources.avgCpuPercent * (1 - alpha) +
281
- metrics.resources.avgCpuPercent * alpha,
282
- threshold: baseline.resources.threshold,
247
+ avgTestDurationMs: prev ? round(blend(prev.avgTestDurationMs, current.avgTestDurationMs)) : current.avgTestDurationMs,
248
+ totalDurationMs: prev ? round(blend(prev.totalDurationMs, current.totalDurationMs)) : current.totalDurationMs,
249
+ samples: prev ? prev.samples + 1 : 1,
250
+ lastRunId: current.runId,
251
+ testSet: current.testSet,
283
252
  },
284
253
  };
285
- await context.memory.set('performance:baseline', updatedBaseline);
286
254
  }
287
- async storeMetricsHistory(context, metrics) {
288
- const history = await context.memory.get('performance:history') || [];
289
- history.push(metrics);
290
- // Keep last 168 data points (1 week of hourly data)
291
- while (history.length > 168) {
255
+ async appendHistory(context, run) {
256
+ const stored = await context.memory.get(HISTORY_KEY);
257
+ const history = Array.isArray(stored) ? stored : [];
258
+ history.push(run);
259
+ while (history.length > MAX_HISTORY)
292
260
  history.shift();
293
- }
294
- await context.memory.set('performance:history', history);
261
+ await context.memory.set(HISTORY_KEY, history);
295
262
  }
296
263
  calculateHealthScore(anomalies) {
297
- if (anomalies.length === 0)
298
- return 100;
299
264
  let score = 100;
300
265
  for (const anomaly of anomalies) {
301
- // Penalty based on severity and deviation
302
- const basePenalty = {
303
- critical: 25,
304
- high: 15,
305
- medium: 8,
306
- low: 3,
307
- }[anomaly.severity];
308
- // Additional penalty for large deviations
309
- const deviationPenalty = Math.min(10, anomaly.deviationPercent / 10);
310
- score -= basePenalty + deviationPenalty;
266
+ const basePenalty = anomaly.severity === 'high' ? 15 : 8;
267
+ score -= basePenalty + Math.min(10, anomaly.deviationPercent / 10);
311
268
  }
312
269
  return Math.max(0, Math.round(score));
313
270
  }
@@ -2,22 +2,24 @@
2
2
  * Agentic QE v3 - Quality Gate Worker
3
3
  * ADR-014: Background Workers for QE Monitoring
4
4
  *
5
- * Continuous quality gate evaluation including:
6
- * - Multi-criteria quality assessment
7
- * - Release readiness scoring
8
- * - Blocking issue detection
9
- * - Quality trend tracking
5
+ * Continuously evaluates the measured quality gate and tracks its verdict.
6
+ *
7
+ * #1043: the gate is the canonical measured gate — the same evidence
8
+ * validation (`inspectQualityEvidence`) and thresholds
9
+ * (`evaluateQualityEvidence` / `resolveQualityThresholds`) the quality_assess
10
+ * tool uses. When any metric lacks usable evidence (absent, stale, malformed)
11
+ * the gate is not evaluated: nothing is stored and an info finding names the
12
+ * unmeasured metrics. A status without the measured stamp (the invented one
13
+ * written by <= 3.15.6) is ignored and replaced by the next measured verdict.
10
14
  */
11
15
  import { BaseWorker } from '../base-worker';
12
16
  import { WorkerContext, WorkerResult } from '../interfaces';
13
17
  export declare class QualityGateWorker extends BaseWorker {
14
18
  constructor();
15
19
  protected doExecute(context: WorkerContext): Promise<WorkerResult>;
16
- private evaluateQualityGates;
17
- private evaluateRule;
18
20
  private analyzeGateResults;
19
- private checkBlockers;
20
- private compareToHistory;
21
+ /** Compare with the previous verdict — only a measured one (#1043). */
22
+ private compareToPrevious;
21
23
  private calculateHealthScore;
22
24
  }
23
25
  //# sourceMappingURL=quality-gate.d.ts.map