agentic-qe 3.15.5 → 3.15.7
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.
- package/.claude/skills/qe-court/evals/fixtures/seeded-mutant-delivery/README.md +9 -2
- package/.claude/skills/qe-court/evals/qe-court.yaml +3 -2
- package/.claude/skills/qe-quality-assessment/schemas/output.json +12 -2
- package/.claude/skills/skills-manifest.json +1 -1
- package/CHANGELOG.md +262 -0
- package/README.md +2 -0
- package/assets/skills/qe-court/evals/fixtures/seeded-mutant-delivery/README.md +9 -2
- package/assets/skills/qe-court/evals/qe-court.yaml +3 -2
- package/assets/skills/qe-quality-assessment/schemas/output.json +12 -2
- package/assets/skills/skills-manifest.json +1 -1
- package/dist/cli/bundle.js +8 -6
- package/dist/cli/chunks/adapter-PEOUNYXJ.js +2 -0
- package/dist/cli/chunks/{agent-booster-wasm-CCTTGCQS.js → agent-booster-wasm-OS5G7KMQ.js} +2 -2
- package/dist/cli/chunks/{agent-handler-DHYUF3NX.js → agent-handler-PI4I7PME.js} +2 -2
- package/dist/cli/chunks/{agent-memory-branch-642W7CYX.js → agent-memory-branch-J7TXHX4U.js} +2 -2
- package/dist/cli/chunks/aqe-learning-engine-DHKZI5RX.js +2 -0
- package/dist/cli/chunks/{arena-MUCC7UUN.js → arena-FXESDCFR.js} +4 -4
- package/dist/cli/chunks/{arena-NW2JVAFY.js → arena-OWUGXKNT.js} +2 -2
- package/dist/cli/chunks/{audit-VKQTZJAA.js → audit-EPAWLYIZ.js} +3 -3
- package/dist/cli/chunks/base-QZWK3D5P.js +2 -0
- package/dist/cli/chunks/{better-sqlite3-7ZUFVWLQ.js → better-sqlite3-IYVR5EQY.js} +2 -2
- package/dist/cli/chunks/{brain-handler-7LKAWSBI.js → brain-handler-3W2E6TC6.js} +3 -3
- package/dist/cli/chunks/{branch-enumerator-HUNXJKM4.js → branch-enumerator-HU7VACJ4.js} +2 -2
- package/dist/cli/chunks/{browser-ZSZEYUDP.js → browser-72XOR6E2.js} +2 -2
- package/dist/cli/chunks/browser-workflow-ITPX72RX.js +2 -0
- package/dist/cli/chunks/{chunk-PVAE65B4.js → chunk-2423JAA5.js} +1 -1
- package/dist/cli/chunks/{chunk-VLOIEVER.js → chunk-24CENUT4.js} +3 -3
- package/dist/cli/chunks/chunk-2AYBYXOA.js +4 -0
- package/dist/cli/chunks/{chunk-FWYJ6UDX.js → chunk-2E3XWKEU.js} +2 -2
- package/dist/cli/chunks/{chunk-L375O3CZ.js → chunk-2RJYA6WK.js} +2 -2
- package/dist/cli/chunks/{chunk-SDWMLT7B.js → chunk-2YVJ5OUL.js} +5 -5
- package/dist/cli/chunks/{chunk-WN55MNZ2.js → chunk-34JLY3U6.js} +2 -2
- package/dist/cli/chunks/{chunk-6ZIDZ4TJ.js → chunk-3JD2USUH.js} +2 -2
- package/dist/cli/chunks/{chunk-5BOZCMXZ.js → chunk-3RM46XFP.js} +1 -1
- package/dist/cli/chunks/{chunk-UE22ODHN.js → chunk-44DPYNPE.js} +1 -1
- package/dist/cli/chunks/{chunk-AUZXRFOX.js → chunk-4DIZ5BT6.js} +2 -2
- package/dist/cli/chunks/{chunk-RUSLEOMC.js → chunk-4G2VNW4C.js} +2 -2
- package/dist/cli/chunks/{chunk-VML4SG3X.js → chunk-56ZKQYZY.js} +3 -3
- package/dist/cli/chunks/{chunk-FHUJCVT3.js → chunk-5KCBX225.js} +2 -2
- package/dist/cli/chunks/chunk-5KS7HA37.js +2 -0
- package/dist/cli/chunks/{chunk-IJ2EXSMO.js → chunk-5PBRBS7D.js} +2 -2
- package/dist/cli/chunks/chunk-5Q22XPTH.js +2 -0
- package/dist/cli/chunks/{chunk-PDPEMBFV.js → chunk-634D2ENF.js} +2 -2
- package/dist/cli/chunks/{chunk-BYXNHGQC.js → chunk-6AYRAOCA.js} +2 -2
- package/dist/cli/chunks/{chunk-ORTBRO7F.js → chunk-6BO3WCK7.js} +2 -2
- package/dist/cli/chunks/{chunk-6LG5UEQE.js → chunk-6FEQ73BF.js} +2 -2
- package/dist/cli/chunks/{chunk-JYY7AYGA.js → chunk-6JT73S5B.js} +1 -1
- package/dist/cli/chunks/{chunk-LNO5IWGH.js → chunk-6OS7HREG.js} +1 -1
- package/dist/cli/chunks/{chunk-XNEEYXR2.js → chunk-6PKCQXEW.js} +2 -2
- package/dist/cli/chunks/{chunk-KHCALIFP.js → chunk-7EX4DEQR.js} +2 -2
- package/dist/cli/chunks/chunk-7UCVYYWL.js +3 -0
- package/dist/cli/chunks/chunk-AAA4SHEG.js +2 -0
- package/dist/cli/chunks/{chunk-DTJODGCE.js → chunk-AXO7OOOA.js} +2 -2
- package/dist/cli/chunks/{chunk-ZT3GUYM5.js → chunk-B7M323VL.js} +2 -2
- package/dist/cli/chunks/{chunk-L6SVCNXK.js → chunk-BB7OLQKO.js} +1 -1
- package/dist/cli/chunks/{chunk-6UYN5PHA.js → chunk-BTIBXGVQ.js} +4 -4
- package/dist/cli/chunks/chunk-BTYKGVJ5.js +2 -0
- package/dist/cli/chunks/{chunk-6JFGB2JB.js → chunk-C2CUPJGR.js} +1 -1
- package/dist/cli/chunks/{chunk-EAYQCBXL.js → chunk-C2MDBBFF.js} +3 -3
- package/dist/cli/chunks/{chunk-3AYYGR6W.js → chunk-CG5DZCOZ.js} +1 -1
- package/dist/cli/chunks/chunk-CIFWOMNX.js +2 -0
- package/dist/cli/chunks/{chunk-Y2WMPEUP.js → chunk-CWPRU7ZI.js} +2 -2
- package/dist/cli/chunks/{chunk-XNHB6TLC.js → chunk-CXTJ47QS.js} +2 -2
- package/dist/cli/chunks/{chunk-4PT5KNXL.js → chunk-DCJW2DPL.js} +4 -4
- package/dist/cli/chunks/{chunk-VCKDVOPD.js → chunk-DGK6GQMO.js} +2 -2
- package/dist/cli/chunks/{chunk-47GEI2LT.js → chunk-DVPGBDBP.js} +3 -3
- package/dist/cli/chunks/chunk-EB2PP6X2.js +2 -0
- package/dist/cli/chunks/{chunk-CXOXUBYU.js → chunk-ECSLJJOQ.js} +1 -1
- package/dist/cli/chunks/{chunk-A2WOQO2N.js → chunk-ED32XJ5R.js} +2 -2
- package/dist/cli/chunks/{chunk-35MDATQE.js → chunk-EDU72RTW.js} +1 -1
- package/dist/cli/chunks/{chunk-PCCIZFD7.js → chunk-EL75G2A3.js} +1 -1
- package/dist/cli/chunks/{chunk-4UXPDV7E.js → chunk-EV2BYY6T.js} +1 -1
- package/dist/cli/chunks/{chunk-3YASZPLO.js → chunk-F62EKVVC.js} +2 -2
- package/dist/cli/chunks/{chunk-AQN5EDBM.js → chunk-FTTFJ7SJ.js} +1 -1
- package/dist/cli/chunks/chunk-FVBFASOD.js +2 -0
- package/dist/cli/chunks/{chunk-QXY3IRBW.js → chunk-G762PEFO.js} +26 -26
- package/dist/cli/chunks/{chunk-A5J4XJS6.js → chunk-G7YTZTGU.js} +1 -1
- package/dist/cli/chunks/{chunk-YINFES3E.js → chunk-GY2SAIXP.js} +2 -2
- package/dist/cli/chunks/chunk-H4WHDFB5.js +4 -0
- package/dist/cli/chunks/chunk-HLZATDD2.js +2 -0
- package/dist/cli/chunks/{chunk-7EZLOC4K.js → chunk-HPG7354V.js} +2 -2
- package/dist/cli/chunks/{chunk-HLFDC4SF.js → chunk-HSDOOFV7.js} +1 -1
- package/dist/cli/chunks/{chunk-MQGEZA2A.js → chunk-HTWIGQL4.js} +2 -2
- package/dist/cli/chunks/{chunk-HBYQYGXP.js → chunk-HXBAQKMH.js} +2 -2
- package/dist/cli/chunks/chunk-HZFT3P5B.js +2 -0
- package/dist/cli/chunks/{chunk-MS3Z2CP5.js → chunk-I7H4IP7T.js} +2 -2
- package/dist/cli/chunks/{chunk-IHFUEPZH.js → chunk-IARSGAG7.js} +2 -2
- package/dist/cli/chunks/{chunk-ZTC5FBL6.js → chunk-IC2WSSD5.js} +8 -8
- package/dist/cli/chunks/{chunk-GKPRECLL.js → chunk-ICPALF4Q.js} +2 -2
- package/dist/cli/chunks/{chunk-FQKEZVN6.js → chunk-IWQQIXHO.js} +2 -2
- package/dist/cli/chunks/{chunk-DWZI3IVB.js → chunk-IYQ7XNE5.js} +2 -2
- package/dist/cli/chunks/{chunk-ZLBBX24Q.js → chunk-J26GADQE.js} +418 -412
- package/dist/cli/chunks/{chunk-NMJVG22Z.js → chunk-J43DV3ME.js} +1 -1
- package/dist/cli/chunks/{chunk-EUEHBERE.js → chunk-JFPXCQNP.js} +1 -1
- package/dist/cli/chunks/{chunk-3YNP33GB.js → chunk-JK6B3ULP.js} +2 -2
- package/dist/cli/chunks/{chunk-FBEXG4HD.js → chunk-JPHDMHFG.js} +2 -2
- package/dist/cli/chunks/{chunk-U6OVPMQX.js → chunk-JVYPXW6Y.js} +2 -2
- package/dist/cli/chunks/{chunk-X52TMBHU.js → chunk-JY4AIEZ7.js} +1 -1
- package/dist/cli/chunks/{chunk-MNQ36MAF.js → chunk-JY4WLN3K.js} +2 -2
- package/dist/cli/chunks/{chunk-E4VIVMDL.js → chunk-JYXOFN3E.js} +2 -2
- package/dist/cli/chunks/{chunk-CR2JUANW.js → chunk-K7W55B7Q.js} +3 -3
- package/dist/cli/chunks/{chunk-WLIYWBQR.js → chunk-KPOPBUUJ.js} +2 -2
- package/dist/cli/chunks/{chunk-DXVZBJE4.js → chunk-LDXQRNTT.js} +1 -1
- package/dist/cli/chunks/{chunk-W3ZGNNDV.js → chunk-LDZWIV2O.js} +1 -1
- package/dist/cli/chunks/{chunk-VRJPH3LG.js → chunk-LGBN7TKC.js} +2 -2
- package/dist/cli/chunks/{chunk-RUJLVJDE.js → chunk-LMEU64TR.js} +2 -2
- package/dist/cli/chunks/{chunk-JI77KJP7.js → chunk-LP4AS2E4.js} +1 -1
- package/dist/cli/chunks/{chunk-QPV3OKX2.js → chunk-LQOVA4YX.js} +2 -2
- package/dist/cli/chunks/{chunk-NLDFNAOS.js → chunk-LVEX4GID.js} +2 -2
- package/dist/cli/chunks/{chunk-U4TV75AC.js → chunk-M63QB466.js} +2 -2
- package/dist/cli/chunks/{chunk-SAPIRK2G.js → chunk-MDC4G323.js} +1 -1
- package/dist/cli/chunks/chunk-MHZPC4HJ.js +2 -0
- package/dist/cli/chunks/{chunk-WR64BKUE.js → chunk-MJJC6HUK.js} +1 -1
- package/dist/cli/chunks/{chunk-Y7GPLOXB.js → chunk-MKFQNCXI.js} +2 -2
- package/dist/cli/chunks/{chunk-BZFT4QDQ.js → chunk-MMXG3LL6.js} +2 -2
- package/dist/cli/chunks/{chunk-HGBJ2QQ4.js → chunk-MNCF643K.js} +2 -2
- package/dist/cli/chunks/{chunk-XIE7OHML.js → chunk-MNZFEIE5.js} +1 -1
- package/dist/cli/chunks/{chunk-FE3AIZI6.js → chunk-MQ6OF6DU.js} +1 -1
- package/dist/cli/chunks/{chunk-3QD7U3FY.js → chunk-MRHM4COP.js} +2 -2
- package/dist/cli/chunks/{chunk-663ZFPUL.js → chunk-N4PMPSJJ.js} +2 -2
- package/dist/cli/chunks/{chunk-DL5JENWD.js → chunk-NZQPP533.js} +3 -3
- package/dist/cli/chunks/{chunk-4XSCZVON.js → chunk-OA4GR3EZ.js} +2 -2
- package/dist/cli/chunks/{chunk-IJOFZBXD.js → chunk-OJEZNLB6.js} +2 -2
- package/dist/cli/chunks/{chunk-OU4ZAWCC.js → chunk-ONVALAZN.js} +2 -2
- package/dist/cli/chunks/{chunk-A337MD3C.js → chunk-PEKDSJBC.js} +2 -2
- package/dist/cli/chunks/{chunk-D3G2NN7F.js → chunk-PG64YV6C.js} +66 -65
- package/dist/cli/chunks/{chunk-VYDNLQJN.js → chunk-PQV7E7XH.js} +2 -2
- package/dist/cli/chunks/chunk-PTK66HEY.js +2 -0
- package/dist/cli/chunks/{chunk-LRASYSGV.js → chunk-PUECC4WI.js} +2 -2
- package/dist/cli/chunks/{chunk-3OAQPN2N.js → chunk-PXZKPUW6.js} +2 -2
- package/dist/cli/chunks/chunk-PYHYOKYT.js +2 -0
- package/dist/cli/chunks/{chunk-WT3JC4A6.js → chunk-PZG3542B.js} +2 -2
- package/dist/cli/chunks/{chunk-RMJ7PJOS.js → chunk-Q2T5FXEA.js} +2 -2
- package/dist/cli/chunks/chunk-QJE6ZW2X.js +6 -0
- package/dist/cli/chunks/{chunk-2XYTS2WY.js → chunk-QNQSM2OG.js} +2 -2
- package/dist/cli/chunks/{chunk-EVCFUYYK.js → chunk-QQT6QENQ.js} +9 -9
- package/dist/cli/chunks/{chunk-VH3EB6ZG.js → chunk-QVG4ZDXX.js} +3 -3
- package/dist/cli/chunks/chunk-QWLTHFZW.js +16 -0
- package/dist/cli/chunks/{chunk-GGDKOJVF.js → chunk-RCYLCA7E.js} +10 -6
- package/dist/cli/chunks/{chunk-BMWAWZAN.js → chunk-REEIFA6A.js} +2 -2
- package/dist/cli/chunks/{chunk-Y2E3IJ53.js → chunk-RNYX4CPI.js} +2 -2
- package/dist/cli/chunks/{chunk-BY646JOM.js → chunk-RORZ5O5Z.js} +2 -2
- package/dist/cli/chunks/{chunk-JNMUVBAJ.js → chunk-RRPYWBFX.js} +2 -2
- package/dist/cli/chunks/{chunk-XQRE2HWM.js → chunk-RXAFLK34.js} +2 -2
- package/dist/cli/chunks/{chunk-UXZEVIFX.js → chunk-SQHLC6I5.js} +1 -1
- package/dist/cli/chunks/{chunk-DPV33C77.js → chunk-SSP2B2WR.js} +2 -2
- package/dist/cli/chunks/chunk-SX2YSHE7.js +115 -0
- package/dist/cli/chunks/chunk-T3ZDVU6F.js +5 -0
- package/dist/cli/chunks/{chunk-JCC7QEKZ.js → chunk-T6W5APYP.js} +1 -1
- package/dist/cli/chunks/{chunk-DEGWCUMY.js → chunk-TU4LIIOP.js} +2 -2
- package/dist/cli/chunks/{chunk-CQMHDAJS.js → chunk-UBYCR3O4.js} +2 -2
- package/dist/cli/chunks/{chunk-PHP4UJYP.js → chunk-UCLN6AME.js} +1 -1
- package/dist/cli/chunks/{chunk-HIUNCO2W.js → chunk-UIYKR2SA.js} +2 -2
- package/dist/cli/chunks/{chunk-ONCH5AXU.js → chunk-UUHIEM2M.js} +18 -18
- package/dist/cli/chunks/{chunk-CFPR24YK.js → chunk-UY3REQOK.js} +2 -2
- package/dist/cli/chunks/{chunk-FNAYDITO.js → chunk-V2SAEMZY.js} +1 -1
- package/dist/cli/chunks/{chunk-JANLATHN.js → chunk-V5NGBQAQ.js} +2 -2
- package/dist/cli/chunks/{chunk-644DFAGS.js → chunk-VCA6YYII.js} +1 -1
- package/dist/cli/chunks/chunk-VJRZFWR5.js +2 -0
- package/dist/cli/chunks/{chunk-7BIYJRQJ.js → chunk-VKPKYMCT.js} +2 -2
- package/dist/cli/chunks/{chunk-2KWI3MT3.js → chunk-VNW5Q2CX.js} +2 -2
- package/dist/cli/chunks/chunk-VUFRTGML.js +3 -0
- package/dist/cli/chunks/{chunk-PHAQWAEV.js → chunk-W4X2VTIY.js} +2 -2
- package/dist/cli/chunks/{chunk-PURHGLEC.js → chunk-WTLIEBDH.js} +1 -1
- package/dist/cli/chunks/{chunk-3SH23PS3.js → chunk-WUV5RZUI.js} +2 -2
- package/dist/cli/chunks/{chunk-OGYWWZU7.js → chunk-WXI2STKQ.js} +2 -2
- package/dist/cli/chunks/{chunk-OW42F2TX.js → chunk-XEWXYGJI.js} +2 -2
- package/dist/cli/chunks/{chunk-DPYDUKVZ.js → chunk-XNSQZ3O7.js} +2 -2
- package/dist/cli/chunks/{chunk-B2UHTA4Q.js → chunk-XTJMY3KS.js} +1 -1
- package/dist/cli/chunks/{chunk-NF6AFIAX.js → chunk-XXAVQACL.js} +1 -1
- package/dist/cli/chunks/{chunk-V7GNUVYI.js → chunk-Y4SAWE45.js} +1 -1
- package/dist/cli/chunks/{chunk-WC47GICZ.js → chunk-Y6A46M3B.js} +2 -2
- package/dist/cli/chunks/{chunk-3DTEQHFB.js → chunk-YDZJWDR6.js} +3 -3
- package/dist/cli/chunks/{chunk-KJ3KBP24.js → chunk-YFOBQSOW.js} +2 -2
- package/dist/cli/chunks/{chunk-MB4VFAJC.js → chunk-YK3NOC2R.js} +2 -2
- package/dist/cli/chunks/{chunk-GRIPCYW5.js → chunk-YUC7RJGR.js} +1 -1
- package/dist/cli/chunks/{chunk-HPLMX62I.js → chunk-Z3VJLWRR.js} +2 -2
- package/dist/cli/chunks/{chunk-EOR3RECZ.js → chunk-ZLVQSEZK.js} +2 -2
- package/dist/cli/chunks/{chunk-4AZP7ZCW.js → chunk-ZRLNACPY.js} +2 -2
- package/dist/cli/chunks/{chunk-OQDC7GCM.js → chunk-ZTMZFF25.js} +2 -2
- package/dist/cli/chunks/chunk-ZUMDDMDE.js +3 -0
- package/dist/cli/chunks/ci-5HEXJZ2C.js +81 -0
- package/dist/cli/chunks/{ci-config-XDDZOOEI.js → ci-config-WU4NPDAM.js} +2 -2
- package/dist/cli/chunks/{ci-output-7ZUQI4U6.js → ci-output-BJQVXX5E.js} +2 -2
- package/dist/cli/chunks/{circuit-breaker-ALXKCFAL.js → circuit-breaker-3BMGTQCB.js} +2 -2
- package/dist/cli/chunks/{claude-flow-setup-RL7K2NI2.js → claude-flow-setup-GVDGJWMU.js} +2 -2
- package/dist/cli/chunks/client-S7GNYTZ5.js +2 -0
- package/dist/cli/chunks/{cline-installer-2Z2QQKC3.js → cline-installer-V4MRGWVA.js} +2 -2
- package/dist/cli/chunks/{code-QSZTDINQ.js → code-A3TGQPEO.js} +3 -3
- package/dist/cli/chunks/{code-index-extractor-5CGR5D3Y.js → code-index-extractor-YJQSYWD3.js} +2 -2
- package/dist/cli/chunks/{codex-installer-7JLSEDE5.js → codex-installer-7N7UQPAH.js} +2 -2
- package/dist/cli/chunks/{completions-U4NBSXEB.js → completions-PPGVYLZS.js} +2 -2
- package/dist/cli/chunks/{complexity-analyzer-WYZD2YSY.js → complexity-analyzer-XZTFLYV5.js} +2 -2
- package/dist/cli/chunks/{continuedev-installer-UPXINJFT.js → continuedev-installer-Z5I57RAH.js} +2 -2
- package/dist/cli/chunks/{copilot-installer-WIVYQRIF.js → copilot-installer-F5YZ6BHB.js} +2 -2
- package/dist/cli/chunks/core-handlers-CUEPOQIO.js +2 -0
- package/dist/cli/chunks/{cost-tracker-RIN4JDDM.js → cost-tracker-GO33ZQAP.js} +2 -2
- package/dist/cli/chunks/coverage-GSHKLY74.js +49 -0
- package/dist/cli/chunks/cross-domain-router-CXN5QFEV.js +2 -0
- package/dist/cli/chunks/{cursor-installer-POM7NGCC.js → cursor-installer-JJ7IVJZB.js} +2 -2
- package/dist/cli/chunks/daemon-3DQCKRYO.js +10 -0
- package/dist/cli/chunks/{daemon-HFGKQ6LB.js → daemon-IRL7QRNE.js} +5 -5
- package/dist/cli/chunks/{dag-attention-scheduler-HJXM7Q5P.js → dag-attention-scheduler-ORXSUHPA.js} +2 -2
- package/dist/cli/chunks/{detect-XKQGLZYN.js → detect-RHU62KRI.js} +2 -2
- package/dist/cli/chunks/{dist-node-SSKB53QL.js → dist-node-3VKV4Z6C.js} +2 -2
- package/dist/cli/chunks/{domain-handler-6BNDHATU.js → domain-handler-SFIML4FK.js} +2 -2
- package/dist/cli/chunks/{domain-plugins-DOX54YE3.js → domain-plugins-CJ4FA3OC.js} +2 -2
- package/dist/cli/chunks/{domain-transfer-FW4ZX3Z7.js → domain-transfer-BCRKPCAA.js} +2 -2
- package/dist/cli/chunks/dream-5AUNJW24.js +2 -0
- package/dist/cli/chunks/embed-and-insert-pattern-VL3HFLPV.js +3 -0
- package/dist/cli/chunks/{eval-K7E4XXBS.js → eval-GGKRI4P5.js} +2 -2
- package/dist/cli/chunks/experience-capture-middleware-F72TIRQY.js +40 -0
- package/dist/cli/chunks/{fast-paths-5JXXTYAG.js → fast-paths-7KOOF3MA.js} +2 -2
- package/dist/cli/chunks/{feature-flags-2CR3CO23.js → feature-flags-FNHBTHBH.js} +2 -2
- package/dist/cli/chunks/{feature-flags-RB72LHOJ.js → feature-flags-IOZEWWFU.js} +2 -2
- package/dist/cli/chunks/file-discovery-AYWF357I.js +2 -0
- package/dist/cli/chunks/{fleet-SDU7QEOA.js → fleet-QX5KXTRC.js} +3 -3
- package/dist/cli/chunks/{gnn-wrapper-AWCFODUV.js → gnn-wrapper-OH2DOQP7.js} +2 -2
- package/dist/cli/chunks/{heartbeat-handler-A4PJ3NFP.js → heartbeat-handler-W67NXTNE.js} +4 -4
- package/dist/cli/chunks/heartbeat-scheduler-7ZIDVXIP.js +2 -0
- package/dist/cli/chunks/hnsw-adapter-P77OC7FM.js +2 -0
- package/dist/cli/chunks/hnsw-index-3LBOTQAW.js +2 -0
- package/dist/cli/chunks/{hnsw-legacy-bridge-KRS7SSFM.js → hnsw-legacy-bridge-6MLLOGOE.js} +2 -2
- package/dist/cli/chunks/{hnswlib-node-OGGCPKPO.js → hnswlib-node-4UDISJ3G.js} +2 -2
- package/dist/cli/chunks/{hooks-XNRNMUBW.js → hooks-NOQJWQ4P.js} +43 -43
- package/dist/cli/chunks/hybrid-backend-LOM54PDD.js +2 -0
- package/dist/cli/chunks/{hypergraph-engine-X35LTXYT.js → hypergraph-engine-2OD3APVP.js} +2 -2
- package/dist/cli/chunks/{hypergraph-handler-M6THKAG6.js → hypergraph-handler-5AZGMBUM.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-QSDJVBPS.js +2 -0
- package/dist/cli/chunks/init-guard-SMGJ45PW.js +2 -0
- package/dist/cli/chunks/init-handler-5T4MP2NM.js +88 -0
- package/dist/cli/chunks/init-wizard-MK2325JJ.js +2 -0
- package/dist/cli/chunks/kernel-2NJQQ2KT.js +2 -0
- package/dist/cli/chunks/{kilocode-installer-TEPR2ZJD.js → kilocode-installer-RLZYLVQJ.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-RUKHGDEE.js → kiro-installer-LFZOC7VD.js} +2 -2
- package/dist/cli/chunks/knowledge-graph-SDISHO62.js +2 -0
- package/dist/cli/chunks/learning-XRPGLUWR.js +122 -0
- package/dist/cli/chunks/{llm-router-7GECMDCP.js → llm-router-OMK5HYPH.js} +4 -4
- package/dist/cli/chunks/llm-router-service-YTCMRBAN.js +2 -0
- package/dist/cli/chunks/{load-NTJ4Y4ZR.js → load-XADC7KCU.js} +2 -2
- package/dist/cli/chunks/load-test-RPKHLBCC.js +2 -0
- package/dist/cli/chunks/{mcp-4335GTTG.js → mcp-PIBKSSVU.js} +2 -2
- package/dist/cli/chunks/{memory-HYC4M4XS.js → memory-AP7EZERS.js} +5 -5
- package/dist/cli/chunks/memory-backend-BZXFO4JZ.js +2 -0
- package/dist/cli/chunks/memory-handlers-MOFDNB6E.js +2 -0
- package/dist/cli/chunks/{multi-model-executor-T7FYKM6T.js → multi-model-executor-7JJ2FZ33.js} +2 -2
- package/dist/cli/chunks/{opencode-installer-3USXVT5M.js → opencode-installer-ZZZ6EBYJ.js} +2 -2
- package/dist/cli/chunks/orchestrator-2H2YKSGJ.js +452 -0
- package/dist/cli/chunks/pattern-null-store-4PRPIOR6.js +2 -0
- package/dist/cli/chunks/{pattern-usage-recorder-CMZLPX2K.js → pattern-usage-recorder-7MJJWC2Z.js} +2 -2
- package/dist/cli/chunks/{pipeline-BTRZOVSL.js → pipeline-LIE5BWQY.js} +2 -2
- package/dist/cli/chunks/{platform-2MCRKC25.js → platform-SMYUNLGX.js} +2 -2
- package/dist/cli/chunks/plugin-LJDIXQNT.js +27 -0
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-TXFEMBP6.js → prime-radiant-advanced-wasm-RIDNE5D2.js} +2 -2
- package/dist/cli/chunks/project-root-NBIQF63D.js +2 -0
- package/dist/cli/chunks/protocol-executor-BRPGIYWQ.js +2 -0
- package/dist/cli/chunks/{protocol-handler-DZ26OYVZ.js → protocol-handler-YVM66DLI.js} +2 -2
- package/dist/cli/chunks/{prove-QWONEJWX.js → prove-ZBDT52GD.js} +2 -2
- package/dist/cli/chunks/qe-reasoning-bank-GDZACWKW.js +2 -0
- package/dist/cli/chunks/{quality-WFH54FY7.js → quality-DUKXGDDO.js} +2 -2
- package/dist/cli/chunks/{quality-gate-ONJB7XU7.js → quality-gate-SM3RXF4V.js} +3 -3
- package/dist/cli/chunks/queen-coordinator-LDKLBPD5.js +2 -0
- package/dist/cli/chunks/real-embeddings-4QLQZDB5.js +2 -0
- package/dist/cli/chunks/{ref-validation-HW5Y55ZC.js → ref-validation-M3EO32YQ.js} +2 -2
- package/dist/cli/chunks/{roocode-installer-5OABDNZT.js → roocode-installer-S6Q5OLV5.js} +2 -2
- package/dist/cli/chunks/router-H5YSIRH2.js +2 -0
- package/dist/cli/chunks/routing-feedback-5R36TJDH.js +2 -0
- package/dist/cli/chunks/{routing-handler-CVHVOQTC.js → routing-handler-55FMUACP.js} +2 -2
- package/dist/cli/chunks/{ruvector-commands-KKDKFGIQ.js → ruvector-commands-QATKAAPK.js} +2 -2
- package/dist/cli/chunks/rvf-dual-writer-TT2DBQQQ.js +2 -0
- package/dist/cli/chunks/rvf-migration-adapter-BCLFJKSK.js +2 -0
- package/dist/cli/chunks/rvf-migration-coordinator-RFXFU6JD.js +2 -0
- package/dist/cli/chunks/rvf-native-adapter-UXI66OQJ.js +2 -0
- package/dist/cli/chunks/{rvf-store-integrity-UGUXKIFX.js → rvf-store-integrity-PKDVXQAW.js} +2 -2
- package/dist/cli/chunks/safe-db-MSTD2GDH.js +2 -0
- package/dist/cli/chunks/schedule-KST6KIFD.js +2 -0
- package/dist/cli/chunks/scheduler-FTQS6YK3.js +2 -0
- package/dist/cli/chunks/security-CMRB6WA3.js +18 -0
- package/dist/cli/chunks/shared-rvf-adapter-YHLLNFHF.js +2 -0
- package/dist/cli/chunks/{shared-rvf-dual-writer-ZSHYG5IA.js → shared-rvf-dual-writer-4BGDVPQ7.js} +2 -2
- package/dist/cli/chunks/sqlite-persistence-ZX5QFDMR.js +2 -0
- package/dist/cli/chunks/{standalone-memory-MHZEEYMK.js → standalone-memory-LUHKQAGM.js} +2 -2
- package/dist/cli/chunks/{status-handler-JKXPJ22K.js → status-handler-S6S5PNR7.js} +2 -2
- package/dist/cli/chunks/{structural-health-J4RKCYWF.js → structural-health-PQ7NZAJ4.js} +2 -2
- package/dist/cli/chunks/{sync-PDPORHVN.js → sync-Q6KRQXU6.js} +2 -2
- package/dist/cli/chunks/sync-S744AEJC.js +2 -0
- package/dist/cli/chunks/{task-handler-VERADM44.js → task-handler-GAMGEHUW.js} +2 -2
- package/dist/cli/chunks/{task-handlers-4RUCWUR2.js → task-handlers-6CRDEELN.js} +3 -3
- package/dist/cli/chunks/{test-DMBJFQNL.js → test-FNH67DBK.js} +12 -12
- package/dist/cli/chunks/{test-scheduling-LUPTVGCD.js → test-scheduling-NZA5SHK6.js} +3 -3
- package/dist/cli/chunks/token-bootstrap-CXKG55JD.js +2 -0
- package/dist/cli/chunks/{token-usage-VOA34IKM.js → token-usage-M7WWEDJX.js} +2 -2
- package/dist/cli/chunks/{transformers-GU4TYAN5.js → transformers-2IFMCK6A.js} +2 -2
- package/dist/cli/chunks/{tree-sitter-wasm-parser-MZPXAH7C.js → tree-sitter-wasm-parser-NMNA6RJC.js} +2 -2
- package/dist/cli/chunks/{types-K4FLXR2K.js → types-N7FWTOLD.js} +2 -2
- package/dist/cli/chunks/unified-memory-2Z2F446J.js +2 -0
- package/dist/cli/chunks/unified-memory-hnsw-A4EWYPJQ.js +2 -0
- package/dist/cli/chunks/unified-persistence-Z6N6JZFA.js +2 -0
- package/dist/cli/chunks/{upgrade-M3ATDRMK.js → upgrade-KDB5RGL7.js} +2 -2
- package/dist/cli/chunks/{validate-AAP773B3.js → validate-KMUV5FUA.js} +2 -2
- package/dist/cli/chunks/{validate-swarm-7RGAZX5F.js → validate-swarm-ANZWRCJU.js} +2 -2
- package/dist/cli/chunks/visual-security-GXYZV7KR.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-GQMRHGGI.js → web-tree-sitter-SXXC4NMS.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-HG6HF2GF.js → windsurf-installer-2LWSKMBU.js} +2 -2
- package/dist/cli/chunks/witness-chain-52PEIEGK.js +2 -0
- package/dist/cli/chunks/{witness-chain-WKU3ZIBQ.js → witness-chain-JJMSJFZP.js} +2 -2
- package/dist/cli/chunks/witness-chain-repair-OX7VFW6T.js +2 -0
- package/dist/cli/chunks/{witness-chain-verifier-Q2KW3QEQ.js → witness-chain-verifier-QLSMXHAZ.js} +2 -2
- package/dist/cli/chunks/witness-key-manager-3DS4L7LE.js +2 -0
- package/dist/cli/chunks/{workflow-CX6SHFBW.js → workflow-ARWAMHD3.js} +28 -28
- package/dist/cli/chunks/workflow-orchestrator-DORMQMG7.js +2 -0
- package/dist/cli/chunks/wrappers-J6KGTUSJ.js +2 -0
- package/dist/cli/commands/ci.js +47 -25
- package/dist/cli/commands/coverage.d.ts +1 -28
- package/dist/cli/commands/coverage.js +63 -134
- package/dist/cli/commands/daemon.js +7 -1
- package/dist/cli/commands/hooks-handlers/stats-hooks.d.ts +15 -0
- package/dist/cli/commands/hooks-handlers/stats-hooks.js +54 -2
- package/dist/cli/commands/learning.js +50 -9
- package/dist/cli/commands/security.d.ts +16 -0
- package/dist/cli/commands/security.js +76 -9
- package/dist/cli/commands/test.js +6 -7
- package/dist/cli/commands/workflow.js +9 -5
- package/dist/cli/handlers/init-guard.d.ts +33 -0
- package/dist/cli/handlers/init-guard.js +66 -0
- package/dist/cli/handlers/init-handler.d.ts +3 -0
- package/dist/cli/handlers/init-handler.js +64 -54
- package/dist/cli/handlers/interfaces.js +5 -1
- package/dist/cli/index.js +11 -0
- package/dist/cli/scheduler/persistent-scheduler.d.ts +6 -2
- package/dist/cli/scheduler/persistent-scheduler.js +107 -41
- package/dist/cli/utils/ci-output.d.ts +13 -1
- package/dist/cli/utils/ci-output.js +21 -2
- package/dist/cli/utils/coverage-data.d.ts +3 -0
- package/dist/cli/utils/coverage-data.js +14 -39
- package/dist/cli/utils/coverage-verdict.d.ts +130 -0
- package/dist/cli/utils/coverage-verdict.js +193 -0
- package/dist/cli/utils/file-discovery.js +5 -0
- package/dist/coordination/deterministic-actions.js +24 -13
- package/dist/coordination/handlers/code-intelligence-handlers.d.ts +8 -0
- package/dist/coordination/handlers/code-intelligence-handlers.js +39 -0
- package/dist/coordination/handlers/coverage-handlers.js +34 -6
- package/dist/coordination/handlers/coverage-runner.d.ts +22 -0
- package/dist/coordination/handlers/coverage-runner.js +105 -10
- package/dist/coordination/handlers/coverage-target.d.ts +1 -0
- package/dist/coordination/handlers/coverage-target.js +4 -1
- package/dist/coordination/handlers/handler-types.d.ts +9 -0
- package/dist/coordination/handlers/handler-utils.d.ts +14 -1
- package/dist/coordination/handlers/handler-utils.js +46 -22
- package/dist/coordination/handlers/quality-handlers.js +108 -18
- package/dist/coordination/handlers/security-handlers.js +22 -6
- package/dist/coordination/handlers/test-execution-handlers.js +4 -1
- package/dist/coordination/protocols/defect-investigation.d.ts +2 -1
- package/dist/coordination/protocols/defect-investigation.js +12 -3
- package/dist/coordination/protocols/quality-gate.js +10 -6
- package/dist/coordination/protocols/security-audit.js +11 -0
- package/dist/coordination/result-saver.d.ts +31 -0
- package/dist/coordination/result-saver.js +146 -46
- package/dist/coordination/task-executor.d.ts +7 -0
- package/dist/coordination/task-executor.js +32 -3
- package/dist/domains/code-intelligence/plugin.js +4 -0
- package/dist/domains/code-intelligence/services/metric-collector/index.js +9 -2
- package/dist/domains/code-intelligence/services/metric-collector/interfaces.d.ts +21 -0
- package/dist/domains/code-intelligence/services/metric-collector/interfaces.js +25 -0
- package/dist/domains/code-intelligence/services/metric-collector/loc-counter.d.ts +12 -0
- package/dist/domains/code-intelligence/services/metric-collector/loc-counter.js +69 -3
- package/dist/domains/code-intelligence/services/metric-collector/test-counter.js +4 -1
- package/dist/domains/coverage-analysis/collected-metrics.d.ts +35 -0
- package/dist/domains/coverage-analysis/collected-metrics.js +42 -0
- package/dist/domains/coverage-analysis/coordinator.js +18 -6
- package/dist/domains/coverage-analysis/interfaces.d.ts +44 -0
- package/dist/domains/coverage-analysis/interfaces.js +6 -1
- package/dist/domains/coverage-analysis/services/coverage-analyzer.js +61 -34
- package/dist/domains/coverage-analysis/services/gap-detector.js +7 -2
- package/dist/domains/defect-intelligence/plugin.js +4 -0
- package/dist/domains/defect-intelligence/services/defect-predictor.js +13 -8
- package/dist/domains/learning-optimization/coordinator.js +4 -0
- package/dist/domains/learning-optimization/plugin.js +4 -0
- package/dist/domains/quality-assessment/coordinator-rl-integration.d.ts +14 -0
- package/dist/domains/quality-assessment/coordinator-rl-integration.js +54 -16
- package/dist/domains/quality-assessment/coordinator.js +10 -6
- package/dist/domains/quality-assessment/coverage-report-event.d.ts +32 -8
- package/dist/domains/quality-assessment/coverage-report-event.js +28 -6
- package/dist/domains/quality-assessment/index.d.ts +1 -1
- package/dist/domains/quality-assessment/interfaces.d.ts +50 -0
- package/dist/domains/quality-assessment/quality-evidence.d.ts +49 -3
- package/dist/domains/quality-assessment/quality-evidence.js +62 -0
- package/dist/domains/quality-assessment/services/quality-analyzer.d.ts +23 -2
- package/dist/domains/quality-assessment/services/quality-analyzer.js +197 -112
- package/dist/domains/quality-assessment/services/quality-gate.js +12 -3
- package/dist/domains/security-compliance/dependency-advisory-engine.d.ts +52 -0
- package/dist/domains/security-compliance/dependency-advisory-engine.js +113 -0
- package/dist/domains/security-compliance/interfaces.d.ts +30 -0
- package/dist/domains/security-compliance/plugin.d.ts +7 -1
- package/dist/domains/security-compliance/plugin.js +19 -0
- package/dist/domains/security-compliance/services/scanners/dast-scanner.js +22 -16
- package/dist/domains/security-compliance/services/scanners/dependency-resolver.d.ts +71 -0
- package/dist/domains/security-compliance/services/scanners/dependency-resolver.js +232 -0
- package/dist/domains/security-compliance/services/scanners/dependency-scanner.d.ts +21 -6
- package/dist/domains/security-compliance/services/scanners/dependency-scanner.js +142 -64
- package/dist/domains/security-compliance/services/scanners/lockfile-versions.d.ts +43 -0
- package/dist/domains/security-compliance/services/scanners/lockfile-versions.js +248 -0
- package/dist/domains/security-compliance/services/scanners/scanner-types.d.ts +30 -2
- package/dist/domains/security-compliance/services/security-auditor.d.ts +19 -6
- package/dist/domains/security-compliance/services/security-auditor.js +133 -92
- package/dist/domains/test-execution/interfaces.d.ts +10 -6
- package/dist/domains/test-execution/plugin.js +4 -0
- package/dist/domains/test-execution/services/retry-handler.js +17 -6
- package/dist/domains/test-execution/services/test-executor.d.ts +1 -0
- package/dist/domains/test-execution/services/test-executor.js +239 -109
- package/dist/domains/test-generation/coordinator.js +4 -0
- package/dist/domains/test-generation/plugin.js +4 -0
- package/dist/feedback/coverage-learner.js +4 -1
- package/dist/feedback/coverage-session-provenance.d.ts +29 -0
- package/dist/feedback/coverage-session-provenance.js +39 -0
- package/dist/init/orchestrator.js +2 -0
- package/dist/init/phases/09-assets.d.ts +4 -0
- package/dist/init/phases/09-assets.js +35 -0
- package/dist/init/retired-assets.d.ts +86 -0
- package/dist/init/retired-assets.js +230 -0
- package/dist/init/skills-installer.d.ts +2 -0
- package/dist/init/skills-installer.js +4 -0
- package/dist/init/types.d.ts +3 -0
- package/dist/integrations/ruvector/rvf-native-adapter.d.ts +2 -0
- package/dist/integrations/ruvector/rvf-native-adapter.js +5 -0
- package/dist/integrations/ruvector/server-client.js +4 -12
- package/dist/kernel/project-root.d.ts +17 -0
- package/dist/kernel/project-root.js +54 -2
- package/dist/kernel/shared-dirs.d.ts +66 -0
- package/dist/kernel/shared-dirs.js +180 -0
- package/dist/learning/daily-log.js +2 -1
- package/dist/learning/experience-capture-middleware.d.ts +22 -0
- package/dist/learning/experience-capture-middleware.js +35 -0
- package/dist/learning/learnable-result.d.ts +16 -0
- package/dist/learning/learnable-result.js +24 -0
- package/dist/learning/pattern-mutation-error.d.ts +8 -0
- package/dist/learning/pattern-mutation-error.js +12 -0
- package/dist/learning/qe-reasoning-bank.d.ts +10 -0
- package/dist/learning/qe-reasoning-bank.js +50 -1
- package/dist/learning/rvf-reconcile.d.ts +39 -0
- package/dist/learning/rvf-reconcile.js +40 -0
- package/dist/learning/sqlite-persistence.d.ts +14 -0
- package/dist/learning/sqlite-persistence.js +36 -0
- package/dist/mcp/bundle.js +908 -896
- package/dist/mcp/handlers/domain-handler-configs.d.ts +35 -1
- package/dist/mcp/handlers/domain-handler-configs.js +42 -4
- package/dist/mcp/handlers/handler-factory.js +40 -14
- package/dist/mcp/protocol-server.js +29 -3
- package/dist/mcp/tool-cache-scope.d.ts +31 -0
- package/dist/mcp/tool-cache-scope.js +71 -0
- package/dist/mcp/tools/code-intelligence/analyze.js +5 -3
- package/dist/mcp/types.d.ts +10 -0
- package/dist/optimization/session-cache.d.ts +19 -1
- package/dist/optimization/session-cache.js +36 -2
- package/dist/plugins/cache.js +2 -1
- package/dist/plugins/sources/github.js +2 -1
- package/dist/plugins/sources/npm.js +2 -1
- package/dist/shared/aqe-managed-dirs.d.ts +24 -0
- package/dist/shared/aqe-managed-dirs.js +56 -0
- package/dist/shared/events/domain-events.d.ts +18 -3
- package/dist/shared/events/domain-events.js +4 -0
- package/dist/shared/http/http-client.d.ts +6 -0
- package/dist/shared/http/http-client.js +13 -15
- package/dist/shared/io/file-reader.d.ts +26 -0
- package/dist/shared/io/file-reader.js +111 -17
- package/dist/shared/llm/providers/response-deadline.d.ts +7 -2
- package/dist/shared/llm/providers/response-deadline.js +17 -5
- package/dist/shared/metrics/code-metrics.d.ts +24 -0
- package/dist/shared/metrics/code-metrics.js +93 -6
- package/dist/shared/metrics/index.d.ts +1 -1
- package/dist/shared/security/index.d.ts +2 -2
- package/dist/shared/security/index.js +1 -1
- package/dist/shared/security/osv-client.d.ts +79 -132
- package/dist/shared/security/osv-client.js +344 -167
- package/dist/shared/security/osv-lookup.d.ts +124 -0
- package/dist/shared/security/osv-lookup.js +246 -0
- package/dist/shared/security/osv-types.d.ts +119 -0
- package/dist/shared/security/osv-types.js +6 -0
- package/dist/workers/interfaces.d.ts +15 -2
- package/dist/workers/namespaced-keys.d.ts +16 -0
- package/dist/workers/namespaced-keys.js +24 -0
- package/dist/workers/quality-daemon/coverage-delta.d.ts +4 -3
- package/dist/workers/quality-daemon/coverage-delta.js +13 -6
- package/dist/workers/quality-daemon/index.js +6 -5
- package/dist/workers/quality-daemon/notification-service.js +3 -3
- package/dist/workers/quality-daemon/persistent-memory.d.ts +3 -3
- package/dist/workers/quality-daemon/persistent-memory.js +4 -4
- package/dist/workers/worker-manager.js +10 -3
- package/dist/workers/workers/coverage-tracker.js +69 -33
- package/dist/workers/workers/defect-predictor.d.ts +25 -8
- package/dist/workers/workers/defect-predictor.js +223 -216
- package/dist/workers/workers/performance-baseline.d.ts +24 -9
- package/dist/workers/workers/performance-baseline.js +187 -230
- package/dist/workers/workers/quality-gate.d.ts +11 -9
- package/dist/workers/workers/quality-gate.js +125 -267
- package/dist/workers/workers/regression-monitor.d.ts +18 -1
- package/dist/workers/workers/regression-monitor.js +276 -117
- package/dist/workers/workers/security-scan-records.d.ts +111 -0
- package/dist/workers/workers/security-scan-records.js +128 -0
- package/dist/workers/workers/security-scan.d.ts +25 -7
- package/dist/workers/workers/security-scan.js +187 -164
- package/package.json +2 -2
- package/dist/cli/chunks/adapter-EGIPTX5H.js +0 -2
- package/dist/cli/chunks/aqe-learning-engine-WP4GCBDT.js +0 -2
- package/dist/cli/chunks/base-6ORFD62I.js +0 -2
- package/dist/cli/chunks/browser-workflow-PIXGERWP.js +0 -2
- package/dist/cli/chunks/chunk-2WFTZSRT.js +0 -2
- package/dist/cli/chunks/chunk-7YB2KELI.js +0 -5
- package/dist/cli/chunks/chunk-BBL6YXD3.js +0 -2
- package/dist/cli/chunks/chunk-BJ5P4IV2.js +0 -2
- package/dist/cli/chunks/chunk-BO4PKNYP.js +0 -102
- package/dist/cli/chunks/chunk-DFPL5N3Q.js +0 -16
- package/dist/cli/chunks/chunk-DLY4YEN3.js +0 -2
- package/dist/cli/chunks/chunk-ERGWWI4Y.js +0 -3
- package/dist/cli/chunks/chunk-GTSOFCMQ.js +0 -2
- package/dist/cli/chunks/chunk-KZVJW2SD.js +0 -2
- package/dist/cli/chunks/chunk-L336HFFE.js +0 -2
- package/dist/cli/chunks/chunk-N2TJNIHA.js +0 -2
- package/dist/cli/chunks/chunk-RCXMUEZN.js +0 -3
- package/dist/cli/chunks/chunk-SEZLYRCS.js +0 -2
- package/dist/cli/chunks/chunk-TDLKXLJC.js +0 -4
- package/dist/cli/chunks/chunk-WOZIXXY5.js +0 -7
- package/dist/cli/chunks/ci-KP4GZKJ7.js +0 -81
- package/dist/cli/chunks/client-C3KHVRM6.js +0 -2
- package/dist/cli/chunks/core-handlers-KSQM6Q6S.js +0 -2
- package/dist/cli/chunks/coverage-SPFVHRRU.js +0 -43
- package/dist/cli/chunks/coverage-target-GSRBNHXE.js +0 -2
- package/dist/cli/chunks/cross-domain-router-CTGNOVCF.js +0 -2
- package/dist/cli/chunks/daemon-M5TD5Y6T.js +0 -10
- package/dist/cli/chunks/dream-MIK2E4UL.js +0 -2
- package/dist/cli/chunks/embed-and-insert-pattern-QST77T2B.js +0 -3
- package/dist/cli/chunks/experience-capture-middleware-X66IYSRV.js +0 -40
- package/dist/cli/chunks/file-discovery-3NHRUQQB.js +0 -2
- package/dist/cli/chunks/heartbeat-scheduler-OCKRACUW.js +0 -2
- package/dist/cli/chunks/hnsw-adapter-X67XG73C.js +0 -2
- package/dist/cli/chunks/hnsw-index-I7KCQBQR.js +0 -2
- package/dist/cli/chunks/hybrid-backend-FOUHTKAK.js +0 -2
- package/dist/cli/chunks/impact-analyzer-GXYVX46O.js +0 -2
- package/dist/cli/chunks/init-handler-2AXMXHYF.js +0 -86
- package/dist/cli/chunks/init-wizard-C2MRX2QG.js +0 -2
- package/dist/cli/chunks/kernel-Q2IUDIDC.js +0 -2
- package/dist/cli/chunks/knowledge-graph-E2Z6K5EE.js +0 -2
- package/dist/cli/chunks/learning-BEA26RNA.js +0 -122
- package/dist/cli/chunks/llm-router-service-YATYFEDD.js +0 -2
- package/dist/cli/chunks/load-test-LV77JXWA.js +0 -2
- package/dist/cli/chunks/memory-backend-XME3X3QX.js +0 -2
- package/dist/cli/chunks/memory-handlers-VG47X5DX.js +0 -2
- package/dist/cli/chunks/orchestrator-VHUXUYIM.js +0 -452
- package/dist/cli/chunks/pattern-null-store-TAXMLENP.js +0 -2
- package/dist/cli/chunks/plugin-2VAYWAO3.js +0 -27
- package/dist/cli/chunks/project-root-CFFPBGPX.js +0 -2
- package/dist/cli/chunks/protocol-executor-ML76QAVQ.js +0 -2
- package/dist/cli/chunks/qe-reasoning-bank-LUZH6RYV.js +0 -2
- package/dist/cli/chunks/queen-coordinator-EWXNIXB6.js +0 -2
- package/dist/cli/chunks/real-embeddings-GZV4VKK4.js +0 -2
- package/dist/cli/chunks/router-MXOBVEBF.js +0 -2
- package/dist/cli/chunks/routing-feedback-T6CCRUEK.js +0 -2
- package/dist/cli/chunks/rvf-dual-writer-WHXVT3V3.js +0 -2
- package/dist/cli/chunks/rvf-migration-adapter-JFPWIRCG.js +0 -2
- package/dist/cli/chunks/rvf-migration-coordinator-D4KUBNRZ.js +0 -2
- package/dist/cli/chunks/rvf-native-adapter-KOXR7TJL.js +0 -2
- package/dist/cli/chunks/safe-db-CI6IPSIN.js +0 -2
- package/dist/cli/chunks/schedule-X4HW6TVJ.js +0 -2
- package/dist/cli/chunks/scheduler-KCNJ2ON3.js +0 -2
- package/dist/cli/chunks/security-7723AZZ4.js +0 -13
- package/dist/cli/chunks/shared-rvf-adapter-KEQ5CLNI.js +0 -2
- package/dist/cli/chunks/sqlite-persistence-PGHU6VUR.js +0 -2
- package/dist/cli/chunks/sync-EFWXMA2H.js +0 -2
- package/dist/cli/chunks/token-bootstrap-S346YBVO.js +0 -2
- package/dist/cli/chunks/unified-memory-6CK3TUNQ.js +0 -2
- package/dist/cli/chunks/unified-memory-hnsw-A7BWBGYN.js +0 -2
- package/dist/cli/chunks/unified-persistence-GEPMDBQZ.js +0 -2
- package/dist/cli/chunks/visual-security-L4J7LQWT.js +0 -2
- package/dist/cli/chunks/witness-chain-CDUMX623.js +0 -2
- package/dist/cli/chunks/witness-chain-repair-WNYH6O4L.js +0 -2
- package/dist/cli/chunks/witness-key-manager-NQ5DAAC4.js +0 -2
- package/dist/cli/chunks/workflow-orchestrator-USJDWVDR.js +0 -2
- package/dist/cli/chunks/wrappers-CZDI6Z3X.js +0 -2
- /package/.claude/skills/qe-court/evals/fixtures/seeded-mutant-delivery/{budget.test.ts → budget-tests.ts.fixture} +0 -0
- /package/.claude/skills/qe-court/evals/fixtures/seeded-mutant-delivery/{budget.ts → budget.ts.fixture} +0 -0
- /package/.claude/skills/testability-scoring/resources/templates/{testability-scoring.spec.template.js → testability-scoring-spec.template.js} +0 -0
- /package/assets/skills/qe-court/evals/fixtures/seeded-mutant-delivery/{budget.test.ts → budget-tests.ts.fixture} +0 -0
- /package/assets/skills/qe-court/evals/fixtures/seeded-mutant-delivery/{budget.ts → budget.ts.fixture} +0 -0
- /package/assets/skills/testability-scoring/resources/templates/{testability-scoring.spec.template.js → testability-scoring-spec.template.js} +0 -0
|
@@ -2,13 +2,18 @@
|
|
|
2
2
|
* Agentic QE v3 - Performance Baseline Worker
|
|
3
3
|
* ADR-014: Background Workers for QE Monitoring
|
|
4
4
|
*
|
|
5
|
-
* Tracks
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* -
|
|
9
|
-
*
|
|
5
|
+
* Tracks test execution time against a baseline built from measured runs.
|
|
6
|
+
*
|
|
7
|
+
* #1043: every figure comes from a recorded test run — the run behind the
|
|
8
|
+
* latest usable testsPassing evidence (`test-run:<runId>` in `test-execution`),
|
|
9
|
+
* read the same way the regression monitor reads it (#1028). Build and
|
|
10
|
+
* resource figures have no measured source and are reported unmeasured.
|
|
11
|
+
* Nothing measured → nothing stored or compared. A baseline without the
|
|
12
|
+
* measured stamp (the invented one written by <= 3.15.6) is ignored and
|
|
13
|
+
* replaced by the next measured run.
|
|
10
14
|
*/
|
|
11
15
|
import { BaseWorker } from '../base-worker.js';
|
|
16
|
+
import { readQualityEvidenceRecord } from '../../domains/quality-assessment/quality-evidence.js';
|
|
12
17
|
const CONFIG = {
|
|
13
18
|
id: 'performance-baseline',
|
|
14
19
|
name: 'Performance Baseline Tracker',
|
|
@@ -21,6 +26,57 @@ const CONFIG = {
|
|
|
21
26
|
retryCount: 2,
|
|
22
27
|
retryDelayMs: 30000,
|
|
23
28
|
};
|
|
29
|
+
const BASELINE_KEY = 'performance:baseline';
|
|
30
|
+
const HISTORY_KEY = 'performance:history';
|
|
31
|
+
const SCHEMA_VERSION = 1;
|
|
32
|
+
/** Allowed slowdown before a measured run is an anomaly (30%). */
|
|
33
|
+
const DURATION_THRESHOLD = 1.3;
|
|
34
|
+
/** Weight of a new measured run in the baseline average. */
|
|
35
|
+
const EMA_ALPHA = 0.1;
|
|
36
|
+
/** Keep the last 168 measured runs. */
|
|
37
|
+
const MAX_HISTORY = 168;
|
|
38
|
+
const isNonNegative = (v) => typeof v === 'number' && Number.isFinite(v) && v >= 0;
|
|
39
|
+
const round = (v) => Math.round(v * 100) / 100;
|
|
40
|
+
/** A recorded test set `{ total, files }`, or `null`. */
|
|
41
|
+
function parseTestSet(raw) {
|
|
42
|
+
if (!raw || typeof raw !== 'object')
|
|
43
|
+
return null;
|
|
44
|
+
const { total, files } = raw;
|
|
45
|
+
if (typeof total !== 'number' || !Number.isInteger(total) || total <= 0)
|
|
46
|
+
return null;
|
|
47
|
+
if (!Array.isArray(files) || files.length === 0 || !files.every((f) => typeof f === 'string'))
|
|
48
|
+
return null;
|
|
49
|
+
return { total, files: [...new Set(files)].sort() };
|
|
50
|
+
}
|
|
51
|
+
const sameTestSet = (a, b) => a !== null && b !== null && a.total === b.total
|
|
52
|
+
&& a.files.length === b.files.length && a.files.every((f, i) => f === b.files[i]);
|
|
53
|
+
/** The stored baseline when it carries the measured stamp and is well-formed, else `null`. */
|
|
54
|
+
function measuredBaseline(raw) {
|
|
55
|
+
if (!raw || typeof raw !== 'object')
|
|
56
|
+
return null;
|
|
57
|
+
const r = raw;
|
|
58
|
+
if (r.measured !== true || r.schemaVersion !== SCHEMA_VERSION)
|
|
59
|
+
return null;
|
|
60
|
+
const t = r.testExecution;
|
|
61
|
+
if (!t || typeof t !== 'object')
|
|
62
|
+
return null;
|
|
63
|
+
if (!isNonNegative(t.avgTestDurationMs) || !isNonNegative(t.totalDurationMs)
|
|
64
|
+
|| typeof t.samples !== 'number' || !Number.isInteger(t.samples) || t.samples < 1
|
|
65
|
+
|| typeof t.lastRunId !== 'string')
|
|
66
|
+
return null;
|
|
67
|
+
return {
|
|
68
|
+
measured: true,
|
|
69
|
+
schemaVersion: SCHEMA_VERSION,
|
|
70
|
+
updatedAt: typeof r.updatedAt === 'string' ? r.updatedAt : '',
|
|
71
|
+
testExecution: {
|
|
72
|
+
avgTestDurationMs: t.avgTestDurationMs,
|
|
73
|
+
totalDurationMs: t.totalDurationMs,
|
|
74
|
+
samples: t.samples,
|
|
75
|
+
lastRunId: t.lastRunId,
|
|
76
|
+
testSet: parseTestSet(t.testSet),
|
|
77
|
+
},
|
|
78
|
+
};
|
|
79
|
+
}
|
|
24
80
|
export class PerformanceBaselineWorker extends BaseWorker {
|
|
25
81
|
constructor() {
|
|
26
82
|
super(CONFIG);
|
|
@@ -30,170 +86,133 @@ export class PerformanceBaselineWorker extends BaseWorker {
|
|
|
30
86
|
context.logger.info('Starting performance baseline tracking');
|
|
31
87
|
const findings = [];
|
|
32
88
|
const recommendations = [];
|
|
33
|
-
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
const
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
89
|
+
const current = await this.collectMeasuredRun(context);
|
|
90
|
+
const stored = await context.memory.get(BASELINE_KEY);
|
|
91
|
+
const baseline = measuredBaseline(stored);
|
|
92
|
+
const baselineStatus = this.baselineStatus(stored, baseline);
|
|
93
|
+
if (baselineStatus === 'legacy-ignored') {
|
|
94
|
+
context.logger.info('Ignoring a performance:baseline without the measured stamp (written by <= 3.15.6)');
|
|
95
|
+
}
|
|
96
|
+
else if (baselineStatus === 'invalid-ignored') {
|
|
97
|
+
context.logger.warn('Ignoring a malformed measured performance:baseline');
|
|
98
|
+
}
|
|
99
|
+
let anomalies = [];
|
|
100
|
+
let compared = false;
|
|
101
|
+
if (!current) {
|
|
102
|
+
findings.push({
|
|
103
|
+
type: 'performance-unmeasured',
|
|
104
|
+
severity: 'info',
|
|
105
|
+
domain: 'test-execution',
|
|
106
|
+
title: 'Performance Baseline Unmeasured',
|
|
107
|
+
description: 'No recorded test run backs the current testsPassing evidence, so no timing was stored or ' +
|
|
108
|
+
'compared. Run the test suite (test_execute_parallel, or `aqe test execute`) to start tracking. ' +
|
|
109
|
+
'Build and resource figures are not measured by AQE.',
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
else if (baseline?.testExecution.lastRunId === current.runId) {
|
|
113
|
+
// The same run was already blended in on an earlier tick.
|
|
114
|
+
context.logger.debug('Latest measured run already in the performance baseline', { runId: current.runId });
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
if (baseline && sameTestSet(baseline.testExecution.testSet, current.testSet)) {
|
|
118
|
+
compared = true;
|
|
119
|
+
anomalies = this.detectAnomalies(current, baseline);
|
|
120
|
+
this.analyzeAnomalies(anomalies, findings, recommendations);
|
|
121
|
+
}
|
|
122
|
+
await context.memory.set(BASELINE_KEY, this.nextBaseline(current, compared ? baseline : null));
|
|
123
|
+
await this.appendHistory(context, current);
|
|
124
|
+
}
|
|
45
125
|
const healthScore = this.calculateHealthScore(anomalies);
|
|
46
126
|
context.logger.info('Performance baseline tracking complete', {
|
|
47
127
|
healthScore,
|
|
128
|
+
measured: current !== null,
|
|
129
|
+
baselineStatus,
|
|
48
130
|
anomaliesDetected: anomalies.length,
|
|
49
131
|
});
|
|
50
132
|
return this.createResult(Date.now() - startTime, {
|
|
51
|
-
itemsAnalyzed:
|
|
133
|
+
itemsAnalyzed: compared ? 2 : 0,
|
|
52
134
|
issuesFound: anomalies.length,
|
|
53
135
|
healthScore,
|
|
54
|
-
trend: anomalies.length >
|
|
136
|
+
trend: anomalies.length > 0 ? 'degrading' : 'stable',
|
|
55
137
|
domainMetrics: {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
138
|
+
baselineStatus,
|
|
139
|
+
avgTestDuration: current ? `${round(current.avgTestDurationMs)}ms` : 'unmeasured',
|
|
140
|
+
totalTestDuration: current ? `${round(current.totalDurationMs)}ms` : 'unmeasured',
|
|
141
|
+
compileDuration: 'unmeasured',
|
|
142
|
+
bundleSize: 'unmeasured',
|
|
143
|
+
peakMemory: 'unmeasured',
|
|
61
144
|
anomalies: anomalies.length,
|
|
62
145
|
},
|
|
63
146
|
}, findings, recommendations);
|
|
64
147
|
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
slowestTestMs: 3500,
|
|
73
|
-
slowestTestName: 'workflow-orchestrator.test.ts::complex scenario',
|
|
74
|
-
p50DurationMs: 120,
|
|
75
|
-
p95DurationMs: 800,
|
|
76
|
-
p99DurationMs: 2500,
|
|
77
|
-
},
|
|
78
|
-
build: {
|
|
79
|
-
compileDurationMs: 12000,
|
|
80
|
-
bundleSizeKb: 2500,
|
|
81
|
-
dependencyCount: 45,
|
|
82
|
-
},
|
|
83
|
-
resources: {
|
|
84
|
-
peakMemoryMb: 512,
|
|
85
|
-
avgCpuPercent: 65,
|
|
86
|
-
diskReadMb: 150,
|
|
87
|
-
diskWriteMb: 50,
|
|
88
|
-
},
|
|
89
|
-
};
|
|
148
|
+
baselineStatus(stored, baseline) {
|
|
149
|
+
if (baseline)
|
|
150
|
+
return 'measured';
|
|
151
|
+
if (stored === undefined || stored === null)
|
|
152
|
+
return 'none';
|
|
153
|
+
const stamped = typeof stored === 'object' && stored.measured === true;
|
|
154
|
+
return stamped ? 'invalid-ignored' : 'legacy-ignored';
|
|
90
155
|
}
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
156
|
+
/**
|
|
157
|
+
* #1043: the run behind the latest usable testsPassing evidence, with its
|
|
158
|
+
* recorded wall time and test count. `null` when there is no such evidence
|
|
159
|
+
* or the run's result was not recorded.
|
|
160
|
+
*/
|
|
161
|
+
async collectMeasuredRun(context) {
|
|
162
|
+
const evidence = await readQualityEvidenceRecord(context.memory, 'testsPassing');
|
|
163
|
+
if (!evidence?.runId)
|
|
164
|
+
return null;
|
|
165
|
+
const run = await context.memory.get(`test-run:${evidence.runId}`, {
|
|
166
|
+
namespace: 'test-execution',
|
|
167
|
+
});
|
|
168
|
+
if (!run || typeof run !== 'object')
|
|
169
|
+
return null;
|
|
170
|
+
const { total, duration } = run;
|
|
171
|
+
if (typeof total !== 'number' || !Number.isInteger(total) || total <= 0 || !isNonNegative(duration))
|
|
172
|
+
return null;
|
|
97
173
|
return {
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
avgBundleSizeKb: 2400,
|
|
106
|
-
threshold: 1.2, // 20% deviation allowed
|
|
107
|
-
},
|
|
108
|
-
resources: {
|
|
109
|
-
avgMemoryMb: 450,
|
|
110
|
-
avgCpuPercent: 60,
|
|
111
|
-
threshold: 1.25, // 25% deviation allowed
|
|
112
|
-
},
|
|
174
|
+
measured: true,
|
|
175
|
+
runId: evidence.runId,
|
|
176
|
+
measuredAt: evidence.measuredAt,
|
|
177
|
+
totalDurationMs: duration,
|
|
178
|
+
testCount: total,
|
|
179
|
+
avgTestDurationMs: duration / total,
|
|
180
|
+
testSet: parseTestSet({ total, files: run.testFiles }),
|
|
113
181
|
};
|
|
114
182
|
}
|
|
115
|
-
|
|
183
|
+
/**
|
|
184
|
+
* Compare a measured run with the measured baseline of the same test set.
|
|
185
|
+
* The recorded duration is the run's wall time; per-test time across
|
|
186
|
+
* different test sets would mostly measure runner overhead (#1028 N1).
|
|
187
|
+
*/
|
|
188
|
+
detectAnomalies(current, baseline) {
|
|
116
189
|
const anomalies = [];
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
category: 'test',
|
|
134
|
-
currentValue: metrics.testExecution.p95DurationMs,
|
|
135
|
-
baselineValue: baseline.testExecution.p95DurationMs,
|
|
136
|
-
deviationPercent: (p95Deviation - 1) * 100,
|
|
137
|
-
severity: p95Deviation > 1.5 ? 'high' : 'medium',
|
|
138
|
-
});
|
|
139
|
-
}
|
|
140
|
-
// Build anomalies
|
|
141
|
-
const compileDeviation = metrics.build.compileDurationMs / baseline.build.avgCompileMs;
|
|
142
|
-
if (compileDeviation > baseline.build.threshold) {
|
|
143
|
-
anomalies.push({
|
|
144
|
-
metric: 'compileDuration',
|
|
145
|
-
category: 'build',
|
|
146
|
-
currentValue: metrics.build.compileDurationMs,
|
|
147
|
-
baselineValue: baseline.build.avgCompileMs,
|
|
148
|
-
deviationPercent: (compileDeviation - 1) * 100,
|
|
149
|
-
severity: compileDeviation > 1.5 ? 'high' : 'medium',
|
|
150
|
-
});
|
|
151
|
-
}
|
|
152
|
-
const bundleDeviation = metrics.build.bundleSizeKb / baseline.build.avgBundleSizeKb;
|
|
153
|
-
if (bundleDeviation > baseline.build.threshold) {
|
|
154
|
-
anomalies.push({
|
|
155
|
-
metric: 'bundleSize',
|
|
156
|
-
category: 'build',
|
|
157
|
-
currentValue: metrics.build.bundleSizeKb,
|
|
158
|
-
baselineValue: baseline.build.avgBundleSizeKb,
|
|
159
|
-
deviationPercent: (bundleDeviation - 1) * 100,
|
|
160
|
-
severity: bundleDeviation > 1.3 ? 'high' : 'medium',
|
|
161
|
-
});
|
|
162
|
-
}
|
|
163
|
-
// Resource anomalies
|
|
164
|
-
const memoryDeviation = metrics.resources.peakMemoryMb / baseline.resources.avgMemoryMb;
|
|
165
|
-
if (memoryDeviation > baseline.resources.threshold) {
|
|
166
|
-
anomalies.push({
|
|
167
|
-
metric: 'peakMemory',
|
|
168
|
-
category: 'resource',
|
|
169
|
-
currentValue: metrics.resources.peakMemoryMb,
|
|
170
|
-
baselineValue: baseline.resources.avgMemoryMb,
|
|
171
|
-
deviationPercent: (memoryDeviation - 1) * 100,
|
|
172
|
-
severity: memoryDeviation > 1.5 ? 'critical' : memoryDeviation > 1.3 ? 'high' : 'medium',
|
|
173
|
-
});
|
|
174
|
-
}
|
|
175
|
-
const cpuDeviation = metrics.resources.avgCpuPercent / baseline.resources.avgCpuPercent;
|
|
176
|
-
if (cpuDeviation > baseline.resources.threshold) {
|
|
177
|
-
anomalies.push({
|
|
178
|
-
metric: 'avgCpu',
|
|
179
|
-
category: 'resource',
|
|
180
|
-
currentValue: metrics.resources.avgCpuPercent,
|
|
181
|
-
baselineValue: baseline.resources.avgCpuPercent,
|
|
182
|
-
deviationPercent: (cpuDeviation - 1) * 100,
|
|
183
|
-
severity: cpuDeviation > 1.4 ? 'high' : 'medium',
|
|
184
|
-
});
|
|
185
|
-
}
|
|
190
|
+
const check = (metric, value, base) => {
|
|
191
|
+
if (base <= 0)
|
|
192
|
+
return;
|
|
193
|
+
const ratio = value / base;
|
|
194
|
+
if (ratio > DURATION_THRESHOLD) {
|
|
195
|
+
anomalies.push({
|
|
196
|
+
metric,
|
|
197
|
+
currentValue: round(value),
|
|
198
|
+
baselineValue: round(base),
|
|
199
|
+
deviationPercent: (ratio - 1) * 100,
|
|
200
|
+
severity: ratio > 1.5 ? 'high' : 'medium',
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
};
|
|
204
|
+
check('avgTestDuration', current.avgTestDurationMs, baseline.testExecution.avgTestDurationMs);
|
|
205
|
+
check('totalTestDuration', current.totalDurationMs, baseline.testExecution.totalDurationMs);
|
|
186
206
|
return anomalies;
|
|
187
207
|
}
|
|
188
208
|
analyzeAnomalies(anomalies, findings, recommendations) {
|
|
189
209
|
for (const anomaly of anomalies) {
|
|
190
|
-
const domain = anomaly.category === 'test' ? 'test-execution' : 'chaos-resilience';
|
|
191
210
|
findings.push({
|
|
192
|
-
type:
|
|
211
|
+
type: 'performance-anomaly-test',
|
|
193
212
|
severity: anomaly.severity,
|
|
194
|
-
domain,
|
|
213
|
+
domain: 'test-execution',
|
|
195
214
|
title: `Performance Anomaly: ${this.formatMetricName(anomaly.metric)}`,
|
|
196
|
-
description: `${this.formatMetricName(anomaly.metric)} is ${anomaly.deviationPercent.toFixed(1)}% above baseline`,
|
|
215
|
+
description: `${this.formatMetricName(anomaly.metric)} is ${anomaly.deviationPercent.toFixed(1)}% above the measured baseline`,
|
|
197
216
|
context: {
|
|
198
217
|
currentValue: anomaly.currentValue,
|
|
199
218
|
baselineValue: anomaly.baselineValue,
|
|
@@ -201,11 +220,9 @@ export class PerformanceBaselineWorker extends BaseWorker {
|
|
|
201
220
|
},
|
|
202
221
|
});
|
|
203
222
|
}
|
|
204
|
-
|
|
205
|
-
const testAnomalies = anomalies.filter(a => a.category === 'test');
|
|
206
|
-
if (testAnomalies.length > 0) {
|
|
223
|
+
if (anomalies.length > 0) {
|
|
207
224
|
recommendations.push({
|
|
208
|
-
priority:
|
|
225
|
+
priority: anomalies.some(a => a.severity === 'high') ? 'p1' : 'p2',
|
|
209
226
|
domain: 'test-execution',
|
|
210
227
|
action: 'Investigate Test Performance Degradation',
|
|
211
228
|
description: 'Test execution times have increased. Review for slow tests or infrastructure issues.',
|
|
@@ -214,100 +231,40 @@ export class PerformanceBaselineWorker extends BaseWorker {
|
|
|
214
231
|
autoFixable: false,
|
|
215
232
|
});
|
|
216
233
|
}
|
|
217
|
-
const buildAnomalies = anomalies.filter(a => a.category === 'build');
|
|
218
|
-
if (buildAnomalies.length > 0) {
|
|
219
|
-
const bundleAnomaly = buildAnomalies.find(a => a.metric === 'bundleSize');
|
|
220
|
-
if (bundleAnomaly) {
|
|
221
|
-
recommendations.push({
|
|
222
|
-
priority: 'p2',
|
|
223
|
-
domain: 'chaos-resilience',
|
|
224
|
-
action: 'Analyze Bundle Size Increase',
|
|
225
|
-
description: 'Bundle size has grown. Review for unnecessary dependencies or unoptimized imports.',
|
|
226
|
-
estimatedImpact: 'medium',
|
|
227
|
-
effort: 'low',
|
|
228
|
-
autoFixable: true,
|
|
229
|
-
});
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
const resourceAnomalies = anomalies.filter(a => a.category === 'resource');
|
|
233
|
-
if (resourceAnomalies.length > 0) {
|
|
234
|
-
const memoryAnomaly = resourceAnomalies.find(a => a.metric === 'peakMemory');
|
|
235
|
-
if (memoryAnomaly && memoryAnomaly.severity === 'critical') {
|
|
236
|
-
recommendations.push({
|
|
237
|
-
priority: 'p0',
|
|
238
|
-
domain: 'chaos-resilience',
|
|
239
|
-
action: 'Investigate Memory Usage Spike',
|
|
240
|
-
description: 'Memory usage is significantly above baseline. Check for memory leaks.',
|
|
241
|
-
estimatedImpact: 'high',
|
|
242
|
-
effort: 'high',
|
|
243
|
-
autoFixable: false,
|
|
244
|
-
});
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
234
|
}
|
|
248
235
|
formatMetricName(metric) {
|
|
249
|
-
|
|
250
|
-
avgTestDuration: 'Average Test Duration',
|
|
251
|
-
p95TestDuration: 'P95 Test Duration',
|
|
252
|
-
compileDuration: 'Compile Duration',
|
|
253
|
-
bundleSize: 'Bundle Size',
|
|
254
|
-
peakMemory: 'Peak Memory Usage',
|
|
255
|
-
avgCpu: 'Average CPU Usage',
|
|
256
|
-
};
|
|
257
|
-
return names[metric] || metric;
|
|
236
|
+
return metric === 'avgTestDuration' ? 'Average Test Duration' : 'Total Test Duration';
|
|
258
237
|
}
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
const
|
|
262
|
-
const
|
|
238
|
+
/** Blend a measured run into a comparable baseline, or start a new one from it. */
|
|
239
|
+
nextBaseline(current, comparable) {
|
|
240
|
+
const prev = comparable?.testExecution;
|
|
241
|
+
const blend = (base, value) => base * (1 - EMA_ALPHA) + value * EMA_ALPHA;
|
|
242
|
+
return {
|
|
243
|
+
measured: true,
|
|
244
|
+
schemaVersion: SCHEMA_VERSION,
|
|
245
|
+
updatedAt: new Date().toISOString(),
|
|
263
246
|
testExecution: {
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
},
|
|
270
|
-
build: {
|
|
271
|
-
avgCompileMs: baseline.build.avgCompileMs * (1 - alpha) +
|
|
272
|
-
metrics.build.compileDurationMs * alpha,
|
|
273
|
-
avgBundleSizeKb: baseline.build.avgBundleSizeKb * (1 - alpha) +
|
|
274
|
-
metrics.build.bundleSizeKb * alpha,
|
|
275
|
-
threshold: baseline.build.threshold,
|
|
276
|
-
},
|
|
277
|
-
resources: {
|
|
278
|
-
avgMemoryMb: baseline.resources.avgMemoryMb * (1 - alpha) +
|
|
279
|
-
metrics.resources.peakMemoryMb * alpha,
|
|
280
|
-
avgCpuPercent: baseline.resources.avgCpuPercent * (1 - alpha) +
|
|
281
|
-
metrics.resources.avgCpuPercent * alpha,
|
|
282
|
-
threshold: baseline.resources.threshold,
|
|
247
|
+
avgTestDurationMs: prev ? round(blend(prev.avgTestDurationMs, current.avgTestDurationMs)) : current.avgTestDurationMs,
|
|
248
|
+
totalDurationMs: prev ? round(blend(prev.totalDurationMs, current.totalDurationMs)) : current.totalDurationMs,
|
|
249
|
+
samples: prev ? prev.samples + 1 : 1,
|
|
250
|
+
lastRunId: current.runId,
|
|
251
|
+
testSet: current.testSet,
|
|
283
252
|
},
|
|
284
253
|
};
|
|
285
|
-
await context.memory.set('performance:baseline', updatedBaseline);
|
|
286
254
|
}
|
|
287
|
-
async
|
|
288
|
-
const
|
|
289
|
-
history.
|
|
290
|
-
|
|
291
|
-
while (history.length >
|
|
255
|
+
async appendHistory(context, run) {
|
|
256
|
+
const stored = await context.memory.get(HISTORY_KEY);
|
|
257
|
+
const history = Array.isArray(stored) ? stored : [];
|
|
258
|
+
history.push(run);
|
|
259
|
+
while (history.length > MAX_HISTORY)
|
|
292
260
|
history.shift();
|
|
293
|
-
|
|
294
|
-
await context.memory.set('performance:history', history);
|
|
261
|
+
await context.memory.set(HISTORY_KEY, history);
|
|
295
262
|
}
|
|
296
263
|
calculateHealthScore(anomalies) {
|
|
297
|
-
if (anomalies.length === 0)
|
|
298
|
-
return 100;
|
|
299
264
|
let score = 100;
|
|
300
265
|
for (const anomaly of anomalies) {
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
critical: 25,
|
|
304
|
-
high: 15,
|
|
305
|
-
medium: 8,
|
|
306
|
-
low: 3,
|
|
307
|
-
}[anomaly.severity];
|
|
308
|
-
// Additional penalty for large deviations
|
|
309
|
-
const deviationPenalty = Math.min(10, anomaly.deviationPercent / 10);
|
|
310
|
-
score -= basePenalty + deviationPenalty;
|
|
266
|
+
const basePenalty = anomaly.severity === 'high' ? 15 : 8;
|
|
267
|
+
score -= basePenalty + Math.min(10, anomaly.deviationPercent / 10);
|
|
311
268
|
}
|
|
312
269
|
return Math.max(0, Math.round(score));
|
|
313
270
|
}
|
|
@@ -2,22 +2,24 @@
|
|
|
2
2
|
* Agentic QE v3 - Quality Gate Worker
|
|
3
3
|
* ADR-014: Background Workers for QE Monitoring
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
5
|
+
* Continuously evaluates the measured quality gate and tracks its verdict.
|
|
6
|
+
*
|
|
7
|
+
* #1043: the gate is the canonical measured gate — the same evidence
|
|
8
|
+
* validation (`inspectQualityEvidence`) and thresholds
|
|
9
|
+
* (`evaluateQualityEvidence` / `resolveQualityThresholds`) the quality_assess
|
|
10
|
+
* tool uses. When any metric lacks usable evidence (absent, stale, malformed)
|
|
11
|
+
* the gate is not evaluated: nothing is stored and an info finding names the
|
|
12
|
+
* unmeasured metrics. A status without the measured stamp (the invented one
|
|
13
|
+
* written by <= 3.15.6) is ignored and replaced by the next measured verdict.
|
|
10
14
|
*/
|
|
11
15
|
import { BaseWorker } from '../base-worker';
|
|
12
16
|
import { WorkerContext, WorkerResult } from '../interfaces';
|
|
13
17
|
export declare class QualityGateWorker extends BaseWorker {
|
|
14
18
|
constructor();
|
|
15
19
|
protected doExecute(context: WorkerContext): Promise<WorkerResult>;
|
|
16
|
-
private evaluateQualityGates;
|
|
17
|
-
private evaluateRule;
|
|
18
20
|
private analyzeGateResults;
|
|
19
|
-
|
|
20
|
-
private
|
|
21
|
+
/** Compare with the previous verdict — only a measured one (#1043). */
|
|
22
|
+
private compareToPrevious;
|
|
21
23
|
private calculateHealthScore;
|
|
22
24
|
}
|
|
23
25
|
//# sourceMappingURL=quality-gate.d.ts.map
|