agentic-qe 3.13.0 → 3.13.2

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 (386) hide show
  1. package/.agents/skills/aqe-plan-quality/SKILL.md +25 -0
  2. package/.agents/skills/aqe-plan-quality/agents/openai.yaml +4 -0
  3. package/.agents/skills/aqe-plan-quality/references/qe-routing.md +22 -0
  4. package/.agents/skills/aqe-review-quality/SKILL.md +24 -0
  5. package/.agents/skills/aqe-review-quality/agents/openai.yaml +4 -0
  6. package/.agents/skills/aqe-review-quality/references/quality-gates.md +20 -0
  7. package/.agents/skills/aqe-test-change/SKILL.md +26 -0
  8. package/.agents/skills/aqe-test-change/agents/openai.yaml +4 -0
  9. package/.agents/skills/aqe-test-change/references/test-specialties.md +23 -0
  10. package/.claude/helpers/ruflo-hook.cjs +5 -1
  11. package/.claude/skills/skills-manifest.json +1 -1
  12. package/.codex/hooks/aqe-codex-hook.cjs +69 -0
  13. package/.codex/hooks/ruflo-codex-hook.cjs +94 -0
  14. package/.codex/hooks.json +169 -0
  15. package/CHANGELOG.md +123 -0
  16. package/assets/skills/skills-manifest.json +1 -1
  17. package/dist/cli/bundle.js +5 -5
  18. package/dist/cli/chunks/adapter-I4SNWMCM.js +2 -0
  19. package/dist/cli/chunks/{agent-booster-wasm-ACX2DK7Y.js → agent-booster-wasm-PZYYTKSS.js} +2 -2
  20. package/dist/cli/chunks/{agent-handler-B45WP4ZJ.js → agent-handler-DNN7GXUN.js} +2 -2
  21. package/dist/cli/chunks/{agent-memory-branch-QQLZDE56.js → agent-memory-branch-LVCBBCQY.js} +2 -2
  22. package/dist/cli/chunks/aqe-learning-engine-WI47XKXI.js +2 -0
  23. package/dist/cli/chunks/{arena-SDB7723R.js → arena-422HSTPE.js} +2 -2
  24. package/dist/cli/chunks/{arena-G3IKZAG5.js → arena-OCEOLMCH.js} +4 -4
  25. package/dist/cli/chunks/{audit-GY46XUZA.js → audit-5O45K34M.js} +3 -3
  26. package/dist/cli/chunks/base-VJ6VDLD7.js +2 -0
  27. package/dist/cli/chunks/{hnswlib-node-RJPBJU2Q.js → better-sqlite3-Y36THYK2.js} +2 -2
  28. package/dist/cli/chunks/{brain-handler-347CYMPN.js → brain-handler-7VHXYN3P.js} +3 -3
  29. package/dist/cli/chunks/{branch-enumerator-Z3ULBFSM.js → branch-enumerator-PZKOD6S6.js} +2 -2
  30. package/dist/cli/chunks/{browser-OYEIHD7F.js → browser-M74UO4WJ.js} +2 -2
  31. package/dist/cli/chunks/browser-workflow-WRYHQQDU.js +2 -0
  32. package/dist/cli/chunks/{chunk-RVJPWRV6.js → chunk-24S5IUSI.js} +2 -2
  33. package/dist/cli/chunks/{chunk-3NOCK6ED.js → chunk-2DG44UZ5.js} +2 -2
  34. package/dist/cli/chunks/{chunk-34PEINFS.js → chunk-2QJPAQE5.js} +2 -2
  35. package/dist/cli/chunks/{chunk-SHCTEXNH.js → chunk-4DKL4H5L.js} +2 -2
  36. package/dist/cli/chunks/{chunk-A4QLGPYO.js → chunk-4FYTWD4Q.js} +2 -2
  37. package/dist/cli/chunks/{chunk-YFGAHNCG.js → chunk-4HFNY3Z2.js} +3 -3
  38. package/dist/cli/chunks/{chunk-RVRBTOWX.js → chunk-4PM5VORA.js} +2 -2
  39. package/dist/cli/chunks/{chunk-QWYISZTN.js → chunk-4SFOQSXU.js} +2 -2
  40. package/dist/cli/chunks/{chunk-RSFIOR2I.js → chunk-4STE6VLR.js} +87 -87
  41. package/dist/cli/chunks/{chunk-54MFKCLT.js → chunk-54BCLRRJ.js} +2 -2
  42. package/dist/cli/chunks/{chunk-IYDYJ33J.js → chunk-5AAG7JTB.js} +2 -2
  43. package/dist/cli/chunks/{chunk-TVMFH5N2.js → chunk-5EFNZEOB.js} +2 -2
  44. package/dist/cli/chunks/{chunk-GUEZQOHL.js → chunk-5GGGZYFA.js} +1 -1
  45. package/dist/cli/chunks/{chunk-5KAT6WBQ.js → chunk-5KMBZTDI.js} +2 -2
  46. package/dist/cli/chunks/{chunk-ANYYTWOQ.js → chunk-5XYVRTI6.js} +2 -2
  47. package/dist/cli/chunks/{chunk-ANIDFJCT.js → chunk-62D27BDO.js} +3 -3
  48. package/dist/cli/chunks/{chunk-SNTUKW4Q.js → chunk-6DMB6WK5.js} +2 -2
  49. package/dist/cli/chunks/{chunk-ZCFZ4USU.js → chunk-6R7TX5L4.js} +1 -1
  50. package/dist/cli/chunks/chunk-6UGYFYS4.js +2 -0
  51. package/dist/cli/chunks/chunk-6XHDH3IJ.js +3 -0
  52. package/dist/cli/chunks/{chunk-IHQTXJAQ.js → chunk-73HALJY5.js} +1 -1
  53. package/dist/cli/chunks/{chunk-7YXT6BXN.js → chunk-7TCVVVFA.js} +3 -3
  54. package/dist/cli/chunks/{chunk-RJZRWVL4.js → chunk-A2OD5Z4B.js} +1 -1
  55. package/dist/cli/chunks/{chunk-ES7WCYOU.js → chunk-AJ7A52GF.js} +1 -1
  56. package/dist/cli/chunks/{chunk-QCEW4ZDW.js → chunk-AP2BBV2D.js} +2 -2
  57. package/dist/cli/chunks/{chunk-FQLWQWRU.js → chunk-AS2HVJ42.js} +3 -3
  58. package/dist/cli/chunks/{chunk-7UNY32PU.js → chunk-ASIGTVFQ.js} +1 -1
  59. package/dist/cli/chunks/{chunk-EECM5XKY.js → chunk-B7KZMPF2.js} +1 -1
  60. package/dist/cli/chunks/{chunk-Z6QCOZ2H.js → chunk-BFKXHXWW.js} +2 -2
  61. package/dist/cli/chunks/{chunk-VC6EXDGY.js → chunk-BO2RBAPF.js} +2 -2
  62. package/dist/cli/chunks/{chunk-OXXMVQDF.js → chunk-BSQ32ZS5.js} +2 -2
  63. package/dist/cli/chunks/{chunk-WRYT4HTZ.js → chunk-CKTFKA7Q.js} +2 -2
  64. package/dist/cli/chunks/{chunk-QQB55ZJJ.js → chunk-CLBBFKXV.js} +2 -2
  65. package/dist/cli/chunks/{chunk-5FLTZ3KT.js → chunk-COOMXCCP.js} +2 -2
  66. package/dist/cli/chunks/{chunk-DYUC7WFA.js → chunk-DAHNHVND.js} +1 -1
  67. package/dist/cli/chunks/{chunk-6AOBLBR4.js → chunk-DCQQJLUY.js} +2 -2
  68. package/dist/cli/chunks/{chunk-LBE2P6UC.js → chunk-DIPOFCBX.js} +2 -2
  69. package/dist/cli/chunks/{chunk-EFRESRLB.js → chunk-DL2HDULJ.js} +5 -5
  70. package/dist/cli/chunks/{chunk-YRQLVGCI.js → chunk-DQXSDWRP.js} +2 -2
  71. package/dist/cli/chunks/{chunk-QI4CGJNK.js → chunk-E6JJ4ZRQ.js} +1 -1
  72. package/dist/cli/chunks/{chunk-KUA4HHU6.js → chunk-E6PYV3DB.js} +2 -2
  73. package/dist/cli/chunks/{chunk-ZJG6N2OK.js → chunk-EABGQVTV.js} +1 -1
  74. package/dist/cli/chunks/{chunk-U2SW6KK5.js → chunk-EFHMS7TJ.js} +2 -2
  75. package/dist/cli/chunks/{chunk-CWUBOLKY.js → chunk-ELVUERQW.js} +2 -2
  76. package/dist/cli/chunks/{chunk-A7GLWWSE.js → chunk-EU7NUUL6.js} +1 -1
  77. package/dist/cli/chunks/{chunk-3UHEZ5HZ.js → chunk-F6UMLI5Y.js} +2 -2
  78. package/dist/cli/chunks/{chunk-TZPKTRJB.js → chunk-FECBWGCA.js} +2 -2
  79. package/dist/cli/chunks/{chunk-OETDMOOE.js → chunk-FFMUTX26.js} +1 -1
  80. package/dist/cli/chunks/{chunk-VLNPJAVH.js → chunk-FJ2L6P7O.js} +1 -1
  81. package/dist/cli/chunks/{chunk-2DIT5AUU.js → chunk-FMYNKZ2S.js} +2 -2
  82. package/dist/cli/chunks/{chunk-L4LLA5U7.js → chunk-FXXXLDB3.js} +1 -1
  83. package/dist/cli/chunks/{chunk-D3MPV5G7.js → chunk-FZEWEG6Q.js} +2 -2
  84. package/dist/cli/chunks/{chunk-BGYLNCL6.js → chunk-G4LZ5SBC.js} +2 -2
  85. package/dist/cli/chunks/{chunk-J3L52EA4.js → chunk-GHJRLC3C.js} +5 -5
  86. package/dist/cli/chunks/{chunk-3JVUWKCO.js → chunk-GKKD22CC.js} +2 -2
  87. package/dist/cli/chunks/{chunk-32ZGV4Q4.js → chunk-GMKJWOXZ.js} +1 -1
  88. package/dist/cli/chunks/chunk-GMKQJEKX.js +2 -0
  89. package/dist/cli/chunks/{chunk-3GSYD5SL.js → chunk-GZ775E5O.js} +2 -2
  90. package/dist/cli/chunks/{chunk-GTUFX7AR.js → chunk-H6C2YTPX.js} +2 -2
  91. package/dist/cli/chunks/{chunk-UIPPJKON.js → chunk-HANBJ37Z.js} +2 -2
  92. package/dist/cli/chunks/{chunk-ZOXWASCC.js → chunk-HANJESCY.js} +2 -2
  93. package/dist/cli/chunks/{chunk-JPIBPKBP.js → chunk-HD6PZHLC.js} +3 -3
  94. package/dist/cli/chunks/{chunk-FQY3UTGA.js → chunk-HHUKHEW5.js} +2 -2
  95. package/dist/cli/chunks/{chunk-W5YEIHIO.js → chunk-HQCJYUKC.js} +2 -2
  96. package/dist/cli/chunks/{chunk-CYL2FV23.js → chunk-IIZ3HBPV.js} +2 -2
  97. package/dist/cli/chunks/{chunk-HTPM3URI.js → chunk-IV77BQ2R.js} +2 -2
  98. package/dist/cli/chunks/{chunk-THBTN7XB.js → chunk-J722Z7VO.js} +2 -2
  99. package/dist/cli/chunks/{chunk-5EIOQCGN.js → chunk-JDRYENTD.js} +2 -2
  100. package/dist/cli/chunks/{chunk-NQNKKVNO.js → chunk-JKVUSXT4.js} +3 -3
  101. package/dist/cli/chunks/{chunk-CQFT7H3F.js → chunk-JMRUHQEL.js} +2 -2
  102. package/dist/cli/chunks/{chunk-PERJO2DY.js → chunk-JPO4AC5Q.js} +1 -1
  103. package/dist/cli/chunks/{chunk-KSYLRM4Q.js → chunk-JPPHM3I6.js} +2 -2
  104. package/dist/cli/chunks/{chunk-56WZFXTQ.js → chunk-K3MNTU4O.js} +2 -2
  105. package/dist/cli/chunks/{chunk-CPH5JP4L.js → chunk-K47EWX3M.js} +1 -1
  106. package/dist/cli/chunks/{chunk-7DMXCCSD.js → chunk-KAHMXURL.js} +1 -1
  107. package/dist/cli/chunks/{chunk-UNIBND6A.js → chunk-KHVW6DQS.js} +1 -1
  108. package/dist/cli/chunks/{chunk-RLCWR7TS.js → chunk-KKPWS3XJ.js} +98 -88
  109. package/dist/cli/chunks/chunk-KRRGOJ6K.js +2 -0
  110. package/dist/cli/chunks/chunk-LEOSNZR2.js +2 -0
  111. package/dist/cli/chunks/{chunk-TNRIGQ6U.js → chunk-LG6UUM55.js} +2 -2
  112. package/dist/cli/chunks/{chunk-HOKON5EL.js → chunk-LJWIBYTR.js} +2 -2
  113. package/dist/cli/chunks/{chunk-N7VOOI3U.js → chunk-LQDQTLWV.js} +2 -2
  114. package/dist/cli/chunks/{chunk-2NRZYQSF.js → chunk-LXYVWAFN.js} +2 -2
  115. package/dist/cli/chunks/{chunk-YPTGE5NJ.js → chunk-LZNJ7HXB.js} +2 -2
  116. package/dist/cli/chunks/{chunk-6SXKCIN5.js → chunk-M4JZOCV3.js} +1 -1
  117. package/dist/cli/chunks/{chunk-UMG5URNV.js → chunk-MBTVAIFF.js} +1 -1
  118. package/dist/cli/chunks/{chunk-N5MMBA35.js → chunk-MNDPSIEI.js} +1 -1
  119. package/dist/cli/chunks/{chunk-L4S722JD.js → chunk-MUSLUG6Y.js} +1 -1
  120. package/dist/cli/chunks/{chunk-VLBV2VL3.js → chunk-MVJ5UQI3.js} +1 -1
  121. package/dist/cli/chunks/{chunk-XFCWYQHW.js → chunk-N2AGOQCL.js} +2 -2
  122. package/dist/cli/chunks/{chunk-KVL63BSU.js → chunk-N4O2RWSL.js} +1 -1
  123. package/dist/cli/chunks/{chunk-L2SFGFE6.js → chunk-NBRKZOPM.js} +1 -1
  124. package/dist/cli/chunks/{chunk-NETN3OUG.js → chunk-NIE3SGZM.js} +1 -1
  125. package/dist/cli/chunks/{chunk-LOXVVMS4.js → chunk-NNIKJZA4.js} +3 -3
  126. package/dist/cli/chunks/{chunk-5ICQL42E.js → chunk-NTKIDOIW.js} +2 -2
  127. package/dist/cli/chunks/{chunk-Q7PBGNUD.js → chunk-ODE7Z667.js} +1 -1
  128. package/dist/cli/chunks/{chunk-K5N6SLHO.js → chunk-OYWZYG6Q.js} +1 -1
  129. package/dist/cli/chunks/{chunk-CFVEDUTW.js → chunk-P33EORZZ.js} +2 -2
  130. package/dist/cli/chunks/{chunk-R3GEXYO4.js → chunk-PILZKQX7.js} +2 -2
  131. package/dist/cli/chunks/{chunk-ZJIX5FGQ.js → chunk-PJOH5Z5I.js} +2 -2
  132. package/dist/cli/chunks/{chunk-JGM6XCCP.js → chunk-PNQWEOE2.js} +1 -1
  133. package/dist/cli/chunks/{chunk-XKFE3FLI.js → chunk-PRQPUOSH.js} +2 -2
  134. package/dist/cli/chunks/{chunk-LWYLW7RX.js → chunk-PT6NTWGT.js} +2 -2
  135. package/dist/cli/chunks/{chunk-FBBZHATF.js → chunk-Q45FBGVV.js} +1 -1
  136. package/dist/cli/chunks/{chunk-SRQ3CPJE.js → chunk-Q625ISQI.js} +4 -4
  137. package/dist/cli/chunks/{chunk-BOVH6WSM.js → chunk-QS6TI7NR.js} +2 -2
  138. package/dist/cli/chunks/{chunk-4BDLD7V2.js → chunk-QVD3LU27.js} +1 -1
  139. package/dist/cli/chunks/{chunk-ZLXBNNNT.js → chunk-QZACODX6.js} +2 -2
  140. package/dist/cli/chunks/{chunk-NUQBJGGF.js → chunk-REBNPQI7.js} +2 -2
  141. package/dist/cli/chunks/{chunk-FAQLI3P5.js → chunk-RF2DMPX2.js} +2 -2
  142. package/dist/cli/chunks/{chunk-2VQVEQS4.js → chunk-RI2V2U2N.js} +2 -2
  143. package/dist/cli/chunks/{chunk-GJMZR7WU.js → chunk-RJYAUJDC.js} +3 -3
  144. package/dist/cli/chunks/{chunk-KZTBNDNE.js → chunk-RWHHOQIC.js} +1 -1
  145. package/dist/cli/chunks/{chunk-ZEIG5IQ4.js → chunk-RWUK5VMZ.js} +2 -2
  146. package/dist/cli/chunks/{chunk-E3B5XTXJ.js → chunk-SOOI2HJB.js} +1 -1
  147. package/dist/cli/chunks/{chunk-IPHLXAMX.js → chunk-T2XXTEZV.js} +2 -2
  148. package/dist/cli/chunks/{chunk-USMDIIHY.js → chunk-T55XIENI.js} +2 -2
  149. package/dist/cli/chunks/{chunk-VSNRPMAZ.js → chunk-T726SRYP.js} +2 -2
  150. package/dist/cli/chunks/{chunk-RDU4WTV2.js → chunk-TLG56A27.js} +2 -2
  151. package/dist/cli/chunks/{chunk-FUU32QY5.js → chunk-TTWWCWAR.js} +2 -2
  152. package/dist/cli/chunks/{chunk-LXPB7H2P.js → chunk-TVWX7NYD.js} +1 -1
  153. package/dist/cli/chunks/{chunk-G5DFYX3J.js → chunk-U2FCUBBW.js} +2 -2
  154. package/dist/cli/chunks/{chunk-DRIJYTSK.js → chunk-UIQVVS7K.js} +2 -2
  155. package/dist/cli/chunks/{chunk-6DTOGSDV.js → chunk-UPGJZA3D.js} +4 -4
  156. package/dist/cli/chunks/{chunk-3K4SF57Q.js → chunk-UVLWT6QM.js} +1 -1
  157. package/dist/cli/chunks/{chunk-FL3BM54K.js → chunk-VKU5BUUC.js} +1 -1
  158. package/dist/cli/chunks/{chunk-AO7AHX6K.js → chunk-VOYUCJLK.js} +2 -2
  159. package/dist/cli/chunks/{chunk-BCKTBGDM.js → chunk-WMK2ZNLM.js} +3 -3
  160. package/dist/cli/chunks/{chunk-4BESADKE.js → chunk-WTSVP6OK.js} +2 -2
  161. package/dist/cli/chunks/{chunk-MBCGI3M2.js → chunk-XS2S3ECA.js} +5 -5
  162. package/dist/cli/chunks/chunk-XXQLFPIK.js +2 -0
  163. package/dist/cli/chunks/{chunk-HL2QMM4M.js → chunk-XZOTFJHU.js} +2 -2
  164. package/dist/cli/chunks/{chunk-QTU3CVOB.js → chunk-YTHUTBBH.js} +2 -2
  165. package/dist/cli/chunks/{chunk-BUGWPTMF.js → chunk-YWJ2GPD4.js} +2 -2
  166. package/dist/cli/chunks/{chunk-GFBLWFRV.js → chunk-YXTDCP6H.js} +1 -1
  167. package/dist/cli/chunks/{chunk-TZ73SXQ5.js → chunk-YZUMCXH6.js} +1 -1
  168. package/dist/cli/chunks/{chunk-VHYMSZNF.js → chunk-ZIT5VF43.js} +2 -2
  169. package/dist/cli/chunks/{chunk-IZRLIWFN.js → chunk-ZY5FB3JV.js} +2 -2
  170. package/dist/cli/chunks/{ci-74ZUCO5V.js → ci-EOFZKCSH.js} +2 -2
  171. package/dist/cli/chunks/{ci-output-HD6IZNJA.js → ci-output-TAJFQWDP.js} +2 -2
  172. package/dist/cli/chunks/{circuit-breaker-USZVMA42.js → circuit-breaker-QA7YJ3IF.js} +2 -2
  173. package/dist/cli/chunks/{claude-flow-setup-S4XKNCD5.js → claude-flow-setup-4RNAIALK.js} +2 -2
  174. package/dist/cli/chunks/client-N2WAM5IK.js +2 -0
  175. package/dist/cli/chunks/{cline-installer-6EW4CHAR.js → cline-installer-K25NUUA4.js} +2 -2
  176. package/dist/cli/chunks/{code-TOLWD2XL.js → code-JM4D3I2W.js} +2 -2
  177. package/dist/cli/chunks/{code-index-extractor-UA4QQ7B3.js → code-index-extractor-6B6TJ2B5.js} +2 -2
  178. package/dist/cli/chunks/codex-installer-GRUENCIO.js +10 -0
  179. package/dist/cli/chunks/{completions-KVUMQQ4K.js → completions-LADTXGCC.js} +2 -2
  180. package/dist/cli/chunks/{complexity-analyzer-DFH6LMK2.js → complexity-analyzer-IQITOJH5.js} +2 -2
  181. package/dist/cli/chunks/{continuedev-installer-LYDQSAU7.js → continuedev-installer-H6NAXFZK.js} +2 -2
  182. package/dist/cli/chunks/{copilot-installer-7USXLZHZ.js → copilot-installer-W7HCQKOS.js} +2 -2
  183. package/dist/cli/chunks/core-handlers-VSX474R3.js +2 -0
  184. package/dist/cli/chunks/{cost-tracker-JBDIUMKZ.js → cost-tracker-MC7KEENQ.js} +2 -2
  185. package/dist/cli/chunks/{coverage-RGO3K357.js → coverage-NOOKPFYQ.js} +3 -3
  186. package/dist/cli/chunks/cross-domain-router-VNE7QKX4.js +2 -0
  187. package/dist/cli/chunks/{cursor-installer-YEZGD37F.js → cursor-installer-GOZ64GZJ.js} +2 -2
  188. package/dist/cli/chunks/{daemon-FVETQ3LL.js → daemon-G4ABQMFJ.js} +3 -3
  189. package/dist/cli/chunks/{daemon-LPEXHNYG.js → daemon-V23WTCJJ.js} +4 -4
  190. package/dist/cli/chunks/{dag-attention-scheduler-UKYE2FII.js → dag-attention-scheduler-YKOO6ZWL.js} +2 -2
  191. package/dist/cli/chunks/{detect-WBG5P7ER.js → detect-SNEMKQGJ.js} +2 -2
  192. package/dist/cli/chunks/{dist-node-YW6YRBCU.js → dist-node-VBNEM6K6.js} +2 -2
  193. package/dist/cli/chunks/{domain-handler-HH7J4A32.js → domain-handler-2G5XEERC.js} +2 -2
  194. package/dist/cli/chunks/{domain-transfer-V34GXD5I.js → domain-transfer-HSEUUM7E.js} +2 -2
  195. package/dist/cli/chunks/dream-A5LVJU7T.js +2 -0
  196. package/dist/cli/chunks/{embed-and-insert-pattern-WYLRS3CL.js → embed-and-insert-pattern-H6MU5HK4.js} +2 -2
  197. package/dist/cli/chunks/{eval-EIMVXY5J.js → eval-XYVDJXJF.js} +2 -2
  198. package/dist/cli/chunks/{experience-capture-middleware-QMZHRUKM.js → experience-capture-middleware-BZQJVXTE.js} +3 -3
  199. package/dist/cli/chunks/{fast-paths-NHLW6XS6.js → fast-paths-76WWBJ4H.js} +2 -2
  200. package/dist/cli/chunks/{feature-flags-NE3MBL3P.js → feature-flags-7E5YZ4P5.js} +2 -2
  201. package/dist/cli/chunks/{feature-flags-N3UHMSZ3.js → feature-flags-SCQ35J6M.js} +2 -2
  202. package/dist/cli/chunks/{file-discovery-SI44X4YS.js → file-discovery-LU5MAXWA.js} +2 -2
  203. package/dist/cli/chunks/{fleet-MMYUXRRM.js → fleet-M3TH65SV.js} +3 -3
  204. package/dist/cli/chunks/{gnn-wrapper-RLYXYU2Q.js → gnn-wrapper-OYUJEJD2.js} +2 -2
  205. package/dist/cli/chunks/{heartbeat-handler-6EDRUYLV.js → heartbeat-handler-II4NSOXK.js} +4 -4
  206. package/dist/cli/chunks/heartbeat-scheduler-CFZ6DNQY.js +2 -0
  207. package/dist/cli/chunks/hnsw-adapter-I4Y2T4HO.js +2 -0
  208. package/dist/cli/chunks/hnsw-index-SBR5VYGN.js +2 -0
  209. package/dist/cli/chunks/{hnsw-legacy-bridge-RVM7EAIH.js → hnsw-legacy-bridge-322R2UAB.js} +2 -2
  210. package/dist/cli/chunks/{better-sqlite3-DUZ6FFAH.js → hnswlib-node-OVLAHTPU.js} +2 -2
  211. package/dist/cli/chunks/{hooks-ZF4VKHEO.js → hooks-2A27XCUJ.js} +37 -37
  212. package/dist/cli/chunks/hybrid-router-E6YM74NQ.js +2 -0
  213. package/dist/cli/chunks/{hypergraph-engine-YWS66PGO.js → hypergraph-engine-ERA527UR.js} +2 -2
  214. package/dist/cli/chunks/{hypergraph-handler-OQHVRPWB.js → hypergraph-handler-7XL4OL6W.js} +3 -3
  215. package/dist/cli/chunks/impact-analyzer-GHYFSSMJ.js +2 -0
  216. package/dist/cli/chunks/{init-handler-YW74YF2V.js → init-handler-WN6KQ5WY.js} +6 -6
  217. package/dist/cli/chunks/init-wizard-KAN5KOGD.js +2 -0
  218. package/dist/cli/chunks/kernel-LET4HEEF.js +2 -0
  219. package/dist/cli/chunks/{kilocode-installer-APWB2GMA.js → kilocode-installer-5UCCFZ7V.js} +2 -2
  220. package/dist/cli/chunks/{kiro-installer-DICKFVNC.js → kiro-installer-77DPEP3K.js} +2 -2
  221. package/dist/cli/chunks/knowledge-graph-P3UJWNQS.js +2 -0
  222. package/dist/cli/chunks/{learning-MXHNYW5D.js → learning-A5GKUD73.js} +3 -3
  223. package/dist/cli/chunks/{llm-router-LTFIX7NY.js → llm-router-SINJNEGP.js} +4 -4
  224. package/dist/cli/chunks/llm-router-service-BOBENURJ.js +2 -0
  225. package/dist/cli/chunks/{load-JUMIQ4LZ.js → load-Q56GLXHJ.js} +2 -2
  226. package/dist/cli/chunks/load-test-4VDCVB7S.js +2 -0
  227. package/dist/cli/chunks/{mcp-WHIARJGO.js → mcp-VBDU2WLY.js} +2 -2
  228. package/dist/cli/chunks/{memory-KAHS6Z5A.js → memory-IGWBRDIT.js} +5 -5
  229. package/dist/cli/chunks/memory-backend-RRFAYQYS.js +2 -0
  230. package/dist/cli/chunks/{memory-handlers-DG3RRXB6.js → memory-handlers-IITHQ7KV.js} +2 -2
  231. package/dist/cli/chunks/{multi-model-executor-E3Y2RHMX.js → multi-model-executor-2QUEY4CC.js} +2 -2
  232. package/dist/cli/chunks/{opencode-installer-3RKGNGGE.js → opencode-installer-FZJ5N2B3.js} +2 -2
  233. package/dist/cli/chunks/{orchestrator-TXITUKWD.js → orchestrator-BGLDS47V.js} +5 -5
  234. package/dist/cli/chunks/pattern-null-store-V7DEZEF2.js +2 -0
  235. package/dist/cli/chunks/{pattern-usage-recorder-EE2BUFZT.js → pattern-usage-recorder-4MFN4WKV.js} +2 -2
  236. package/dist/cli/chunks/{pipeline-AXTT6KZB.js → pipeline-GZHAORGP.js} +2 -2
  237. package/dist/cli/chunks/{platform-TICPVKE2.js → platform-TZEX4YZQ.js} +2 -2
  238. package/dist/cli/chunks/{plugin-VQKNV3EM.js → plugin-VEYUFCNY.js} +2 -2
  239. package/dist/cli/chunks/{prime-radiant-advanced-wasm-6GY5YY7D.js → prime-radiant-advanced-wasm-OA5DLXJJ.js} +2 -2
  240. package/dist/cli/chunks/protocol-executor-I3C2ZETP.js +2 -0
  241. package/dist/cli/chunks/{protocol-handler-YFWDR7UZ.js → protocol-handler-MVJ5N4X5.js} +2 -2
  242. package/dist/cli/chunks/{prove-FUMRCXAA.js → prove-VKF7YCUA.js} +2 -2
  243. package/dist/cli/chunks/provider-manager-HB4YVQDI.js +2 -0
  244. package/dist/cli/chunks/qe-reasoning-bank-RDLBAXJY.js +2 -0
  245. package/dist/cli/chunks/{quality-2APISBW5.js → quality-NLB5LVGM.js} +2 -2
  246. package/dist/cli/chunks/{quality-gate-MCC3E5TM.js → quality-gate-OM6A7FQM.js} +3 -3
  247. package/dist/cli/chunks/queen-coordinator-QRWRNUDR.js +2 -0
  248. package/dist/cli/chunks/{real-embeddings-CC5TNOTI.js → real-embeddings-NONEKGAV.js} +2 -2
  249. package/dist/cli/chunks/{roocode-installer-YAHTEVPI.js → roocode-installer-ORXQQO3F.js} +2 -2
  250. package/dist/cli/chunks/router-WDF7KV4M.js +2 -0
  251. package/dist/cli/chunks/routing-feedback-DHYB4ZNL.js +2 -0
  252. package/dist/cli/chunks/{routing-handler-6NQBW4TQ.js → routing-handler-LGMIBVDS.js} +2 -2
  253. package/dist/cli/chunks/{ruvector-commands-ZHXLHUPG.js → ruvector-commands-4GZMU4BZ.js} +2 -2
  254. package/dist/cli/chunks/{rvf-dual-writer-5KF2DGCW.js → rvf-dual-writer-45HKI22F.js} +2 -2
  255. package/dist/cli/chunks/{rvf-migration-adapter-BBU57BGF.js → rvf-migration-adapter-RHYIXI3I.js} +2 -2
  256. package/dist/cli/chunks/{rvf-migration-coordinator-VN4VRZA4.js → rvf-migration-coordinator-ANTAYKNN.js} +2 -2
  257. package/dist/cli/chunks/rvf-native-adapter-7W53TYTH.js +2 -0
  258. package/dist/cli/chunks/{rvf-store-integrity-XCY2XQZA.js → rvf-store-integrity-CPQUTFST.js} +2 -2
  259. package/dist/cli/chunks/safe-db-4HBFO7OQ.js +2 -0
  260. package/dist/cli/chunks/schedule-M2OSBJZM.js +2 -0
  261. package/dist/cli/chunks/scheduler-JWV5MSGE.js +2 -0
  262. package/dist/cli/chunks/{security-PYP4H3KN.js → security-BM6LMCBI.js} +3 -3
  263. package/dist/cli/chunks/{shared-rvf-adapter-3CJHRNX6.js → shared-rvf-adapter-3HGARKJX.js} +2 -2
  264. package/dist/cli/chunks/{shared-rvf-dual-writer-MKSLKWDI.js → shared-rvf-dual-writer-UQ4O46ZI.js} +2 -2
  265. package/dist/cli/chunks/sqlite-persistence-QA4JRQZ2.js +2 -0
  266. package/dist/cli/chunks/{status-handler-VYIZ3VJF.js → status-handler-TGRAM5PC.js} +2 -2
  267. package/dist/cli/chunks/{structural-health-MVV4OWXP.js → structural-health-RXETMBB3.js} +2 -2
  268. package/dist/cli/chunks/{sync-VNX6L3TI.js → sync-B4KEYFCP.js} +2 -2
  269. package/dist/cli/chunks/{sync-G47OYIQ3.js → sync-JTBZIACA.js} +2 -2
  270. package/dist/cli/chunks/{task-handler-GOWF2GEH.js → task-handler-D7VXHWPG.js} +2 -2
  271. package/dist/cli/chunks/{task-handlers-J2WC6J37.js → task-handlers-XF6VVPTR.js} +3 -3
  272. package/dist/cli/chunks/{test-DMCJ3BXS.js → test-BKEIMBSX.js} +4 -4
  273. package/dist/cli/chunks/{test-scheduling-TRFHHKFM.js → test-scheduling-A4OHR7KW.js} +3 -3
  274. package/dist/cli/chunks/{token-bootstrap-KEQ7AHFF.js → token-bootstrap-LIDDAOAK.js} +2 -2
  275. package/dist/cli/chunks/{token-usage-B54FOFOF.js → token-usage-BJUFIU4V.js} +2 -2
  276. package/dist/cli/chunks/{transformers-IACZG7IV.js → transformers-YYUQCGMV.js} +2 -2
  277. package/dist/cli/chunks/{tree-sitter-wasm-parser-N7H4X37E.js → tree-sitter-wasm-parser-DFXYTJ23.js} +2 -2
  278. package/dist/cli/chunks/{types-B3SHT4OD.js → types-Z75HK5HH.js} +2 -2
  279. package/dist/cli/chunks/unified-memory-BEUZQTTC.js +2 -0
  280. package/dist/cli/chunks/unified-memory-hnsw-FHLSAEX4.js +2 -0
  281. package/dist/cli/chunks/unified-persistence-TVEQGCSB.js +2 -0
  282. package/dist/cli/chunks/{upgrade-A2PQ5EWK.js → upgrade-NETNZZH3.js} +2 -2
  283. package/dist/cli/chunks/{validate-UXV7UQUT.js → validate-U2WQ7P6T.js} +2 -2
  284. package/dist/cli/chunks/{validate-swarm-MMBU4FPP.js → validate-swarm-DKD7H2E3.js} +2 -2
  285. package/dist/cli/chunks/{vibium-R4GUVADA.js → vibium-FOQ73JBW.js} +2 -2
  286. package/dist/cli/chunks/visual-security-AYV46OUO.js +2 -0
  287. package/dist/cli/chunks/{web-tree-sitter-MP6E6CJB.js → web-tree-sitter-PQXWMQO6.js} +2 -2
  288. package/dist/cli/chunks/{windsurf-installer-Z6BWMUUO.js → windsurf-installer-CTFSFOBX.js} +2 -2
  289. package/dist/cli/chunks/{witness-chain-EFLTABBA.js → witness-chain-NCRHNFQM.js} +2 -2
  290. package/dist/cli/chunks/witness-chain-RU356H6R.js +2 -0
  291. package/dist/cli/chunks/{witness-key-manager-PN36TV43.js → witness-key-manager-WGCSSB23.js} +2 -2
  292. package/dist/cli/chunks/{workflow-A2AX3RJU.js → workflow-FE5QGP2U.js} +4 -4
  293. package/dist/cli/chunks/workflow-orchestrator-N2DQTC3X.js +2 -0
  294. package/dist/cli/chunks/{wrappers-NA6FHA63.js → wrappers-AHL5K2LO.js} +2 -2
  295. package/dist/cli/commands/hooks-handlers/hooks-shared.d.ts +9 -0
  296. package/dist/cli/commands/hooks-handlers/hooks-shared.js +38 -0
  297. package/dist/cli/commands/hooks.d.ts +2 -2
  298. package/dist/cli/commands/hooks.js +8 -2
  299. package/dist/cli/handlers/init-handler.js +1 -1
  300. package/dist/coordination/handlers/coverage-collection.d.ts +161 -0
  301. package/dist/coordination/handlers/coverage-collection.js +643 -0
  302. package/dist/coordination/handlers/coverage-handlers.js +199 -146
  303. package/dist/coordination/handlers/handler-types.d.ts +6 -1
  304. package/dist/coordination/handlers/handler-utils.js +10 -3
  305. package/dist/coordination/handlers/security-handlers.js +17 -2
  306. package/dist/coordination/handlers/test-execution-handlers.js +16 -1
  307. package/dist/coordination/queen-coordinator.js +4 -3
  308. package/dist/coordination/result-saver.js +119 -97
  309. package/dist/coordination/task-executor.d.ts +26 -1
  310. package/dist/coordination/task-executor.js +52 -4
  311. package/dist/domains/code-intelligence/services/knowledge-graph.js +8 -0
  312. package/dist/domains/coverage-analysis/services/coverage-analyzer.js +4 -0
  313. package/dist/domains/coverage-analysis/services/gap-detector.js +4 -0
  314. package/dist/domains/defect-intelligence/services/defect-predictor.js +4 -0
  315. package/dist/domains/defect-intelligence/services/root-cause-analyzer.js +4 -0
  316. package/dist/domains/quality-assessment/services/deployment-advisor.js +4 -0
  317. package/dist/domains/quality-assessment/services/quality-analyzer.js +4 -0
  318. package/dist/domains/security-compliance/services/scanners/sast-scanner.js +4 -0
  319. package/dist/domains/test-generation/index.js +17 -2
  320. package/dist/domains/test-generation/services/test-generator.js +31 -9
  321. package/dist/init/codex-installer.d.ts +13 -0
  322. package/dist/init/codex-installer.js +122 -1
  323. package/dist/init/phases/09-assets.js +4 -0
  324. package/dist/init/phases/phase-interface.d.ts +1 -1
  325. package/dist/integrations/ruvector/rvf-store-integrity.js +5 -1
  326. package/dist/integrations/ruvector/shared-rvf-adapter.js +5 -5
  327. package/dist/learning/real-embeddings.js +15 -1
  328. package/dist/mcp/bundle.js +429 -419
  329. package/dist/mcp/handlers/domain-handler-configs.js +79 -14
  330. package/dist/mcp/types.d.ts +42 -4
  331. package/dist/optimization/session-cache.d.ts +13 -1
  332. package/dist/optimization/session-cache.js +27 -2
  333. package/dist/shared/llm/llm-router-service.js +59 -4
  334. package/dist/shared/llm/router/agent-router-config.d.ts +46 -2
  335. package/dist/shared/llm/router/agent-router-config.js +124 -2
  336. package/dist/shared/llm/router/config-store.d.ts +17 -1
  337. package/dist/shared/llm/router/config-store.js +103 -0
  338. package/dist/shared/llm/router/index.d.ts +2 -2
  339. package/dist/shared/llm/router/index.js +2 -0
  340. package/dist/shared/llm/router/types.d.ts +44 -0
  341. package/dist/shared/llm/router/types.js +1 -0
  342. package/package.json +9 -6
  343. package/dist/cli/chunks/adapter-CWIMFWAI.js +0 -2
  344. package/dist/cli/chunks/aqe-learning-engine-OTXT2DLN.js +0 -2
  345. package/dist/cli/chunks/base-O3SPSWBA.js +0 -2
  346. package/dist/cli/chunks/browser-workflow-MXS3ZKY2.js +0 -2
  347. package/dist/cli/chunks/chunk-G4GTE3RJ.js +0 -2
  348. package/dist/cli/chunks/chunk-G7FMYFTN.js +0 -2
  349. package/dist/cli/chunks/chunk-HVB2L52I.js +0 -2
  350. package/dist/cli/chunks/chunk-MVI2QMRW.js +0 -2
  351. package/dist/cli/chunks/chunk-OZR25R7W.js +0 -2
  352. package/dist/cli/chunks/chunk-PP2RYSHT.js +0 -3
  353. package/dist/cli/chunks/client-33PGO5FA.js +0 -2
  354. package/dist/cli/chunks/codex-installer-C2CUP4FW.js +0 -8
  355. package/dist/cli/chunks/core-handlers-CSNZIM3A.js +0 -2
  356. package/dist/cli/chunks/cross-domain-router-DRIBR5L3.js +0 -2
  357. package/dist/cli/chunks/dream-WUNO723O.js +0 -2
  358. package/dist/cli/chunks/heartbeat-scheduler-VAFQDJLL.js +0 -2
  359. package/dist/cli/chunks/hnsw-adapter-TIRPA7XE.js +0 -2
  360. package/dist/cli/chunks/hnsw-index-SSQBRQCQ.js +0 -2
  361. package/dist/cli/chunks/hybrid-router-AKBWZOQ3.js +0 -2
  362. package/dist/cli/chunks/impact-analyzer-46FQIZ6Y.js +0 -2
  363. package/dist/cli/chunks/init-wizard-U3NHGYSS.js +0 -2
  364. package/dist/cli/chunks/kernel-ZDXHT6QF.js +0 -2
  365. package/dist/cli/chunks/knowledge-graph-6XTW6WO6.js +0 -2
  366. package/dist/cli/chunks/llm-router-service-3F4E64SY.js +0 -2
  367. package/dist/cli/chunks/load-test-SWZNGEIY.js +0 -2
  368. package/dist/cli/chunks/memory-backend-PR74ZPBA.js +0 -2
  369. package/dist/cli/chunks/pattern-null-store-EPE36BVT.js +0 -2
  370. package/dist/cli/chunks/protocol-executor-IELENNST.js +0 -2
  371. package/dist/cli/chunks/provider-manager-3R3KOBHG.js +0 -2
  372. package/dist/cli/chunks/qe-reasoning-bank-S2R2PCBS.js +0 -2
  373. package/dist/cli/chunks/queen-coordinator-2E23NEV4.js +0 -2
  374. package/dist/cli/chunks/router-3FVLWO6S.js +0 -2
  375. package/dist/cli/chunks/routing-feedback-ZQLRNNR7.js +0 -2
  376. package/dist/cli/chunks/rvf-native-adapter-YFGLQNEB.js +0 -2
  377. package/dist/cli/chunks/safe-db-4SBLBTW7.js +0 -2
  378. package/dist/cli/chunks/schedule-5Y3BGVAA.js +0 -2
  379. package/dist/cli/chunks/scheduler-DOID3QF3.js +0 -2
  380. package/dist/cli/chunks/sqlite-persistence-M4JEQO57.js +0 -2
  381. package/dist/cli/chunks/unified-memory-WNYWTGVX.js +0 -2
  382. package/dist/cli/chunks/unified-memory-hnsw-YPAV7U4E.js +0 -2
  383. package/dist/cli/chunks/unified-persistence-TJ252S7L.js +0 -2
  384. package/dist/cli/chunks/visual-security-VKYXEGJB.js +0 -2
  385. package/dist/cli/chunks/witness-chain-WVXRXKQP.js +0 -2
  386. package/dist/cli/chunks/workflow-orchestrator-GOWSPR3G.js +0 -2
