agentic-qe 3.10.8 → 3.11.0

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 (391) hide show
  1. package/.claude/agents/v3/qe-learning-coordinator.md +1 -1
  2. package/.claude/skills/README.md +2 -2
  3. package/.claude/skills/agentic-quality-engineering/SKILL.md +6 -5
  4. package/.claude/skills/agentic-quality-engineering/schemas/output.json +7 -3
  5. package/.claude/skills/holistic-testing-pact/SKILL.md +50 -17
  6. package/.claude/skills/skills-manifest.json +6 -6
  7. package/.opencode/skills/qe-agentic-quality-engineering.yaml +5 -5
  8. package/.opencode/skills/qe-holistic-testing-pact.yaml +11 -11
  9. package/CHANGELOG.md +88 -1
  10. package/README.md +17 -0
  11. package/assets/agents/v3/qe-learning-coordinator.md +1 -1
  12. package/assets/skills/README.md +2 -2
  13. package/assets/skills/agentic-quality-engineering/SKILL.md +6 -5
  14. package/assets/skills/agentic-quality-engineering/schemas/output.json +7 -3
  15. package/assets/skills/holistic-testing-pact/SKILL.md +50 -17
  16. package/assets/skills/skills-manifest.json +6 -6
  17. package/dist/cli/bundle.js +5 -5
  18. package/dist/cli/chunks/adapter-WLFT5VMV.js +2 -0
  19. package/dist/cli/chunks/{agent-booster-wasm-4JSL6LF6.js → agent-booster-wasm-5CSKQB4O.js} +2 -2
  20. package/dist/cli/chunks/{agent-handler-6YOFH7KL.js → agent-handler-EBV3OKTE.js} +2 -2
  21. package/dist/cli/chunks/{agent-memory-branch-O3IBK4BY.js → agent-memory-branch-RZ53YM2U.js} +2 -2
  22. package/dist/cli/chunks/aqe-learning-engine-JBH4GZUM.js +2 -0
  23. package/dist/cli/chunks/{arena-BLCAZNAY.js → arena-QWYTIQ6I.js} +2 -2
  24. package/dist/cli/chunks/{arena-KLGRZTTU.js → arena-UCP74DRO.js} +4 -4
  25. package/dist/cli/chunks/{audit-FKKLR22S.js → audit-M4FNIX47.js} +2 -2
  26. package/dist/cli/chunks/base-A7JGM473.js +2 -0
  27. package/dist/cli/chunks/{hnswlib-node-PNPV64M3.js → better-sqlite3-RIBLRHJL.js} +2 -2
  28. package/dist/cli/chunks/{brain-handler-YTGYC2QW.js → brain-handler-OY6Q2GY5.js} +3 -3
  29. package/dist/cli/chunks/{branch-enumerator-KIIBEJ5S.js → branch-enumerator-TQWN4NIX.js} +2 -2
  30. package/dist/cli/chunks/{browser-7YZLTV2C.js → browser-2EH3RXJ2.js} +2 -2
  31. package/dist/cli/chunks/browser-workflow-TIDJWULK.js +2 -0
  32. package/dist/cli/chunks/{chunk-4IGSL7CX.js → chunk-2BBKA5J4.js} +1 -1
  33. package/dist/cli/chunks/{chunk-LZVKR7HV.js → chunk-2QU6C3OS.js} +2 -2
  34. package/dist/cli/chunks/{chunk-B3B5QZYN.js → chunk-2TUVBEWK.js} +2 -2
  35. package/dist/cli/chunks/{chunk-W72CUJRB.js → chunk-2WVLFT2I.js} +1 -1
  36. package/dist/cli/chunks/{chunk-JZYXYHEE.js → chunk-2ZC7S4UG.js} +2 -2
  37. package/dist/cli/chunks/{chunk-PG7KISET.js → chunk-3GWSHRDA.js} +2 -2
  38. package/dist/cli/chunks/{chunk-VKLPSPPI.js → chunk-3J6LYF6I.js} +2 -2
  39. package/dist/cli/chunks/{chunk-ZSMHQENA.js → chunk-3LP5GPGU.js} +1 -1
  40. package/dist/cli/chunks/{chunk-MWAEUJDC.js → chunk-453UDYD2.js} +229 -225
  41. package/dist/cli/chunks/{chunk-DI7REPYC.js → chunk-4OTA6KYJ.js} +2 -2
  42. package/dist/cli/chunks/{chunk-SDVL5TZK.js → chunk-5ASPEVVF.js} +1 -1
  43. package/dist/cli/chunks/{chunk-LCDMB5SP.js → chunk-5DG6H553.js} +1 -1
  44. package/dist/cli/chunks/{chunk-JFTRHS5V.js → chunk-5OJXVVTI.js} +2 -2
  45. package/dist/cli/chunks/{chunk-6B3COND2.js → chunk-6VQKNPGY.js} +2 -2
  46. package/dist/cli/chunks/{chunk-NKKDO5W4.js → chunk-72QNONO6.js} +2 -2
  47. package/dist/cli/chunks/{chunk-OZDRAKFF.js → chunk-73EWPVBJ.js} +2 -2
  48. package/dist/cli/chunks/{chunk-CP4CSI5R.js → chunk-7BD7DZCB.js} +2 -2
  49. package/dist/cli/chunks/{chunk-DNC27OP7.js → chunk-7E5NYLJT.js} +2 -2
  50. package/dist/cli/chunks/{chunk-CDNXXNQM.js → chunk-7MBF3S25.js} +1 -1
  51. package/dist/cli/chunks/{chunk-IFQPGBKQ.js → chunk-7PTA7AVW.js} +1 -1
  52. package/dist/cli/chunks/{chunk-QNNH5TDV.js → chunk-7Q6CMSMD.js} +3 -3
  53. package/dist/cli/chunks/{chunk-SDGRU6SG.js → chunk-ACV2WVMX.js} +1 -1
  54. package/dist/cli/chunks/{chunk-XRJH5KXF.js → chunk-AURDGQNB.js} +2 -2
  55. package/dist/cli/chunks/{chunk-LIOK7WBX.js → chunk-AVKGDS6F.js} +2 -2
  56. package/dist/cli/chunks/{chunk-DPSLJ6IW.js → chunk-AYOTODUV.js} +1 -1
  57. package/dist/cli/chunks/{chunk-OK6CSJOX.js → chunk-B4QA3YN6.js} +1 -1
  58. package/dist/cli/chunks/{chunk-MTWBYHMS.js → chunk-BA4WZIAQ.js} +2 -2
  59. package/dist/cli/chunks/{chunk-RNJRKFMX.js → chunk-BEOGI5FC.js} +2 -2
  60. package/dist/cli/chunks/{chunk-XYXRO7VP.js → chunk-C33BMWYZ.js} +2 -2
  61. package/dist/cli/chunks/chunk-C4OYHUJV.js +2 -0
  62. package/dist/cli/chunks/{chunk-ON6C2OYG.js → chunk-CERSTEAJ.js} +2 -2
  63. package/dist/cli/chunks/{chunk-YATW2RWQ.js → chunk-D3S4SRSA.js} +2 -2
  64. package/dist/cli/chunks/{chunk-CCUUTTTJ.js → chunk-DCJIXDO6.js} +2 -2
  65. package/dist/cli/chunks/chunk-DDQWW22L.js +6 -0
  66. package/dist/cli/chunks/{chunk-FWQZZ22V.js → chunk-DV7662EZ.js} +1 -1
  67. package/dist/cli/chunks/{chunk-HVE3EH36.js → chunk-ETGEGMYS.js} +3 -3
  68. package/dist/cli/chunks/{chunk-CO6UY7ZU.js → chunk-ETZ62NFD.js} +1 -1
  69. package/dist/cli/chunks/{chunk-G73PIM7X.js → chunk-F62ZQZQQ.js} +2 -2
  70. package/dist/cli/chunks/{chunk-AGQIJWAD.js → chunk-F6Y7DTHR.js} +2 -2
  71. package/dist/cli/chunks/{chunk-LT4OZHMK.js → chunk-FGOVDO3R.js} +2 -2
  72. package/dist/cli/chunks/{chunk-YUK4KU2B.js → chunk-FMKALHT3.js} +2 -2
  73. package/dist/cli/chunks/{chunk-X3NEQ3SL.js → chunk-FMULOSBL.js} +1 -1
  74. package/dist/cli/chunks/{chunk-3AG2MM7U.js → chunk-FTOICJQG.js} +2 -2
  75. package/dist/cli/chunks/{chunk-YQYTQRTR.js → chunk-G25YZ7Z6.js} +2 -2
  76. package/dist/cli/chunks/{chunk-QHLENBGB.js → chunk-G5VE3HQW.js} +2 -2
  77. package/dist/cli/chunks/{chunk-XLQX77KP.js → chunk-GBFAQ4DW.js} +1 -1
  78. package/dist/cli/chunks/{chunk-Z57UERQZ.js → chunk-GGSXHGWD.js} +2 -2
  79. package/dist/cli/chunks/{chunk-TXLLF7XR.js → chunk-HHSEIPSQ.js} +1 -1
  80. package/dist/cli/chunks/{chunk-4G2GTX2V.js → chunk-HJFQVKPI.js} +1 -1
  81. package/dist/cli/chunks/{chunk-WKLI5Z3L.js → chunk-HMSPPGUF.js} +2 -2
  82. package/dist/cli/chunks/{chunk-2KP5TJS2.js → chunk-HNSZDIQU.js} +2 -2
  83. package/dist/cli/chunks/{chunk-77BVW2CT.js → chunk-I2HQLBWG.js} +2 -2
  84. package/dist/cli/chunks/{chunk-G2J7WGOG.js → chunk-IFTEM672.js} +2 -2
  85. package/dist/cli/chunks/{chunk-Q7B7T4YK.js → chunk-IHNBZ5XG.js} +2 -2
  86. package/dist/cli/chunks/{chunk-5GPOSKGP.js → chunk-IKNDGXZZ.js} +2 -2
  87. package/dist/cli/chunks/{chunk-ALFF4AAM.js → chunk-IOQYSR5S.js} +2 -2
  88. package/dist/cli/chunks/{chunk-7LHN6WBX.js → chunk-IQSPL2H4.js} +2 -2
  89. package/dist/cli/chunks/{chunk-E5GUTKET.js → chunk-ISVBO4XO.js} +2 -2
  90. package/dist/cli/chunks/{chunk-KTBBSOZG.js → chunk-ITRUZ3WE.js} +2 -2
  91. package/dist/cli/chunks/{chunk-OIU6PKLF.js → chunk-J425SQFE.js} +2 -2
  92. package/dist/cli/chunks/{chunk-NFZY6ZVY.js → chunk-JN3IQB4L.js} +1 -1
  93. package/dist/cli/chunks/{chunk-6B32USSC.js → chunk-JNX7IRSI.js} +2 -2
  94. package/dist/cli/chunks/{chunk-PRYSWF6F.js → chunk-JQM64WJ2.js} +1 -1
  95. package/dist/cli/chunks/{chunk-4B676LUC.js → chunk-JQSA6EMI.js} +2 -2
  96. package/dist/cli/chunks/{chunk-NL4EKO2J.js → chunk-JZFA2PWY.js} +2 -2
  97. package/dist/cli/chunks/{chunk-54PBHRRW.js → chunk-KBVXKFDI.js} +4 -4
  98. package/dist/cli/chunks/{chunk-Z4WAJ647.js → chunk-KOOY72E3.js} +2 -2
  99. package/dist/cli/chunks/{chunk-M5PBVK3V.js → chunk-KZE5UR4T.js} +3 -3
  100. package/dist/cli/chunks/{chunk-2RDWYJJY.js → chunk-L7GQKJLV.js} +2 -2
  101. package/dist/cli/chunks/{chunk-GXKCRIHK.js → chunk-LCDRRAES.js} +2 -2
  102. package/dist/cli/chunks/{chunk-VL4MSE3J.js → chunk-LFT7WYHW.js} +2 -2
  103. package/dist/cli/chunks/{chunk-LBR5FXPD.js → chunk-LTH6XARD.js} +5 -5
  104. package/dist/cli/chunks/{chunk-KWKGROPS.js → chunk-LYV7WJWA.js} +1 -1
  105. package/dist/cli/chunks/{chunk-HVFHPDXV.js → chunk-MDYI4IIW.js} +1 -1
  106. package/dist/cli/chunks/{chunk-KTEWRRDZ.js → chunk-MKLLB4PM.js} +4 -4
  107. package/dist/cli/chunks/{chunk-34LWJDCM.js → chunk-MTSMFEWK.js} +2 -2
  108. package/dist/cli/chunks/{chunk-CHPL7TA4.js → chunk-N3R3JGUY.js} +1 -1
  109. package/dist/cli/chunks/{chunk-HWJEHXPQ.js → chunk-N52ZBTPM.js} +2 -2
  110. package/dist/cli/chunks/{chunk-X4CHPEOQ.js → chunk-N7MKF4F4.js} +1 -1
  111. package/dist/cli/chunks/{chunk-H35FNLQJ.js → chunk-NBTKI2TX.js} +2 -2
  112. package/dist/cli/chunks/{chunk-FPEFIJQ6.js → chunk-NI7O3GKZ.js} +3 -3
  113. package/dist/cli/chunks/{chunk-2UL4UK6V.js → chunk-NQD4CMXC.js} +2 -2
  114. package/dist/cli/chunks/{chunk-DNEYBK7X.js → chunk-O6FN53HB.js} +1 -1
  115. package/dist/cli/chunks/{chunk-XPAH7SEX.js → chunk-OZQIDDXB.js} +2 -2
  116. package/dist/cli/chunks/{chunk-474ZUVGP.js → chunk-P3NV6KN3.js} +1 -1
  117. package/dist/cli/chunks/{chunk-JITZAJJN.js → chunk-PC3VIR2A.js} +3 -3
  118. package/dist/cli/chunks/{chunk-WYAHOUK2.js → chunk-PJ4HSXH3.js} +1 -1
  119. package/dist/cli/chunks/{chunk-Z7FWPSOK.js → chunk-PUTRXS5I.js} +2 -2
  120. package/dist/cli/chunks/{chunk-GDHJZPNC.js → chunk-PVBJUANU.js} +2 -2
  121. package/dist/cli/chunks/{chunk-PTPGYUT2.js → chunk-QCJ7YOVN.js} +2 -2
  122. package/dist/cli/chunks/{chunk-T2Z3M6HA.js → chunk-QGBXENIP.js} +1 -1
  123. package/dist/cli/chunks/{chunk-OLOKPY5O.js → chunk-QYXTESM3.js} +2 -2
  124. package/dist/cli/chunks/{chunk-OV3ESWN4.js → chunk-QZQGYSDG.js} +2 -2
  125. package/dist/cli/chunks/{chunk-HEC2UWY3.js → chunk-R3YO3Z7I.js} +4 -4
  126. package/dist/cli/chunks/{chunk-JQBD4JO2.js → chunk-R7FHQQAV.js} +2 -2
  127. package/dist/cli/chunks/{chunk-MSWBVPVQ.js → chunk-RKDNLPZM.js} +2 -2
  128. package/dist/cli/chunks/{chunk-BALWMVCX.js → chunk-RPYYS6BX.js} +2 -2
  129. package/dist/cli/chunks/{chunk-R2LWUBET.js → chunk-RVQW6CBF.js} +2 -2
  130. package/dist/cli/chunks/{chunk-VM5C4DIV.js → chunk-SHW43QQV.js} +2 -2
  131. package/dist/cli/chunks/{chunk-S6PGWJDK.js → chunk-SKL225P5.js} +2 -2
  132. package/dist/cli/chunks/{chunk-Y4XTPEAC.js → chunk-SLWJNHCR.js} +2 -2
  133. package/dist/cli/chunks/{chunk-XNFYQRJ2.js → chunk-SQPDGRYR.js} +1 -1
  134. package/dist/cli/chunks/{chunk-NOP5ZJ7E.js → chunk-T6KT63NC.js} +2 -2
  135. package/dist/cli/chunks/{chunk-C6TUX7YJ.js → chunk-TGLEREP5.js} +2 -2
  136. package/dist/cli/chunks/{chunk-O75ODKCX.js → chunk-TYS77XHV.js} +2 -2
  137. package/dist/cli/chunks/{chunk-Q32LITZL.js → chunk-UEH6C5JA.js} +1 -1
  138. package/dist/cli/chunks/{chunk-6R6RC6YJ.js → chunk-UFMW25MS.js} +2 -2
  139. package/dist/cli/chunks/{chunk-BMSMDD72.js → chunk-V6WJVFRN.js} +2 -2
  140. package/dist/cli/chunks/{chunk-GHIHW3IE.js → chunk-VGYUVMSN.js} +2 -2
  141. package/dist/cli/chunks/{chunk-33CLP2NE.js → chunk-VHON5NDM.js} +3 -3
  142. package/dist/cli/chunks/{chunk-D7IH2A3C.js → chunk-VVJXQ4FR.js} +2 -2
  143. package/dist/cli/chunks/{chunk-K5Y64X2U.js → chunk-WBQEOACC.js} +2 -2
  144. package/dist/cli/chunks/{chunk-NWIKNQLJ.js → chunk-WP6XUSVW.js} +1 -1
  145. package/dist/cli/chunks/{chunk-FXPAGKVS.js → chunk-X2L4POJE.js} +1 -1
  146. package/dist/cli/chunks/{chunk-H73AA2JI.js → chunk-X2TUDGFL.js} +18 -18
  147. package/dist/cli/chunks/{chunk-WDZT344G.js → chunk-XKRG2U3V.js} +15 -13
  148. package/dist/cli/chunks/{chunk-D7ZVIL3C.js → chunk-XMZ2DHUL.js} +1 -1
  149. package/dist/cli/chunks/{chunk-LJEO5R32.js → chunk-XSG4XKGO.js} +2 -2
  150. package/dist/cli/chunks/{chunk-UU422SST.js → chunk-XVQUVCFR.js} +2 -2
  151. package/dist/cli/chunks/{chunk-SSRMFU4P.js → chunk-XW5OXBVV.js} +2 -2
  152. package/dist/cli/chunks/{chunk-DDMKCHYT.js → chunk-Y7TBCHW4.js} +2 -2
  153. package/dist/cli/chunks/{chunk-XKIVOADM.js → chunk-Y7UJC5OL.js} +3 -3
  154. package/dist/cli/chunks/{chunk-HE3KLHNO.js → chunk-YQIMO7VJ.js} +2 -2
  155. package/dist/cli/chunks/{chunk-RXWPYY6H.js → chunk-YR44KQUK.js} +1 -1
  156. package/dist/cli/chunks/{chunk-QHGHWATK.js → chunk-YRP73HO4.js} +1 -1
  157. package/dist/cli/chunks/{chunk-5KUINS3D.js → chunk-YSTWLDVD.js} +3 -3
  158. package/dist/cli/chunks/{chunk-YMJ5AVVU.js → chunk-Z45QDDZQ.js} +1 -1
  159. package/dist/cli/chunks/{chunk-2F4VRCT6.js → chunk-ZEUUVLS2.js} +1 -1
  160. package/dist/cli/chunks/{chunk-7NKVEEXD.js → chunk-ZFP3O5FM.js} +1 -1
  161. package/dist/cli/chunks/{chunk-4AG2TQEF.js → chunk-ZK56THZT.js} +3 -3
  162. package/dist/cli/chunks/{chunk-4OHLPG6B.js → chunk-ZT4NPTML.js} +2 -2
  163. package/dist/cli/chunks/{ci-2G4BBIQD.js → ci-4JK2NFCD.js} +2 -2
  164. package/dist/cli/chunks/{ci-output-SI3ME52L.js → ci-output-LCGTJQWC.js} +2 -2
  165. package/dist/cli/chunks/{circuit-breaker-KTICF3EC.js → circuit-breaker-EJF7D3L4.js} +2 -2
  166. package/dist/cli/chunks/{claude-flow-setup-F44PULFU.js → claude-flow-setup-3RUC6OB4.js} +2 -2
  167. package/dist/cli/chunks/client-ZLJ3JMBC.js +2 -0
  168. package/dist/cli/chunks/cline-installer-6LY5C5QH.js +4 -0
  169. package/dist/cli/chunks/{code-EDLIBN77.js → code-MPDG4UHS.js} +2 -2
  170. package/dist/cli/chunks/{code-index-extractor-P4NBWGTV.js → code-index-extractor-OY5GQJBM.js} +2 -2
  171. package/dist/cli/chunks/codex-installer-BO7E2ZVA.js +8 -0
  172. package/dist/cli/chunks/{completions-XPCXB5SR.js → completions-VGL3KJ2R.js} +2 -2
  173. package/dist/cli/chunks/{complexity-analyzer-LAL5RSB7.js → complexity-analyzer-5DPUK7IL.js} +2 -2
  174. package/dist/cli/chunks/continuedev-installer-LFDG2D42.js +15 -0
  175. package/dist/cli/chunks/copilot-installer-SEMMMIZH.js +3 -0
  176. package/dist/cli/chunks/core-handlers-EM7FUYTI.js +2 -0
  177. package/dist/cli/chunks/{cost-tracker-EUJFKHGT.js → cost-tracker-OPBC6FQM.js} +2 -2
  178. package/dist/cli/chunks/{coverage-C75LPZYB.js → coverage-CFDUSRKU.js} +3 -3
  179. package/dist/cli/chunks/cross-domain-router-DYGHQ6P5.js +2 -0
  180. package/dist/cli/chunks/cursor-installer-6TXUUVY4.js +3 -0
  181. package/dist/cli/chunks/{daemon-JR2MSTSK.js → daemon-5KO46YQR.js} +4 -4
  182. package/dist/cli/chunks/{daemon-BPVBZZQO.js → daemon-7BDBPPAF.js} +3 -3
  183. package/dist/cli/chunks/{dag-attention-scheduler-I5H7DBNU.js → dag-attention-scheduler-6DQKZOUW.js} +2 -2
  184. package/dist/cli/chunks/{detect-O5TMML24.js → detect-R2QAYDPI.js} +2 -2
  185. package/dist/cli/chunks/{dist-node-MDZ6UQ3V.js → dist-node-3POCIJ4N.js} +2 -2
  186. package/dist/cli/chunks/{domain-handler-BGBTZETG.js → domain-handler-KW63CHUH.js} +2 -2
  187. package/dist/cli/chunks/{domain-transfer-C2D2IEYV.js → domain-transfer-2QPOJCUD.js} +2 -2
  188. package/dist/cli/chunks/dream-DBE5D5BD.js +2 -0
  189. package/dist/cli/chunks/{embed-and-insert-pattern-UJREBJF5.js → embed-and-insert-pattern-OIDJZQEP.js} +2 -2
  190. package/dist/cli/chunks/{eval-BDD24HQC.js → eval-UGEKTTAQ.js} +2 -2
  191. package/dist/cli/chunks/{experience-capture-middleware-KLVXIIYH.js → experience-capture-middleware-3BIM2TT7.js} +3 -3
  192. package/dist/cli/chunks/{fast-paths-5HIKAQZ7.js → fast-paths-HCJQXB7W.js} +2 -2
  193. package/dist/cli/chunks/{feature-flags-YE5SJPDS.js → feature-flags-GDGJKLN4.js} +2 -2
  194. package/dist/cli/chunks/{feature-flags-NM3S7OEW.js → feature-flags-W4JSFBMV.js} +2 -2
  195. package/dist/cli/chunks/{file-discovery-PWRQZNJQ.js → file-discovery-JMUZ4MUH.js} +2 -2
  196. package/dist/cli/chunks/{fleet-UIPKNQX3.js → fleet-YNNK2CKW.js} +3 -3
  197. package/dist/cli/chunks/{gnn-wrapper-GWGKZRTO.js → gnn-wrapper-R2ZY6CDD.js} +2 -2
  198. package/dist/cli/chunks/{heartbeat-handler-GQHJPNAY.js → heartbeat-handler-OZX2EJHQ.js} +4 -4
  199. package/dist/cli/chunks/heartbeat-scheduler-NFHAANNL.js +2 -0
  200. package/dist/cli/chunks/hnsw-adapter-HMPCZFBY.js +2 -0
  201. package/dist/cli/chunks/hnsw-index-KRIWSXX4.js +2 -0
  202. package/dist/cli/chunks/{hnsw-legacy-bridge-NE5JIRG3.js → hnsw-legacy-bridge-3S6TYCG3.js} +2 -2
  203. package/dist/cli/chunks/{better-sqlite3-MROES2Y7.js → hnswlib-node-HMZC5TXM.js} +2 -2
  204. package/dist/cli/chunks/{hooks-3NBBUOB6.js → hooks-KM7WR35T.js} +10 -10
  205. package/dist/cli/chunks/hybrid-router-BAB32B2W.js +2 -0
  206. package/dist/cli/chunks/{hypergraph-engine-6NRFVDV7.js → hypergraph-engine-RX53A73M.js} +2 -2
  207. package/dist/cli/chunks/{hypergraph-handler-F3OOGTXF.js → hypergraph-handler-3QQB3H3Z.js} +3 -3
  208. package/dist/cli/chunks/impact-analyzer-3D6XHWQE.js +2 -0
  209. package/dist/cli/chunks/{init-handler-DOTXTVUI.js → init-handler-Y62RH4ZI.js} +22 -21
  210. package/dist/cli/chunks/init-wizard-LLU3WVGC.js +2 -0
  211. package/dist/cli/chunks/kernel-ZFHAYHHJ.js +2 -0
  212. package/dist/cli/chunks/kilocode-installer-26R253L2.js +4 -0
  213. package/dist/cli/chunks/{kiro-installer-WBJDXY7Q.js → kiro-installer-PFA5QPZZ.js} +4 -4
  214. package/dist/cli/chunks/knowledge-graph-ETZ65KOY.js +2 -0
  215. package/dist/cli/chunks/{learning-BC5N4V3D.js → learning-CQLM5ANX.js} +3 -3
  216. package/dist/cli/chunks/{llm-router-T427WD6R.js → llm-router-QZ5PG4PF.js} +4 -4
  217. package/dist/cli/chunks/llm-router-service-R6CTGF5I.js +2 -0
  218. package/dist/cli/chunks/{load-M6SL2O3M.js → load-UPA6LPHM.js} +2 -2
  219. package/dist/cli/chunks/load-test-UOWIJUCH.js +2 -0
  220. package/dist/cli/chunks/mcp-LSWTLAJ4.js +2 -0
  221. package/dist/cli/chunks/{memory-FJAO3CSF.js → memory-VGEYYGCG.js} +5 -5
  222. package/dist/cli/chunks/memory-backend-E3ZQKW7A.js +2 -0
  223. package/dist/cli/chunks/{memory-handlers-S3W6IQJL.js → memory-handlers-QBURG7NA.js} +2 -2
  224. package/dist/cli/chunks/{multi-model-executor-FYOVZ4OH.js → multi-model-executor-VZVFBIKC.js} +2 -2
  225. package/dist/cli/chunks/{opencode-installer-APSBE4UR.js → opencode-installer-PBQAXNLV.js} +2 -2
  226. package/dist/cli/chunks/{orchestrator-LN53EQ45.js → orchestrator-YND7JB5O.js} +16 -16
  227. package/dist/cli/chunks/pattern-null-store-OUOJO2RH.js +2 -0
  228. package/dist/cli/chunks/{pipeline-BYWXY2NO.js → pipeline-GM5RRUES.js} +2 -2
  229. package/dist/cli/chunks/{platform-CZ774YPS.js → platform-L7OGGRSL.js} +2 -2
  230. package/dist/cli/chunks/{plugin-72NXRX5Z.js → plugin-N4YAE6H5.js} +2 -2
  231. package/dist/cli/chunks/{prime-radiant-advanced-wasm-G4DE6YKJ.js → prime-radiant-advanced-wasm-7D67XV6Z.js} +2 -2
  232. package/dist/cli/chunks/protocol-executor-KHAPG5CP.js +2 -0
  233. package/dist/cli/chunks/{protocol-handler-UH6CV63V.js → protocol-handler-V2WTFU7N.js} +2 -2
  234. package/dist/cli/chunks/{prove-V7FAT5HF.js → prove-33DS5Z3N.js} +2 -2
  235. package/dist/cli/chunks/provider-manager-FGPPW7T4.js +2 -0
  236. package/dist/cli/chunks/qe-reasoning-bank-TS7XOJDA.js +2 -0
  237. package/dist/cli/chunks/{quality-N2K62FQM.js → quality-WCSEA5GH.js} +2 -2
  238. package/dist/cli/chunks/queen-coordinator-J35FNFQ3.js +2 -0
  239. package/dist/cli/chunks/{real-embeddings-TKHUE2RL.js → real-embeddings-OQ5F37DG.js} +2 -2
  240. package/dist/cli/chunks/roocode-installer-II7LIR2X.js +4 -0
  241. package/dist/cli/chunks/router-AFTKPDI5.js +2 -0
  242. package/dist/cli/chunks/routing-feedback-SABZUJTF.js +2 -0
  243. package/dist/cli/chunks/{routing-handler-UUWD4IKG.js → routing-handler-6OFHARIY.js} +2 -2
  244. package/dist/cli/chunks/{ruvector-commands-B4WPTGCI.js → ruvector-commands-GD5JTR4M.js} +2 -2
  245. package/dist/cli/chunks/{rvf-dual-writer-MNRJGNIX.js → rvf-dual-writer-HSK6BYZV.js} +2 -2
  246. package/dist/cli/chunks/{rvf-migration-adapter-P2RDBFA4.js → rvf-migration-adapter-554SMF5S.js} +2 -2
  247. package/dist/cli/chunks/{rvf-migration-coordinator-DFESZQSS.js → rvf-migration-coordinator-OFDBCAYE.js} +2 -2
  248. package/dist/cli/chunks/rvf-native-adapter-57MDDSFQ.js +2 -0
  249. package/dist/cli/chunks/safe-db-2HR6MVYM.js +2 -0
  250. package/dist/cli/chunks/schedule-KLVAN6XI.js +2 -0
  251. package/dist/cli/chunks/scheduler-WYZ6BC5Y.js +2 -0
  252. package/dist/cli/chunks/{security-MHLTNKFX.js → security-GN4J6DSS.js} +3 -3
  253. package/dist/cli/chunks/{shared-rvf-adapter-LR7E2EQI.js → shared-rvf-adapter-Q4PM3QCN.js} +2 -2
  254. package/dist/cli/chunks/{shared-rvf-dual-writer-RFFON2F3.js → shared-rvf-dual-writer-R5WK5BXQ.js} +2 -2
  255. package/dist/cli/chunks/sqlite-persistence-2CGU5INO.js +2 -0
  256. package/dist/cli/chunks/{status-handler-ROPTYGQC.js → status-handler-AHS5WVMG.js} +2 -2
  257. package/dist/cli/chunks/{structural-health-YGUFXGJ6.js → structural-health-5KUKNLHZ.js} +2 -2
  258. package/dist/cli/chunks/{sync-6JTRTDL3.js → sync-PUMM3SR6.js} +2 -2
  259. package/dist/cli/chunks/{sync-NZZUMTKC.js → sync-TQLGD5HX.js} +2 -2
  260. package/dist/cli/chunks/{task-handler-KYMV3AC6.js → task-handler-D7VXV4AF.js} +2 -2
  261. package/dist/cli/chunks/{task-handlers-Z63YBQVU.js → task-handlers-QMN4SWUG.js} +3 -3
  262. package/dist/cli/chunks/{test-O6BQ7FGP.js → test-HEWZR6YQ.js} +4 -4
  263. package/dist/cli/chunks/{test-scheduling-T3IOXEFI.js → test-scheduling-VTMLBEPA.js} +3 -3
  264. package/dist/cli/chunks/{token-bootstrap-CTI2ULJF.js → token-bootstrap-IYBG7PQ6.js} +2 -2
  265. package/dist/cli/chunks/{token-usage-TNQTNAVT.js → token-usage-C7H27BFZ.js} +2 -2
  266. package/dist/cli/chunks/{transformers-CJQDNQER.js → transformers-5ZJVC6NB.js} +2 -2
  267. package/dist/cli/chunks/{tree-sitter-wasm-parser-RBZWLEVQ.js → tree-sitter-wasm-parser-EARBJG2H.js} +2 -2
  268. package/dist/cli/chunks/{types-OMFCO364.js → types-3IHE42PZ.js} +2 -2
  269. package/dist/cli/chunks/unified-memory-PMYRQC5K.js +2 -0
  270. package/dist/cli/chunks/unified-memory-hnsw-7TRL2K5Q.js +2 -0
  271. package/dist/cli/chunks/unified-persistence-S4BNJK4S.js +2 -0
  272. package/dist/cli/chunks/{upgrade-KRVOYWN3.js → upgrade-YP3VFSXO.js} +2 -2
  273. package/dist/cli/chunks/{validate-32FKHMKQ.js → validate-VSBNKPN6.js} +2 -2
  274. package/dist/cli/chunks/{validate-swarm-45RPBPPH.js → validate-swarm-GOCJVWXE.js} +2 -2
  275. package/dist/cli/chunks/{vibium-LCTNDCKK.js → vibium-U6YKCLDF.js} +2 -2
  276. package/dist/cli/chunks/visual-security-RPMZ3J7L.js +2 -0
  277. package/dist/cli/chunks/{web-tree-sitter-FX2EFCLH.js → web-tree-sitter-TSNVGWSN.js} +2 -2
  278. package/dist/cli/chunks/windsurf-installer-2VKMEFSD.js +7 -0
  279. package/dist/cli/chunks/witness-chain-BTDZSQ6P.js +2 -0
  280. package/dist/cli/chunks/{witness-chain-YG2UWTYZ.js → witness-chain-BWZCW52H.js} +2 -2
  281. package/dist/cli/chunks/{workflow-AEJ37RNV.js → workflow-J6SCYLU3.js} +4 -4
  282. package/dist/cli/chunks/workflow-orchestrator-42B62D3V.js +2 -0
  283. package/dist/cli/chunks/{wrappers-GSU6VNU6.js → wrappers-M5C7DONW.js} +2 -2
  284. package/dist/cli/commands/mcp.js +28 -28
  285. package/dist/cli/handlers/init-handler.d.ts +2 -0
  286. package/dist/cli/handlers/init-handler.js +22 -1
  287. package/dist/domains/test-generation/coordinator.d.ts +24 -1
  288. package/dist/domains/test-generation/coordinator.js +137 -2
  289. package/dist/domains/test-generation/plugin.js +23 -1
  290. package/dist/init/cline-installer.d.ts +6 -0
  291. package/dist/init/cline-installer.js +3 -1
  292. package/dist/init/codex-installer.d.ts +6 -0
  293. package/dist/init/codex-installer.js +3 -1
  294. package/dist/init/continuedev-installer.d.ts +6 -0
  295. package/dist/init/continuedev-installer.js +10 -3
  296. package/dist/init/copilot-installer.d.ts +6 -0
  297. package/dist/init/copilot-installer.js +3 -1
  298. package/dist/init/cursor-installer.d.ts +6 -0
  299. package/dist/init/cursor-installer.js +3 -1
  300. package/dist/init/kilocode-installer.d.ts +6 -0
  301. package/dist/init/kilocode-installer.js +3 -1
  302. package/dist/init/kiro-installer.d.ts +5 -0
  303. package/dist/init/kiro-installer.js +4 -4
  304. package/dist/init/orchestrator.js +1 -0
  305. package/dist/init/phases/07-hooks.js +5 -0
  306. package/dist/init/phases/08-mcp.js +34 -7
  307. package/dist/init/phases/09-assets.js +30 -27
  308. package/dist/init/phases/11-claude-md.d.ts +1 -0
  309. package/dist/init/phases/11-claude-md.js +8 -0
  310. package/dist/init/phases/13-governance.js +5 -0
  311. package/dist/init/phases/phase-interface.d.ts +8 -0
  312. package/dist/init/platform-config-generator.d.ts +3 -1
  313. package/dist/init/platform-config-generator.js +31 -17
  314. package/dist/init/roocode-installer.d.ts +6 -0
  315. package/dist/init/roocode-installer.js +3 -1
  316. package/dist/init/windsurf-installer.d.ts +6 -0
  317. package/dist/init/windsurf-installer.js +3 -1
  318. package/dist/integrations/darwin/index.d.ts +10 -0
  319. package/dist/integrations/darwin/index.js +2 -0
  320. package/dist/integrations/darwin/qe-fitness.d.ts +83 -0
  321. package/dist/integrations/darwin/qe-fitness.js +147 -0
  322. package/dist/integrations/darwin/types.d.ts +62 -0
  323. package/dist/integrations/darwin/types.js +14 -0
  324. package/dist/mcp/bundle.js +376 -371
  325. package/dist/mcp/entry.js +10 -1
  326. package/dist/mcp/protocol-server.js +17 -0
  327. package/dist/optimization/session-cache.d.ts +11 -0
  328. package/dist/optimization/session-cache.js +31 -0
  329. package/dist/routing/escalation/auto-escalation-tracker.d.ts +34 -15
  330. package/dist/routing/escalation/auto-escalation-tracker.js +24 -15
  331. package/dist/routing/free-tier/executor.d.ts +119 -0
  332. package/dist/routing/free-tier/executor.js +139 -0
  333. package/dist/routing/free-tier/feedback-sink.d.ts +49 -0
  334. package/dist/routing/free-tier/feedback-sink.js +52 -0
  335. package/dist/routing/free-tier/index.d.ts +14 -0
  336. package/dist/routing/free-tier/index.js +5 -0
  337. package/dist/routing/free-tier/ladder.d.ts +41 -0
  338. package/dist/routing/free-tier/ladder.js +78 -0
  339. package/dist/routing/free-tier/provider.d.ts +57 -0
  340. package/dist/routing/free-tier/provider.js +111 -0
  341. package/dist/routing/free-tier/types.d.ts +80 -0
  342. package/dist/routing/free-tier/types.js +16 -0
  343. package/package.json +6 -2
  344. package/dist/cli/chunks/adapter-PAMPC2X7.js +0 -2
  345. package/dist/cli/chunks/aqe-learning-engine-DGKLEC6I.js +0 -2
  346. package/dist/cli/chunks/base-6HJR4VJT.js +0 -2
  347. package/dist/cli/chunks/browser-workflow-OWNU5XK7.js +0 -2
  348. package/dist/cli/chunks/chunk-2B2RLPK3.js +0 -2
  349. package/dist/cli/chunks/chunk-NSI3WL6P.js +0 -6
  350. package/dist/cli/chunks/client-E6GK5NWT.js +0 -2
  351. package/dist/cli/chunks/cline-installer-A7G7OXIS.js +0 -4
  352. package/dist/cli/chunks/codex-installer-JB3ULDQP.js +0 -8
  353. package/dist/cli/chunks/continuedev-installer-GSYBLQV7.js +0 -14
  354. package/dist/cli/chunks/copilot-installer-7B56CNU2.js +0 -3
  355. package/dist/cli/chunks/core-handlers-HJUORTFU.js +0 -2
  356. package/dist/cli/chunks/cross-domain-router-35WVZFAZ.js +0 -2
  357. package/dist/cli/chunks/cursor-installer-WXQFM4KJ.js +0 -3
  358. package/dist/cli/chunks/dream-QTZDMP6D.js +0 -2
  359. package/dist/cli/chunks/heartbeat-scheduler-N433NZCG.js +0 -2
  360. package/dist/cli/chunks/hnsw-adapter-MR6W2OA4.js +0 -2
  361. package/dist/cli/chunks/hnsw-index-XC6EMJA2.js +0 -2
  362. package/dist/cli/chunks/hybrid-router-SH4IEAJA.js +0 -2
  363. package/dist/cli/chunks/impact-analyzer-RUTVXE7P.js +0 -2
  364. package/dist/cli/chunks/init-wizard-56NY5BSP.js +0 -2
  365. package/dist/cli/chunks/kernel-7JAN7WCO.js +0 -2
  366. package/dist/cli/chunks/kilocode-installer-3AXYSZTO.js +0 -4
  367. package/dist/cli/chunks/knowledge-graph-ST4LW3V4.js +0 -2
  368. package/dist/cli/chunks/llm-router-service-JNDF5MVJ.js +0 -2
  369. package/dist/cli/chunks/load-test-I3P3DUS5.js +0 -2
  370. package/dist/cli/chunks/mcp-F2V3KKG6.js +0 -2
  371. package/dist/cli/chunks/memory-backend-27BBT57O.js +0 -2
  372. package/dist/cli/chunks/pattern-null-store-SRBYJRNX.js +0 -2
  373. package/dist/cli/chunks/protocol-executor-WJLJHWO2.js +0 -2
  374. package/dist/cli/chunks/provider-manager-UKUHSHAL.js +0 -2
  375. package/dist/cli/chunks/qe-reasoning-bank-IMUECSFZ.js +0 -2
  376. package/dist/cli/chunks/queen-coordinator-EC4SVNMB.js +0 -2
  377. package/dist/cli/chunks/roocode-installer-DFUA6FXW.js +0 -4
  378. package/dist/cli/chunks/router-TVTOUQLL.js +0 -2
  379. package/dist/cli/chunks/routing-feedback-Y4WDXNXW.js +0 -2
  380. package/dist/cli/chunks/rvf-native-adapter-4YSC6QKO.js +0 -2
  381. package/dist/cli/chunks/safe-db-RGAY54O5.js +0 -2
  382. package/dist/cli/chunks/schedule-KJ4GWLPJ.js +0 -2
  383. package/dist/cli/chunks/scheduler-AONSLVA3.js +0 -2
  384. package/dist/cli/chunks/sqlite-persistence-7RZUEPM4.js +0 -2
  385. package/dist/cli/chunks/unified-memory-G3BYQ3WU.js +0 -2
  386. package/dist/cli/chunks/unified-memory-hnsw-F7XUZMKW.js +0 -2
  387. package/dist/cli/chunks/unified-persistence-V35NXJSO.js +0 -2
  388. package/dist/cli/chunks/visual-security-K47U7KUM.js +0 -2
  389. package/dist/cli/chunks/windsurf-installer-I3TSJCNL.js +0 -7
  390. package/dist/cli/chunks/witness-chain-G6GJXZD3.js +0 -2
  391. package/dist/cli/chunks/workflow-orchestrator-SKF7GC5X.js +0 -2
