scip-query 0.20.0 → 0.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +69 -0
- package/README.md +255 -884
- package/dist/augment-vue-worker.js +1 -1
- package/dist/by-kind-CI3O6PQG.js +2 -0
- package/dist/call-graph-6QTUTXH7.js +2 -0
- package/dist/call-graph-evidence-lZa2dwQA.d.ts +11 -0
- package/dist/change-analysis-types-CCtoCHbC.d.ts +9 -0
- package/dist/chunk-26CT72HM.js +2 -0
- package/dist/{chunk-7PIO7NKH.js → chunk-2COFMIVK.js} +2 -2
- package/dist/chunk-2H4IAJHO.js +2 -0
- package/dist/chunk-2I3RSUWX.js +16 -0
- package/dist/chunk-2RP27XLR.js +2 -0
- package/dist/chunk-2ZBMOQGG.js +3 -0
- package/dist/{chunk-HX4GQPZP.js → chunk-32A42O5B.js} +3 -3
- package/dist/chunk-35ELD3RM.js +2 -0
- package/dist/chunk-35IW3P4H.js +2 -0
- package/dist/{chunk-DQGFVPUV.js → chunk-3653GTR7.js} +3 -3
- package/dist/chunk-3EX7DNBC.js +2 -0
- package/dist/chunk-3FQ3KMCD.js +2 -0
- package/dist/{chunk-5E4WNAVD.js → chunk-3PII3JI5.js} +2 -2
- package/dist/chunk-3TNRNKAT.js +2 -0
- package/dist/chunk-3VLJ2DCA.js +2 -0
- package/dist/{chunk-XSRF6Q77.js → chunk-46JLFIGA.js} +2 -2
- package/dist/chunk-4DCKBY6T.js +5 -0
- package/dist/chunk-4EXFZP6H.js +2 -0
- package/dist/chunk-4IIMPWMR.js +29 -0
- package/dist/chunk-4ILHWBYF.js +2 -0
- package/dist/chunk-4N6QSEMZ.js +10 -0
- package/dist/chunk-4OE2JO6I.js +2 -0
- package/dist/{chunk-7BAVHKMJ.js → chunk-4S4DF62J.js} +9 -9
- package/dist/chunk-4UUCUASK.js +554 -0
- package/dist/chunk-5236NQV3.js +2 -0
- package/dist/chunk-54EOGFBR.js +2 -0
- package/dist/{chunk-LY4WC4AD.js → chunk-5H7IWVXJ.js} +2 -2
- package/dist/chunk-5IZTXSOL.js +117 -0
- package/dist/{chunk-AZJQQKDD.js → chunk-5SE323LF.js} +2 -2
- package/dist/chunk-5ZJH6DDE.js +2 -0
- package/dist/chunk-63MBA7EG.js +3 -0
- package/dist/chunk-6BJ7SOY7.js +2 -0
- package/dist/chunk-6GJAP4OE.js +2 -0
- package/dist/chunk-6IEVHGWG.js +26 -0
- package/dist/chunk-6SWA6B24.js +7 -0
- package/dist/chunk-6T7H2AFY.js +3 -0
- package/dist/chunk-73Z33VFI.js +4 -0
- package/dist/chunk-7COHFNJK.js +38 -0
- package/dist/chunk-7HU2IJ2T.js +3 -0
- package/dist/chunk-7IOAZRVL.js +60 -0
- package/dist/chunk-7KCZELVM.js +2 -0
- package/dist/chunk-7PPYXENX.js +2 -0
- package/dist/chunk-7TWP3MCP.js +2 -0
- package/dist/chunk-AA7K3XLM.js +21 -0
- package/dist/chunk-AJVMVE7X.js +7 -0
- package/dist/chunk-ANWGXPPN.js +4 -0
- package/dist/chunk-APLKXICZ.js +3 -0
- package/dist/{chunk-JDOEX4E6.js → chunk-AQDWTCDC.js} +2 -2
- package/dist/chunk-AUP6YI5M.js +2 -0
- package/dist/chunk-B7ECWJAZ.js +2 -0
- package/dist/{chunk-ZHXX42OH.js → chunk-BATIVRU2.js} +4 -4
- package/dist/chunk-BBEDPVPB.js +4 -0
- package/dist/chunk-BBWPOMGU.js +2 -0
- package/dist/chunk-BD6CV7PN.js +2 -0
- package/dist/{chunk-XKWKXZKW.js → chunk-BHE44MHT.js} +2 -2
- package/dist/chunk-BOJ5SVE2.js +2 -0
- package/dist/chunk-BZYSGZRK.js +2 -0
- package/dist/chunk-CA5RE6H7.js +2 -0
- package/dist/chunk-CKDOY6JA.js +2 -0
- package/dist/chunk-CN2WGM7D.js +2 -0
- package/dist/chunk-COTMS5KM.js +3 -0
- package/dist/chunk-CSDDOUA4.js +3 -0
- package/dist/chunk-CT5SI2I4.js +2 -0
- package/dist/chunk-D5EKVZPI.js +2 -0
- package/dist/{chunk-FKSELJQF.js → chunk-D5W4UZY5.js} +2 -2
- package/dist/{chunk-RUJURYSV.js → chunk-DEUGHURX.js} +2 -2
- package/dist/chunk-DHKBIOXF.js +7 -0
- package/dist/chunk-DMQ7ZKJG.js +81 -0
- package/dist/chunk-DMUGTKMD.js +2 -0
- package/dist/chunk-DOPCR5BY.js +2 -0
- package/dist/chunk-DRENNWRG.js +2 -0
- package/dist/chunk-E4EJBGDZ.js +2 -0
- package/dist/chunk-E7BJXRNV.js +2 -0
- package/dist/chunk-EA4SH4U5.js +5 -0
- package/dist/{chunk-L7AW2QB5.js → chunk-EKZRF57O.js} +2 -2
- package/dist/chunk-ELNRLMC5.js +29 -0
- package/dist/chunk-F4FNK44D.js +2 -0
- package/dist/chunk-F7WQ337U.js +308 -0
- package/dist/chunk-FEQIQ26E.js +2 -0
- package/dist/chunk-FGB567HK.js +23 -0
- package/dist/chunk-FHV7NMFU.js +29 -0
- package/dist/chunk-FN6EJM6Q.js +2 -0
- package/dist/chunk-FTSQNONX.js +2 -0
- package/dist/chunk-FUG6RPYY.js +6 -0
- package/dist/chunk-G2F6T5BV.js +2 -0
- package/dist/chunk-G6OGPXJW.js +9 -0
- package/dist/chunk-GFLTPNWV.js +3 -0
- package/dist/chunk-GTDP2SKQ.js +2 -0
- package/dist/chunk-H46QMB7E.js +2 -0
- package/dist/chunk-H5EXS3HM.js +2 -0
- package/dist/chunk-HEOMG7IM.js +8 -0
- package/dist/chunk-HG5YI7PV.js +2 -0
- package/dist/{chunk-7SQQWSY3.js → chunk-HGKEAP7F.js} +2 -2
- package/dist/chunk-HUZNZ3H2.js +2 -0
- package/dist/chunk-HWLCBKFE.js +2 -0
- package/dist/chunk-I3U2FN2T.js +13 -0
- package/dist/{chunk-JAYYFEQY.js → chunk-I7PFL5P3.js} +2 -2
- package/dist/{chunk-2HPVVXM5.js → chunk-ICHBVITH.js} +2 -2
- package/dist/chunk-ICUQONOG.js +38 -0
- package/dist/chunk-IDPLC3FI.js +5 -0
- package/dist/{chunk-A73XVBCR.js → chunk-IGKKTHJR.js} +2 -2
- package/dist/chunk-IOKWFRFQ.js +4 -0
- package/dist/chunk-IPAL6DP2.js +3 -0
- package/dist/chunk-IUJ3ZFEE.js +7 -0
- package/dist/chunk-IXJ26KJJ.js +16 -0
- package/dist/chunk-IYV2YBHM.js +2 -0
- package/dist/chunk-JVZNWJBH.js +2 -0
- package/dist/chunk-K5MZYZV7.js +3 -0
- package/dist/{chunk-3G66UZBH.js → chunk-KFK7GF5C.js} +2 -2
- package/dist/chunk-KTRGJLY7.js +18 -0
- package/dist/chunk-KW6B5OL4.js +2 -0
- package/dist/chunk-KWARB5FZ.js +2 -0
- package/dist/chunk-LHTT5C3Z.js +2 -0
- package/dist/chunk-LPGDO2XA.js +3 -0
- package/dist/chunk-LXLD46LH.js +21 -0
- package/dist/chunk-MEI3PTUK.js +2 -0
- package/dist/chunk-MJNV7OCG.js +5 -0
- package/dist/chunk-MO226P4Q.js +4 -0
- package/dist/{chunk-3CLX5EOX.js → chunk-MOBF2GH6.js} +2 -2
- package/dist/chunk-MXNGIEPU.js +3 -0
- package/dist/chunk-MYUKI5VN.js +4 -0
- package/dist/{chunk-TFRAYKN6.js → chunk-N5C65OFK.js} +2 -2
- package/dist/{chunk-PXY7F6Y4.js → chunk-O2RM7E7L.js} +5 -5
- package/dist/chunk-OFUBXBYX.js +3 -0
- package/dist/chunk-OFY4HTMI.js +2 -0
- package/dist/chunk-OIRWZIYL.js +38 -0
- package/dist/chunk-OIVZ7PW6.js +438 -0
- package/dist/chunk-ORBKAUCH.js +4 -0
- package/dist/chunk-OUB4J26T.js +2 -0
- package/dist/chunk-OVPS2ILI.js +20 -0
- package/dist/chunk-PHSPBQM6.js +5 -0
- package/dist/{chunk-JVYA47YU.js → chunk-PIZY2GX6.js} +2 -2
- package/dist/chunk-PNISDVYC.js +3 -0
- package/dist/chunk-PQOL42AW.js +2 -0
- package/dist/chunk-PUVZNFVY.js +11 -0
- package/dist/chunk-PZEI2TVL.js +4 -0
- package/dist/{chunk-ZK26BAQL.js → chunk-Q2J2VZZT.js} +2 -2
- package/dist/chunk-Q7HB7BFJ.js +2 -0
- package/dist/{chunk-ZTETIQ35.js → chunk-QBANU5BQ.js} +2 -2
- package/dist/chunk-QD7IFBCR.js +10 -0
- package/dist/chunk-QDCCHMVZ.js +2 -0
- package/dist/chunk-QLQBZOJH.js +3 -0
- package/dist/{chunk-PQCI4SQX.js → chunk-QXR5QPSF.js} +2 -2
- package/dist/chunk-R2MOKIVO.js +2 -0
- package/dist/{chunk-EN3O7VJA.js → chunk-RFWAUHVW.js} +2 -2
- package/dist/chunk-RGCJ4646.js +16 -0
- package/dist/{chunk-BPAPWKP6.js → chunk-S3RTPPLQ.js} +8 -8
- package/dist/chunk-S73HBCGI.js +11 -0
- package/dist/chunk-SDPA5DKN.js +210 -0
- package/dist/chunk-SEUJVWT2.js +3 -0
- package/dist/chunk-SF7X6QNW.js +2 -0
- package/dist/chunk-SKUMCCC5.js +2 -0
- package/dist/chunk-SSSJO4RG.js +2 -0
- package/dist/chunk-SWFAFA4G.js +49 -0
- package/dist/chunk-SYUNTKO2.js +2 -0
- package/dist/chunk-T6FRID7Y.js +3 -0
- package/dist/chunk-TGWNNMPF.js +3 -0
- package/dist/chunk-TM5XEDDR.js +4 -0
- package/dist/chunk-TNOHGHZQ.js +2 -0
- package/dist/chunk-U2GPTA5U.js +3 -0
- package/dist/{chunk-SXP2MBJH.js → chunk-U7DR7MJD.js} +2 -2
- package/dist/chunk-U7LRSQG6.js +3 -0
- package/dist/chunk-UL4VJUMD.js +2 -0
- package/dist/chunk-UNORWZIJ.js +16 -0
- package/dist/chunk-UQ7XPRWU.js +2 -0
- package/dist/{chunk-6SHPK5ZE.js → chunk-URMZLV2N.js} +2 -2
- package/dist/chunk-URTX2BEA.js +6 -0
- package/dist/chunk-UZFCZ7SJ.js +2 -0
- package/dist/{chunk-KMKTIO2G.js → chunk-V7LQZTTZ.js} +2 -2
- package/dist/chunk-VETXXOYU.js +3 -0
- package/dist/chunk-VGRUM7JI.js +3 -0
- package/dist/{chunk-WXZLAAWK.js → chunk-VNKYRJKN.js} +2 -2
- package/dist/chunk-VWLIOEEF.js +11 -0
- package/dist/chunk-WB6LGCFB.js +6 -0
- package/dist/{chunk-W4ETQAXM.js → chunk-WK4FD4PG.js} +2 -2
- package/dist/{chunk-O64IZ6UX.js → chunk-WKPZCQLI.js} +2 -2
- package/dist/chunk-WSG3DK5H.js +2 -0
- package/dist/chunk-WULAPQUD.js +38 -0
- package/dist/chunk-WZQFY5S7.js +4 -0
- package/dist/chunk-X434XZAI.js +2 -0
- package/dist/chunk-X7PJJYKX.js +29 -0
- package/dist/chunk-XDAUYDFT.js +2 -0
- package/dist/chunk-XITQLISP.js +2 -0
- package/dist/chunk-XRXCANFQ.js +4 -0
- package/dist/chunk-XVDMJMES.js +3 -0
- package/dist/chunk-XXJ7WL3F.js +35 -0
- package/dist/chunk-Y4XQ7LES.js +9 -0
- package/dist/chunk-YIEFEPG6.js +16 -0
- package/dist/chunk-YRVERHJR.js +49 -0
- package/dist/{chunk-CJST5ETY.js → chunk-YUFWLWIC.js} +2 -2
- package/dist/chunk-YUKYB54I.js +1 -0
- package/dist/chunk-Z3GCK3PD.js +3 -0
- package/dist/chunk-ZBNL3QCY.js +4 -0
- package/dist/chunk-ZD3Z54IW.js +2 -0
- package/dist/chunk-ZDVDSDFG.js +4 -0
- package/dist/{chunk-32LVLCLN.js → chunk-ZHSARYVS.js} +3 -3
- package/dist/{chunk-BDCC2NPY.js → chunk-ZW44MCJM.js} +2 -2
- package/dist/{chunk-N5W4YZMK.js → chunk-ZYREOING.js} +2 -2
- package/dist/cli-main.js +8 -0
- package/dist/cli.js +1 -3
- package/dist/code-CczEvHui.d.ts +121 -0
- package/dist/code-EQL6ZBLH.js +2 -0
- package/dist/code-result-json-6E4J6LGZ.js +2 -0
- package/dist/command-descriptors-QH3G2OVD.js +346 -0
- package/dist/{config-types-jVM3D7MA.d.ts → config-types-Cm-VSEBb.d.ts} +189 -23
- package/dist/dataflow-2BLMUZBP.js +2 -0
- package/dist/{db-B5PM5yNk.d.ts → db-LKJXAlNS.d.ts} +1 -1
- package/dist/dependence-slice-MGAJDZXB.js +2 -0
- package/dist/deps-GQMUYVKW.js +2 -0
- package/dist/direct-navigation-6RUJKLAV.js +3 -0
- package/dist/entry-map-V2NQP5JU.js +2 -0
- package/dist/exploration-topology-BG4v30HZ.d.ts +256 -0
- package/dist/file-dep-graph-Bqg3t3Px.d.ts +4 -0
- package/dist/file-kind-BKCVMNUf.d.ts +10 -0
- package/dist/files-VM53I4IU.js +2 -0
- package/dist/graph-evidence-CbUPCSKV.d.ts +126 -0
- package/dist/graph-exploration-contract-CqDsnPQL.d.ts +7 -0
- package/dist/{health-Do5TKSJI.d.ts → health-Wl5G_LRt.d.ts} +33 -34
- package/dist/hierarchy-D553WRSZ.js +2 -0
- package/dist/imports-DOZAJWLW.js +2 -0
- package/dist/index.d.ts +4 -31
- package/dist/index.js +1 -1
- package/dist/members-HE67475K.js +2 -0
- package/dist/methods-K5JK4PPH.js +2 -0
- package/dist/next-anchor-candidates-BwMczMvX.d.ts +90 -0
- package/dist/output-continuation-command-LKBUTNRL.js +3 -0
- package/dist/output-pagination-VAWOGX4R.js +19 -0
- package/dist/postinstall.js +1 -1
- package/dist/project-reindex-4ARU6QCM.js +3 -0
- package/dist/queries/affected.d.ts +22 -4
- package/dist/queries/affected.js +1 -1
- package/dist/queries/anchors.d.ts +123 -0
- package/dist/queries/anchors.js +2 -0
- package/dist/queries/architecture.d.ts +3 -2
- package/dist/queries/architecture.js +1 -1
- package/dist/queries/bottlenecks.d.ts +26 -7
- package/dist/queries/bottlenecks.js +1 -1
- package/dist/queries/by-kind.d.ts +2 -2
- package/dist/queries/by-kind.js +1 -1
- package/dist/queries/call-graph.d.ts +17 -3
- package/dist/queries/call-graph.js +1 -1
- package/dist/queries/change-surface.d.ts +2 -2
- package/dist/queries/change-surface.js +1 -1
- package/dist/queries/cleanup-plan.d.ts +2 -2
- package/dist/queries/cleanup-plan.js +1 -1
- package/dist/queries/co-change.d.ts +2 -2
- package/dist/queries/co-change.js +1 -1
- package/dist/queries/code.d.ts +5 -26
- package/dist/queries/code.js +1 -1
- package/dist/queries/complexity-hotspots.d.ts +2 -2
- package/dist/queries/complexity-hotspots.js +1 -1
- package/dist/queries/complexity.d.ts +2 -2
- package/dist/queries/complexity.js +1 -1
- package/dist/queries/context.d.ts +145 -0
- package/dist/queries/context.js +2 -0
- package/dist/queries/convergence.d.ts +2 -2
- package/dist/queries/convergence.js +1 -1
- package/dist/queries/coupling.d.ts +8 -3
- package/dist/queries/coupling.js +1 -1
- package/dist/queries/cycles.d.ts +34 -7
- package/dist/queries/cycles.js +1 -1
- package/dist/queries/dataflow.d.ts +40 -14
- package/dist/queries/dataflow.js +1 -1
- package/dist/queries/dead.d.ts +2 -2
- package/dist/queries/dead.js +1 -1
- package/dist/queries/decorative-checkers.d.ts +3 -3
- package/dist/queries/decorative-checkers.js +1 -1
- package/dist/queries/deep-chains.d.ts +4 -38
- package/dist/queries/deep-chains.js +1 -1
- package/dist/queries/dependence-slice.d.ts +47 -0
- package/dist/queries/dependence-slice.js +2 -0
- package/dist/queries/dependency-depth.d.ts +49 -0
- package/dist/queries/dependency-depth.js +2 -0
- package/dist/queries/deps.d.ts +4 -2
- package/dist/queries/deps.js +1 -1
- package/dist/queries/diff-impact.d.ts +3 -3
- package/dist/queries/diff-impact.js +1 -1
- package/dist/queries/doc-drift.d.ts +4 -4
- package/dist/queries/doc-drift.js +1 -1
- package/dist/queries/drift.d.ts +2 -2
- package/dist/queries/drift.js +1 -1
- package/dist/queries/duplicate-bodies.d.ts +2 -2
- package/dist/queries/duplicate-bodies.js +1 -1
- package/dist/queries/entry-map.d.ts +121 -0
- package/dist/queries/entry-map.js +2 -0
- package/dist/queries/evidence.d.ts +70 -0
- package/dist/queries/evidence.js +2 -0
- package/dist/queries/extract-candidates.d.ts +2 -2
- package/dist/queries/extract-candidates.js +1 -1
- package/dist/queries/fan.d.ts +18 -5
- package/dist/queries/fan.js +1 -1
- package/dist/queries/files.d.ts +2 -2
- package/dist/queries/files.js +1 -1
- package/dist/queries/health.d.ts +4 -3
- package/dist/queries/health.js +1 -1
- package/dist/queries/hierarchy.d.ts +5 -3
- package/dist/queries/hierarchy.js +1 -1
- package/dist/queries/hotspots.d.ts +11 -5
- package/dist/queries/hotspots.js +1 -1
- package/dist/queries/imports.d.ts +2 -2
- package/dist/queries/imports.js +1 -1
- package/dist/queries/incomplete-migration.d.ts +4 -4
- package/dist/queries/incomplete-migration.js +1 -1
- package/dist/queries/index.d.ts +56 -136
- package/dist/queries/index.js +1 -1
- package/dist/queries/isolated.d.ts +2 -2
- package/dist/queries/isolated.js +1 -1
- package/dist/queries/locality-candidates.d.ts +2 -2
- package/dist/queries/locality-candidates.js +1 -1
- package/dist/queries/members.d.ts +2 -2
- package/dist/queries/members.js +1 -1
- package/dist/queries/methods.d.ts +2 -2
- package/dist/queries/methods.js +1 -1
- package/dist/queries/not-implemented.d.ts +3 -3
- package/dist/queries/not-implemented.js +1 -1
- package/dist/queries/outline.d.ts +2 -2
- package/dist/queries/outline.js +1 -1
- package/dist/queries/passthrough-candidates.d.ts +5 -9
- package/dist/queries/passthrough-candidates.js +1 -1
- package/dist/queries/plan-context.d.ts +27 -64
- package/dist/queries/plan-context.js +1 -1
- package/dist/queries/react-component-duplicates.d.ts +2 -2
- package/dist/queries/react-component-duplicates.js +1 -1
- package/dist/queries/react-hook-candidates.d.ts +2 -2
- package/dist/queries/react-hook-candidates.js +1 -1
- package/dist/queries/react-large-component-pressure.d.ts +2 -2
- package/dist/queries/react-large-component-pressure.js +1 -1
- package/dist/queries/recent-duplicates.d.ts +2 -2
- package/dist/queries/recent-duplicates.js +1 -1
- package/dist/queries/redundant-reexports.d.ts +2 -2
- package/dist/queries/redundant-reexports.js +1 -1
- package/dist/queries/reference-neighborhood.d.ts +4 -0
- package/dist/queries/reference-neighborhood.js +2 -0
- package/dist/queries/reference-reachability.d.ts +48 -0
- package/dist/queries/reference-reachability.js +2 -0
- package/dist/queries/refs.d.ts +2 -2
- package/dist/queries/refs.js +1 -1
- package/dist/queries/self-audit.d.ts +2 -2
- package/dist/queries/self-audit.js +1 -1
- package/dist/queries/similar-chains.d.ts +2 -2
- package/dist/queries/similar-chains.js +1 -1
- package/dist/queries/similar-files.d.ts +2 -2
- package/dist/queries/similar-files.js +1 -1
- package/dist/queries/similar-signatures.d.ts +2 -2
- package/dist/queries/similar-signatures.js +1 -1
- package/dist/queries/similar.d.ts +2 -2
- package/dist/queries/similar.js +1 -1
- package/dist/queries/slice.d.ts +3 -36
- package/dist/queries/slice.js +1 -1
- package/dist/queries/source-inspection.d.ts +209 -0
- package/dist/queries/source-inspection.js +2 -0
- package/dist/queries/source-search.d.ts +13 -0
- package/dist/queries/source-search.js +2 -0
- package/dist/queries/stale-abstractions.d.ts +2 -2
- package/dist/queries/stale-abstractions.js +1 -1
- package/dist/queries/stats.d.ts +2 -2
- package/dist/queries/surface.d.ts +13 -4
- package/dist/queries/surface.js +1 -1
- package/dist/queries/symbols.d.ts +2 -2
- package/dist/queries/symbols.js +1 -1
- package/dist/queries/system-map.d.ts +449 -0
- package/dist/queries/system-map.js +2 -0
- package/dist/queries/system.d.ts +5 -3
- package/dist/queries/system.js +1 -1
- package/dist/queries/test-quality.d.ts +2 -2
- package/dist/queries/test-quality.js +1 -1
- package/dist/queries/trace.d.ts +47 -3
- package/dist/queries/trace.js +1 -1
- package/dist/queries/twin-ab.d.ts +3 -3
- package/dist/queries/twin-ab.js +1 -1
- package/dist/queries/twin-drift.d.ts +3 -3
- package/dist/queries/twin-drift.js +1 -1
- package/dist/queries/unused-imports.d.ts +2 -2
- package/dist/queries/unused-imports.js +1 -1
- package/dist/queries/unused-params.d.ts +2 -2
- package/dist/queries/unused-params.js +1 -1
- package/dist/queries/value-flow.d.ts +43 -0
- package/dist/queries/value-flow.js +2 -0
- package/dist/queries/vue-component-duplicates.d.ts +2 -2
- package/dist/queries/vue-component-duplicates.js +1 -1
- package/dist/queries/vue-composable-candidates.d.ts +2 -2
- package/dist/queries/vue-composable-candidates.js +1 -1
- package/dist/queries/vue-large-view-pressure.d.ts +2 -2
- package/dist/queries/vue-large-view-pressure.js +1 -1
- package/dist/queries/wrapper-candidates.d.ts +2 -2
- package/dist/queries/wrapper-candidates.js +1 -1
- package/dist/query-service-fastpath.js +6 -0
- package/dist/query-service-server.js +5 -0
- package/dist/refs-NBHKL4UQ.js +2 -0
- package/dist/refs-pagination-BBVTIHMH.js +2 -0
- package/dist/reindex-worker.js +27 -45
- package/dist/reindex.d.ts +62 -42
- package/dist/reindex.js +32 -33
- package/dist/repository-text-C0Q8VYdN.d.ts +19 -0
- package/dist/runtime.d.ts +286 -7
- package/dist/runtime.js +4 -3
- package/dist/rust-semantic-session-server.js +1 -1
- package/dist/rust-semantic-session-worker.js +1 -1
- package/dist/rust-semantic-worker.js +1 -1
- package/dist/{scip-cli-BnEwZRLJ.d.ts → scip-cli-CppzF5MK.d.ts} +33 -2
- package/dist/slice-U6S6LBSB.js +2 -0
- package/dist/source-search-types-Dwz8KeuW.d.ts +79 -0
- package/dist/source-snippet-_wrcgmZc.d.ts +15 -0
- package/dist/stats-OOJ74B32.js +2 -0
- package/dist/surface-C7SS5CDQ.js +2 -0
- package/dist/symbol-resolution-3FVEKDTJ.js +2 -0
- package/dist/system-6K2NOO5C.js +2 -0
- package/dist/trace-II5K2TMH.js +2 -0
- package/dist/typescript-mailbox-worker.js +1 -1
- package/dist/value-flow-MKFUUE5B.js +2 -0
- package/dist/watch-server.js +3 -2
- package/docs/AGENT_GUIDE.md +133 -476
- package/docs/AI_FAILURE_MODES.md +30 -301
- package/docs/API.md +1 -1
- package/docs/API_EVOLUTION.md +6 -0
- package/docs/CLI_JSON_OUTPUT.md +207 -29
- package/docs/COMMAND_REFERENCE.md +255 -154
- package/docs/CONFIGURATION_WRITE_SAFETY.md +14 -13
- package/docs/DETECTOR_EVIDENCE_CONTRACTS.md +84 -0
- package/docs/DETECTOR_GUIDE.md +46 -138
- package/docs/DURABILITY.md +7 -1
- package/docs/INDEX_GENERATIONS.md +6 -0
- package/docs/LOCK_PROTOCOL.md +8 -0
- package/docs/REINDEX_METADATA_COMPATIBILITY.md +13 -3
- package/docs/SECURITY_MODEL.md +39 -42
- package/docs/accuracy-audit-checklist.md +4 -0
- package/docs/accuracy-hardening-goal.md +9 -2
- package/docs/analyzer-inventory.md +59 -264
- package/docs/analyzer-validation-protocol.md +62 -170
- package/docs/architecture-coherence-vision.md +18 -12
- package/docs/locality-analyzer-design.md +1 -1
- package/docs/schemas/cli-json-envelope.schema.json +212 -27
- package/docs/schemas/cli-json-export-receipt.schema.json +25 -0
- package/docs/schemas/cli-output-page.schema.json +1 -1
- package/docs/schemas/observation-receipt.schema.json +164 -0
- package/docs/schemas/project-config.schema.json +27 -45
- package/docs/schemas/suppression-record.schema.json +1 -34
- package/package.json +65 -8
- package/skills/concrete-plan/SKILL.md +8 -0
- package/skills/concrete-plan/agents/openai.yaml +4 -0
- package/skills/scip-explore/SKILL.md +3 -85
- package/skills/scip-explore/agents/openai.yaml +3 -3
- package/skills/scip-integrity-audit/SKILL.md +185 -0
- package/skills/scip-integrity-audit/agents/openai.yaml +4 -0
- package/skills/scip-plan/SKILL.md +67 -49
- package/skills/scip-plan/agents/openai.yaml +3 -3
- package/skills/scip-query/SKILL.md +77 -77
- package/skills/scip-query/agents/openai.yaml +3 -3
- package/skills/scip-setup/SKILL.md +10 -102
- package/skills/scip-setup/agents/openai.yaml +3 -3
- package/dist/chunk-26QA6FAI.js +0 -8
- package/dist/chunk-2KAZEZ6M.js +0 -2
- package/dist/chunk-3ORVDL3H.js +0 -2
- package/dist/chunk-46XGSFNI.js +0 -2
- package/dist/chunk-4MAK2HOY.js +0 -6
- package/dist/chunk-4TURLRL5.js +0 -16
- package/dist/chunk-4UQVNCQE.js +0 -2
- package/dist/chunk-55Q3WLZX.js +0 -2
- package/dist/chunk-5I5G2QOX.js +0 -3
- package/dist/chunk-6LDJQXAH.js +0 -2
- package/dist/chunk-6O5TICIZ.js +0 -3
- package/dist/chunk-7O5IKBTZ.js +0 -16
- package/dist/chunk-7S5E7KWT.js +0 -2
- package/dist/chunk-7WPLAODU.js +0 -5
- package/dist/chunk-AFHORGLH.js +0 -42
- package/dist/chunk-AIE7TFJW.js +0 -9
- package/dist/chunk-AQOFWNQJ.js +0 -1
- package/dist/chunk-B2PX5I6M.js +0 -2
- package/dist/chunk-B75HZHUP.js +0 -2
- package/dist/chunk-B7PBSLZN.js +0 -2
- package/dist/chunk-BBW6JFHN.js +0 -2
- package/dist/chunk-BNXCIFVY.js +0 -2
- package/dist/chunk-BS2NMXQZ.js +0 -4
- package/dist/chunk-C3KV2II6.js +0 -2
- package/dist/chunk-C43RDDP4.js +0 -20
- package/dist/chunk-DAFAHMNB.js +0 -42
- package/dist/chunk-DQLPXMH6.js +0 -8
- package/dist/chunk-EKZTZXHZ.js +0 -117
- package/dist/chunk-EW2NTSFA.js +0 -18
- package/dist/chunk-F3Z4OUDS.js +0 -8
- package/dist/chunk-FJH2NW7J.js +0 -66
- package/dist/chunk-FTFP6O3L.js +0 -11
- package/dist/chunk-FYLK2DEJ.js +0 -2
- package/dist/chunk-GH74ASD6.js +0 -11
- package/dist/chunk-GMXWZP2B.js +0 -2
- package/dist/chunk-GOUBFH5O.js +0 -3
- package/dist/chunk-HLF2TX6R.js +0 -2
- package/dist/chunk-HX7M4BDI.js +0 -30
- package/dist/chunk-HZ72SESS.js +0 -128
- package/dist/chunk-IB2N4FIY.js +0 -10
- package/dist/chunk-IZYYAFN5.js +0 -2
- package/dist/chunk-JFGGXWQF.js +0 -947
- package/dist/chunk-JN4NMBEX.js +0 -8
- package/dist/chunk-JW56N3KI.js +0 -4
- package/dist/chunk-JZ2OXNWB.js +0 -2
- package/dist/chunk-KFZNKUNT.js +0 -2
- package/dist/chunk-L5GJNV2T.js +0 -8
- package/dist/chunk-L7JDSCDF.js +0 -4
- package/dist/chunk-LU47HG23.js +0 -14
- package/dist/chunk-LVY7NPF7.js +0 -2
- package/dist/chunk-MKCDWWGV.js +0 -4
- package/dist/chunk-MNE7YG56.js +0 -2
- package/dist/chunk-MRXBEXSY.js +0 -26
- package/dist/chunk-MV7OWDUX.js +0 -2
- package/dist/chunk-NGEXCJJW.js +0 -11
- package/dist/chunk-NIW6JDC5.js +0 -29
- package/dist/chunk-PBUQFCNB.js +0 -16
- package/dist/chunk-POAVPHH7.js +0 -2
- package/dist/chunk-QZ4JVECJ.js +0 -2
- package/dist/chunk-RDO52JGY.js +0 -2
- package/dist/chunk-RJT3TUUZ.js +0 -2
- package/dist/chunk-RVLDN63O.js +0 -4
- package/dist/chunk-RXOXSKY3.js +0 -2
- package/dist/chunk-S7OYBOCK.js +0 -2
- package/dist/chunk-SMNXQT5Z.js +0 -3
- package/dist/chunk-SRAFT254.js +0 -2
- package/dist/chunk-T7YQSHPQ.js +0 -3
- package/dist/chunk-UJCOIXDY.js +0 -2
- package/dist/chunk-UJPRPGCO.js +0 -13
- package/dist/chunk-WCCFZ7V7.js +0 -113
- package/dist/chunk-WUPW3UN3.js +0 -3
- package/dist/chunk-X54AGLVX.js +0 -2
- package/dist/chunk-Y2MVPNKY.js +0 -5
- package/dist/chunk-YKUU5AIC.js +0 -3
- package/dist/chunk-YLCJLTPL.js +0 -2
- package/dist/chunk-YTQVETEO.js +0 -2
- package/dist/chunk-Z4N3MZYA.js +0 -38
- package/dist/chunk-ZJOOT3BG.js +0 -2
- package/dist/command-descriptors-DSS46KXI.js +0 -642
- package/dist/diff-gate-types-B0QYpDv1.d.ts +0 -11
- package/dist/direct-navigation-6YHV6IB5.js +0 -3
- package/dist/queries/diff-gate.d.ts +0 -253
- package/dist/queries/diff-gate.js +0 -2
- package/docs/COMMITTED_RECORD_COMPATIBILITY.md +0 -154
- package/docs/analyzer-validation-ledger.md +0 -516
- package/docs/schemas/outcome-event-record.schema.json +0 -95
- package/skills/_shared/SKILL.md +0 -101
- package/skills/_shared/agents/openai.yaml +0 -4
- package/skills/_shared/references/agent-contract-catalog.md +0 -105
- package/skills/_shared/references/command-catalog.md +0 -118
- package/skills/_shared/references/detector-precision-and-diffgate.md +0 -59
- package/skills/_shared/references/evidence-and-dead-code.md +0 -25
- package/skills/scip-audit/SKILL.md +0 -77
- package/skills/scip-audit/agents/openai.yaml +0 -4
- package/skills/scip-audit/references/claims.md +0 -98
- package/skills/scip-audit/references/cleanup.md +0 -100
- package/skills/scip-audit/references/directory.md +0 -222
- package/skills/scip-audit/references/frontend.md +0 -130
- package/skills/scip-audit/references/integrity.md +0 -154
- package/skills/scip-audit/references/maintainability.md +0 -162
- package/skills/scip-audit/references/twin-drift.md +0 -104
- package/skills/scip-diagnose/SKILL.md +0 -52
- package/skills/scip-diagnose/agents/openai.yaml +0 -4
- package/skills/scip-diagnose/references/debug.md +0 -117
- package/skills/scip-diagnose/references/probe-reachability.md +0 -77
- package/skills/scip-diagnose/references/root-cause.md +0 -145
- package/skills/scip-diagnose/references/triage.md +0 -119
- package/skills/scip-explore/references/diagrams.md +0 -40
- package/skills/scip-explore/references/language-playbook.md +0 -49
- package/skills/scip-improve/SKILL.md +0 -56
- package/skills/scip-improve/agents/openai.yaml +0 -4
- package/skills/scip-improve/references/cleanup-batches.md +0 -53
- package/skills/scip-improve/references/directory-moves.md +0 -53
- package/skills/scip-improve/references/doc-reconcile.md +0 -30
- package/skills/scip-improve/references/frontend-extraction.md +0 -39
- package/skills/scip-improve/references/maintainability-mechanism.md +0 -43
- package/skills/scip-improve/references/twin-drift.md +0 -35
- package/skills/scip-plan/references/api-impact.md +0 -19
- package/skills/scip-plan/references/conductor.md +0 -41
- package/skills/scip-plan/references/high-assurance.md +0 -43
- package/skills/scip-plan/references/hyper-optimization.md +0 -50
- package/skills/scip-plan/references/tla-model.md +0 -88
- package/skills/scip-setup/references/bootstrap-workflow.md +0 -119
- package/skills/scip-setup/references/language-verification.md +0 -61
- package/skills/scip-setup/references/lifecycle-commands.md +0 -119
- package/skills/scip-setup/references/per-repo-triage.md +0 -24
- package/skills/scip-verify/SKILL.md +0 -229
- package/skills/scip-verify/agents/openai.yaml +0 -4
- package/skills/scip-verify/references/calibrate-detectors.md +0 -170
package/skills/_shared/SKILL.md
DELETED
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: _shared
|
|
3
|
-
description: Load only as reference material from within another scip-* workflow skill when that skill's own shortlist is insufficient — never invoke _shared directly as the owning workflow for a task.
|
|
4
|
-
disable-model-invocation: true
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Purpose
|
|
8
|
-
|
|
9
|
-
`_shared` is the catalog every other scip-* skill draws its command vocabulary and correctness rules from: freshness/lookup mechanics, the full command-family list, detector precision tiers, postcheck rules, the event ledger, and the subagent evidence-boundary contract. It is not a workflow — no task should end with "I invoked `_shared`". Come here mid-task from another skill when that skill's own shortlist runs out.
|
|
10
|
-
|
|
11
|
-
A SCIP index is the compiler-derived map of a repository: source files, symbols, references, imports, calls, dependencies. It differs from text search because it records what the language toolchain actually resolved, so a claim backed by it can name definitions and consumers rather than matching strings. A **graph fact** is anything produced from that index — a definition line, a reference site, a caller, a dependency, a reverse dependency, an affected consumer.
|
|
12
|
-
|
|
13
|
-
**Match evidence to the claim.** Native search and file reads are valid for literal text, exact local source, and unambiguous local logic (e.g. a helper defined two lines down in the same file is not a resolution claim). Use scip-query whenever the claim depends on compiler-resolved identity or on a relationship set being complete — definitions, references, callers, dependencies, consumers, affected units, public surface. Many scip-query commands return a bounded/capped sample rather than an exhaustive set; say so explicitly rather than treating a bounded result as proof of completeness.
|
|
14
|
-
|
|
15
|
-
## Triage table
|
|
16
|
-
|
|
17
|
-
| Need | Where |
|
|
18
|
-
|---|---|
|
|
19
|
-
| Human-oriented command vocabulary and when-to-use notes | `references/command-catalog.md` |
|
|
20
|
-
| Descriptor-owned questions, returned units, and default coverage for every command | `references/agent-contract-catalog.md` |
|
|
21
|
-
| Detector precision tiers, diff-gate's ten checks, root-cause groups, event ledger, effectiveness | `references/detector-precision-and-diffgate.md` |
|
|
22
|
-
| Subagent evidence-boundary contract, dead-code reference-counting status and residual gap | `references/evidence-and-dead-code.md` |
|
|
23
|
-
| The edit-to-postcheck table (which postcheck to run after which kind of edit) | `scip-verify` skill — authoritative, do not duplicate it here |
|
|
24
|
-
|
|
25
|
-
## Freshness gate
|
|
26
|
-
|
|
27
|
-
Before the first SCIP graph fact in a work session, run `scip-query status --capabilities` once. If the reported generation is fresh, reuse it until source changes; do not repeat capability checks between commands against that same generation.
|
|
28
|
-
|
|
29
|
-
After source changes, let an active watcher refresh the index. If status says the watcher is indexing, debouncing, cooling down, or already has a pending/claimed refresh request, wait for that work to finish and check once more instead of starting a competing refresh. Run `scip-query reindex` only when freshness is `stale`, `missing`, or `unknown` and the watcher is disabled, unavailable, or has failed to refresh. Re-check status once after that fallback completes.
|
|
30
|
-
|
|
31
|
-
## Symbol lookup fallback ladder
|
|
32
|
-
|
|
33
|
-
Look symbols up by partial name, no parentheses: `scip-query code parseConfig`, `scip-query trace loadSettings`. If a lookup is ambiguous or comes back empty:
|
|
34
|
-
1. Retry with a shorter symbol name.
|
|
35
|
-
2. If still unresolved, run `scip-query outline <file>` to get a tree of that file's symbols with line ranges.
|
|
36
|
-
3. If outline doesn't resolve it, run `scip-query trace <name>` (definition plus every reference).
|
|
37
|
-
4. Last resort, once you already know the file and line range: `scip-query code 'path/to/file.ts:START-END'`.
|
|
38
|
-
|
|
39
|
-
`scip-query files <pattern>` is the step before step 1 when you have a name fragment but no path — feed its result into outline or the lookup ladder. `scip-query stats` gives index statistics; reach for it when validating that a reindex actually populated the index (e.g. during setup/calibration, not mid-exploration).
|
|
40
|
-
|
|
41
|
-
## Reading a symbol once located
|
|
42
|
-
|
|
43
|
-
- `scip-query members <symbol>` — every child of a symbol (methods, fields, nested types). Use once `hierarchy` or `by-kind` has identified a class/type, to see its full surface before editing or removing it.
|
|
44
|
-
- `scip-query hierarchy <symbol>` — a method's ancestry chain up to its class and module. Use before editing a method, to understand the containing type's contract.
|
|
45
|
-
- `scip-query by-kind <kind>` — every symbol of a SCIP kind (class, interface, enum, function…). Use after `scip-query kind-counts` (a histogram of kinds in the codebase) narrows down which kind is worth a systematic sweep.
|
|
46
|
-
- `scip-query refs <symbol>` — every file referencing a symbol. This is the strong-signal confirmation step: whenever a dead-code or "is this used" claim needs checking, run `refs` before asserting it.
|
|
47
|
-
|
|
48
|
-
## Structural surveys before a change
|
|
49
|
-
|
|
50
|
-
- `scip-query system <module>` — full module map (files, symbols, deps in/out). Use to onboard to an unfamiliar module or produce a module-level briefing.
|
|
51
|
-
- `scip-query surface <module>` — the symbols consumers actually use from a module. Compare against its declared exports to see whether public API can be pruned.
|
|
52
|
-
- `scip-query imports <file>` — what a file imports. Use to audit a file's dependency footprint before moving or refactoring it.
|
|
53
|
-
- `scip-query deps <file>` — internal files this file depends on (upstream blast radius).
|
|
54
|
-
- `scip-query rdeps <file>` — files that depend on this file/module (downstream blast radius: who breaks if it changes).
|
|
55
|
-
|
|
56
|
-
## Deeper semantics
|
|
57
|
-
|
|
58
|
-
- `scip-query dataflow <symbol>` — reference-level dataflow: definition sites, usage sites, producers, consumers. Use when debugging or planning a change and location alone (`refs`) isn't enough — you need to know how data moves through the symbol.
|
|
59
|
-
- `scip-query slice <symbol>` — a reference-level program slice, backward (what affects this symbol) or forward (what this symbol affects). Use to scope the minimum code touched by a targeted refactor.
|
|
60
|
-
|
|
61
|
-
## Dead code and duplication
|
|
62
|
-
|
|
63
|
-
- `scip-query dead [scope]` — repository-dead code, file-internal symbols, implicit-usage signals. Cross-check any hit with `refs` before deleting; see `references/evidence-and-dead-code.md` for the one residual false-dead gap (ambiguous leaf name reached only through a re-exporting barrel in a workspace package).
|
|
64
|
-
- `scip-query isolated` — completely orphaned symbols with no references at all; the stricter sibling of `dead`, same reference-counting layer, same residual gap caveat.
|
|
65
|
-
- `scip-query similar [symbol] [other]` — heuristic function-similarity candidates from callee fingerprints. Good-with-review signal: read the code before treating a hit as a real duplicate.
|
|
66
|
-
- `scip-query similar-files [file]` — heuristic similar-file candidates from dependency profiles. Use before writing a new file, to check whether a sibling already does the job; review before acting.
|
|
67
|
-
|
|
68
|
-
## Coupling and architecture health
|
|
69
|
-
|
|
70
|
-
- `scip-query fan-in [symbol]` — how many files reference an exact symbol. Use to gauge a symbol's criticality/blast-radius before changing its signature.
|
|
71
|
-
- `scip-query fan-out [file]` — how many external symbols a file uses (or the top-fan-out list across the codebase). Use to gauge a file's coupling debt before deciding whether to split it.
|
|
72
|
-
- `scip-query coupling [file1] [file2]` — coupling between two named files, or the top coupled pairs codebase-wide. Use when a specific pair is suspected of hidden coupling, or when scanning for the worst offenders.
|
|
73
|
-
- `scip-query cycles` — circular dependency chains between files. Use when investigating why files resist clean layering or isolated testing.
|
|
74
|
-
- `scip-query bottlenecks` — symbols/files with high fan-in *and* high fan-out (coupling hubs). Use to prioritize a maintainability review.
|
|
75
|
-
- `scip-query architecture` — evaluates project-owned architectural boundaries and dependency rules. Its baseline is what diff-gate's `architecture` check reads from directly (see `references/detector-precision-and-diffgate.md`).
|
|
76
|
-
|
|
77
|
-
## History
|
|
78
|
-
|
|
79
|
-
- `scip-query co-change [file]` — files that change together in git history without a dependency edge: hidden-coupling candidates the graph misses. Good-with-review signal. Use before splitting a file to check whether its historical co-change partner also needs updating.
|
|
80
|
-
|
|
81
|
-
## Governance: config, suppression, effectiveness
|
|
82
|
-
|
|
83
|
-
1. `scip-query init` — creates `.scipquery.json` for a project. Run once, at bootstrap, before any config-dependent command.
|
|
84
|
-
2. `scip-query config-validate` — validates `.scipquery.json`, including structured suppressions and declared coupling groups. Run after hand-editing either.
|
|
85
|
-
3. `scip-query suppress <id>` — records an accepted finding as a file under `.scipquery/suppressions/` with a required reason, the moment you decide a finding is a false positive or an accepted risk. This is what feeds the "suppressed" count in effectiveness.
|
|
86
|
-
4. `scip-query effectiveness [--since 30d] [--check <check>]` — per-check history from the committed outcome ledger: findings caught, comparison-verified fixed, suppressed, still open, "moved" (rename noise), legacy/non-comparable "unverified" resolutions, precision (verified-fixed ÷ (verified-fixed + suppressed)), and median days-to-fix. Run this periodically, or the moment diff-gate feels noisy, to see which checks are earning their keep — then either tune that check's config, suppress the standing findings with reasons, or consciously accept the noise. Do not let unresolved findings accumulate as wallpaper.
|
|
87
|
-
|
|
88
|
-
Standalone detector commands (outside diff-gate) are not outcome-tracked in this ledger until they expose complete-scan evidence. A pre-commit rerun of diff-gate reuses the same comparison base directly; after HEAD advances, a clean diff-gate run automatically replays the stored comparison commit. A dirty or unavailable replay leaves the effectiveness finding pending rather than manufacturing a fix result.
|
|
89
|
-
|
|
90
|
-
## Postcheck
|
|
91
|
-
|
|
92
|
-
At final verification for a coherent diff, run `scip-query status --capabilities` once and `scip-query diff-gate`. Repeat them only if the diff changes afterward. Fix each finding, or record a specific acceptance reason for each one left unresolved (findings marked `(advisory)` never block — treat them as context, not obligations). Do not report success while a diff-gate finding is unexplained. The authoritative table of *which* postcheck to run for *which* kind of edit lives in `scip-verify`; invoke that skill rather than re-deriving it here.
|
|
93
|
-
|
|
94
|
-
## Subagent evidence boundary
|
|
95
|
-
|
|
96
|
-
When a subagent gathers scip-query evidence, its prompt must carry these rules verbatim:
|
|
97
|
-
- Use scip-query for any compiler-resolved-identity or completeness claim; native search/file reads are valid only for literal source content and unambiguous local logic (e.g. a helper defined in the same file).
|
|
98
|
-
- The trigger is resolution or completeness, not whether execution crosses a call boundary: asserting what `handler(x)` does without resolving what `handler` is requires scip-query evidence; reading a helper defined two lines down in the same file does not.
|
|
99
|
-
- Cite the evidence source appropriate to each claim, and state plainly when neither source establishes a claim completely.
|
|
100
|
-
|
|
101
|
-
Reject a subagent's finding if it sources a resolution or completeness claim from text search alone. Do not reject a literal-content claim merely for citing a file read as its evidence.
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
# Descriptor-owned command contracts
|
|
2
|
-
|
|
3
|
-
Use this catalog when choosing between commands or deciding whether a result
|
|
4
|
-
can support a complete claim. Each row is generated from the CLI descriptor
|
|
5
|
-
that also drives help and JSON metadata. “Default coverage” describes the
|
|
6
|
-
normal invocation; the actual JSON result remains authoritative when options,
|
|
7
|
-
scope, runtime capability, or pagination change it.
|
|
8
|
-
|
|
9
|
-
<!-- BEGIN GENERATED AGENT CONTRACT CATALOG -->
|
|
10
|
-
| Command | Questions it answers | Returns | Default coverage |
|
|
11
|
-
| --- | --- | --- | --- |
|
|
12
|
-
| `scip-query reindex` | Can the repository index be refreshed, and which language shards succeeded? | index generation, shard statuses, reuse diagnostics, and failures | `complete` |
|
|
13
|
-
| `scip-query augment-sources` | Can source files omitted by upstream indexers be added to the index? | added document counts and augmentation status | `complete` |
|
|
14
|
-
| `scip-query augment-vue` | Can Vue SFC references be compiler-resolved and added to the index? | Vue augmentation counts, project, and diagnostics | `complete` |
|
|
15
|
-
| `scip-query stats` | How large and fresh is the current index? | document, symbol, definition, reference, size, and build-time totals | `complete` |
|
|
16
|
-
| `scip-query files <pattern>` | Which indexed files match this text pattern? | matching file paths | `complete` |
|
|
17
|
-
| `scip-query methods <className>` | Which methods belong to this class? | method names and line ranges | `complete` |
|
|
18
|
-
| `scip-query refs <symbol>` | Which files reference this symbol?; Is this symbol used anywhere, or only defined? | referencing file paths; reference line numbers grouped by file | `bounded` |
|
|
19
|
-
| `scip-query trace <symbol>` | Where is this symbol defined, and everywhere is it referenced? | definition sites with source and signature; referencing files with line numbers | `bounded` |
|
|
20
|
-
| `scip-query deps <file>` | Which internal files does this file depend on? | dependency file paths | `complete` |
|
|
21
|
-
| `scip-query rdeps <file>` | Which internal files depend on this file? | reverse-dependency file paths | `complete` |
|
|
22
|
-
| `scip-query system <module>` | What is in this module?; What does this module depend on, and what depends on it? | module file paths; exported symbols with line ranges; internal dependencies; reverse dependencies | `complete` |
|
|
23
|
-
| `scip-query surface <module>` | Which exported symbols do external consumers actually use? | consumer paths and consumed symbol identities | `complete` |
|
|
24
|
-
| `scip-query dead [scope]` | Which symbols have no repository use or only file-internal use? | symbol identities, ranges, liveness classes, and evidence | `bounded` |
|
|
25
|
-
| `scip-query hotspots` | Which symbols are the largest reference choke points? | ranked symbol identities with reference and file counts | `bounded` |
|
|
26
|
-
| `scip-query imports <file>` | Which symbols does this file import? | imported symbol identities and source files | `bounded` |
|
|
27
|
-
| `scip-query imported-by <symbol>` | Which files import this symbol? | importing file paths | `complete` |
|
|
28
|
-
| `scip-query unused-imports <file>` | Which imports in this file are unused? | import symbol identities and source ranges | `bounded` |
|
|
29
|
-
| `scip-query outline <file>` | What symbols and nesting exist in this file? | symbol names, nesting, and line ranges | `complete` |
|
|
30
|
-
| `scip-query members <symbol>` | Which members or nested symbols belong to this symbol? | child symbol identities, kinds, and ranges | `complete` |
|
|
31
|
-
| `scip-query fan-in [symbol]` | How many files reference this symbol, or which symbols have highest fan-in? | exact symbols with referencing-file counts | `bounded` |
|
|
32
|
-
| `scip-query fan-out [file]` | How many external symbols does this file use, or which files have highest fan-out? | files with external-symbol counts | `bounded` |
|
|
33
|
-
| `scip-query coupling [file1] [file2]` | How strongly are these files coupled, or which pairs are most coupled? | file pairs with coupling evidence and scores | `bounded` |
|
|
34
|
-
| `scip-query cycles` | Which file dependency cycles exist? | dependency-cycle file chains | `bounded` |
|
|
35
|
-
| `scip-query architecture` | Does the repository obey its declared architecture boundaries? | boundary coverage and dependency-rule violations | `complete` |
|
|
36
|
-
| `scip-query bottlenecks` | Which files are high-connectivity coupling hubs? | ranked files with fan-in and fan-out counts | `bounded` |
|
|
37
|
-
| `scip-query isolated` | Which symbols are disconnected from the repository reference graph? | isolated symbol identities and files | `bounded` |
|
|
38
|
-
| `scip-query by-kind <kind>` | Which symbols have this SCIP kind? | symbol identities, kinds, files, and ranges | `bounded` |
|
|
39
|
-
| `scip-query kind-counts` | How many indexed symbols exist for each kind? | symbol-kind counts | `complete` |
|
|
40
|
-
| `scip-query deep-chains` | Which dependency chains are deepest and riskiest? | ranked component chains with depth, risk, and recommendation | `bounded` |
|
|
41
|
-
| `scip-query hierarchy <symbol>` | What lexical ownership chain contains this symbol? | ancestor symbol identities and depths | `complete` |
|
|
42
|
-
| `scip-query call-graph <symbol>` | Who calls this symbol and what does it call? | caller and callee symbol identities with files | `bounded` |
|
|
43
|
-
| `scip-query similar [symbol] [other]` | Which callable resembles this one, or how similar are these two? | symbol pairs, similarity scores, and shared evidence | `bounded` |
|
|
44
|
-
| `scip-query similar-files [file]` | Which files have similar callable structure? | file pairs with similarity scores and shared symbols | `bounded` |
|
|
45
|
-
| `scip-query react-component-duplicates [file]` | Which React components appear to duplicate one another? | component pairs with structural similarity evidence | `bounded` |
|
|
46
|
-
| `scip-query react-hook-candidates [file]` | Which repeated React logic could become a custom hook? | component groups and shared hook-shaped behavior | `bounded` |
|
|
47
|
-
| `scip-query react-large-component-pressure [file]` | Which React components have evidence of being too large or overloaded? | component identities with size and responsibility pressure | `bounded` |
|
|
48
|
-
| `scip-query vue-component-duplicates [file]` | Which Vue components appear to duplicate one another? | component pairs with structural similarity evidence | `bounded` |
|
|
49
|
-
| `scip-query vue-composable-candidates [file]` | Which repeated Vue logic could become a composable? | component groups and shared composable-shaped behavior | `bounded` |
|
|
50
|
-
| `scip-query vue-large-view-pressure [file]` | Which Vue views have evidence of being too large or overloaded? | view identities with size and responsibility pressure | `bounded` |
|
|
51
|
-
| `scip-query similar-chains` | Which transitive chains of similar symbols suggest repeated designs? | similarity-connected symbol chains and scores | `bounded` |
|
|
52
|
-
| `scip-query extract-candidates` | Which cohesive code regions are strong extraction candidates? | symbol identities with cohesion, reuse, and extraction evidence | `bounded` |
|
|
53
|
-
| `scip-query locality-candidates [symbol-or-file]` | Which definitions live far from most of their consumers? | symbols, current homes, consumer locality, and suggested homes | `bounded` |
|
|
54
|
-
| `scip-query affected <symbol>` | Which downstream symbols could break if this symbol changes? | affected symbol identities, files, and traversal depths | `bounded` |
|
|
55
|
-
| `scip-query change-surface <file>` | What public surface and consumers make this file risky to change? | defined symbols, external consumer counts, and risk levels | `bounded` |
|
|
56
|
-
| `scip-query cleanup-plan` | What code can be deleted safely, and in what dependency order? | ordered cleanup batches, evidence, and optional verification outcomes | `bounded` |
|
|
57
|
-
| `scip-query cleanup-apply` | Can a compiler-verified cleanup batch be applied to this working tree? | applied files, deletions, verification, and refusal reasons | `bounded` |
|
|
58
|
-
| `scip-query co-change [file]` | Which files repeatedly change together without a declared dependency? | file pairs, co-change counts, confidence, and history context | `bounded` |
|
|
59
|
-
| `scip-query recent-duplicates` | Did recent code reimplement established code? | recent and established symbol pairs with similarity evidence | `bounded` |
|
|
60
|
-
| `scip-query doc-drift [doc]` | Which documentation may be stale relative to changing code? | document paths, coupled code subjects, and history evidence | `bounded` |
|
|
61
|
-
| `scip-query unused-params` | Which trailing parameters are never read by their bodies? | candidate parameters with callable and file identities | `bounded` |
|
|
62
|
-
| `scip-query diff-gate` | Does my current diff introduce something this repo blocks on?; What must I fix or explicitly accept before reporting the work done? | blocking findings with check id, message, and remediation; advisory findings; root-cause groups; changed file and symbol counts; process exit status (1 when blocking findings exist) | `bounded` |
|
|
63
|
-
| `scip-query incomplete-migration` | Did this diff leave a helper extraction only partly migrated? | new helpers and similar unmigrated call sites | `bounded` |
|
|
64
|
-
| `scip-query tla <operation> [spec]` | Does this TLA+ model and code mapping agree, or can the requested model artifact be generated? | checker status, conformance findings, trace coverage, or generated artifact paths | `bounded` |
|
|
65
|
-
| `scip-query plan-context <target>` | What must I know before editing this target?; Who consumes it, and what breaks if I change it?; Has this target historically changed together with anything else? | definitions and references; callers and callees; dataflow producers and consumers; backward and forward slices; affected symbols; change-surface risk; dependencies and reverse dependencies; module files and exports; external surface use; complexity; churn; co-change partners; active suppressions | `bounded` |
|
|
66
|
-
| `scip-query diff-impact` | Which symbols changed in this diff and which downstream consumers are affected? | changed symbols, downstream consumer identities, and impact paths | `bounded` |
|
|
67
|
-
| `scip-query drift [module]` | Where has a module or abstraction drifted across parallel implementations? | drifted symbol families, files, and evidence | `bounded` |
|
|
68
|
-
| `scip-query wrapper-candidates` | Which callables are unnecessary forwarding wrappers? | wrapper identities, targets, and forwarding evidence | `bounded` |
|
|
69
|
-
| `scip-query passthrough-candidates` | Which parameters are passed through layers without local use? | parameter paths across call chains | `bounded` |
|
|
70
|
-
| `scip-query stale-abstractions` | Which abstractions no longer earn their indirection? | abstraction identities with usage, change, and replacement evidence | `bounded` |
|
|
71
|
-
| `scip-query complexity-hotspots` | Which symbols combine high complexity with high change pressure? | ranked symbols with complexity and churn evidence | `bounded` |
|
|
72
|
-
| `scip-query self-audit` | How accurate are the fast evidence paths on a sample? | sample coverage, agreement scores, and disagreements | `sampled` |
|
|
73
|
-
| `scip-query health` | What are the highest-priority verified health problems in this codebase? | health score, findings, priorities, baselines, and coverage notes | `bounded` |
|
|
74
|
-
| `scip-query bench` | How fast are indexing and selected commands under this benchmark matrix? | timings, command outcomes, environment, and optional profiles | `sampled` |
|
|
75
|
-
| `scip-query work-audit <profile>` | Which repeated computations in this profile waste the most measured time? | ranked repeated-work groups, counts, and avoidable duration | `bounded` |
|
|
76
|
-
| `scip-query convergence <symbol1> <symbol2>` | How should these two similar symbols converge? | deprecated alias result for a two-symbol similarity plan | `bounded` |
|
|
77
|
-
| `scip-query code <symbol>` | What is the compiler-resolved definition source for this symbol? | definition identity, source, and line range | `complete` |
|
|
78
|
-
| `scip-query complexity <symbol>` | How structurally complex and connected is this symbol? | LOC, branch, complexity, callee, fan-in, and fan-out counts | `bounded` |
|
|
79
|
-
| `scip-query dataflow <symbol>` | What defines, uses, produces, and consumes this symbol? | definition sites, usage sites, producer symbols, and consumer symbols | `bounded` |
|
|
80
|
-
| `scip-query slice <symbol>` | What transitively affects this symbol, or what does it affect? | connected symbols with relationship and depth | `bounded` |
|
|
81
|
-
| `scip-query install-skills` | Which scip-query skills were installed, updated, skipped, or conflicted? | skill target paths and install outcomes | `complete` |
|
|
82
|
-
| `scip-query setup-hooks` | Were project-local agent hooks installed or removed safely? | hook config targets, changes, skips, and warnings | `complete` |
|
|
83
|
-
| `scip-query check-deps` | Which scip-query and language-indexer dependencies are runnable? | dependency readiness statuses and remediation | `complete` |
|
|
84
|
-
| `scip-query capabilities` | Which evidence and verification capabilities are available here? | capability matrix with availability and reasons | `complete` |
|
|
85
|
-
| `scip-query capability-matrix` | Which evidence and verification capabilities are available here? | deprecated alias of the capability matrix | `complete` |
|
|
86
|
-
| `scip-query redundant-reexports` | Which re-exports add no useful API boundary? | re-export sites, original definitions, and consumer evidence | `bounded` |
|
|
87
|
-
| `scip-query duplicate-bodies` | Which callable bodies are exact duplicates? | callable groups with exact normalized-body identity | `bounded` |
|
|
88
|
-
| `scip-query twin-drift` | Which same-concept twin implementations have drifted? | twin symbol pairs, history, and divergence evidence | `bounded` |
|
|
89
|
-
| `scip-query twin-ab <symbolA> <symbolB>` | How do these two twin implementations differ in structure and behavior? | side-by-side symbol evidence and divergence classification | `complete` |
|
|
90
|
-
| `scip-query not-implemented` | Which callables are placeholders rather than real implementations? | callable identities and placeholder evidence | `bounded` |
|
|
91
|
-
| `scip-query decorative-checkers` | Which validation checks cannot meaningfully fail? | checker identities, call sites, and decorative behavior evidence | `bounded` |
|
|
92
|
-
| `scip-query test-quality` | Which tests have weak assertions or poor production-code reach? | test identities with assertion and reachability evidence | `bounded` |
|
|
93
|
-
| `scip-query similar-signatures` | Which callables have suspiciously similar signatures? | callable pairs with signature similarity evidence | `bounded` |
|
|
94
|
-
| `scip-query init` | Can a starter scip-query configuration be created for this project? | configuration path and creation outcome | `complete` |
|
|
95
|
-
| `scip-query config-validate` | Is this project configuration valid and internally consistent? | validation diagnostics with config paths | `complete` |
|
|
96
|
-
| `scip-query suppress <id>` | Can this accepted finding be recorded with an auditable reason? | suppression identity, path, scope, and expiry | `complete` |
|
|
97
|
-
| `scip-query effectiveness` | What handling outcomes has diff-gate observed, and what authority produced those observations? | per-check caught, fixed, suppressed, unresolved, provenance, and resolution-vs-suppression telemetry | `complete` |
|
|
98
|
-
| `scip-query doctor` | Why is scip-query unhealthy or unavailable in this project? | config, freshness, dependency, and capability diagnostics | `complete` |
|
|
99
|
-
| `scip-query setup` | Can scip-query be bootstrapped end to end in this project? | setup step outcomes, files, capabilities, smoke tests, and warnings | `complete` |
|
|
100
|
-
| `scip-query setup-agent` | Can project agent guidance and optional git enforcement be seeded? | written, unchanged, and skipped agent files or hooks | `complete` |
|
|
101
|
-
| `scip-query setup-ci` | Can a CI workflow enforce reindex and diff-gate on pull requests? | workflow path, rendered content, and write outcome | `complete` |
|
|
102
|
-
| `scip-query uninstall` | Which scip-query-owned integrations can be removed without touching user-owned files? | removed, retained, skipped, and dry-run targets | `complete` |
|
|
103
|
-
| `scip-query watch` | What is the watcher doing, or can its background service be started or stopped? | watcher/service state, generation, activity, and errors | `complete` |
|
|
104
|
-
| `scip-query status` | Is the index fresh, complete, and usable for this project? | freshness, generation, language shards, watcher, and optional capabilities | `complete` |
|
|
105
|
-
<!-- END GENERATED AGENT CONTRACT CATALOG -->
|
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
# Full command-family vocabulary
|
|
2
|
-
|
|
3
|
-
Every command the scip-query CLI exposes. Commands marked ★ have a usage scenario in `SKILL.md` — treat this table as the index, not the reasoning. The catalog itself is generated from the CLI's command descriptors, not hand-maintained prose; if a command here looks stale, regenerate rather than hand-edit.
|
|
4
|
-
|
|
5
|
-
## Index lifecycle
|
|
6
|
-
- `reindex` ★ — indexes the codebase and converts it to SQLite.
|
|
7
|
-
- `augment-sources` — adds source files skipped by upstream SCIP indexers to the documents table.
|
|
8
|
-
- `augment-vue` — adds compiler-resolved Vue SFC references to the index using Volar.
|
|
9
|
-
- `status` ★ — index status for this project (freshness, capabilities).
|
|
10
|
-
- `stats` ★ — index statistics.
|
|
11
|
-
- `watch` — watches in the foreground, or manages the per-project background refresh service.
|
|
12
|
-
|
|
13
|
-
## Lookup and reading
|
|
14
|
-
- `files <pattern>` ★ — find files matching a pattern.
|
|
15
|
-
- `methods <className>` — list methods of a class with line ranges.
|
|
16
|
-
- `refs <symbol>` ★ — find all files referencing a symbol.
|
|
17
|
-
- `trace <symbol>` ★ — a symbol's definition plus all references.
|
|
18
|
-
- `outline <file>` ★ — tree view of a file's symbols with line ranges.
|
|
19
|
-
- `members <symbol>` ★ — every child of a symbol (methods, fields, nested types).
|
|
20
|
-
- `by-kind <kind>` ★ — find symbols by SCIP kind.
|
|
21
|
-
- `kind-counts` ★ — histogram of symbol kinds in the codebase.
|
|
22
|
-
- `hierarchy <symbol>` ★ — a symbol's ancestry chain, method to class to module.
|
|
23
|
-
- `code <symbol>` ★ — read the source for a symbol, bounded to its definition range.
|
|
24
|
-
- `imports <file>` ★ — what symbols a file imports.
|
|
25
|
-
- `imported-by <symbol>` — which files import this symbol.
|
|
26
|
-
|
|
27
|
-
## Semantics and structure
|
|
28
|
-
- `dataflow <symbol>` ★ — reference-level dataflow: definitions, usages, producers, consumers.
|
|
29
|
-
- `slice <symbol>` ★ — reference-level program slice, backward or forward.
|
|
30
|
-
- `deps <file>` ★ — files this file depends on (internal).
|
|
31
|
-
- `rdeps <file>` ★ — files that depend on this file/module.
|
|
32
|
-
- `system <module>` ★ — full module map: files, symbols, deps in/out.
|
|
33
|
-
- `surface <module>` ★ — symbols consumers actually use from a module.
|
|
34
|
-
|
|
35
|
-
## Dead code, duplication, and cleanup heuristics
|
|
36
|
-
- `dead [scope]` ★ — repository-dead code, file-internal symbols, implicit-usage signals.
|
|
37
|
-
- `unused-imports <file>` — imports not referenced in the same file.
|
|
38
|
-
- `isolated` ★ — completely orphaned symbols with no references at all.
|
|
39
|
-
- `similar [symbol] [other]` ★ — heuristic function similarity from callee fingerprints.
|
|
40
|
-
- `similar-files [file]` ★ — heuristic similar-file candidates from dependency profiles.
|
|
41
|
-
- `similar-chains` — heuristic similar-chain candidates from dependency flows.
|
|
42
|
-
- `extract-candidates` — heuristic extraction candidates from isolated callee clusters.
|
|
43
|
-
- `locality-candidates [symbol-or-file]` — directory-locality/ancestry candidates from consumer ownership.
|
|
44
|
-
- `cleanup-plan` — ordered, batched deletion plan: graph-fact dead code plus cascade candidates it unlocks.
|
|
45
|
-
- `cleanup-apply` — applies a compiler-verified cleanup-plan batch to the working tree.
|
|
46
|
-
- `recent-duplicates` — directional duplicate candidates: recent code re-implementing established code.
|
|
47
|
-
- `doc-drift [doc]` — stale-doc candidates: cited code, or co-changed code that kept changing after the doc stopped.
|
|
48
|
-
- `unused-params` — speculative-generality candidates: trailing parameters no body uses (TS/JS).
|
|
49
|
-
- `drift [module]` — unused imports and declared architecture violations; pass `--architecture` for boundary context.
|
|
50
|
-
- `wrapper-candidates` — heuristic wrapper candidates called by one consumer. **Exploration only** — see precision tiers.
|
|
51
|
-
- `passthrough-candidates` — heuristic passthrough candidates that forward to one callee.
|
|
52
|
-
- `stale-abstractions` — heuristic candidates with 0-1 consumers. **Exploration only** — see precision tiers.
|
|
53
|
-
- `complexity-hotspots` — heuristic complexity hotspots from LOC × fan-in × fan-out. Strong signal, ~90% precision.
|
|
54
|
-
- `convergence <s1> <s2>` — **deprecated**, alias for `similar <s1> <s2> --plan`; prefer the latter.
|
|
55
|
-
- `redundant-reexports` — barrel re-exports nobody imports through.
|
|
56
|
-
- `duplicate-bodies` — exact duplicate small-body candidates across files.
|
|
57
|
-
- `twin-drift` — same-name (or near-name) functions across files with diverged bodies.
|
|
58
|
-
- `twin-ab <symbolA> <symbolB>` — generates a behavioral A/B vitest scaffold comparing two same-concept twins; a ready-to-fill file, not an auto-executor.
|
|
59
|
-
- `not-implemented` — reachable placeholder stubs (throw-stub, TODO+return-default, empty body) with a real production caller; an unreachable stub belongs to `dead` instead.
|
|
60
|
-
- `decorative-checkers` — validate*/verify*/check*/assert*/is*/has* callables with no reachable failure exit.
|
|
61
|
-
- `test-quality` — assertion-free test bodies, a skipped-test ledger with git-blame age, mock-echo tests.
|
|
62
|
-
- `similar-signatures` — functions with near-identical type signatures.
|
|
63
|
-
|
|
64
|
-
## React / Vue heuristics
|
|
65
|
-
- `react-component-duplicates [file]` — duplicated JSX structure candidates (tags, props, events, bindings).
|
|
66
|
-
- `react-hook-candidates [file]` — hook-extraction candidates from shared state/effects/requests/handlers.
|
|
67
|
-
- `react-large-component-pressure [file]` — large-component-pressure candidates from lines, JSX structure, hooks.
|
|
68
|
-
- `vue-component-duplicates [file]` — duplicated template structure candidates (tags, bindings, slots, directives).
|
|
69
|
-
- `vue-composable-candidates [file]` — composable-extraction candidates from shared state/effects/requests/bindings.
|
|
70
|
-
- `vue-large-view-pressure [file]` — large-view-pressure candidates from template/script/style/external line counts.
|
|
71
|
-
|
|
72
|
-
## Coupling, architecture, impact
|
|
73
|
-
- `hotspots` — most-referenced symbols in the codebase (choke points).
|
|
74
|
-
- `fan-in [symbol]` ★ — files referencing an exact symbol; top JSON rows include exact symbol identity.
|
|
75
|
-
- `fan-out [file]` ★ — external symbols a file uses, or top fan-out codebase-wide.
|
|
76
|
-
- `coupling [file1] [file2]` ★ — coupling between two files, or top coupled pairs codebase-wide.
|
|
77
|
-
- `cycles` ★ — circular dependency chains between files.
|
|
78
|
-
- `architecture` ★ — evaluates project-owned architectural boundaries and dependency rules.
|
|
79
|
-
- `bottlenecks` ★ — high fan-in AND high fan-out symbols/files.
|
|
80
|
-
- `deep-chains` — longest condensed dependency-component chains.
|
|
81
|
-
- `call-graph <symbol>` — incoming callers and outgoing callees for a symbol.
|
|
82
|
-
- `affected <symbol>` — transitive closure of symbols that could break if this symbol changes.
|
|
83
|
-
- `change-surface <file>` — pre-change briefing: exports, consumers, blast-radius risk.
|
|
84
|
-
- `co-change [file]` ★ — files that change together in git history without a dependency edge.
|
|
85
|
-
|
|
86
|
-
## Diff, migration, formal modeling
|
|
87
|
-
- `diff-gate` — gates the current diff; see `detector-precision-and-diffgate.md` for its ten checks.
|
|
88
|
-
- `incomplete-migration` — partially-completed extraction candidates left un-migrated at similar sites.
|
|
89
|
-
- `diff-impact` — changed symbols and downstream consumers from the current git diff.
|
|
90
|
-
- `tla <operation> [spec]` — TLA+ workflow: verify a model/mapping contract, scaffold a draft model, generate a trace recorder, or check a recorded trace against the next-state relation.
|
|
91
|
-
- `plan-context <target>` — pre-edit planning context for a symbol, file, or module.
|
|
92
|
-
|
|
93
|
-
## Health, complexity, performance
|
|
94
|
-
- `self-audit` — scores cheap evidence paths against the best available semantic/source oracle on sampled symbols.
|
|
95
|
-
- `health` — composite codebase health report with a prioritized action list.
|
|
96
|
-
- `complexity <symbol>` — per-symbol complexity: branches, cyclomatic estimate, fan-in/out, callees.
|
|
97
|
-
- `bench` — benchmarks indexing and command runtimes for the repository.
|
|
98
|
-
- `work-audit <profile>` — ranks exact repeated computations in a profiling JSONL file by measured avoidable time.
|
|
99
|
-
|
|
100
|
-
## Setup, config, governance
|
|
101
|
-
- `install-skills` — installs the nine bundled router, workflow, and shared-reference skills into Claude Code, Codex, and shared agent roots.
|
|
102
|
-
- `setup-hooks` — installs or refreshes project-local Codex and Claude Code lifecycle hooks.
|
|
103
|
-
- `check-deps` — checks whether scip-query and detected language indexers are actually runnable.
|
|
104
|
-
- `capabilities` — reports which evidence/verification capabilities are available in this project.
|
|
105
|
-
- `capability-matrix` — **deprecated**, alias for `capabilities --matrix`; prefer the latter.
|
|
106
|
-
- `init` ★ — creates `.scipquery.json` for this project.
|
|
107
|
-
- `config-validate` ★ — validates `.scipquery.json`, including suppressions and declared coupling groups.
|
|
108
|
-
- `suppress <id>` ★ — records an accepted finding under `.scipquery/suppressions/` with a required reason.
|
|
109
|
-
- `effectiveness` ★ — per-check effectiveness from the committed outcome ledger.
|
|
110
|
-
- `doctor` — diagnoses config, index freshness, dependency readiness, project capabilities.
|
|
111
|
-
- `setup` — bootstraps a project: automatic indexing, agent skills, index refresh, capability check, health report.
|
|
112
|
-
- `setup-agent` — seeds an AGENTS.md/CLAUDE.md block pointing agents at the scip-query skills and diff gate, plus an optional git pre-commit backstop.
|
|
113
|
-
- `setup-ci` — writes a GitHub Actions workflow running `reindex` and `diff-gate` on pull requests.
|
|
114
|
-
- `uninstall` — removes scip-query-owned skill links, project hooks, and managed agent setup blocks.
|
|
115
|
-
|
|
116
|
-
## General rule on coverage
|
|
117
|
-
|
|
118
|
-
Each command's returned set is either complete (exhaustive) or bounded (capped/sampled). Where that isn't stated explicitly for a given command, assume bounded and say so before treating the result as proof of completeness — a bounded result narrows, it does not exonerate.
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
# Detector precision, diff-gate, and the event ledger
|
|
2
|
-
|
|
3
|
-
## Weight findings by measured precision, not volume
|
|
4
|
-
|
|
5
|
-
Detector precision was calibrated against two external production repos on 2026-07-01 (`docs/validation/2026-07-01-external-calibration-*.md`). Use that calibration to decide how much a finding is worth acting on alone versus needing corroboration.
|
|
6
|
-
|
|
7
|
-
**Strong signal — act on directly:**
|
|
8
|
-
- `complexity-hotspots` (~90% precision)
|
|
9
|
-
- `recent-duplicates` (~75% precision)
|
|
10
|
-
- Graph facts from `refs`, `trace`, `deps`
|
|
11
|
-
- Compiler-verified `cleanup-plan --verify` output
|
|
12
|
-
|
|
13
|
-
**Good with review — read the cited code before acting:**
|
|
14
|
-
- `duplicate-bodies`, `similar`, `co-change`, `doc-drift`, `twin-drift` (post-retune defaults)
|
|
15
|
-
|
|
16
|
-
**Exploration only — near-zero precision on codebases with intentional layering or ambient types:**
|
|
17
|
-
- `wrapper-candidates`, `stale-abstractions`, `drift --patterns`
|
|
18
|
-
|
|
19
|
-
Never file a finding from an exploration-only detector without reading the cited code first. `convergence <s1> <s2>` and `capability-matrix` are deprecated aliases (`similar <s1> <s2> --plan` and `capabilities --matrix` respectively) — prefer the modern form.
|
|
20
|
-
|
|
21
|
-
## diff-gate
|
|
22
|
-
|
|
23
|
-
`diff-gate` gates the current diff for architecture regressions plus echo, migration, coordination, doc-drift, unused-param, and new-dead candidates, and exits 1 on blocking findings. It recognizes ten checks, any of which can be skipped individually with `--skip <check>`:
|
|
24
|
-
|
|
25
|
-
| Check | Flags |
|
|
26
|
-
|---|---|
|
|
27
|
-
| `echo` | recent-duplicate-style echoes in the diff |
|
|
28
|
-
| `incomplete-migration` | partially-completed extractions left in the diff |
|
|
29
|
-
| `co-change-partner` | a missing historically-paired file |
|
|
30
|
-
| `twin-partner` | an unedited same-name twin — **advisory**, never blocks |
|
|
31
|
-
| `coverage-contract` | a configured `coverageContracts` enumeration drifted from ground truth (see `scip-setup`) |
|
|
32
|
-
| `architecture` | a declared boundary violation absent from the shared baseline |
|
|
33
|
-
| `doc-reference` | an uncited or stale doc claim |
|
|
34
|
-
| `unused-params` | trailing parameters no body uses |
|
|
35
|
-
| `new-dead` | dead code introduced by this diff |
|
|
36
|
-
| `baseline` | only active with `--baseline`; compares all non-architecture health identities against `.scipquery-baseline.json` — distinct from `health --baseline` |
|
|
37
|
-
|
|
38
|
-
The `architecture` check runs by default only when enforceable architecture rules and a baseline exist, and it reads that baseline file directly without running the full health suite.
|
|
39
|
-
|
|
40
|
-
**Reading grouped output:** findings print grouped under a `Root-cause groups (N):` header before the flat list. A root-cause group's remediation usually clears every finding under it. The same remediation may repeat afterward in the flat list below the groups — that repetition is expected, not a separate issue.
|
|
41
|
-
|
|
42
|
-
**actionTier** on baseline-backed findings tells you how directly to act:
|
|
43
|
-
- `direct` — act on this finding alone.
|
|
44
|
-
- `signal` — corroborating evidence; read before acting.
|
|
45
|
-
- `support` — context only.
|
|
46
|
-
|
|
47
|
-
Findings marked `(advisory)` never block; treat them as context, not obligations. Fix every finding, or record a specific acceptance reason for each one left unresolved — never report success while a finding is unexplained.
|
|
48
|
-
|
|
49
|
-
## Event ledger
|
|
50
|
-
|
|
51
|
-
Every completed diff-gate run — including JSON and hook mode — writes each caught/resolved/suppressed transition to its own committed `.scipquery/events/*.json` file. Independent branches should add independent event files rather than editing a shared log, and commit them with the corresponding change. Legacy `.scipquery/ledger/events.jsonl` records remain readable and migrate automatically on the next gate write.
|
|
52
|
-
|
|
53
|
-
## Effectiveness
|
|
54
|
-
|
|
55
|
-
`scip-query effectiveness [--since 30d] [--check <check>]` reports, per check: findings caught, comparison-verified fixed, suppressed, still open, "moved" (rename noise), legacy/non-comparable "unverified" resolutions, precision (verified-fixed ÷ (verified-fixed + suppressed)), and median days-to-fix.
|
|
56
|
-
|
|
57
|
-
A pre-commit rerun of diff-gate reuses the same comparison base directly. After HEAD advances, a clean diff-gate run automatically replays the stored comparison commit. A dirty or unavailable replay leaves the effectiveness finding pending instead of manufacturing a fix result. Standalone detector commands (outside diff-gate) are not outcome-tracked in this ledger until they expose complete-scan evidence.
|
|
58
|
-
|
|
59
|
-
When `diff-gate --hook` reports that a check is rarely acted on in this repo: tune that check's config, suppress the standing findings with reasons, or consciously accept the noise. Do not let unresolved findings accumulate as wallpaper.
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
# Subagent evidence boundary and dead-code resolution status
|
|
2
|
-
|
|
3
|
-
## Subagent evidence boundary
|
|
4
|
-
|
|
5
|
-
When a subagent is used to gather scip-query evidence, its prompt must include these rules verbatim:
|
|
6
|
-
- Use scip-query for compiler-resolved identity and completeness claims.
|
|
7
|
-
- Native search/file reads are valid for literal source content and local logic, including an unambiguous helper visible in the same file.
|
|
8
|
-
- Cite the evidence source appropriate to each claim.
|
|
9
|
-
- State explicitly when neither source establishes a claim completely.
|
|
10
|
-
|
|
11
|
-
The trigger for requiring scip-query evidence is **resolution or completeness, not whether execution crosses a call boundary.** Asserting what `handler(x)` does without resolving what `handler` is constitutes a resolution claim and requires scip-query evidence. Reading a helper defined two lines down in the same file is not a resolution claim and does not require it.
|
|
12
|
-
|
|
13
|
-
Reject a subagent's finding if it sources a resolution or completeness claim from text search alone. Do not reject a literal-content claim merely for citing a file read as its evidence.
|
|
14
|
-
|
|
15
|
-
## Dead-code reference-counting status (as of the 2026-07-02 remediation, `docs/plans/2026-07-02-followups.md` items 1-3)
|
|
16
|
-
|
|
17
|
-
The shared reference-counting layer used by `dead`, `isolated`, `new-dead`, and `stale-abstractions` correctly resolves as consumers:
|
|
18
|
-
- import type-only consumers, including tsconfig paths-aliased specifiers;
|
|
19
|
-
- pnpm/npm/yarn workspace cross-package consumers, including unbuilt `dist/` exports-map consumers.
|
|
20
|
-
|
|
21
|
-
Vue `<script setup>` composable consumers were already correctly resolved before this remediation — verified live, no code change needed.
|
|
22
|
-
|
|
23
|
-
**One residual gap remains:** a symbol with an ambiguous leaf name (a same-named definition exists elsewhere in the project) reached only through a re-exporting barrel file in a workspace package can still be misattributed as dead. For that case, `new-dead` labels the finding `unconfirmed (cross-package ambiguous-name resolution gap)` with evidence `heuristic` and lowered confidence, instead of asserting dead — treat it as "verify manually," not fact.
|
|
24
|
-
|
|
25
|
-
Outside that one residual gap, dead-code findings in this class are normal graph-fact dead claims: confirm with `refs` when in doubt, same as any other finding.
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: scip-audit
|
|
3
|
-
description: Use to find and confirm problems WITHOUT editing: is this implementation real (decorative checkers, not-implemented, lying metrics), is a status word derived or merely asserted, are cleanup findings worth acting on, has a same-name twin silently drifted, have the living docs (AGENTS.md, standards, command docs) drifted from the code, and are there hidden policies, scattered concepts, accidental variation or weak boundaries — including React/Vue component and directory-locality pressure. Proactive: needs no reported symptom. Hand confirmed findings to scip-improve. Distinct from `complexity-cleanup` and `principal-maintainability-review`: those reason about a specific symbol's complexity or a reviewer's judgement; this one runs detectors across the repo and ranks confirmed findings by evidence.
|
|
4
|
-
commands:
|
|
5
|
-
- template: "scip-query health"
|
|
6
|
-
when: "Orient to the repository-wide finding inventory before confirming candidates."
|
|
7
|
-
- template: "scip-query decorative-checkers --full"
|
|
8
|
-
when: "Audit whether validation-shaped code has a reachable failure exit."
|
|
9
|
-
- template: "scip-query doc-drift --full"
|
|
10
|
-
when: "Find current-guidance documents whose cited or coupled code moved."
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
# scip-audit
|
|
14
|
-
|
|
15
|
-
Read-only evidence audits. Every audit here classifies something —
|
|
16
|
-
real-vs-decorative, derived-vs-asserted, confirmed-vs-noise, drifted-vs-stable
|
|
17
|
-
— and ends in a ranked, evidenced verdict. None of them edit code or docs.
|
|
18
|
-
When a finding needs a fix, hand it to `scip-improve`; do not apply it here.
|
|
19
|
-
|
|
20
|
-
Load shared mechanics (evidence freshness, lookup, the full command
|
|
21
|
-
|
|
22
|
-
<!-- BEGIN GENERATED SKILL COMMANDS -->
|
|
23
|
-
## Commands for this skill
|
|
24
|
-
|
|
25
|
-
| Command | Purpose | Returns | Coverage | When |
|
|
26
|
-
| --- | --- | --- | --- | --- |
|
|
27
|
-
| `scip-query health` | Composite codebase health report with prioritized action list | health score, findings, priorities, baselines, and coverage notes | `bounded` | Orient to the repository-wide finding inventory before confirming candidates. |
|
|
28
|
-
| `scip-query decorative-checkers --full` | Decorative checker candidates: validate*/verify*/check*/assert*/is*/has* callables with no reachable failure exit anywhere in their body | checker identities, call sites, and decorative behavior evidence | `bounded` | Audit whether validation-shaped code has a reachable failure exit. |
|
|
29
|
-
| `scip-query doc-drift --full` | Stale-doc candidates: code the doc references or co-changed with kept changing after the doc stopped | document paths, coupled code subjects, and history evidence | `bounded` | Find current-guidance documents whose cited or coupled code moved. |
|
|
30
|
-
|
|
31
|
-
Use this shortlist first. Open [`../_shared/SKILL.md`](../_shared/SKILL.md) only when it is insufficient.
|
|
32
|
-
<!-- END GENERATED SKILL COMMANDS -->
|
|
33
|
-
catalogue) from `../_shared/SKILL.md` — each reference file below carries its
|
|
34
|
-
own shortlist first and only defers to `_shared` when that shortlist runs
|
|
35
|
-
out. Apply `_shared`'s freshness gate once before the first graph fact; let
|
|
36
|
-
an active watcher refresh after source changes, and use manual reindex only
|
|
37
|
-
as its documented fallback.
|
|
38
|
-
|
|
39
|
-
## Triage
|
|
40
|
-
|
|
41
|
-
| Situation | Open | Core commands |
|
|
42
|
-
|---|---|---|
|
|
43
|
-
| A checker/verifier/metric/feature might be decorative, half-built, or a fallback might be masking a dead primary path | [`references/integrity.md`](references/integrity.md) | `decorative-checkers`, `not-implemented`, `twin-ab`, `test-quality`, `refs`, `code`, `call-graph` |
|
|
44
|
-
| A status word ("available", "verified", "safe", "PASS", "complete") needs classifying as derived, hedged, or asserted | [`references/claims.md`](references/claims.md) | `files`, `refs`, `code`, `trace`, `capabilities` |
|
|
45
|
-
| Turning a health report, de-bloat report, AI-residue sweep, or raw detector output into a confirmed cleanup queue | [`references/cleanup.md`](references/cleanup.md) | `health`, `cleanup-plan`, `duplicate-bodies`, `recent-duplicates`, `incomplete-migration`, `doc-drift`, `unused-params`, `passthrough-candidates`, `dead`, `isolated`, `cycles`, `co-change` |
|
|
46
|
-
| Same-name or near-name functions across files whose bodies have silently diverged | [`references/twin-drift.md`](references/twin-drift.md) | `twin-drift`, `duplicate-bodies`, `code`, `refs`, `diff-gate` |
|
|
47
|
-
| Hidden policy, scattered concepts, accidental variation, weak boundaries — general structural/maintainability pressure | [`references/maintainability.md`](references/maintainability.md) | `stats`, `system`, `surface`, `change-surface`, `affected`, `drift`, `health`, `similar*`, `extract-candidates`, `wrapper-candidates`, `stale-abstractions`, `cycles` |
|
|
48
|
-
| React or Vue component/hook/composable duplication, or large-component/view pressure | [`references/frontend.md`](references/frontend.md) | `react-component-duplicates`, `react-hook-candidates`, `react-large-component-pressure`, `vue-component-duplicates`, `vue-composable-candidates`, `vue-large-view-pressure`, `augment-vue`, `recent-duplicates`, `similar`, `health` |
|
|
49
|
-
| Folder structure, ownership boundaries, locality config, a messy or AI-generated layout, safe move slices | [`references/directory.md`](references/directory.md) | `system`, `locality-candidates`, `similar-files`, `cycles`, `architecture`, `drift`, `co-change`, `config-validate`, `diff-gate`, `health` |
|
|
50
|
-
|
|
51
|
-
Rows are not exclusive. A "does this actually work" investigation that turns
|
|
52
|
-
up structural mess routes that mess to `references/maintainability.md`
|
|
53
|
-
instead of forcing it into the integrity verdict — real-but-messy is a
|
|
54
|
-
different failure mode than fake-but-green. A twin-drift finding that
|
|
55
|
-
surfaces on your own diff (via `diff-gate`) is a live instance of that defect
|
|
56
|
-
class, not just a gate finding — open `references/twin-drift.md`.
|
|
57
|
-
|
|
58
|
-
## Cross-cutting rules
|
|
59
|
-
|
|
60
|
-
- **Classify, don't just list.** Every audit in this skill assigns each item
|
|
61
|
-
in scope to exactly one label from its taxonomy (real/decorative,
|
|
62
|
-
derived/hedged/asserted, confirmed/intentional/false-positive/blocked,
|
|
63
|
-
intentional-variation/drifted-policy/one-sided-fix, mature/emerging/
|
|
64
|
-
accidental). A count that doesn't sum to the scope size is an unfinished
|
|
65
|
-
audit.
|
|
66
|
-
- **Ground every claim in evidence**, not opinion or a variable's name — a
|
|
67
|
-
variable called `verified` that nothing ever checked is still asserted.
|
|
68
|
-
Name concrete files/symbols before naming a smell.
|
|
69
|
-
- **Preserve essential variation.** Difference that reflects real behavior,
|
|
70
|
-
domain facts, runtime constraints, or external contracts is not a defect;
|
|
71
|
-
consolidating it away is a false abstraction. Any merge/consolidate
|
|
72
|
-
recommendation must carry the single trait that makes the cited sites one
|
|
73
|
-
concept — if that trait can't be stated, they aren't one concept.
|
|
74
|
-
- **A clean run is itself a claim.** A suspect scope that produces zero
|
|
75
|
-
findings needs a stated reason the suspicion was wrong, not silence.
|
|
76
|
-
- **This skill never edits.** Findings, evidence, and a fix direction are the
|
|
77
|
-
deliverable; route action to `scip-improve`.
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
# Claims: derived, hedged, or asserted?
|
|
2
|
-
|
|
3
|
-
Classify whether an "available", "verified", "safe", "PASS", or "complete"
|
|
4
|
-
status word is derived from a real check, hedged as a candidate, or merely
|
|
5
|
-
asserted without being probed.
|
|
6
|
-
|
|
7
|
-
Command shortlist: `files <pattern>` (inventory), `refs <symbol>` /
|
|
8
|
-
`code <symbol>` / `trace <symbol>` (classify), `capabilities --matrix --json`
|
|
9
|
-
(spot-check against a known-good derived surface).
|
|
10
|
-
|
|
11
|
-
## Taxonomy
|
|
12
|
-
|
|
13
|
-
- **Derived** — the producer computes the value from a real probe, scan, or
|
|
14
|
-
computation (a compiler run, a runtime capability probe, a graph
|
|
15
|
-
traversal).
|
|
16
|
-
- **Hedged** — the code or its label already says it is a candidate,
|
|
17
|
-
heuristic, or unverified. Hedged is not a finding — the label already
|
|
18
|
-
discloses the uncertainty.
|
|
19
|
-
- **Asserted** — the value is a constant, a hardcoded table entry, or a
|
|
20
|
-
string literal presented with the same confidence as a derived value but
|
|
21
|
-
backed by nothing the code actually checked at that call site.
|
|
22
|
-
|
|
23
|
-
Asserted status words that are agent-facing and trust-bearing — an agent
|
|
24
|
-
would route a decision ("use this evidence", "skip this check", "delete
|
|
25
|
-
this") based on the word — are the highest-severity class this audit exists
|
|
26
|
-
to find.
|
|
27
|
-
|
|
28
|
-
Ground every claim in the producing function's source, not its label or
|
|
29
|
-
variable name alone: a variable named `verified` that is never checked
|
|
30
|
-
against a real result is still asserted. Every status word in scope gets
|
|
31
|
-
exactly one of the three labels.
|
|
32
|
-
|
|
33
|
-
## Severity rubric
|
|
34
|
-
|
|
35
|
-
Asserted + agent-facing + trust-bearing = high. Asserted + internal-only or
|
|
36
|
-
low-consequence = low. Hedged is not a finding.
|
|
37
|
-
|
|
38
|
-
A status that used to be asserted and now calls a real probe is fixed — say
|
|
39
|
-
so and move on, do not re-report it.
|
|
40
|
-
|
|
41
|
-
## Step 1 — Inventory
|
|
42
|
-
|
|
43
|
-
Grep the target scope (a file, module, or command family) for user-visible
|
|
44
|
-
or JSON-facing status words (`available`, `unavailable`, `partial`,
|
|
45
|
-
`verified`, `safe`, `PASS`, `FAIL`, `complete`, `derived`, `asserted`),
|
|
46
|
-
noting the file:line and the renderer or JSON field surfacing each hit. Use
|
|
47
|
-
`scip-query files <target-file-or-pattern>` to locate the renderer or
|
|
48
|
-
status-producing module for a claim.
|
|
49
|
-
|
|
50
|
-
**Complete when:** every status-bearing string or field in scope is listed
|
|
51
|
-
with its surface (human output, `--json` field, or both).
|
|
52
|
-
|
|
53
|
-
## Step 2 — Classify
|
|
54
|
-
|
|
55
|
-
For each status word's producing function, run `refs`, `code`, and `trace`,
|
|
56
|
-
read the function body, and classify it as derived (computed from a probe,
|
|
57
|
-
scan, spawn result, file check, or graph query performed at or near that
|
|
58
|
-
call site), hedged, or asserted.
|
|
59
|
-
|
|
60
|
-
**Complete when:** every producer has one of the three labels with the one
|
|
61
|
-
line of source evidence that justifies it.
|
|
62
|
-
|
|
63
|
-
Use `scip-query capabilities --matrix` as a spot-check: an
|
|
64
|
-
already-known example of a fixed derived-status surface, useful for
|
|
65
|
-
calibrating what "derived" looks like in this codebase before judging
|
|
66
|
-
ambiguous cases.
|
|
67
|
-
|
|
68
|
-
## Step 3 — File and fix
|
|
69
|
-
|
|
70
|
-
File findings as a table, not prose. Finding format:
|
|
71
|
-
|
|
72
|
-
- **Claim** — the status word and where it appears.
|
|
73
|
-
- **Producer** — file:line, function name.
|
|
74
|
-
- **Classification** — asserted.
|
|
75
|
-
- **Severity** — high or low (per the rubric above).
|
|
76
|
-
- **Fix** — probe it (name the real check to add), generate it (derive from
|
|
77
|
-
a registry/config that is itself kept honest), or soften the language
|
|
78
|
-
(hedge the label to match what is actually known).
|
|
79
|
-
|
|
80
|
-
**Complete when:** every asserted status in scope has a filed finding with a
|
|
81
|
-
fix direction, and every derived/hedged status is confirmed correct (not
|
|
82
|
-
silently asserted behind a computed-looking name).
|
|
83
|
-
|
|
84
|
-
## Report
|
|
85
|
-
|
|
86
|
-
Write the audit report under `docs/scip-query/` unless the user asked only
|
|
87
|
-
for a conversational answer. Template:
|
|
88
|
-
|
|
89
|
-
- Scope
|
|
90
|
-
- Status words inventoried: N
|
|
91
|
-
- Classified: `<d>` derived / `<h>` hedged / `<a>` asserted — must sum to N;
|
|
92
|
-
a gap is an unfinished audit
|
|
93
|
-
- Claim table: Claim, Producer, Classification, Fix
|
|
94
|
-
- "Fixed since last audit" — claims now derived that were previously
|
|
95
|
-
reported asserted
|
|
96
|
-
|
|
97
|
-
The audit is complete only when every status word in scope is classified and
|
|
98
|
-
every asserted, trust-bearing claim has a filed finding.
|