@@ -0,0 +1,25 @@
1
+ ---
2
+ name: aqe-plan-quality
3
+ description: Create risk-based quality and test plans for Agentic QE changes. Use when scoping a feature, translating requirements into verification work, selecting QE specialties, assessing testability, or deciding which `.claude/agents/v3/qe-*.md` capabilities should inform a task. Do not use merely to execute an already-defined test command.
4
+ ---
5
+
6
+ # Plan AQE Quality
7
+
8
+ 1. Read `AGENTS.md`, the requested change, and the affected public boundaries.
9
+ 2. Inspect the closest implementation and tests before proposing work.
10
+ 3. Classify the risk domains using [references/qe-routing.md](references/qe-routing.md).
11
+ 4. Select only the QE specialties needed. Treat Claude agent definitions as
12
+ domain references; do not copy their Claude-only `Task`, `SendMessage`, or
13
+ hook syntax into Codex actions.
14
+ 5. Produce a plan that covers:
15
+ - observable requirements and acceptance criteria;
16
+ - affected boundaries, dependencies, and failure modes;
17
+ - durable tests first, then implementation-coupled tests;
18
+ - security, performance, accessibility, contract, or resilience checks when
19
+ triggered by the change;
20
+ - the narrowest repository verification commands.
21
+ 6. Flag assumptions, unavailable environments, destructive operations, and
22
+ decisions requiring human approval.
23
+
24
+ Prefer evidence from repository code and configuration over generic test
25
+ checklists. Keep the selected fleet small and explain each specialty’s purpose.
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "AQE Plan Quality"
3
+ short_description: "Build risk-based QE plans with the AQE fleet"
4
+ default_prompt: "Use $aqe-plan-quality to create a risk-based quality plan for this change."
@@ -0,0 +1,22 @@
1
+ # QE Routing Reference
2
+
3
+ Use the shipped definitions in `.claude/agents/v3/qe-*.md` as detailed domain
4
+ references. The principal routing map is:
5
+
6
+ | Need | QE specialties |
7
+ | --- | --- |
8
+ | Requirements and testability | `qe-requirements-validator`, `qe-bdd-generator`, `qe-product-factors-assessor`, `qe-quality-criteria-recommender` |
9
+ | Test design and implementation | `qe-test-architect`, `qe-tdd-specialist`, `qe-property-tester`, `qe-integration-tester`, `qe-test-idea-rewriter` |
10
+ | Execution and reliability | `qe-parallel-executor`, `qe-flaky-hunter`, `qe-retry-handler` |
11
+ | Coverage and effectiveness | `qe-coverage-specialist`, `qe-gap-detector`, `qe-mutation-tester` |
12
+ | Code impact | `qe-code-intelligence`, `qe-dependency-mapper`, `qe-impact-analyzer`, `qe-kg-builder`, `qe-code-complexity` |
13
+ | Defect analysis | `qe-regression-analyzer`, `qe-root-cause-analyzer`, `qe-defect-predictor` |
14
+ | Quality decision | `qe-risk-assessor`, `qe-quality-gate`, `qe-deployment-advisor`, `qe-devils-advocate` |
15
+ | Security | `qe-security-scanner`, `qe-security-auditor`, `qe-pentest-validator`, `qe-sod-analyzer` |
16
+ | Contract and integration | `qe-contract-validator`, `qe-graphql-tester`, `qe-soap-tester`, `qe-odata-contract-tester`, `qe-message-broker-tester`, `qe-middleware-validator`, `qe-sap-rfc-tester`, `qe-sap-idoc-tester` |
17
+ | Performance and resilience | `qe-performance-tester`, `qe-load-tester`, `qe-chaos-engineer` |
18
+ | UX and accessibility | `qe-visual-tester`, `qe-responsive-tester`, `qe-accessibility-auditor`, `qe-qx-partner` |
19
+ | Learning | `qe-pattern-learner`, `qe-learning-coordinator`, `qe-metrics-optimizer`, `qe-transfer-specialist` |
20
+ | Cross-domain coordination | `qe-fleet-commander`, `qe-queen-coordinator` |
21
+
22
+ Select the smallest set that covers the actual change.
@@ -0,0 +1,24 @@
1
+ ---
2
+ name: aqe-review-quality
3
+ description: Review Agentic QE changes and issue an evidence-backed quality verdict. Use for code review, regression-risk assessment, release readiness, quality-gate evaluation, security/performance/testability review, or checking whether a change has sufficient verification. Do not use when the user primarily asks to implement a feature.
4
+ ---
5
+
6
+ # Review AQE Quality
7
+
8
+ 1. Read `AGENTS.md`, the diff or requested scope, affected implementation,
9
+ tests, and configuration.
10
+ 2. Review for correctness first: broken behavior, data loss, security,
11
+ concurrency, compatibility, and missing error paths.
12
+ 3. Use [references/quality-gates.md](references/quality-gates.md) to select
13
+ relevant QE review lenses. Do not run unrelated broad scans.
14
+ 4. Verify claims with focused commands where safe and available. Distinguish
15
+ observed failures from inferred risks.
16
+ 5. Report findings by severity with file and line references, the triggering
17
+ scenario, and the smallest useful remediation.
18
+ 6. End with one verdict:
19
+ - `PASS`: no material finding and adequate evidence;
20
+ - `CONDITIONAL`: bounded risks or missing environment-dependent evidence;
21
+ - `FAIL`: correctness, safety, compatibility, or verification blocker.
22
+ 7. List the exact checks run and any checks not run.
23
+
24
+ Do not edit code during a review unless the user also asks for fixes.
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "AQE Review Quality"
3
+ short_description: "Assess change risk and enforce AQE quality gates"
4
+ default_prompt: "Use $aqe-review-quality to review this change and produce a quality verdict."
@@ -0,0 +1,20 @@
1
+ # AQE Quality Gates
2
+
3
+ Apply only relevant gates:
4
+
5
+ | Gate | Blocking signal |
6
+ | --- | --- |
7
+ | Correctness | A realistic input violates the stated behavior or invariant |
8
+ | Data safety | A path can corrupt, overwrite, or silently lose persisted data |
9
+ | Security | Authorization bypass, injection, secret exposure, unsafe path, or unvalidated boundary |
10
+ | Compatibility | Public API, CLI, MCP, schema, or shipped asset changes without migration/compatibility handling |
11
+ | Test adequacy | Changed behavior lacks a durable assertion or the test cannot detect a plausible defect |
12
+ | CLI/MCP parity | Equivalent surfaces behave differently or only one was verified |
13
+ | Reliability | Race, leak, retry masking, nondeterministic result, or unbounded resource use |
14
+ | Performance | Measured regression beyond an established threshold |
15
+ | Distribution | `.claude/agents/v3`, `assets/agents/v3`, manifests, or generated bundles are out of sync |
16
+ | Release evidence | Required build, invariant, parity, or smoke check failed or was not run |
17
+
18
+ Use `.claude/agents/v3/qe-quality-gate.md`,
19
+ `qe-risk-assessor.md`, `qe-deployment-advisor.md`, and the domain-specific QE
20
+ definitions as deeper references when a gate needs specialized criteria.
@@ -0,0 +1,26 @@
1
+ ---
2
+ name: aqe-test-change
3
+ description: Design, implement, and run durable tests for Agentic QE code changes. Use when adding tests, reproducing a defect, filling a coverage gap, selecting affected Vitest suites, checking CLI/MCP parity, or verifying a fix in this repository. Do not use for a read-only quality review with no requested edits.
4
+ ---
5
+
6
+ # Test an AQE Change
7
+
8
+ 1. Read `AGENTS.md`, the changed code, nearby tests, and relevant public
9
+ interfaces.
10
+ 2. Reproduce a reported defect with the exact scenario before changing code.
11
+ 3. Identify the affected QE specialty from
12
+ [references/test-specialties.md](references/test-specialties.md).
13
+ 4. Add tests in this order:
14
+ - durable boundary contracts, invariants, or properties;
15
+ - integration behavior across affected components;
16
+ - focused unit examples needed for the red-green loop.
17
+ 5. Keep tests deterministic. Do not hide failures with retries, skips, weakened
18
+ assertions, fabricated fixtures, or mocks of the behavior under test.
19
+ 6. Run the narrowest matching Vitest target first. Expand to typecheck, build,
20
+ agent/skill parity, MCP integration, or full CI checks in proportion to the
21
+ changed surface.
22
+ 7. For capabilities exposed through both CLI and MCP, verify both paths.
23
+ 8. Report commands, pass/fail counts, limitations, and untested external
24
+ dependencies.
25
+
26
+ Never modify or reset `.agentic-qe/memory.db`. Use a copy for any database test.
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "AQE Test Change"
3
+ short_description: "Design and verify durable tests for code changes"
4
+ default_prompt: "Use $aqe-test-change to test and verify this code change."
@@ -0,0 +1,23 @@
1
+ # Test Specialty Selection
2
+
3
+ - Public algorithm or data structure: invariants and property tests; consult
4
+ `qe-property-tester` and `qe-test-architect`.
5
+ - CLI behavior: command-level test plus the equivalent MCP check when exposed;
6
+ consult `qe-integration-tester`.
7
+ - MCP handler or protocol: handler tests are insufficient by themselves; add a
8
+ protocol-level integration check.
9
+ - Coverage gap: inspect risk and branch behavior before adding examples; consult
10
+ `qe-coverage-specialist`, `qe-gap-detector`, and `qe-mutation-tester`.
11
+ - Intermittent failure: preserve evidence and classify nondeterminism; consult
12
+ `qe-flaky-hunter` and `qe-root-cause-analyzer`.
13
+ - API/schema change: test backward compatibility and negative cases; consult
14
+ `qe-contract-validator` or the protocol-specific QE definition.
15
+ - Security boundary: test authorization, input validation, path safety, secret
16
+ handling, and failure disclosure; consult `qe-security-auditor`.
17
+ - Performance-sensitive path: measure a baseline and regression threshold;
18
+ consult `qe-performance-tester`.
19
+ - Browser or UI change: cover keyboard/accessibility, responsive layout, and
20
+ stable visual evidence where relevant.
21
+
22
+ Repository test commands are defined in `package.json`; follow `AGENTS.md` for
23
+ the recommended narrow-to-broad sequence.
@@ -52,7 +52,11 @@ function main() {
52
52
 
53
53
  if (commandExists('ruflo')) { invokeHook('ruflo', [], hookArgs, stdinData); done(); }
54
54
  if (commandExists('claude-flow')) { invokeHook('claude-flow', [], hookArgs, stdinData); done(); }
55
- invokeHook('npx', ['--prefer-offline', '--yes', 'ruflo@latest'], hookArgs, stdinData);
55
+ // Repository-local Codex hooks disable the network-capable fallback. They
56
+ // should use an installed stack binary and quietly no-op when it is absent.
57
+ if (process.env.RUFLO_HOOK_NPX !== '0') {
58
+ invokeHook('npx', ['--prefer-offline', '--yes', 'ruflo@latest'], hookArgs, stdinData);
59
+ }
56
60
  done();
57
61
  }
