agentic-qe 3.13.12 → 3.14.1

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 (502) hide show
  1. package/.claude/helpers/brain-checkpoint.cjs +2 -1
  2. package/.claude/helpers/validate-v3-config.sh +6 -5
  3. package/.claude/hooks/aqe-hook.cjs +14 -14
  4. package/.claude/skills/qe-browser/evals/qe-browser.yaml +30 -41
  5. package/.claude/skills/qe-browser/fixtures/serve-skills.js +37 -0
  6. package/.claude/skills/qe-browser/scripts/lib/vibium.js +1 -1
  7. package/.claude/skills/qe-browser/scripts/smoke-test.sh +56 -25
  8. package/.claude/skills/qe-browser/scripts/visual-diff.js +24 -15
  9. package/.claude/skills/qe-court/SKILL.md +4 -4
  10. package/.claude/skills/qe-court/config-schema.json +38 -0
  11. package/.claude/skills/qe-court/evals/qe-court.yaml +8 -8
  12. package/.claude/skills/skills-manifest.json +1 -1
  13. package/CHANGELOG.md +130 -0
  14. package/assets/skills/qe-browser/evals/qe-browser.yaml +30 -41
  15. package/assets/skills/qe-browser/fixtures/serve-skills.js +37 -0
  16. package/assets/skills/qe-browser/scripts/lib/vibium.js +1 -1
  17. package/assets/skills/qe-browser/scripts/smoke-test.sh +56 -25
  18. package/assets/skills/qe-browser/scripts/visual-diff.js +24 -15
  19. package/assets/skills/qe-court/SKILL.md +4 -4
  20. package/assets/skills/qe-court/config-schema.json +38 -0
  21. package/assets/skills/qe-court/evals/qe-court.yaml +8 -8
  22. package/assets/skills/skills-manifest.json +1 -1
  23. package/dist/cli/brain-commands.d.ts +1 -0
  24. package/dist/cli/brain-commands.js +1 -0
  25. package/dist/cli/bundle.js +7 -7
  26. package/dist/cli/chunks/adapter-I2N7PEKG.js +2 -0
  27. package/dist/cli/chunks/{agent-booster-wasm-7I7LZFNC.js → agent-booster-wasm-OY5Y2CUM.js} +2 -2
  28. package/dist/cli/chunks/{agent-handler-QZZT52BH.js → agent-handler-TUOH55LD.js} +2 -2
  29. package/dist/cli/chunks/{agent-memory-branch-MLQS5Y26.js → agent-memory-branch-XM3IYKT3.js} +2 -2
  30. package/dist/cli/chunks/aqe-learning-engine-U4ALUH6A.js +2 -0
  31. package/dist/cli/chunks/{arena-WRIY37EJ.js → arena-DOCLIEBL.js} +4 -4
  32. package/dist/cli/chunks/{arena-IM4CP6LP.js → arena-UMFJZKG7.js} +2 -2
  33. package/dist/cli/chunks/{audit-BSAQ4EFN.js → audit-KZLU5VLW.js} +3 -3
  34. package/dist/cli/chunks/base-RCYIBNHM.js +2 -0
  35. package/dist/cli/chunks/{better-sqlite3-X2XZUXWZ.js → better-sqlite3-MIEZBNUI.js} +2 -2
  36. package/dist/cli/chunks/brain-handler-6PZN46B7.js +90 -0
  37. package/dist/cli/chunks/{branch-enumerator-NI4Q7DSJ.js → branch-enumerator-XCETHA4F.js} +2 -2
  38. package/dist/cli/chunks/{browser-PXBLORUZ.js → browser-UEXISDCJ.js} +2 -2
  39. package/dist/cli/chunks/browser-workflow-L6TDB5O5.js +2 -0
  40. package/dist/cli/chunks/{chunk-5PNQNBDZ.js → chunk-3AYNHOWS.js} +1 -1
  41. package/dist/cli/chunks/{chunk-NL2SCAGJ.js → chunk-3BRR2FLH.js} +3 -3
  42. package/dist/cli/chunks/chunk-3FFMUB3B.js +14 -0
  43. package/dist/cli/chunks/{chunk-GJJWXRAD.js → chunk-3JMSXOU4.js} +2 -2
  44. package/dist/cli/chunks/{chunk-MB2KLJ6Q.js → chunk-3TMUCJNJ.js} +1 -1
  45. package/dist/cli/chunks/{chunk-JVFZAJ5N.js → chunk-3WSH4HD2.js} +2 -2
  46. package/dist/cli/chunks/{chunk-SCQNISGS.js → chunk-3XRXUVUI.js} +1 -1
  47. package/dist/cli/chunks/{chunk-Z56BBX77.js → chunk-45S5553E.js} +2 -2
  48. package/dist/cli/chunks/{chunk-6BSZHNOC.js → chunk-4MT62HKK.js} +1 -1
  49. package/dist/cli/chunks/{chunk-PVINNJ4P.js → chunk-4ZLFUO4I.js} +2 -2
  50. package/dist/cli/chunks/{chunk-MYVKTG55.js → chunk-5F5V4QYU.js} +3 -3
  51. package/dist/cli/chunks/{chunk-2W3D5A4R.js → chunk-5KP62DC3.js} +2 -2
  52. package/dist/cli/chunks/{chunk-BODFJ3DC.js → chunk-5NSSJUWW.js} +2 -2
  53. package/dist/cli/chunks/{chunk-KXSUDN46.js → chunk-5T6PAUZD.js} +1 -1
  54. package/dist/cli/chunks/{chunk-7ZVO7I4Q.js → chunk-5TYGSQOL.js} +1 -1
  55. package/dist/cli/chunks/{chunk-M7CPJW53.js → chunk-5Y2QFSVZ.js} +2 -2
  56. package/dist/cli/chunks/{chunk-VQD2ELNL.js → chunk-6B77GPWL.js} +2 -2
  57. package/dist/cli/chunks/{chunk-GJUGG6UR.js → chunk-6DDMHZWH.js} +2 -2
  58. package/dist/cli/chunks/{chunk-IPZEBALY.js → chunk-6HMNN2Y2.js} +54 -54
  59. package/dist/cli/chunks/{chunk-M73KM3AZ.js → chunk-6YIMLUH6.js} +160 -26
  60. package/dist/cli/chunks/{chunk-UBOGJHWC.js → chunk-6Z6Y3YBX.js} +1 -1
  61. package/dist/cli/chunks/{chunk-M3354CE4.js → chunk-75SC3GEX.js} +2 -2
  62. package/dist/cli/chunks/{chunk-TJVTV3HP.js → chunk-7AF55H2D.js} +2 -2
  63. package/dist/cli/chunks/{chunk-3XVZHJQT.js → chunk-7AYTM426.js} +1 -1
  64. package/dist/cli/chunks/{chunk-U5G6OC2C.js → chunk-7GF6IRSU.js} +2 -2
  65. package/dist/cli/chunks/{chunk-LRO74LPA.js → chunk-7XL2D56F.js} +4 -4
  66. package/dist/cli/chunks/{chunk-MGKH4LCM.js → chunk-A6RB34Y6.js} +1 -1
  67. package/dist/cli/chunks/{chunk-X2SZCVDA.js → chunk-AESYVAPH.js} +8 -7
  68. package/dist/cli/chunks/{chunk-3ASVQILY.js → chunk-AZUC7E5S.js} +2 -2
  69. package/dist/cli/chunks/{chunk-R7LGVJMZ.js → chunk-B6Y6AF4M.js} +2 -2
  70. package/dist/cli/chunks/chunk-C3XNFIOM.js +2 -0
  71. package/dist/cli/chunks/{chunk-ZSAGRDXA.js → chunk-CBWF42ET.js} +2 -2
  72. package/dist/cli/chunks/{chunk-VNODKACB.js → chunk-CCZZZBAO.js} +2 -2
  73. package/dist/cli/chunks/{chunk-5E76HULA.js → chunk-CGDW47WP.js} +2 -2
  74. package/dist/cli/chunks/chunk-CGZ7LTUK.js +2 -0
  75. package/dist/cli/chunks/{chunk-6KI6LAAZ.js → chunk-D6RCRTTR.js} +2 -2
  76. package/dist/cli/chunks/{chunk-TB2N3CAK.js → chunk-DFXQLHQM.js} +2 -2
  77. package/dist/cli/chunks/chunk-DKSLJZVA.js +2 -0
  78. package/dist/cli/chunks/{chunk-JTYCOFTD.js → chunk-DKUKGBJE.js} +1 -1
  79. package/dist/cli/chunks/{chunk-AN5CGTTJ.js → chunk-DKXSJDII.js} +2 -2
  80. package/dist/cli/chunks/chunk-EEJP3WTQ.js +4 -0
  81. package/dist/cli/chunks/{chunk-ZMYV4R32.js → chunk-EHW62JL2.js} +1 -1
  82. package/dist/cli/chunks/{chunk-WYFAPA2G.js → chunk-EPBWFTHH.js} +2 -2
  83. package/dist/cli/chunks/{chunk-P6EFKHNI.js → chunk-ERTGGFXZ.js} +2 -2
  84. package/dist/cli/chunks/{chunk-G45AOQDZ.js → chunk-F7TRO2OM.js} +1 -1
  85. package/dist/cli/chunks/{chunk-XT473WPO.js → chunk-FFRKTZYP.js} +2 -2
  86. package/dist/cli/chunks/{chunk-5VSS2RBD.js → chunk-FH7SCX2I.js} +2 -2
  87. package/dist/cli/chunks/{chunk-44NPKZGI.js → chunk-FHBGALBG.js} +2 -2
  88. package/dist/cli/chunks/{chunk-NTALX2YC.js → chunk-FOAFRC2W.js} +2 -2
  89. package/dist/cli/chunks/{chunk-7LATB5IR.js → chunk-FPBQ7BXU.js} +2 -2
  90. package/dist/cli/chunks/{chunk-AKUDUB3O.js → chunk-FRRRDCXY.js} +2 -2
  91. package/dist/cli/chunks/{chunk-NG6A7LCG.js → chunk-FZ47ZCRL.js} +1 -1
  92. package/dist/cli/chunks/{chunk-VD53LBF7.js → chunk-GH3NJOTC.js} +3 -3
  93. package/dist/cli/chunks/{chunk-NDRZZSD5.js → chunk-GO66DCIZ.js} +2 -2
  94. package/dist/cli/chunks/{chunk-Z6DSYLAG.js → chunk-GRVR3Y6I.js} +1 -1
  95. package/dist/cli/chunks/chunk-GYTWUOKU.js +65 -0
  96. package/dist/cli/chunks/{chunk-6KKVMPPR.js → chunk-H2DX36SC.js} +2 -2
  97. package/dist/cli/chunks/{chunk-NJ3QXJ54.js → chunk-H5LSXVWY.js} +2 -2
  98. package/dist/cli/chunks/{chunk-HQWFZQMJ.js → chunk-HBAQVJDP.js} +2 -2
  99. package/dist/cli/chunks/{chunk-33YZGOT6.js → chunk-HCCILQGN.js} +2 -2
  100. package/dist/cli/chunks/{chunk-KRZYWVS3.js → chunk-HJD52N32.js} +2 -2
  101. package/dist/cli/chunks/{chunk-IPDM3CAK.js → chunk-HKU5PPS7.js} +1 -1
  102. package/dist/cli/chunks/{chunk-7RVLVIAI.js → chunk-HPQU6XZH.js} +1 -1
  103. package/dist/cli/chunks/{chunk-TWUWLSGQ.js → chunk-HRUQWABO.js} +10 -10
  104. package/dist/cli/chunks/{chunk-HAJG44BD.js → chunk-IGRTQ6VT.js} +2 -2
  105. package/dist/cli/chunks/{chunk-WXU7FAEB.js → chunk-IIBXGHZT.js} +2 -2
  106. package/dist/cli/chunks/{chunk-QG5L2JM5.js → chunk-IYB3GRXF.js} +10 -10
  107. package/dist/cli/chunks/{chunk-NNLZAVFH.js → chunk-IYIMLLUV.js} +1 -1
  108. package/dist/cli/chunks/{chunk-SXFSJJZF.js → chunk-J2VF7ZO7.js} +2 -2
  109. package/dist/cli/chunks/{chunk-4FVOJBEU.js → chunk-J33LKXVH.js} +1 -1
  110. package/dist/cli/chunks/{chunk-IOJ34SXJ.js → chunk-J7VAD4RG.js} +2 -2
  111. package/dist/cli/chunks/{chunk-VQCLSX7T.js → chunk-JJ4GUO4K.js} +1 -1
  112. package/dist/cli/chunks/{chunk-QM4Z7TQH.js → chunk-JMULRLD4.js} +1 -1
  113. package/dist/cli/chunks/{chunk-LXVT6JXO.js → chunk-JNSTKE3K.js} +2 -2
  114. package/dist/cli/chunks/{chunk-SOS37ECY.js → chunk-JZUWPDVS.js} +1 -1
  115. package/dist/cli/chunks/chunk-KHUO4NCW.js +11 -0
  116. package/dist/cli/chunks/chunk-KXMW7XTJ.js +2 -0
  117. package/dist/cli/chunks/{chunk-4AITMWFZ.js → chunk-KXTN3FR4.js} +2 -2
  118. package/dist/cli/chunks/{chunk-4Z4X2ND4.js → chunk-L4WATX6B.js} +2 -2
  119. package/dist/cli/chunks/{chunk-GMLRIZ4E.js → chunk-L66BWYQH.js} +1 -1
  120. package/dist/cli/chunks/{chunk-52VGZJSD.js → chunk-LJ63HPPN.js} +1 -1
  121. package/dist/cli/chunks/{chunk-WE3VKDMK.js → chunk-LMPK63PO.js} +3 -3
  122. package/dist/cli/chunks/{chunk-S6WHYOWV.js → chunk-LQDFWLKK.js} +27 -25
  123. package/dist/cli/chunks/{chunk-EG73WYAW.js → chunk-LSXQPMPI.js} +2 -2
  124. package/dist/cli/chunks/{chunk-NJ4YVAG7.js → chunk-MDLLEUFN.js} +3 -3
  125. package/dist/cli/chunks/{chunk-YQOQVSYU.js → chunk-MFAN5W27.js} +1 -1
  126. package/dist/cli/chunks/{chunk-A5RWLPVT.js → chunk-MZ2PJUN6.js} +2 -2
  127. package/dist/cli/chunks/{chunk-HRTSYT4N.js → chunk-N22LMACN.js} +2 -2
  128. package/dist/cli/chunks/{chunk-L3GBNX7B.js → chunk-NAJCQJSK.js} +2 -2
  129. package/dist/cli/chunks/{chunk-XM5I7J5S.js → chunk-ND6JBUVH.js} +2 -2
  130. package/dist/cli/chunks/{chunk-YL2GOJF6.js → chunk-NEEZ6M4W.js} +2 -2
  131. package/dist/cli/chunks/{chunk-DGFINXUE.js → chunk-NNJ63W77.js} +1 -1
  132. package/dist/cli/chunks/{chunk-G6FJHDUG.js → chunk-O7KF3GBV.js} +1 -1
  133. package/dist/cli/chunks/{chunk-RP2BRRLX.js → chunk-OBKMLOHU.js} +2 -2
  134. package/dist/cli/chunks/{chunk-AOOCV56W.js → chunk-OBLHI4HA.js} +1 -1
  135. package/dist/cli/chunks/{chunk-OZ53BIY5.js → chunk-ODNLKYOM.js} +1 -1
  136. package/dist/cli/chunks/{chunk-VBHA4SDU.js → chunk-PMREFRPP.js} +2 -2
  137. package/dist/cli/chunks/{chunk-ASWWBNX2.js → chunk-PMUF7WU6.js} +2 -2
  138. package/dist/cli/chunks/{chunk-I5SXLV7D.js → chunk-PS5NIMWJ.js} +2 -2
  139. package/dist/cli/chunks/chunk-PS6Y662P.js +13 -0
  140. package/dist/cli/chunks/{chunk-N4OQ4D4V.js → chunk-PYAH4K2U.js} +2 -2
  141. package/dist/cli/chunks/{chunk-H3GAR4SV.js → chunk-PZZX57ZA.js} +2 -2
  142. package/dist/cli/chunks/chunk-QAE4BOIV.js +2 -0
  143. package/dist/cli/chunks/{chunk-7A4WTRWI.js → chunk-QIY43XQJ.js} +1 -1
  144. package/dist/cli/chunks/{chunk-MLXLGBQZ.js → chunk-QM6EJHP5.js} +1 -1
  145. package/dist/cli/chunks/{chunk-4ANJV6I4.js → chunk-QMTBWHGR.js} +3 -3
  146. package/dist/cli/chunks/{chunk-IT5QIUUA.js → chunk-RCHDSUVU.js} +2 -2
  147. package/dist/cli/chunks/{chunk-AYH3DMW2.js → chunk-RUEHSOE6.js} +1 -1
  148. package/dist/cli/chunks/{chunk-DCVFHVPR.js → chunk-RVCMZUSJ.js} +2 -2
  149. package/dist/cli/chunks/{chunk-2JAC57JE.js → chunk-RXHI6CKK.js} +1 -1
  150. package/dist/cli/chunks/{chunk-QXO35J6F.js → chunk-RXPHQ4ZE.js} +2 -2
  151. package/dist/cli/chunks/{chunk-FI6J3UHJ.js → chunk-RYHCYTFE.js} +1 -1
  152. package/dist/cli/chunks/{chunk-DFLASG3B.js → chunk-S4WIAKPL.js} +1 -1
  153. package/dist/cli/chunks/{chunk-2VY7FL6A.js → chunk-S53ZUAVI.js} +2 -2
  154. package/dist/cli/chunks/{chunk-4M7YZ2X7.js → chunk-SEKOMKNG.js} +1 -1
  155. package/dist/cli/chunks/{chunk-UC4EIULB.js → chunk-SZRDEPUY.js} +19 -19
  156. package/dist/cli/chunks/chunk-T7XYQX5G.js +24 -0
  157. package/dist/cli/chunks/{chunk-OG3DBHIV.js → chunk-TF33GKWA.js} +2 -2
  158. package/dist/cli/chunks/{chunk-2VTX4SYW.js → chunk-TGFJUL6M.js} +2 -2
  159. package/dist/cli/chunks/{chunk-4THFPRFM.js → chunk-TLD727EF.js} +2 -2
  160. package/dist/cli/chunks/{chunk-7PCIN7UN.js → chunk-TQ2JZVZ3.js} +2 -2
  161. package/dist/cli/chunks/{chunk-UWZYXI3R.js → chunk-TT7DF2GX.js} +2 -2
  162. package/dist/cli/chunks/{chunk-X3JNFQW2.js → chunk-UCJEAK7D.js} +2 -2
  163. package/dist/cli/chunks/{chunk-AM42ROKZ.js → chunk-UN7EHLRV.js} +1 -1
  164. package/dist/cli/chunks/{chunk-42AS3HPO.js → chunk-UUE5CBZQ.js} +2 -2
  165. package/dist/cli/chunks/{chunk-E67ZXRG6.js → chunk-UWRMPRY5.js} +1 -1
  166. package/dist/cli/chunks/{chunk-4YFXF5AQ.js → chunk-VEWYUEVY.js} +5 -5
  167. package/dist/cli/chunks/{chunk-UJUK6T4V.js → chunk-VUXHJPUS.js} +2 -2
  168. package/dist/cli/chunks/{chunk-VA2ORJB5.js → chunk-VVP2ROXD.js} +2 -2
  169. package/dist/cli/chunks/{chunk-BZIPYXSW.js → chunk-WFJKLM6Z.js} +3 -3
  170. package/dist/cli/chunks/{chunk-MLFELTJX.js → chunk-X5G3UDWP.js} +2 -2
  171. package/dist/cli/chunks/{chunk-IQH2RDN3.js → chunk-Y63V33M6.js} +5 -5
  172. package/dist/cli/chunks/{chunk-XIKYUBIV.js → chunk-YXN47QOI.js} +2 -2
  173. package/dist/cli/chunks/{chunk-RP5VFZJO.js → chunk-Z5YU2TDS.js} +2 -2
  174. package/dist/cli/chunks/{chunk-KYJBJ56M.js → chunk-ZAHCVRR7.js} +2 -2
  175. package/dist/cli/chunks/{chunk-66OQ7AB3.js → chunk-ZC3HC6FO.js} +1 -1
  176. package/dist/cli/chunks/{ci-QAUD62WH.js → ci-Q2VX75PS.js} +2 -2
  177. package/dist/cli/chunks/{ci-output-TZDVTNE7.js → ci-output-MD5GTVR2.js} +2 -2
  178. package/dist/cli/chunks/{circuit-breaker-ZWPHJ7YJ.js → circuit-breaker-JMRLG2XI.js} +2 -2
  179. package/dist/cli/chunks/{claude-flow-setup-SCB4EURN.js → claude-flow-setup-IMXYALBU.js} +2 -2
  180. package/dist/cli/chunks/client-L4PIXCGV.js +2 -0
  181. package/dist/cli/chunks/{cline-installer-EHZLMLXF.js → cline-installer-HWFASEGE.js} +2 -2
  182. package/dist/cli/chunks/{code-3N6PBJMK.js → code-3V37TCAD.js} +2 -2
  183. package/dist/cli/chunks/{code-index-extractor-6DIKHNRI.js → code-index-extractor-5V54WGFL.js} +2 -2
  184. package/dist/cli/chunks/codex-installer-UCA5AVE6.js +14 -0
  185. package/dist/cli/chunks/{completions-5MKWWCCE.js → completions-2DMRCQU6.js} +2 -2
  186. package/dist/cli/chunks/{complexity-analyzer-TPM4IPEK.js → complexity-analyzer-MMQRXBTD.js} +2 -2
  187. package/dist/cli/chunks/{continuedev-installer-VXODKGVX.js → continuedev-installer-FAARXP3S.js} +2 -2
  188. package/dist/cli/chunks/{copilot-installer-PVD5O56P.js → copilot-installer-AKQALMB5.js} +2 -2
  189. package/dist/cli/chunks/core-handlers-KROSXP4V.js +2 -0
  190. package/dist/cli/chunks/{cost-tracker-JOMZEQF3.js → cost-tracker-AXWHDND5.js} +2 -2
  191. package/dist/cli/chunks/{coverage-HTXLEV3B.js → coverage-ZLSKKCG5.js} +3 -3
  192. package/dist/cli/chunks/cross-domain-router-WMTYBOON.js +2 -0
  193. package/dist/cli/chunks/{cursor-installer-SHKDTDDZ.js → cursor-installer-UALCQKVD.js} +2 -2
  194. package/dist/cli/chunks/{daemon-FCFEWVVJ.js → daemon-4LNOPJGN.js} +3 -3
  195. package/dist/cli/chunks/{daemon-PN4FEPLE.js → daemon-K3DFGCXC.js} +4 -4
  196. package/dist/cli/chunks/{dag-attention-scheduler-PLOHU5SR.js → dag-attention-scheduler-LCQ7MYKC.js} +2 -2
  197. package/dist/cli/chunks/{detect-F3H4ZEZY.js → detect-P7PEN3MZ.js} +2 -2
  198. package/dist/cli/chunks/{dist-node-5TC665N6.js → dist-node-I72BJC2D.js} +2 -2
  199. package/dist/cli/chunks/{domain-handler-ZIWVFXCU.js → domain-handler-LROF6KWN.js} +2 -2
  200. package/dist/cli/chunks/{domain-transfer-7Q5JYMYR.js → domain-transfer-M2ZSSTPV.js} +2 -2
  201. package/dist/cli/chunks/dream-AV63YQ2Y.js +2 -0
  202. package/dist/cli/chunks/embed-and-insert-pattern-MTBPUGO4.js +3 -0
  203. package/dist/cli/chunks/{eval-E2K2T75A.js → eval-O24ALB3W.js} +2 -2
  204. package/dist/cli/chunks/{experience-capture-middleware-Z5SE2O53.js → experience-capture-middleware-7JXEOGRE.js} +3 -3
  205. package/dist/cli/chunks/{fast-paths-3H52RSUK.js → fast-paths-4CFYJV4U.js} +2 -2
  206. package/dist/cli/chunks/{feature-flags-ONIKUZVK.js → feature-flags-CHPUA7IM.js} +2 -2
  207. package/dist/cli/chunks/{feature-flags-LUHSMHPS.js → feature-flags-E6PIM6ZB.js} +2 -2
  208. package/dist/cli/chunks/{file-discovery-FLYSYSS4.js → file-discovery-2ANIAUCP.js} +2 -2
  209. package/dist/cli/chunks/{fleet-6OJUAAKV.js → fleet-2MQ3OGCP.js} +3 -3
  210. package/dist/cli/chunks/{gnn-wrapper-PUL6B7KZ.js → gnn-wrapper-P7JW3622.js} +2 -2
  211. package/dist/cli/chunks/{heartbeat-handler-HGHHDUDY.js → heartbeat-handler-WWWZSA7V.js} +4 -4
  212. package/dist/cli/chunks/heartbeat-scheduler-5IZUGMC2.js +2 -0
  213. package/dist/cli/chunks/hnsw-adapter-NV2NNBJL.js +2 -0
  214. package/dist/cli/chunks/hnsw-index-GRJ3KA2O.js +2 -0
  215. package/dist/cli/chunks/{hnsw-legacy-bridge-NDZSNMYX.js → hnsw-legacy-bridge-W634ZOTV.js} +2 -2
  216. package/dist/cli/chunks/{hnswlib-node-PISLKSO2.js → hnswlib-node-SLZDLMKM.js} +2 -2
  217. package/dist/cli/chunks/{hooks-WYG54MRI.js → hooks-3BFAZGG7.js} +10 -10
  218. package/dist/cli/chunks/{hypergraph-engine-EDHKHZZ2.js → hypergraph-engine-XJSGXP2J.js} +2 -2
  219. package/dist/cli/chunks/{hypergraph-handler-OCHZAPPL.js → hypergraph-handler-RVUWZMOX.js} +3 -3
  220. package/dist/cli/chunks/impact-analyzer-YM4QUWVH.js +2 -0
  221. package/dist/cli/chunks/{init-handler-5TCJ672H.js → init-handler-FYOZNNNO.js} +9 -8
  222. package/dist/cli/chunks/init-wizard-YESXGIK6.js +2 -0
  223. package/dist/cli/chunks/kernel-VH5SKESU.js +2 -0
  224. package/dist/cli/chunks/{kilocode-installer-SWUQRCTZ.js → kilocode-installer-MAAKFVSB.js} +2 -2
  225. package/dist/cli/chunks/{kiro-installer-L22EBAM5.js → kiro-installer-GX3TLZC5.js} +2 -2
  226. package/dist/cli/chunks/knowledge-graph-F3NL4WJV.js +2 -0
  227. package/dist/cli/chunks/learning-T4QZ6C26.js +122 -0
  228. package/dist/cli/chunks/{llm-router-F2L4LFT2.js → llm-router-N2M4WXOC.js} +14 -14
  229. package/dist/cli/chunks/llm-router-service-HQYCJMPK.js +2 -0
  230. package/dist/cli/chunks/{load-A4ZF2KHC.js → load-6RU3G4P2.js} +2 -2
  231. package/dist/cli/chunks/load-test-GWRGKWMN.js +2 -0
  232. package/dist/cli/chunks/{mcp-T2Z46NNK.js → mcp-EFBO7BAU.js} +2 -2
  233. package/dist/cli/chunks/{memory-PUC3J6XC.js → memory-AXU2M3DN.js} +5 -5
  234. package/dist/cli/chunks/memory-backend-7A2PFKPV.js +2 -0
  235. package/dist/cli/chunks/memory-handlers-65CXN76C.js +2 -0
  236. package/dist/cli/chunks/{multi-model-executor-U5L4FI4O.js → multi-model-executor-W7AFGVNH.js} +2 -2
  237. package/dist/cli/chunks/{opencode-installer-UWI6KHYH.js → opencode-installer-KJE2RLCH.js} +2 -2
  238. package/dist/cli/chunks/{orchestrator-3BEI7R5D.js → orchestrator-CL6MLGVU.js} +22 -24
  239. package/dist/cli/chunks/pattern-null-store-K2WPRYCP.js +2 -0
  240. package/dist/cli/chunks/{pattern-usage-recorder-EGWUI5LU.js → pattern-usage-recorder-7SNSJ7K2.js} +2 -2
  241. package/dist/cli/chunks/{pipeline-JG6M4RHD.js → pipeline-3UU6ON3F.js} +2 -2
  242. package/dist/cli/chunks/platform-SNMPIDIT.js +2 -0
  243. package/dist/cli/chunks/{plugin-EEGN3PMK.js → plugin-65IIUUCU.js} +2 -2
  244. package/dist/cli/chunks/{prime-radiant-advanced-wasm-7KZAINFT.js → prime-radiant-advanced-wasm-WWWJRLRP.js} +2 -2
  245. package/dist/cli/chunks/protocol-executor-TJDLEHND.js +2 -0
  246. package/dist/cli/chunks/{protocol-handler-UCEHYK2R.js → protocol-handler-SEBHCLLJ.js} +2 -2
  247. package/dist/cli/chunks/{prove-JSNG75VD.js → prove-N4X7CCJ4.js} +2 -2
  248. package/dist/cli/chunks/qe-reasoning-bank-CGRMFPDM.js +2 -0
  249. package/dist/cli/chunks/{quality-7SRM2HBM.js → quality-LBCJWXMU.js} +2 -2
  250. package/dist/cli/chunks/quality-gate-KZIQI7QT.js +7 -0
  251. package/dist/cli/chunks/queen-coordinator-FKP6QZAQ.js +2 -0
  252. package/dist/cli/chunks/real-embeddings-XCZFHFME.js +2 -0
  253. package/dist/cli/chunks/{roocode-installer-UYQK64BZ.js → roocode-installer-P3O6B7PT.js} +2 -2
  254. package/dist/cli/chunks/router-KZ5BISAM.js +2 -0
  255. package/dist/cli/chunks/routing-feedback-O4Y5TTR6.js +2 -0
  256. package/dist/cli/chunks/{routing-handler-PY3KPDTH.js → routing-handler-OXZ4DOV4.js} +2 -2
  257. package/dist/cli/chunks/{ruvector-commands-GCAOUTYS.js → ruvector-commands-PSY5IDSL.js} +2 -2
  258. package/dist/cli/chunks/rvf-dual-writer-NG3UF3D5.js +2 -0
  259. package/dist/cli/chunks/rvf-migration-adapter-PUHVTKQY.js +2 -0
  260. package/dist/cli/chunks/rvf-migration-coordinator-4SUT7GTJ.js +2 -0
  261. package/dist/cli/chunks/rvf-native-adapter-ODXFKZ6G.js +2 -0
  262. package/dist/cli/chunks/{rvf-store-integrity-HNDKOM4L.js → rvf-store-integrity-TCKC22FH.js} +2 -2
  263. package/dist/cli/chunks/safe-db-BUQDNH2R.js +2 -0
  264. package/dist/cli/chunks/schedule-ZXNDZNNB.js +2 -0
  265. package/dist/cli/chunks/scheduler-YUQQWWW3.js +2 -0
  266. package/dist/cli/chunks/{security-MQ2VB7PY.js → security-RQGUQGSI.js} +3 -3
  267. package/dist/cli/chunks/{shared-rvf-adapter-TAZEU6QK.js → shared-rvf-adapter-ZJFN52C2.js} +2 -2
  268. package/dist/cli/chunks/{shared-rvf-dual-writer-B7N6AOCY.js → shared-rvf-dual-writer-V2R37HWV.js} +2 -2
  269. package/dist/cli/chunks/sqlite-persistence-HVSX46C7.js +2 -0
  270. package/dist/cli/chunks/{status-handler-NZP7DFHE.js → status-handler-XEKWNVDR.js} +2 -2
  271. package/dist/cli/chunks/{structural-health-ALLUQ4X6.js → structural-health-QMIW6WUN.js} +2 -2
  272. package/dist/cli/chunks/{sync-WJJG5J6V.js → sync-GDYJ2ULT.js} +2 -2
  273. package/dist/cli/chunks/{sync-MM7OCUYD.js → sync-H5SXWXPP.js} +2 -2
  274. package/dist/cli/chunks/{task-handler-CAQUEEB4.js → task-handler-EPLKCQHY.js} +2 -2
  275. package/dist/cli/chunks/{task-handlers-25BJ7D3W.js → task-handlers-22NTLWTC.js} +3 -3
  276. package/dist/cli/chunks/{test-HW7GVGVN.js → test-WHJFRZ3F.js} +4 -4
  277. package/dist/cli/chunks/{test-scheduling-HTMFJMSP.js → test-scheduling-KZVFZOQN.js} +3 -3
  278. package/dist/cli/chunks/token-bootstrap-BW5WA6PY.js +2 -0
  279. package/dist/cli/chunks/{token-usage-RJZDMBDP.js → token-usage-4A4O57R6.js} +2 -2
  280. package/dist/cli/chunks/{transformers-3YFW3EUO.js → transformers-FYTBRV46.js} +2 -2
  281. package/dist/cli/chunks/{tree-sitter-wasm-parser-U3PQPIK7.js → tree-sitter-wasm-parser-TZIJPLF3.js} +2 -2
  282. package/dist/cli/chunks/{types-7Q762WDO.js → types-B2L6LKFA.js} +2 -2
  283. package/dist/cli/chunks/unified-memory-AHN4RVBP.js +2 -0
  284. package/dist/cli/chunks/unified-memory-hnsw-XB7JPF74.js +2 -0
  285. package/dist/cli/chunks/unified-persistence-53KWNFQJ.js +2 -0
  286. package/dist/cli/chunks/{upgrade-F7MKJWBQ.js → upgrade-O6U7EA7V.js} +2 -2
  287. package/dist/cli/chunks/{validate-B27AVRA6.js → validate-FHNZ5XL3.js} +2 -2
  288. package/dist/cli/chunks/{validate-swarm-GYZR3GNL.js → validate-swarm-YOLLUEHE.js} +2 -2
  289. package/dist/cli/chunks/{vibium-W4XQMPJP.js → vibium-UXRPEIXB.js} +2 -2
  290. package/dist/cli/chunks/visual-security-CRPYS7L7.js +2 -0
  291. package/dist/cli/chunks/{web-tree-sitter-I7CDCFJU.js → web-tree-sitter-JJ5UIYFD.js} +2 -2
  292. package/dist/cli/chunks/{windsurf-installer-UYLHFDHU.js → windsurf-installer-I4QMQPIL.js} +2 -2
  293. package/dist/cli/chunks/witness-chain-5WCR2CAS.js +2 -0
  294. package/dist/cli/chunks/{witness-chain-B66SYZKU.js → witness-chain-BIJ7WDGS.js} +2 -2
  295. package/dist/cli/chunks/{witness-key-manager-U4JPAHVW.js → witness-key-manager-3SMMLJLP.js} +2 -2
  296. package/dist/cli/chunks/{workflow-DYMO47FF.js → workflow-33PUXXJV.js} +4 -4
  297. package/dist/cli/chunks/workflow-orchestrator-RZWCLTT5.js +2 -0
  298. package/dist/cli/chunks/{wrappers-7S6DQTEA.js → wrappers-ASAU36VK.js} +2 -2
  299. package/dist/cli/commands/learning.js +44 -0
  300. package/dist/cli/commands/llm-router.js +27 -21
  301. package/dist/cli/commands/platform.d.ts +1 -0
  302. package/dist/cli/commands/platform.js +28 -6
  303. package/dist/cli/commands/quality-gate.js +25 -3
  304. package/dist/cli/handlers/brain-handler.js +2 -0
  305. package/dist/cli/handlers/init-handler.d.ts +5 -0
  306. package/dist/cli/handlers/init-handler.js +6 -0
  307. package/dist/cli/index.js +4 -1
  308. package/dist/context/compaction/index.d.ts +1 -0
  309. package/dist/context/compaction/index.js +3 -0
  310. package/dist/context/compaction/instruction-provenance.d.ts +20 -0
  311. package/dist/context/compaction/instruction-provenance.js +18 -0
  312. package/dist/context/compaction/tier2-session-summary.d.ts +8 -0
  313. package/dist/context/compaction/tier2-session-summary.js +20 -0
  314. package/dist/context/compaction/tier3-llm-compact.d.ts +4 -0
  315. package/dist/context/compaction/tier3-llm-compact.js +32 -4
  316. package/dist/contracts/verdicts.d.ts +625 -0
  317. package/dist/contracts/verdicts.js +202 -14
  318. package/dist/coordination/handlers/coverage-handlers.js +8 -1
  319. package/dist/domains/chaos-resilience/diagnosis/corpus.d.ts +5 -0
  320. package/dist/domains/chaos-resilience/diagnosis/corpus.js +141 -0
  321. package/dist/domains/chaos-resilience/diagnosis/detectors.d.ts +11 -0
  322. package/dist/domains/chaos-resilience/diagnosis/detectors.js +109 -0
  323. package/dist/domains/chaos-resilience/diagnosis/index.d.ts +5 -0
  324. package/dist/domains/chaos-resilience/diagnosis/index.js +5 -0
  325. package/dist/domains/chaos-resilience/diagnosis/scorer.d.ts +8 -0
  326. package/dist/domains/chaos-resilience/diagnosis/scorer.js +128 -0
  327. package/dist/domains/chaos-resilience/diagnosis/types.d.ts +171 -0
  328. package/dist/domains/chaos-resilience/diagnosis/types.js +3 -0
  329. package/dist/domains/chaos-resilience/index.d.ts +1 -0
  330. package/dist/domains/chaos-resilience/index.js +1 -0
  331. package/dist/domains/index.d.ts +1 -0
  332. package/dist/domains/index.js +1 -0
  333. package/dist/early-exit/early-exit-controller.d.ts +4 -2
  334. package/dist/early-exit/early-exit-controller.js +95 -7
  335. package/dist/early-exit/index.d.ts +1 -1
  336. package/dist/early-exit/speculative-executor.js +3 -0
  337. package/dist/early-exit/types.d.ts +51 -0
  338. package/dist/early-exit/types.js +3 -0
  339. package/dist/index.d.ts +4 -2
  340. package/dist/index.js +2 -1
  341. package/dist/init/browser-engine-installer.d.ts +11 -0
  342. package/dist/init/browser-engine-installer.js +35 -5
  343. package/dist/init/codex-installer.d.ts +11 -1
  344. package/dist/init/codex-installer.js +90 -24
  345. package/dist/init/init-wizard-hooks.js +11 -11
  346. package/dist/init/orchestrator.js +2 -0
  347. package/dist/init/phases/07-hooks.d.ts +3 -3
  348. package/dist/init/phases/07-hooks.js +19 -21
  349. package/dist/init/phases/09-assets.d.ts +4 -0
  350. package/dist/init/phases/09-assets.js +13 -10
  351. package/dist/init/phases/phase-interface.d.ts +2 -0
  352. package/dist/init/types.d.ts +4 -0
  353. package/dist/integrations/embeddings/base/EmbeddingGenerator.js +4 -2
  354. package/dist/integrations/ruvector/brain-exporter.d.ts +1 -1
  355. package/dist/integrations/ruvector/brain-exporter.js +15 -3
  356. package/dist/integrations/ruvector/brain-rvf-exporter.d.ts +4 -0
  357. package/dist/integrations/ruvector/brain-rvf-exporter.js +118 -37
  358. package/dist/integrations/ruvector/brain-search.d.ts +1 -1
  359. package/dist/integrations/ruvector/brain-search.js +1 -1
  360. package/dist/integrations/ruvector/brain-shared.d.ts +4 -2
  361. package/dist/integrations/ruvector/brain-shared.js +11 -4
  362. package/dist/integrations/ruvector/brain-table-ddl.d.ts +2 -2
  363. package/dist/integrations/ruvector/brain-table-ddl.js +20 -8
  364. package/dist/integrations/ruvector/cognitive-container.js +1 -1
  365. package/dist/integrations/ruvector/rvf-dual-writer.d.ts +4 -0
  366. package/dist/integrations/ruvector/rvf-dual-writer.js +57 -9
  367. package/dist/integrations/ruvector/rvf-store-integrity.js +1 -1
  368. package/dist/kernel/unified-memory-schemas.d.ts +4 -3
  369. package/dist/kernel/unified-memory-schemas.js +19 -9
  370. package/dist/kernel/unified-memory.d.ts +2 -0
  371. package/dist/kernel/unified-memory.js +19 -0
  372. package/dist/learning/embed-and-insert-pattern.js +6 -3
  373. package/dist/learning/embedding-space.d.ts +50 -0
  374. package/dist/learning/embedding-space.js +128 -0
  375. package/dist/learning/evidence-admission-store.d.ts +15 -0
  376. package/dist/learning/evidence-admission-store.js +68 -0
  377. package/dist/learning/index.d.ts +7 -0
  378. package/dist/learning/index.js +4 -0
  379. package/dist/learning/learning-evidence-admission.d.ts +44 -0
  380. package/dist/learning/learning-evidence-admission.js +97 -0
  381. package/dist/learning/pattern-mutation-error.d.ts +9 -0
  382. package/dist/learning/pattern-mutation-error.js +14 -0
  383. package/dist/learning/pattern-store.d.ts +5 -0
  384. package/dist/learning/pattern-store.js +60 -9
  385. package/dist/learning/qe-flywheel/coupled-anchor.d.ts +8 -0
  386. package/dist/learning/qe-flywheel/coupled-anchor.js +46 -3
  387. package/dist/learning/qe-reasoning-bank.js +28 -5
  388. package/dist/learning/real-embeddings.d.ts +3 -0
  389. package/dist/learning/real-embeddings.js +40 -3
  390. package/dist/learning/real-qe-reasoning-bank.js +7 -3
  391. package/dist/learning/rvf-pattern-migration.d.ts +2 -0
  392. package/dist/learning/rvf-pattern-migration.js +5 -3
  393. package/dist/learning/rvf-pattern-store.d.ts +3 -0
  394. package/dist/learning/rvf-pattern-store.js +44 -6
  395. package/dist/learning/sqlite-persistence.d.ts +7 -2
  396. package/dist/learning/sqlite-persistence.js +58 -21
  397. package/dist/learning/structural-retrieval/corpus.d.ts +5 -0
  398. package/dist/learning/structural-retrieval/corpus.js +97 -0
  399. package/dist/learning/structural-retrieval/evaluate.d.ts +7 -0
  400. package/dist/learning/structural-retrieval/evaluate.js +124 -0
  401. package/dist/learning/structural-retrieval/index.d.ts +6 -0
  402. package/dist/learning/structural-retrieval/index.js +4 -0
  403. package/dist/learning/structural-retrieval/receipt.d.ts +14 -0
  404. package/dist/learning/structural-retrieval/receipt.js +36 -0
  405. package/dist/learning/structural-retrieval/types.d.ts +83 -0
  406. package/dist/learning/structural-retrieval/types.js +2 -0
  407. package/dist/mcp/bundle.js +589 -433
  408. package/dist/mcp/handlers/memory-handlers.js +6 -2
  409. package/dist/mcp/services/session-resume.d.ts +15 -19
  410. package/dist/mcp/services/session-resume.js +204 -194
  411. package/dist/mcp/tools/quality-assessment/gate.d.ts +8 -5
  412. package/dist/mcp/tools/quality-assessment/gate.js +9 -4
  413. package/dist/migrations/20260830_add_learning_evidence_tables.d.ts +7 -0
  414. package/dist/migrations/20260830_add_learning_evidence_tables.js +173 -0
  415. package/dist/persistence/rvf-migration-adapter.d.ts +2 -0
  416. package/dist/persistence/rvf-migration-adapter.js +56 -12
  417. package/dist/shared/llm/llm-router-service.d.ts +8 -0
  418. package/dist/shared/llm/llm-router-service.js +21 -3
  419. package/dist/shared/sql-safety.js +4 -0
  420. package/dist/skills/qe-court/cli.d.ts +3 -0
  421. package/dist/skills/qe-court/cli.js +54 -0
  422. package/dist/validation/quality-gate-runner.d.ts +27 -4
  423. package/dist/validation/quality-gate-runner.js +33 -4
  424. package/dist/validation/verification-reach.d.ts +90 -0
  425. package/dist/validation/verification-reach.js +187 -0
  426. package/dist/verification/adversarial-verify/calibrate.d.ts +46 -2
  427. package/dist/verification/adversarial-verify/calibrate.js +104 -2
  428. package/dist/verification/adversarial-verify/index.d.ts +2 -2
  429. package/dist/verification/adversarial-verify/index.js +1 -1
  430. package/dist/verification/adversarial-verify/measurement-receipt.d.ts +13 -0
  431. package/dist/verification/adversarial-verify/measurement-receipt.js +136 -0
  432. package/dist/verification/adversarial-verify/synthesize.js +7 -10
  433. package/dist/verification/adversarial-verify/types.d.ts +35 -0
  434. package/dist/verification/adversarial-verify/verify.js +6 -1
  435. package/package.json +14 -6
  436. package/schemas/coverage-gap.schema.json +41 -0
  437. package/schemas/finding-verdict.schema.json +470 -0
  438. package/schemas/risk-decision.schema.json +41 -0
  439. package/dist/cli/chunks/adapter-FUV6LBJT.js +0 -2
  440. package/dist/cli/chunks/aqe-learning-engine-QNFNA3J4.js +0 -2
  441. package/dist/cli/chunks/base-37W2XIXC.js +0 -2
  442. package/dist/cli/chunks/brain-handler-TVTTWZGP.js +0 -89
  443. package/dist/cli/chunks/browser-workflow-PDIUEK7B.js +0 -2
  444. package/dist/cli/chunks/chunk-5PI75QYP.js +0 -4
  445. package/dist/cli/chunks/chunk-EDRPTLAX.js +0 -2
  446. package/dist/cli/chunks/chunk-GEQWCK4F.js +0 -2
  447. package/dist/cli/chunks/chunk-GQLJYTXN.js +0 -2
  448. package/dist/cli/chunks/chunk-NLZUGANH.js +0 -11
  449. package/dist/cli/chunks/chunk-O4BWESH5.js +0 -2
  450. package/dist/cli/chunks/chunk-PGFCKE4G.js +0 -12
  451. package/dist/cli/chunks/chunk-RACWX2ZX.js +0 -9
  452. package/dist/cli/chunks/chunk-SNC73DWF.js +0 -2
  453. package/dist/cli/chunks/chunk-TDVMILKO.js +0 -2
  454. package/dist/cli/chunks/chunk-TK5XLF3Z.js +0 -65
  455. package/dist/cli/chunks/chunk-UQ4UCHO7.js +0 -2
  456. package/dist/cli/chunks/chunk-VZGP77YU.js +0 -12
  457. package/dist/cli/chunks/chunk-WA6CSEOX.js +0 -2
  458. package/dist/cli/chunks/chunk-WYIXNHPF.js +0 -2
  459. package/dist/cli/chunks/client-4W3KWTAU.js +0 -2
  460. package/dist/cli/chunks/codex-installer-P7DPQMYL.js +0 -15
  461. package/dist/cli/chunks/core-handlers-BDU2XBLO.js +0 -2
  462. package/dist/cli/chunks/cross-domain-router-BPB6IHN4.js +0 -2
  463. package/dist/cli/chunks/dream-WFCZGFDY.js +0 -2
  464. package/dist/cli/chunks/embed-and-insert-pattern-VESJQSYD.js +0 -3
  465. package/dist/cli/chunks/heartbeat-scheduler-HWS4SHRM.js +0 -2
  466. package/dist/cli/chunks/hnsw-adapter-7QOBHKRB.js +0 -2
  467. package/dist/cli/chunks/hnsw-index-6WUKYJH7.js +0 -2
  468. package/dist/cli/chunks/hybrid-router-525JTRA5.js +0 -2
  469. package/dist/cli/chunks/impact-analyzer-GG6CJEOK.js +0 -2
  470. package/dist/cli/chunks/init-wizard-4VFAOK4Y.js +0 -2
  471. package/dist/cli/chunks/kernel-N3FQGOST.js +0 -2
  472. package/dist/cli/chunks/knowledge-graph-I5QIHB4G.js +0 -2
  473. package/dist/cli/chunks/learning-TQOGG3CR.js +0 -119
  474. package/dist/cli/chunks/llm-router-service-NCJZYJLG.js +0 -2
  475. package/dist/cli/chunks/load-test-DCJEYIXD.js +0 -2
  476. package/dist/cli/chunks/memory-backend-O6KO2KTX.js +0 -2
  477. package/dist/cli/chunks/memory-handlers-4Z43WEKD.js +0 -2
  478. package/dist/cli/chunks/pattern-null-store-5WIJKX2K.js +0 -2
  479. package/dist/cli/chunks/platform-F76G6RUI.js +0 -2
  480. package/dist/cli/chunks/protocol-executor-5TPNAZTB.js +0 -2
  481. package/dist/cli/chunks/provider-manager-3VMOZ6HV.js +0 -2
  482. package/dist/cli/chunks/qe-reasoning-bank-BATV4NTT.js +0 -2
  483. package/dist/cli/chunks/quality-gate-A5MPWHST.js +0 -7
  484. package/dist/cli/chunks/queen-coordinator-EIHGYBUO.js +0 -2
  485. package/dist/cli/chunks/real-embeddings-ZBF5EQOG.js +0 -2
  486. package/dist/cli/chunks/router-EMVGY4HU.js +0 -2
  487. package/dist/cli/chunks/routing-feedback-JUP4OFB2.js +0 -2
  488. package/dist/cli/chunks/rvf-dual-writer-BUNP4SKD.js +0 -2
  489. package/dist/cli/chunks/rvf-migration-adapter-VSOAPLMB.js +0 -2
  490. package/dist/cli/chunks/rvf-migration-coordinator-LSWEHAWX.js +0 -2
  491. package/dist/cli/chunks/rvf-native-adapter-LOC42TQ6.js +0 -2
  492. package/dist/cli/chunks/safe-db-WQ62IQKV.js +0 -2
  493. package/dist/cli/chunks/schedule-XJRP57TE.js +0 -2
  494. package/dist/cli/chunks/scheduler-EZH5SDIM.js +0 -2
  495. package/dist/cli/chunks/sqlite-persistence-HPEVCTIB.js +0 -2
  496. package/dist/cli/chunks/token-bootstrap-F2DCLWGW.js +0 -2
  497. package/dist/cli/chunks/unified-memory-ATILROKR.js +0 -2
  498. package/dist/cli/chunks/unified-memory-hnsw-XJXAX7DW.js +0 -2
  499. package/dist/cli/chunks/unified-persistence-3TN5PBWE.js +0 -2
  500. package/dist/cli/chunks/visual-security-VFWRBCNA.js +0 -2
  501. package/dist/cli/chunks/witness-chain-JC5LEXRV.js +0 -2
  502. package/dist/cli/chunks/workflow-orchestrator-TKQUF2KN.js +0 -2
