scip-query 0.19.6 → 0.19.10
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 +116 -0
- package/README.md +156 -44
- package/dist/augment-vue-worker.js +1 -1
- package/dist/chunk-26QA6FAI.js +8 -0
- package/dist/{chunk-J7VT2CRB.js → chunk-2HPVVXM5.js} +2 -2
- package/dist/chunk-2KAZEZ6M.js +2 -0
- package/dist/chunk-32LVLCLN.js +40 -0
- package/dist/{chunk-2CVXCGL4.js → chunk-3CLX5EOX.js} +2 -2
- package/dist/{chunk-5OC3HWP5.js → chunk-3G66UZBH.js} +2 -2
- package/dist/{chunk-S2GP3CU3.js → chunk-3ORVDL3H.js} +2 -2
- package/dist/chunk-46XGSFNI.js +2 -0
- package/dist/chunk-4MAK2HOY.js +6 -0
- package/dist/chunk-4TURLRL5.js +16 -0
- package/dist/chunk-4UQVNCQE.js +2 -0
- package/dist/chunk-55Q3WLZX.js +2 -0
- package/dist/{chunk-OQ2A4G2G.js → chunk-5E4WNAVD.js} +2 -2
- package/dist/{chunk-YGQN3XGZ.js → chunk-5I5G2QOX.js} +2 -2
- package/dist/chunk-6LDJQXAH.js +2 -0
- package/dist/{chunk-WXAAURU7.js → chunk-6O5TICIZ.js} +2 -2
- package/dist/{chunk-OBKDTVZ3.js → chunk-6SHPK5ZE.js} +2 -2
- package/dist/chunk-7BAVHKMJ.js +49 -0
- package/dist/chunk-7O5IKBTZ.js +16 -0
- package/dist/chunk-7PIO7NKH.js +60 -0
- package/dist/chunk-7S5E7KWT.js +2 -0
- package/dist/{chunk-GK3GRUJX.js → chunk-7SQQWSY3.js} +2 -2
- package/dist/chunk-7WPLAODU.js +5 -0
- package/dist/chunk-A73XVBCR.js +20 -0
- package/dist/chunk-AFHORGLH.js +42 -0
- package/dist/chunk-AIE7TFJW.js +9 -0
- package/dist/chunk-AQOFWNQJ.js +1 -0
- package/dist/{chunk-MGBJHRFB.js → chunk-AZJQQKDD.js} +2 -2
- package/dist/{chunk-IYAOX36F.js → chunk-B2PX5I6M.js} +2 -2
- package/dist/{chunk-EVOC5I5I.js → chunk-B7PBSLZN.js} +2 -2
- package/dist/{chunk-ZLJLE6LK.js → chunk-BBW6JFHN.js} +2 -2
- package/dist/{chunk-NBRUH7OE.js → chunk-BDCC2NPY.js} +2 -2
- package/dist/{chunk-DD5BOU5I.js → chunk-BNXCIFVY.js} +2 -2
- package/dist/{chunk-FHCTEANE.js → chunk-BPAPWKP6.js} +2 -2
- package/dist/chunk-BS2NMXQZ.js +4 -0
- package/dist/chunk-C3KV2II6.js +2 -0
- package/dist/chunk-C43RDDP4.js +20 -0
- package/dist/{chunk-QBYYWGAT.js → chunk-CJST5ETY.js} +2 -2
- package/dist/chunk-DAFAHMNB.js +42 -0
- package/dist/chunk-DHEQMPLW.js +2 -0
- package/dist/{chunk-336DC5NJ.js → chunk-DQGFVPUV.js} +2 -2
- package/dist/chunk-DQLPXMH6.js +8 -0
- package/dist/chunk-EKZTZXHZ.js +117 -0
- package/dist/{chunk-KLVJABXA.js → chunk-EN3O7VJA.js} +2 -2
- package/dist/{chunk-U5CNPPTZ.js → chunk-EW2NTSFA.js} +2 -2
- package/dist/chunk-F3Z4OUDS.js +8 -0
- package/dist/chunk-FJH2NW7J.js +66 -0
- package/dist/{chunk-3OIKRYU5.js → chunk-FKSELJQF.js} +2 -2
- package/dist/chunk-FTFP6O3L.js +11 -0
- package/dist/chunk-FYLK2DEJ.js +2 -0
- package/dist/chunk-GH74ASD6.js +11 -0
- package/dist/{chunk-NQLSSVOB.js → chunk-GMXWZP2B.js} +2 -2
- package/dist/chunk-GOUBFH5O.js +3 -0
- package/dist/{chunk-RJHCPSZ7.js → chunk-HLF2TX6R.js} +2 -2
- package/dist/{chunk-PC44K7RF.js → chunk-HX4GQPZP.js} +2 -2
- package/dist/chunk-HX7M4BDI.js +30 -0
- package/dist/chunk-HZ72SESS.js +128 -0
- package/dist/{chunk-YTUD45PU.js → chunk-IB2N4FIY.js} +2 -2
- package/dist/chunk-ILMHV3KM.js +2 -0
- package/dist/chunk-IZYYAFN5.js +2 -0
- package/dist/{chunk-A43URCQ3.js → chunk-JAYYFEQY.js} +2 -2
- package/dist/{chunk-RWRLUZ6U.js → chunk-JDOEX4E6.js} +2 -2
- package/dist/chunk-JFGGXWQF.js +947 -0
- package/dist/chunk-JN4NMBEX.js +8 -0
- package/dist/{chunk-JELJLXEE.js → chunk-JVYA47YU.js} +2 -2
- package/dist/{chunk-F42A3AKG.js → chunk-JW56N3KI.js} +2 -2
- package/dist/{chunk-FQTPPXNA.js → chunk-JZ2OXNWB.js} +2 -2
- package/dist/chunk-KFZNKUNT.js +2 -0
- package/dist/chunk-KMKTIO2G.js +8 -0
- package/dist/chunk-L5GJNV2T.js +8 -0
- package/dist/{chunk-RBFFD4V2.js → chunk-L7AW2QB5.js} +2 -2
- package/dist/chunk-L7JDSCDF.js +4 -0
- package/dist/chunk-LU47HG23.js +14 -0
- package/dist/chunk-LVY7NPF7.js +2 -0
- package/dist/chunk-LY4WC4AD.js +74 -0
- package/dist/{chunk-MLGTCX56.js → chunk-MKCDWWGV.js} +2 -2
- package/dist/chunk-MNE7YG56.js +2 -0
- package/dist/{chunk-YWB2EBNB.js → chunk-MRXBEXSY.js} +2 -2
- package/dist/chunk-MV7OWDUX.js +2 -0
- package/dist/{chunk-2GSQR6YA.js → chunk-N5W4YZMK.js} +2 -2
- package/dist/chunk-NGEXCJJW.js +11 -0
- package/dist/{chunk-CYJM7CYF.js → chunk-NIW6JDC5.js} +2 -2
- package/dist/{chunk-YHXBD52M.js → chunk-O64IZ6UX.js} +2 -2
- package/dist/chunk-PBUQFCNB.js +16 -0
- package/dist/{chunk-UQK5CRUK.js → chunk-POAVPHH7.js} +2 -2
- package/dist/{chunk-TYQ76QHQ.js → chunk-PQCI4SQX.js} +2 -2
- package/dist/chunk-PXY7F6Y4.js +5 -0
- package/dist/chunk-RDO52JGY.js +2 -0
- package/dist/chunk-RJT3TUUZ.js +2 -0
- package/dist/{chunk-OHWZKLVA.js → chunk-RUJURYSV.js} +2 -2
- package/dist/{chunk-CSTYYXKC.js → chunk-RVLDN63O.js} +2 -2
- package/dist/chunk-RXOXSKY3.js +2 -0
- package/dist/chunk-S7OYBOCK.js +2 -0
- package/dist/chunk-SMNXQT5Z.js +3 -0
- package/dist/{chunk-QQWOFXNW.js → chunk-SRAFT254.js} +2 -2
- package/dist/{chunk-6XHTISLI.js → chunk-SXP2MBJH.js} +2 -2
- package/dist/chunk-T7YQSHPQ.js +3 -0
- package/dist/{chunk-2EZSOTSY.js → chunk-TFRAYKN6.js} +2 -2
- package/dist/{chunk-XVJ3V7LM.js → chunk-UJCOIXDY.js} +2 -2
- package/dist/{chunk-7LABSJSR.js → chunk-UJPRPGCO.js} +5 -5
- package/dist/chunk-W4ETQAXM.js +2 -0
- package/dist/chunk-WCCFZ7V7.js +113 -0
- package/dist/chunk-WUPW3UN3.js +3 -0
- package/dist/{chunk-VP542C25.js → chunk-WXZLAAWK.js} +2 -2
- package/dist/{chunk-LMFVTUW2.js → chunk-X54AGLVX.js} +2 -2
- package/dist/chunk-XKWKXZKW.js +20 -0
- package/dist/{chunk-OP3MTFJR.js → chunk-XSRF6Q77.js} +2 -2
- package/dist/chunk-Y2MVPNKY.js +5 -0
- package/dist/{chunk-6XFC7PQ5.js → chunk-YKUU5AIC.js} +2 -2
- package/dist/chunk-YLCJLTPL.js +2 -0
- package/dist/{chunk-47X75ZKH.js → chunk-YTQVETEO.js} +2 -2
- package/dist/chunk-Z4N3MZYA.js +38 -0
- package/dist/chunk-ZHXX42OH.js +18 -0
- package/dist/chunk-ZJOOT3BG.js +2 -0
- package/dist/chunk-ZK26BAQL.js +2 -0
- package/dist/{chunk-UUJBLG6J.js → chunk-ZTETIQ35.js} +2 -2
- package/dist/cli.js +3 -3
- package/dist/command-descriptors-4A4HWV4F.js +642 -0
- package/dist/{config-types-BWQ5xPGI.d.ts → config-types-jVM3D7MA.d.ts} +72 -2
- package/dist/{db-B0r1o7Vt.d.ts → db-B5PM5yNk.d.ts} +20 -2
- package/dist/{diff-gate-types-C9BoYwYD.d.ts → diff-gate-types-B0QYpDv1.d.ts} +2 -1
- package/dist/direct-navigation-6YHV6IB5.js +3 -0
- package/dist/{health-CFnlCiTz.d.ts → health-Do5TKSJI.d.ts} +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.js +1 -1
- package/dist/postinstall.js +1 -1
- package/dist/queries/affected.d.ts +2 -2
- package/dist/queries/affected.js +1 -1
- package/dist/queries/architecture.d.ts +2 -2
- package/dist/queries/architecture.js +1 -1
- package/dist/queries/bottlenecks.d.ts +2 -2
- 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 +2 -2
- package/dist/queries/call-graph.js +1 -1
- package/dist/queries/change-surface.d.ts +22 -3
- 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 +2 -2
- package/dist/queries/code.js +1 -1
- package/dist/queries/complexity-hotspots.d.ts +3 -3
- package/dist/queries/complexity-hotspots.js +1 -1
- package/dist/queries/complexity.d.ts +3 -3
- package/dist/queries/complexity.js +1 -1
- package/dist/queries/convergence.d.ts +2 -2
- package/dist/queries/convergence.js +1 -1
- package/dist/queries/coupling.d.ts +2 -2
- package/dist/queries/coupling.js +1 -1
- package/dist/queries/cycles.d.ts +2 -2
- package/dist/queries/cycles.js +1 -1
- package/dist/queries/dataflow.d.ts +2 -2
- 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 +2 -2
- package/dist/queries/decorative-checkers.js +1 -1
- package/dist/queries/deep-chains.d.ts +2 -2
- package/dist/queries/deep-chains.js +1 -1
- package/dist/queries/deps.d.ts +2 -2
- package/dist/queries/deps.js +1 -1
- package/dist/queries/diff-gate.d.ts +40 -7
- package/dist/queries/diff-gate.js +1 -1
- package/dist/queries/diff-impact.d.ts +84 -6
- package/dist/queries/diff-impact.js +1 -1
- package/dist/queries/doc-drift.d.ts +3 -3
- 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 +3 -3
- package/dist/queries/duplicate-bodies.js +1 -1
- package/dist/queries/extract-candidates.d.ts +2 -2
- package/dist/queries/extract-candidates.js +1 -1
- package/dist/queries/fan.d.ts +2 -2
- package/dist/queries/fan.js +1 -1
- package/dist/queries/files.d.ts +12 -3
- package/dist/queries/files.js +1 -1
- package/dist/queries/health.d.ts +3 -3
- package/dist/queries/health.js +1 -1
- package/dist/queries/hierarchy.d.ts +2 -2
- package/dist/queries/hierarchy.js +1 -1
- package/dist/queries/hotspots.d.ts +2 -2
- 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 +8 -6
- package/dist/queries/incomplete-migration.js +1 -1
- package/dist/queries/index.d.ts +141 -10
- 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 +34 -3
- package/dist/queries/methods.js +1 -1
- package/dist/queries/not-implemented.d.ts +2 -2
- 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 +3 -3
- package/dist/queries/passthrough-candidates.js +1 -1
- package/dist/queries/plan-context.d.ts +3 -3
- 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/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 +2 -2
- package/dist/queries/slice.js +1 -1
- 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 +2 -2
- 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.d.ts +2 -2
- 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 +2 -2
- package/dist/queries/trace.js +1 -1
- package/dist/queries/twin-ab.d.ts +14 -3
- package/dist/queries/twin-ab.js +1 -1
- package/dist/queries/twin-drift.d.ts +2 -2
- 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/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/reindex-worker.js +26 -25
- package/dist/reindex.d.ts +7 -3
- package/dist/reindex.js +34 -33
- package/dist/runtime.d.ts +5 -10
- package/dist/runtime.js +3 -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-DCvnlZCu.d.ts → scip-cli-BnEwZRLJ.d.ts} +2 -2
- package/dist/{symbol-types-BgWU6lhL.d.ts → symbol-types-BIQwfoAx.d.ts} +7 -1
- package/dist/typescript-mailbox-worker.js +2 -0
- package/dist/watch-server.js +2 -42
- package/docs/AGENT_GUIDE.md +28 -5
- package/docs/CLI_JSON_OUTPUT.md +176 -3
- package/docs/COMMAND_REFERENCE.md +89 -87
- package/docs/COMMITTED_RECORD_COMPATIBILITY.md +55 -18
- package/docs/DURABILITY.md +88 -38
- package/docs/INDEX_GENERATIONS.md +65 -19
- package/docs/MAILBOX_LIFECYCLE.md +28 -1
- package/docs/REINDEX_METADATA_COMPATIBILITY.md +18 -8
- package/docs/SECURITY_MODEL.md +146 -0
- package/docs/TELEMETRY_RETENTION.md +16 -4
- package/docs/WATCH_REFRESH_REQUESTS.md +34 -21
- package/docs/WINDOWS_SIDECAR_RELEASE.md +9 -4
- package/docs/analyzer-inventory.md +31 -22
- package/docs/analyzer-validation-ledger.md +8 -0
- package/docs/schemas/cli-output-page.schema.json +104 -0
- package/docs/schemas/outcome-event-record.schema.json +57 -1
- package/docs/schemas/project-config.schema.json +82 -1
- package/docs/schemas/suppression-record.schema.json +84 -3
- package/package.json +9 -8
- package/skills/_shared/SKILL.md +5 -3
- package/skills/_shared/references/agent-contract-catalog.md +1 -1
- package/skills/_shared/references/detector-precision-and-diffgate.md +1 -1
- package/skills/scip-audit/SKILL.md +9 -8
- package/skills/scip-audit/references/claims.md +1 -1
- package/skills/scip-audit/references/cleanup.md +19 -20
- package/skills/scip-audit/references/directory.md +4 -4
- package/skills/scip-audit/references/frontend.md +10 -10
- package/skills/scip-audit/references/twin-drift.md +2 -2
- package/skills/scip-diagnose/references/debug.md +8 -8
- package/skills/scip-diagnose/references/root-cause.md +3 -3
- package/skills/scip-diagnose/references/triage.md +10 -10
- package/skills/scip-explore/SKILL.md +4 -4
- package/skills/scip-improve/SKILL.md +10 -10
- package/skills/scip-improve/references/cleanup-batches.md +3 -3
- package/skills/scip-improve/references/directory-moves.md +3 -3
- package/skills/scip-improve/references/doc-reconcile.md +1 -1
- package/skills/scip-improve/references/frontend-extraction.md +2 -2
- package/skills/scip-improve/references/twin-drift.md +3 -3
- package/skills/scip-plan/SKILL.md +3 -3
- package/skills/scip-plan/references/api-impact.md +5 -5
- package/skills/scip-plan/references/conductor.md +2 -2
- package/skills/scip-plan/references/hyper-optimization.md +1 -1
- package/skills/scip-query/SKILL.md +15 -5
- package/skills/scip-setup/references/bootstrap-workflow.md +7 -8
- package/skills/scip-setup/references/language-verification.md +2 -2
- package/skills/scip-setup/references/per-repo-triage.md +1 -1
- package/skills/scip-verify/SKILL.md +16 -11
- package/skills/scip-verify/references/calibrate-detectors.md +7 -7
- package/dist/chunk-24QNP7MN.js +0 -2
- package/dist/chunk-26X7KCJR.js +0 -5
- package/dist/chunk-273W2U4Y.js +0 -40
- package/dist/chunk-2OXVAGGT.js +0 -3
- package/dist/chunk-2ZOCHAL2.js +0 -8
- package/dist/chunk-35SQLYCQ.js +0 -2
- package/dist/chunk-4CGVLUDP.js +0 -18
- package/dist/chunk-4RI4BJGT.js +0 -8
- package/dist/chunk-52HQTTPB.js +0 -2
- package/dist/chunk-64MNV6AB.js +0 -8
- package/dist/chunk-7E3TH5ZN.js +0 -33
- package/dist/chunk-7Q6VYYCH.js +0 -2
- package/dist/chunk-A63U2W3P.js +0 -3
- package/dist/chunk-ADFSIJP2.js +0 -16
- package/dist/chunk-AOLE4DYM.js +0 -6
- package/dist/chunk-APMMR5Y2.js +0 -2
- package/dist/chunk-B5MHCHP3.js +0 -107
- package/dist/chunk-DGAGY7RJ.js +0 -60
- package/dist/chunk-DGMCFMPG.js +0 -11
- package/dist/chunk-E2ZXPB7J.js +0 -38
- package/dist/chunk-FKGN4A4E.js +0 -61
- package/dist/chunk-G4UQL4CP.js +0 -2
- package/dist/chunk-GA64UPMI.js +0 -6
- package/dist/chunk-HEBAY673.js +0 -2
- package/dist/chunk-HELS7KFF.js +0 -2
- package/dist/chunk-IPDCSB6N.js +0 -6
- package/dist/chunk-JERWGHQT.js +0 -16
- package/dist/chunk-JJJCO4QC.js +0 -945
- package/dist/chunk-JZNLMHWY.js +0 -56
- package/dist/chunk-K42M2KWT.js +0 -2
- package/dist/chunk-KP4KBDVF.js +0 -3
- package/dist/chunk-LRTP3DKL.js +0 -3
- package/dist/chunk-N3SE646F.js +0 -2
- package/dist/chunk-NN4ZIRPK.js +0 -8
- package/dist/chunk-P6HBYNBE.js +0 -5
- package/dist/chunk-QHKUY4FW.js +0 -2
- package/dist/chunk-QHRL4LKM.js +0 -2
- package/dist/chunk-SHKZ7OVJ.js +0 -35
- package/dist/chunk-TFUU5MQQ.js +0 -2
- package/dist/chunk-UXP636P5.js +0 -144
- package/dist/chunk-VEVBIAOJ.js +0 -16
- package/dist/chunk-VKRQDBW5.js +0 -9
- package/dist/chunk-VOQFGC2W.js +0 -67
- package/dist/chunk-WMXRRBII.js +0 -8
- package/dist/chunk-X3NLZHPA.js +0 -20
- package/dist/chunk-XF3KLXN3.js +0 -11
- package/dist/chunk-YCPASUCX.js +0 -2
- package/dist/chunk-YLVE3SXZ.js +0 -20
- package/dist/chunk-Z2LHPIOM.js +0 -2
- package/dist/chunk-Z5QQPJ3U.js +0 -30
- package/dist/chunk-ZTTISZ7J.js +0 -112
- package/dist/command-descriptors-SJDZ7QGR.js +0 -617
- package/dist/direct-navigation-HTKOZEOM.js +0 -3
package/docs/CLI_JSON_OUTPUT.md
CHANGED
|
@@ -1,4 +1,30 @@
|
|
|
1
|
-
# CLI
|
|
1
|
+
# CLI output modes
|
|
2
|
+
|
|
3
|
+
Human output is the default for people and agents. It is the command-owned
|
|
4
|
+
presentation: reports retain sections and whitespace, and `code` retains a
|
|
5
|
+
path/range header, source indentation, and one-based line numbers. It omits
|
|
6
|
+
transport metadata that does not help answer the command's question.
|
|
7
|
+
|
|
8
|
+
Public commands that support structured output share the same three options:
|
|
9
|
+
|
|
10
|
+
```text
|
|
11
|
+
--json Emit the stable versioned CLI envelope.
|
|
12
|
+
--result-only With --json, emit only the command-owned result.
|
|
13
|
+
--compact With --json, minify the selected JSON form for a program.
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
Use plain `--json` for an integration that depends on producer, schema,
|
|
17
|
+
coverage, evidence, arguments, or invocation options. Use `--json
|
|
18
|
+
--result-only` for a program that needs just the result. Agents should run the
|
|
19
|
+
ordinary command instead; pretty JSON remains structurally noisier than the
|
|
20
|
+
human renderer. Both modifiers are rejected without `--json`.
|
|
21
|
+
|
|
22
|
+
For example, `scip-query code <symbol>` prints source directly. Its result-only
|
|
23
|
+
form contains only `file`, resolved `symbol`, `language`, a one-based `range`,
|
|
24
|
+
and ordered `{ line, text }` rows. Resolution alternatives are added only when
|
|
25
|
+
the requested symbol is ambiguous.
|
|
26
|
+
|
|
27
|
+
## Stable JSON envelope
|
|
2
28
|
|
|
3
29
|
A CLI JSON envelope is the public transport record printed by a scip-query
|
|
4
30
|
command when a caller selects `--json`. Its real-world units are the JSON
|
|
@@ -13,12 +39,12 @@ The current envelope is schema version 1:
|
|
|
13
39
|
{
|
|
14
40
|
"kind": "scip-query-result",
|
|
15
41
|
"schemaVersion": 1,
|
|
16
|
-
"producer": { "name": "scip-query", "version": "0.19.
|
|
42
|
+
"producer": { "name": "scip-query", "version": "0.19.10" },
|
|
17
43
|
"command": "refs",
|
|
18
44
|
"resultSchemaVersion": 1,
|
|
19
45
|
"evidence": "graph-fact",
|
|
20
46
|
"args": ["login"],
|
|
21
|
-
"options": { "json": true
|
|
47
|
+
"options": { "json": true },
|
|
22
48
|
"result": {},
|
|
23
49
|
"coverage": {}
|
|
24
50
|
}
|
|
@@ -37,6 +63,130 @@ The public `scip-query/runtime` export provides
|
|
|
37
63
|
consumers that want the repository's compatibility policy rather than a
|
|
38
64
|
hand-written field check.
|
|
39
65
|
|
|
66
|
+
## Complete output for agents
|
|
67
|
+
|
|
68
|
+
An output page is one consecutive, bounded part of the characters a command
|
|
69
|
+
rendered. Its real-world units are the `scip-query-output-page` objects and
|
|
70
|
+
human page blocks returned after a result exceeds an agent transport's safe
|
|
71
|
+
size. It differs from a query limit because it divides already-produced
|
|
72
|
+
output without discarding any character: following each emitted continuation
|
|
73
|
+
command reconstructs the complete rendered stream.
|
|
74
|
+
|
|
75
|
+
Every command accepts these global options:
|
|
76
|
+
|
|
77
|
+
```text
|
|
78
|
+
--output-page-size <characters>
|
|
79
|
+
--output-cursor <cursor>
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Run commands normally without choosing a page size. Human output larger than
|
|
83
|
+
12,000 characters is paged automatically as ordinary multiline text, not as a
|
|
84
|
+
JSON object. Each incomplete page prints one exact continuation command after
|
|
85
|
+
its content. Agents must run that command unchanged until the output-complete
|
|
86
|
+
marker. Supplying `--output-page-size` changes the character budget; it does
|
|
87
|
+
not select JSON. The value counts rendered JavaScript string characters, not
|
|
88
|
+
rows, results, model tokens, or bytes. If the complete result fits, scip-query
|
|
89
|
+
returns it unchanged and removes the temporary snapshot; a page wrapper exists
|
|
90
|
+
only when more content remains. Partial human pages end at the last complete
|
|
91
|
+
line within that budget whenever one exists, so the next page begins with its
|
|
92
|
+
own heading or source line number; a single line longer than the budget is the
|
|
93
|
+
only case that requires a character-boundary split. Do not pipe scip-query
|
|
94
|
+
through `head`, `tail`, or a line-range `sed`; those programs discard output
|
|
95
|
+
without creating a resumable position.
|
|
96
|
+
|
|
97
|
+
Default `--json` output remains the ordinary, additively extensible
|
|
98
|
+
`scip-query-result` envelope. When that envelope exceeds
|
|
99
|
+
12,000 characters, scip-query writes an early stderr warning containing the
|
|
100
|
+
exact command that opts into output pages. The paged command returns:
|
|
101
|
+
|
|
102
|
+
```json
|
|
103
|
+
{
|
|
104
|
+
"kind": "scip-query-output-page",
|
|
105
|
+
"schemaVersion": 1,
|
|
106
|
+
"producer": { "name": "scip-query", "version": "0.19.10" },
|
|
107
|
+
"command": "architecture",
|
|
108
|
+
"contentType": "application/json",
|
|
109
|
+
"agentInstruction": "INCOMPLETE EVIDENCE: do not draw conclusions or report completion from this partial page. Run page.continuation.command exactly, then repeat until page.complete is true.",
|
|
110
|
+
"page": {
|
|
111
|
+
"offset": 0,
|
|
112
|
+
"returnedCharacters": 12000,
|
|
113
|
+
"totalCharacters": 48152,
|
|
114
|
+
"omittedCharacters": 36152,
|
|
115
|
+
"remainingCharacters": 36152,
|
|
116
|
+
"complete": false,
|
|
117
|
+
"outputHash": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
|
|
118
|
+
"continuation": {
|
|
119
|
+
"cursor": "<opaque cursor>",
|
|
120
|
+
"command": "scip-query architecture --json --output-page-size 12000 --output-cursor <opaque cursor>"
|
|
121
|
+
}
|
|
122
|
+
},
|
|
123
|
+
"content": "{\n \"kind\": \"scip-query-result\",\n ..."
|
|
124
|
+
}
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
The cursor is bound to the executable or package-runner prefix, command,
|
|
128
|
+
working directory, complete non-pagination argument list, immutable page
|
|
129
|
+
number and size, private output snapshot, and SHA-256 of the complete rendered
|
|
130
|
+
output. The initial capture records that invocation identity plus each page's
|
|
131
|
+
UTF-8 byte range and hash. A continuation reads and verifies only that range,
|
|
132
|
+
so retrieving all pages performs linear snapshot I/O and never re-runs the
|
|
133
|
+
command. A changed executable identity, page, page size, missing snapshot, or
|
|
134
|
+
expired snapshot is rejected with the exact page-one restart command using the
|
|
135
|
+
same prefix that created it.
|
|
136
|
+
|
|
137
|
+
A genuinely partial JSON page must carry `content` as a string because an
|
|
138
|
+
arbitrary character boundary is not necessarily valid nested JSON. Run the
|
|
139
|
+
emitted continuation exactly until completion. Normal agent work should use
|
|
140
|
+
human output, where partial pages remain multiline text rather than a JSON
|
|
141
|
+
string.
|
|
142
|
+
|
|
143
|
+
One snapshot is bounded to 32 million characters, 64 MiB, and 32,768 pages.
|
|
144
|
+
The per-user pool is bounded to 32 snapshots and 256 MiB under atomic
|
|
145
|
+
reservation. Every incomplete machine-readable page carries a direct
|
|
146
|
+
`agentInstruction`; consumers must follow `page.continuation.command` until
|
|
147
|
+
`page.complete` is `true`.
|
|
148
|
+
|
|
149
|
+
Output pages and result coverage answer different questions:
|
|
150
|
+
|
|
151
|
+
- output pagination says whether every rendered character is retrievable;
|
|
152
|
+
- the result envelope's `coverage` says whether the command examined every
|
|
153
|
+
logical result unit.
|
|
154
|
+
|
|
155
|
+
A completely retrieved page can therefore still contain a bounded or sampled
|
|
156
|
+
analysis. Use the result envelope's stated `--full` remediation when present,
|
|
157
|
+
then follow output continuation commands until complete.
|
|
158
|
+
|
|
159
|
+
Invocation coverage counts the semantic result units declared by the command
|
|
160
|
+
descriptor. A list command counts top-level rows; a report counts one report;
|
|
161
|
+
and a command with a named result field counts only that field. Unrelated
|
|
162
|
+
diagnostic arrays do not inflate `returned`. Symbol-selecting commands also
|
|
163
|
+
report a separate `coverage.resolution` state—`exact`, `ambiguous`, or
|
|
164
|
+
`missing` with its candidate count—because resolving one requested identity
|
|
165
|
+
and enumerating that identity's result rows are different completeness
|
|
166
|
+
questions.
|
|
167
|
+
|
|
168
|
+
`refs --limit <n>` uses a generation-bound keyset cursor: each ordinary page
|
|
169
|
+
continues after the last returned `(relativePath, line)` and stops once it has
|
|
170
|
+
found the requested rows plus one continuation witness. The JSON result reports
|
|
171
|
+
`pagination.producer: "source-keyset"` for that bounded producer. Explicit
|
|
172
|
+
semantic enrichment (`--full`), Ruby supplemental evidence, and the coarse SCIP
|
|
173
|
+
chunk fallback cannot currently resume before complete materialization; those
|
|
174
|
+
pages preserve their evidence but report
|
|
175
|
+
`pagination.producer: "complete-only"` instead of implying that `--limit`
|
|
176
|
+
bounded the analysis work. Version-1 offset cursors remain readable and their
|
|
177
|
+
next continuation is upgraded to the version-2 keyset format. Every result
|
|
178
|
+
cursor is rejected after the index generation changes.
|
|
179
|
+
|
|
180
|
+
The machine-readable page schema is
|
|
181
|
+
[`schemas/cli-output-page.schema.json`](schemas/cli-output-page.schema.json).
|
|
182
|
+
Page sizes range from 256 through 100,000 characters and cursors are limited
|
|
183
|
+
to 4,096 characters. The first paged invocation streams the complete output
|
|
184
|
+
to a mode-`0600` snapshot beneath a current-user mode-`0700` temporary
|
|
185
|
+
directory while retaining only the requested page in memory. Snapshots expire
|
|
186
|
+
after one hour and are removed after the final page. Pagination imposes no
|
|
187
|
+
arbitrary total-output ceiling and does not silently discard later pages;
|
|
188
|
+
command-level result budgets still apply and report their own completeness.
|
|
189
|
+
|
|
40
190
|
## Compatibility policy
|
|
41
191
|
|
|
42
192
|
The decoder accepts:
|
|
@@ -59,6 +209,29 @@ The committed v0 and v1 fixtures in `tests/fixtures/` prove that the newest
|
|
|
59
209
|
decoder reads both generations. The v1 fixture also contains an unknown
|
|
60
210
|
additive field so tests prove tolerant reads rather than exact-key coupling.
|
|
61
211
|
|
|
212
|
+
## Effectiveness telemetry authority
|
|
213
|
+
|
|
214
|
+
`effectiveness --json` reports both handling outcomes and the authority of the
|
|
215
|
+
observer that produced them. Repository-local agents and humans can edit the
|
|
216
|
+
same `.scipquery/events/` and suppression files being summarized, so their
|
|
217
|
+
rows use `authority: "local-writable-telemetry"` and expose
|
|
218
|
+
`resolutionVsSuppressionRate`. The legacy `precision` result field remains
|
|
219
|
+
present but is `null` for writable, mixed, or self-asserted populations. It is
|
|
220
|
+
numeric only when every event in that population is a `protected-ci`
|
|
221
|
+
observation with `protected-external` authority and the caller supplies its
|
|
222
|
+
gate-run ID through a separately controlled attestation set. The built-in
|
|
223
|
+
repository-history command supplies no such set, so writable JSON cannot
|
|
224
|
+
self-promote into an independent grade. External evaluators can call the
|
|
225
|
+
public `computeEffectiveness()` export from `scip-query/queries` with
|
|
226
|
+
`protectedGateRunIds` obtained from their separately controlled corpus.
|
|
227
|
+
|
|
228
|
+
The result also includes observer counts, distinct and missing gate-run
|
|
229
|
+
identities, and bounded anomaly samples. Those samples identify calibration
|
|
230
|
+
work without requiring a human to approve every ordinary automated
|
|
231
|
+
suppression. `recordCompatibility.outcomeEvents` remains the independent
|
|
232
|
+
statement about whether every event file was readable; neither compatibility
|
|
233
|
+
nor Git can prove that a writable event file was never deleted.
|
|
234
|
+
|
|
62
235
|
## Other JSON protocols
|
|
63
236
|
|
|
64
237
|
The hidden `__health-phase` and `__diff-impact-batch` commands are
|
|
@@ -4,13 +4,15 @@
|
|
|
4
4
|
|
|
5
5
|
This syntax summary is generated from the CLI command descriptors. Keep workflow guidance hand-authored, but keep command syntax, descriptions, and option flags descriptor-owned.
|
|
6
6
|
|
|
7
|
-
Commands with `--json`
|
|
7
|
+
Commands with `--json` share three structured modes: plain `--json` emits the stable public envelope, `--json --result-only` emits only the command payload, and `--json --compact` minifies either form for a program. Agents should prefer ordinary human output. See [CLI output modes](CLI_JSON_OUTPUT.md).
|
|
8
|
+
|
|
9
|
+
Every command accepts `--output-page-size <characters>` and `--output-cursor <cursor>`. Run normally without choosing a page size: oversized human output stays readable text and prints one exact continuation command; oversized JSON prints the exact command that opts into versioned JSON page envelopes.
|
|
8
10
|
|
|
9
11
|
### Indexing
|
|
10
12
|
|
|
11
13
|
| Command | Description | Options |
|
|
12
14
|
|---|---|---|
|
|
13
|
-
| `reindex` | Index the codebase and convert to SQLite | `-l, --language <lang>`<br>`--pnpm-workspaces`<br>`--force`<br>`--allow-partial`<br>`--indexer-concurrency <n>`<br>`--json` |
|
|
15
|
+
| `reindex` | Index the codebase and convert to SQLite | `-l, --language <lang>`<br>`--pnpm-workspaces`<br>`--force`<br>`--allow-partial`<br>`--trust-project-tools`<br>`--install-missing`<br>`--indexer-concurrency <n>`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
14
16
|
| `augment-sources` | Add source files skipped by upstream SCIP indexers to the SQLite documents table | - |
|
|
15
17
|
| `augment-vue` | Add compiler-resolved Vue SFC references to the SQLite index using Volar | `--project <tsconfig>` |
|
|
16
18
|
|
|
@@ -18,136 +20,136 @@ Commands with `--json` emit the versioned public envelope documented in [CLI JSO
|
|
|
18
20
|
|
|
19
21
|
| Command | Description | Options |
|
|
20
22
|
|---|---|---|
|
|
21
|
-
| `stats` | Show index statistics | `--json` |
|
|
23
|
+
| `stats` | Show index statistics | `--json`<br>`--result-only`<br>`--compact` |
|
|
22
24
|
|
|
23
25
|
### Navigation
|
|
24
26
|
|
|
25
27
|
| Command | Description | Options |
|
|
26
28
|
|---|---|---|
|
|
27
|
-
| `files <pattern>` | Find files matching a pattern | `--json` |
|
|
28
|
-
| `methods <className>` | List methods of
|
|
29
|
-
| `refs <symbol>` | Find all files referencing a symbol | `--full`<br>`-n, --limit <n>`<br>`--cursor <cursor>`<br>`--json`<br>`--compact` |
|
|
30
|
-
| `trace <symbol>` | Trace a symbol: definition + all references | `--full`<br>`--
|
|
31
|
-
| `deps <file>` | Files this file depends on (internal) | `--json` |
|
|
32
|
-
| `rdeps <file>` | Files that depend on this file/module | `--json` |
|
|
33
|
-
| `system <module>` | Full module map: files, symbols, deps in/out | `--
|
|
34
|
-
| `surface <module>` | What symbols consumers actually use from this module | `--json` |
|
|
35
|
-
| `imports <file>` | What symbols does this file import? | `--full`<br>`--json` |
|
|
36
|
-
| `imported-by <symbol>` | Which files import this symbol? | `--json` |
|
|
37
|
-
| `outline <file>` | Tree view of symbols in a file, with line ranges | `--signatures`<br>`--json` |
|
|
38
|
-
| `members <symbol>` | All children of a symbol (methods, fields, nested types) | `--json` |
|
|
39
|
-
| `by-kind <kind>` | Find symbols by SCIP kind (class, interface, enum, function, etc.) | `-s, --scope <path>`<br>`-n, --limit <n>`<br>`--full`<br>`--json` |
|
|
40
|
-
| `kind-counts` | Histogram of symbol kinds in the codebase | `-s, --scope <path>`<br>`--json` |
|
|
41
|
-
| `hierarchy <symbol>` | Show a symbol's ancestry chain (method → class → module) | `--json` |
|
|
42
|
-
| `code <symbol>` | Read the source code for a symbol (bounded to its definition range) | `-C, --context <n>`<br>`--json` |
|
|
43
|
-
| `dataflow <symbol>` | Reference-level dataflow: definition sites, usage sites, producers, consumers | `--full`<br>`--json` |
|
|
44
|
-
| `slice <symbol>` | Reference-level program slice: what affects this (backward) or what this affects (forward) | `--forward`<br>`--depth <n>`<br>`--full`<br>`--json` |
|
|
29
|
+
| `files <pattern>` | Find files matching a pattern | `--json`<br>`--result-only`<br>`--compact` |
|
|
30
|
+
| `methods <className>` | List methods of one exactly resolved class; ambiguity and missing targets fail explicitly | `--json`<br>`--result-only`<br>`--compact` |
|
|
31
|
+
| `refs <symbol>` | Find all files referencing a symbol | `--full`<br>`-n, --limit <n>`<br>`--cursor <cursor>`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
32
|
+
| `trace <symbol>` | Trace a symbol: definition + all references | `--full`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
33
|
+
| `deps <file>` | Files this file depends on (internal) | `--json`<br>`--result-only`<br>`--compact` |
|
|
34
|
+
| `rdeps <file>` | Files that depend on this file/module | `--json`<br>`--result-only`<br>`--compact` |
|
|
35
|
+
| `system <module>` | Full module map: files, symbols, deps in/out | `--json`<br>`--result-only`<br>`--compact` |
|
|
36
|
+
| `surface <module>` | What symbols consumers actually use from this module | `--json`<br>`--result-only`<br>`--compact` |
|
|
37
|
+
| `imports <file>` | What symbols does this file import? | `--full`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
38
|
+
| `imported-by <symbol>` | Which files import this symbol? | `--json`<br>`--result-only`<br>`--compact` |
|
|
39
|
+
| `outline <file>` | Tree view of symbols in a file, with line ranges | `--signatures`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
40
|
+
| `members <symbol>` | All children of a symbol (methods, fields, nested types) | `--json`<br>`--result-only`<br>`--compact` |
|
|
41
|
+
| `by-kind <kind>` | Find symbols by SCIP kind (class, interface, enum, function, etc.) | `-s, --scope <path>`<br>`-n, --limit <n>`<br>`--full`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
42
|
+
| `kind-counts` | Histogram of symbol kinds in the codebase | `-s, --scope <path>`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
43
|
+
| `hierarchy <symbol>` | Show a symbol's ancestry chain (method → class → module) | `--json`<br>`--result-only`<br>`--compact` |
|
|
44
|
+
| `code <symbol>` | Read the source code for a symbol (bounded to its definition range) | `-C, --context <n>`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
45
|
+
| `dataflow <symbol>` | Reference-level dataflow: definition sites, usage sites, producers, consumers | `--full`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
46
|
+
| `slice <symbol>` | Reference-level program slice: what affects this (backward) or what this affects (forward) | `--forward`<br>`--depth <n>`<br>`--full`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
45
47
|
|
|
46
48
|
### Cleanup
|
|
47
49
|
|
|
48
50
|
| Command | Description | Options |
|
|
49
51
|
|---|---|---|
|
|
50
|
-
| `dead [scope]` | Find repository-dead code, file-internal symbols, and implicit-usage signals | `--min-loc <n>`<br>`--include-tests`<br>`--skip-barrels`<br>`--include-members`<br>`--only-dead`<br>`--only-internal`<br>`--full`<br>`--json` |
|
|
51
|
-
| `unused-imports <file>` | Find imports not referenced in the same file | `--full`<br>`--json` |
|
|
52
|
-
| `isolated` | Find completely orphaned symbols (no references at all) | `-s, --scope <path>`<br>`--min-loc <n>`<br>`--full`<br>`--json` |
|
|
53
|
-
| `similar [symbol] [other]` | Find heuristic function similarity candidates from callee fingerprints | `--min-similarity <n>`<br>`-n, --limit <n>`<br>`-s, --scope <path>`<br>`--min-callees <n>`<br>`--cross-file-only`<br>`--plan`<br>`--full`<br>`--json` |
|
|
54
|
-
| `similar-files [file]` | Find heuristic similar-file candidates from dependency profiles | `--min-similarity <n>`<br>`-n, --limit <n>`<br>`-s, --scope <path>`<br>`--min-deps <n>`<br>`--full`<br>`--json` |
|
|
55
|
-
| `react-component-duplicates [file]` | Find heuristic duplicated React component structure candidates from JSX tags, props, events, and bindings | `--min-similarity <n>`<br>`--min-tokens <n>`<br>`-n, --limit <n>`<br>`-s, --scope <path>`<br>`--full`<br>`--json` |
|
|
56
|
-
| `react-hook-candidates [file]` | Find heuristic React hook extraction candidates from shared state, effects, requests, and handlers | `--min-similarity <n>`<br>`--min-shared-behaviors <n>`<br>`-n, --limit <n>`<br>`-s, --scope <path>`<br>`--full`<br>`--json` |
|
|
57
|
-
| `react-large-component-pressure [file]` | Find heuristic large React component pressure candidates from component lines, JSX structure, and hook behavior | `--min-component-lines <n>`<br>`--min-file-lines <n>`<br>`--min-jsx-tokens <n>`<br>`--min-behavior-tokens <n>`<br>`-n, --limit <n>`<br>`-s, --scope <path>`<br>`--full`<br>`--json` |
|
|
58
|
-
| `vue-component-duplicates [file]` | Find heuristic duplicated Vue component structure candidates from template tags, bindings, slots, and directives | `--min-similarity <n>`<br>`--min-tokens <n>`<br>`-n, --limit <n>`<br>`-s, --scope <path>`<br>`--full`<br>`--json` |
|
|
59
|
-
| `vue-composable-candidates [file]` | Find heuristic Vue composable extraction candidates from shared state, effects, requests, and template bindings | `--min-similarity <n>`<br>`--min-shared-behaviors <n>`<br>`-n, --limit <n>`<br>`-s, --scope <path>`<br>`--full`<br>`--json` |
|
|
60
|
-
| `vue-large-view-pressure [file]` | Find heuristic large Vue view pressure candidates from template, script, style, and external script line counts | `--min-total-lines <n>`<br>`--min-template-lines <n>`<br>`--min-script-lines <n>`<br>`--min-style-lines <n>`<br>`--review-thresholds`<br>`-n, --limit <n>`<br>`-s, --scope <path>`<br>`--full`<br>`--json` |
|
|
61
|
-
| `similar-chains` | Find heuristic similar-chain candidates from dependency flows | `--min-similarity <n>`<br>`-n, --limit <n>`<br>`-s, --scope <path>`<br>`--min-length <n>`<br>`--max-length <n>`<br>`--full`<br>`--json` |
|
|
62
|
-
| `extract-candidates` | Find heuristic extraction candidates from isolated callee clusters | `-s, --scope <path>`<br>`--min-loc <n>`<br>`--min-callees <n>`<br>`-n, --limit <n>`<br>`--full`<br>`--json` |
|
|
63
|
-
| `locality-candidates [symbol-or-file]` | Find directory-locality and ancestry candidates from consumer ownership | `-s, --scope <path>`<br>`--min-consumers <n>`<br>`-n, --limit <n>`<br>`--full`<br>`--json` |
|
|
64
|
-
| `cleanup-plan` | Ordered, batched deletion plan: graph-fact dead code plus the cascade candidates it unlocks | `-s, --scope <path>`<br>`--min-loc <n>`<br>`--max-depth <n>`<br>`--verify`<br>`--patch`<br>`--json`<br>`--
|
|
65
|
-
| `cleanup-apply` | Apply a compiler-verified cleanup-plan batch to the working tree | `-s, --scope <path>`<br>`--min-loc <n>`<br>`--max-depth <n>`<br>`--verified`<br>`--batch <n>`<br>`--all`<br>`--force-dirty`<br>`--full` |
|
|
66
|
-
| `recent-duplicates` | Directional duplicate candidates: recent code that re-implements established callable, React, or Vue code | `--window <n>`<br>`--min-similarity <n>`<br>`-n, --limit <n>`<br>`-s, --scope <path>`<br>`--full`<br>`--json` |
|
|
67
|
-
| `doc-drift [doc]` | Stale-doc candidates: code the doc references or co-changed with kept changing after the doc stopped | `-n, --limit <n>`<br>`--min-coupling <n>`<br>`--full`<br>`--json` |
|
|
68
|
-
| `unused-params` | Speculative-generality candidates: trailing parameters no body ever uses (TS/JS) | `-s, --scope <path>`<br>`-n, --limit <n>`<br>`--full`<br>`--json` |
|
|
69
|
-
| `drift [module]` | Detect drift candidates: unused imports and declared architecture violations; pass --architecture for boundary context | `--min-deviation <n>`<br>`--patterns`<br>`--architecture`<br>`-n, --limit <n>`<br>`--full`<br>`--json` |
|
|
70
|
-
| `wrapper-candidates` | Find heuristic wrapper candidates only called by one consumer (high false-positive rate on codebases with intentional layering/ambient types — treat as exploration, not findings) | `-s, --scope <path>`<br>`--max-loc <n>`<br>`-n, --limit <n>`<br>`--full`<br>`--json` |
|
|
71
|
-
| `passthrough-candidates` | Find heuristic passthrough candidates that forward to one callee | `-s, --scope <path>`<br>`--max-loc <n>`<br>`-n, --limit <n>`<br>`--full`<br>`--json` |
|
|
72
|
-
| `stale-abstractions` | Find heuristic stale abstraction candidates with 0-1 consumers (high false-positive rate on codebases with intentional layering/ambient types — treat as exploration, not findings) | `-s, --scope <path>`<br>`--min-loc <n>`<br>`-n, --limit <n>`<br>`--include-low-confidence`<br>`--full`<br>`--json` |
|
|
73
|
-
| `complexity-hotspots` | Find heuristic complexity hotspot candidates from LOC x fan-in x fan-out | `-s, --scope <path>`<br>`--min-loc <n>`<br>`-n, --limit <n>`<br>`--full`<br>`--json` |
|
|
74
|
-
| `convergence <symbol1> <symbol2>` | Deprecated alias for similar <symbol1> <symbol2> --plan | `--full`<br>`--json` |
|
|
75
|
-
| `redundant-reexports` | Find barrel re-exports that nobody imports through | `-s, --scope <path>`<br>`-n, --limit <n>`<br>`--full`<br>`--json` |
|
|
76
|
-
| `duplicate-bodies` | Find exact duplicate small-body candidates across files | `-s, --scope <path>`<br>`--max-loc <n>`<br>`--min-loc <n>`<br>`-n, --limit <n>`<br>`--full`<br>`--json` |
|
|
77
|
-
| `twin-drift` | Twin drift candidates: same-name (or near-name) functions across files with diverged bodies | `-s, --scope <path>`<br>`--min-similarity <n>`<br>`--include-homonyms`<br>`-n, --limit <n>`<br>`--full`<br>`--json` |
|
|
78
|
-
| `twin-ab <symbolA> <symbolB>` | Generate a behavioral A/B scaffold comparing two same-concept twins (scip-audit integrity scenario) — a ready-to-fill vitest file, not an auto-executor | `--out <path>`<br>`--force`<br>`--json` |
|
|
79
|
-
| `not-implemented` | Reachable placeholder stub candidates (throw-stub, TODO+return-default, empty body) — production callers can actually reach these; an unreachable stub is dead's job, not this one's | `-s, --scope <path>`<br>`-n, --limit <n>`<br>`--full`<br>`--json` |
|
|
80
|
-
| `decorative-checkers` | Decorative checker candidates: validate*/verify*/check*/assert*/is*/has* callables with no reachable failure exit anywhere in their body | `-s, --scope <path>`<br>`-n, --limit <n>`<br>`--full`<br>`--json` |
|
|
81
|
-
| `test-quality` | Test-quality candidates: assertion-free it/test bodies, a skipped-test ledger with git-blame age, and mock-echo tests that assert the same literal they stubbed into a mock | `-s, --scope <path>`<br>`-n, --limit <n>`<br>`--rot-days <n>`<br>`--full`<br>`--json` |
|
|
82
|
-
| `similar-signatures` | Find functions with near-identical type signatures (same shape) | `-s, --scope <path>`<br>`--min-loc <n>`<br>`--max-shape-frequency <n>`<br>`-n, --limit <n>`<br>`--full`<br>`--json` |
|
|
52
|
+
| `dead [scope]` | Find repository-dead code, file-internal symbols, and implicit-usage signals | `--min-loc <n>`<br>`--include-tests`<br>`--skip-barrels`<br>`--include-members`<br>`--only-dead`<br>`--only-internal`<br>`--full`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
53
|
+
| `unused-imports <file>` | Find imports not referenced in the same file | `--full`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
54
|
+
| `isolated` | Find completely orphaned symbols (no references at all) | `-s, --scope <path>`<br>`--min-loc <n>`<br>`--full`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
55
|
+
| `similar [symbol] [other]` | Find heuristic function similarity candidates from callee fingerprints | `--min-similarity <n>`<br>`-n, --limit <n>`<br>`-s, --scope <path>`<br>`--min-callees <n>`<br>`--cross-file-only`<br>`--plan`<br>`--full`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
56
|
+
| `similar-files [file]` | Find heuristic similar-file candidates from dependency profiles | `--min-similarity <n>`<br>`-n, --limit <n>`<br>`-s, --scope <path>`<br>`--min-deps <n>`<br>`--full`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
57
|
+
| `react-component-duplicates [file]` | Find heuristic duplicated React component structure candidates from JSX tags, props, events, and bindings | `--min-similarity <n>`<br>`--min-tokens <n>`<br>`-n, --limit <n>`<br>`-s, --scope <path>`<br>`--full`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
58
|
+
| `react-hook-candidates [file]` | Find heuristic React hook extraction candidates from shared state, effects, requests, and handlers | `--min-similarity <n>`<br>`--min-shared-behaviors <n>`<br>`-n, --limit <n>`<br>`-s, --scope <path>`<br>`--full`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
59
|
+
| `react-large-component-pressure [file]` | Find heuristic large React component pressure candidates from component lines, JSX structure, and hook behavior | `--min-component-lines <n>`<br>`--min-file-lines <n>`<br>`--min-jsx-tokens <n>`<br>`--min-behavior-tokens <n>`<br>`-n, --limit <n>`<br>`-s, --scope <path>`<br>`--full`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
60
|
+
| `vue-component-duplicates [file]` | Find heuristic duplicated Vue component structure candidates from template tags, bindings, slots, and directives | `--min-similarity <n>`<br>`--min-tokens <n>`<br>`-n, --limit <n>`<br>`-s, --scope <path>`<br>`--full`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
61
|
+
| `vue-composable-candidates [file]` | Find heuristic Vue composable extraction candidates from shared state, effects, requests, and template bindings | `--min-similarity <n>`<br>`--min-shared-behaviors <n>`<br>`-n, --limit <n>`<br>`-s, --scope <path>`<br>`--full`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
62
|
+
| `vue-large-view-pressure [file]` | Find heuristic large Vue view pressure candidates from template, script, style, and external script line counts | `--min-total-lines <n>`<br>`--min-template-lines <n>`<br>`--min-script-lines <n>`<br>`--min-style-lines <n>`<br>`--review-thresholds`<br>`-n, --limit <n>`<br>`-s, --scope <path>`<br>`--full`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
63
|
+
| `similar-chains` | Find heuristic similar-chain candidates from dependency flows | `--min-similarity <n>`<br>`-n, --limit <n>`<br>`-s, --scope <path>`<br>`--min-length <n>`<br>`--max-length <n>`<br>`--full`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
64
|
+
| `extract-candidates` | Find heuristic extraction candidates from isolated callee clusters | `-s, --scope <path>`<br>`--min-loc <n>`<br>`--min-callees <n>`<br>`-n, --limit <n>`<br>`--full`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
65
|
+
| `locality-candidates [symbol-or-file]` | Find directory-locality and ancestry candidates from consumer ownership | `-s, --scope <path>`<br>`--min-consumers <n>`<br>`-n, --limit <n>`<br>`--full`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
66
|
+
| `cleanup-plan` | Ordered, batched deletion plan: graph-fact dead code plus the cascade candidates it unlocks | `-s, --scope <path>`<br>`--min-loc <n>`<br>`--max-depth <n>`<br>`--verify`<br>`--patch`<br>`--full`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
67
|
+
| `cleanup-apply` | Apply a compiler-verified cleanup-plan batch to the working tree | `-s, --scope <path>`<br>`--min-loc <n>`<br>`--max-depth <n>`<br>`--verified`<br>`--batch <n>`<br>`--all`<br>`--dry-run`<br>`--force-dirty`<br>`--full` |
|
|
68
|
+
| `recent-duplicates` | Directional duplicate candidates: recent code that re-implements established callable, React, or Vue code | `--window <n>`<br>`--min-similarity <n>`<br>`-n, --limit <n>`<br>`-s, --scope <path>`<br>`--full`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
69
|
+
| `doc-drift [doc]` | Stale-doc candidates: code the doc references or co-changed with kept changing after the doc stopped | `-n, --limit <n>`<br>`--min-coupling <n>`<br>`--full`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
70
|
+
| `unused-params` | Speculative-generality candidates: trailing parameters no body ever uses (TS/JS) | `-s, --scope <path>`<br>`-n, --limit <n>`<br>`--full`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
71
|
+
| `drift [module]` | Detect drift candidates: unused imports and declared architecture violations; pass --architecture for boundary context | `--min-deviation <n>`<br>`--patterns`<br>`--architecture`<br>`-n, --limit <n>`<br>`--full`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
72
|
+
| `wrapper-candidates` | Find heuristic wrapper candidates only called by one consumer (high false-positive rate on codebases with intentional layering/ambient types — treat as exploration, not findings) | `-s, --scope <path>`<br>`--max-loc <n>`<br>`-n, --limit <n>`<br>`--full`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
73
|
+
| `passthrough-candidates` | Find heuristic passthrough candidates that forward to one callee | `-s, --scope <path>`<br>`--max-loc <n>`<br>`-n, --limit <n>`<br>`--full`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
74
|
+
| `stale-abstractions` | Find heuristic stale abstraction candidates with 0-1 consumers (high false-positive rate on codebases with intentional layering/ambient types — treat as exploration, not findings) | `-s, --scope <path>`<br>`--min-loc <n>`<br>`-n, --limit <n>`<br>`--include-low-confidence`<br>`--full`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
75
|
+
| `complexity-hotspots` | Find heuristic complexity hotspot candidates from LOC x fan-in x fan-out | `-s, --scope <path>`<br>`--min-loc <n>`<br>`-n, --limit <n>`<br>`--full`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
76
|
+
| `convergence <symbol1> <symbol2>` | Deprecated alias for similar <symbol1> <symbol2> --plan | `--full`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
77
|
+
| `redundant-reexports` | Find barrel re-exports that nobody imports through | `-s, --scope <path>`<br>`-n, --limit <n>`<br>`--full`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
78
|
+
| `duplicate-bodies` | Find exact duplicate small-body candidates across files | `-s, --scope <path>`<br>`--max-loc <n>`<br>`--min-loc <n>`<br>`-n, --limit <n>`<br>`--full`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
79
|
+
| `twin-drift` | Twin drift candidates: same-name (or near-name) functions across files with diverged bodies | `-s, --scope <path>`<br>`--min-similarity <n>`<br>`--include-homonyms`<br>`-n, --limit <n>`<br>`--full`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
80
|
+
| `twin-ab <symbolA> <symbolB>` | Generate a behavioral A/B scaffold comparing two same-concept twins (scip-audit integrity scenario) — a ready-to-fill vitest file, not an auto-executor | `--out <path>`<br>`--force`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
81
|
+
| `not-implemented` | Reachable placeholder stub candidates (throw-stub, TODO+return-default, empty body) — production callers can actually reach these; an unreachable stub is dead's job, not this one's | `-s, --scope <path>`<br>`-n, --limit <n>`<br>`--full`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
82
|
+
| `decorative-checkers` | Decorative checker candidates: validate*/verify*/check*/assert*/is*/has* callables with no reachable failure exit anywhere in their body | `-s, --scope <path>`<br>`-n, --limit <n>`<br>`--full`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
83
|
+
| `test-quality` | Test-quality candidates: assertion-free it/test bodies, a skipped-test ledger with git-blame age, and mock-echo tests that assert the same literal they stubbed into a mock | `-s, --scope <path>`<br>`-n, --limit <n>`<br>`--rot-days <n>`<br>`--full`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
84
|
+
| `similar-signatures` | Find functions with near-identical type signatures (same shape) | `-s, --scope <path>`<br>`--min-loc <n>`<br>`--max-shape-frequency <n>`<br>`-n, --limit <n>`<br>`--full`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
83
85
|
|
|
84
86
|
### Graph
|
|
85
87
|
|
|
86
88
|
| Command | Description | Options |
|
|
87
89
|
|---|---|---|
|
|
88
|
-
| `hotspots` | Most-referenced symbols in the codebase (choke points) | `-n, --limit <n>`<br>`-s, --scope <path>`<br>`--full`<br>`--json` |
|
|
89
|
-
| `fan-in [symbol]` | Count files referencing an exact symbol; top JSON rows include exact symbol identity | `-n, --limit <n>`<br>`-s, --scope <path>`<br>`--full`<br>`--json` |
|
|
90
|
-
| `fan-out [file]` | How many external symbols a file uses (or top fan-out across codebase) | `-n, --limit <n>`<br>`-s, --scope <path>`<br>`--full`<br>`--json` |
|
|
91
|
-
| `coupling [file1] [file2]` | Coupling between two files, or top coupled pairs in codebase | `-n, --limit <n>`<br>`-s, --scope <path>`<br>`--full`<br>`--json` |
|
|
92
|
-
| `cycles` | Detect circular dependency chains between files | `-s, --scope <path>`<br>`--max-depth <n>`<br>`--json` |
|
|
93
|
-
| `architecture` | Evaluate project-owned architectural boundaries and dependency rules | `-s, --scope <path>`<br>`--json` |
|
|
94
|
-
| `bottlenecks` | Find coupling hubs: high fan-in AND high fan-out | `-n, --limit <n>`<br>`-s, --scope <path>`<br>`--min-fan-in <n>`<br>`--min-fan-out <n>`<br>`--full`<br>`--json` |
|
|
95
|
-
| `deep-chains` | Find the longest condensed dependency-component chains | `-n, --limit <n>`<br>`-s, --scope <path>`<br>`--min-depth <n>`<br>`--full`<br>`--json` |
|
|
96
|
-
| `call-graph <symbol>` | Show incoming callers and outgoing callees for a symbol | `--full`<br>`--json` |
|
|
90
|
+
| `hotspots` | Most-referenced symbols in the codebase (choke points) | `-n, --limit <n>`<br>`-s, --scope <path>`<br>`--full`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
91
|
+
| `fan-in [symbol]` | Count files referencing an exact symbol; top JSON rows include exact symbol identity | `-n, --limit <n>`<br>`-s, --scope <path>`<br>`--full`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
92
|
+
| `fan-out [file]` | How many external symbols a file uses (or top fan-out across codebase) | `-n, --limit <n>`<br>`-s, --scope <path>`<br>`--full`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
93
|
+
| `coupling [file1] [file2]` | Coupling between two files, or top coupled pairs in codebase | `-n, --limit <n>`<br>`-s, --scope <path>`<br>`--full`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
94
|
+
| `cycles` | Detect circular dependency chains between files | `-s, --scope <path>`<br>`--max-depth <n>`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
95
|
+
| `architecture` | Evaluate project-owned architectural boundaries and dependency rules | `-s, --scope <path>`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
96
|
+
| `bottlenecks` | Find coupling hubs: high fan-in AND high fan-out | `-n, --limit <n>`<br>`-s, --scope <path>`<br>`--min-fan-in <n>`<br>`--min-fan-out <n>`<br>`--full`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
97
|
+
| `deep-chains` | Find the longest condensed dependency-component chains | `-n, --limit <n>`<br>`-s, --scope <path>`<br>`--min-depth <n>`<br>`--full`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
98
|
+
| `call-graph <symbol>` | Show incoming callers and outgoing callees for a symbol | `--full`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
97
99
|
|
|
98
100
|
### Impact
|
|
99
101
|
|
|
100
102
|
| Command | Description | Options |
|
|
101
103
|
|---|---|---|
|
|
102
|
-
| `affected <symbol>` | Transitive closure of symbols that could break if this symbol changes | `--max-depth <n>`<br>`-s, --scope <path>`<br>`--json` |
|
|
103
|
-
| `change-surface <file>` | Pre-change briefing:
|
|
104
|
-
| `co-change [file]` | Files that change together in git history without a dependency edge — hidden coupling candidates | `--min-together <n>`<br>`-n, --limit <n>`<br>`--all`<br>`--full`<br>`--json` |
|
|
105
|
-
| `diff-gate` |
|
|
106
|
-
| `incomplete-migration` | Partially-completed extraction candidates: new helpers in the diff wired into some sites while similar un-migrated sites remain | `--base <ref>`<br>`--min-containment <n>`<br>`--max-helpers <n>`<br>`-n, --limit <n>`<br>`--full`<br>`--json` |
|
|
107
|
-
| `diff-impact` | Compute changed symbols and downstream consumers from current git diff | `--base <ref>`<br>`--json` |
|
|
104
|
+
| `affected <symbol>` | Transitive closure of symbols that could break if this symbol changes | `--max-depth <n>`<br>`-s, --scope <path>`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
105
|
+
| `change-surface <file>` | Pre-change briefing: consumers, published API, operational roots, and explained change risk | `--full`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
106
|
+
| `co-change [file]` | Files that change together in git history without a dependency edge — hidden coupling candidates | `--min-together <n>`<br>`-n, --limit <n>`<br>`--all`<br>`--full`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
107
|
+
| `diff-gate` | Runtime-bounded, single-flight gate for the current diff: architecture regressions plus echo, migration, coordination, doc-drift, unused-param, and new-dead candidates; exit 1 on blocking findings | `--base <ref>`<br>`--min-together <n>`<br>`--max-echo-checks <n>`<br>`--max-helpers <n>`<br>`--baseline`<br>`--full`<br>`--skip <check>`<br>`--hook`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
108
|
+
| `incomplete-migration` | Partially-completed extraction candidates: new helpers in the diff wired into some sites while similar un-migrated sites remain | `--base <ref>`<br>`--min-containment <n>`<br>`--max-helpers <n>`<br>`-n, --limit <n>`<br>`--full`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
109
|
+
| `diff-impact` | Compute changed symbols and downstream consumers from current git diff | `--base <ref>`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
108
110
|
|
|
109
111
|
### Formal Models
|
|
110
112
|
|
|
111
113
|
| Command | Description | Options |
|
|
112
114
|
|---|---|---|
|
|
113
|
-
| `tla <operation> [spec]` | TLA+ model workflow: verify a model and mapping contract, scaffold a draft model from indexed code, generate a trace recorder, or check a recorded trace against the next-state relation | `--map <file>`<br>`--config <file>`<br>`--checker <mode>`<br>`--tla-tools <jar>`<br>`--apalache <binary>`<br>`--length <n>`<br>`--timeout-ms <n>`<br>`--trace <file>`<br>`--next <operator>`<br>`--coverage`<br>`--allow-unknown`<br>`--out <path>`<br>`--module-name <name>`<br>`--force`<br>`--full`<br>`--json` |
|
|
115
|
+
| `tla <operation> [spec]` | TLA+ model workflow: verify a model and mapping contract, scaffold a draft model from indexed code, generate a trace recorder, or check a recorded trace against the next-state relation | `--map <file>`<br>`--config <file>`<br>`--checker <mode>`<br>`--tla-tools <jar>`<br>`--apalache <binary>`<br>`--length <n>`<br>`--timeout-ms <n>`<br>`--trace <file>`<br>`--next <operator>`<br>`--coverage`<br>`--allow-unknown`<br>`--out <path>`<br>`--module-name <name>`<br>`--force`<br>`--full`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
114
116
|
|
|
115
117
|
### Planning
|
|
116
118
|
|
|
117
119
|
| Command | Description | Options |
|
|
118
120
|
|---|---|---|
|
|
119
|
-
| `plan-context <target>` | Pre-edit planning context for a symbol, file, or module | `--impact-depth <n>`<br>`--slice-depth <n>`<br>`-s, --scope <path>`<br>`-n, --limit <n>`<br>`--full`<br>`--json`<br>`--compact` |
|
|
121
|
+
| `plan-context <target>` | Pre-edit planning context for a symbol, file, or module | `--impact-depth <n>`<br>`--slice-depth <n>`<br>`-s, --scope <path>`<br>`-n, --limit <n>`<br>`--full`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
120
122
|
|
|
121
123
|
### Health
|
|
122
124
|
|
|
123
125
|
| Command | Description | Options |
|
|
124
126
|
|---|---|---|
|
|
125
|
-
| `self-audit` | Score cheap evidence paths against the best available semantic/source oracle on sampled symbols | `--samples <n>`<br>`-s, --scope <path>`<br>`--json` |
|
|
126
|
-
| `health` | Composite codebase health report with prioritized action list | `-s, --scope <path>`<br>`--full`<br>`--
|
|
127
|
-
| `complexity <symbol>` | Per-symbol complexity: branches, cyclomatic estimate, fan-in/out, callees | `--full`<br>`--json` |
|
|
127
|
+
| `self-audit` | Score cheap evidence paths against the best available semantic/source oracle on sampled symbols | `--samples <n>`<br>`-s, --scope <path>`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
128
|
+
| `health` | Composite codebase health report with prioritized action list | `-s, --scope <path>`<br>`--full`<br>`--baseline`<br>`--write-baseline`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
129
|
+
| `complexity <symbol>` | Per-symbol complexity: branches, cyclomatic estimate, fan-in/out, callees | `--full`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
128
130
|
|
|
129
131
|
### Maintenance
|
|
130
132
|
|
|
131
133
|
| Command | Description | Options |
|
|
132
134
|
|---|---|---|
|
|
133
|
-
| `bench` | Benchmark indexing and command runtimes for this repository | `--
|
|
134
|
-
| `work-audit <profile>` | Rank exact repeated computations in a profiling JSONL file by measured avoidable time | `--top <n>`<br>`--json` |
|
|
135
|
+
| `bench` | Benchmark indexing and command runtimes for this repository | `--cold-index`<br>`--include-heavy`<br>`--command <cmd>`<br>`--timeout-ms <n>`<br>`--progress`<br>`--profile`<br>`--profile-out <path>`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
136
|
+
| `work-audit <profile>` | Rank exact repeated computations in a profiling JSONL file by measured avoidable time | `--top <n>`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
135
137
|
| `install-skills` | Install skills (_shared, scip-query, scip-setup, scip-explore, scip-plan, scip-diagnose, scip-audit, scip-improve, scip-verify) into Claude Code, Codex, and shared agent roots | - |
|
|
136
|
-
| `setup-hooks` | Install or refresh project-local Codex and Claude Code lifecycle hooks | `--shared`<br>`--remove`<br>`--force`<br>`--json` |
|
|
138
|
+
| `setup-hooks` | Install or refresh project-local Codex and Claude Code lifecycle hooks | `--shared`<br>`--remove`<br>`--force`<br>`--dry-run`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
137
139
|
| `check-deps` | Check whether scip-query and the detected language indexers are actually runnable | - |
|
|
138
|
-
| `capabilities` | Report which evidence and verification capabilities are available in this project | `--matrix`<br>`--json` |
|
|
139
|
-
| `capability-matrix` | Deprecated alias for capabilities --matrix | `--json` |
|
|
140
|
+
| `capabilities` | Report which evidence and verification capabilities are available in this project | `--matrix`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
141
|
+
| `capability-matrix` | Deprecated alias for capabilities --matrix | `--json`<br>`--result-only`<br>`--compact` |
|
|
140
142
|
| `init` | Create a .scipquery.json config file for this project | - |
|
|
141
|
-
| `config-validate` | Validate .scipquery.json, including structured suppressions and declared coupling groups | `--json` |
|
|
142
|
-
| `suppress <id>` | Record an accepted finding as a file under .scipquery/suppressions/ with a required reason | `--reason <text>`<br>`--check <check>`<br>`--file <path>`<br>`--expires-at <iso>`<br>`--replace <revision>`<br>`--json` |
|
|
143
|
-
| `effectiveness` | Per-check
|
|
144
|
-
| `doctor` | Diagnose config, index freshness, dependency readiness, and project capabilities | `--json` |
|
|
145
|
-
| `setup` | Bootstrap this project: enable automatic indexing, install agent skills, refresh the index, verify capabilities, and report health | `--guided`<br>`--yes`<br>`--git-hook`<br>`--no-hooks`<br>`--no-skills`<br>`--no-parsers`<br>`--no-health`<br>`--dossier-dir <path>`<br>`--json` |
|
|
143
|
+
| `config-validate` | Validate .scipquery.json, including structured suppressions and declared coupling groups | `--json`<br>`--result-only`<br>`--compact` |
|
|
144
|
+
| `suppress <id>` | Record an accepted finding as a file under .scipquery/suppressions/ with a required reason | `--reason <text>`<br>`--reason-code <code>`<br>`--evidence <kind:referent>`<br>`--check <check>`<br>`--file <path>`<br>`--expires-at <iso>`<br>`--replace <revision>`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
145
|
+
| `effectiveness` | Per-check repository telemetry from the committed outcome ledger: verified fixes, suppressions, unresolved findings, observer authority, and anomalies | `--since <window>`<br>`--check <check>`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
146
|
+
| `doctor` | Diagnose config, index freshness, dependency readiness, and project capabilities | `--json`<br>`--result-only`<br>`--compact` |
|
|
147
|
+
| `setup` | Bootstrap this project: enable automatic indexing, install agent skills, refresh the index, verify capabilities, and report health | `--guided`<br>`--yes`<br>`--git-hook`<br>`--no-hooks`<br>`--no-skills`<br>`--no-parsers`<br>`--install-missing`<br>`--no-health`<br>`--dossier-dir <path>`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
146
148
|
| `setup-agent` | Seed agent guidance for this project: AGENTS.md/CLAUDE.md block pointing agents at the scip-query skills and diff gate, plus an optional git pre-commit backstop | `--git-hook` |
|
|
147
149
|
| `setup-ci` | Write a GitHub Actions workflow that runs scip-query reindex and diff-gate on pull requests | `--force`<br>`--dry-run` |
|
|
148
|
-
| `uninstall` | Remove scip-query-owned
|
|
149
|
-
| `watch` | Watch in the foreground or manage the per-project background refresh service | `--daemon`<br>`--status`<br>`--stop`<br>`--debounce <ms>`<br>`--cooldown <ms>`<br>`--git-poll <ms>`<br>`--idle-timeout <ms>`<br>`--json` |
|
|
150
|
-
| `status` | Show index status for this project | `--json`<br>`--
|
|
150
|
+
| `uninstall` | Remove selected scip-query-owned integrations; real removal requires exactly one of --global or --project | `--global`<br>`--project`<br>`--dry-run`<br>`--verbose`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
151
|
+
| `watch` | Watch in the foreground or manage the per-project background refresh service | `--daemon`<br>`--status`<br>`--stop`<br>`--debounce <ms>`<br>`--cooldown <ms>`<br>`--git-poll <ms>`<br>`--idle-timeout <ms>`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
152
|
+
| `status` | Show index status for this project | `--capabilities`<br>`--json`<br>`--result-only`<br>`--compact` |
|
|
151
153
|
|
|
152
154
|
<!-- END GENERATED COMMAND REFERENCE -->
|
|
153
155
|
|
|
@@ -35,21 +35,31 @@ New records conform to
|
|
|
35
35
|
They carry:
|
|
36
36
|
|
|
37
37
|
- `kind: "scip-query-suppression"`;
|
|
38
|
-
- `schemaVersion:
|
|
38
|
+
- `schemaVersion: 2`;
|
|
39
39
|
- the stable `suppressionIdentity`;
|
|
40
40
|
- producer name/version and creation/update timestamps;
|
|
41
|
-
- the
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
unversioned
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
41
|
+
- the exact suppression target and explanatory reason;
|
|
42
|
+
- a controlled adjudication reason code;
|
|
43
|
+
- inspectable counterevidence, including content hashes for file referents;
|
|
44
|
+
- the policy version, decision provenance, and invalidation conditions.
|
|
45
|
+
|
|
46
|
+
Current readers accept v1 and unversioned records as legacy policy so history
|
|
47
|
+
is not lost. Legacy records do not have enough mechanically checkable evidence
|
|
48
|
+
to authorize automatic acceptance: matching findings remain visible as policy
|
|
49
|
+
escalations until the record is explicitly replaced with a v2 decision.
|
|
50
|
+
Earlier readers classify v2 as unsupported-future and therefore fail closed
|
|
51
|
+
instead of silently treating the new evidence fields as optional. The filename
|
|
52
|
+
remains the conflict domain: different suppression identities merge as
|
|
53
|
+
different paths, while policy changes to one identity require revision-aware
|
|
54
|
+
replacement.
|
|
55
|
+
|
|
56
|
+
If a legacy, future, malformed, expired, or content-invalidated suppression
|
|
57
|
+
cannot pass current policy, it cannot waive a finding. `diff-gate` keeps the
|
|
58
|
+
matching finding unsuppressed and reports incomplete coverage or the exact
|
|
59
|
+
policy-escalation reason in JSON, human output, and Stop-hook feedback. A
|
|
60
|
+
successful gate that did accept one or more v2 decisions reports
|
|
61
|
+
`pass-with-suppressions`, preserving the difference between an ordinary clean
|
|
62
|
+
pass and an adjudicated exception.
|
|
53
63
|
|
|
54
64
|
## Current outcome-event records
|
|
55
65
|
|
|
@@ -61,7 +71,12 @@ They retain all semantic event fields at the root and add:
|
|
|
61
71
|
- `schemaVersion: 1`;
|
|
62
72
|
- `eventIdentity`, the JSON tuple of check, finding ID, transition, and
|
|
63
73
|
observed commit;
|
|
64
|
-
- producer name/version
|
|
74
|
+
- producer name/version;
|
|
75
|
+
- `gateRunId`, the logical diff-gate observation shared by retries;
|
|
76
|
+
- observer kind and whether its authority is repository-writable or protected
|
|
77
|
+
externally;
|
|
78
|
+
- the index/worktree observation receipt;
|
|
79
|
+
- the adjudication policy version on suppressed transitions.
|
|
65
80
|
|
|
66
81
|
Keeping semantic fields at the root lets the immediately prior permissive
|
|
67
82
|
reader consume new records. Current readers accept both these v1 records and
|
|
@@ -70,8 +85,17 @@ the existing unversioned event files.
|
|
|
70
85
|
The immutable filename is still a timestamp plus a hash of the complete
|
|
71
86
|
record bytes. Deduplication does not use that path or producer metadata; it
|
|
72
87
|
uses the semantic `eventIdentity`. If legacy and current records describe the
|
|
73
|
-
same fact,
|
|
74
|
-
|
|
88
|
+
same fact, comparable-base proof wins first, then protected/provenance-bearing
|
|
89
|
+
evidence, and then the earliest timestamp.
|
|
90
|
+
|
|
91
|
+
Observer kind says who originated the record: `local-agent`, `local-human`,
|
|
92
|
+
or `protected-ci`. Observer authority says what conclusion the record can
|
|
93
|
+
support. Both local kinds remain `repository-writable`, because the observer
|
|
94
|
+
can edit the same event and suppression files being measured.
|
|
95
|
+
`protected-external` is accepted only with `protected-ci` records produced by
|
|
96
|
+
a separately controlled evaluator and a gate-run attestation delivered
|
|
97
|
+
outside the writable event directory; a record field cannot attest itself
|
|
98
|
+
and ordinary CLI environment settings cannot mint that authority.
|
|
75
99
|
|
|
76
100
|
## Partial history is conservative
|
|
77
101
|
|
|
@@ -80,6 +104,18 @@ wins, as before.
|
|
|
80
104
|
coverage counts before any metrics. Metrics use only accepted records and are
|
|
81
105
|
therefore explicitly partial when `complete` is false.
|
|
82
106
|
|
|
107
|
+
`effectiveness` calls the ordinary local ratio
|
|
108
|
+
`resolutionVsSuppressionRate`. It publishes `precision` only when every event
|
|
109
|
+
in the evaluated population claims protected external authority and its
|
|
110
|
+
gate-run ID appears in a separately supplied attestation set. Mixed,
|
|
111
|
+
unattested, repository-writable, and legacy populations remain telemetry and
|
|
112
|
+
carry a null precision field. Provenance gaps, unattested authority claims,
|
|
113
|
+
mixed authority, missing gate-run identity, and anomalous suppression rates
|
|
114
|
+
produce bounded sample reports, not a mandatory per-suppression human queue.
|
|
115
|
+
Git preserves history that is present; deleting an event file cannot be
|
|
116
|
+
detected from the remaining directory, so the command never describes
|
|
117
|
+
repository-local totals as an independent grade.
|
|
118
|
+
|
|
83
119
|
Cross-HEAD repair verification needs complete committed history to establish
|
|
84
120
|
the prior lifecycle anchor. If any event candidate is incompatible, scip-query
|
|
85
121
|
retains every missing local-ledger finding and defers resolution. An omitted
|
|
@@ -113,5 +149,6 @@ removing the legacy ledger.
|
|
|
113
149
|
- Independent event files should normally keep both sides of a merge.
|
|
114
150
|
- Do not delete an unsupported record to make a warning disappear. Use a
|
|
115
151
|
reader that supports it, or deliberately migrate it with verified tooling.
|
|
116
|
-
- Rolling back
|
|
117
|
-
|
|
152
|
+
- Rolling back remains fail-closed: older readers reject v2 suppressions as
|
|
153
|
+
unsupported-future, so they cannot accidentally waive a finding using a
|
|
154
|
+
policy they do not understand.
|