58
62
 
@@ -940,7 +940,7 @@
940
940
  },
941
941
  "metadata": {
942
942
  "generatedBy": "Agentic QE Fleet",
943
- "fleetVersion": "3.13.0",
943
+ "fleetVersion": "3.13.2",
944
944
  "manifestVersion": "1.4.0",
945
945
  "lastUpdated": "2026-04-13T00:00:00.000Z",
946
946
  "contributors": [
@@ -0,0 +1,69 @@
1
+ #!/usr/bin/env node
2
+ 'use strict';
3
+
4
+ const { spawnSync } = require('node:child_process');
5
+ const path = require('node:path');
6
+
7
+ let input = {};
8
+ try {
9
+ input = JSON.parse(require('node:fs').readFileSync(0, 'utf8') || '{}');
10
+ } catch {
11
+ process.exit(0);
12
+ }
13
+
14
+ const root = input.cwd
15
+ ? spawnSync('git', ['-C', input.cwd, 'rev-parse', '--show-toplevel'], {
16
+ encoding: 'utf8',
17
+ timeout: 1000,
18
+ }).stdout.trim()
19
+ : '';
20
+ if (!root) process.exit(0);
21
+
22
+ const subcommand = process.argv[2];
23
+ if (!subcommand) process.exit(0);
24
+
25
+ const codexShim = path.join(root, '.codex', 'hooks', 'aqe-runtime.cjs');
26
+ const shim = require('node:fs').existsSync(codexShim)
27
+ ? codexShim
28
+ : path.join(root, '.claude', 'hooks', 'aqe-hook.cjs');
29
+ const result = spawnSync(process.execPath, [shim, subcommand, '--json'], {
30
+ cwd: root,
31
+ env: { ...process.env, CLAUDE_PROJECT_DIR: root },
32
+ input: JSON.stringify(input),
33
+ encoding: 'utf8',
34
+ timeout: Number(process.env.AQE_CODEX_HOOK_TIMEOUT_MS) || 20000,
35
+ maxBuffer: 4 * 1024 * 1024,
36
+ });
37
+
38
+ if (!result.stdout) process.exit(0);
39
+
40
+ let output;
41
+ try {
42
+ output = JSON.parse(result.stdout);
43
+ } catch {
44
+ process.exit(0);
45
+ }
46
+
47
+ // AQE route results are useful context but are not themselves a Codex hook
48
+ // response. Wrap them in the supported additional-context envelope.
49
+ if (subcommand === 'route' && !output.hookSpecificOutput) {
50
+ const agent = output.recommendedAgent || 'unspecified';
51
+ const confidence = Number.isFinite(output.confidence)
52
+ ? ` (${Math.round(output.confidence * 100)}% confidence)`
53
+ : '';
54
+ const domains = Array.isArray(output.domains) && output.domains.length
55
+ ? ` Domains: ${output.domains.join(', ')}.`
56
+ : '';
57
+ const guidance = Array.isArray(output.guidance) && output.guidance.length
58
+ ? ` Guidance: ${output.guidance.join('; ')}.`
59
+ : '';
60
+ output = {
61
+ hookSpecificOutput: {
62
+ hookEventName: 'UserPromptSubmit',
63
+ additionalContext:
64
+ `AQE routing recommends ${agent}${confidence}.${domains}${guidance}`,
65
+ },
66
+ };
67
+ }
68
+
69
+ process.stdout.write(`${JSON.stringify(output)}\n`);
@@ -0,0 +1,94 @@
1
+ #!/usr/bin/env node
2
+ 'use strict';
3
+
4
+ const fs = require('node:fs');
5
+ const path = require('node:path');
6
+ const { spawnSync } = require('node:child_process');
7
+
8
+ let input = {};
9
+ let rawInput = '';
10
+ try {
11
+ rawInput = fs.readFileSync(0, 'utf8');
12
+ input = JSON.parse(rawInput || '{}');
13
+ } catch {
14
+ process.exit(0);
15
+ }
16
+
17
+ const git = input.cwd
18
+ ? spawnSync('git', ['-C', input.cwd, 'rev-parse', '--show-toplevel'], {
19
+ encoding: 'utf8',
20
+ timeout: 1000,
21
+ })
22
+ : null;
23
+ const root = git && git.status === 0 ? git.stdout.trim() : '';
24
+ if (!root) process.exit(0);
25
+
26
+ const requested = process.argv[2];
27
+ if (!requested) process.exit(0);
28
+
29
+ const toolInput = input.tool_input || {};
30
+ const toolResponse = input.tool_response || input.tool_result || {};
31
+ const args = [requested];
32
+
33
+ function add(flag, value) {
34
+ if (value !== undefined && value !== null && String(value).length) {
35
+ args.push(flag, String(value));
36
+ }
37
+ }
38
+
39
+ switch (requested) {
40
+ case 'route':
41
+ case 'pre-task':
42
+ add('--task', input.prompt || input.user_prompt || toolInput.prompt);
43
+ break;
44
+ case 'pre-command':
45
+ case 'post-command':
46
+ add('--command', toolInput.command);
47
+ if (requested === 'post-command') {
48
+ add('--success', toolResponse.success !== false);
49
+ }
50
+ break;
51
+ case 'pre-edit':
52
+ case 'post-edit':
53
+ add(
54
+ '--file',
55
+ toolInput.file_path || toolInput.path || toolInput.target_file,
56
+ );
57
+ if (requested === 'post-edit') {
58
+ add('--success', toolResponse.success !== false);
59
+ }
60
+ break;
61
+ case 'session-restore':
62
+ case 'session-end':
63
+ add('--session-id', input.session_id);
64
+ break;
65
+ case 'post-task':
66
+ add('--task-id', input.agent_id || input.subagent_id || input.turn_id);
67
+ add('--success', true);
68
+ break;
69
+ default:
70
+ break;
71
+ }
72
+
73
+ const codexHelper = path.join(root, '.codex', 'hooks', 'ruflo-runtime.cjs');
74
+ const helper = fs.existsSync(codexHelper)
75
+ ? codexHelper
76
+ : path.join(root, '.claude', 'helpers', 'ruflo-hook.cjs');
77
+ if (!fs.existsSync(helper)) process.exit(0);
78
+
79
+ // Ruflo is development-time coordination tooling. Keep this hook fail-open,
80
+ // avoid network installation during a lifecycle event, and suppress its
81
+ // provider-specific output rather than exposing unsupported Codex hook fields.
82
+ spawnSync(process.execPath, [helper, ...args], {
83
+ cwd: root,
84
+ env: {
85
+ ...process.env,
86
+ CLAUDE_PROJECT_DIR: root,
87
+ RUFLO_HOOK_NPX: '0',
88
+ },
89
+ input: rawInput,
90
+ stdio: ['pipe', 'ignore', 'ignore'],
91
+ timeout: Number(process.env.RUFLO_CODEX_HOOK_TIMEOUT_MS) || 15000,
92
+ });
93
+
94
+ process.exit(0);
@@ -0,0 +1,169 @@
1
+ {
2
+ "description": "AQE routing, lifecycle learning, and edit/command guardrails for Codex.",
3
+ "hooks": {
4
+ "SessionStart": [
5
+ {
6
+ "matcher": "startup|resume|clear|compact",
7
+ "hooks": [
8
+ {
9
+ "type": "command",
10
+ "command": "node \"$(git rev-parse --show-toplevel)/.codex/hooks/aqe-codex-hook.cjs\" session-start",
11
+ "timeout": 25,
12
+ "statusMessage": "Loading AQE learning context"
13
+ },
14
+ {
15
+ "type": "command",
16
+ "command": "node \"$(git rev-parse --show-toplevel)/.codex/hooks/ruflo-codex-hook.cjs\" session-restore",
17
+ "timeout": 15,
18
+ "statusMessage": "Restoring ruflo coordination context"
19
+ }
20
+ ]
21
+ }
22
+ ],
23
+ "UserPromptSubmit": [
24
+ {
25
+ "hooks": [
26
+ {
27
+ "type": "command",
28
+ "command": "node \"$(git rev-parse --show-toplevel)/.codex/hooks/aqe-codex-hook.cjs\" route",
29
+ "timeout": 20,
30
+ "statusMessage": "Routing through the AQE fleet"
31
+ },
32
+ {
33
+ "type": "command",
34
+ "command": "node \"$(git rev-parse --show-toplevel)/.codex/hooks/ruflo-codex-hook.cjs\" route",
35
+ "timeout": 15,
36
+ "statusMessage": "Recording ruflo task routing"
37
+ }
38
+ ]
39
+ }
40
+ ],
41
+ "PreToolUse": [
42
+ {
43
+ "matcher": "^Bash$",
44
+ "hooks": [
45
+ {
46
+ "type": "command",
47
+ "command": "node \"$(git rev-parse --show-toplevel)/.codex/hooks/aqe-codex-hook.cjs\" pre-command",
48
+ "timeout": 20,
49
+ "statusMessage": "Applying AQE command guardrails"
50
+ },
51
+ {
52
+ "type": "command",
53
+ "command": "node \"$(git rev-parse --show-toplevel)/.codex/hooks/ruflo-codex-hook.cjs\" pre-command",
54
+ "timeout": 15,
55
+ "statusMessage": "Assessing command risk with ruflo"
56
+ }
57
+ ]
58
+ },
59
+ {
60
+ "matcher": "^(apply_patch|Edit|Write)$",
61
+ "hooks": [
62
+ {
63
+ "type": "command",
64
+ "command": "node \"$(git rev-parse --show-toplevel)/.codex/hooks/aqe-codex-hook.cjs\" pre-edit",
65
+ "timeout": 20,
66
+ "statusMessage": "Applying AQE edit guardrails"
67
+ },
68
+ {
69
+ "type": "command",
70
+ "command": "node \"$(git rev-parse --show-toplevel)/.codex/hooks/ruflo-codex-hook.cjs\" pre-edit",
71
+ "timeout": 15,
72
+ "statusMessage": "Loading ruflo edit context"
73
+ }
74
+ ]
75
+ }
76
+ ],
77
+ "PostToolUse": [
78
+ {
79
+ "matcher": "^Bash$",
80
+ "hooks": [
81
+ {
82
+ "type": "command",
83
+ "command": "node \"$(git rev-parse --show-toplevel)/.codex/hooks/aqe-codex-hook.cjs\" post-command",
84
+ "timeout": 20,
85
+ "statusMessage": "Recording AQE command outcome"
86
+ },
87
+ {
88
+ "type": "command",
89
+ "command": "node \"$(git rev-parse --show-toplevel)/.codex/hooks/ruflo-codex-hook.cjs\" post-command",
90
+ "timeout": 15,
91
+ "statusMessage": "Recording command outcome in ruflo"
92
+ }
93
+ ]
94
+ },
95
+ {
96
+ "matcher": "^(apply_patch|Edit|Write)$",
97
+ "hooks": [
98
+ {
99
+ "type": "command",
100
+ "command": "node \"$(git rev-parse --show-toplevel)/.codex/hooks/aqe-codex-hook.cjs\" post-edit",
101
+ "timeout": 20,
102
+ "statusMessage": "Recording AQE edit outcome"
103
+ },
104
+ {
105
+ "type": "command",
106
+ "command": "node \"$(git rev-parse --show-toplevel)/.codex/hooks/ruflo-codex-hook.cjs\" post-edit",
107
+ "timeout": 15,
108
+ "statusMessage": "Recording edit outcome in ruflo"
109
+ }
110
+ ]
111
+ }
112
+ ],
113
+ "PreCompact": [
114
+ {
115
+ "matcher": "manual|auto",
116
+ "hooks": [
117
+ {
118
+ "type": "command",
119
+ "command": "node \"$(git rev-parse --show-toplevel)/.codex/hooks/ruflo-codex-hook.cjs\" session-end",
120
+ "timeout": 15,
121
+ "statusMessage": "Checkpointing ruflo state before compaction"
122
+ }
123
+ ]
124
+ }
125
+ ],
126
+ "SubagentStart": [
127
+ {
128
+ "hooks": [
129
+ {
130
+ "type": "command",
131
+ "command": "node \"$(git rev-parse --show-toplevel)/.codex/hooks/ruflo-codex-hook.cjs\" pre-task",
132
+ "timeout": 15,
133
+ "statusMessage": "Registering subagent task with ruflo"
134
+ }
135
+ ]
136
+ }
137
+ ],
138
+ "SubagentStop": [
139
+ {
140
+ "hooks": [
141
+ {
142
+ "type": "command",
143
+ "command": "node \"$(git rev-parse --show-toplevel)/.codex/hooks/ruflo-codex-hook.cjs\" post-task",
144
+ "timeout": 15,
145
+ "statusMessage": "Recording subagent outcome in ruflo"
146
+ }
147
+ ]
148
+ }
149
+ ],
150
+ "Stop": [
151
+ {
152
+ "hooks": [
153
+ {
154
+ "type": "command",
155
+ "command": "node \"$(git rev-parse --show-toplevel)/.codex/hooks/aqe-codex-hook.cjs\" session-end",
156
+ "timeout": 20,
157
+ "statusMessage": "Saving AQE session state"
158
+ },
159
+ {
160
+ "type": "command",
161
+ "command": "node \"$(git rev-parse --show-toplevel)/.codex/hooks/ruflo-codex-hook.cjs\" session-end",
162
+ "timeout": 15,
163
+ "statusMessage": "Saving ruflo session state"
164
+ }
165
+ ]
166
+ }
167
+ ]
168
+ }
169
+ }
package/CHANGELOG.md CHANGED
@@ -5,6 +5,129 @@ All notable changes to the Agentic QE project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [3.13.2] - 2026-07-24
9
+
10
+ Stops short-lived learning hooks from repeatedly producing
11
+ `brain.rvf.corrupt-*` and `patterns.rvf.corrupt-*` files. A busy project could
12
+ accumulate thousands of these derived-cache artifacts while vector search
13
+ repeatedly fell back to SQLite.
14
+
15
+ ### Fixed
16
+
17
+ - **Hook processes now close every RVF store before exiting** ([#574]).
18
+ Every `aqe hooks` invocation opened the shared pattern index and brain
19
+ dual-writer, but the CLI had no teardown step. The native stores therefore
20
+ exited without a clean close; the next hook found an unusable 162-byte store,
21
+ quarantined it, rebuilt it, and repeated the cycle. Hook commands now dispose
22
+ the reasoning bank and reset both RVF singletons after every action.
23
+ - **A duplicate opener can no longer break its own process's live RVF lock**
24
+ ([#574]). Recovery protected locks owned by other live processes but treated
25
+ a lock containing the current PID as stale. Another initialization path in
26
+ that process could then remove the lock and replace a store still in use.
27
+ Every live owner is now protected; duplicate paths degrade safely to SQLite
28
+ instead of moving a live store.
29
+
30
+ ### Changed
31
+
32
+ - **RVF hook cleanup is idempotent and fail-open.** Partial initialization,
33
+ optional native bindings, or an individual close failure cannot block the
34
+ host editor or command. True stale locks remain recoverable after their owner
35
+ exits.
36
+
37
+ ## [3.13.1] - 2026-07-23
38
+
39
+ Fixes four reported issues, three of which come down to the same thing: a tool
40
+ told you something it had not actually established. Coverage analysis reported
41
+ numbers it never measured, test generation claimed AI enhancement it never
42
+ performed, and a security advisory reached users through a dependency they never
43
+ asked for.
44
+
45
+ ### Fixed
46
+
47
+ - **Coverage analysis no longer reports numbers it did not measure** ([#569]).
48
+ On a Rust crate, `coverage_analyze_sublinear` returned `78.3%` lines,
49
+ `100%` branches and `0%` functions — none of it measured. It flagged
50
+ `#[cfg(test)]` blocks as untested production code, cited line numbers past the
51
+ end of the file, and analysed test files as coverage targets, all with a
52
+ confidence score attached. Rust crates are now measured with `cargo llvm-cov`
53
+ when it is available. When nothing can be measured, the result says so
54
+ (`estimated: true`, `measured: false`) instead of presenting a guess as data.
55
+ - **`test_generate_enhanced` actually calls your LLM now** ([#567]). The tool
56
+ advertised AI-powered generation but the LLM router never reached the code path
57
+ it runs, so it always returned the same generic scaffold regardless of how you
58
+ configured your provider. It now routes through your configured model, and the
59
+ result reports `llmEnhanced` so a silent fall back to templates is visible
60
+ rather than something you infer from a suspiciously fast response. A broken
61
+ provider (bad key, timeout) reports the fallback honestly instead of claiming
62
+ enhancement it did not perform.
63
+ - **A HIGH-severity advisory no longer reaches consumers** ([#565]).
64
+ `@huggingface/transformers` was declared an *optional* peer dependency, but npm
65
+ installs optional peers — so every install pulled in
66
+ `onnxruntime-node -> adm-zip` and its advisory. It is now an explicit opt-in:
67
+ install it yourself only if you want local in-process embeddings. Everyone
68
+ using an embedding endpoint (the default) no longer carries the advisory.
69
+ - **`codex` is selectable through the LLM router.** The provider existed and
70
+ worked, but was missing from the router's provider list, so it could never
71
+ actually be chosen.
72
+ - **Fixes now take effect immediately after an upgrade.** Operation results were
73
+ cached per project and keyed without the build version, so an upgraded install
74
+ could keep replaying the previous version's answers for up to an hour — making
75
+ a fix look like it had not worked. Set `AQE_SESSION_CACHE_SALT` to force a cold
76
+ cache at any time.
77
+
78
+ ### Added
79
+
80
+ - **Per-agent LLM routing you can configure on disk** ([#568]). Route individual
81
+ agent types through different providers via an `agentOverrides` map in
82
+ `.agentic-qe/llm-config.json` — a strong reasoning model for security agents, a
83
+ free local model for mechanical ones — without changing your global default:
84
+
85
+ ```jsonc
86
+ {
87
+ "defaultProvider": "ollama",
88
+ "agentOverrides": {
89
+ "qe-security-scanner": { "provider": "claude-code", "model": "opus" },
90
+ "qe-mutation-tester": { "provider": "ollama" }
91
+ }
92
+ }
93
+ ```
94
+
95
+ Entries are partial (unset fields keep their defaults), invalid entries are
96
+ dropped with an explanation rather than failing startup, and credentials are
97
+ never persisted here. See `docs/guides/llm-provider-routing.md`.
98
+ - **`AQE_COVERAGE_NO_EXEC=1` — opt out of running build tooling.** Measuring
99
+ coverage means running your project's tests, which executes code from the
100
+ analysed repository (`cargo` also runs `build.rs`; `npx` runs lifecycle
101
+ scripts). That is what you want for your own code, but is worth being able to
102
+ turn off when pointing the tool at something you do not trust. Existing
103
+ coverage reports are still read; everything else degrades to a labelled
104
+ estimate.
105
+ - **QE skills and lifecycle hooks for the Codex CLI.** `aqe init` now installs
106
+ three Codex-native skills — `aqe-test-change`, `aqe-review-quality`,
107
+ `aqe-plan-quality` — under `.agents/skills/`, plus Codex lifecycle hooks in
108
+ `.codex/`, and an `AGENTS.md` describing the repository's conventions. If you
109
+ drive this project with Codex rather than Claude Code, the QE workflows are now
110
+ available there natively instead of Claude-only.
111
+ - **Security scans state how deeply they looked.** Full SAST is implemented for
112
+ JS/TS only; other languages get cross-language pattern matching. Results now
113
+ carry `analysisDepth`, so a zero-finding scan reads as "nothing matched a
114
+ generic pattern" rather than "no vulnerabilities".
115
+
116
+ ### Changed
117
+
118
+ - **BREAKING (result shape):** `coverage_analyze_sublinear` now returns
119
+ `null` — not `0` — for any coverage metric that was not collected.
120
+ `lineCoverage`, `statementCoverage`, `branchCoverage` and `functionCoverage`
121
+ are all `number | null`. `0` now means a measured zero; `null` means unknown.
122
+ Callers doing arithmetic or comparisons on these fields should handle `null`;
123
+ check the new `measured` / `estimated` flags to tell the cases apart. This is
124
+ deliberately a visible break rather than a silent wrong number.
125
+
126
+ [#565]: https://github.com/proffesor-for-testing/agentic-qe/issues/565
127
+ [#567]: https://github.com/proffesor-for-testing/agentic-qe/issues/567
128
+ [#568]: https://github.com/proffesor-for-testing/agentic-qe/issues/568
129
+ [#569]: https://github.com/proffesor-for-testing/agentic-qe/issues/569
130
+
8
131
  ## [3.13.0] - 2026-07-18
9
132
 
10
133
  Introduces **QE-Court** — an adversarial review court where a change is
@@ -940,7 +940,7 @@
940
940
  },
941
941
  "metadata": {
942
942
  "generatedBy": "Agentic QE Fleet",
943
- "fleetVersion": "3.13.0",
943
+ "fleetVersion": "3.13.2",
944
944
  "manifestVersion": "1.4.0",
945
945
  "lastUpdated": "2026-04-13T00:00:00.000Z",
946
946
  "contributors": [