@@ -3,8 +3,8 @@ version: 0.3.0
3
3
  status: active
4
4
  description: >
5
5
  Acceptance eval for the QE-Court adversarial review protocol (ADR-124).
6
- Command-eval suite: each case runs a real oracle from the referee suite
7
- (tests/unit/skills/qe-court/referee.test.ts) through the `aqe eval` CLI and
6
+ Command-eval suite: each case runs a real oracle through the published
7
+ `aqe-court-referee` executable and
8
8
  asserts it passes. Each oracle passes on correct referee logic and FAILS on a
9
9
  seeded regression, so a green run is genuine tier-3 evidence — not a self-report.
10
10
  The seeded-mutant is mirrored in fixtures/seeded-mutant-delivery/ (canSpend
@@ -16,7 +16,7 @@ test_cases:
16
16
  category: overturn
17
17
  priority: critical
18
18
  input:
19
- command: npx vitest run tests/unit/skills/qe-court/referee.test.ts -t "overturn_catches_mutant"
19
+ command: aqe-court-referee self-test overturn-catches-mutant
20
20
  expected:
21
21
  exit_code: 0
22
22
 
@@ -25,7 +25,7 @@ test_cases:
25
25
  category: overturn
26
26
  priority: critical
27
27
  input:
28
- command: npx vitest run tests/unit/skills/qe-court/referee.test.ts -t "overturn_disabled"
28
+ command: aqe-court-referee self-test overturn-disabled
29
29
  expected:
30
30
  exit_code: 0
31
31
 
@@ -34,7 +34,7 @@ test_cases:
34
34
  category: anti-collusion
35
35
  priority: critical
36
36
  input:
37
- command: npx vitest run tests/unit/skills/qe-court/referee.test.ts -t "writer_not_juror_enforced"
37
+ command: aqe-court-referee self-test writer-not-juror
38
38
  expected:
39
39
  exit_code: 0
40
40
 
@@ -43,7 +43,7 @@ test_cases:
43
43
  category: anti-collusion
44
44
  priority: high
45
45
  input:
46
- command: npx vitest run tests/unit/skills/qe-court/referee.test.ts -t "vendor_diversity_enforced"
46
+ command: aqe-court-referee self-test vendor-diversity
47
47
  expected:
48
48
  exit_code: 0
49
49
 
@@ -52,7 +52,7 @@ test_cases:
52
52
  category: doe-gate
53
53
  priority: high
54
54
  input:
55
- command: npx vitest run tests/unit/skills/qe-court/referee.test.ts -t "no_score_without_doe_gate"
55
+ command: aqe-court-referee self-test doe-score-gate
56
56
  expected:
57
57
  exit_code: 0
58
58
 
@@ -61,7 +61,7 @@ test_cases:
61
61
  category: verdict
62
62
  priority: high
63
63
  input:
64
- command: npx vitest run tests/unit/skills/qe-court/referee.test.ts -t "verdict_classes"
64
+ command: aqe-court-referee self-test verdict-classes
65
65
  expected:
66
66
  exit_code: 0
67
67
 
@@ -940,7 +940,7 @@
940
940
  },