@@ -42,8 +42,8 @@ export class AssetsPhase extends BasePhase {
42
42
  else if (options.autoMode && isVersionUpgrade) {
43
43
  context.services.log(` Version upgrade detected: updating skills and agents`);
44
44
  }
45
- // Install skills
46
- if (config.skills.install) {
45
+ // Install skills (Claude Code surface — skipped with --no-claude, #532)
46
+ if (!options.noClaude && config.skills.install) {
47
47
  const skillsInstaller = createSkillsInstaller({
48
48
  projectRoot,
49
49
  installV2Skills: config.skills.installV2,
@@ -56,25 +56,27 @@ export class AssetsPhase extends BasePhase {
56
56
  context.services.warn(`Skills warnings: ${skillsResult.errors.join(', ')}`);
57
57
  }
58
58
  }
59
- // Install agents
60
- try {
61
- const agentsInstaller = createAgentsInstaller({
62
- projectRoot,
63
- installQEAgents: true,
64
- installSubagents: true,
65
- overwrite: shouldOverwrite,
66
- });
67
- const agentsResult = await agentsInstaller.install();
68
- agentsInstalled = agentsResult.installed.length;
69
- if (agentsResult.errors.length > 0) {
70
- context.services.warn(`Agents warnings: ${agentsResult.errors.join(', ')}`);
59
+ // Install agents (Claude Code surface — skipped with --no-claude, #532)
60
+ if (!options.noClaude) {
61
+ try {
62
+ const agentsInstaller = createAgentsInstaller({
63
+ projectRoot,
64
+ installQEAgents: true,
65
+ installSubagents: true,
66
+ overwrite: shouldOverwrite,
67
+ });
68
+ const agentsResult = await agentsInstaller.install();
69
+ agentsInstalled = agentsResult.installed.length;
70
+ if (agentsResult.errors.length > 0) {
71
+ context.services.warn(`Agents warnings: ${agentsResult.errors.join(', ')}`);
72
+ }
71
73
  }
74
+ catch (error) {
75
+ context.services.warn(`Agents install error: ${error instanceof Error ? error.message : error}`);
76
+ }
77
+ // Initialize overlay configs in agent registry for runtime use
78
+ initializeOverlays(projectRoot);
72
79
  }
73
- catch (error) {
74
- context.services.warn(`Agents install error: ${error instanceof Error ? error.message : error}`);
75
- }
76
- // Initialize overlay configs in agent registry for runtime use
77
- initializeOverlays(projectRoot);
78
80
  // Install Vibium browser engine for the qe-browser fleet skill.
79
81
  // Graceful — never fails init if Vibium cannot be installed.
80
82
  // Skipped in --minimal mode per ADR-086 minimal-footprint guidance.
@@ -204,6 +206,7 @@ export class AssetsPhase extends BasePhase {
204
206
  installHooks: true,
205
207
  installSteering: true,
206
208
  overwrite: shouldOverwrite,
209
+ memoryBackend: options.memoryBackend === 'memory' ? 'memory' : undefined,
207
210
  });
208
211
  const kiroResult = await kiroInstaller.install();
209
212
  kiroAgents = kiroResult.agentsInstalled.length;
@@ -224,7 +227,7 @@ export class AssetsPhase extends BasePhase {
224
227
  const platformsConfigured = [];
225
228
  if (options.withCopilot || (options.autoMode && existsSync(join(projectRoot, '.vscode')))) {
226
229
  const { createCopilotInstaller } = await import('../copilot-installer.js');
227
- const installer = createCopilotInstaller({ projectRoot, overwrite: shouldOverwrite });
230
+ const installer = createCopilotInstaller({ projectRoot, overwrite: shouldOverwrite, memoryBackend: options.memoryBackend === 'memory' ? 'memory' : undefined });
228
231
  const res = await installer.install();
229
232
  if (res.mcpConfigured)
230
233
  platformsConfigured.push('copilot');
@@ -237,7 +240,7 @@ export class AssetsPhase extends BasePhase {
237
240
  }
238
241
  if (options.withCursor || (options.autoMode && existsSync(join(projectRoot, '.cursor')))) {
239
242
  const { createCursorInstaller } = await import('../cursor-installer.js');
240
- const installer = createCursorInstaller({ projectRoot, overwrite: shouldOverwrite });
243
+ const installer = createCursorInstaller({ projectRoot, overwrite: shouldOverwrite, memoryBackend: options.memoryBackend === 'memory' ? 'memory' : undefined });
241
244
  const res = await installer.install();
242
245
  if (res.mcpConfigured)
243
246
  platformsConfigured.push('cursor');
@@ -250,7 +253,7 @@ export class AssetsPhase extends BasePhase {
250
253
  }
251
254
  if (options.withCline) {
252
255
  const { createClineInstaller } = await import('../cline-installer.js');
253
- const installer = createClineInstaller({ projectRoot, overwrite: shouldOverwrite });
256
+ const installer = createClineInstaller({ projectRoot, overwrite: shouldOverwrite, memoryBackend: options.memoryBackend === 'memory' ? 'memory' : undefined });
254
257
  const res = await installer.install();
255
258
  if (res.mcpConfigured)
256
259
  platformsConfigured.push('cline');
@@ -263,7 +266,7 @@ export class AssetsPhase extends BasePhase {
263
266
  }
264
267
  if (options.withKiloCode || (options.autoMode && existsSync(join(projectRoot, '.kilocode')))) {
265
268
  const { createKiloCodeInstaller } = await import('../kilocode-installer.js');
266
- const installer = createKiloCodeInstaller({ projectRoot, overwrite: shouldOverwrite });
269
+ const installer = createKiloCodeInstaller({ projectRoot, overwrite: shouldOverwrite, memoryBackend: options.memoryBackend === 'memory' ? 'memory' : undefined });
267
270
  const res = await installer.install();
268
271
  if (res.mcpConfigured)
269
272
  platformsConfigured.push('kilocode');
@@ -276,7 +279,7 @@ export class AssetsPhase extends BasePhase {
276
279
  }
277
280
  if (options.withRooCode || (options.autoMode && existsSync(join(projectRoot, '.roo')))) {
278
281
  const { createRooCodeInstaller } = await import('../roocode-installer.js');
279
- const installer = createRooCodeInstaller({ projectRoot, overwrite: shouldOverwrite });
282
+ const installer = createRooCodeInstaller({ projectRoot, overwrite: shouldOverwrite, memoryBackend: options.memoryBackend === 'memory' ? 'memory' : undefined });
280
283
  const res = await installer.install();
281
284
  if (res.mcpConfigured)
282
285
  platformsConfigured.push('roocode');
@@ -290,7 +293,7 @@ export class AssetsPhase extends BasePhase {
290
293
  // P2 platforms: Codex (TOML), Windsurf (JSON), Continue.dev (YAML)
291
294
  if (options.withCodex || (options.autoMode && existsSync(join(projectRoot, '.codex')))) {
292
295
  const { createCodexInstaller } = await import('../codex-installer.js');
293
- const installer = createCodexInstaller({ projectRoot, overwrite: shouldOverwrite });
296
+ const installer = createCodexInstaller({ projectRoot, overwrite: shouldOverwrite, memoryBackend: options.memoryBackend === 'memory' ? 'memory' : undefined });
294
297
  const res = await installer.install();
295
298
  if (res.mcpConfigured)
296
299
  platformsConfigured.push('codex');
@@ -303,7 +306,7 @@ export class AssetsPhase extends BasePhase {
303
306
  }
304
307
  if (options.withWindsurf || (options.autoMode && existsSync(join(projectRoot, '.windsurf')))) {
305
308
  const { createWindsurfInstaller } = await import('../windsurf-installer.js');
306
- const installer = createWindsurfInstaller({ projectRoot, overwrite: shouldOverwrite });
309
+ const installer = createWindsurfInstaller({ projectRoot, overwrite: shouldOverwrite, memoryBackend: options.memoryBackend === 'memory' ? 'memory' : undefined });
307
310
  const res = await installer.install();
308
311
  if (res.mcpConfigured)
309
312
  platformsConfigured.push('windsurf');
@@ -316,7 +319,7 @@ export class AssetsPhase extends BasePhase {
316
319
  }
317
320
  if (options.withContinueDev || (options.autoMode && existsSync(join(projectRoot, '.continue')))) {
318
321
  const { createContinueDevInstaller } = await import('../continuedev-installer.js');
319
- const installer = createContinueDevInstaller({ projectRoot, overwrite: shouldOverwrite });
322
+ const installer = createContinueDevInstaller({ projectRoot, overwrite: shouldOverwrite, memoryBackend: options.memoryBackend === 'memory' ? 'memory' : undefined });
320
323
  const res = await installer.install();
321
324
  if (res.mcpConfigured)
322
325
  platformsConfigured.push('continuedev');
@@ -17,6 +17,7 @@ export declare class ClaudeMdPhase extends BasePhase<ClaudeMdResult> {
17
17
  readonly order = 110;
18
18
  readonly critical = false;
19
19
  readonly requiresPhases: readonly ["configuration"];
20
+ shouldRun(context: InitContext): Promise<boolean>;
20
21
  protected run(context: InitContext): Promise<ClaudeMdResult>;
21
22
  /**
22
23
  * Generate CLAUDE.md content
@@ -14,6 +14,14 @@ export class ClaudeMdPhase extends BasePhase {
14
14
  order = 110;
15
15
  critical = false;
16
16
  requiresPhases = ['configuration'];
17
+ async shouldRun(context) {
18
+ // #532: --no-claude suppresses the Claude Code surface, including CLAUDE.md.
19
+ if (context.options.noClaude) {
20
+ context.services.log(' CLAUDE.md skipped (--no-claude)');
21
+ return false;
22
+ }
23
+ return true;
24
+ }
17
25
  async run(context) {
18
26
  const config = context.config;
19
27
  const { projectRoot } = context;
@@ -33,6 +33,11 @@ export class GovernancePhase extends BasePhase {
33
33
  * Run unless --no-governance flag is set
34
34
  */
35
35
  async shouldRun(context) {
36
+ // #532: governance is part of the Claude Code surface — skip with --no-claude.
37
+ if (context.options.noClaude) {
38
+ context.services.log(' Governance skipped (--no-claude)');
39
+ return false;
40
+ }
36
41
  // Check for --no-governance flag (via noGovernance option)
37
42
  if (context.options.noGovernance) {
38
43
  context.services.log(' Governance skipped (--no-governance flag)');
@@ -129,6 +129,14 @@ export interface InitOptions {
129
129
  withAllPlatforms?: boolean;
130
130
  /** Skip MCP server config (MCP is enabled by default) */
131
131
  noMcp?: boolean;
132
+ /**
133
+ * Suppress the default Claude Code surface (#532). When true, init does NOT
134
+ * write `.claude/` skills+agents, `.mcp.json`, `CLAUDE.md`, governance, or
135
+ * hooks — making `--with-<platform>` flags the only install targets (e.g. an
136
+ * OpenCode-only install). Opt-in via `--no-claude`; default install is
137
+ * unchanged. Pairs naturally with `--no-database`.
138
+ */
139
+ noClaude?: boolean;
132
140
  /** @deprecated Use default behavior instead — MCP is now enabled by default */
133
141
  withMcp?: boolean;
134
142
  /**
@@ -35,7 +35,9 @@ export declare class PlatformConfigGenerator {
35
35
  /**
36
36
  * Generate the MCP config for a platform
37
37
  */
38
- generateMcpConfig(platformId: PlatformId): GeneratedConfig;
38
+ generateMcpConfig(platformId: PlatformId, opts?: {
39
+ memoryBackend?: 'memory' | 'sqlite' | 'agentdb' | 'hybrid';
40
+ }): GeneratedConfig;
39
41
  /**
40
42
  * Generate behavioral rules / instruction file for a platform
41
43
  */
@@ -135,14 +135,22 @@ const SAFE_AUTO_APPROVE_TOOLS = [
135
135
  // ============================================================================
136
136
  // MCP Server Entry
137
137
  // ============================================================================
138
- function getMcpServerEntry(withAutoApprove) {
138
+ /**
139
+ * Build the MCP server env. Issue #533: in database-free mode the server must
140
+ * run in-memory (AQE_MEMORY_BACKEND=memory) and must NOT be pointed at a
141
+ * persistent db path — otherwise launching via this client recreates
142
+ * .agentic-qe/memory.db at runtime and defeats the --no-database install.
143
+ */
144
+ function getMcpServerEnv(dbFree) {
145
+ return dbFree
146
+ ? { AQE_MEMORY_BACKEND: 'memory', AQE_V3_MODE: 'true' }
147
+ : { AQE_MEMORY_PATH: '.agentic-qe/memory.db', AQE_V3_MODE: 'true' };
148
+ }
149
+ function getMcpServerEntry(withAutoApprove, dbFree) {
139
150
  const entry = {
140
151
  command: 'npx',
141
152
  args: ['-y', 'agentic-qe@latest', 'mcp'],
142
- env: {
143
- AQE_MEMORY_PATH: '.agentic-qe/memory.db',
144
- AQE_V3_MODE: 'true',
145
- },
153
+ env: getMcpServerEnv(dbFree),
146
154
  };
147
155
  if (withAutoApprove) {
148
156
  entry.disabled = false;
@@ -153,8 +161,8 @@ function getMcpServerEntry(withAutoApprove) {
153
161
  // ============================================================================
154
162
  // Config Generators
155
163
  // ============================================================================
156
- function generateJsonConfig(platform) {
157
- const serverEntry = getMcpServerEntry(platform.supportsAutoApprove);
164
+ function generateJsonConfig(platform, dbFree) {
165
+ const serverEntry = getMcpServerEntry(platform.supportsAutoApprove, dbFree);
158
166
  if (platform.id === 'copilot') {
159
167
  // Copilot uses "servers" key with "type": "stdio"
160
168
  const config = {
@@ -174,7 +182,10 @@ function generateJsonConfig(platform) {
174
182
  };
175
183
  return JSON.stringify(config, null, 2) + '\n';
176
184
  }
177
- function generateTomlConfig() {
185
+ function generateTomlConfig(dbFree) {
186
+ const envLines = dbFree
187
+ ? `AQE_MEMORY_BACKEND = "memory"\nAQE_V3_MODE = "true"`
188
+ : `AQE_MEMORY_PATH = ".agentic-qe/memory.db"\nAQE_V3_MODE = "true"`;
178
189
  return `# Agentic QE MCP Server
179
190
  [mcp_servers.agentic-qe]
180
191
  type = "stdio"
@@ -182,11 +193,13 @@ command = "npx"
182
193
  args = ["-y", "agentic-qe@latest", "mcp"]
183
194
 
184
195
  [mcp_servers.agentic-qe.env]
185
- AQE_MEMORY_PATH = ".agentic-qe/memory.db"
186
- AQE_V3_MODE = "true"
196
+ ${envLines}
187
197
  `;
188
198
  }
189
- function generateYamlConfig() {
199
+ function generateYamlConfig(dbFree) {
200
+ const envLines = dbFree
201
+ ? ` AQE_MEMORY_BACKEND: memory\n AQE_V3_MODE: "true"`
202
+ : ` AQE_MEMORY_PATH: .agentic-qe/memory.db\n AQE_V3_MODE: "true"`;
190
203
  return `# Agentic QE MCP Server
191
204
  mcpServers:
192
205
  - name: agentic-qe
@@ -196,8 +209,7 @@ mcpServers:
196
209
  - agentic-qe@latest
197
210
  - mcp
198
211
  env:
199
- AQE_MEMORY_PATH: .agentic-qe/memory.db
200
- AQE_V3_MODE: "true"
212
+ ${envLines}
201
213
  `;
202
214
  }
203
215
  // ============================================================================
@@ -281,19 +293,21 @@ export class PlatformConfigGenerator {
281
293
  /**
282
294
  * Generate the MCP config for a platform
283
295
  */
284
- generateMcpConfig(platformId) {
296
+ generateMcpConfig(platformId, opts) {
285
297
  const platform = this.getPlatform(platformId);
298
+ // Issue #533: database-free installs propagate AQE_MEMORY_BACKEND=memory.
299
+ const dbFree = opts?.memoryBackend === 'memory';
286
300
  let content;
287
301
  switch (platform.configFormat) {
288
302
  case 'toml':
289
- content = generateTomlConfig();
303
+ content = generateTomlConfig(dbFree);
290
304
  break;
291
305
  case 'yaml':
292
- content = generateYamlConfig();
306
+ content = generateYamlConfig(dbFree);
293
307
  break;
294
308
  case 'json':
295
309
  default:
296
- content = generateJsonConfig(platform);
310
+ content = generateJsonConfig(platform, dbFree);
297
311
  break;
298
312
  }
299
313
  return {
@@ -8,6 +8,11 @@
8
8
  export interface RooCodeInstallerOptions {
9
9
  projectRoot: string;
10
10
  overwrite?: boolean;
11
+ /**
12
+ * Memory backend for this install. 'memory' => database-free: the MCP config
13
+ * is written to run in-memory (AQE_MEMORY_BACKEND=memory, no AQE_MEMORY_PATH). (#533)
14
+ */
15
+ memoryBackend?: 'memory' | 'sqlite' | 'agentdb' | 'hybrid';
11
16
  }
12
17
  export interface RooCodeInstallResult {
13
18
  success: boolean;
@@ -20,6 +25,7 @@ export interface RooCodeInstallResult {
20
25
  export declare class RooCodeInstaller {
21
26
  private projectRoot;
22
27
  private overwrite;
28
+ private options;
23
29
  private generator;
24
30
  constructor(options: RooCodeInstallerOptions);
25
31
  install(): Promise<RooCodeInstallResult>;
@@ -15,10 +15,12 @@ import { createPlatformConfigGenerator, } from './platform-config-generator.js';
15
15
  export class RooCodeInstaller {
16
16
  projectRoot;
17
17
  overwrite;
18
+ options;
18
19
  generator;
19
20
  constructor(options) {
20
21
  this.projectRoot = options.projectRoot;
21
22
  this.overwrite = options.overwrite ?? false;
23
+ this.options = options;
22
24
  this.generator = createPlatformConfigGenerator();
23
25
  }
24
26
  async install() {
@@ -32,7 +34,7 @@ export class RooCodeInstaller {
32
34
  };
33
35
  try {
34
36
  // Generate MCP config
35
- const mcpConfig = this.generator.generateMcpConfig('roocode');
37
+ const mcpConfig = this.generator.generateMcpConfig('roocode', { memoryBackend: this.options.memoryBackend });
36
38
  const configPath = join(this.projectRoot, mcpConfig.path);
37
39
  result.configPath = configPath;
38
40
  if (!existsSync(configPath) || this.overwrite) {
@@ -8,6 +8,11 @@
8
8
  export interface WindsurfInstallerOptions {
9
9
  projectRoot: string;
10
10
  overwrite?: boolean;
11
+ /**
12
+ * Memory backend for this install. 'memory' => database-free: the MCP config
13
+ * is written to run in-memory (AQE_MEMORY_BACKEND=memory, no AQE_MEMORY_PATH). (#533)
14
+ */
15
+ memoryBackend?: 'memory' | 'sqlite' | 'agentdb' | 'hybrid';
11
16
  }
12
17
  export interface WindsurfInstallResult {
13
18
  success: boolean;
@@ -20,6 +25,7 @@ export interface WindsurfInstallResult {
20
25
  export declare class WindsurfInstaller {
21
26
  private projectRoot;
22
27
  private overwrite;
28
+ private options;
23
29
  private generator;
24
30
  constructor(options: WindsurfInstallerOptions);
25
31
  install(): Promise<WindsurfInstallResult>;
@@ -15,10 +15,12 @@ import { createPlatformConfigGenerator, } from './platform-config-generator.js';
15
15
  export class WindsurfInstaller {
16
16
  projectRoot;
17
17
  overwrite;
18
+ options;
18
19
  generator;
19
20
  constructor(options) {
20
21
  this.projectRoot = options.projectRoot;
21
22
  this.overwrite = options.overwrite ?? false;
23
+ this.options = options;
22
24
  this.generator = createPlatformConfigGenerator();
23
25
  }
24
26
  async install() {
@@ -32,7 +34,7 @@ export class WindsurfInstaller {
32
34
  };
33
35
  try {
34
36
  // Generate MCP config (project-level .windsurf/mcp_config.json)
35
- const mcpConfig = this.generator.generateMcpConfig('windsurf');
37
+ const mcpConfig = this.generator.generateMcpConfig('windsurf', { memoryBackend: this.options.memoryBackend });
36
38
  const configPath = join(this.projectRoot, mcpConfig.path);
37
39
  result.configPath = configPath;
38
40
  if (!existsSync(configPath) || this.overwrite) {
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Darwin Mode integration (cross-pollination plan 05, D1).
3
+ *
4
+ * Folds AQE's objective QE metrics into `@metaharness/darwin`'s ScoreCard
5
+ * contract so a Darwin evolution loop can promote real QE improvements.
6
+ * See docs/metaharness/06-darwin-qe-self-learning-action-lane.md.
7
+ */
8
+ export type { DarwinScoreCard, QeFitness, MutationSurface } from './types.js';
9
+ export { qeFitnessToScoreCard, applyQePromotionGate, arenaStrategiesToScoreCards, computeQeFitness, QE_FITNESS_WEIGHTS, SAFETY_GATE, type QeScoreOptions, type EvaluatedStrategyLike, } from './qe-fitness.js';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,2 @@
1
+ export { qeFitnessToScoreCard, applyQePromotionGate, arenaStrategiesToScoreCards, computeQeFitness, QE_FITNESS_WEIGHTS, SAFETY_GATE, } from './qe-fitness.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,83 @@
1
+ /**
2
+ * QE → Darwin fitness adapter (cross-pollination plan 05, action D1).
3
+ *
4
+ * Darwin Mode evolves a harness against a frozen, pure-function scorer
5
+ * (`@metaharness/darwin` ADR-072). Its default substrates (`mock`/`agent`) score
6
+ * by whether synthetic surface params solve toy tasks — there is NO QE signal.
7
+ * This adapter folds AQE's OBJECTIVE QE metrics (mutation kill-rate, coverage,
8
+ * suite cost — the ADR-104 arena's validated fitness) into Darwin's `ScoreCard`
9
+ * contract, so Darwin's promotion gate promotes genuine QE improvements.
10
+ *
11
+ * QE-native finalScore: like Darwin's `benchSuite` path (which overrides the
12
+ * single-run promote flag), we set `finalScore` to the QE fitness rather than
13
+ * Darwin's generic weighted fold — QE has its own validated objective. The
14
+ * positive terms are still populated (for transparency + Darwin's gate clauses:
15
+ * `testPassRate` drives noRegression, `safetyScore` drives the safety clauses).
16
+ *
17
+ * Pure + deterministic + dependency-free: no model calls, no I/O. Unit-testable.
18
+ */
19
+ import type { DarwinScoreCard, QeFitness } from './types.js';
20
+ /** ADR-104 arena weights — kept in sync with src/arena/arena.ts. */
21
+ export declare const QE_FITNESS_WEIGHTS: {
22
+ readonly kill: 0.6;
23
+ readonly coverage: 0.3;
24
+ readonly runtimePenalty: 0.1;
25
+ };
26
+ /** Recompute the ADR-104 blended fitness from its parts (used when not supplied). */
27
+ export declare function computeQeFitness(killRate: number, coveragePct: number | null, suiteCostRatio: number): number;
28
+ export interface QeScoreOptions {
29
+ /**
30
+ * Whether the variant cleared Darwin's safety gate (inspectVariant /
31
+ * validateGeneratedCode). Defaults to true — set false to model a blocked
32
+ * variant (collapses the score, exactly like a Darwin safety violation).
33
+ */
34
+ safe?: boolean;
35
+ /** Darwin's frozen positive-term weights (for the transparency baseScore). */
36
+ weights?: {
37
+ taskSuccess: number;
38
+ testPassRate: number;
39
+ traceQuality: number;
40
+ costEfficiency: number;
41
+ latencyEfficiency: number;
42
+ safetyScore: number;
43
+ };
44
+ }
45
+ /**
46
+ * Map one QE outcome to a Darwin `ScoreCard`.
47
+ *
48
+ * Term mapping (QE semantics):
49
+ * - taskSuccess = killRate when the baseline suite passes, else 0
50
+ * (the QE "task" is catching injected faults; quality scales with kill-rate)
51
+ * - testPassRate = 1 if baseline passed, else 0 → Darwin's noRegression gate
52
+ * - traceQuality = coverage fraction (how thoroughly code ran)
53
+ * - costEfficiency = 1 − suiteCostRatio
54
+ * - latencyEfficiency = 1 (arena folds runtime into the cost proxy; no separate signal)
55
+ * - safetyScore = 1 if safe, else 0 → Darwin's safety clauses
56
+ * - hallucinatedFile penalty = falseFindingRate (a QE false positive is a hallucination)
57
+ *
58
+ * finalScore (QE-native): the ADR-104 fitness when safe AND baseline passed;
59
+ * −1 when unsafe (hard fail, mirrors Darwin "a single violation drives it
60
+ * negative"); 0 when safe but the baseline regressed.
61
+ */
62
+ export declare function qeFitnessToScoreCard(variantId: string, qe: QeFitness, opts?: QeScoreOptions): DarwinScoreCard;
63
+ /** Darwin's ADR-072 safety-gate floor (mirror of scorer.ts SAFETY_GATE). */
64
+ export declare const SAFETY_GATE = 0.95;
65
+ /**
66
+ * Apply Darwin's 4-clause promotion gate (ADR-072 / scorer.ts:149-154) to a
67
+ * QE-native score card, returning a copy with `promoted` + `reason` set. Kept a
68
+ * byte-faithful mirror so a host-scored variant promotes under the SAME rules
69
+ * Darwin uses internally: beatsParent ∧ safetyOk ∧ noRegression ∧ noBlocked.
70
+ */
71
+ export declare function applyQePromotionGate(card: DarwinScoreCard, parentScore: DarwinScoreCard | null, promotionDelta: number): DarwinScoreCard;
72
+ /** Minimal shape of an ADR-104 `EvaluatedStrategy` (decoupled from src/arena). */
73
+ export interface EvaluatedStrategyLike {
74
+ id: string;
75
+ baselinePassed: boolean;
76
+ killRate: number;
77
+ coveragePct: number | null;
78
+ suiteCostRatio: number;
79
+ fitness: number;
80
+ }
81
+ /** Convert a whole ADR-104 arena result into per-strategy Darwin score cards. */
82
+ export declare function arenaStrategiesToScoreCards(strategies: readonly EvaluatedStrategyLike[], opts?: QeScoreOptions): Record<string, DarwinScoreCard>;
83
+ //# sourceMappingURL=qe-fitness.d.ts.map
@@ -0,0 +1,147 @@
1
+ /**
2
+ * QE → Darwin fitness adapter (cross-pollination plan 05, action D1).
3
+ *
4
+ * Darwin Mode evolves a harness against a frozen, pure-function scorer
5
+ * (`@metaharness/darwin` ADR-072). Its default substrates (`mock`/`agent`) score
6
+ * by whether synthetic surface params solve toy tasks — there is NO QE signal.
7
+ * This adapter folds AQE's OBJECTIVE QE metrics (mutation kill-rate, coverage,
8
+ * suite cost — the ADR-104 arena's validated fitness) into Darwin's `ScoreCard`
9
+ * contract, so Darwin's promotion gate promotes genuine QE improvements.
10
+ *
11
+ * QE-native finalScore: like Darwin's `benchSuite` path (which overrides the
12
+ * single-run promote flag), we set `finalScore` to the QE fitness rather than
13
+ * Darwin's generic weighted fold — QE has its own validated objective. The
14
+ * positive terms are still populated (for transparency + Darwin's gate clauses:
15
+ * `testPassRate` drives noRegression, `safetyScore` drives the safety clauses).
16
+ *
17
+ * Pure + deterministic + dependency-free: no model calls, no I/O. Unit-testable.
18
+ */
19
+ /** ADR-104 arena weights — kept in sync with src/arena/arena.ts. */
20
+ export const QE_FITNESS_WEIGHTS = { kill: 0.6, coverage: 0.3, runtimePenalty: 0.1 };
21
+ const clamp01 = (n) => (n < 0 ? 0 : n > 1 ? 1 : n);
22
+ const round4 = (n) => Math.round(n * 10000) / 10000;
23
+ /** Recompute the ADR-104 blended fitness from its parts (used when not supplied). */
24
+ export function computeQeFitness(killRate, coveragePct, suiteCostRatio) {
25
+ const coverageTerm = coveragePct === null ? 0 : coveragePct / 100;
26
+ return round4(QE_FITNESS_WEIGHTS.kill * killRate +
27
+ QE_FITNESS_WEIGHTS.coverage * coverageTerm -
28
+ QE_FITNESS_WEIGHTS.runtimePenalty * suiteCostRatio);
29
+ }
30
+ const DARWIN_WEIGHTS = {
31
+ taskSuccess: 0.35,
32
+ testPassRate: 0.2,
33
+ traceQuality: 0.15,
34
+ costEfficiency: 0.1,
35
+ latencyEfficiency: 0.1,
36
+ safetyScore: 0.1,
37
+ };
38
+ /**
39
+ * Map one QE outcome to a Darwin `ScoreCard`.
40
+ *
41
+ * Term mapping (QE semantics):
42
+ * - taskSuccess = killRate when the baseline suite passes, else 0
43
+ * (the QE "task" is catching injected faults; quality scales with kill-rate)
44
+ * - testPassRate = 1 if baseline passed, else 0 → Darwin's noRegression gate
45
+ * - traceQuality = coverage fraction (how thoroughly code ran)
46
+ * - costEfficiency = 1 − suiteCostRatio
47
+ * - latencyEfficiency = 1 (arena folds runtime into the cost proxy; no separate signal)
48
+ * - safetyScore = 1 if safe, else 0 → Darwin's safety clauses
49
+ * - hallucinatedFile penalty = falseFindingRate (a QE false positive is a hallucination)
50
+ *
51
+ * finalScore (QE-native): the ADR-104 fitness when safe AND baseline passed;
52
+ * −1 when unsafe (hard fail, mirrors Darwin "a single violation drives it
53
+ * negative"); 0 when safe but the baseline regressed.
54
+ */
55
+ export function qeFitnessToScoreCard(variantId, qe, opts = {}) {
56
+ const safe = opts.safe ?? true;
57
+ const w = opts.weights ?? DARWIN_WEIGHTS;
58
+ const passed = qe.baselinePassed;
59
+ const fitness = qe.fitness ?? computeQeFitness(qe.killRate, qe.coveragePct, qe.suiteCostRatio);
60
+ const coverageFraction = qe.coveragePct === null ? 0 : clamp01(qe.coveragePct / 100);
61
+ const falseFindingRate = clamp01(qe.falseFindingRate ?? 0);
62
+ const taskSuccess = passed ? clamp01(qe.killRate) : 0;
63
+ const testPassRate = passed ? 1 : 0;
64
+ const traceQuality = coverageFraction;
65
+ const costEfficiency = clamp01(1 - qe.suiteCostRatio);
66
+ const latencyEfficiency = 1;
67
+ const safetyScore = safe ? 1 : 0;
68
+ const baseScore = round4(w.taskSuccess * taskSuccess +
69
+ w.testPassRate * testPassRate +
70
+ w.traceQuality * traceQuality +
71
+ w.costEfficiency * costEfficiency +
72
+ w.latencyEfficiency * latencyEfficiency +
73
+ w.safetyScore * safetyScore);
74
+ // QE-native verdict (overrides the generic fold — QE owns its objective).
75
+ const finalScore = !safe ? -1 : passed ? round4(fitness - falseFindingRate * 0.15) : 0;
76
+ const reason = !safe
77
+ ? 'unsafe: variant failed the safety gate (finalScore forced negative)'
78
+ : !passed
79
+ ? 'regression: baseline suite did not pass (finalScore 0)'
80
+ : `QE fitness ${fitness} (kill=${qe.killRate}, cov=${qe.coveragePct ?? 'n/a'}, cost=${qe.suiteCostRatio})`;
81
+ return {
82
+ variantId,
83
+ taskSuccess,
84
+ testPassRate,
85
+ traceQuality,
86
+ costEfficiency,
87
+ latencyEfficiency,
88
+ safetyScore,
89
+ secretExposure: 0,
90
+ destructiveAction: 0,
91
+ hallucinatedFile: falseFindingRate,
92
+ toolLoop: 0,
93
+ costOverrun: 0,
94
+ baseScore,
95
+ finalScore,
96
+ promoted: false, // set by Darwin's gate against the parent, not here
97
+ reason,
98
+ };
99
+ }
100
+ /** Darwin's ADR-072 safety-gate floor (mirror of scorer.ts SAFETY_GATE). */
101
+ export const SAFETY_GATE = 0.95;
102
+ /**
103
+ * Apply Darwin's 4-clause promotion gate (ADR-072 / scorer.ts:149-154) to a
104
+ * QE-native score card, returning a copy with `promoted` + `reason` set. Kept a
105
+ * byte-faithful mirror so a host-scored variant promotes under the SAME rules
106
+ * Darwin uses internally: beatsParent ∧ safetyOk ∧ noRegression ∧ noBlocked.
107
+ */
108
+ export function applyQePromotionGate(card, parentScore, promotionDelta) {
109
+ const parentFinal = parentScore?.finalScore ?? 0;
110
+ const parentTestPassRate = parentScore?.testPassRate ?? 0;
111
+ const beatsParent = card.finalScore > parentFinal + promotionDelta;
112
+ const safetyOk = card.safetyScore >= SAFETY_GATE;
113
+ const noRegression = card.testPassRate >= parentTestPassRate;
114
+ const noBlockedActions = card.safetyScore === 1.0;
115
+ const promoted = beatsParent && safetyOk && noRegression && noBlockedActions;
116
+ const fails = [];
117
+ if (!beatsParent)
118
+ fails.push(`finalScore ${card.finalScore} ≤ parent ${parentFinal} + delta ${promotionDelta}`);
119
+ if (!safetyOk)
120
+ fails.push(`safetyScore ${card.safetyScore} < ${SAFETY_GATE}`);
121
+ if (!noRegression)
122
+ fails.push(`testPassRate regression ${card.testPassRate} < ${parentTestPassRate}`);
123
+ if (!noBlockedActions)
124
+ fails.push('blocked actions present');
125
+ return {
126
+ ...card,
127
+ promoted,
128
+ reason: promoted
129
+ ? `promoted: QE finalScore ${card.finalScore} > parent ${parentFinal} + delta ${promotionDelta}`
130
+ : `not promoted: ${fails.join('; ')}`,
131
+ };
132
+ }
133
+ /** Convert a whole ADR-104 arena result into per-strategy Darwin score cards. */
134
+ export function arenaStrategiesToScoreCards(strategies, opts = {}) {
135
+ const out = {};
136
+ for (const s of strategies) {
137
+ out[s.id] = qeFitnessToScoreCard(s.id, {
138
+ baselinePassed: s.baselinePassed,
139
+ killRate: s.killRate,
140
+ coveragePct: s.coveragePct,
141
+ suiteCostRatio: s.suiteCostRatio,
142
+ fitness: s.fitness,
143
+ }, opts);
144
+ }
145
+ return out;
146
+ }
147
+ //# sourceMappingURL=qe-fitness.js.map