scip-query 0.19.8 → 0.20.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 +97 -0
- package/README.md +158 -48
- package/dist/augment-vue-worker.js +1 -1
- package/dist/chunk-26QA6FAI.js +8 -0
- package/dist/{chunk-KJ2IIBZN.js → chunk-2HPVVXM5.js} +2 -2
- package/dist/chunk-2KAZEZ6M.js +2 -0
- package/dist/chunk-32LVLCLN.js +40 -0
- package/dist/{chunk-24GTWJ3N.js → chunk-3CLX5EOX.js} +2 -2
- package/dist/{chunk-QGGLL3UH.js → chunk-3G66UZBH.js} +2 -2
- package/dist/{chunk-AA4UWRNL.js → chunk-3ORVDL3H.js} +2 -2
- package/dist/chunk-4MAK2HOY.js +6 -0
- package/dist/{chunk-QIQ63BHW.js → chunk-4TURLRL5.js} +2 -2
- package/dist/chunk-4UQVNCQE.js +2 -0
- package/dist/chunk-55Q3WLZX.js +2 -0
- package/dist/{chunk-CTF2GDEX.js → chunk-5E4WNAVD.js} +2 -2
- package/dist/{chunk-ZCEJ63SP.js → chunk-5I5G2QOX.js} +2 -2
- package/dist/chunk-6LDJQXAH.js +2 -0
- package/dist/{chunk-3EDFLQ6A.js → chunk-6O5TICIZ.js} +2 -2
- package/dist/{chunk-ACAM6O5R.js → chunk-6SHPK5ZE.js} +2 -2
- package/dist/chunk-7BAVHKMJ.js +49 -0
- package/dist/chunk-7O5IKBTZ.js +16 -0
- package/dist/{chunk-WJL2L6MV.js → chunk-7PIO7NKH.js} +2 -2
- package/dist/chunk-7S5E7KWT.js +2 -0
- package/dist/{chunk-YLFORA5G.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-TWMJ3Y3G.js → chunk-AZJQQKDD.js} +2 -2
- package/dist/{chunk-BDOIKGDI.js → chunk-B2PX5I6M.js} +2 -2
- package/dist/{chunk-DQBCO2UY.js → chunk-B7PBSLZN.js} +2 -2
- package/dist/chunk-BBW6JFHN.js +2 -0
- package/dist/{chunk-YTVWB7YJ.js → chunk-BDCC2NPY.js} +2 -2
- package/dist/{chunk-O23I56NA.js → chunk-BNXCIFVY.js} +2 -2
- package/dist/{chunk-MLFZP76A.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-K2WO7XY7.js → chunk-CJST5ETY.js} +2 -2
- package/dist/chunk-DAFAHMNB.js +42 -0
- package/dist/{chunk-KKME5ZAI.js → chunk-DQGFVPUV.js} +2 -2
- package/dist/chunk-DQLPXMH6.js +8 -0
- package/dist/chunk-EKZTZXHZ.js +117 -0
- package/dist/{chunk-FJ5UDTQF.js → chunk-EN3O7VJA.js} +2 -2
- package/dist/{chunk-HZYDQPNY.js → chunk-EW2NTSFA.js} +2 -2
- package/dist/chunk-F3Z4OUDS.js +8 -0
- package/dist/chunk-FJH2NW7J.js +66 -0
- package/dist/{chunk-MSBDMFER.js → chunk-FKSELJQF.js} +2 -2
- package/dist/chunk-FTFP6O3L.js +11 -0
- package/dist/chunk-FYLK2DEJ.js +2 -0
- package/dist/{chunk-WUW7YUAH.js → chunk-GH74ASD6.js} +2 -2
- package/dist/{chunk-464PLI5O.js → chunk-GMXWZP2B.js} +2 -2
- package/dist/chunk-GOUBFH5O.js +3 -0
- package/dist/{chunk-FIJCV235.js → chunk-HLF2TX6R.js} +2 -2
- package/dist/{chunk-WWKWUPSU.js → chunk-HX4GQPZP.js} +2 -2
- package/dist/chunk-HX7M4BDI.js +30 -0
- package/dist/chunk-HZ72SESS.js +128 -0
- package/dist/{chunk-SERUIGV5.js → chunk-IB2N4FIY.js} +2 -2
- package/dist/chunk-ILMHV3KM.js +2 -0
- package/dist/chunk-IZYYAFN5.js +2 -0
- package/dist/{chunk-GNC4JVAN.js → chunk-JAYYFEQY.js} +2 -2
- package/dist/{chunk-QJIVBYEK.js → chunk-JDOEX4E6.js} +2 -2
- package/dist/chunk-JFGGXWQF.js +947 -0
- package/dist/chunk-JN4NMBEX.js +8 -0
- package/dist/{chunk-6M7RONVB.js → chunk-JVYA47YU.js} +2 -2
- package/dist/{chunk-7KYNAMMH.js → chunk-JW56N3KI.js} +2 -2
- package/dist/{chunk-OUBAF226.js → chunk-JZ2OXNWB.js} +2 -2
- package/dist/chunk-KMKTIO2G.js +8 -0
- package/dist/chunk-L5GJNV2T.js +8 -0
- package/dist/{chunk-MNSTUIDD.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-7FT5Y65S.js → chunk-MKCDWWGV.js} +2 -2
- package/dist/chunk-MNE7YG56.js +2 -0
- package/dist/{chunk-7QHY3H7P.js → chunk-MRXBEXSY.js} +2 -2
- package/dist/chunk-MV7OWDUX.js +2 -0
- package/dist/{chunk-ZJ5CBXK3.js → chunk-N5W4YZMK.js} +2 -2
- package/dist/chunk-NGEXCJJW.js +11 -0
- package/dist/{chunk-7SWJEWJF.js → chunk-NIW6JDC5.js} +2 -2
- package/dist/{chunk-O3O4XXO6.js → chunk-O64IZ6UX.js} +2 -2
- package/dist/{chunk-3ZSJ3PWF.js → chunk-PBUQFCNB.js} +2 -2
- package/dist/{chunk-7RAG65VK.js → chunk-POAVPHH7.js} +2 -2
- package/dist/{chunk-A3QXWFBK.js → chunk-PQCI4SQX.js} +2 -2
- package/dist/{chunk-4BV4QAZJ.js → chunk-PXY7F6Y4.js} +2 -2
- package/dist/chunk-RDO52JGY.js +2 -0
- package/dist/chunk-RJT3TUUZ.js +2 -0
- package/dist/{chunk-S4S2WOIX.js → chunk-RUJURYSV.js} +2 -2
- package/dist/{chunk-JAY7YWS3.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-NE3TZUCI.js → chunk-SRAFT254.js} +2 -2
- package/dist/{chunk-ELLMY7XJ.js → chunk-SXP2MBJH.js} +2 -2
- package/dist/chunk-T7YQSHPQ.js +3 -0
- package/dist/{chunk-WY45BHKQ.js → chunk-TFRAYKN6.js} +2 -2
- package/dist/{chunk-2SNGN6U4.js → chunk-UJCOIXDY.js} +2 -2
- package/dist/{chunk-MZZBAITE.js → chunk-UJPRPGCO.js} +2 -2
- package/dist/chunk-W4ETQAXM.js +2 -0
- package/dist/chunk-WCCFZ7V7.js +113 -0
- package/dist/chunk-WUPW3UN3.js +3 -0
- package/dist/{chunk-7LSVMFX7.js → chunk-WXZLAAWK.js} +2 -2
- package/dist/{chunk-5ML2BNRH.js → chunk-X54AGLVX.js} +2 -2
- package/dist/chunk-XKWKXZKW.js +20 -0
- package/dist/{chunk-5YLUDDAF.js → chunk-XSRF6Q77.js} +2 -2
- package/dist/chunk-Y2MVPNKY.js +5 -0
- package/dist/{chunk-JHF3E4YM.js → chunk-YKUU5AIC.js} +2 -2
- package/dist/{chunk-E3HYEQO7.js → chunk-YLCJLTPL.js} +2 -2
- package/dist/{chunk-7VCOXZH3.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-P3UO3EH3.js → chunk-ZK26BAQL.js} +2 -2
- package/dist/{chunk-33KUO7CG.js → chunk-ZTETIQ35.js} +2 -2
- package/dist/cli.js +3 -8
- package/dist/command-descriptors-DSS46KXI.js +642 -0
- package/dist/{config-types-B6MEoRNy.d.ts → config-types-jVM3D7MA.d.ts} +68 -2
- package/dist/{db-DYLKr9Wn.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-DgxIDXJC.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 +21 -21
- package/dist/reindex.d.ts +3 -3
- package/dist/reindex.js +33 -33
- package/dist/runtime.d.ts +5 -3
- 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-Cc6c00-a.d.ts → scip-cli-BnEwZRLJ.d.ts} +1 -1
- 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 +13 -6
- package/docs/CLI_JSON_OUTPUT.md +110 -22
- package/docs/COMMAND_REFERENCE.md +88 -88
- 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 +31 -14
- package/docs/TELEMETRY_RETENTION.md +11 -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/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 +5 -5
- package/skills/_shared/SKILL.md +2 -2
- 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 +6 -6
- 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 +3 -3
- 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 +2 -2
- 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 +10 -10
- package/skills/scip-verify/references/calibrate-detectors.md +7 -7
- package/dist/chunk-2465DLHK.js +0 -3
- package/dist/chunk-2U3OLUNJ.js +0 -61
- package/dist/chunk-33XTHFKR.js +0 -2
- package/dist/chunk-43KC6EQZ.js +0 -2
- package/dist/chunk-47BU5Z4T.js +0 -8
- package/dist/chunk-4YTUWQ6M.js +0 -18
- package/dist/chunk-64MNV6AB.js +0 -8
- package/dist/chunk-67QRR5YC.js +0 -6
- package/dist/chunk-6GXYN7YA.js +0 -40
- package/dist/chunk-A2TNXAXO.js +0 -8
- package/dist/chunk-APMMR5Y2.js +0 -2
- package/dist/chunk-AZFUMCQB.js +0 -2
- package/dist/chunk-BNXICU42.js +0 -33
- package/dist/chunk-C5Q44Q5D.js +0 -3
- package/dist/chunk-DQGSM7RZ.js +0 -20
- package/dist/chunk-E2LAW7SL.js +0 -30
- package/dist/chunk-E4NFOAD4.js +0 -6
- package/dist/chunk-E5HNT4X2.js +0 -3
- package/dist/chunk-FD3HFKXR.js +0 -5
- package/dist/chunk-GHKEJTCE.js +0 -35
- package/dist/chunk-GLZTVKAB.js +0 -16
- package/dist/chunk-HIB452NU.js +0 -949
- package/dist/chunk-IF6FP6B2.js +0 -66
- package/dist/chunk-JORHF5AL.js +0 -108
- package/dist/chunk-KSGTULOS.js +0 -9
- package/dist/chunk-KXDJAG4N.js +0 -38
- package/dist/chunk-L4S2A7BV.js +0 -2
- package/dist/chunk-LP3ARJKF.js +0 -8
- package/dist/chunk-LSOR3LQG.js +0 -3
- package/dist/chunk-NTUMF2X3.js +0 -56
- package/dist/chunk-QOXBSI6G.js +0 -20
- package/dist/chunk-QXK6UUSM.js +0 -2
- package/dist/chunk-RA3AYNWP.js +0 -112
- package/dist/chunk-RJMDJR3A.js +0 -2
- package/dist/chunk-RLH5VUMG.js +0 -2
- package/dist/chunk-SMQWE25B.js +0 -3
- package/dist/chunk-TAVELHYR.js +0 -2
- package/dist/chunk-VAXNI5NE.js +0 -146
- package/dist/chunk-VVY2G5ET.js +0 -2
- package/dist/chunk-W3DBTGL4.js +0 -11
- package/dist/chunk-WANA4KAQ.js +0 -5
- package/dist/chunk-X4FR5BZF.js +0 -9
- package/dist/chunk-X6RKPDY7.js +0 -2
- package/dist/chunk-YCPASUCX.js +0 -2
- package/dist/chunk-ZL2OGDCD.js +0 -2
- package/dist/command-descriptors-ZW5J4ZEM.js +0 -631
- package/dist/direct-navigation-42YHQPOI.js +0 -3
|
@@ -27,12 +27,68 @@
|
|
|
27
27
|
},
|
|
28
28
|
"comparisonBaseCommit": { "type": "string" },
|
|
29
29
|
"verifiedAgainstCommit": { "type": "string" },
|
|
30
|
-
"symbol": { "type": "string" }
|
|
30
|
+
"symbol": { "type": "string" },
|
|
31
|
+
"gateRunId": { "type": "string", "minLength": 1, "maxLength": 256 },
|
|
32
|
+
"observer": {
|
|
33
|
+
"type": "object",
|
|
34
|
+
"required": ["kind", "authority"],
|
|
35
|
+
"properties": {
|
|
36
|
+
"kind": { "enum": ["local-agent", "local-human", "protected-ci"] },
|
|
37
|
+
"authority": { "enum": ["repository-writable", "protected-external"] },
|
|
38
|
+
"source": { "type": "string", "minLength": 1, "maxLength": 256 }
|
|
39
|
+
},
|
|
40
|
+
"allOf": [
|
|
41
|
+
{
|
|
42
|
+
"if": { "properties": { "authority": { "const": "protected-external" } }, "required": ["authority"] },
|
|
43
|
+
"then": { "properties": { "kind": { "const": "protected-ci" } } }
|
|
44
|
+
}
|
|
45
|
+
],
|
|
46
|
+
"additionalProperties": true
|
|
47
|
+
},
|
|
48
|
+
"observation": {
|
|
49
|
+
"type": "object",
|
|
50
|
+
"required": ["schemaVersion", "authorityKind", "observedAt", "projectIdentity"],
|
|
51
|
+
"properties": {
|
|
52
|
+
"schemaVersion": { "const": 1 },
|
|
53
|
+
"authorityKind": {
|
|
54
|
+
"enum": ["index-worktree", "index-only", "worktree-only", "process-local"]
|
|
55
|
+
},
|
|
56
|
+
"observedAt": { "type": "string", "format": "date-time" },
|
|
57
|
+
"projectIdentity": { "type": "string", "minLength": 1 },
|
|
58
|
+
"index": {
|
|
59
|
+
"type": "object",
|
|
60
|
+
"required": ["generationIdentity", "source", "alignment"],
|
|
61
|
+
"properties": {
|
|
62
|
+
"generationIdentity": { "type": "string", "minLength": 1 },
|
|
63
|
+
"source": { "enum": ["immutable", "legacy"] },
|
|
64
|
+
"alignment": { "enum": ["not-certified", "leased"] }
|
|
65
|
+
},
|
|
66
|
+
"additionalProperties": true
|
|
67
|
+
},
|
|
68
|
+
"worktree": {
|
|
69
|
+
"type": "object",
|
|
70
|
+
"required": ["identity", "clean"],
|
|
71
|
+
"properties": {
|
|
72
|
+
"identity": { "type": "string", "minLength": 1 },
|
|
73
|
+
"clean": { "type": "boolean" },
|
|
74
|
+
"headCommit": { "type": "string", "minLength": 1 },
|
|
75
|
+
"treeOid": { "type": "string", "minLength": 1 }
|
|
76
|
+
},
|
|
77
|
+
"additionalProperties": true
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
"additionalProperties": true
|
|
81
|
+
},
|
|
82
|
+
"suppressionPolicyVersion": { "type": "integer", "minimum": 1 }
|
|
31
83
|
},
|
|
32
84
|
"allOf": [
|
|
33
85
|
{
|
|
34
86
|
"if": { "required": ["verifiedAgainstCommit"] },
|
|
35
87
|
"then": { "properties": { "event": { "const": "resolved" } } }
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"if": { "required": ["suppressionPolicyVersion"] },
|
|
91
|
+
"then": { "properties": { "event": { "const": "suppressed" } } }
|
|
36
92
|
}
|
|
37
93
|
],
|
|
38
94
|
"additionalProperties": true
|
|
@@ -143,7 +143,88 @@
|
|
|
143
143
|
"file": { "type": "string", "minLength": 1 },
|
|
144
144
|
"reason": { "type": "string", "minLength": 1 },
|
|
145
145
|
"expiresAt": { "type": "string", "format": "date-time" },
|
|
146
|
-
"createdAt": { "type": "string", "format": "date-time" }
|
|
146
|
+
"createdAt": { "type": "string", "format": "date-time" },
|
|
147
|
+
"decision": {
|
|
148
|
+
"type": "object",
|
|
149
|
+
"required": ["kind", "reasonCode", "decidedBy", "policyVersion", "evidence", "invalidateOn"],
|
|
150
|
+
"additionalProperties": true,
|
|
151
|
+
"properties": {
|
|
152
|
+
"kind": { "const": "automated-adjudication" },
|
|
153
|
+
"reasonCode": {
|
|
154
|
+
"enum": [
|
|
155
|
+
"entry-surface",
|
|
156
|
+
"generated-code",
|
|
157
|
+
"compatibility-shim",
|
|
158
|
+
"reflection-or-registration",
|
|
159
|
+
"test-fixture",
|
|
160
|
+
"intentional-twin",
|
|
161
|
+
"historical-coupling-ended",
|
|
162
|
+
"detector-counterexample"
|
|
163
|
+
]
|
|
164
|
+
},
|
|
165
|
+
"decidedBy": { "enum": ["agent", "human"] },
|
|
166
|
+
"policyVersion": { "const": 1 },
|
|
167
|
+
"observation": {
|
|
168
|
+
"type": "object",
|
|
169
|
+
"required": ["schemaVersion", "authorityKind", "observedAt", "projectIdentity"],
|
|
170
|
+
"properties": {
|
|
171
|
+
"schemaVersion": { "const": 1 },
|
|
172
|
+
"authorityKind": {
|
|
173
|
+
"enum": ["index-worktree", "index-only", "worktree-only", "process-local"]
|
|
174
|
+
},
|
|
175
|
+
"observedAt": { "type": "string", "format": "date-time" },
|
|
176
|
+
"projectIdentity": { "type": "string", "minLength": 1 },
|
|
177
|
+
"index": {
|
|
178
|
+
"type": "object",
|
|
179
|
+
"required": ["generationIdentity", "source", "alignment"],
|
|
180
|
+
"properties": {
|
|
181
|
+
"generationIdentity": { "type": "string", "minLength": 1 },
|
|
182
|
+
"source": { "enum": ["immutable", "legacy"] },
|
|
183
|
+
"alignment": { "enum": ["not-certified", "leased"] }
|
|
184
|
+
},
|
|
185
|
+
"additionalProperties": true
|
|
186
|
+
},
|
|
187
|
+
"worktree": {
|
|
188
|
+
"type": "object",
|
|
189
|
+
"required": ["identity", "clean"],
|
|
190
|
+
"properties": {
|
|
191
|
+
"identity": { "type": "string", "minLength": 1 },
|
|
192
|
+
"clean": { "type": "boolean" },
|
|
193
|
+
"headCommit": { "type": "string", "minLength": 1 },
|
|
194
|
+
"treeOid": { "type": "string", "minLength": 1 }
|
|
195
|
+
},
|
|
196
|
+
"additionalProperties": true
|
|
197
|
+
}
|
|
198
|
+
},
|
|
199
|
+
"additionalProperties": true
|
|
200
|
+
},
|
|
201
|
+
"evidence": {
|
|
202
|
+
"type": "array",
|
|
203
|
+
"minItems": 1,
|
|
204
|
+
"items": {
|
|
205
|
+
"type": "object",
|
|
206
|
+
"required": ["kind", "referent", "claim"],
|
|
207
|
+
"additionalProperties": true,
|
|
208
|
+
"properties": {
|
|
209
|
+
"kind": { "enum": ["source", "config", "test", "graph"] },
|
|
210
|
+
"referent": { "type": "string", "minLength": 1 },
|
|
211
|
+
"claim": { "type": "string", "minLength": 1 },
|
|
212
|
+
"contentHash": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
|
|
213
|
+
"generation": { "type": "string", "minLength": 1 }
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
},
|
|
217
|
+
"invalidateOn": {
|
|
218
|
+
"type": "object",
|
|
219
|
+
"required": ["targetContentChange", "detectorMajorChange"],
|
|
220
|
+
"additionalProperties": true,
|
|
221
|
+
"properties": {
|
|
222
|
+
"targetContentChange": { "type": "boolean" },
|
|
223
|
+
"detectorMajorChange": { "type": "boolean" }
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
}
|
|
147
228
|
},
|
|
148
229
|
"anyOf": [{ "required": ["id"] }, { "required": ["check"] }]
|
|
149
230
|
},
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"$id": "https://unpkg.com/scip-query/docs/schemas/suppression-record.schema.json",
|
|
4
|
-
"title": "scip-query suppression record
|
|
4
|
+
"title": "scip-query suppression record v2",
|
|
5
5
|
"description": "A repository-owned policy decision stored as one file under .scipquery/suppressions/.",
|
|
6
6
|
"type": "object",
|
|
7
|
-
"required": ["kind", "schemaVersion", "suppressionIdentity", "writer", "reason", "createdAt"],
|
|
7
|
+
"required": ["kind", "schemaVersion", "suppressionIdentity", "writer", "reason", "createdAt", "decision"],
|
|
8
8
|
"properties": {
|
|
9
9
|
"kind": { "const": "scip-query-suppression" },
|
|
10
|
-
"schemaVersion": { "const":
|
|
10
|
+
"schemaVersion": { "const": 2 },
|
|
11
11
|
"suppressionIdentity": { "type": "string", "minLength": 1 },
|
|
12
12
|
"writer": {
|
|
13
13
|
"type": "object",
|
|
@@ -22,6 +22,87 @@
|
|
|
22
22
|
"check": { "type": "string", "minLength": 1 },
|
|
23
23
|
"file": { "type": "string", "minLength": 1 },
|
|
24
24
|
"reason": { "type": "string", "minLength": 1 },
|
|
25
|
+
"decision": {
|
|
26
|
+
"type": "object",
|
|
27
|
+
"required": ["kind", "reasonCode", "decidedBy", "policyVersion", "evidence", "invalidateOn"],
|
|
28
|
+
"properties": {
|
|
29
|
+
"kind": { "const": "automated-adjudication" },
|
|
30
|
+
"reasonCode": {
|
|
31
|
+
"enum": [
|
|
32
|
+
"entry-surface",
|
|
33
|
+
"generated-code",
|
|
34
|
+
"compatibility-shim",
|
|
35
|
+
"reflection-or-registration",
|
|
36
|
+
"test-fixture",
|
|
37
|
+
"intentional-twin",
|
|
38
|
+
"historical-coupling-ended",
|
|
39
|
+
"detector-counterexample"
|
|
40
|
+
]
|
|
41
|
+
},
|
|
42
|
+
"decidedBy": { "enum": ["agent", "human"] },
|
|
43
|
+
"policyVersion": { "const": 1 },
|
|
44
|
+
"observation": {
|
|
45
|
+
"type": "object",
|
|
46
|
+
"required": ["schemaVersion", "authorityKind", "observedAt", "projectIdentity"],
|
|
47
|
+
"properties": {
|
|
48
|
+
"schemaVersion": { "const": 1 },
|
|
49
|
+
"authorityKind": {
|
|
50
|
+
"enum": ["index-worktree", "index-only", "worktree-only", "process-local"]
|
|
51
|
+
},
|
|
52
|
+
"observedAt": { "type": "string", "format": "date-time" },
|
|
53
|
+
"projectIdentity": { "type": "string", "minLength": 1 },
|
|
54
|
+
"index": {
|
|
55
|
+
"type": "object",
|
|
56
|
+
"required": ["generationIdentity", "source", "alignment"],
|
|
57
|
+
"properties": {
|
|
58
|
+
"generationIdentity": { "type": "string", "minLength": 1 },
|
|
59
|
+
"source": { "enum": ["immutable", "legacy"] },
|
|
60
|
+
"alignment": { "enum": ["not-certified", "leased"] }
|
|
61
|
+
},
|
|
62
|
+
"additionalProperties": true
|
|
63
|
+
},
|
|
64
|
+
"worktree": {
|
|
65
|
+
"type": "object",
|
|
66
|
+
"required": ["identity", "clean"],
|
|
67
|
+
"properties": {
|
|
68
|
+
"identity": { "type": "string", "minLength": 1 },
|
|
69
|
+
"clean": { "type": "boolean" },
|
|
70
|
+
"headCommit": { "type": "string", "minLength": 1 },
|
|
71
|
+
"treeOid": { "type": "string", "minLength": 1 }
|
|
72
|
+
},
|
|
73
|
+
"additionalProperties": true
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
"additionalProperties": true
|
|
77
|
+
},
|
|
78
|
+
"evidence": {
|
|
79
|
+
"type": "array",
|
|
80
|
+
"minItems": 1,
|
|
81
|
+
"items": {
|
|
82
|
+
"type": "object",
|
|
83
|
+
"required": ["kind", "referent", "claim"],
|
|
84
|
+
"properties": {
|
|
85
|
+
"kind": { "enum": ["source", "config", "test", "graph"] },
|
|
86
|
+
"referent": { "type": "string", "minLength": 1 },
|
|
87
|
+
"claim": { "type": "string", "minLength": 1 },
|
|
88
|
+
"contentHash": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
|
|
89
|
+
"generation": { "type": "string", "minLength": 1 }
|
|
90
|
+
},
|
|
91
|
+
"additionalProperties": true
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
"invalidateOn": {
|
|
95
|
+
"type": "object",
|
|
96
|
+
"required": ["targetContentChange", "detectorMajorChange"],
|
|
97
|
+
"properties": {
|
|
98
|
+
"targetContentChange": { "type": "boolean" },
|
|
99
|
+
"detectorMajorChange": { "type": "boolean" }
|
|
100
|
+
},
|
|
101
|
+
"additionalProperties": true
|
|
102
|
+
}
|
|
103
|
+
},
|
|
104
|
+
"additionalProperties": true
|
|
105
|
+
},
|
|
25
106
|
"expiresAt": { "type": "string", "format": "date-time" },
|
|
26
107
|
"createdAt": { "type": "string", "format": "date-time" },
|
|
27
108
|
"updatedAt": { "type": "string", "format": "date-time" }
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "scip-query",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.20.0",
|
|
4
4
|
"description": "Evidence and verification for AI coding agents: map code, reuse concepts, finish migrations, and gate diffs.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -320,7 +320,7 @@
|
|
|
320
320
|
"format:check": "prettier --check \"{src,tests,scripts}/**/*.{ts,tsx,js,mjs,json}\" \"*.{ts,js,json}\"",
|
|
321
321
|
"test": "vitest run",
|
|
322
322
|
"test:watch": "vitest",
|
|
323
|
-
"typecheck": "tsc --noEmit",
|
|
323
|
+
"typecheck": "tsc --noEmit && tsc -p tests/fixtures/invocation-coverage-contract/tsconfig.json && tsc -p tests/fixtures/protocol-state-contract/tsconfig.json",
|
|
324
324
|
"audit:prod": "node scripts/audit-production-dependencies.mjs",
|
|
325
325
|
"api:report": "node scripts/api-surface-contract.mjs report",
|
|
326
326
|
"api:check": "npm run build && node scripts/api-surface-contract.mjs check && tsc -p tests/fixtures/public-api-consumer/tsconfig.json",
|
|
@@ -358,14 +358,14 @@
|
|
|
358
358
|
],
|
|
359
359
|
"license": "Apache-2.0",
|
|
360
360
|
"engines": {
|
|
361
|
-
"node": ">=
|
|
361
|
+
"node": ">=22.0.0"
|
|
362
362
|
},
|
|
363
363
|
"dependencies": {
|
|
364
364
|
"@bufbuild/protobuf": "^2.11.0",
|
|
365
365
|
"@c4312/scip": "^0.1.0",
|
|
366
366
|
"@vue/compiler-dom": "^3.5.40",
|
|
367
367
|
"@vue/compiler-sfc": "^3.5.40",
|
|
368
|
-
"better-sqlite3": "^
|
|
368
|
+
"better-sqlite3": "^13.0.2",
|
|
369
369
|
"chokidar": "^4.0.3",
|
|
370
370
|
"commander": "^13.1.0",
|
|
371
371
|
"ignore": "^7.0.3",
|
|
@@ -403,7 +403,7 @@
|
|
|
403
403
|
"vitest": "^3.2.7"
|
|
404
404
|
},
|
|
405
405
|
"allowScripts": {
|
|
406
|
-
"better-sqlite3
|
|
406
|
+
"better-sqlite3": false,
|
|
407
407
|
"esbuild@0.27.7": true,
|
|
408
408
|
"fsevents@2.3.3": true,
|
|
409
409
|
"tree-sitter@0.21.1": true,
|
package/skills/_shared/SKILL.md
CHANGED
|
@@ -83,13 +83,13 @@ Look symbols up by partial name, no parentheses: `scip-query code parseConfig`,
|
|
|
83
83
|
1. `scip-query init` — creates `.scipquery.json` for a project. Run once, at bootstrap, before any config-dependent command.
|
|
84
84
|
2. `scip-query config-validate` — validates `.scipquery.json`, including structured suppressions and declared coupling groups. Run after hand-editing either.
|
|
85
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>]
|
|
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
87
|
|
|
88
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
89
|
|
|
90
90
|
## Postcheck
|
|
91
91
|
|
|
92
|
-
At final verification for a coherent diff, run `scip-query status --capabilities` once and `scip-query diff-gate
|
|
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
93
|
|
|
94
94
|
## Subagent evidence boundary
|
|
95
95
|
|
|
@@ -94,7 +94,7 @@ scope, runtime capability, or pagination change it.
|
|
|
94
94
|
| `scip-query init` | Can a starter scip-query configuration be created for this project? | configuration path and creation outcome | `complete` |
|
|
95
95
|
| `scip-query config-validate` | Is this project configuration valid and internally consistent? | validation diagnostics with config paths | `complete` |
|
|
96
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` |
|
|
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
98
|
| `scip-query doctor` | Why is scip-query unhealthy or unavailable in this project? | config, freshness, dependency, and capability diagnostics | `complete` |
|
|
99
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
100
|
| `scip-query setup-agent` | Can project agent guidance and optional git enforcement be seeded? | written, unchanged, and skipped agent files or hooks | `complete` |
|
|
@@ -52,7 +52,7 @@ Every completed diff-gate run — including JSON and hook mode — writes each c
|
|
|
52
52
|
|
|
53
53
|
## Effectiveness
|
|
54
54
|
|
|
55
|
-
`scip-query effectiveness [--since 30d] [--check <check>]
|
|
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
56
|
|
|
57
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
58
|
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
name: scip-audit
|
|
3
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
4
|
commands:
|
|
5
|
-
- template: "scip-query health
|
|
5
|
+
- template: "scip-query health"
|
|
6
6
|
when: "Orient to the repository-wide finding inventory before confirming candidates."
|
|
7
|
-
- template: "scip-query decorative-checkers --
|
|
7
|
+
- template: "scip-query decorative-checkers --full"
|
|
8
8
|
when: "Audit whether validation-shaped code has a reachable failure exit."
|
|
9
|
-
- template: "scip-query doc-drift --
|
|
9
|
+
- template: "scip-query doc-drift --full"
|
|
10
10
|
when: "Find current-guidance documents whose cited or coupled code moved."
|
|
11
11
|
---
|
|
12
12
|
|
|
@@ -24,9 +24,9 @@ Load shared mechanics (evidence freshness, lookup, the full command
|
|
|
24
24
|
|
|
25
25
|
| Command | Purpose | Returns | Coverage | When |
|
|
26
26
|
| --- | --- | --- | --- | --- |
|
|
27
|
-
| `scip-query health
|
|
28
|
-
| `scip-query decorative-checkers --
|
|
29
|
-
| `scip-query doc-drift --
|
|
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
30
|
|
|
31
31
|
Use this shortlist first. Open [`../_shared/SKILL.md`](../_shared/SKILL.md) only when it is insufficient.
|
|
32
32
|
<!-- END GENERATED SKILL COMMANDS -->
|
|
@@ -60,7 +60,7 @@ call site), hedged, or asserted.
|
|
|
60
60
|
**Complete when:** every producer has one of the three labels with the one
|
|
61
61
|
line of source evidence that justifies it.
|
|
62
62
|
|
|
63
|
-
Use `scip-query capabilities --matrix
|
|
63
|
+
Use `scip-query capabilities --matrix` as a spot-check: an
|
|
64
64
|
already-known example of a fixed derived-status surface, useful for
|
|
65
65
|
calibrating what "derived" looks like in this codebase before judging
|
|
66
66
|
ambiguous cases.
|
|
@@ -19,8 +19,8 @@ Three common modes, same underlying workflow:
|
|
|
19
19
|
## Step 1 — Establish evidence
|
|
20
20
|
|
|
21
21
|
Before any sweeping begins, run `scip-query doctor`, `scip-query status
|
|
22
|
-
--capabilities`, `scip-query health
|
|
23
|
-
|
|
22
|
+
--capabilities`, `scip-query health`, `scip-query capabilities`, and
|
|
23
|
+
`scip-query config-validate`.
|
|
24
24
|
|
|
25
25
|
**Complete when:** unavailable capabilities are explicitly recorded as
|
|
26
26
|
unavailable, not silently skipped.
|
|
@@ -33,23 +33,23 @@ unavailable — never silently omit a class.
|
|
|
33
33
|
Core sweep set:
|
|
34
34
|
|
|
35
35
|
```
|
|
36
|
-
scip-query cleanup-plan --verify
|
|
37
|
-
scip-query duplicate-bodies --
|
|
38
|
-
scip-query recent-duplicates --
|
|
39
|
-
scip-query incomplete-migration --
|
|
40
|
-
scip-query unused-params --
|
|
41
|
-
scip-query passthrough-candidates --
|
|
42
|
-
scip-query dead --
|
|
43
|
-
scip-query isolated --
|
|
36
|
+
scip-query cleanup-plan --verify # compiler-verified batched deletion plan
|
|
37
|
+
scip-query duplicate-bodies --full # exact duplicate small-body candidates
|
|
38
|
+
scip-query recent-duplicates --full # recent code re-implementing established code
|
|
39
|
+
scip-query incomplete-migration --full # partially-completed extractions
|
|
40
|
+
scip-query unused-params --full
|
|
41
|
+
scip-query passthrough-candidates --full
|
|
42
|
+
scip-query dead --full
|
|
43
|
+
scip-query isolated --full
|
|
44
44
|
scip-query cycles
|
|
45
|
-
scip-query co-change --
|
|
46
|
-
scip-query doc-drift --
|
|
45
|
+
scip-query co-change --full # hidden file-level coupling from git history
|
|
46
|
+
scip-query doc-drift --full # docs whose referenced/co-changed code kept moving
|
|
47
47
|
```
|
|
48
48
|
|
|
49
|
-
`scip-query health
|
|
50
|
-
action list; `scip-query cleanup-plan --verify
|
|
49
|
+
`scip-query health` establishes the composite score and prioritized
|
|
50
|
+
action list; `scip-query cleanup-plan --verify` combines graph-fact
|
|
51
51
|
dead code with the cascade candidates it unlocks. `scip-query doc-drift
|
|
52
|
-
--
|
|
52
|
+
--full` finds stale-doc candidates: code a doc references, or
|
|
53
53
|
co-changed with, that kept changing after the doc stopped — run it whenever
|
|
54
54
|
the audit is about living-doc drift, not just code cleanup.
|
|
55
55
|
|
|
@@ -58,8 +58,8 @@ large-component/view detector commands (see `references/frontend.md`) to the
|
|
|
58
58
|
sweep.
|
|
59
59
|
|
|
60
60
|
**Optional deep dives**, run only after the main sweep is exhausted:
|
|
61
|
-
`scip-query stale-abstractions --
|
|
62
|
-
wrapper-candidates --
|
|
61
|
+
`scip-query stale-abstractions --full` and `scip-query
|
|
62
|
+
wrapper-candidates --full` have near-zero precision on codebases with
|
|
63
63
|
intentional layering or ambient types — treat every hit as a lead to
|
|
64
64
|
confirm, never a finding on its own.
|
|
65
65
|
|
|
@@ -70,9 +70,8 @@ target**, **intentional design**, **false positive**, or **blocked**.
|
|
|
70
70
|
|
|
71
71
|
To confirm a high-priority candidate, inspect source and graph evidence with
|
|
72
72
|
`scip-query code`, `scip-query refs`, `scip-query fan-in`, `scip-query
|
|
73
|
-
fan-out`, `scip-query affected
|
|
74
|
-
|
|
75
|
-
--full`.
|
|
73
|
+
fan-out`, `scip-query affected`, `scip-query change-surface --full`,
|
|
74
|
+
`scip-query similar --plan`, and `scip-query co-change --full`.
|
|
76
75
|
|
|
77
76
|
Because a deletion is this audit's scrutiny-ending verdict, a candidate
|
|
78
77
|
classified "confirmed fix target" that deletes code must survive refutation
|
|
@@ -124,8 +124,8 @@ Add mature boundary path patterns to `.scipquery.json` under
|
|
|
124
124
|
}
|
|
125
125
|
```
|
|
126
126
|
|
|
127
|
-
After adding boundaries, run `scip-query config-validate
|
|
128
|
-
`scip-query architecture
|
|
127
|
+
After adding boundaries, run `scip-query config-validate` then
|
|
128
|
+
`scip-query architecture` to check the new boundary configuration.
|
|
129
129
|
Use unmapped and ambiguous files to repair boundary membership, and use
|
|
130
130
|
actual boundary edges, reciprocal pairs, and strongly connected groups to
|
|
131
131
|
test whether boundary names describe real separation.
|
|
@@ -215,8 +215,8 @@ co-change <moved-file-or-config>`. Also run the project's tests or typecheck
|
|
|
215
215
|
for the affected workspace.
|
|
216
216
|
|
|
217
217
|
If `.scipquery.json` locality changed, run `scip-query config-validate`,
|
|
218
|
-
`scip-query locality-candidates --
|
|
219
|
-
|
|
218
|
+
`scip-query locality-candidates --full`, `scip-query architecture`,
|
|
219
|
+
`scip-query drift --architecture`, and `scip-query diff-gate`.
|
|
220
220
|
|
|
221
221
|
Then invoke `scip-verify`; the implementation is complete only when imports,
|
|
222
222
|
tests, locality signals, and verification are checked.
|
|
@@ -40,20 +40,20 @@ Then run, all uncapped with `--full --json`:
|
|
|
40
40
|
|
|
41
41
|
**React:**
|
|
42
42
|
```
|
|
43
|
-
scip-query react-component-duplicates --scope <scope> --full
|
|
44
|
-
scip-query react-hook-candidates --scope <scope> --full
|
|
45
|
-
scip-query react-large-component-pressure --scope <scope> --full
|
|
46
|
-
scip-query recent-duplicates --scope <scope> --full
|
|
47
|
-
scip-query health --scope <scope>
|
|
43
|
+
scip-query react-component-duplicates --scope <scope> --full
|
|
44
|
+
scip-query react-hook-candidates --scope <scope> --full
|
|
45
|
+
scip-query react-large-component-pressure --scope <scope> --full
|
|
46
|
+
scip-query recent-duplicates --scope <scope> --full
|
|
47
|
+
scip-query health --scope <scope>
|
|
48
48
|
```
|
|
49
49
|
|
|
50
50
|
**Vue:**
|
|
51
51
|
```
|
|
52
|
-
scip-query vue-component-duplicates --scope <scope> --full
|
|
53
|
-
scip-query vue-composable-candidates --scope <scope> --full
|
|
54
|
-
scip-query vue-large-view-pressure --scope <scope> --full
|
|
55
|
-
scip-query recent-duplicates --scope <scope> --full
|
|
56
|
-
scip-query health
|
|
52
|
+
scip-query vue-component-duplicates --scope <scope> --full
|
|
53
|
+
scip-query vue-composable-candidates --scope <scope> --full
|
|
54
|
+
scip-query vue-large-view-pressure --scope <scope> --full
|
|
55
|
+
scip-query recent-duplicates --scope <scope> --full
|
|
56
|
+
scip-query health
|
|
57
57
|
```
|
|
58
58
|
|
|
59
59
|
Every `*-duplicates`/`*-candidates`/`*-pressure` command has bounded
|
|
@@ -23,12 +23,12 @@ independently in only some of its copies.
|
|
|
23
23
|
|
|
24
24
|
## Detect
|
|
25
25
|
|
|
26
|
-
Run `scip-query twin-drift --
|
|
26
|
+
Run `scip-query twin-drift --full` to surface every DIVERGENT and
|
|
27
27
|
near-name group in scope; scope it to a module with `-s/--scope <path>` when
|
|
28
28
|
the review should be bounded. Record group count, member count, and
|
|
29
29
|
`maxDivergence` per group.
|
|
30
30
|
|
|
31
|
-
Cross-check results against `scip-query duplicate-bodies --
|
|
31
|
+
Cross-check results against `scip-query duplicate-bodies --full` —
|
|
32
32
|
IDENTICAL groups belong to `duplicate-bodies`, not here; do not re-report
|
|
33
33
|
them. Homonyms — groups with similarity below `--min-similarity` (default
|
|
34
34
|
0.3) — are noise and should not be chased unless `--include-homonyms` was
|
|
@@ -18,11 +18,11 @@ Load shared mechanics from [`../../_shared/SKILL.md`](../../_shared/SKILL.md) on
|
|
|
18
18
|
| `scip-query fan-in <suspect-symbol>` / `scip-query fan-out <suspect-file>` | Follow execution: who depends on the suspect symbol/file, and what it depends on. |
|
|
19
19
|
| `scip-query dataflow <symbol-or-variable>` | Follow data: producers, consumers, and usage sites (bounded coverage). |
|
|
20
20
|
| `scip-query slice <symbol-or-variable>` / `--forward` | Follow data: backward and forward slices from the suspect value. |
|
|
21
|
-
| `scip-query similar <suspect-symbol> --
|
|
21
|
+
| `scip-query similar <suspect-symbol> --full` | Compare nearby implementations for missing guards or handling (bounded coverage: symbol pairs, similarity scores, shared evidence). |
|
|
22
22
|
| `scip-query similar <suspect-symbol> <similar-symbol> --plan` | Compare two specific implementations directly. |
|
|
23
|
-
| `scip-query similar-files <suspect-file> --
|
|
24
|
-
| `scip-query change-surface <suspect-file> --
|
|
25
|
-
| `scip-query affected <suspect-symbol
|
|
23
|
+
| `scip-query similar-files <suspect-file> --full` | Compare nearby files for missing handling. |
|
|
24
|
+
| `scip-query change-surface <suspect-file> --full` | Bound the fix: exports, consumers, and blast-radius risk (bounded coverage). |
|
|
25
|
+
| `scip-query affected <suspect-symbol>` | Bound the fix: transitive closure of symbols that could break. |
|
|
26
26
|
|
|
27
27
|
## Rules
|
|
28
28
|
|
|
@@ -77,9 +77,9 @@ This step is complete only when the path explains the symptom or the missing evi
|
|
|
77
77
|
### 4. Compare nearby implementations
|
|
78
78
|
|
|
79
79
|
```bash
|
|
80
|
-
scip-query similar <suspect-symbol> --
|
|
80
|
+
scip-query similar <suspect-symbol> --full
|
|
81
81
|
scip-query similar <suspect-symbol> <similar-symbol> --plan
|
|
82
|
-
scip-query similar-files <suspect-file> --
|
|
82
|
+
scip-query similar-files <suspect-file> --full
|
|
83
83
|
```
|
|
84
84
|
|
|
85
85
|
Use implementation comparisons to find missing guards, conversions, lifecycle steps, or error handling, while preserving essential differences.
|
|
@@ -89,8 +89,8 @@ This step is complete only when comparisons either support the fix or are reject
|
|
|
89
89
|
### 5. Bound and fix
|
|
90
90
|
|
|
91
91
|
```bash
|
|
92
|
-
scip-query change-surface <suspect-file> --
|
|
93
|
-
scip-query affected <suspect-symbol>
|
|
92
|
+
scip-query change-surface <suspect-file> --full
|
|
93
|
+
scip-query affected <suspect-symbol>
|
|
94
94
|
```
|
|
95
95
|
|
|
96
96
|
Make the smallest code change that fixes the root cause.
|
|
@@ -18,9 +18,9 @@ Load shared mechanics from [`../../_shared/SKILL.md`](../../_shared/SKILL.md) on
|
|
|
18
18
|
| `scip-query co-change <fix-site-file>` | Assemble the family: files that historically changed together with each fix site without a dependency edge — hidden coupling candidates, and a way to find family members the user forgot (bounded coverage: file pairs, co-change counts, confidence, history context). |
|
|
19
19
|
| `scip-query system <system-scope>` | Define the system's real responsibilities, files, and dependencies in and out (complete coverage: module file paths, exported symbols with line ranges, internal and reverse dependencies). |
|
|
20
20
|
| `scip-query surface <system-scope>` | Define the system: referents for its public surface alongside `system`. |
|
|
21
|
-
| `scip-query similar <fixed-symbol> --
|
|
21
|
+
| `scip-query similar <fixed-symbol> --full` | Predict: hunt latent instances among sibling implementations of the fixed code (bounded coverage). |
|
|
22
22
|
| `scip-query refs <invariant-carrier>` | Predict: every site that touches the violated invariant's state (bounded coverage: referencing file paths, reference line numbers grouped by file). |
|
|
23
|
-
| `scip-query affected <remedy-symbol
|
|
23
|
+
| `scip-query affected <remedy-symbol>` | Choose the remedy rung: blast radius of the candidate remedy (bounded coverage: transitive closure of symbols that could break). |
|
|
24
24
|
|
|
25
25
|
## Terms
|
|
26
26
|
|
|
@@ -92,7 +92,7 @@ Retrodiction: derive each family-table row from the flaw in one sentence each. A
|
|
|
92
92
|
Prediction: the flaw implies unfixed instances exist. Name where they must be, then hunt:
|
|
93
93
|
|
|
94
94
|
```bash
|
|
95
|
-
scip-query similar <fixed-symbol> --
|
|
95
|
+
scip-query similar <fixed-symbol> --full
|
|
96
96
|
scip-query refs <invariant-carrier>
|
|
97
97
|
```
|
|
98
98
|
|