agentic-qe 3.15.5 → 3.15.6
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 +121 -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 +5 -5
- package/dist/cli/chunks/adapter-PP3XIXDV.js +2 -0
- package/dist/cli/chunks/{agent-booster-wasm-CCTTGCQS.js → agent-booster-wasm-SY7UCLBL.js} +2 -2
- package/dist/cli/chunks/{agent-handler-DHYUF3NX.js → agent-handler-KAMYBU3S.js} +2 -2
- package/dist/cli/chunks/{agent-memory-branch-642W7CYX.js → agent-memory-branch-2CAW3KUM.js} +2 -2
- package/dist/cli/chunks/aqe-learning-engine-VDUQJKKY.js +2 -0
- package/dist/cli/chunks/{arena-NW2JVAFY.js → arena-4OFLJ3R2.js} +2 -2
- package/dist/cli/chunks/{arena-MUCC7UUN.js → arena-QCCVIOAH.js} +4 -4
- package/dist/cli/chunks/{audit-VKQTZJAA.js → audit-RBDQJQJB.js} +3 -3
- package/dist/cli/chunks/base-QSYWWPCE.js +2 -0
- package/dist/cli/chunks/{better-sqlite3-7ZUFVWLQ.js → better-sqlite3-5JRACCDQ.js} +2 -2
- package/dist/cli/chunks/{brain-handler-7LKAWSBI.js → brain-handler-W4QIIRT4.js} +3 -3
- package/dist/cli/chunks/{branch-enumerator-HUNXJKM4.js → branch-enumerator-IBNGI572.js} +2 -2
- package/dist/cli/chunks/{browser-ZSZEYUDP.js → browser-GMSCVAOI.js} +2 -2
- package/dist/cli/chunks/browser-workflow-WXXPBSCM.js +2 -0
- package/dist/cli/chunks/{chunk-RUSLEOMC.js → chunk-22OZIJAD.js} +2 -2
- package/dist/cli/chunks/{chunk-WR64BKUE.js → chunk-24ZSGYC6.js} +1 -1
- package/dist/cli/chunks/{chunk-CR2JUANW.js → chunk-2CIDFR2H.js} +3 -3
- package/dist/cli/chunks/{chunk-SDWMLT7B.js → chunk-2IWPJUVV.js} +5 -5
- package/dist/cli/chunks/{chunk-VYDNLQJN.js → chunk-2ZTWPMTK.js} +2 -2
- package/dist/cli/chunks/{chunk-WN55MNZ2.js → chunk-34MDMFET.js} +2 -2
- package/dist/cli/chunks/{chunk-D3G2NN7F.js → chunk-3DJNKNBR.js} +66 -65
- package/dist/cli/chunks/{chunk-XQRE2HWM.js → chunk-3NJ7O3OH.js} +2 -2
- package/dist/cli/chunks/chunk-45MVRQG4.js +2 -0
- package/dist/cli/chunks/chunk-46HBVDMU.js +2 -0
- package/dist/cli/chunks/{chunk-MNQ36MAF.js → chunk-47Q7JL3V.js} +2 -2
- package/dist/cli/chunks/chunk-4CLDYT36.js +2 -0
- package/dist/cli/chunks/{chunk-ORTBRO7F.js → chunk-4KOVHQXK.js} +2 -2
- package/dist/cli/chunks/{chunk-B2UHTA4Q.js → chunk-4POOJYXA.js} +1 -1
- package/dist/cli/chunks/{chunk-QXY3IRBW.js → chunk-5DH5QI7G.js} +26 -26
- package/dist/cli/chunks/{chunk-7BIYJRQJ.js → chunk-5GIJU2ZY.js} +2 -2
- package/dist/cli/chunks/{chunk-6LG5UEQE.js → chunk-5HAPS6VD.js} +2 -2
- package/dist/cli/chunks/{chunk-OU4ZAWCC.js → chunk-5LST62QR.js} +2 -2
- package/dist/cli/chunks/{chunk-Y2E3IJ53.js → chunk-5MT7DMD7.js} +2 -2
- package/dist/cli/chunks/{chunk-6UYN5PHA.js → chunk-5NC7QEJ6.js} +4 -4
- package/dist/cli/chunks/{chunk-3DTEQHFB.js → chunk-5UPIL62W.js} +3 -3
- package/dist/cli/chunks/{chunk-YINFES3E.js → chunk-5VUIXDY2.js} +2 -2
- package/dist/cli/chunks/chunk-5VZVMO7B.js +3 -0
- package/dist/cli/chunks/{chunk-JCC7QEKZ.js → chunk-624QRKQX.js} +1 -1
- package/dist/cli/chunks/{chunk-HIUNCO2W.js → chunk-66NW3ZB4.js} +2 -2
- package/dist/cli/chunks/{chunk-4AZP7ZCW.js → chunk-6HWARQWV.js} +2 -2
- package/dist/cli/chunks/{chunk-LNO5IWGH.js → chunk-6MXAJBEA.js} +1 -1
- package/dist/cli/chunks/{chunk-XNEEYXR2.js → chunk-6R3FBFCJ.js} +2 -2
- package/dist/cli/chunks/{chunk-ZT3GUYM5.js → chunk-6RDVY26I.js} +2 -2
- package/dist/cli/chunks/{chunk-W3ZGNNDV.js → chunk-6T6AHVLF.js} +1 -1
- package/dist/cli/chunks/{chunk-JANLATHN.js → chunk-6WOZUSSN.js} +2 -2
- package/dist/cli/chunks/chunk-72MQCZSM.js +2 -0
- package/dist/cli/chunks/chunk-7QVPMH25.js +3 -0
- package/dist/cli/chunks/{chunk-HLFDC4SF.js → chunk-7SAMMQVS.js} +1 -1
- package/dist/cli/chunks/{chunk-644DFAGS.js → chunk-7TJZDRDU.js} +1 -1
- package/dist/cli/chunks/{chunk-BYXNHGQC.js → chunk-7TVIX4WL.js} +2 -2
- package/dist/cli/chunks/{chunk-FBEXG4HD.js → chunk-7VTKR44N.js} +2 -2
- package/dist/cli/chunks/{chunk-UE22ODHN.js → chunk-7XTANLTN.js} +1 -1
- package/dist/cli/chunks/chunk-7XUB7U6Z.js +4 -0
- package/dist/cli/chunks/{chunk-HPLMX62I.js → chunk-A74J23QB.js} +2 -2
- package/dist/cli/chunks/{chunk-VRJPH3LG.js → chunk-A7ANPS4E.js} +2 -2
- package/dist/cli/chunks/{chunk-IHFUEPZH.js → chunk-AJT3XDRD.js} +2 -2
- package/dist/cli/chunks/{chunk-EUEHBERE.js → chunk-ALCIUWFC.js} +1 -1
- package/dist/cli/chunks/{chunk-NMJVG22Z.js → chunk-AUN4FG7V.js} +1 -1
- package/dist/cli/chunks/{chunk-DWZI3IVB.js → chunk-AUOSHM63.js} +2 -2
- package/dist/cli/chunks/{chunk-7EZLOC4K.js → chunk-AX26QJ6T.js} +2 -2
- package/dist/cli/chunks/{chunk-PDPEMBFV.js → chunk-B7RHBKHL.js} +2 -2
- package/dist/cli/chunks/{chunk-DEGWCUMY.js → chunk-BAYGQRNP.js} +2 -2
- package/dist/cli/chunks/{chunk-ONCH5AXU.js → chunk-BIXRTOH3.js} +18 -18
- package/dist/cli/chunks/{chunk-U4TV75AC.js → chunk-BO7UFNYV.js} +2 -2
- package/dist/cli/chunks/{chunk-FNAYDITO.js → chunk-BUTGIVKW.js} +1 -1
- package/dist/cli/chunks/{chunk-HBYQYGXP.js → chunk-BXATKI5S.js} +2 -2
- package/dist/cli/chunks/{chunk-BO4PKNYP.js → chunk-CCL436IU.js} +32 -27
- package/dist/cli/chunks/{chunk-XIE7OHML.js → chunk-CEXNW5TR.js} +1 -1
- package/dist/cli/chunks/{chunk-663ZFPUL.js → chunk-CLAMMGY3.js} +2 -2
- package/dist/cli/chunks/{chunk-PVAE65B4.js → chunk-CR66HNAE.js} +1 -1
- package/dist/cli/chunks/{chunk-LRASYSGV.js → chunk-CZBIREL5.js} +2 -2
- package/dist/cli/chunks/{chunk-WLIYWBQR.js → chunk-D5N2O5EH.js} +2 -2
- package/dist/cli/chunks/{chunk-A337MD3C.js → chunk-DA7DGDTI.js} +2 -2
- package/dist/cli/chunks/{chunk-WC47GICZ.js → chunk-DLSFT6PO.js} +2 -2
- package/dist/cli/chunks/{chunk-KHCALIFP.js → chunk-DQNUPEY5.js} +2 -2
- package/dist/cli/chunks/{chunk-GTSOFCMQ.js → chunk-EECF4CMA.js} +1 -1
- package/dist/cli/chunks/{chunk-5BOZCMXZ.js → chunk-EF5UHDCG.js} +1 -1
- package/dist/cli/chunks/{chunk-L6SVCNXK.js → chunk-EJ4KZFZN.js} +1 -1
- package/dist/cli/chunks/{chunk-CFPR24YK.js → chunk-ELI4GDQO.js} +2 -2
- package/dist/cli/chunks/{chunk-KJ3KBP24.js → chunk-F3KS3TAB.js} +2 -2
- package/dist/cli/chunks/{chunk-RMJ7PJOS.js → chunk-F7A2UBZO.js} +2 -2
- package/dist/cli/chunks/{chunk-U6OVPMQX.js → chunk-FOJRPEIP.js} +2 -2
- package/dist/cli/chunks/{chunk-JYY7AYGA.js → chunk-FQ5N666N.js} +1 -1
- package/dist/cli/chunks/{chunk-4XSCZVON.js → chunk-FU7LNUD7.js} +2 -2
- package/dist/cli/chunks/{chunk-OW42F2TX.js → chunk-GFB6BZWU.js} +2 -2
- package/dist/cli/chunks/{chunk-JI77KJP7.js → chunk-GI5HWS4H.js} +1 -1
- package/dist/cli/chunks/{chunk-4UXPDV7E.js → chunk-GNYOHZVV.js} +1 -1
- package/dist/cli/chunks/{chunk-VCKDVOPD.js → chunk-GVRFSXY6.js} +2 -2
- package/dist/cli/chunks/{chunk-PURHGLEC.js → chunk-GWM4M5NF.js} +1 -1
- package/dist/cli/chunks/{chunk-BY646JOM.js → chunk-HAN4MS5T.js} +2 -2
- package/dist/cli/chunks/{chunk-OGYWWZU7.js → chunk-HEGGV2PT.js} +2 -2
- package/dist/cli/chunks/{chunk-FHUJCVT3.js → chunk-HOEWMEF2.js} +2 -2
- package/dist/cli/chunks/{chunk-CXOXUBYU.js → chunk-HZFK2Z2Z.js} +1 -1
- package/dist/cli/chunks/chunk-I7WAW7TM.js +2 -0
- package/dist/cli/chunks/{chunk-E4VIVMDL.js → chunk-IEPWO4XP.js} +2 -2
- package/dist/cli/chunks/{chunk-DTJODGCE.js → chunk-ITIJ23K2.js} +2 -2
- package/dist/cli/chunks/{chunk-AQN5EDBM.js → chunk-IVJIHZSM.js} +1 -1
- package/dist/cli/chunks/{chunk-PHP4UJYP.js → chunk-JAPBSSFY.js} +1 -1
- package/dist/cli/chunks/{chunk-A2WOQO2N.js → chunk-JCE76MPP.js} +2 -2
- package/dist/cli/chunks/{chunk-A5J4XJS6.js → chunk-JPJEAK4G.js} +1 -1
- package/dist/cli/chunks/{chunk-3OAQPN2N.js → chunk-JYKQVYX2.js} +2 -2
- package/dist/cli/chunks/{chunk-MQGEZA2A.js → chunk-K55EAWZ5.js} +2 -2
- package/dist/cli/chunks/chunk-KCB6P463.js +3 -0
- package/dist/cli/chunks/{chunk-L375O3CZ.js → chunk-KIDOBLUO.js} +2 -2
- package/dist/cli/chunks/{chunk-NLDFNAOS.js → chunk-KYVIOC3C.js} +2 -2
- package/dist/cli/chunks/{chunk-CQMHDAJS.js → chunk-L2TDHJR3.js} +2 -2
- package/dist/cli/chunks/{chunk-FE3AIZI6.js → chunk-L4D3TPFP.js} +1 -1
- package/dist/cli/chunks/{chunk-VLOIEVER.js → chunk-LAY7NCQK.js} +3 -3
- package/dist/cli/chunks/{chunk-WT3JC4A6.js → chunk-LCCTJ2PC.js} +2 -2
- package/dist/cli/chunks/{chunk-VML4SG3X.js → chunk-LJCEDTUM.js} +3 -3
- package/dist/cli/chunks/{chunk-NF6AFIAX.js → chunk-LMAEMVPA.js} +1 -1
- package/dist/cli/chunks/{chunk-2XYTS2WY.js → chunk-LZWJ5BMP.js} +2 -2
- package/dist/cli/chunks/{chunk-PHAQWAEV.js → chunk-MP3FSUNB.js} +2 -2
- package/dist/cli/chunks/{chunk-IJ2EXSMO.js → chunk-MQCTLTGE.js} +2 -2
- package/dist/cli/chunks/{chunk-GRIPCYW5.js → chunk-MQTA6KIO.js} +1 -1
- package/dist/cli/chunks/{chunk-GGDKOJVF.js → chunk-NBUXM5X6.js} +10 -6
- package/dist/cli/chunks/{chunk-DPYDUKVZ.js → chunk-NHRF3V4B.js} +2 -2
- package/dist/cli/chunks/chunk-NMY4KTWA.js +16 -0
- package/dist/cli/chunks/chunk-NYS2GUNO.js +2 -0
- package/dist/cli/chunks/{chunk-AUZXRFOX.js → chunk-ONPPBLRB.js} +2 -2
- package/dist/cli/chunks/{chunk-HGBJ2QQ4.js → chunk-OPDZBRIL.js} +2 -2
- package/dist/cli/chunks/{chunk-DXVZBJE4.js → chunk-OQ4S6B7P.js} +1 -1
- package/dist/cli/chunks/{chunk-Y2WMPEUP.js → chunk-ORBODZSO.js} +2 -2
- package/dist/cli/chunks/{chunk-IJOFZBXD.js → chunk-ORFL3YXB.js} +2 -2
- package/dist/cli/chunks/{chunk-BMWAWZAN.js → chunk-P7DXVL2S.js} +2 -2
- package/dist/cli/chunks/chunk-PEMSXSP2.js +4 -0
- package/dist/cli/chunks/chunk-PS6WFCA4.js +6 -0
- package/dist/cli/chunks/{chunk-DPV33C77.js → chunk-Q2RBOC7V.js} +2 -2
- package/dist/cli/chunks/{chunk-3AYYGR6W.js → chunk-QLKUCMZC.js} +1 -1
- package/dist/cli/chunks/{chunk-EVCFUYYK.js → chunk-QLYO3H7E.js} +9 -9
- package/dist/cli/chunks/{chunk-3SH23PS3.js → chunk-QS5KZYUZ.js} +2 -2
- package/dist/cli/chunks/{chunk-3YNP33GB.js → chunk-R363XXGH.js} +2 -2
- package/dist/cli/chunks/chunk-RD5BYLN7.js +2 -0
- package/dist/cli/chunks/{chunk-MS3Z2CP5.js → chunk-RFDFET3O.js} +2 -2
- package/dist/cli/chunks/{chunk-ZLBBX24Q.js → chunk-RHIQ6QO5.js} +357 -351
- package/dist/cli/chunks/chunk-RLB7K7QP.js +2 -0
- package/dist/cli/chunks/{chunk-3YASZPLO.js → chunk-RUTO67PT.js} +2 -2
- package/dist/cli/chunks/{chunk-V7GNUVYI.js → chunk-RV6HSMKJ.js} +1 -1
- package/dist/cli/chunks/{chunk-4PT5KNXL.js → chunk-SOSJWM3E.js} +4 -4
- package/dist/cli/chunks/{chunk-6ZIDZ4TJ.js → chunk-SV5BUYHH.js} +2 -2
- package/dist/cli/chunks/{chunk-ZTC5FBL6.js → chunk-TL5GV3PR.js} +8 -8
- package/dist/cli/chunks/{chunk-GKPRECLL.js → chunk-TLUIO37P.js} +2 -2
- package/dist/cli/chunks/{chunk-FWYJ6UDX.js → chunk-TUDENMAE.js} +2 -2
- package/dist/cli/chunks/chunk-TVLOED6O.js +2 -0
- package/dist/cli/chunks/{chunk-3QD7U3FY.js → chunk-UB6DQGWM.js} +2 -2
- package/dist/cli/chunks/{chunk-SAPIRK2G.js → chunk-UHHMAKPE.js} +1 -1
- package/dist/cli/chunks/{chunk-35MDATQE.js → chunk-ULCHPPW2.js} +1 -1
- package/dist/cli/chunks/chunk-V3OLS2NG.js +2 -0
- package/dist/cli/chunks/{chunk-UXZEVIFX.js → chunk-VAYZ5QIE.js} +1 -1
- package/dist/cli/chunks/{chunk-VH3EB6ZG.js → chunk-VCONCVSY.js} +3 -3
- package/dist/cli/chunks/{chunk-QPV3OKX2.js → chunk-VVF337SV.js} +2 -2
- package/dist/cli/chunks/{chunk-XNHB6TLC.js → chunk-WKDWRRDT.js} +2 -2
- package/dist/cli/chunks/{chunk-RUJLVJDE.js → chunk-X2DR27AY.js} +2 -2
- package/dist/cli/chunks/{chunk-47GEI2LT.js → chunk-X33F7NXH.js} +3 -3
- package/dist/cli/chunks/{chunk-MB4VFAJC.js → chunk-XBEI2JBA.js} +2 -2
- package/dist/cli/chunks/{chunk-OQDC7GCM.js → chunk-XBFQJZWX.js} +2 -2
- package/dist/cli/chunks/{chunk-EAYQCBXL.js → chunk-XFPQIWEH.js} +3 -3
- package/dist/cli/chunks/{chunk-2KWI3MT3.js → chunk-XPB5BVU6.js} +2 -2
- package/dist/cli/chunks/{chunk-DL5JENWD.js → chunk-XQ53PZEF.js} +3 -3
- package/dist/cli/chunks/{chunk-BZFT4QDQ.js → chunk-XZ46CI35.js} +2 -2
- package/dist/cli/chunks/chunk-YLNYPQDR.js +2 -0
- package/dist/cli/chunks/{chunk-EOR3RECZ.js → chunk-YNG7E26C.js} +2 -2
- package/dist/cli/chunks/{chunk-6JFGB2JB.js → chunk-YXU35GGD.js} +1 -1
- package/dist/cli/chunks/{chunk-JNMUVBAJ.js → chunk-ZCP4P6O2.js} +2 -2
- package/dist/cli/chunks/{chunk-Y7GPLOXB.js → chunk-ZL5LJT7D.js} +2 -2
- package/dist/cli/chunks/{chunk-PCCIZFD7.js → chunk-ZOUEQ6DL.js} +1 -1
- package/dist/cli/chunks/{chunk-FQKEZVN6.js → chunk-ZSBD4FUX.js} +2 -2
- package/dist/cli/chunks/chunk-ZTB32K5N.js +5 -0
- package/dist/cli/chunks/{chunk-X52TMBHU.js → chunk-ZUTFHGEO.js} +1 -1
- package/dist/cli/chunks/ci-GEJCXMBK.js +81 -0
- package/dist/cli/chunks/{ci-config-XDDZOOEI.js → ci-config-2ZVV4OXL.js} +2 -2
- package/dist/cli/chunks/{ci-output-7ZUQI4U6.js → ci-output-E45OGVPR.js} +2 -2
- package/dist/cli/chunks/{circuit-breaker-ALXKCFAL.js → circuit-breaker-X73ITYZC.js} +2 -2
- package/dist/cli/chunks/{claude-flow-setup-RL7K2NI2.js → claude-flow-setup-W4PPH46C.js} +2 -2
- package/dist/cli/chunks/client-6XKSQ4JT.js +2 -0
- package/dist/cli/chunks/{cline-installer-2Z2QQKC3.js → cline-installer-NUEPMWDE.js} +2 -2
- package/dist/cli/chunks/{code-QSZTDINQ.js → code-6WQHBS7G.js} +3 -3
- package/dist/cli/chunks/{code-index-extractor-5CGR5D3Y.js → code-index-extractor-BXQIFIFT.js} +2 -2
- package/dist/cli/chunks/{codex-installer-7JLSEDE5.js → codex-installer-Z337R2KH.js} +2 -2
- package/dist/cli/chunks/{completions-U4NBSXEB.js → completions-F5DMYFHV.js} +2 -2
- package/dist/cli/chunks/{complexity-analyzer-WYZD2YSY.js → complexity-analyzer-W2SYPZDI.js} +2 -2
- package/dist/cli/chunks/{continuedev-installer-UPXINJFT.js → continuedev-installer-ZCHUIFTN.js} +2 -2
- package/dist/cli/chunks/{copilot-installer-WIVYQRIF.js → copilot-installer-M5JNODXF.js} +2 -2
- package/dist/cli/chunks/core-handlers-OJYW4Y6M.js +2 -0
- package/dist/cli/chunks/{cost-tracker-RIN4JDDM.js → cost-tracker-LSYTHBHV.js} +2 -2
- package/dist/cli/chunks/coverage-PGMRS5SS.js +49 -0
- package/dist/cli/chunks/cross-domain-router-QVUPQ2SC.js +2 -0
- package/dist/cli/chunks/{cursor-installer-POM7NGCC.js → cursor-installer-XPUA73UW.js} +2 -2
- package/dist/cli/chunks/{daemon-HFGKQ6LB.js → daemon-ITKDIYMW.js} +5 -5
- package/dist/cli/chunks/daemon-QBYTCIMH.js +10 -0
- package/dist/cli/chunks/{dag-attention-scheduler-HJXM7Q5P.js → dag-attention-scheduler-T55AXLD6.js} +2 -2
- package/dist/cli/chunks/{detect-XKQGLZYN.js → detect-DR7J6K4O.js} +2 -2
- package/dist/cli/chunks/{dist-node-SSKB53QL.js → dist-node-LAJJBOUT.js} +2 -2
- package/dist/cli/chunks/{domain-handler-6BNDHATU.js → domain-handler-OMSHCRMK.js} +2 -2
- package/dist/cli/chunks/{domain-plugins-DOX54YE3.js → domain-plugins-EQXSKC5K.js} +2 -2
- package/dist/cli/chunks/{domain-transfer-FW4ZX3Z7.js → domain-transfer-FKRAGVSW.js} +2 -2
- package/dist/cli/chunks/dream-3UABDRZJ.js +2 -0
- package/dist/cli/chunks/embed-and-insert-pattern-JZFPCNL3.js +3 -0
- package/dist/cli/chunks/{eval-K7E4XXBS.js → eval-JSNNASBW.js} +2 -2
- package/dist/cli/chunks/experience-capture-middleware-UPD3IZBK.js +40 -0
- package/dist/cli/chunks/{fast-paths-5JXXTYAG.js → fast-paths-YNMIBS2E.js} +2 -2
- package/dist/cli/chunks/{feature-flags-2CR3CO23.js → feature-flags-SRLXDKBI.js} +2 -2
- package/dist/cli/chunks/{feature-flags-RB72LHOJ.js → feature-flags-VIR7O4L7.js} +2 -2
- package/dist/cli/chunks/file-discovery-ZFGZTKZ4.js +2 -0
- package/dist/cli/chunks/{fleet-SDU7QEOA.js → fleet-K2ED46EL.js} +3 -3
- package/dist/cli/chunks/{gnn-wrapper-AWCFODUV.js → gnn-wrapper-QCU4ZRYW.js} +2 -2
- package/dist/cli/chunks/{heartbeat-handler-A4PJ3NFP.js → heartbeat-handler-YYQI4WZM.js} +4 -4
- package/dist/cli/chunks/heartbeat-scheduler-MJ6MTPDF.js +2 -0
- package/dist/cli/chunks/hnsw-adapter-FQWJCFVW.js +2 -0
- package/dist/cli/chunks/hnsw-index-NJYKJUHC.js +2 -0
- package/dist/cli/chunks/{hnsw-legacy-bridge-KRS7SSFM.js → hnsw-legacy-bridge-C5TJSWTZ.js} +2 -2
- package/dist/cli/chunks/{hnswlib-node-OGGCPKPO.js → hnswlib-node-SE3MJJYS.js} +2 -2
- package/dist/cli/chunks/{hooks-XNRNMUBW.js → hooks-C572SRDH.js} +43 -43
- package/dist/cli/chunks/hybrid-backend-SL7RFID7.js +2 -0
- package/dist/cli/chunks/{hypergraph-engine-X35LTXYT.js → hypergraph-engine-35A6G3M5.js} +2 -2
- package/dist/cli/chunks/{hypergraph-handler-M6THKAG6.js → hypergraph-handler-U2756CWI.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-5ZJTXPVC.js +2 -0
- package/dist/cli/chunks/init-handler-PCLYQUSB.js +88 -0
- package/dist/cli/chunks/init-wizard-MQMDSIOF.js +2 -0
- package/dist/cli/chunks/kernel-MEJ5GMRH.js +2 -0
- package/dist/cli/chunks/{kilocode-installer-TEPR2ZJD.js → kilocode-installer-32PX5YH7.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-RUKHGDEE.js → kiro-installer-C4ROMMUS.js} +2 -2
- package/dist/cli/chunks/knowledge-graph-XUBZSEZE.js +2 -0
- package/dist/cli/chunks/learning-GEPVZGJQ.js +122 -0
- package/dist/cli/chunks/{llm-router-7GECMDCP.js → llm-router-XRKTTJTX.js} +4 -4
- package/dist/cli/chunks/llm-router-service-QZAPAEPX.js +2 -0
- package/dist/cli/chunks/{load-NTJ4Y4ZR.js → load-XVH6HW7E.js} +2 -2
- package/dist/cli/chunks/load-test-OVXIQ3AF.js +2 -0
- package/dist/cli/chunks/{mcp-4335GTTG.js → mcp-IULSTM4Z.js} +2 -2
- package/dist/cli/chunks/{memory-HYC4M4XS.js → memory-6K7IAU4T.js} +5 -5
- package/dist/cli/chunks/memory-backend-TRPOMPK4.js +2 -0
- package/dist/cli/chunks/memory-handlers-CG6DRLAW.js +2 -0
- package/dist/cli/chunks/{multi-model-executor-T7FYKM6T.js → multi-model-executor-VZDUYPLX.js} +2 -2
- package/dist/cli/chunks/{opencode-installer-3USXVT5M.js → opencode-installer-QUTXKNH4.js} +2 -2
- package/dist/cli/chunks/orchestrator-PCKKUWOP.js +452 -0
- package/dist/cli/chunks/pattern-null-store-JWYBRBZG.js +2 -0
- package/dist/cli/chunks/{pattern-usage-recorder-CMZLPX2K.js → pattern-usage-recorder-PX5HQVRL.js} +2 -2
- package/dist/cli/chunks/{pipeline-BTRZOVSL.js → pipeline-O562GTOG.js} +2 -2
- package/dist/cli/chunks/{platform-2MCRKC25.js → platform-PM7Q2AZS.js} +2 -2
- package/dist/cli/chunks/plugin-OTYTFGPY.js +27 -0
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-TXFEMBP6.js → prime-radiant-advanced-wasm-6CFXTHC2.js} +2 -2
- package/dist/cli/chunks/project-root-VVSTHIP4.js +2 -0
- package/dist/cli/chunks/protocol-executor-PXZCLZD3.js +2 -0
- package/dist/cli/chunks/{protocol-handler-DZ26OYVZ.js → protocol-handler-PPGNSAOS.js} +2 -2
- package/dist/cli/chunks/{prove-QWONEJWX.js → prove-WQ3BKRZG.js} +2 -2
- package/dist/cli/chunks/qe-reasoning-bank-42FRS5V3.js +2 -0
- package/dist/cli/chunks/{quality-WFH54FY7.js → quality-C5WUU3AA.js} +2 -2
- package/dist/cli/chunks/{quality-gate-ONJB7XU7.js → quality-gate-WSSRKD5U.js} +3 -3
- package/dist/cli/chunks/queen-coordinator-UI3B7DI6.js +2 -0
- package/dist/cli/chunks/real-embeddings-CFQE7IRQ.js +2 -0
- package/dist/cli/chunks/{ref-validation-HW5Y55ZC.js → ref-validation-DHKHXVZT.js} +2 -2
- package/dist/cli/chunks/{roocode-installer-5OABDNZT.js → roocode-installer-3PPODABV.js} +2 -2
- package/dist/cli/chunks/router-HYRPWLAY.js +2 -0
- package/dist/cli/chunks/routing-feedback-BPZ5R6F3.js +2 -0
- package/dist/cli/chunks/{routing-handler-CVHVOQTC.js → routing-handler-JNXTGT6T.js} +2 -2
- package/dist/cli/chunks/{ruvector-commands-KKDKFGIQ.js → ruvector-commands-6YLROPVP.js} +2 -2
- package/dist/cli/chunks/rvf-dual-writer-DEKDQ6KO.js +2 -0
- package/dist/cli/chunks/rvf-migration-adapter-L53VBS7I.js +2 -0
- package/dist/cli/chunks/rvf-migration-coordinator-4DWB4WRK.js +2 -0
- package/dist/cli/chunks/rvf-native-adapter-I6RUGD2D.js +2 -0
- package/dist/cli/chunks/{rvf-store-integrity-UGUXKIFX.js → rvf-store-integrity-YKR2ZNBF.js} +2 -2
- package/dist/cli/chunks/safe-db-KS65XDCP.js +2 -0
- package/dist/cli/chunks/schedule-KD2VN6GB.js +2 -0
- package/dist/cli/chunks/scheduler-ZH3RMUHY.js +2 -0
- package/dist/cli/chunks/{security-7723AZZ4.js → security-PWQTGDRU.js} +3 -3
- package/dist/cli/chunks/shared-rvf-adapter-LNRLFP5I.js +2 -0
- package/dist/cli/chunks/{shared-rvf-dual-writer-ZSHYG5IA.js → shared-rvf-dual-writer-GWU6YQNS.js} +2 -2
- package/dist/cli/chunks/sqlite-persistence-6DTVME5D.js +2 -0
- package/dist/cli/chunks/{standalone-memory-MHZEEYMK.js → standalone-memory-46KKBSSV.js} +2 -2
- package/dist/cli/chunks/{status-handler-JKXPJ22K.js → status-handler-35T5FTDQ.js} +2 -2
- package/dist/cli/chunks/{structural-health-J4RKCYWF.js → structural-health-P7QPQWLO.js} +2 -2
- package/dist/cli/chunks/{sync-PDPORHVN.js → sync-W6Z4R4PL.js} +2 -2
- package/dist/cli/chunks/sync-Y43EWBSY.js +2 -0
- package/dist/cli/chunks/{task-handler-VERADM44.js → task-handler-5CX3ZYT7.js} +2 -2
- package/dist/cli/chunks/{task-handlers-4RUCWUR2.js → task-handlers-DQZGOJNE.js} +3 -3
- package/dist/cli/chunks/{test-DMBJFQNL.js → test-TPP53VVV.js} +12 -12
- package/dist/cli/chunks/{test-scheduling-LUPTVGCD.js → test-scheduling-WBV4UMQH.js} +3 -3
- package/dist/cli/chunks/token-bootstrap-GIIDXHLC.js +2 -0
- package/dist/cli/chunks/{token-usage-VOA34IKM.js → token-usage-AKK37RB7.js} +2 -2
- package/dist/cli/chunks/{transformers-GU4TYAN5.js → transformers-7MASPELS.js} +2 -2
- package/dist/cli/chunks/{tree-sitter-wasm-parser-MZPXAH7C.js → tree-sitter-wasm-parser-YZKD6UGB.js} +2 -2
- package/dist/cli/chunks/{types-K4FLXR2K.js → types-AZ3BTXDP.js} +2 -2
- package/dist/cli/chunks/unified-memory-FCX7NLFZ.js +2 -0
- package/dist/cli/chunks/unified-memory-hnsw-VU5QJK37.js +2 -0
- package/dist/cli/chunks/unified-persistence-FM376LGE.js +2 -0
- package/dist/cli/chunks/{upgrade-M3ATDRMK.js → upgrade-L7OTDKEK.js} +2 -2
- package/dist/cli/chunks/{validate-AAP773B3.js → validate-O3QVFIGP.js} +2 -2
- package/dist/cli/chunks/{validate-swarm-7RGAZX5F.js → validate-swarm-2UGBGLTX.js} +2 -2
- package/dist/cli/chunks/visual-security-EU7Y3X46.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-GQMRHGGI.js → web-tree-sitter-J75IYPRO.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-HG6HF2GF.js → windsurf-installer-FQ5DBFCG.js} +2 -2
- package/dist/cli/chunks/witness-chain-CSEBT52D.js +2 -0
- package/dist/cli/chunks/{witness-chain-WKU3ZIBQ.js → witness-chain-I7TN4MXZ.js} +2 -2
- package/dist/cli/chunks/witness-chain-repair-D3NE3NQK.js +2 -0
- package/dist/cli/chunks/{witness-chain-verifier-Q2KW3QEQ.js → witness-chain-verifier-RU2WOP5M.js} +2 -2
- package/dist/cli/chunks/witness-key-manager-IHQB2FR5.js +2 -0
- package/dist/cli/chunks/{workflow-CX6SHFBW.js → workflow-6BWTNVV6.js} +28 -28
- package/dist/cli/chunks/workflow-orchestrator-ALNKOM3N.js +2 -0
- package/dist/cli/chunks/wrappers-URVP25VU.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 +47 -7
- package/dist/cli/commands/test.js +6 -7
- package/dist/cli/commands/workflow.js +9 -5
- package/dist/cli/handlers/init-guard.d.ts +13 -0
- package/dist/cli/handlers/init-guard.js +23 -0
- package/dist/cli/handlers/init-handler.d.ts +3 -0
- package/dist/cli/handlers/init-handler.js +9 -0
- package/dist/cli/handlers/interfaces.js +5 -1
- 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 +8 -1
- package/dist/cli/utils/ci-output.js +13 -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/test-execution-handlers.js +4 -1
- package/dist/coordination/protocols/defect-investigation.d.ts +2 -1
- package/dist/coordination/protocols/defect-investigation.js +6 -3
- package/dist/coordination/protocols/quality-gate.js +10 -6
- package/dist/coordination/result-saver.d.ts +22 -0
- package/dist/coordination/result-saver.js +113 -43
- 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 +33 -0
- package/dist/domains/coverage-analysis/collected-metrics.js +36 -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 +6 -4
- 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 +46 -0
- package/dist/domains/quality-assessment/quality-evidence.d.ts +48 -2
- 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 +192 -109
- package/dist/domains/security-compliance/services/scanners/dast-scanner.js +22 -16
- 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/test-executor.js +152 -102
- 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 +168 -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 +516 -504
- package/dist/mcp/handlers/domain-handler-configs.d.ts +31 -1
- package/dist/mcp/handlers/domain-handler-configs.js +37 -3
- package/dist/mcp/handlers/handler-factory.js +40 -14
- package/dist/mcp/protocol-server.js +27 -2
- 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 +4 -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/workers/interfaces.d.ts +9 -1
- 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 +2 -2
- package/dist/workers/quality-daemon/persistent-memory.js +2 -2
- package/dist/workers/worker-manager.js +5 -1
- package/dist/workers/workers/coverage-tracker.js +69 -33
- package/dist/workers/workers/regression-monitor.d.ts +18 -1
- package/dist/workers/workers/regression-monitor.js +276 -117
- package/package.json +1 -1
- 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-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-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/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
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Exports for code quality and system metrics analysis
|
|
4
4
|
*/
|
|
5
5
|
export { CodeMetricsAnalyzer, getCodeMetricsAnalyzer } from './code-metrics';
|
|
6
|
-
export type { FileMetrics, FunctionMetrics, HalsteadMetrics, DuplicationResult, DuplicateBlock, } from './code-metrics';
|
|
6
|
+
export type { FileMetrics, FileAnalysisOutcome, FileAnalysisStatus, FunctionMetrics, HalsteadMetrics, DuplicationResult, DuplicateBlock, } from './code-metrics';
|
|
7
7
|
export { SystemMetricsCollector, getSystemMetricsCollector } from './system-metrics';
|
|
8
8
|
export type { SystemMetrics, CpuMetrics, MemoryMetrics, ProcessMetrics, MetricSample, HttpMetrics, } from './system-metrics';
|
|
9
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -152,8 +152,16 @@ export interface WorkerEvent {
|
|
|
152
152
|
readonly timestamp: Date;
|
|
153
153
|
readonly payload: unknown;
|
|
154
154
|
}
|
|
155
|
+
/** Read options; `namespace` reads another domain's records (e.g. quality evidence). */
|
|
156
|
+
export interface WorkerMemoryReadOptions {
|
|
157
|
+
namespace?: string;
|
|
158
|
+
}
|
|
155
159
|
export interface WorkerMemory {
|
|
156
|
-
|
|
160
|
+
/**
|
|
161
|
+
* Read a key. Without `namespace` the worker's own namespace is used; a
|
|
162
|
+
* backend without namespaces ignores it.
|
|
163
|
+
*/
|
|
164
|
+
get<T>(key: string, options?: WorkerMemoryReadOptions): Promise<T | undefined>;
|
|
157
165
|
set<T>(key: string, value: T): Promise<void>;
|
|
158
166
|
search(pattern: string): Promise<string[]>;
|
|
159
167
|
}
|
|
@@ -17,9 +17,10 @@ export interface CoverageSnapshot {
|
|
|
17
17
|
}
|
|
18
18
|
export interface CoverageMetrics {
|
|
19
19
|
readonly line: number;
|
|
20
|
-
|
|
21
|
-
readonly
|
|
22
|
-
readonly
|
|
20
|
+
/** `null` = not collected in that snapshot (#1027 B2) — never a fake 0. */
|
|
21
|
+
readonly branch: number | null;
|
|
22
|
+
readonly function: number | null;
|
|
23
|
+
readonly statement: number | null;
|
|
23
24
|
}
|
|
24
25
|
export interface FileCoverage {
|
|
25
26
|
readonly line: number;
|
|
@@ -8,6 +8,11 @@
|
|
|
8
8
|
*
|
|
9
9
|
* Enqueues test suggestion tasks when gaps exceed threshold.
|
|
10
10
|
*/
|
|
11
|
+
import { measuredCoverageSummary } from '../../domains/quality-assessment/coverage-report-event.js';
|
|
12
|
+
/** Delta of a metric; 0 when either side did not collect it (#1027 B2). */
|
|
13
|
+
function metricDelta(now, before) {
|
|
14
|
+
return now === null || before === null ? 0 : now - before;
|
|
15
|
+
}
|
|
11
16
|
const DEFAULTS = {
|
|
12
17
|
regressionThreshold: 2,
|
|
13
18
|
gapThreshold: 60,
|
|
@@ -39,12 +44,12 @@ export class CoverageDeltaAnalyzer {
|
|
|
39
44
|
const previous = previousRaw;
|
|
40
45
|
const overallDelta = {
|
|
41
46
|
line: current.overall.line - previous.overall.line,
|
|
42
|
-
branch: current.overall.branch
|
|
43
|
-
function: current.overall.function
|
|
44
|
-
statement: current.overall.statement
|
|
47
|
+
branch: metricDelta(current.overall.branch, previous.overall.branch ?? null),
|
|
48
|
+
function: metricDelta(current.overall.function, previous.overall.function ?? null),
|
|
49
|
+
statement: metricDelta(current.overall.statement, previous.overall.statement ?? null),
|
|
45
50
|
};
|
|
46
51
|
const regressionDetected = overallDelta.line < -this.options.regressionThreshold ||
|
|
47
|
-
overallDelta.branch < -this.options.regressionThreshold;
|
|
52
|
+
(overallDelta.branch ?? 0) < -this.options.regressionThreshold;
|
|
48
53
|
// Compute per-file deltas
|
|
49
54
|
const filesToCheck = changedFiles ?? Object.keys(current.files);
|
|
50
55
|
const affectedFiles = [];
|
|
@@ -90,7 +95,9 @@ export class CoverageDeltaAnalyzer {
|
|
|
90
95
|
* Build a CoverageSnapshot from raw lcov/istanbul data stored in memory.
|
|
91
96
|
*/
|
|
92
97
|
async buildSnapshot(memory) {
|
|
93
|
-
const
|
|
98
|
+
const raw = await memory.get('coverage:latest');
|
|
99
|
+
// #1014: only a measured record is a snapshot; legacy/estimated records are not.
|
|
100
|
+
const latest = measuredCoverageSummary(raw);
|
|
94
101
|
if (!latest)
|
|
95
102
|
return undefined;
|
|
96
103
|
return {
|
|
@@ -101,7 +108,7 @@ export class CoverageDeltaAnalyzer {
|
|
|
101
108
|
function: latest.function,
|
|
102
109
|
statement: latest.statement,
|
|
103
110
|
},
|
|
104
|
-
files:
|
|
111
|
+
files: raw && typeof raw.files === 'object' ? raw.files : {},
|
|
105
112
|
};
|
|
106
113
|
}
|
|
107
114
|
// ============================================================================
|
|
@@ -306,11 +306,12 @@ export class QualityDaemon {
|
|
|
306
306
|
try {
|
|
307
307
|
const snapshot = await this.coverageDelta.buildSnapshot(memory);
|
|
308
308
|
if (snapshot) {
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
snapshot.overall.statement
|
|
313
|
-
|
|
309
|
+
// #1027 B2: average the metrics that were collected; an uncollected
|
|
310
|
+
// one (null) is left out rather than dragging health down as 0.
|
|
311
|
+
const collected = [snapshot.overall.line, snapshot.overall.branch,
|
|
312
|
+
snapshot.overall.function, snapshot.overall.statement]
|
|
313
|
+
.filter((v) => typeof v === 'number');
|
|
314
|
+
this._coverageHealth = Math.round(collected.reduce((a, v) => a + v, 0) / collected.length);
|
|
314
315
|
this._lastCoverageCheck = now;
|
|
315
316
|
}
|
|
316
317
|
}
|
|
@@ -8,9 +8,9 @@
|
|
|
8
8
|
* Notification types: gate_failure, coverage_drop, flaky_detected, suggestion_available
|
|
9
9
|
*/
|
|
10
10
|
import { writeFileSync, mkdirSync, readdirSync, readFileSync, unlinkSync } from 'fs';
|
|
11
|
-
import { join
|
|
11
|
+
import { join } from 'path';
|
|
12
|
+
import { getProjectStorePath } from '../../kernel/project-root.js';
|
|
12
13
|
const DEFAULTS = {
|
|
13
|
-
notificationsDir: resolve(process.cwd(), '.agentic-qe', 'notifications'),
|
|
14
14
|
maxNotifications: 200,
|
|
15
15
|
};
|
|
16
16
|
export class NotificationService {
|
|
@@ -20,7 +20,7 @@ export class NotificationService {
|
|
|
20
20
|
urlValidator;
|
|
21
21
|
_sentCount = 0;
|
|
22
22
|
constructor(options) {
|
|
23
|
-
this.notificationsDir = options?.notificationsDir ??
|
|
23
|
+
this.notificationsDir = options?.notificationsDir ?? getProjectStorePath('notifications');
|
|
24
24
|
this.maxNotifications = options?.maxNotifications ?? DEFAULTS.maxNotifications;
|
|
25
25
|
this.webhookUrl = options?.webhookUrl;
|
|
26
26
|
this.urlValidator = options?.urlValidator;
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
*
|
|
8
8
|
* Resolves Finding 2: CLI daemon previously used throwaway in-memory Map.
|
|
9
9
|
*/
|
|
10
|
-
import type { WorkerMemory } from '../interfaces';
|
|
10
|
+
import type { WorkerMemory, WorkerMemoryReadOptions } from '../interfaces';
|
|
11
11
|
/**
|
|
12
12
|
* Interface matching the subset of UnifiedMemoryManager we need,
|
|
13
13
|
* to avoid circular dependency on the full kernel module.
|
|
@@ -24,7 +24,7 @@ export interface KVBackend {
|
|
|
24
24
|
export declare class PersistentWorkerMemory implements WorkerMemory {
|
|
25
25
|
private readonly backend;
|
|
26
26
|
constructor(backend: KVBackend);
|
|
27
|
-
get<T>(key: string): Promise<T | undefined>;
|
|
27
|
+
get<T>(key: string, options?: WorkerMemoryReadOptions): Promise<T | undefined>;
|
|
28
28
|
set<T>(key: string, value: T): Promise<void>;
|
|
29
29
|
search(pattern: string): Promise<string[]>;
|
|
30
30
|
}
|
|
@@ -17,8 +17,8 @@ export class PersistentWorkerMemory {
|
|
|
17
17
|
constructor(backend) {
|
|
18
18
|
this.backend = backend;
|
|
19
19
|
}
|
|
20
|
-
async get(key) {
|
|
21
|
-
return this.backend.kvGet(key, NAMESPACE);
|
|
20
|
+
async get(key, options) {
|
|
21
|
+
return this.backend.kvGet(key, options?.namespace ?? NAMESPACE);
|
|
22
22
|
}
|
|
23
23
|
async set(key, value) {
|
|
24
24
|
await this.backend.kvSet(key, value, NAMESPACE);
|
|
@@ -48,7 +48,11 @@ class InMemoryWorkerEventBus {
|
|
|
48
48
|
*/
|
|
49
49
|
class InMemoryWorkerMemory {
|
|
50
50
|
store = new Map();
|
|
51
|
-
async get(key) {
|
|
51
|
+
async get(key, options) {
|
|
52
|
+
// This process-local store holds only worker keys: no other domain's
|
|
53
|
+
// namespace (e.g. quality evidence) lives here.
|
|
54
|
+
if (options?.namespace)
|
|
55
|
+
return undefined;
|
|
52
56
|
return this.store.get(key);
|
|
53
57
|
}
|
|
54
58
|
async set(key, value) {
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
* - Uncovered critical paths
|
|
10
10
|
*/
|
|
11
11
|
import { BaseWorker } from '../base-worker.js';
|
|
12
|
+
import { measuredCoverageSummary } from '../../domains/quality-assessment/coverage-report-event.js';
|
|
12
13
|
const CONFIG = {
|
|
13
14
|
id: 'coverage-tracker',
|
|
14
15
|
name: 'Coverage Tracker',
|
|
@@ -33,46 +34,69 @@ export class CoverageTrackerWorker extends BaseWorker {
|
|
|
33
34
|
// Collect coverage metrics
|
|
34
35
|
const trend = await this.collectCoverageTrend(context);
|
|
35
36
|
const gaps = await this.identifyCoverageGaps(context);
|
|
36
|
-
// Analyze coverage thresholds
|
|
37
|
-
this.analyzeCoverageThresholds(trend.current, findings, recommendations);
|
|
38
37
|
// Analyze coverage gaps
|
|
39
38
|
this.analyzeCoverageGaps(gaps, findings, recommendations);
|
|
40
|
-
//
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
39
|
+
// #1018: with no measured coverage there is nothing to compare, nothing
|
|
40
|
+
// to store, and no figure to report — never a fake 0% record.
|
|
41
|
+
const current = trend.current;
|
|
42
|
+
if (current) {
|
|
43
|
+
this.analyzeCoverageThresholds(current, findings, recommendations);
|
|
44
|
+
this.analyzeCoverageTrends({ ...trend, current }, findings, recommendations);
|
|
45
|
+
await context.memory.set('coverage:current', current);
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
findings.push({
|
|
49
|
+
type: 'coverage-unmeasured',
|
|
50
|
+
severity: 'info',
|
|
51
|
+
domain: 'coverage-analysis',
|
|
52
|
+
title: 'Coverage Unmeasured',
|
|
53
|
+
description: 'No measured coverage exists yet (no instrumented coverage:latest). Nothing was ' +
|
|
54
|
+
'tracked; this is not 0% coverage. Run tests with coverage or coverage_analyze_sublinear.',
|
|
55
|
+
});
|
|
56
|
+
}
|
|
44
57
|
await context.memory.set('coverage:gaps', gaps);
|
|
45
|
-
const healthScore = this.calculateHealthScore(
|
|
58
|
+
const healthScore = this.calculateHealthScore(current, gaps);
|
|
46
59
|
context.logger.info('Coverage tracking complete', {
|
|
47
60
|
healthScore,
|
|
61
|
+
measured: current !== null,
|
|
48
62
|
findingsCount: findings.length,
|
|
49
63
|
gapsFound: gaps.length,
|
|
50
64
|
});
|
|
65
|
+
const pct = (v) => (v === null || v === undefined ? 'n/a' : `${v}%`);
|
|
51
66
|
return this.createResult(Date.now() - startTime, {
|
|
52
|
-
itemsAnalyzed: gaps.length + 4, // 4 coverage types + gaps
|
|
53
|
-
issuesFound: findings.length,
|
|
67
|
+
itemsAnalyzed: gaps.length + (current ? 4 : 0), // 4 coverage types + gaps
|
|
68
|
+
issuesFound: findings.filter(f => f.severity !== 'info').length,
|
|
54
69
|
healthScore,
|
|
55
|
-
trend: this.determineTrend(trend),
|
|
70
|
+
trend: current ? this.determineTrend({ ...trend, current }) : 'stable',
|
|
56
71
|
domainMetrics: {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
72
|
+
coverageMeasured: current ? 'true' : 'false',
|
|
73
|
+
lineCoverage: current ? pct(current.line) : 'unmeasured',
|
|
74
|
+
branchCoverage: current ? pct(current.branch) : 'unmeasured',
|
|
75
|
+
functionCoverage: current ? pct(current.function) : 'unmeasured',
|
|
76
|
+
statementCoverage: current ? pct(current.statement) : 'unmeasured',
|
|
61
77
|
gapsCount: gaps.length,
|
|
62
78
|
},
|
|
63
79
|
}, findings, recommendations);
|
|
64
80
|
}
|
|
65
81
|
async collectCoverageTrend(context) {
|
|
66
|
-
|
|
67
|
-
//
|
|
68
|
-
|
|
69
|
-
const
|
|
82
|
+
// A previous record is a baseline only if it was measured (#1018): older
|
|
83
|
+
// versions wrote an all-zero coverage:current when nothing was measured.
|
|
84
|
+
const stored = await context.memory.get('coverage:current');
|
|
85
|
+
const previous = stored && stored.measured === true && Number.isFinite(stored.line) ? stored : undefined;
|
|
86
|
+
// Real coverage comes from coverage:latest (written by coverage-analyzer,
|
|
87
|
+
// test-executor and the quality-assessment listener). Only a record
|
|
88
|
+
// stamped measured:true with finite figures counts (#1008/#1018); a
|
|
89
|
+
// missing, legacy or estimated record means "unmeasured" — never zeros.
|
|
90
|
+
const latest = measuredCoverageSummary(await context.memory.get('coverage:latest'));
|
|
91
|
+
if (!latest)
|
|
92
|
+
return { current: null, previous };
|
|
70
93
|
const current = {
|
|
71
|
-
line: latest
|
|
72
|
-
branch: latest
|
|
73
|
-
function: latest
|
|
74
|
-
statement: latest
|
|
94
|
+
line: latest.line,
|
|
95
|
+
branch: latest.branch,
|
|
96
|
+
function: latest.function,
|
|
97
|
+
statement: latest.statement,
|
|
75
98
|
timestamp: new Date(),
|
|
99
|
+
measured: true,
|
|
76
100
|
};
|
|
77
101
|
return { current, previous };
|
|
78
102
|
}
|
|
@@ -112,7 +136,7 @@ export class CoverageTrackerWorker extends BaseWorker {
|
|
|
112
136
|
context: { current: coverage.line, target: thresholds.line },
|
|
113
137
|
});
|
|
114
138
|
}
|
|
115
|
-
if (coverage.branch < thresholds.branch) {
|
|
139
|
+
if (coverage.branch !== null && coverage.branch < thresholds.branch) {
|
|
116
140
|
findings.push({
|
|
117
141
|
type: 'low-branch-coverage',
|
|
118
142
|
severity: coverage.branch < 50 ? 'high' : 'medium',
|
|
@@ -131,7 +155,7 @@ export class CoverageTrackerWorker extends BaseWorker {
|
|
|
131
155
|
autoFixable: true,
|
|
132
156
|
});
|
|
133
157
|
}
|
|
134
|
-
if (coverage.function < thresholds.function) {
|
|
158
|
+
if (coverage.function !== null && coverage.function < thresholds.function) {
|
|
135
159
|
findings.push({
|
|
136
160
|
type: 'low-function-coverage',
|
|
137
161
|
severity: 'medium',
|
|
@@ -195,7 +219,8 @@ export class CoverageTrackerWorker extends BaseWorker {
|
|
|
195
219
|
if (!trend.previous)
|
|
196
220
|
return;
|
|
197
221
|
const lineChange = trend.current.line - trend.previous.line;
|
|
198
|
-
const branchChange = trend.current.branch
|
|
222
|
+
const branchChange = trend.current.branch !== null && trend.previous.branch !== null
|
|
223
|
+
? trend.current.branch - trend.previous.branch : 0;
|
|
199
224
|
if (lineChange < -2) {
|
|
200
225
|
findings.push({
|
|
201
226
|
type: 'coverage-regression',
|
|
@@ -235,21 +260,32 @@ export class CoverageTrackerWorker extends BaseWorker {
|
|
|
235
260
|
}
|
|
236
261
|
}
|
|
237
262
|
calculateHealthScore(coverage, gaps) {
|
|
238
|
-
// Weight: line 25%, branch 25%, function 20%, statement 20%, gaps 10%
|
|
239
|
-
const lineScore = (coverage.line / 100) * 25;
|
|
240
|
-
const branchScore = (coverage.branch / 100) * 25;
|
|
241
|
-
const functionScore = (coverage.function / 100) * 20;
|
|
242
|
-
const statementScore = (coverage.statement / 100) * 20;
|
|
243
263
|
// Gaps penalty
|
|
244
264
|
const highRiskGaps = gaps.filter((g) => g.riskScore > 0.8).length;
|
|
245
265
|
const gapsScore = Math.max(0, 10 - highRiskGaps * 2);
|
|
246
|
-
|
|
266
|
+
// #1018: with no measurement, only the gap component is known; it is
|
|
267
|
+
// scaled to 0-100 rather than mixed with invented 0% coverage.
|
|
268
|
+
if (!coverage)
|
|
269
|
+
return gapsScore * 10;
|
|
270
|
+
// Weight: line 25%, branch 25%, function 20%, statement 20%, gaps 10%.
|
|
271
|
+
// An uncollected metric is left out and the rest are re-weighted.
|
|
272
|
+
const parts = [
|
|
273
|
+
[coverage.line, 25], [coverage.branch, 25], [coverage.function, 20], [coverage.statement, 20],
|
|
274
|
+
];
|
|
275
|
+
const present = parts.filter((p) => p[0] !== null);
|
|
276
|
+
const weight = present.reduce((a, [, w]) => a + w, 0);
|
|
277
|
+
const coverageScore = present.reduce((a, [v, w]) => a + (v / 100) * w, 0) * (90 / weight);
|
|
278
|
+
return Math.round(coverageScore + gapsScore);
|
|
247
279
|
}
|
|
248
280
|
determineTrend(trend) {
|
|
249
281
|
if (!trend.previous)
|
|
250
282
|
return 'stable';
|
|
251
|
-
const
|
|
252
|
-
|
|
283
|
+
const avg = (c) => {
|
|
284
|
+
const values = [c.line, c.branch, c.function, c.statement].filter((v) => v !== null);
|
|
285
|
+
return values.reduce((a, v) => a + v, 0) / values.length;
|
|
286
|
+
};
|
|
287
|
+
const avgCurrent = avg(trend.current);
|
|
288
|
+
const avgPrevious = avg(trend.previous);
|
|
253
289
|
if (avgCurrent > avgPrevious + 1)
|
|
254
290
|
return 'improving';
|
|
255
291
|
if (avgCurrent < avgPrevious - 1)
|
|
@@ -6,14 +6,31 @@
|
|
|
6
6
|
* - Test result regressions
|
|
7
7
|
* - Performance regressions
|
|
8
8
|
* - Coverage regressions
|
|
9
|
-
*
|
|
9
|
+
*
|
|
10
|
+
* #1028: every figure comes from measured evidence — the stamped
|
|
11
|
+
* `coverage:latest` record and the latest testsPassing quality evidence (with
|
|
12
|
+
* its run's recorded result). Nothing measured → nothing stored or compared.
|
|
10
13
|
*/
|
|
11
14
|
import { BaseWorker } from '../base-worker';
|
|
12
15
|
import { WorkerContext, WorkerResult } from '../interfaces';
|
|
13
16
|
export declare class RegressionMonitorWorker extends BaseWorker {
|
|
14
17
|
constructor();
|
|
15
18
|
protected doExecute(context: WorkerContext): Promise<WorkerResult>;
|
|
19
|
+
/** Why a stored baseline is (not) used: absent, legacy (unstamped), stamped but malformed, or measured. */
|
|
20
|
+
private baselineStatus;
|
|
21
|
+
/**
|
|
22
|
+
* #1028: the current snapshot from measured sources only — the stamped
|
|
23
|
+
* `coverage:latest` (same validator as the coverage tracker and the quality
|
|
24
|
+
* gate) and the latest usable testsPassing evidence (same validation as the
|
|
25
|
+
* gate) with that run's recorded `test-run:<runId>` result. `null` when
|
|
26
|
+
* nothing is measured.
|
|
27
|
+
*/
|
|
16
28
|
private collectCurrentSnapshot;
|
|
29
|
+
private collectMeasuredTests;
|
|
30
|
+
/**
|
|
31
|
+
* Compare two measured snapshots. A metric is compared only when both sides
|
|
32
|
+
* measured it; an uncollected (`null`) metric is never compared (#1028).
|
|
33
|
+
*/
|
|
17
34
|
private detectRegressions;
|
|
18
35
|
private analyzeRegressions;
|
|
19
36
|
private getDomainForType;
|