agentic-qe 3.13.2 → 3.13.4
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/.agents/skills/aqe-plan-work/SKILL.md +31 -0
- package/.agents/skills/aqe-plan-work/agents/openai.yaml +4 -0
- package/.agents/skills/aqe-plan-work/references/planning-framework.md +39 -0
- package/.agents/skills/aqe-research/SKILL.md +31 -0
- package/.agents/skills/aqe-research/agents/openai.yaml +4 -0
- package/.agents/skills/aqe-research/references/evidence-rules.md +21 -0
- package/.agents/skills/aqe-ruflo/SKILL.md +29 -0
- package/.claude/commands/pair/README.md +261 -0
- package/.claude/commands/pair/commands.md +546 -0
- package/.claude/commands/pair/config.md +510 -0
- package/.claude/commands/pair/examples.md +512 -0
- package/.claude/commands/pair/modes.md +348 -0
- package/.claude/commands/pair/session.md +407 -0
- package/.claude/commands/pair/start.md +209 -0
- package/.claude/commands/stream-chain/pipeline.md +121 -0
- package/.claude/commands/stream-chain/run.md +70 -0
- package/.claude/commands/training/README.md +9 -0
- package/.claude/commands/training/model-update.md +25 -0
- package/.claude/commands/training/neural-patterns.md +108 -0
- package/.claude/commands/training/neural-train.md +75 -0
- package/.claude/commands/training/pattern-learn.md +25 -0
- package/.claude/commands/training/specialization.md +63 -0
- package/.claude/commands/truth/start.md +143 -0
- package/.claude/commands/verify/check.md +50 -0
- package/.claude/commands/verify/start.md +128 -0
- package/.claude/helpers/v3/advisor-call.cjs +283 -0
- package/.claude/hooks/aqe-hook.cjs +24 -3
- package/.claude/skills/README.md +54 -64
- package/.claude/skills/dual-mode/README.md +71 -0
- package/.claude/skills/dual-mode/dual-collect.md +103 -0
- package/.claude/skills/dual-mode/dual-coordinate.md +85 -0
- package/.claude/skills/dual-mode/dual-spawn.md +81 -0
- package/.claude/skills/qe-court/SKILL.md +25 -3
- package/.claude/skills/qe-court/config.json +1 -1
- package/.claude/skills/skills-manifest.json +1 -1
- package/.codex/hooks/aqe-codex-hook.cjs +34 -9
- package/.codex/hooks.json +9 -9
- package/CHANGELOG.md +85 -0
- package/assets/skills/qe-court/SKILL.md +25 -3
- package/assets/skills/qe-court/config.json +1 -1
- package/assets/skills/skills-manifest.json +1 -1
- package/dist/cli/bundle.js +5 -5
- package/dist/cli/chunks/adapter-JISQ35YY.js +2 -0
- package/dist/cli/chunks/{agent-booster-wasm-PZYYTKSS.js → agent-booster-wasm-PR3RQWXF.js} +2 -2
- package/dist/cli/chunks/{agent-handler-DNN7GXUN.js → agent-handler-J5EPFBSZ.js} +2 -2
- package/dist/cli/chunks/{agent-memory-branch-LVCBBCQY.js → agent-memory-branch-CCHI6QAA.js} +2 -2
- package/dist/cli/chunks/aqe-learning-engine-TVTNP76S.js +2 -0
- package/dist/cli/chunks/{arena-422HSTPE.js → arena-KMKBGSMY.js} +2 -2
- package/dist/cli/chunks/{arena-OCEOLMCH.js → arena-SI7IPVZ3.js} +4 -4
- package/dist/cli/chunks/{audit-5O45K34M.js → audit-ZDKR3HT6.js} +3 -3
- package/dist/cli/chunks/base-WBCYKM45.js +2 -0
- package/dist/cli/chunks/{hnswlib-node-OVLAHTPU.js → better-sqlite3-FXJFG2WH.js} +2 -2
- package/dist/cli/chunks/{brain-handler-7VHXYN3P.js → brain-handler-MSYMTM5B.js} +3 -3
- package/dist/cli/chunks/{branch-enumerator-PZKOD6S6.js → branch-enumerator-FRAHCBTO.js} +2 -2
- package/dist/cli/chunks/{browser-M74UO4WJ.js → browser-4KHKVNYC.js} +2 -2
- package/dist/cli/chunks/browser-workflow-4JM3IWCS.js +2 -0
- package/dist/cli/chunks/{chunk-62D27BDO.js → chunk-26SNR2EK.js} +3 -3
- package/dist/cli/chunks/{chunk-NTKIDOIW.js → chunk-27FWRWOB.js} +2 -2
- package/dist/cli/chunks/{chunk-REBNPQI7.js → chunk-27REOPQK.js} +2 -2
- package/dist/cli/chunks/{chunk-73HALJY5.js → chunk-2Q73TQUQ.js} +1 -1
- package/dist/cli/chunks/{chunk-LG6UUM55.js → chunk-344CLTV7.js} +2 -2
- package/dist/cli/chunks/{chunk-LXYVWAFN.js → chunk-3RSF7POD.js} +2 -2
- package/dist/cli/chunks/{chunk-BO2RBAPF.js → chunk-44SYMJ4T.js} +2 -2
- package/dist/cli/chunks/{chunk-4SFOQSXU.js → chunk-4FP4PJ45.js} +2 -2
- package/dist/cli/chunks/{chunk-T726SRYP.js → chunk-4HVVVVUF.js} +2 -2
- package/dist/cli/chunks/{chunk-NIE3SGZM.js → chunk-55E62F4T.js} +1 -1
- package/dist/cli/chunks/{chunk-5AAG7JTB.js → chunk-56QR72EB.js} +2 -2
- package/dist/cli/chunks/{chunk-IV77BQ2R.js → chunk-5DESO7E4.js} +2 -2
- package/dist/cli/chunks/{chunk-RWHHOQIC.js → chunk-5IVXM3TE.js} +1 -1
- package/dist/cli/chunks/{chunk-ELVUERQW.js → chunk-5R26MAMK.js} +2 -2
- package/dist/cli/chunks/{chunk-RJYAUJDC.js → chunk-5RVWL2U3.js} +3 -3
- package/dist/cli/chunks/{chunk-7TCVVVFA.js → chunk-6BHRSGR7.js} +3 -3
- package/dist/cli/chunks/{chunk-PNQWEOE2.js → chunk-6CZUQA4G.js} +1 -1
- package/dist/cli/chunks/{chunk-JPPHM3I6.js → chunk-6GNVVQW3.js} +2 -2
- package/dist/cli/chunks/{chunk-HANBJ37Z.js → chunk-6VNUASTQ.js} +2 -2
- package/dist/cli/chunks/{chunk-PRQPUOSH.js → chunk-6XCULO27.js} +2 -2
- package/dist/cli/chunks/{chunk-24S5IUSI.js → chunk-6XVP6BGM.js} +2 -2
- package/dist/cli/chunks/{chunk-LZNJ7HXB.js → chunk-75CFWCQV.js} +2 -2
- package/dist/cli/chunks/{chunk-HANJESCY.js → chunk-7EL5QEMJ.js} +2 -2
- package/dist/cli/chunks/{chunk-COOMXCCP.js → chunk-7YAHECC5.js} +2 -2
- package/dist/cli/chunks/{chunk-Q45FBGVV.js → chunk-A2G26WU4.js} +1 -1
- package/dist/cli/chunks/{chunk-A2OD5Z4B.js → chunk-AROPZPNG.js} +1 -1
- package/dist/cli/chunks/{chunk-4PM5VORA.js → chunk-BQRCNRTJ.js} +2 -2
- package/dist/cli/chunks/{chunk-XZOTFJHU.js → chunk-C3AF5Z55.js} +2 -2
- package/dist/cli/chunks/{chunk-SOOI2HJB.js → chunk-C75V5PTW.js} +1 -1
- package/dist/cli/chunks/{chunk-EU7NUUL6.js → chunk-CQP6BDSF.js} +1 -1
- package/dist/cli/chunks/{chunk-MBTVAIFF.js → chunk-CTNDSP2M.js} +1 -1
- package/dist/cli/chunks/{chunk-AP2BBV2D.js → chunk-CW7LDLJ2.js} +2 -2
- package/dist/cli/chunks/{chunk-ZY5FB3JV.js → chunk-DQ247474.js} +2 -2
- package/dist/cli/chunks/{chunk-BSQ32ZS5.js → chunk-E7FCVH32.js} +2 -2
- package/dist/cli/chunks/{chunk-4FYTWD4Q.js → chunk-EEHEMDNV.js} +2 -2
- package/dist/cli/chunks/{chunk-54BCLRRJ.js → chunk-EPSF2ERW.js} +2 -2
- package/dist/cli/chunks/{chunk-GZ775E5O.js → chunk-ERKYIV25.js} +2 -2
- package/dist/cli/chunks/{chunk-4DKL4H5L.js → chunk-ESMSH7HG.js} +2 -2
- package/dist/cli/chunks/{chunk-NNIKJZA4.js → chunk-EUIUWZF4.js} +3 -3
- package/dist/cli/chunks/{chunk-M4JZOCV3.js → chunk-FBXWU37F.js} +1 -1
- package/dist/cli/chunks/{chunk-K47EWX3M.js → chunk-FJSL7TWU.js} +1 -1
- package/dist/cli/chunks/{chunk-MVJ5UQI3.js → chunk-FZ4MUDHZ.js} +1 -1
- package/dist/cli/chunks/{chunk-AJ7A52GF.js → chunk-GGZB2ZBB.js} +1 -1
- package/dist/cli/chunks/{chunk-FFMUTX26.js → chunk-GIU26D5G.js} +1 -1
- package/dist/cli/chunks/{chunk-RF2DMPX2.js → chunk-GNFKG2LX.js} +2 -2
- package/dist/cli/chunks/{chunk-FXXXLDB3.js → chunk-GOFP47XU.js} +1 -1
- package/dist/cli/chunks/{chunk-TLG56A27.js → chunk-GOHWEQEP.js} +2 -2
- package/dist/cli/chunks/{chunk-DL2HDULJ.js → chunk-GRMKN44A.js} +3 -3
- package/dist/cli/chunks/{chunk-VOYUCJLK.js → chunk-HGBVGEUE.js} +2 -2
- package/dist/cli/chunks/{chunk-RI2V2U2N.js → chunk-HGY62IYZ.js} +2 -2
- package/dist/cli/chunks/{chunk-FMYNKZ2S.js → chunk-HN2DD2DQ.js} +2 -2
- package/dist/cli/chunks/{chunk-QS6TI7NR.js → chunk-II2RP3MY.js} +2 -2
- package/dist/cli/chunks/{chunk-N4O2RWSL.js → chunk-IN5KRJSE.js} +1 -1
- package/dist/cli/chunks/{chunk-ZIT5VF43.js → chunk-ISGKDLZ7.js} +2 -2
- package/dist/cli/chunks/{chunk-VKU5BUUC.js → chunk-ITQCSIYG.js} +1 -1
- package/dist/cli/chunks/{chunk-T55XIENI.js → chunk-IU5SILCS.js} +2 -2
- package/dist/cli/chunks/{chunk-4HFNY3Z2.js → chunk-IUFNB6I6.js} +2 -2
- package/dist/cli/chunks/{chunk-F6UMLI5Y.js → chunk-IVZA5XTW.js} +2 -2
- package/dist/cli/chunks/{chunk-4STE6VLR.js → chunk-JBHGMLN7.js} +10 -10
- package/dist/cli/chunks/{chunk-5GGGZYFA.js → chunk-JDADACZZ.js} +1 -1
- package/dist/cli/chunks/{chunk-WMK2ZNLM.js → chunk-JJ5YIKTJ.js} +3 -3
- package/dist/cli/chunks/{chunk-JDRYENTD.js → chunk-KB4S7MGB.js} +2 -2
- package/dist/cli/chunks/{chunk-IIZ3HBPV.js → chunk-KDICUKYX.js} +2 -2
- package/dist/cli/chunks/{chunk-HD6PZHLC.js → chunk-KE656E6T.js} +3 -3
- package/dist/cli/chunks/{chunk-KKPWS3XJ.js → chunk-KO3UQYGY.js} +10 -10
- package/dist/cli/chunks/{chunk-NBRKZOPM.js → chunk-KQLJILCZ.js} +1 -1
- package/dist/cli/chunks/{chunk-UPGJZA3D.js → chunk-KZAVYHH7.js} +4 -4
- package/dist/cli/chunks/{chunk-YTHUTBBH.js → chunk-L3UTZEVW.js} +2 -2
- package/dist/cli/chunks/{chunk-6XHDH3IJ.js → chunk-LASZCR5G.js} +2 -2
- package/dist/cli/chunks/{chunk-E6PYV3DB.js → chunk-LEIG3KIG.js} +2 -2
- package/dist/cli/chunks/{chunk-HHUKHEW5.js → chunk-LIMFWEUI.js} +2 -2
- package/dist/cli/chunks/{chunk-GHJRLC3C.js → chunk-LJSHQU2P.js} +5 -5
- package/dist/cli/chunks/{chunk-QVD3LU27.js → chunk-LUAYTM77.js} +1 -1
- package/dist/cli/chunks/{chunk-6R7TX5L4.js → chunk-MANWLRAW.js} +1 -1
- package/dist/cli/chunks/{chunk-MNDPSIEI.js → chunk-MP3RCZ75.js} +1 -1
- package/dist/cli/chunks/{chunk-TVWX7NYD.js → chunk-MPVOZKUP.js} +1 -1
- package/dist/cli/chunks/{chunk-WTSVP6OK.js → chunk-MWWTYPFL.js} +2 -2
- package/dist/cli/chunks/{chunk-PILZKQX7.js → chunk-N57M7UPQ.js} +2 -2
- package/dist/cli/chunks/{chunk-KHVW6DQS.js → chunk-N7LIYK7Z.js} +1 -1
- package/dist/cli/chunks/{chunk-GMKJWOXZ.js → chunk-NAAPL2HK.js} +1 -1
- package/dist/cli/chunks/{chunk-H6C2YTPX.js → chunk-NAZFAGJ5.js} +2 -2
- package/dist/cli/chunks/{chunk-JMRUHQEL.js → chunk-NQJLUY2K.js} +2 -2
- package/dist/cli/chunks/{chunk-XXQLFPIK.js → chunk-NQVF4M7L.js} +1 -1
- package/dist/cli/chunks/{chunk-AS2HVJ42.js → chunk-NW4YPUPN.js} +3 -3
- package/dist/cli/chunks/{chunk-LEOSNZR2.js → chunk-O45CEMVF.js} +1 -1
- package/dist/cli/chunks/{chunk-FZEWEG6Q.js → chunk-O74V7MB4.js} +2 -2
- package/dist/cli/chunks/{chunk-EFHMS7TJ.js → chunk-OF7674H5.js} +2 -2
- package/dist/cli/chunks/{chunk-5EFNZEOB.js → chunk-OR2RC7ZH.js} +2 -2
- package/dist/cli/chunks/{chunk-2DG44UZ5.js → chunk-OU2YHXJY.js} +2 -2
- package/dist/cli/chunks/{chunk-DAHNHVND.js → chunk-OU3SYEYJ.js} +1 -1
- package/dist/cli/chunks/{chunk-ASIGTVFQ.js → chunk-PD2ZSCEH.js} +1 -1
- package/dist/cli/chunks/{chunk-QZACODX6.js → chunk-PFQLB4XP.js} +2 -2
- package/dist/cli/chunks/{chunk-J722Z7VO.js → chunk-PI55PHUL.js} +2 -2
- package/dist/cli/chunks/{chunk-CLBBFKXV.js → chunk-PIYDPOW6.js} +2 -2
- package/dist/cli/chunks/{chunk-MUSLUG6Y.js → chunk-PJFQGNRW.js} +1 -1
- package/dist/cli/chunks/{chunk-OYWZYG6Q.js → chunk-PRHLV6FS.js} +1 -1
- package/dist/cli/chunks/chunk-Q4VZXT6X.js +2 -0
- package/dist/cli/chunks/{chunk-5KMBZTDI.js → chunk-QENUKXPP.js} +2 -2
- package/dist/cli/chunks/chunk-QGH54HTH.js +2 -0
- package/dist/cli/chunks/chunk-QXF6EQFP.js +4 -0
- package/dist/cli/chunks/{chunk-E6JJ4ZRQ.js → chunk-RCRKCMN5.js} +1 -1
- package/dist/cli/chunks/{chunk-GKKD22CC.js → chunk-RKNKFLCQ.js} +2 -2
- package/dist/cli/chunks/{chunk-DCQQJLUY.js → chunk-RLZZTFEN.js} +2 -2
- package/dist/cli/chunks/{chunk-N2AGOQCL.js → chunk-RO4BYINM.js} +2 -2
- package/dist/cli/chunks/{chunk-YXTDCP6H.js → chunk-SFRYDGLF.js} +1 -1
- package/dist/cli/chunks/{chunk-DIPOFCBX.js → chunk-SJ26ZR75.js} +2 -2
- package/dist/cli/chunks/{chunk-FECBWGCA.js → chunk-SPTCNM45.js} +2 -2
- package/dist/cli/chunks/{chunk-GMKQJEKX.js → chunk-SQCACQUM.js} +2 -2
- package/dist/cli/chunks/{chunk-BFKXHXWW.js → chunk-TCYSMSBO.js} +2 -2
- package/dist/cli/chunks/{chunk-UIQVVS7K.js → chunk-TFFEB7XD.js} +2 -2
- package/dist/cli/chunks/{chunk-JKVUSXT4.js → chunk-TM6LLT4G.js} +3 -3
- package/dist/cli/chunks/{chunk-YWJ2GPD4.js → chunk-TO7FTPRV.js} +2 -2
- package/dist/cli/chunks/{chunk-ODE7Z667.js → chunk-U52IQFMP.js} +1 -1
- package/dist/cli/chunks/{chunk-G4LZ5SBC.js → chunk-UAEP2ZUQ.js} +2 -2
- package/dist/cli/chunks/{chunk-EABGQVTV.js → chunk-UNMWI4QU.js} +1 -1
- package/dist/cli/chunks/{chunk-P33EORZZ.js → chunk-UOO7P2AK.js} +2 -2
- package/dist/cli/chunks/{chunk-JPO4AC5Q.js → chunk-UQFMQOZB.js} +1 -1
- package/dist/cli/chunks/{chunk-YZUMCXH6.js → chunk-VDPQ7NVG.js} +1 -1
- package/dist/cli/chunks/{chunk-KRRGOJ6K.js → chunk-VLELNETG.js} +2 -2
- package/dist/cli/chunks/{chunk-Q625ISQI.js → chunk-VOAXVNO5.js} +4 -4
- package/dist/cli/chunks/{chunk-LJWIBYTR.js → chunk-VZO4V4R4.js} +2 -2
- package/dist/cli/chunks/{chunk-K3MNTU4O.js → chunk-W37WY3OL.js} +2 -2
- package/dist/cli/chunks/{chunk-FJ2L6P7O.js → chunk-WCUXA3NV.js} +1 -1
- package/dist/cli/chunks/{chunk-B7KZMPF2.js → chunk-WSQE3VZB.js} +1 -1
- package/dist/cli/chunks/{chunk-PT6NTWGT.js → chunk-WUXCL65V.js} +2 -2
- package/dist/cli/chunks/{chunk-XS2S3ECA.js → chunk-X5JMTHXC.js} +3 -3
- package/dist/cli/chunks/{chunk-PJOH5Z5I.js → chunk-X67O2KUE.js} +2 -2
- package/dist/cli/chunks/{chunk-5XYVRTI6.js → chunk-XBSBVPSM.js} +2 -2
- package/dist/cli/chunks/{chunk-RWUK5VMZ.js → chunk-XEI5LLHX.js} +2 -2
- package/dist/cli/chunks/{chunk-LQDQTLWV.js → chunk-XF4F5ZXO.js} +2 -2
- package/dist/cli/chunks/{chunk-TTWWCWAR.js → chunk-XLP44YGX.js} +2 -2
- package/dist/cli/chunks/{chunk-HQCJYUKC.js → chunk-XTHRSBMJ.js} +2 -2
- package/dist/cli/chunks/{chunk-KAHMXURL.js → chunk-Y7VWCP35.js} +1 -1
- package/dist/cli/chunks/{chunk-UVLWT6QM.js → chunk-YQI6SOUO.js} +1 -1
- package/dist/cli/chunks/{chunk-DQXSDWRP.js → chunk-YZGA4ELM.js} +2 -2
- package/dist/cli/chunks/{chunk-CKTFKA7Q.js → chunk-Z6FK7T7J.js} +2 -2
- package/dist/cli/chunks/{chunk-T2XXTEZV.js → chunk-Z7FVGJYC.js} +2 -2
- package/dist/cli/chunks/{chunk-U2FCUBBW.js → chunk-ZAT65V6I.js} +2 -2
- package/dist/cli/chunks/{chunk-2QJPAQE5.js → chunk-ZYCPTARG.js} +2 -2
- package/dist/cli/chunks/{ci-EOFZKCSH.js → ci-DK4FGREO.js} +2 -2
- package/dist/cli/chunks/{ci-output-TAJFQWDP.js → ci-output-HQBBQQES.js} +2 -2
- package/dist/cli/chunks/{circuit-breaker-QA7YJ3IF.js → circuit-breaker-MJCS46DN.js} +2 -2
- package/dist/cli/chunks/{claude-flow-setup-4RNAIALK.js → claude-flow-setup-IIQT52H4.js} +2 -2
- package/dist/cli/chunks/client-FNDZB4TY.js +2 -0
- package/dist/cli/chunks/{cline-installer-K25NUUA4.js → cline-installer-7SPKUNNZ.js} +2 -2
- package/dist/cli/chunks/{code-JM4D3I2W.js → code-V2B4FP3X.js} +2 -2
- package/dist/cli/chunks/{code-index-extractor-6B6TJ2B5.js → code-index-extractor-IRGAI76Y.js} +2 -2
- package/dist/cli/chunks/codex-installer-PDFCYRU6.js +15 -0
- package/dist/cli/chunks/{completions-LADTXGCC.js → completions-TAJ6N7YZ.js} +2 -2
- package/dist/cli/chunks/{complexity-analyzer-IQITOJH5.js → complexity-analyzer-JHQKQKBG.js} +2 -2
- package/dist/cli/chunks/{continuedev-installer-H6NAXFZK.js → continuedev-installer-DESZXCLC.js} +2 -2
- package/dist/cli/chunks/{copilot-installer-W7HCQKOS.js → copilot-installer-OQPXBLWS.js} +2 -2
- package/dist/cli/chunks/core-handlers-S37RHLKP.js +2 -0
- package/dist/cli/chunks/{cost-tracker-MC7KEENQ.js → cost-tracker-KHDFSCAJ.js} +2 -2
- package/dist/cli/chunks/{coverage-NOOKPFYQ.js → coverage-T7EENIDE.js} +3 -3
- package/dist/cli/chunks/cross-domain-router-7ZHDB2V3.js +2 -0
- package/dist/cli/chunks/{cursor-installer-GOZ64GZJ.js → cursor-installer-X6BFU5QU.js} +2 -2
- package/dist/cli/chunks/{daemon-G4ABQMFJ.js → daemon-22NOG5XI.js} +3 -3
- package/dist/cli/chunks/{daemon-V23WTCJJ.js → daemon-UTPP4JCG.js} +4 -4
- package/dist/cli/chunks/{dag-attention-scheduler-YKOO6ZWL.js → dag-attention-scheduler-XI6DG3FW.js} +2 -2
- package/dist/cli/chunks/{detect-SNEMKQGJ.js → detect-7IMQGJ5I.js} +2 -2
- package/dist/cli/chunks/{dist-node-VBNEM6K6.js → dist-node-YMLM4K7J.js} +2 -2
- package/dist/cli/chunks/{domain-handler-2G5XEERC.js → domain-handler-LRTJGTEH.js} +2 -2
- package/dist/cli/chunks/{domain-transfer-HSEUUM7E.js → domain-transfer-HZJ3WUCT.js} +2 -2
- package/dist/cli/chunks/dream-BEVYNIOO.js +2 -0
- package/dist/cli/chunks/{embed-and-insert-pattern-H6MU5HK4.js → embed-and-insert-pattern-QSRN7Z5Q.js} +2 -2
- package/dist/cli/chunks/{eval-XYVDJXJF.js → eval-JVVVQVV6.js} +2 -2
- package/dist/cli/chunks/{experience-capture-middleware-BZQJVXTE.js → experience-capture-middleware-ORZN3ROJ.js} +3 -3
- package/dist/cli/chunks/{fast-paths-76WWBJ4H.js → fast-paths-LUFARZR5.js} +2 -2
- package/dist/cli/chunks/{feature-flags-7E5YZ4P5.js → feature-flags-2XC4ECLW.js} +2 -2
- package/dist/cli/chunks/{feature-flags-SCQ35J6M.js → feature-flags-ZHQESXIP.js} +2 -2
- package/dist/cli/chunks/{file-discovery-LU5MAXWA.js → file-discovery-UHXZQ7GS.js} +2 -2
- package/dist/cli/chunks/{fleet-M3TH65SV.js → fleet-FUQ6G4SB.js} +3 -3
- package/dist/cli/chunks/{gnn-wrapper-OYUJEJD2.js → gnn-wrapper-A4E6OKGD.js} +2 -2
- package/dist/cli/chunks/{heartbeat-handler-II4NSOXK.js → heartbeat-handler-3JKQORXA.js} +4 -4
- package/dist/cli/chunks/heartbeat-scheduler-K4YLB3X4.js +2 -0
- package/dist/cli/chunks/hnsw-adapter-PPR3LTMA.js +2 -0
- package/dist/cli/chunks/hnsw-index-ZSKFT4LZ.js +2 -0
- package/dist/cli/chunks/{hnsw-legacy-bridge-322R2UAB.js → hnsw-legacy-bridge-AHKFKM2J.js} +2 -2
- package/dist/cli/chunks/{better-sqlite3-Y36THYK2.js → hnswlib-node-BP5CZGMD.js} +2 -2
- package/dist/cli/chunks/{hooks-2A27XCUJ.js → hooks-JNW5ZB2E.js} +10 -10
- package/dist/cli/chunks/hybrid-router-4SXBHTOY.js +2 -0
- package/dist/cli/chunks/{hypergraph-engine-ERA527UR.js → hypergraph-engine-3DTAMNSJ.js} +2 -2
- package/dist/cli/chunks/{hypergraph-handler-7XL4OL6W.js → hypergraph-handler-ZV4AZRGF.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-55GE7EQD.js +2 -0
- package/dist/cli/chunks/{init-handler-WN6KQ5WY.js → init-handler-NPOUX47N.js} +10 -6
- package/dist/cli/chunks/init-wizard-EUQLSGI6.js +2 -0
- package/dist/cli/chunks/kernel-BSGSVYPM.js +2 -0
- package/dist/cli/chunks/{kilocode-installer-5UCCFZ7V.js → kilocode-installer-D35TR6LG.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-77DPEP3K.js → kiro-installer-OHHTQENO.js} +2 -2
- package/dist/cli/chunks/knowledge-graph-OITIVT5J.js +2 -0
- package/dist/cli/chunks/{learning-A5GKUD73.js → learning-24PCHLWU.js} +3 -3
- package/dist/cli/chunks/{llm-router-SINJNEGP.js → llm-router-XLTE52H5.js} +4 -4
- package/dist/cli/chunks/llm-router-service-RUPU52AR.js +2 -0
- package/dist/cli/chunks/{load-Q56GLXHJ.js → load-BHMK4FIL.js} +2 -2
- package/dist/cli/chunks/load-test-ZV3C55ZE.js +2 -0
- package/dist/cli/chunks/{mcp-VBDU2WLY.js → mcp-V4MAYT7C.js} +2 -2
- package/dist/cli/chunks/{memory-IGWBRDIT.js → memory-PDA7MQ7E.js} +5 -5
- package/dist/cli/chunks/memory-backend-S3KCPHCF.js +2 -0
- package/dist/cli/chunks/{memory-handlers-IITHQ7KV.js → memory-handlers-X5BLXOSH.js} +2 -2
- package/dist/cli/chunks/{multi-model-executor-2QUEY4CC.js → multi-model-executor-KECHOXKD.js} +2 -2
- package/dist/cli/chunks/{opencode-installer-FZJ5N2B3.js → opencode-installer-LWSCQOOZ.js} +2 -2
- package/dist/cli/chunks/{orchestrator-BGLDS47V.js → orchestrator-ENEBTEUW.js} +6 -6
- package/dist/cli/chunks/pattern-null-store-ILVDKSCX.js +2 -0
- package/dist/cli/chunks/{pattern-usage-recorder-4MFN4WKV.js → pattern-usage-recorder-XIHGXYZZ.js} +2 -2
- package/dist/cli/chunks/{pipeline-GZHAORGP.js → pipeline-GQOJM3LU.js} +2 -2
- package/dist/cli/chunks/platform-L56TGXGZ.js +2 -0
- package/dist/cli/chunks/{plugin-VEYUFCNY.js → plugin-SZ6PZKYX.js} +2 -2
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-OA5DLXJJ.js → prime-radiant-advanced-wasm-SID5FQFW.js} +2 -2
- package/dist/cli/chunks/protocol-executor-GDRHCW3Q.js +2 -0
- package/dist/cli/chunks/{protocol-handler-MVJ5N4X5.js → protocol-handler-5MMNVVPX.js} +2 -2
- package/dist/cli/chunks/{prove-VKF7YCUA.js → prove-DJ6BQ2AK.js} +2 -2
- package/dist/cli/chunks/provider-manager-BS4MVCSH.js +2 -0
- package/dist/cli/chunks/qe-reasoning-bank-P3ARGHDN.js +2 -0
- package/dist/cli/chunks/{quality-NLB5LVGM.js → quality-WKC4JCB3.js} +2 -2
- package/dist/cli/chunks/{quality-gate-OM6A7FQM.js → quality-gate-CVHVSORK.js} +3 -3
- package/dist/cli/chunks/queen-coordinator-GI7GNVDM.js +2 -0
- package/dist/cli/chunks/{real-embeddings-NONEKGAV.js → real-embeddings-DN2MEJVM.js} +2 -2
- package/dist/cli/chunks/{roocode-installer-ORXQQO3F.js → roocode-installer-LTAQJWIH.js} +2 -2
- package/dist/cli/chunks/router-YU6MLJBV.js +2 -0
- package/dist/cli/chunks/routing-feedback-D6B2SK5V.js +2 -0
- package/dist/cli/chunks/{routing-handler-LGMIBVDS.js → routing-handler-PSWR2UCT.js} +2 -2
- package/dist/cli/chunks/{ruvector-commands-4GZMU4BZ.js → ruvector-commands-VTP6Y7PN.js} +2 -2
- package/dist/cli/chunks/{rvf-dual-writer-45HKI22F.js → rvf-dual-writer-EBUMXPRO.js} +2 -2
- package/dist/cli/chunks/{rvf-migration-adapter-RHYIXI3I.js → rvf-migration-adapter-5N7GHMD3.js} +2 -2
- package/dist/cli/chunks/{rvf-migration-coordinator-ANTAYKNN.js → rvf-migration-coordinator-GQKDBNRR.js} +2 -2
- package/dist/cli/chunks/rvf-native-adapter-M7ZVRN5Z.js +2 -0
- package/dist/cli/chunks/{rvf-store-integrity-CPQUTFST.js → rvf-store-integrity-LR3SYGQK.js} +2 -2
- package/dist/cli/chunks/safe-db-3OHTLXG7.js +2 -0
- package/dist/cli/chunks/schedule-H43ADREQ.js +2 -0
- package/dist/cli/chunks/scheduler-CGSXNEPJ.js +2 -0
- package/dist/cli/chunks/{security-BM6LMCBI.js → security-YDWLYXYD.js} +3 -3
- package/dist/cli/chunks/{shared-rvf-adapter-3HGARKJX.js → shared-rvf-adapter-I3HQY7DE.js} +2 -2
- package/dist/cli/chunks/{shared-rvf-dual-writer-UQ4O46ZI.js → shared-rvf-dual-writer-2UADEA5N.js} +2 -2
- package/dist/cli/chunks/sqlite-persistence-V6U5FKVK.js +2 -0
- package/dist/cli/chunks/{status-handler-TGRAM5PC.js → status-handler-QRHI3F4V.js} +2 -2
- package/dist/cli/chunks/{structural-health-RXETMBB3.js → structural-health-FWKE63CM.js} +2 -2
- package/dist/cli/chunks/{sync-JTBZIACA.js → sync-2QRCT5MT.js} +2 -2
- package/dist/cli/chunks/{sync-B4KEYFCP.js → sync-E32MBAOF.js} +2 -2
- package/dist/cli/chunks/{task-handler-D7VXHWPG.js → task-handler-C7BKMOCL.js} +2 -2
- package/dist/cli/chunks/{task-handlers-XF6VVPTR.js → task-handlers-PADWLLDO.js} +3 -3
- package/dist/cli/chunks/{test-BKEIMBSX.js → test-KX4UKHSX.js} +4 -4
- package/dist/cli/chunks/{test-scheduling-A4OHR7KW.js → test-scheduling-5WKIWH4H.js} +3 -3
- package/dist/cli/chunks/{token-bootstrap-LIDDAOAK.js → token-bootstrap-6SKOJM3U.js} +2 -2
- package/dist/cli/chunks/{token-usage-BJUFIU4V.js → token-usage-V6JW55RV.js} +2 -2
- package/dist/cli/chunks/{transformers-YYUQCGMV.js → transformers-3UPFBYSB.js} +2 -2
- package/dist/cli/chunks/{tree-sitter-wasm-parser-DFXYTJ23.js → tree-sitter-wasm-parser-UCY4S2DU.js} +2 -2
- package/dist/cli/chunks/{types-Z75HK5HH.js → types-XNMNQGET.js} +2 -2
- package/dist/cli/chunks/unified-memory-H2J5BHPY.js +2 -0
- package/dist/cli/chunks/unified-memory-hnsw-LFGIWMTS.js +2 -0
- package/dist/cli/chunks/unified-persistence-F6W7EXU5.js +2 -0
- package/dist/cli/chunks/{upgrade-NETNZZH3.js → upgrade-MVTMTOPL.js} +2 -2
- package/dist/cli/chunks/{validate-U2WQ7P6T.js → validate-OJWR2AGZ.js} +2 -2
- package/dist/cli/chunks/{validate-swarm-DKD7H2E3.js → validate-swarm-2RGSF2K2.js} +2 -2
- package/dist/cli/chunks/{vibium-FOQ73JBW.js → vibium-O3ZLAEEZ.js} +2 -2
- package/dist/cli/chunks/visual-security-EHVU32UE.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-PQXWMQO6.js → web-tree-sitter-6VPASTI4.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-CTFSFOBX.js → windsurf-installer-CINHOW3N.js} +2 -2
- package/dist/cli/chunks/{witness-chain-NCRHNFQM.js → witness-chain-2NXW7FT7.js} +2 -2
- package/dist/cli/chunks/witness-chain-BIICGRHC.js +2 -0
- package/dist/cli/chunks/{witness-key-manager-WGCSSB23.js → witness-key-manager-ODW4DJWT.js} +2 -2
- package/dist/cli/chunks/{workflow-FE5QGP2U.js → workflow-BFGS2GAU.js} +4 -4
- package/dist/cli/chunks/workflow-orchestrator-PVTYPYY4.js +2 -0
- package/dist/cli/chunks/{wrappers-AHL5K2LO.js → wrappers-VEVVSVMS.js} +2 -2
- package/dist/cli/commands/platform.d.ts +17 -0
- package/dist/cli/commands/platform.js +91 -41
- package/dist/cli/handlers/init-handler.d.ts +1 -0
- package/dist/cli/handlers/init-handler.js +9 -3
- package/dist/init/codex-installer.d.ts +22 -3
- package/dist/init/codex-installer.js +132 -54
- package/dist/init/codex-skill-manifest.d.ts +43 -0
- package/dist/init/codex-skill-manifest.js +21 -0
- package/dist/init/orchestrator.js +1 -0
- package/dist/init/phases/09-assets.js +10 -1
- package/dist/init/phases/phase-interface.d.ts +2 -0
- package/dist/mcp/bundle.js +204 -202
- package/dist/shared/safe-db.js +60 -1
- package/dist/skills/qe-court/referee.d.ts +44 -0
- package/dist/skills/qe-court/referee.js +31 -2
- package/package.json +5 -1
- package/dist/cli/chunks/adapter-I4SNWMCM.js +0 -2
- package/dist/cli/chunks/aqe-learning-engine-WI47XKXI.js +0 -2
- package/dist/cli/chunks/base-VJ6VDLD7.js +0 -2
- package/dist/cli/chunks/browser-workflow-WRYHQQDU.js +0 -2
- package/dist/cli/chunks/chunk-6DMB6WK5.js +0 -2
- package/dist/cli/chunks/chunk-6UGYFYS4.js +0 -2
- package/dist/cli/chunks/client-N2WAM5IK.js +0 -2
- package/dist/cli/chunks/codex-installer-GRUENCIO.js +0 -10
- package/dist/cli/chunks/core-handlers-VSX474R3.js +0 -2
- package/dist/cli/chunks/cross-domain-router-VNE7QKX4.js +0 -2
- package/dist/cli/chunks/dream-A5LVJU7T.js +0 -2
- package/dist/cli/chunks/heartbeat-scheduler-CFZ6DNQY.js +0 -2
- package/dist/cli/chunks/hnsw-adapter-I4Y2T4HO.js +0 -2
- package/dist/cli/chunks/hnsw-index-SBR5VYGN.js +0 -2
- package/dist/cli/chunks/hybrid-router-E6YM74NQ.js +0 -2
- package/dist/cli/chunks/impact-analyzer-GHYFSSMJ.js +0 -2
- package/dist/cli/chunks/init-wizard-KAN5KOGD.js +0 -2
- package/dist/cli/chunks/kernel-LET4HEEF.js +0 -2
- package/dist/cli/chunks/knowledge-graph-P3UJWNQS.js +0 -2
- package/dist/cli/chunks/llm-router-service-BOBENURJ.js +0 -2
- package/dist/cli/chunks/load-test-4VDCVB7S.js +0 -2
- package/dist/cli/chunks/memory-backend-RRFAYQYS.js +0 -2
- package/dist/cli/chunks/pattern-null-store-V7DEZEF2.js +0 -2
- package/dist/cli/chunks/platform-TZEX4YZQ.js +0 -2
- package/dist/cli/chunks/protocol-executor-I3C2ZETP.js +0 -2
- package/dist/cli/chunks/provider-manager-HB4YVQDI.js +0 -2
- package/dist/cli/chunks/qe-reasoning-bank-RDLBAXJY.js +0 -2
- package/dist/cli/chunks/queen-coordinator-QRWRNUDR.js +0 -2
- package/dist/cli/chunks/router-WDF7KV4M.js +0 -2
- package/dist/cli/chunks/routing-feedback-DHYB4ZNL.js +0 -2
- package/dist/cli/chunks/rvf-native-adapter-7W53TYTH.js +0 -2
- package/dist/cli/chunks/safe-db-4HBFO7OQ.js +0 -2
- package/dist/cli/chunks/schedule-M2OSBJZM.js +0 -2
- package/dist/cli/chunks/scheduler-JWV5MSGE.js +0 -2
- package/dist/cli/chunks/sqlite-persistence-QA4JRQZ2.js +0 -2
- package/dist/cli/chunks/unified-memory-BEUZQTTC.js +0 -2
- package/dist/cli/chunks/unified-memory-hnsw-FHLSAEX4.js +0 -2
- package/dist/cli/chunks/unified-persistence-TVEQGCSB.js +0 -2
- package/dist/cli/chunks/visual-security-AYV46OUO.js +0 -2
- package/dist/cli/chunks/witness-chain-RU356H6R.js +0 -2
- package/dist/cli/chunks/workflow-orchestrator-N2DQTC3X.js +0 -2
- package/dist/cli/commands/init.d.ts +0 -19
- package/dist/cli/commands/init.js +0 -318
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: dual-collect
|
|
3
|
+
description: Collect results from headless Codex workers
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Dual Collect Skill
|
|
7
|
+
|
|
8
|
+
Collect and aggregate results from headless Codex workers stored in shared memory.
|
|
9
|
+
|
|
10
|
+
## Usage
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
/dual-collect [--namespace <namespace>] [--format <format>]
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Parameters
|
|
17
|
+
|
|
18
|
+
| Parameter | Default | Description |
|
|
19
|
+
|-----------|---------|-------------|
|
|
20
|
+
| `--namespace` | results | Memory namespace to search |
|
|
21
|
+
| `--format` | summary | Output format: summary, detailed, json |
|
|
22
|
+
| `--filter` | none | Filter by key pattern |
|
|
23
|
+
|
|
24
|
+
## Examples
|
|
25
|
+
|
|
26
|
+
### Collect All Results
|
|
27
|
+
```
|
|
28
|
+
/dual-collect
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### Collect from Specific Namespace
|
|
32
|
+
```
|
|
33
|
+
/dual-collect --namespace patterns
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### Detailed Output
|
|
37
|
+
```
|
|
38
|
+
/dual-collect --format detailed
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### Filter by Worker
|
|
42
|
+
```
|
|
43
|
+
/dual-collect --filter "worker-auth-*"
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## How It Works
|
|
47
|
+
|
|
48
|
+
1. Queries the memory system for entries in specified namespace
|
|
49
|
+
2. Aggregates results from all workers
|
|
50
|
+
3. Formats output according to specified format
|
|
51
|
+
4. Displays summary of completed/failed workers
|
|
52
|
+
|
|
53
|
+
## Generated Commands
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
# List all results
|
|
57
|
+
npx claude-flow@v3alpha memory list --namespace {{namespace}}
|
|
58
|
+
|
|
59
|
+
# Search for specific patterns
|
|
60
|
+
npx claude-flow@v3alpha memory search -q "{{filter}}" -n {{namespace}}
|
|
61
|
+
|
|
62
|
+
# Get detailed entries
|
|
63
|
+
{{#each results}}
|
|
64
|
+
npx claude-flow@v3alpha memory get -k "{{this.key}}" -n {{namespace}}
|
|
65
|
+
{{/each}}
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Output Formats
|
|
69
|
+
|
|
70
|
+
### Summary (default)
|
|
71
|
+
```
|
|
72
|
+
Workers Completed: 4/4
|
|
73
|
+
├─ worker-auth-core: ✅ Complete (auth.service.ts)
|
|
74
|
+
├─ worker-auth-api: ✅ Complete (auth.controller.ts)
|
|
75
|
+
├─ worker-tests: ✅ Complete (15 tests passing)
|
|
76
|
+
└─ worker-docs: ✅ Complete (API.md updated)
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Detailed
|
|
80
|
+
```
|
|
81
|
+
┌─────────────────────────────────────────────────┐
|
|
82
|
+
│ Worker: worker-auth-core │
|
|
83
|
+
│ Status: Complete │
|
|
84
|
+
│ Duration: 45s │
|
|
85
|
+
│ Files: auth.service.ts, auth.types.ts │
|
|
86
|
+
│ Result: Implemented JWT authentication │
|
|
87
|
+
└─────────────────────────────────────────────────┘
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### JSON
|
|
91
|
+
```json
|
|
92
|
+
{
|
|
93
|
+
"workers": [
|
|
94
|
+
{"id": "worker-auth-core", "status": "complete", "result": "..."}
|
|
95
|
+
],
|
|
96
|
+
"summary": {"total": 4, "completed": 4, "failed": 0}
|
|
97
|
+
}
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## Related Skills
|
|
101
|
+
|
|
102
|
+
- `/dual-spawn` - Spawn headless workers
|
|
103
|
+
- `/dual-coordinate` - Full hybrid workflow
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: dual-coordinate
|
|
3
|
+
description: Coordinate hybrid Claude Code + Codex workflows
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Dual Coordinate Skill
|
|
7
|
+
|
|
8
|
+
Coordinate hybrid workflows that use Claude Code for interactive reasoning and Codex for parallel background execution.
|
|
9
|
+
|
|
10
|
+
## Usage
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
/dual-coordinate --workflow <workflow-name> --task "<task-description>"
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Parameters
|
|
17
|
+
|
|
18
|
+
| Parameter | Default | Description |
|
|
19
|
+
|-----------|---------|-------------|
|
|
20
|
+
| `--workflow` | hybrid_development | Workflow template to use |
|
|
21
|
+
| `--task` | required | Task description |
|
|
22
|
+
| `--interactive-first` | true | Start with interactive phase |
|
|
23
|
+
|
|
24
|
+
## Available Workflows
|
|
25
|
+
|
|
26
|
+
### hybrid_development
|
|
27
|
+
Design interactively, implement in parallel, review interactively.
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
/dual-coordinate --workflow hybrid_development --task "Build user authentication"
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### parallel_feature
|
|
34
|
+
Spawn multiple Codex workers for parallel implementation.
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
/dual-coordinate --workflow parallel_feature --task "Implement REST API"
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### design_and_execute
|
|
41
|
+
Interactive design phase, then batch execution.
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
/dual-coordinate --workflow design_and_execute --task "Refactor auth module"
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## How It Works
|
|
48
|
+
|
|
49
|
+
1. **Routing Decision**: Analyzes task to determine optimal platform split
|
|
50
|
+
2. **Interactive Phase**: Complex reasoning in Claude Code
|
|
51
|
+
3. **Parallel Phase**: Spawns Codex workers for execution
|
|
52
|
+
4. **Review Phase**: Returns to Claude Code for quality review
|
|
53
|
+
5. **Result Collection**: Aggregates worker results from memory
|
|
54
|
+
|
|
55
|
+
## Generated Commands
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
# Phase 1: Interactive (Claude Code)
|
|
59
|
+
# [Current session handles design/planning]
|
|
60
|
+
|
|
61
|
+
# Phase 2: Parallel (Codex)
|
|
62
|
+
{{#each workers}}
|
|
63
|
+
claude -p "{{this.task}}" --session-id {{this.id}} &
|
|
64
|
+
{{/each}}
|
|
65
|
+
wait
|
|
66
|
+
|
|
67
|
+
# Phase 3: Review (Claude Code)
|
|
68
|
+
npx claude-flow@v3alpha memory list --namespace results
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## Example: Full Hybrid Workflow
|
|
72
|
+
|
|
73
|
+
```
|
|
74
|
+
/dual-coordinate --workflow hybrid_development --task "Build user profile API"
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
This will:
|
|
78
|
+
1. **Design Phase** (Interactive): Discuss requirements, design endpoints, plan implementation
|
|
79
|
+
2. **Implement Phase** (Headless): Spawn coders, testers, docs writers in parallel
|
|
80
|
+
3. **Review Phase** (Interactive): Review implementation, discuss improvements
|
|
81
|
+
|
|
82
|
+
## Related Skills
|
|
83
|
+
|
|
84
|
+
- `/dual-spawn` - Spawn headless workers only
|
|
85
|
+
- `/dual-collect` - Collect results from workers
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: dual-spawn
|
|
3
|
+
description: Spawn headless Codex workers from Claude Code for parallel execution
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Dual Spawn Skill
|
|
7
|
+
|
|
8
|
+
Spawn multiple headless Codex workers to run tasks in parallel while you continue working interactively.
|
|
9
|
+
|
|
10
|
+
## Usage
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
/dual-spawn "<task>" --workers <count> [--type <worker-type>]
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Parameters
|
|
17
|
+
|
|
18
|
+
| Parameter | Default | Description |
|
|
19
|
+
|-----------|---------|-------------|
|
|
20
|
+
| `task` | required | Task description for workers |
|
|
21
|
+
| `--workers` | 3 | Number of parallel workers |
|
|
22
|
+
| `--type` | coder | Worker type: coder, tester, docs, reviewer |
|
|
23
|
+
| `--wait` | false | Wait for completion |
|
|
24
|
+
|
|
25
|
+
## Examples
|
|
26
|
+
|
|
27
|
+
### Spawn Implementation Workers
|
|
28
|
+
```
|
|
29
|
+
/dual-spawn "Implement user authentication" --workers 2 --type coder
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### Spawn Test Writers
|
|
33
|
+
```
|
|
34
|
+
/dual-spawn "Write comprehensive tests for auth module" --workers 2 --type tester
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### Spawn Documentation Workers
|
|
38
|
+
```
|
|
39
|
+
/dual-spawn "Document all API endpoints" --workers 1 --type docs
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## How It Works
|
|
43
|
+
|
|
44
|
+
1. Initializes shared swarm coordination
|
|
45
|
+
2. Spawns headless Codex workers with `claude -p`
|
|
46
|
+
3. Each worker searches memory for relevant patterns
|
|
47
|
+
4. Workers execute in parallel
|
|
48
|
+
5. Results stored in shared memory
|
|
49
|
+
|
|
50
|
+
## Generated Commands
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
# Initialize coordination
|
|
54
|
+
npx claude-flow swarm init --topology hierarchical --max-agents {{workers}}
|
|
55
|
+
|
|
56
|
+
# Spawn workers
|
|
57
|
+
{{#each workers}}
|
|
58
|
+
claude -p "
|
|
59
|
+
You are worker-{{@index}}.
|
|
60
|
+
TASK: {{task}}
|
|
61
|
+
|
|
62
|
+
1. Search: memory_search(query='{{task_keywords}}')
|
|
63
|
+
2. Execute your assigned work
|
|
64
|
+
3. Store: memory_store(key='result-{{@index}}', namespace='results', upsert=true)
|
|
65
|
+
" --session-id task-{{@index}} &
|
|
66
|
+
{{/each}}
|
|
67
|
+
|
|
68
|
+
echo "Spawned {{workers}} headless workers"
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## After Spawning
|
|
72
|
+
|
|
73
|
+
Use `/dual-collect` to gather results:
|
|
74
|
+
```
|
|
75
|
+
/dual-collect --namespace results
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Or check manually:
|
|
79
|
+
```bash
|
|
80
|
+
npx claude-flow memory list --namespace results
|
|
81
|
+
```
|
|
@@ -62,7 +62,7 @@ budget caps and cost receipts apply automatically.
|
|
|
62
62
|
|
|
63
63
|
| Step | Default provider / tier | Why |
|
|
64
64
|
|------|------------------------|-----|
|
|
65
|
-
| **Defense** | `
|
|
65
|
+
| **Defense** | `claude-code` (default) or `cognitum-low` (may equal writer) | Cheap; states the case, never grades. Must differ in vendor from the jury |
|
|
66
66
|
| Prosecutor — devils-advocate | `cognitum-mid` | Gap/assumption hunting |
|
|
67
67
|
| Prosecutor — brutal-honesty | `claude-code` (Opus/Sonnet) | Rigor lens, different family from jury |
|
|
68
68
|
| Prosecutor — sherlock | `cognitum-high` | Deductive/root-cause needs a strong model |
|
|
@@ -83,8 +83,15 @@ when you explicitly want to name several different models.
|
|
|
83
83
|
**Enforced invariants** (defaults; do not weaken without reason):
|
|
84
84
|
1. **≥2 distinct vendors** across the panel — Claude / Cognitum / GPT-via-Codex — not just tiers.
|
|
85
85
|
2. **Jury provider ∉ {writer, defense}** — no model grades its own or its writer's output.
|
|
86
|
+
Vendor is compared **coarsely**: `cognitum-low` and `cognitum-high` are the same
|
|
87
|
+
vendor, so pairing them across defense and jury is a violation, not a diverse panel.
|
|
86
88
|
3. All calls routed through `ProviderManager` → ADR-123 budget cap + receipts.
|
|
87
89
|
|
|
90
|
+
Invariants 1–2 are machine-checked by `validateCourtConfig()` in `referee.ts`, which
|
|
91
|
+
the court MUST call before seating a panel (see *How to run it*). The `options` block
|
|
92
|
+
below binds directly to that check — `minDistinctVendors` and `writerIsNeverJuror` are
|
|
93
|
+
read, not decorative.
|
|
94
|
+
|
|
88
95
|
## The protocol
|
|
89
96
|
|
|
90
97
|
```
|
|
@@ -150,7 +157,20 @@ composing existing agents/skills — there is no monolithic binary yet (a thin
|
|
|
150
157
|
`aqe court` CLI wrapper is planned as ADR-124 Phase 1; the hosted `/v1/qe/verdict`
|
|
151
158
|
is Phase 2). To run a court now:
|
|
152
159
|
|
|
153
|
-
1. Read `config.json` for the panel + `routing` + `overturnDepth
|
|
160
|
+
1. Read `config.json` for the panel + `routing` + `overturnDepth`, then **validate
|
|
161
|
+
the panel before seating it** — this step is not optional:
|
|
162
|
+
|
|
163
|
+
```ts
|
|
164
|
+
import { validateCourtConfig } from 'src/skills/qe-court/referee';
|
|
165
|
+
const violations = validateCourtConfig(config); // [] == valid
|
|
166
|
+
if (violations.length) throw new Error(`Cannot convene: ${violations.join(', ')}`);
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
A non-empty result means the panel cannot render a trustworthy verdict
|
|
170
|
+
(colluding jury, too few vendors, no jury at all). **ABORT the court and tell
|
|
171
|
+
the user which invariant failed** — do not proceed with a degraded panel and
|
|
172
|
+
do not silently re-route around it. A court that convenes an invalid panel
|
|
173
|
+
produces exactly the false SHIP it exists to catch.
|
|
154
174
|
2. Spawn the prosecutors **in one message, in parallel** (`Task`/`Agent`,
|
|
155
175
|
`run_in_background: true`), each with its routed provider; run
|
|
156
176
|
`codex exec review` for the cross-vendor lens via Bash.
|
|
@@ -172,7 +192,9 @@ Durable, attestable evidence — the "jury waiting for everything you ship."
|
|
|
172
192
|
(`src/skills/qe-court/referee.ts`) and covered by an oracle suite
|
|
173
193
|
(`tests/unit/skills/qe-court/referee.test.ts`) that the acceptance eval
|
|
174
194
|
(`evals/qe-court.yaml`, command-eval mode) runs through the `aqe eval` CLI —
|
|
175
|
-
|
|
195
|
+
15/15 green as of 2026-07-29. That suite now validates the **shipped `config.json`
|
|
196
|
+
itself**, so a routing edit that seats a colluding panel fails in CI rather than in
|
|
197
|
+
a user's court (issue #576). The keystone oracle: a seeded mutant a shallow panel
|
|
176
198
|
rated SHIP is overturned to BLOCK when the overturn round is active, and MUST
|
|
177
199
|
regress to SHIP at `overturnDepth: 0` — proving the mechanic carries its weight.
|
|
178
200
|
Run it yourself: `aqe eval run --skill qe-court --model cognitum-low`.
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"emitScore": false,
|
|
7
7
|
"routing": {
|
|
8
8
|
"_note": "provider ids: claude-code | cognitum-{low,mid,high} | openrouter | codex | claude | openai | gemini | ollama. Cognitum resolves multiple models behind its tiers; use openrouter when you want to name several distinct models for breadth.",
|
|
9
|
-
"defense": { "provider": "
|
|
9
|
+
"defense": { "provider": "claude-code" },
|
|
10
10
|
"prosecutor.devils-advocate": { "provider": "cognitum-mid" },
|
|
11
11
|
"prosecutor.brutal-honesty": { "provider": "claude-code", "model": "sonnet" },
|
|
12
12
|
"prosecutor.sherlock": { "provider": "cognitum-high" },
|
|
@@ -26,14 +26,39 @@ const codexShim = path.join(root, '.codex', 'hooks', 'aqe-runtime.cjs');
|
|
|
26
26
|
const shim = require('node:fs').existsSync(codexShim)
|
|
27
27
|
? codexShim
|
|
28
28
|
: path.join(root, '.claude', 'hooks', 'aqe-hook.cjs');
|
|
29
|
-
const
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
29
|
+
const adapterTimeout = Number(process.env.AQE_CODEX_HOOK_TIMEOUT_MS) || 25000;
|
|
30
|
+
const runtimeTimeout = Number(process.env.AQE_HOOK_TIMEOUT_MS)
|
|
31
|
+
|| Math.max(1000, adapterTimeout - 3000);
|
|
32
|
+
|
|
33
|
+
function runAqe(command, extraArgs = []) {
|
|
34
|
+
return spawnSync(process.execPath, [shim, command, ...extraArgs, '--json'], {
|
|
35
|
+
cwd: root,
|
|
36
|
+
env: {
|
|
37
|
+
...process.env,
|
|
38
|
+
CLAUDE_PROJECT_DIR: root,
|
|
39
|
+
AQE_HOOK_TIMEOUT_MS: String(runtimeTimeout),
|
|
40
|
+
},
|
|
41
|
+
input: JSON.stringify(input),
|
|
42
|
+
encoding: 'utf8',
|
|
43
|
+
timeout: adapterTimeout,
|
|
44
|
+
maxBuffer: 4 * 1024 * 1024,
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// Stop closes the current route-learning sentinel before session cleanup.
|
|
49
|
+
// Both AQE commands emit internal telemetry, so return no Codex JSON.
|
|
50
|
+
if (subcommand === 'stop') {
|
|
51
|
+
runAqe('post-route', ['--success', 'true']);
|
|
52
|
+
runAqe('session-end', ['--save-state']);
|
|
53
|
+
process.exit(0);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
const result = runAqe(subcommand);
|
|
57
|
+
|
|
58
|
+
// These commands produce AQE/Claude hook response shapes. Codex treats an
|
|
59
|
+
// empty successful response as continue, which preserves their side effects
|
|
60
|
+
// without forwarding unsupported permissionDecision or telemetry fields.
|
|
61
|
+
if (subcommand !== 'route') process.exit(0);
|
|
37
62
|
|
|
38
63
|
if (!result.stdout) process.exit(0);
|
|
39
64
|
|
|
@@ -46,7 +71,7 @@ try {
|
|
|
46
71
|
|
|
47
72
|
// AQE route results are useful context but are not themselves a Codex hook
|
|
48
73
|
// response. Wrap them in the supported additional-context envelope.
|
|
49
|
-
if (
|
|
74
|
+
if (!output.hookSpecificOutput) {
|
|
50
75
|
const agent = output.recommendedAgent || 'unspecified';
|
|
51
76
|
const confidence = Number.isFinite(output.confidence)
|
|
52
77
|
? ` (${Math.round(output.confidence * 100)}% confidence)`
|
package/.codex/hooks.json
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
{
|
|
9
9
|
"type": "command",
|
|
10
10
|
"command": "node \"$(git rev-parse --show-toplevel)/.codex/hooks/aqe-codex-hook.cjs\" session-start",
|
|
11
|
-
"timeout":
|
|
11
|
+
"timeout": 30,
|
|
12
12
|
"statusMessage": "Loading AQE learning context"
|
|
13
13
|
},
|
|
14
14
|
{
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
{
|
|
27
27
|
"type": "command",
|
|
28
28
|
"command": "node \"$(git rev-parse --show-toplevel)/.codex/hooks/aqe-codex-hook.cjs\" route",
|
|
29
|
-
"timeout":
|
|
29
|
+
"timeout": 30,
|
|
30
30
|
"statusMessage": "Routing through the AQE fleet"
|
|
31
31
|
},
|
|
32
32
|
{
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
{
|
|
46
46
|
"type": "command",
|
|
47
47
|
"command": "node \"$(git rev-parse --show-toplevel)/.codex/hooks/aqe-codex-hook.cjs\" pre-command",
|
|
48
|
-
"timeout":
|
|
48
|
+
"timeout": 30,
|
|
49
49
|
"statusMessage": "Applying AQE command guardrails"
|
|
50
50
|
},
|
|
51
51
|
{
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
{
|
|
63
63
|
"type": "command",
|
|
64
64
|
"command": "node \"$(git rev-parse --show-toplevel)/.codex/hooks/aqe-codex-hook.cjs\" pre-edit",
|
|
65
|
-
"timeout":
|
|
65
|
+
"timeout": 30,
|
|
66
66
|
"statusMessage": "Applying AQE edit guardrails"
|
|
67
67
|
},
|
|
68
68
|
{
|
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
{
|
|
82
82
|
"type": "command",
|
|
83
83
|
"command": "node \"$(git rev-parse --show-toplevel)/.codex/hooks/aqe-codex-hook.cjs\" post-command",
|
|
84
|
-
"timeout":
|
|
84
|
+
"timeout": 30,
|
|
85
85
|
"statusMessage": "Recording AQE command outcome"
|
|
86
86
|
},
|
|
87
87
|
{
|
|
@@ -98,7 +98,7 @@
|
|
|
98
98
|
{
|
|
99
99
|
"type": "command",
|
|
100
100
|
"command": "node \"$(git rev-parse --show-toplevel)/.codex/hooks/aqe-codex-hook.cjs\" post-edit",
|
|
101
|
-
"timeout":
|
|
101
|
+
"timeout": 30,
|
|
102
102
|
"statusMessage": "Recording AQE edit outcome"
|
|
103
103
|
},
|
|
104
104
|
{
|
|
@@ -152,9 +152,9 @@
|
|
|
152
152
|
"hooks": [
|
|
153
153
|
{
|
|
154
154
|
"type": "command",
|
|
155
|
-
"command": "node \"$(git rev-parse --show-toplevel)/.codex/hooks/aqe-codex-hook.cjs\"
|
|
156
|
-
"timeout":
|
|
157
|
-
"statusMessage": "
|
|
155
|
+
"command": "node \"$(git rev-parse --show-toplevel)/.codex/hooks/aqe-codex-hook.cjs\" stop",
|
|
156
|
+
"timeout": 60,
|
|
157
|
+
"statusMessage": "Closing AQE learning outcome and saving session state"
|
|
158
158
|
},
|
|
159
159
|
{
|
|
160
160
|
"type": "command",
|
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,91 @@ All notable changes to the Agentic QE project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [3.13.4] - 2026-08-02
|
|
9
|
+
|
|
10
|
+
Codex users now receive a complete, upgradeable Agentic QE workflow instead of
|
|
11
|
+
an MCP entry and partial instructions that could drift from the installed
|
|
12
|
+
hooks and skills.
|
|
13
|
+
|
|
14
|
+
### Added
|
|
15
|
+
|
|
16
|
+
- **A curated Codex-native QE workflow fleet** ([#587]). New research,
|
|
17
|
+
dependency-aware planning, and lightweight Ruflo orchestration skills join
|
|
18
|
+
the existing quality-planning, testing, and review workflows. Ruflo remains
|
|
19
|
+
optional development-time guidance, enabled explicitly with `--with-ruflo`,
|
|
20
|
+
and is not a runtime dependency.
|
|
21
|
+
- **End-to-end Codex installation verification.** `aqe platform verify codex`
|
|
22
|
+
now checks MCP configuration, AQE instructions, lifecycle hooks, adapters,
|
|
23
|
+
runtimes, and every required skill, with a failing exit code when the install
|
|
24
|
+
is incomplete.
|
|
25
|
+
- **A package-boundary release gate.** `npm run verify:codex-package` verifies
|
|
26
|
+
the actual npm tarball contains all curated skills and hooks, excludes the
|
|
27
|
+
vendored Ruflo tree and dependencies, and confirms every MCP tool named in
|
|
28
|
+
generated Codex guidance is registered.
|
|
29
|
+
|
|
30
|
+
### Fixed
|
|
31
|
+
|
|
32
|
+
- **`--no-mcp` now applies to Codex installs.** Previously the Claude phase
|
|
33
|
+
honored the flag but the Codex asset phase still wrote `.codex/config.toml`.
|
|
34
|
+
- **Codex upgrades now refresh AQE-owned configuration safely.** Existing MCP
|
|
35
|
+
blocks can switch memory backends, generated `AGENTS.md` guidance updates
|
|
36
|
+
inside explicit ownership markers, and user TOML, instructions, and hook
|
|
37
|
+
groups remain intact.
|
|
38
|
+
- **Partial Codex installs are diagnosable.** MCP, rules, hooks, and skills now
|
|
39
|
+
report independent outcomes, so a malformed hooks file no longer hides the
|
|
40
|
+
components that succeeded or prevents later skill installation.
|
|
41
|
+
|
|
42
|
+
### Changed
|
|
43
|
+
|
|
44
|
+
- Removed the unused duplicate init command implementation. The active CLI
|
|
45
|
+
continues through the modular init handler, eliminating a second stale help
|
|
46
|
+
and option surface.
|
|
47
|
+
|
|
48
|
+
[#587]: https://github.com/proffesor-for-testing/agentic-qe/issues/587
|
|
49
|
+
|
|
50
|
+
## [3.13.3] - 2026-07-29
|
|
51
|
+
|
|
52
|
+
Two independent quality-of-evidence fixes: learning capture could stop silently
|
|
53
|
+
for days on a filesystem where WAL is disabled, and QE-Court shipped a default
|
|
54
|
+
review panel that violated its own anti-collusion rule.
|
|
55
|
+
|
|
56
|
+
### Fixed
|
|
57
|
+
|
|
58
|
+
- **Learning capture no longer stops silently when `AQE_DISABLE_WAL` is set.**
|
|
59
|
+
With that flag on, AQE tried to switch the database journal mode on *every*
|
|
60
|
+
writable connection. That switch needs exclusive access, so any other process
|
|
61
|
+
holding the database open — a stray MCP server, for example — made the attempt
|
|
62
|
+
fail and take the whole persistence layer down with it. Hooks kept reporting
|
|
63
|
+
success while nothing was being recorded, which hid the outage for days.
|
|
64
|
+
|
|
65
|
+
AQE now only changes the journal mode when it is actually wrong (so normal
|
|
66
|
+
operation never needs the exclusive lock), refuses to write in a mode you have
|
|
67
|
+
declared unsafe rather than risking corruption, and — when something really is
|
|
68
|
+
holding the database — tells you the exact command that finds it instead of
|
|
69
|
+
guessing which process to blame.
|
|
70
|
+
|
|
71
|
+
- **QE-Court's shipped default panel violated `writerIsNeverJuror`** ([#576]).
|
|
72
|
+
The bundled `config.json` seated the defense and the jury on two tiers of the
|
|
73
|
+
same vendor, which is exactly what the court's core anti-collusion rule
|
|
74
|
+
forbids — so a brand-new project got an invalid panel with no user action.
|
|
75
|
+
Worse, the rule could never have caught it: nothing turned the configured
|
|
76
|
+
routing into a panel, so validation never ran outside its own unit test, and
|
|
77
|
+
the config's `options` block was not wired to anything.
|
|
78
|
+
|
|
79
|
+
The default panel is now genuinely cross-vendor (and keeps the deeper-review
|
|
80
|
+
round on a different vendor from the jury, so escalation stays independent),
|
|
81
|
+
validation is a required step before a court convenes, the `options` block
|
|
82
|
+
actually takes effect, and the shipped config files are checked in CI so this
|
|
83
|
+
cannot regress unnoticed. Reported by @pacphi.
|
|
84
|
+
|
|
85
|
+
### Changed
|
|
86
|
+
|
|
87
|
+
- The bundled statusline refreshes every 60 seconds instead of every 5. It
|
|
88
|
+
reopened the learning database on every tick, adding constant pressure to the
|
|
89
|
+
same lock the fix above depends on.
|
|
90
|
+
|
|
91
|
+
[#576]: https://github.com/proffesor-for-testing/agentic-qe/issues/576
|
|
92
|
+
|
|
8
93
|
## [3.13.2] - 2026-07-24
|
|
9
94
|
|
|
10
95
|
Stops short-lived learning hooks from repeatedly producing
|
|
@@ -62,7 +62,7 @@ budget caps and cost receipts apply automatically.
|
|
|
62
62
|
|
|
63
63
|
| Step | Default provider / tier | Why |
|
|
64
64
|
|------|------------------------|-----|
|
|
65
|
-
| **Defense** | `
|
|
65
|
+
| **Defense** | `claude-code` (default) or `cognitum-low` (may equal writer) | Cheap; states the case, never grades. Must differ in vendor from the jury |
|
|
66
66
|
| Prosecutor — devils-advocate | `cognitum-mid` | Gap/assumption hunting |
|
|
67
67
|
| Prosecutor — brutal-honesty | `claude-code` (Opus/Sonnet) | Rigor lens, different family from jury |
|
|
68
68
|
| Prosecutor — sherlock | `cognitum-high` | Deductive/root-cause needs a strong model |
|
|
@@ -83,8 +83,15 @@ when you explicitly want to name several different models.
|
|
|
83
83
|
**Enforced invariants** (defaults; do not weaken without reason):
|
|
84
84
|
1. **≥2 distinct vendors** across the panel — Claude / Cognitum / GPT-via-Codex — not just tiers.
|
|
85
85
|
2. **Jury provider ∉ {writer, defense}** — no model grades its own or its writer's output.
|
|
86
|
+
Vendor is compared **coarsely**: `cognitum-low` and `cognitum-high` are the same
|
|
87
|
+
vendor, so pairing them across defense and jury is a violation, not a diverse panel.
|
|
86
88
|
3. All calls routed through `ProviderManager` → ADR-123 budget cap + receipts.
|
|
87
89
|
|
|
90
|
+
Invariants 1–2 are machine-checked by `validateCourtConfig()` in `referee.ts`, which
|
|
91
|
+
the court MUST call before seating a panel (see *How to run it*). The `options` block
|
|
92
|
+
below binds directly to that check — `minDistinctVendors` and `writerIsNeverJuror` are
|
|
93
|
+
read, not decorative.
|
|
94
|
+
|
|
88
95
|
## The protocol
|
|
89
96
|
|
|
90
97
|
```
|
|
@@ -150,7 +157,20 @@ composing existing agents/skills — there is no monolithic binary yet (a thin
|
|
|
150
157
|
`aqe court` CLI wrapper is planned as ADR-124 Phase 1; the hosted `/v1/qe/verdict`
|
|
151
158
|
is Phase 2). To run a court now:
|
|
152
159
|
|
|
153
|
-
1. Read `config.json` for the panel + `routing` + `overturnDepth
|
|
160
|
+
1. Read `config.json` for the panel + `routing` + `overturnDepth`, then **validate
|
|
161
|
+
the panel before seating it** — this step is not optional:
|
|
162
|
+
|
|
163
|
+
```ts
|
|
164
|
+
import { validateCourtConfig } from 'src/skills/qe-court/referee';
|
|
165
|
+
const violations = validateCourtConfig(config); // [] == valid
|
|
166
|
+
if (violations.length) throw new Error(`Cannot convene: ${violations.join(', ')}`);
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
A non-empty result means the panel cannot render a trustworthy verdict
|
|
170
|
+
(colluding jury, too few vendors, no jury at all). **ABORT the court and tell
|
|
171
|
+
the user which invariant failed** — do not proceed with a degraded panel and
|
|
172
|
+
do not silently re-route around it. A court that convenes an invalid panel
|
|
173
|
+
produces exactly the false SHIP it exists to catch.
|
|
154
174
|
2. Spawn the prosecutors **in one message, in parallel** (`Task`/`Agent`,
|
|
155
175
|
`run_in_background: true`), each with its routed provider; run
|
|
156
176
|
`codex exec review` for the cross-vendor lens via Bash.
|
|
@@ -172,7 +192,9 @@ Durable, attestable evidence — the "jury waiting for everything you ship."
|
|
|
172
192
|
(`src/skills/qe-court/referee.ts`) and covered by an oracle suite
|
|
173
193
|
(`tests/unit/skills/qe-court/referee.test.ts`) that the acceptance eval
|
|
174
194
|
(`evals/qe-court.yaml`, command-eval mode) runs through the `aqe eval` CLI —
|
|
175
|
-
|
|
195
|
+
15/15 green as of 2026-07-29. That suite now validates the **shipped `config.json`
|
|
196
|
+
itself**, so a routing edit that seats a colluding panel fails in CI rather than in
|
|
197
|
+
a user's court (issue #576). The keystone oracle: a seeded mutant a shallow panel
|
|
176
198
|
rated SHIP is overturned to BLOCK when the overturn round is active, and MUST
|
|
177
199
|
regress to SHIP at `overturnDepth: 0` — proving the mechanic carries its weight.
|
|
178
200
|
Run it yourself: `aqe eval run --skill qe-court --model cognitum-low`.
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"emitScore": false,
|
|
7
7
|
"routing": {
|
|
8
8
|
"_note": "provider ids: claude-code | cognitum-{low,mid,high} | openrouter | codex | claude | openai | gemini | ollama. Cognitum resolves multiple models behind its tiers; use openrouter when you want to name several distinct models for breadth.",
|
|
9
|
-
"defense": { "provider": "
|
|
9
|
+
"defense": { "provider": "claude-code" },
|
|
10
10
|
"prosecutor.devils-advocate": { "provider": "cognitum-mid" },
|
|
11
11
|
"prosecutor.brutal-honesty": { "provider": "claude-code", "model": "sonnet" },
|
|
12
12
|
"prosecutor.sherlock": { "provider": "cognitum-high" },
|