941
941
  "metadata": {
942
942
  "generatedBy": "Agentic QE Fleet",
943
- "fleetVersion": "3.13.12",
943
+ "fleetVersion": "3.14.1",
944
944
  "manifestVersion": "1.4.0",
945
945
  "lastUpdated": "2026-04-13T00:00:00.000Z",
946
946
  "contributors": [
package/CHANGELOG.md CHANGED
@@ -5,6 +5,136 @@ 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.14.1] - 2026-09-07
9
+
10
+ This release moves AQE to maintained Node.js runtimes and strengthens the
11
+ evidence boundaries around runtime diagnosis, verification, session recovery,
12
+ and learned-pattern storage.
13
+
14
+ ### Added
15
+
16
+ - Added a reproducible runtime-fault diagnosis benchmark covering clean/fault
17
+ pairs, classification, localization, abstention, and uncertainty reporting
18
+ ([#649], [#662]).
19
+ - Added revision-bound verification-reach manifests so quality gates expose
20
+ direct, partial, uncovered, stale, and legacy-unknown evidence instead of
21
+ passing without observable failure-mode coverage ([#651], [#664]).
22
+ - Added a 100-query structural-transfer retrieval corpus with deterministic
23
+ ranking metrics and immutable receipts ([#653], [#665]).
24
+ - Added sanitized judge-measurement receipts with schema-enforced trust,
25
+ identity, retry, decoding, and timestamp boundaries ([#658], [#670]).
26
+
27
+ ### Fixed
28
+
29
+ - Hardened legacy session recovery against root escape, symlink and inode
30
+ substitution, malformed lineage, invalid UTF-8, oversized records, torn
31
+ tails, and unbounded caller overrides; legacy resume remains explicit and
32
+ unverified ([#659], [#671]).
33
+ - Made SQLite pattern-write failures and incomplete HNSW/RVF indexing return
34
+ typed `FAILED` or `COMMITTED_PENDING_INDEX` evidence while preserving
35
+ committed witness and dual-write side effects ([#660], [#672]).
36
+ - Removed package-manager calls from generated Claude lifecycle hooks, added
37
+ bounded Codex guidance modes, and separated Vibium detection from readiness
38
+ installation in response to reports from @pacphi ([#654], [#655], [#656],
39
+ [#661]).
40
+ - Replaced rate-limited qe-browser public fixtures with deterministic loopback
41
+ fixtures and accepted current Vibium screenshot output paths ([#561], [#667]).
42
+ - Refreshed embedded graph, Ruvocal, and Goal UI dependency locks with clean
43
+ Node 22+ installs and current vulnerability fixes ([#669]).
44
+ - Kept Rust coverage analysis on the Rust instrumentation path so an available
45
+ JavaScript test runner cannot replace the documented static-estimation
46
+ fallback with an empty coverage report ([#569]).
47
+ - Published the verdict JSON schemas and exposed pattern mutation outcomes at
48
+ the package root so downstream consumers can validate and classify writes.
49
+ - Sealed one npm tarball after asset synchronization and reused those exact
50
+ bytes for initialization, consumer-audit, and publication gates.
51
+
52
+ ### Changed
53
+
54
+ - Raised the published runtime floor to Node.js 22.13.0, recommends Node.js 24
55
+ for development and containers, and moved CI workflows off Node 18/20
56
+ runtimes ([#663]).
57
+ - Early-exit presets now collect shadow-calibration evidence by default while
58
+ still executing every layer; enforced skipping remains explicit ([#657],
59
+ [#666]).
60
+
61
+ [#561]: https://github.com/proffesor-for-testing/agentic-qe/issues/561
62
+ [#569]: https://github.com/proffesor-for-testing/agentic-qe/issues/569
63
+ [#649]: https://github.com/proffesor-for-testing/agentic-qe/issues/649
64
+ [#651]: https://github.com/proffesor-for-testing/agentic-qe/issues/651
65
+ [#653]: https://github.com/proffesor-for-testing/agentic-qe/issues/653
66
+ [#654]: https://github.com/proffesor-for-testing/agentic-qe/issues/654
67
+ [#655]: https://github.com/proffesor-for-testing/agentic-qe/issues/655
68
+ [#656]: https://github.com/proffesor-for-testing/agentic-qe/issues/656
69
+ [#657]: https://github.com/proffesor-for-testing/agentic-qe/issues/657
70
+ [#658]: https://github.com/proffesor-for-testing/agentic-qe/issues/658
71
+ [#659]: https://github.com/proffesor-for-testing/agentic-qe/issues/659
72
+ [#660]: https://github.com/proffesor-for-testing/agentic-qe/issues/660
73
+ [#661]: https://github.com/proffesor-for-testing/agentic-qe/pull/661
74
+ [#662]: https://github.com/proffesor-for-testing/agentic-qe/pull/662
75
+ [#663]: https://github.com/proffesor-for-testing/agentic-qe/pull/663
76
+ [#664]: https://github.com/proffesor-for-testing/agentic-qe/pull/664
77
+ [#665]: https://github.com/proffesor-for-testing/agentic-qe/pull/665
78
+ [#666]: https://github.com/proffesor-for-testing/agentic-qe/pull/666
79
+ [#667]: https://github.com/proffesor-for-testing/agentic-qe/pull/667
80
+ [#669]: https://github.com/proffesor-for-testing/agentic-qe/pull/669
81
+ [#670]: https://github.com/proffesor-for-testing/agentic-qe/pull/670
82
+ [#671]: https://github.com/proffesor-for-testing/agentic-qe/pull/671
83
+ [#672]: https://github.com/proffesor-for-testing/agentic-qe/pull/672
84
+
85
+ ## [3.14.0] - 2026-08-30
86
+
87
+ This release makes learned evidence, semantic vectors, recovery mirrors, and
88
+ adversarial verdicts carry explicit provenance and fail closed when that
89
+ provenance cannot be established.
90
+
91
+ ### Added
92
+
93
+ - Added immutable learning-evidence manifests, segment graphs, admission
94
+ decisions, and pattern lineage in additive unified-memory schema v12, with
95
+ disposable-copy migration coverage and portable JSONL/RVF backup support
96
+ ([#638]).
97
+ - Added embedding-space identity and compatibility checks for learned patterns,
98
+ persisted `space_id` provenance in additive schema v13, and a read-only
99
+ `aqe learning embedding-health` diagnostic ([#633]).
100
+ - Added the published `agentic-qe/skills/qe-court/referee` export and
101
+ `aqe-court-referee` executable, including consumer self-tests ([#632]).
102
+ - Added context-compaction authority lineage, fault-stratified judge
103
+ qualification, and architecture decisions ADR-129 through ADR-131
104
+ ([#635], [#636], [#638]).
105
+
106
+ ### Fixed
107
+
108
+ - Made RVF recovery-mirror replacement compare every portable table and fail
109
+ closed on ambiguous inspection while retaining explicit corruption recovery
110
+ and force-overwrite controls ([#629]).
111
+ - Made configured subscription and external providers reachable by the advisor
112
+ without allowing repository configuration to redirect ambient credentials or
113
+ replace trusted CLI executables ([#628], [#631]).
114
+ - Preserved authority labels through compaction using JSON-framed transcript
115
+ records so tool content cannot forge a user-authorized record ([#636]).
116
+ - Required mandatory severity strata, precision, false-keep limits, and
117
+ directional Wilson confidence bounds before judge automation ([#635]).
118
+ - Added the missing user-facing security disclosure for embedding-backed
119
+ analysis ([#615]).
120
+
121
+ ### Changed
122
+
123
+ - Brain exports now cover 31 portable tables and exclude unverified vectors
124
+ from the portable ANN while retaining their SQLite rows for later repair.
125
+ - The package adds public QE Court API and executable surfaces; this is an
126
+ additive minor release.
127
+
128
+ [#615]: https://github.com/proffesor-for-testing/agentic-qe/issues/615
129
+ [#628]: https://github.com/proffesor-for-testing/agentic-qe/issues/628
130
+ [#629]: https://github.com/proffesor-for-testing/agentic-qe/issues/629
131
+ [#631]: https://github.com/proffesor-for-testing/agentic-qe/issues/631
132
+ [#632]: https://github.com/proffesor-for-testing/agentic-qe/issues/632
133
+ [#633]: https://github.com/proffesor-for-testing/agentic-qe/issues/633
134
+ [#635]: https://github.com/proffesor-for-testing/agentic-qe/issues/635
135
+ [#636]: https://github.com/proffesor-for-testing/agentic-qe/issues/636
136
+ [#638]: https://github.com/proffesor-for-testing/agentic-qe/issues/638
137
+
8
138
  ## [3.13.12] - 2026-08-21
9
139
 
10
140
  Downstream tools can now give a host they supervise its own AQE provider
@@ -52,26 +52,18 @@ setup:
52
52
  optional_tools:
53
53
  - pixelmatch
54
54
  - pngjs
55
- # NOTE: this yaml deliberately uses ONLY pinned public fixtures
56
- # (httpbin.org/*) so it can be run end-to-end by CommandEvalRunner without
57
- # any prerequisite services. Tests that need a local poisoned-HTML fixture
58
- # (the check-injection severity path) live in scripts/smoke-test.sh, which
59
- # starts fixtures/serve-skills.js out of band.
55
+ # The CI workflow starts fixtures/serve-skills.js on loopback before this
56
+ # suite runs. Keeping browser targets local removes rate limits and makes
57
+ # every page stable across repeated visual comparisons.
60
58
 
61
59
  fixtures:
62
- public_pinned:
63
- # Pinned public endpoints — chosen because they're stable, well-known, and
64
- # serve predictable forms / HTML. Per feedback_no_unverified_failure_modes,
65
- # these are the canonical "does the tool actually work" fixtures.
66
- httpbin_form:
67
- url: "https://httpbin.org/forms/post"
68
- description: "Classic simple form custname, custtel, custemail, size, toppings"
69
- httpbin_html:
70
- url: "https://httpbin.org/html"
71
- description: "Static HTML page with known headings"
72
- httpbin_status_404:
73
- url: "https://httpbin.org/status/404"
74
- description: "Known 404 for testing no_failed_requests"
60
+ local:
61
+ form:
62
+ url: "http://127.0.0.1:8088/fixtures/form.html"
63
+ description: "Deterministic form with an email input and submit button"
64
+ content:
65
+ url: "http://127.0.0.1:8088/fixtures/content.html"
66
+ description: "Deterministic static page with a known heading"
75
67
 
76
68
  test_cases:
77
69
  # -------- assert.js --------
@@ -81,10 +73,10 @@ test_cases:
81
73
  priority: critical
82
74
  input:
83
75
  setup:
84
- - "vibium --headless go https://httpbin.org/forms/post"
76
+ - "vibium --headless go http://127.0.0.1:8088/fixtures/form.html"
85
77
  command: |
86
78
  node .claude/skills/qe-browser/scripts/assert.js --checks \
87
- '[{"kind": "url_contains", "text": "httpbin.org/forms"}]'
79
+ '[{"kind": "url_contains", "text": "/fixtures/form.html"}]'
88
80
  expected:
89
81
  exit_code: 0
90
82
  json_fields:
@@ -98,7 +90,7 @@ test_cases:
98
90
  priority: critical
99
91
  input:
100
92
  setup:
101
- - "vibium --headless go https://httpbin.org/html"
93
+ - "vibium --headless go http://127.0.0.1:8088/fixtures/content.html"
102
94
  command: |
103
95
  node .claude/skills/qe-browser/scripts/assert.js --checks \
104
96
  '[{"kind": "selector_visible", "selector": "h1"}]'
@@ -113,7 +105,7 @@ test_cases:
113
105
  priority: critical
114
106
  input:
115
107
  setup:
116
- - "vibium --headless go https://httpbin.org/html"
108
+ - "vibium --headless go http://127.0.0.1:8088/fixtures/content.html"
117
109
  command: |
118
110
  node .claude/skills/qe-browser/scripts/assert.js --checks \
119
111
  '[{"kind": "url_contains", "text": "this-does-not-exist"}]'
@@ -132,10 +124,10 @@ test_cases:
132
124
  command: |
133
125
  node .claude/skills/qe-browser/scripts/batch.js --steps \
134
126
  '[
135
- {"action": "go", "url": "https://httpbin.org/html"},
127
+ {"action": "go", "url": "http://127.0.0.1:8088/fixtures/content.html"},
136
128
  {"action": "wait_load"},
137
129
  {"action": "assert", "checks": [
138
- {"kind": "url_contains", "text": "/html"},
130
+ {"kind": "url_contains", "text": "/fixtures/content.html"},
139
131
  {"kind": "selector_visible", "selector": "h1"}
140
132
  ]}
141
133
  ]' --summary-only
@@ -154,9 +146,11 @@ test_cases:
154
146
  command: |
155
147
  node .claude/skills/qe-browser/scripts/batch.js --steps \
156
148
  '[
157
- {"action": "go", "url": "https://httpbin.org/html"},
158
- {"action": "click", "selector": "#does-not-exist"},
159
- {"action": "go", "url": "https://httpbin.org/forms/post"}
149
+ {"action": "go", "url": "http://127.0.0.1:8088/fixtures/content.html"},
150
+ {"action": "assert", "checks": [
151
+ {"kind": "url_contains", "text": "/does-not-exist"}
152
+ ]},
153
+ {"action": "go", "url": "http://127.0.0.1:8088/fixtures/form.html"}
160
154
  ]'
161
155
  expected:
162
156
  exit_code: 1
@@ -177,7 +171,7 @@ test_cases:
177
171
  # different dimensions (768×654 vs 765×672 observed), making the
178
172
  # pixel-diff in tc007 spuriously fail. Mirrors scripts/smoke-test.sh.
179
173
  - "vibium --headless viewport 1280 720"
180
- - "vibium --headless go https://httpbin.org/html"
174
+ - "vibium --headless go http://127.0.0.1:8088/fixtures/content.html"
181
175
  - "rm -rf .aqe/visual-baselines/eval_httpbin_html*"
182
176
  command: |
183
177
  node .claude/skills/qe-browser/scripts/visual-diff.js \
@@ -195,7 +189,7 @@ test_cases:
195
189
  input:
196
190
  setup:
197
191
  - "vibium --headless viewport 1280 720"
198
- - "vibium --headless go https://httpbin.org/html"
192
+ - "vibium --headless go http://127.0.0.1:8088/fixtures/content.html"
199
193
  command: |
200
194
  node .claude/skills/qe-browser/scripts/visual-diff.js \
201
195
  --name eval_httpbin_html --threshold 0.02
@@ -212,7 +206,7 @@ test_cases:
212
206
  priority: critical
213
207
  input:
214
208
  setup:
215
- - "vibium --headless go https://httpbin.org/html"
209
+ - "vibium --headless go http://127.0.0.1:8088/fixtures/content.html"
216
210
  command: |
217
211
  node .claude/skills/qe-browser/scripts/check-injection.js --include-hidden
218
212
  expected:
@@ -221,15 +215,11 @@ test_cases:
221
215
  ".status": "success"
222
216
  ".output.checkInjection.severity": "none"
223
217
 
224
- # GAP: the "poisoned-page detected with severity>=high" contract needs a
225
- # local fixture (fixtures/injection-poisoned.html) served by
226
- # fixtures/serve-skills.js. That's out of scope for this yaml — we keep
227
- # CommandEvalRunner dependency-free so it can run anywhere httpbin.org
228
- # is reachable. Coverage of the high-severity path is currently
218
+ # The "poisoned-page detected with severity>=high" contract is currently
219
+ # asserted outside this command suite. Coverage of the high-severity path is
229
220
  # only asserted by unit tests on check-injection.js (see
230
221
  # tests/unit/scripts/qe-browser-check-injection.test.ts). Follow-up:
231
- # either teach CommandEvalRunner to spawn the fixture server, or add a
232
- # tc009 to scripts/smoke-test.sh that starts/stops it out of band.
222
+ # add tc009 against fixtures/injection-poisoned.html.
233
223
 
234
224
  # -------- intent-score.js --------
235
225
  - id: tc010_intent_submit_form_on_httpbin
@@ -238,7 +228,7 @@ test_cases:
238
228
  priority: critical
239
229
  input:
240
230
  setup:
241
- - "vibium --headless go https://httpbin.org/forms/post"
231
+ - "vibium --headless go http://127.0.0.1:8088/fixtures/form.html"
242
232
  command: |
243
233
  node .claude/skills/qe-browser/scripts/intent-score.js \
244
234
  --intent submit_form
@@ -255,7 +245,7 @@ test_cases:
255
245
  priority: medium
256
246
  input:
257
247
  setup:
258
- - "vibium --headless go https://httpbin.org/html"
248
+ - "vibium --headless go http://127.0.0.1:8088/fixtures/content.html"
259
249
  command: |
260
250
  node .claude/skills/qe-browser/scripts/intent-score.js --intent fill_email
261
251
  expected:
@@ -270,5 +260,4 @@ validation:
270
260
  notes: |
271
261
  Evaluation assumes:
272
262
  - `vibium` v26.3.x+ is on PATH (from `aqe init` or `npm install -g vibium`)
273
- - Network access to httpbin.org (public, stable)
274
- - Local fixtures server running on :8088 (started in setup.local_docs_server)
263
+ - Local fixtures server running on 127.0.0.1:8088
@@ -74,6 +74,31 @@ const POISONED_HTML = `<!doctype html>
74
74
  </body>
75
75
  </html>`;
76
76
 
77
+ const CONTENT_HTML = `<!doctype html>
78
+ <html lang="en">
79
+ <head><meta charset="utf-8"><title>QE Browser Content Fixture</title></head>
80
+ <body>
81
+ <main>
82
+ <h1>QE Browser Content Fixture</h1>
83
+ <p>This deterministic page exercises browser assertions and visual comparisons.</p>
84
+ </main>
85
+ </body>
86
+ </html>`;
87
+
88
+ const FORM_HTML = `<!doctype html>
89
+ <html lang="en">
90
+ <head><meta charset="utf-8"><title>QE Browser Form Fixture</title></head>
91
+ <body>
92
+ <main>
93
+ <h1>Contact form</h1>
94
+ <form method="post" action="/fixtures/form.html">
95
+ <label>Email <input id="email" name="email" type="email" autocomplete="email"></label>
96
+ <button type="submit">Submit</button>
97
+ </form>
98
+ </main>
99
+ </body>
100
+ </html>`;
101
+
77
102
  function notFound(res, message) {
78
103
  res.writeHead(404, { 'Content-Type': 'text/plain; charset=utf-8' });
79
104
  res.end(`404 Not Found: ${message}\n`);
@@ -95,6 +120,18 @@ function serve(req, res) {
95
120
  return;
96
121
  }
97
122
 
123
+ if (pathname === '/fixtures/content.html') {
124
+ res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
125
+ res.end(CONTENT_HTML);
126
+ return;
127
+ }
128
+
129
+ if (pathname === '/fixtures/form.html') {
130
+ res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
131
+ res.end(FORM_HTML);
132
+ return;
133
+ }
134
+
98
135
  // Rewrite /foo/SKILL.md.html → /foo/SKILL.md (or similar) and serve wrapped.
99
136
  if (pathname.endsWith('.html')) {
100
137
  const mdPath = pathname.replace(/\.html$/, '');
@@ -292,7 +292,7 @@ function readInlineOrFile(value) {
292
292
  // "we couldn't run the test because the browser engine isn't installed."
293
293
  function emit(env) {
294
294
  process.stdout.write(`${JSON.stringify(env, null, 2)}\n`);
295
- if (env.status === 'success') return 0;
295
+ if (env.status === 'success' || env.status === 'partial') return 0;
296
296
  if (env.status === 'skipped') return 2;
297
297
  return 1;
298
298
  }
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env bash
2
2
  # qe-browser smoke test (bash mirror of evals/qe-browser.yaml)
3
3
  #
4
- # Runs each helper script against pinned public fixtures (httpbin.org) and
4
+ # Runs each helper script against deterministic local fixtures and
5
5
  # verifies the output structure. Gates PR-reopen per ADR-091 Phase 3.
6
6
  #
7
7
  # RELATIONSHIP TO evals/qe-browser.yaml
@@ -24,16 +24,25 @@
24
24
  # 2 — vibium binary not on PATH (precondition unmet)
25
25
  #
26
26
  # Per feedback_no_unverified_failure_modes.md, this is the script we
27
- # actually run, not just write. Per feedback_synthetic_fixtures_dont_count,
28
- # all fixtures are pinned public endpoints (httpbin.org) no synthetic
29
- # stubs, no inline HTML.
27
+ # actually run, not just write. The fixture pages are maintained with the
28
+ # skill and served only on loopback, removing public-service rate limits.
30
29
 
31
30
  set -uo pipefail
32
31
 
33
32
  SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
34
33
  SKILL_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
35
34
  WORK_DIR="$(mktemp -d)"
36
- trap 'rm -rf "$WORK_DIR"' EXIT
35
+ FIXTURE_PORT="${QE_BROWSER_FIXTURE_PORT:-8088}"
36
+ FIXTURE_URL="${QE_BROWSER_FIXTURE_URL:-http://127.0.0.1:${FIXTURE_PORT}}"
37
+ FIXTURE_PID=""
38
+
39
+ cleanup() {
40
+ if [ -n "$FIXTURE_PID" ]; then
41
+ kill "$FIXTURE_PID" >/dev/null 2>&1 || true
42
+ fi
43
+ rm -rf "$WORK_DIR"
44
+ }
45
+ trap cleanup EXIT
37
46
 
38
47
  GREEN='\033[0;32m'
39
48
  RED='\033[0;31m'
@@ -57,6 +66,28 @@ if ! command -v vibium >/dev/null 2>&1; then
57
66
  exit 2
58
67
  fi
59
68
 
69
+ if ! curl --silent --fail "$FIXTURE_URL/fixtures/content.html" >/dev/null 2>&1; then
70
+ QE_BROWSER_FIXTURE_PORT="$FIXTURE_PORT" \
71
+ node "$SKILL_DIR/fixtures/serve-skills.js" >"$WORK_DIR/fixture-server.log" 2>&1 &
72
+ FIXTURE_PID=$!
73
+ fixture_ready=0
74
+ for _attempt in 1 2 3 4 5; do
75
+ if curl --silent --fail "$FIXTURE_URL/fixtures/content.html" >/dev/null 2>&1; then
76
+ fixture_ready=1
77
+ break
78
+ fi
79
+ sleep 1
80
+ done
81
+ if [ "$fixture_ready" != "1" ]; then
82
+ cat "$WORK_DIR/fixture-server.log" >&2
83
+ echo -e "${RED}qe-browser fixture server did not become ready${NC}" >&2
84
+ exit 1
85
+ fi
86
+ fi
87
+
88
+ CONTENT_URL="$FIXTURE_URL/fixtures/content.html"
89
+ FORM_URL="$FIXTURE_URL/fixtures/form.html"
90
+
60
91
  VIBIUM_VERSION=$(vibium --version 2>&1 | head -1)
61
92
  echo "Smoke testing against $VIBIUM_VERSION"
62
93
  echo "Skill dir: $SKILL_DIR"
@@ -64,29 +95,29 @@ echo "Work dir: $WORK_DIR"
64
95
  echo ""
65
96
 
66
97
  # ---------------------------------------------------------------------------
67
- # tc001 — assert.js url_contains against pinned httpbin form
98
+ # tc001 — assert.js url_contains against the local form fixture
68
99
  # ---------------------------------------------------------------------------
69
- vibium --headless go https://httpbin.org/forms/post >/dev/null 2>&1 || true
100
+ vibium --headless go "$FORM_URL" >/dev/null 2>&1 || true
70
101
  RESULT=$(node "$SKILL_DIR/scripts/assert.js" --checks \
71
- '[{"kind": "url_contains", "text": "httpbin.org/forms"}]' 2>&1)
102
+ '[{"kind": "url_contains", "text": "/fixtures/form.html"}]' 2>&1)
72
103
  EXIT=$?
73
104
  if [ "$EXIT" = "0" ] && echo "$RESULT" | grep -q '"status": "success"'; then
74
- ok "tc001 url_contains on httpbin form"
105
+ ok "tc001 url_contains on local form"
75
106
  else
76
- bad "tc001 url_contains on httpbin form" "exit=$EXIT, result=$RESULT"
107
+ bad "tc001 url_contains on local form" "exit=$EXIT, result=$RESULT"
77
108
  fi
78
109
 
79
110
  # ---------------------------------------------------------------------------
80
- # tc002 — assert.js selector_visible against pinned httpbin /html
111
+ # tc002 — assert.js selector_visible against the local content fixture
81
112
  # ---------------------------------------------------------------------------
82
- vibium --headless go https://httpbin.org/html >/dev/null 2>&1 || true
113
+ vibium --headless go "$CONTENT_URL" >/dev/null 2>&1 || true
83
114
  RESULT=$(node "$SKILL_DIR/scripts/assert.js" --checks \
84
115
  '[{"kind": "selector_visible", "selector": "h1"}]' 2>&1)
85
116
  EXIT=$?
86
117
  if [ "$EXIT" = "0" ] && echo "$RESULT" | grep -q '"passed": true'; then
87
- ok "tc002 selector_visible h1 on httpbin /html"
118
+ ok "tc002 selector_visible h1 on local content"
88
119
  else
89
- bad "tc002 selector_visible h1 on httpbin /html" "exit=$EXIT"
120
+ bad "tc002 selector_visible h1 on local content" "exit=$EXIT"
90
121
  fi
91
122
 
92
123
  # ---------------------------------------------------------------------------
@@ -105,7 +136,7 @@ fi
105
136
  # tc004 — batch.js navigate + wait + assert in one call
106
137
  # ---------------------------------------------------------------------------
107
138
  RESULT=$(node "$SKILL_DIR/scripts/batch.js" --steps \
108
- '[{"action":"go","url":"https://httpbin.org/html"},{"action":"wait_load"},{"action":"assert","checks":[{"kind":"url_contains","text":"/html"}]}]' \
139
+ "[{\"action\":\"go\",\"url\":\"$CONTENT_URL\"},{\"action\":\"wait_load\"},{\"action\":\"assert\",\"checks\":[{\"kind\":\"url_contains\",\"text\":\"/fixtures/content.html\"}]}]" \
109
140
  --summary-only 2>&1)
110
141
  EXIT=$?
111
142
  if [ "$EXIT" = "0" ] && echo "$RESULT" | grep -q '"passedSteps": 3'; then
@@ -118,7 +149,7 @@ fi
118
149
  # tc005 — batch.js stops on failure
119
150
  # ---------------------------------------------------------------------------
120
151
  RESULT=$(node "$SKILL_DIR/scripts/batch.js" --steps \
121
- '[{"action":"go","url":"https://httpbin.org/html"},{"action":"click","selector":"#does-not-exist-selector"},{"action":"go","url":"https://httpbin.org/forms/post"}]' 2>&1)
152
+ "[{\"action\":\"go\",\"url\":\"$CONTENT_URL\"},{\"action\":\"assert\",\"checks\":[{\"kind\":\"url_contains\",\"text\":\"/does-not-exist\"}]},{\"action\":\"go\",\"url\":\"$FORM_URL\"}]" 2>&1)
122
153
  EXIT=$?
123
154
  if [ "$EXIT" = "1" ] && echo "$RESULT" | grep -q '"failedStep"'; then
124
155
  ok "tc005 batch stops on first failure"
@@ -131,19 +162,19 @@ fi
131
162
  #
132
163
  # Set explicit viewport BEFORE screenshot so the two visual-diff runs have
133
164
  # the same dimensions. Without this the chromium headless window picks
134
- # whatever size it likes per run, and httpbin.org/html renders at different
165
+ # whatever size it likes per run, and pages may render at different
135
166
  # sizes between runs (768×654 vs 765×672 observed), making pixel-diff
136
167
  # spuriously fail. This is documented in references/assertion-kinds.md.
137
168
  # ---------------------------------------------------------------------------
138
169
  rm -rf "$PWD/.aqe/visual-baselines/smoke_test_baseline"*
139
170
  vibium --headless viewport 1280 720 >/dev/null 2>&1 || true
140
- vibium --headless go https://httpbin.org/html >/dev/null 2>&1 || true
171
+ vibium --headless go "$CONTENT_URL" >/dev/null 2>&1 || true
141
172
  RESULT=$(node "$SKILL_DIR/scripts/visual-diff.js" --name smoke_test_baseline 2>&1)
142
173
  EXIT=$?
143
174
  if [ "$EXIT" = "0" ] && echo "$RESULT" | grep -q '"baseline_created"'; then
144
175
  ok "tc006 visual-diff baseline created"
145
176
  else
146
- bad "tc006 visual-diff baseline created" "exit=$EXIT"
177
+ bad "tc006 visual-diff baseline created" "exit=$EXIT, result=$RESULT"
147
178
  fi
148
179
 
149
180
  # ---------------------------------------------------------------------------
@@ -157,13 +188,13 @@ EXIT=$?
157
188
  if [ "$EXIT" = "0" ] && echo "$RESULT" | grep -qE '"(match|baseline_created)"'; then
158
189
  ok "tc007 visual-diff second run matches"
159
190
  else
160
- bad "tc007 visual-diff second run matches" "exit=$EXIT"
191
+ bad "tc007 visual-diff second run matches" "exit=$EXIT, result=$RESULT"
161
192
  fi
162
193
 
163
194
  # ---------------------------------------------------------------------------
164
195
  # tc008 — check-injection.js clean page
165
196
  # ---------------------------------------------------------------------------
166
- vibium --headless go https://httpbin.org/html >/dev/null 2>&1 || true
197
+ vibium --headless go "$CONTENT_URL" >/dev/null 2>&1 || true
167
198
  RESULT=$(node "$SKILL_DIR/scripts/check-injection.js" --include-hidden 2>&1)
168
199
  EXIT=$?
169
200
  if [ "$EXIT" = "0" ] && echo "$RESULT" | grep -q '"severity": "none"'; then
@@ -173,15 +204,15 @@ else
173
204
  fi
174
205
 
175
206
  # ---------------------------------------------------------------------------
176
- # tc010 — intent-score.js submit_form on pinned httpbin form
207
+ # tc010 — intent-score.js submit_form on the local form fixture
177
208
  # ---------------------------------------------------------------------------
178
- vibium --headless go https://httpbin.org/forms/post >/dev/null 2>&1 || true
209
+ vibium --headless go "$FORM_URL" >/dev/null 2>&1 || true
179
210
  RESULT=$(node "$SKILL_DIR/scripts/intent-score.js" --intent submit_form 2>&1)
180
211
  EXIT=$?
181
212
  if [ "$EXIT" = "0" ] && echo "$RESULT" | grep -q '"intent": "submit_form"'; then
182
- ok "tc010 intent-score submit_form on httpbin form"
213
+ ok "tc010 intent-score submit_form on local form"
183
214
  else
184
- bad "tc010 intent-score submit_form on httpbin form" "exit=$EXIT"
215
+ bad "tc010 intent-score submit_form on local form" "exit=$EXIT"
185
216
  fi
186
217
 
187
218
  # ---------------------------------------------------------------------------