scip-query 0.14.0 → 0.16.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 +14 -2
- package/README.md +158 -62
- package/dist/augment-vue-worker.js +1 -1
- package/dist/chunk-2EU6WVR3.js +3 -0
- package/dist/chunk-2HFXPIBT.js +2 -0
- package/dist/chunk-2LGPMYS2.js +35 -0
- package/dist/chunk-2Y7YX54K.js +16 -0
- package/dist/chunk-363TZ64I.js +2 -0
- package/dist/chunk-3I34FZ6R.js +2 -0
- package/dist/chunk-3LAKH6BV.js +2 -0
- package/dist/chunk-3M2UCPFS.js +3 -0
- package/dist/chunk-3OPIMH42.js +2 -0
- package/dist/{chunk-QZOAOLLZ.js → chunk-3YAZH3JU.js} +2 -2
- package/dist/chunk-5P26M63Y.js +2 -0
- package/dist/{chunk-72FR7KEZ.js → chunk-5TVNLPUM.js} +14 -12
- package/dist/chunk-5UKDCXVC.js +5 -0
- package/dist/{chunk-R7U2I55B.js → chunk-5XDNFOAH.js} +2 -2
- package/dist/chunk-62Y3PC27.js +4 -0
- package/dist/chunk-6DNE65QS.js +40 -0
- package/dist/{chunk-N2OTJWC2.js → chunk-6EVORGCB.js} +2 -2
- package/dist/chunk-6GZ7LM7S.js +2 -0
- package/dist/chunk-753JWTUH.js +3 -0
- package/dist/chunk-7II7NFRV.js +4 -0
- package/dist/{chunk-M7EEHYSU.js → chunk-7RAS466A.js} +2 -2
- package/dist/chunk-A46JTKTM.js +5 -0
- package/dist/{chunk-2XRXEIRK.js → chunk-AAMZRDJT.js} +2 -2
- package/dist/chunk-AMPN2VMF.js +3 -0
- package/dist/{chunk-6XA4LDHY.js → chunk-B3X6KU75.js} +2 -2
- package/dist/chunk-BFWVHD2P.js +16 -0
- package/dist/chunk-BVHP2B4D.js +61 -0
- package/dist/{chunk-BUNDZ6K2.js → chunk-BVUA3GZC.js} +2 -2
- package/dist/{chunk-EDSD3VJK.js → chunk-CKIAEVGM.js} +2 -2
- package/dist/chunk-CM4EZLW4.js +2 -0
- package/dist/chunk-CS3FXTUC.js +2 -0
- package/dist/chunk-CVBS2FD4.js +2 -0
- package/dist/chunk-D5OXYOJP.js +7 -0
- package/dist/chunk-DA34GNNO.js +29 -0
- package/dist/chunk-DKK2H4D7.js +7 -0
- package/dist/chunk-EBSSCVR4.js +5 -0
- package/dist/{chunk-OXTM2RX3.js → chunk-EVCSXWER.js} +2 -2
- package/dist/chunk-FFIYGYQR.js +67 -0
- package/dist/chunk-G4KQ7S74.js +20 -0
- package/dist/{chunk-44P4SJFN.js → chunk-GWWYLYD3.js} +2 -2
- package/dist/chunk-HGUNWXJX.js +2 -0
- package/dist/chunk-HLRWOFXC.js +9 -0
- package/dist/{chunk-YQKECTPV.js → chunk-IRIM3SUR.js} +2 -2
- package/dist/chunk-JHK2DMUQ.js +4 -0
- package/dist/chunk-JQ2PCFZW.js +3 -0
- package/dist/chunk-JRFCWCOD.js +16 -0
- package/dist/chunk-JXAJDINF.js +2 -0
- package/dist/chunk-K32ZOW3P.js +2 -0
- package/dist/{chunk-3H5OSDF7.js → chunk-KI4WPR7Q.js} +2 -2
- package/dist/{chunk-43GKP6LI.js → chunk-KP2DJY7D.js} +2 -2
- package/dist/{chunk-YTVKPJXW.js → chunk-L27UIF3E.js} +2 -2
- package/dist/chunk-LT6AHYVY.js +18 -0
- package/dist/chunk-MCNWCJYL.js +11 -0
- package/dist/{chunk-K6UI6EBZ.js → chunk-MZB3DTHW.js} +2 -2
- package/dist/chunk-NLRWGGPY.js +8 -0
- package/dist/chunk-NLVKD45E.js +13 -0
- package/dist/chunk-OO6S4ECV.js +112 -0
- package/dist/{chunk-QYOPMTZ6.js → chunk-OYGKBDAD.js} +2 -2
- package/dist/chunk-P5QZILZ4.js +2 -0
- package/dist/chunk-P5XHIJHI.js +2 -0
- package/dist/chunk-PCCMMI2M.js +3 -0
- package/dist/{chunk-2TPCIPYA.js → chunk-Q65QYKU7.js} +2 -2
- package/dist/{chunk-K7SPOJHZ.js → chunk-QB7NRST4.js} +2 -2
- package/dist/{chunk-7JZRFDCU.js → chunk-QSNG3NHQ.js} +2 -2
- package/dist/chunk-QVZSWLLZ.js +2 -0
- package/dist/chunk-RLB7FZKR.js +10 -0
- package/dist/{chunk-KYB7FPXT.js → chunk-RPMT6MTX.js} +2 -2
- package/dist/chunk-RQWNF2RM.js +2 -0
- package/dist/chunk-RYFIRFYJ.js +4 -0
- package/dist/{chunk-QARYU7R3.js → chunk-S2FZILCF.js} +2 -2
- package/dist/{chunk-HV27H2V2.js → chunk-S3IXCXW2.js} +2 -2
- package/dist/{chunk-TYCZ7S4I.js → chunk-S5MTSES5.js} +2 -2
- package/dist/chunk-S5RZQA6V.js +2 -0
- package/dist/{chunk-PEHDARNC.js → chunk-SEEJPIWG.js} +2 -2
- package/dist/chunk-SOCS3467.js +2 -0
- package/dist/chunk-U6BJVXWQ.js +2 -0
- package/dist/chunk-UO4IADXJ.js +38 -0
- package/dist/{chunk-ZEO4CXQR.js → chunk-VLSI5MYU.js} +2 -2
- package/dist/chunk-VSQRU3AP.js +2 -0
- package/dist/chunk-VYQY75NA.js +2 -0
- package/dist/{chunk-NOKUZU56.js → chunk-VZCR3VQY.js} +2 -2
- package/dist/chunk-W3ZVRLCH.js +2 -0
- package/dist/chunk-WA64GKWB.js +20 -0
- package/dist/chunk-WFRZGMWJ.js +71 -0
- package/dist/chunk-WN6XEYVX.js +2 -0
- package/dist/chunk-XAEU4ROB.js +101 -0
- package/dist/chunk-XBPAJASV.js +2 -0
- package/dist/{chunk-GY3HAWUA.js → chunk-XC6PUFNN.js} +2 -2
- package/dist/chunk-Y42DMR6F.js +6 -0
- package/dist/chunk-YCVYOV4A.js +7 -0
- package/dist/{chunk-WPZPB42I.js → chunk-YD37KSEK.js} +2 -2
- package/dist/{chunk-V5W7H7V4.js → chunk-YFEJIYWH.js} +2 -2
- package/dist/chunk-YSUD2S7T.js +3 -0
- package/dist/{chunk-KJCDEDQW.js → chunk-ZEKBAMCN.js} +2 -2
- package/dist/chunk-ZHGUZKJL.js +2 -0
- package/dist/cli.js +587 -305
- package/dist/{config-types-BrHl3Bge.d.ts → config-types-SVkUIufk.d.ts} +10 -2
- package/dist/{db-_Bdx0E1W.d.ts → db-CS0TuVH6.d.ts} +1 -1
- package/dist/{git-history-Dao3_Pu9.d.ts → git-history-ChNHbfZQ.d.ts} +2 -1
- package/dist/{health-BEZ1Rt0S.d.ts → health-Btal3mQi.d.ts} +4 -4
- package/dist/index.d.ts +7 -5
- package/dist/index.js +1 -19
- package/dist/queries/affected.d.ts +2 -2
- package/dist/queries/affected.js +1 -1
- package/dist/queries/bottlenecks.d.ts +8 -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 +2 -2
- package/dist/queries/change-surface.js +1 -1
- package/dist/queries/cleanup-plan.d.ts +2 -2
- package/dist/queries/cleanup-plan.js +1 -1
- package/dist/queries/co-change.d.ts +4 -3
- 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 +5 -4
- 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 +12 -3
- 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 +8 -3
- 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 +5 -4
- package/dist/queries/diff-gate.js +1 -1
- package/dist/queries/diff-impact.d.ts +3 -3
- package/dist/queries/diff-impact.js +1 -1
- package/dist/queries/doc-drift.d.ts +4 -2
- 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 +11 -5
- package/dist/queries/fan.js +1 -1
- package/dist/queries/files.d.ts +2 -2
- 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 +3 -3
- package/dist/queries/incomplete-migration.js +1 -1
- package/dist/queries/index.d.ts +5 -5
- package/dist/queries/index.js +1 -1
- package/dist/queries/isolated.d.ts +2 -2
- package/dist/queries/isolated.js +1 -1
- package/dist/queries/locality-candidates.d.ts +2 -2
- package/dist/queries/locality-candidates.js +1 -1
- package/dist/queries/members.d.ts +2 -2
- package/dist/queries/members.js +1 -1
- package/dist/queries/methods.d.ts +2 -2
- package/dist/queries/methods.js +1 -1
- package/dist/queries/not-implemented.d.ts +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 +4 -4
- package/dist/queries/plan-context.js +1 -1
- package/dist/queries/react-component-duplicates.d.ts +4 -2
- package/dist/queries/react-component-duplicates.js +1 -1
- package/dist/queries/react-hook-candidates.d.ts +4 -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 +4 -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 +2 -2
- 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 +4 -2
- package/dist/queries/vue-component-duplicates.js +1 -1
- package/dist/queries/vue-composable-candidates.d.ts +4 -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 +256 -12
- package/dist/reindex.d.ts +29 -3
- package/dist/reindex.js +251 -22
- package/dist/runtime.d.ts +8 -4
- package/dist/runtime.js +2 -2
- package/dist/rust-semantic-session-server.js +2 -0
- package/dist/rust-semantic-session-worker.js +2 -0
- package/dist/rust-semantic-worker.js +2 -0
- package/dist/{scip-cli-C7cg4ZHR.d.ts → scip-cli-BKL-26TZ.d.ts} +2 -2
- package/dist/{symbol-types-DaoeXKUt.d.ts → symbol-types-BgWU6lhL.d.ts} +2 -0
- package/dist/watch-server.js +42 -0
- package/docs/AGENT_GUIDE.md +110 -34
- package/docs/AI_FAILURE_MODES.md +8 -3
- package/docs/COMMAND_REFERENCE.md +11 -6
- package/docs/REGEX_POLICY.md +3 -1
- package/docs/accuracy-audit-checklist.md +300 -0
- package/docs/accuracy-hardening-goal.md +493 -54
- package/docs/analyzer-inventory.md +31 -23
- package/docs/analyzer-validation-ledger.md +51 -21
- package/package.json +2 -1
- package/scripts/build-scip-windows.mjs +7 -7
- package/skills/_shared/SKILL.md +21 -18
- package/skills/scip-calibrate/SKILL.md +9 -3
- package/skills/scip-hyper-optimization/SKILL.md +5 -1
- package/skills/scip-query/SKILL.md +1 -1
- package/skills/scip-setup/SKILL.md +104 -4
- package/skills/scip-verify/SKILL.md +24 -13
- package/dist/chunk-27HMTUJE.js +0 -3
- package/dist/chunk-27XEGMCT.js +0 -7
- package/dist/chunk-3AMWF6V5.js +0 -3
- package/dist/chunk-5AAAEZ2Z.js +0 -2
- package/dist/chunk-5JRMZMLM.js +0 -2
- package/dist/chunk-5VY3RIEI.js +0 -38
- package/dist/chunk-6JUAGXR4.js +0 -4
- package/dist/chunk-6KDOYKCB.js +0 -40
- package/dist/chunk-6KMTPNZL.js +0 -3
- package/dist/chunk-7COVQPQQ.js +0 -9
- package/dist/chunk-7S5E7KWT.js +0 -2
- package/dist/chunk-7TVFPOD7.js +0 -102
- package/dist/chunk-A6KSEIRN.js +0 -61
- package/dist/chunk-AAMURYOK.js +0 -4
- package/dist/chunk-BP7S6V3M.js +0 -20
- package/dist/chunk-BRBF3E5X.js +0 -35
- package/dist/chunk-BZXE3HO4.js +0 -6
- package/dist/chunk-CXQQOXSI.js +0 -10
- package/dist/chunk-EVZSAR3S.js +0 -2
- package/dist/chunk-GMOEX7EV.js +0 -2
- package/dist/chunk-GNG622H3.js +0 -3
- package/dist/chunk-GUDKRIGW.js +0 -7
- package/dist/chunk-GULVO6NF.js +0 -43
- package/dist/chunk-HZZQKNVE.js +0 -2
- package/dist/chunk-I4R3SNMR.js +0 -2
- package/dist/chunk-IMQFJ53K.js +0 -2
- package/dist/chunk-ISLWJ4PY.js +0 -10
- package/dist/chunk-IUSSGHJO.js +0 -2
- package/dist/chunk-J5WVNZ6O.js +0 -2
- package/dist/chunk-JJUX2OAP.js +0 -2
- package/dist/chunk-JZBGTSAB.js +0 -13
- package/dist/chunk-K5N5RNGM.js +0 -2
- package/dist/chunk-KSJ544IV.js +0 -5
- package/dist/chunk-LY7NMOBW.js +0 -2
- package/dist/chunk-N23FT4EZ.js +0 -2
- package/dist/chunk-NCVFKOLB.js +0 -2
- package/dist/chunk-PESEPWZO.js +0 -2
- package/dist/chunk-PMY4UFGV.js +0 -2
- package/dist/chunk-Q7PWDXL5.js +0 -5
- package/dist/chunk-QVGFVRKD.js +0 -2
- package/dist/chunk-R5336VHZ.js +0 -2
- package/dist/chunk-RLB6SG25.js +0 -2
- package/dist/chunk-SFDVBARK.js +0 -2
- package/dist/chunk-TG7QSYCJ.js +0 -2
- package/dist/chunk-U3VMUDXJ.js +0 -2
- package/dist/chunk-UHPWZCYQ.js +0 -3
- package/dist/chunk-URSSPS5H.js +0 -2
- package/dist/chunk-WIBFXSYB.js +0 -6
- package/dist/chunk-WMO2VZZK.js +0 -3
- package/dist/chunk-WS3Z6W3M.js +0 -65
- package/dist/chunk-X3DTIEMU.js +0 -18
- package/dist/chunk-X5C43YVI.js +0 -2
- package/dist/chunk-X7CHWTZ2.js +0 -72
- package/dist/chunk-XC2PJOVM.js +0 -3
- package/dist/chunk-XDESMVOL.js +0 -4
- package/dist/chunk-XZBLZHXL.js +0 -16
- package/dist/chunk-ZMGBWSFZ.js +0 -2
|
@@ -20,7 +20,7 @@ The action tiers are:
|
|
|
20
20
|
|
|
21
21
|
## Current Surfaces
|
|
22
22
|
|
|
23
|
-
The published query surface and private query-helper manifest live in `src/queries/public-query-entries.ts`. The CLI command order and families live in `src/runtime/commands/query-command-specs.ts`. The composite health score runs the phases listed in `HEALTH_PHASES` in `src/queries/health/health.ts
|
|
23
|
+
The published query surface and private query-helper manifest live in `src/queries/public-query-entries.ts`. The CLI command order and families live in `src/runtime/commands/query-command-specs.ts`. The composite health score runs the phases listed in `HEALTH_PHASES` in `src/queries/health/health.ts`; that health path also carries the full-vs-bounded semantic enrichment budget used by semantic-capable detectors. The diff gate runs the default diff-scoped checks listed in `DIFF_GATE_CHECKS` in `src/queries/impact/diff-gate.ts`; the baseline policy helper remains private to the query tree and runs only for the explicit full health-baseline ratchet. The `tla` command is also ordered in that command registry as an on-demand formal-model verifier, not as a health-scored analyzer.
|
|
24
24
|
|
|
25
25
|
An earlier `health --json` run on this repository reported:
|
|
26
26
|
|
|
@@ -34,28 +34,28 @@ The declared-coupling config has been refreshed after the inventory surfaced old
|
|
|
34
34
|
|
|
35
35
|
## Health-Scored Analyzers
|
|
36
36
|
|
|
37
|
-
| Analyzer | Evidence examined
|
|
38
|
-
| -------------------------------- |
|
|
39
|
-
| `dead` | Production definitions, SCIP/source/caller references, package
|
|
40
|
-
| `cleanup-plan` | `dead --only-dead` seed plus conservative cascade references
|
|
41
|
-
| `isolated` | Production callables with no callers and no non-self callees
|
|
42
|
-
| `cycles` | File dependency graph, with module-hierarchy/test/barrel/entry cycle classification
|
|
43
|
-
| `similar` / `similarAll` | Callable callee fingerprints, IDF weighting, source-token fallback
|
|
44
|
-
| `recent-duplicates` | `similarAll`, React/Vue duplicate analyzers, git file-age orientation
|
|
45
|
-
| `react-component-duplicates` | JSX structure tokens from React profiles
|
|
46
|
-
| `react-hook-candidates` | Shared React hook/state/effect/request/handler tokens, evidence class, action tier, and recommendation
|
|
47
|
-
| `react-large-component-pressure` | Component LOC, file LOC, JSX token count, behavior token count, pressure kind, context, recommendation kind
|
|
48
|
-
| `vue-component-duplicates` | Vue template structure tokens
|
|
49
|
-
| `vue-composable-candidates` | Vue composable/store/reactivity/lifecycle/request/function/template tokens, evidence class, action tier, and recommendation
|
|
50
|
-
| `vue-large-view-pressure` | SFC total/template/script/style/external-script line counts, pressure kind, context, recommendation kind
|
|
51
|
-
| `extract-candidates` | Large callable callee clusters, co-occurrence isolation, extraction kind, action tier, and recommendation
|
|
52
|
-
| `wrapper-candidates` | Small production callables with one real external caller, caller fan-in, and boundary-token evidence
|
|
53
|
-
| `passthrough-candidates` | Small production callables with exactly one callee, literal pass-through body, runtime-boundary evidence, public-facade evidence, action tier, recommendation, and score count
|
|
54
|
-
| `stale-abstractions` | Type-like definitions, real consumers, barrel consumers, transitive reachability, definer usage, confidence, staleness kind, action tier, and recommendation
|
|
55
|
-
| `drift` | File dep graph, symbol ref graph, semantic/source import usage, explicit or inferred layer policy, sibling patterns, action tier, policy basis, recommendation
|
|
56
|
-
| `complexity-hotspots` | Production callable LOC, fan-in, fan-out, callee count
|
|
57
|
-
| `co-change` / hidden coupling | Git co-change pairs, dependency edges, declared couplings, file noise filters, partner-class labels, declared-coupling suggestions, commit scope, recency context, commit-subject context, and score-weighted count
|
|
58
|
-
| Suppression inventory | `scip-query: ignore-*` comments in source, plus structured `.scipquery.json` suppressions
|
|
37
|
+
| Analyzer | Evidence examined | Current health role | Recommended action tier | Evaluation |
|
|
38
|
+
| -------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------: | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
39
|
+
| `dead` | Production definitions, SCIP/source/caller references including tests, transitive declared package/Cargo library surfaces, framework entry files, interface/protocol contracts, implicit runtime reachability, and configured roots | Risk, graph findings | Direct repair for certified TypeScript `dead-code`; contextual for `file-internal` and Rust `implicit-usage` | TypeScript `dead-code` is certified under the repository-dead truth rule. Rust public library items are rooted and implicit runtime reachability is a non-scoring signal, but Rust `dead-code` remains insufficiently evidenced after a three-repository replay. Checker verification is still required before deletion. |
|
|
40
|
+
| `cleanup-plan` | `dead --only-dead` seed plus conservative cascade references | Standalone, not direct health phase | Direct repair | Strongest deletion analyzer. It computes ordered batches and can be compiler-verified from the command layer. |
|
|
41
|
+
| `isolated` | Production callables with no callers and no non-self callees | Risk, graph findings | Direct repair | Strong dead-leaf signal. It is stricter than `dead` and usually means remove or wire up. |
|
|
42
|
+
| `cycles` | File dependency graph, with module-hierarchy/test/barrel/entry cycle classification | Risk | Direct repair for `real`; support/noise for `module-hierarchy` | Good split already exists. Real cycles normally need architectural repair. Module-hierarchy cycles should not score. |
|
|
43
|
+
| `similar` / `similarAll` | Callable callee fingerprints, IDF weighting, source-token fallback | Hygiene | Contextual signal | Similarity is a reuse lead, not proof of duplicate semantics. Needs naming, behavior, signatures, and product intent before action. Shared evidence is now labeled as domain, access/query, framework/generic, mixed, or neutral structural overlap. |
|
|
44
|
+
| `recent-duplicates` | `similarAll`, React/Vue duplicate analyzers, git file-age orientation | Standalone cleanup | Direct repair for `echo`; contextual for `twin` | Directionality makes this much stronger than plain similarity. A recent echo usually should reuse/delete. Twins still need choice of owner. |
|
|
45
|
+
| `react-component-duplicates` | JSX structure tokens from React profiles | Hygiene | Contextual signal | Good UI reuse lead. Needs product semantics and design-system judgment before extracting. |
|
|
46
|
+
| `react-hook-candidates` | Shared React hook/state/effect/request/handler tokens, evidence class, action tier, and recommendation | Hygiene, with `scoreCount` discount | Contextual signal for domain or mixed behavior; support for generic workflow/shared abstraction rows | Better than raw similarity because behavior tokens are named. The output now separates generic UI workflow and existing shared abstractions from domain behavior, but extraction still needs product judgment. |
|
|
47
|
+
| `react-large-component-pressure` | Component LOC, file LOC, JSX token count, behavior token count, pressure kind, context, recommendation kind | Hygiene | Direct repair pressure with review direction | Large component pressure usually implies splitting. It now distinguishes JSX, behavior, file, and route/page pressure, but still does not choose the destination directory for extracted code. |
|
|
48
|
+
| `vue-component-duplicates` | Vue template structure tokens | Hygiene | Contextual signal | Same reuse caveat as React component duplicates. |
|
|
49
|
+
| `vue-composable-candidates` | Vue composable/store/reactivity/lifecycle/request/function/template tokens, evidence class, action tier, and recommendation | Hygiene, with `scoreCount` discount | Contextual signal for domain or mixed behavior; support for generic workflow/shared abstraction rows | Good extraction lead when domain behavior is present. Generic workflow scaffolding remains visible as support, and extraction still needs domain and locality judgment. |
|
|
50
|
+
| `vue-large-view-pressure` | SFC total/template/script/style/external-script line counts, pressure kind, context, recommendation kind | Hygiene | Direct repair pressure with review direction | Usually implies splitting a large view. It now distinguishes template, script, style, external-script, and route/page pressure, but still needs companion directory-locality guidance. |
|
|
51
|
+
| `extract-candidates` | Large callable callee clusters, co-occurrence isolation, extraction kind, action tier, and recommendation | Hygiene | Contextual signal | It finds possible extraction seams, not proof of a new abstraction. The output now distinguishes workflow orchestration from broad/cohesive helper clusters and keeps every row as signal. |
|
|
52
|
+
| `wrapper-candidates` | Small production callables with one real external caller, caller fan-in, and boundary-token evidence | Hygiene | Contextual signal, sometimes direct | Single-caller wrappers can be needless indirection, but may also be names, domain/lifecycle boundaries, test seams, or API shaping. Boundary evidence discounts those without hiding them. |
|
|
53
|
+
| `passthrough-candidates` | Small production callables with exactly one callee, literal pass-through body, runtime-boundary evidence, public-facade evidence, action tier, recommendation, and score count | Hygiene, with `scoreCount` discount | Direct when no boundary or public-facade evidence is present; contextual signal when either exists | Body-shape gate is real. Boundary evidence distinguishes adapter, provider, public, capability, transport, lifecycle, access-policy, and facade-shaped forwarders; public-facade evidence separately identifies package-public or rooted exported passthroughs. |
|
|
54
|
+
| `stale-abstractions` | Type-like definitions, real consumers, barrel consumers, transitive reachability, definer usage, confidence, staleness kind, action tier, and recommendation | Hygiene | Direct for unused abstractions; contextual signal for one-consumer ownership rows | `0 consumers` is direct repair. `1 consumer` is contextual, including high-confidence misplaced types, because the repair may be move, inline, keep, or document as public contract. |
|
|
55
|
+
| `drift` | File dep graph, symbol ref graph, semantic/source import usage, explicit or inferred layer policy, sibling patterns, action tier, policy basis, recommendation | Hygiene | Split by kind | `unused-import` is direct repair. Explicit `layer-violation` is direct; inferred layer policy and `pattern-deviation` rows are contextual signal. Pattern deviations remain excluded from health scoring. |
|
|
56
|
+
| `complexity-hotspots` | Production callable LOC, fan-in, fan-out, callee count | Risk | Direct repair pressure | Complexity pressure usually means refactor, but the current score is structural, not cyclomatic. It should be separate from branch-count complexity. |
|
|
57
|
+
| `co-change` / hidden coupling | Git co-change pairs, dependency edges, declared couplings, file noise filters, partner-class labels, declared-coupling suggestions, commit scope, recency context, commit-subject context, and score-weighted count | Risk, weighted by history strength | Contextual signal | Strong evidence that coordination may be missing, but not proof that extraction or unification is correct. Partner classes, history context, subject context, and score weighting now separate contract-like focused current pairs from broad, stale, or unlabeled history before suggesting declared coupling. |
|
|
58
|
+
| Suppression inventory | `scip-query: ignore-*` comments in source, plus structured `.scipquery.json` suppressions | Evidence quality axis | Meta signal | Useful precision feedback. High suppressions should reduce trust or weight for that detector family. Structured file-scoped suppressions now validate path freshness. |
|
|
59
59
|
|
|
60
60
|
## Diff-Gate Checks
|
|
61
61
|
|
|
@@ -254,3 +254,11 @@ wiring decisions (test-quality's health eligibility is ledgered as a
|
|
|
254
254
|
followup). Registration files (`queryCommandOrder`,
|
|
255
255
|
`PUBLIC_QUERY_ENTRIES`, `query-command-specs.ts`) still own their
|
|
256
256
|
canonical lists; only the list contents grew.
|
|
257
|
+
|
|
258
|
+
## 2026-07-08 Rust Semantic Parity Follow-Up
|
|
259
|
+
|
|
260
|
+
The `src/queries/health/health.ts` citation remains accurate after the Rust
|
|
261
|
+
semantic parity slice. Health still owns the composite phase inventory and
|
|
262
|
+
score model, and it now threads semantic enrichment through the health budget:
|
|
263
|
+
full/default health enables semantic facts, while bounded large-index health
|
|
264
|
+
can explicitly disable them.
|
|
@@ -12,12 +12,12 @@ The companion documents are:
|
|
|
12
12
|
|
|
13
13
|
The ledger is anchored to the current tool surface, not memory.
|
|
14
14
|
|
|
15
|
-
| Surface | Source
|
|
16
|
-
| ------------------------- |
|
|
17
|
-
| Repo-wide health analysis | `scip-query code health --json` reported `src/queries/health/health.ts:
|
|
15
|
+
| Surface | Source | Why it anchors the ledger |
|
|
16
|
+
| ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- |
|
|
17
|
+
| Repo-wide health analysis | `scip-query code health --json` reported `src/queries/health/health.ts:218`, where `health()` runs `runHealthAnalyses()` and `buildHealthReport()` through the health budget that carries full-vs-bounded semantic enrichment. | Every repo-wide analyzer validation must eventually reconcile with health output and scoring. |
|
|
18
18
|
| Change-time gate analysis | `scip-query code diffGate --json` reported `src/queries/impact/diff-gate.ts:228`, where `diffGate()` runs the default diff-scoped checks: `echo`, `incomplete-migration`, `co-change-partner`, `doc-reference`, `unused-params`, and `new-dead`. The baseline ratchet is explicit because it is repo-wide. | Every diff-only analyzer needs a separate validation path from repo-wide health. |
|
|
19
|
-
| Public command registry | `scip-query trace queryCommandOrder --json` reported `src/runtime/commands/query-command-specs.ts:11`, where the public query command order starts. `scip-query code queryCommandDescriptor --json` reported `src/runtime/commands/query-command-specs.ts:104`, where command descriptors are resolved by id. | The ledger must not silently miss a public analyzer command.
|
|
20
|
-
| Diff-gate check list | `scip-query trace DIFF_GATE_CHECKS --json` reported `src/queries/impact/diff-gate.ts:64`, where the canonical diff-gate check list is exported.
|
|
19
|
+
| Public command registry | `scip-query trace queryCommandOrder --json` reported `src/runtime/commands/query-command-specs.ts:11`, where the public query command order starts. `scip-query code queryCommandDescriptor --json` reported `src/runtime/commands/query-command-specs.ts:104`, where command descriptors are resolved by id. | The ledger must not silently miss a public analyzer command. |
|
|
20
|
+
| Diff-gate check list | `scip-query trace DIFF_GATE_CHECKS --json` reported `src/queries/impact/diff-gate.ts:64`, where the canonical diff-gate check list is exported. | The ledger must cover every change-time check that can block a diff. |
|
|
21
21
|
|
|
22
22
|
## Core Concepts
|
|
23
23
|
|
|
@@ -45,22 +45,24 @@ A repair outcome is the result of acting on an analyzer finding. It matters beca
|
|
|
45
45
|
|
|
46
46
|
Closeout status: all active ledger rows are complete as of 2026-06-22. Remaining future work is provider- or corpus-gated, not an unfinished validation slice: true co-change issue/PR label ingestion needs a repository metadata provider, and locality score integration needs stronger consumer-coverage plus repair-outcome evidence.
|
|
47
47
|
|
|
48
|
-
| ID | Item | Scope | Status | Next action
|
|
49
|
-
| ------- | -------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------- |
|
|
50
|
-
| AVL-001 | Field evaluation baseline | Run the protocol on `scip-query`, `Stable_Management`, `Vega_2.0`, and `SynthRunnerRust`. | `complete` | Completed in `docs/validation/2026-06-21-second-repo-confirmation.md`.
|
|
51
|
-
| AVL-002 | Direct repair analyzer verdicts | `cleanup-plan`, `dead`, `new-dead`, `isolated`, `unused-params`, `unused-imports`, `redundant-reexports`, `passthrough-candidates`, `cycles`, broken `doc-drift`, and `doc-reference`. | `complete` | Completed in `docs/validation/2026-06-21-direct-deletion-family-closure-result.md`.
|
|
52
|
-
| AVL-003 | Contextual signal analyzer verdicts | Similarity, extraction, locality, wrapper, stale abstraction, frontend duplicate, hook/composable, co-change, bottleneck, coupling, drift, and deep-chain families. | `complete` | Completed in `docs/validation/2026-06-21-contextual-signal-closure-result.md`.
|
|
53
|
-
| AVL-004 | Support analysis accuracy | `affected`, `change-surface`, `plan-context`, navigation commands, graph metrics, and `self-audit`. | `complete` | Completed in `docs/validation/2026-06-21-support-analysis-accuracy-result.md`.
|
|
54
|
-
| AVL-005 | Analyzer implementation parity | Confirm each public analyzer command's documented behavior matches implementation behavior. | `complete` | Completed in `docs/validation/2026-06-21-analyzer-implementation-parity-result.md`.
|
|
55
|
-
| AVL-006 | Score calibration | Evaluate direct findings, contextual signals, suppressions, validation ratio, and signal backlog pressure. | `complete` | Completed in `docs/validation/2026-06-21-score-calibration-finalization-result.md`.
|
|
56
|
-
| AVL-007 | Output and schema quality | Verify each analyzer emits enough structured evidence for users and agents to review the claim. | `complete` | Completed in `docs/validation/2026-06-21-output-schema-quality-finalization-result.md`.
|
|
57
|
-
| AVL-008 | Performance and budget behavior | Check large-index behavior, `--full`, scan limits, git-history bounds, and graceful degradation. | `complete` | Completed in `docs/validation/2026-06-21-performance-budget-behavior-result.md`.
|
|
58
|
-
| AVL-009 | Suppression lifecycle | Evaluate whether suppressions are stale, justified, expired, or useful as detector precision feedback. | `complete` | Completed in `docs/validation/2026-06-21-suppression-lifecycle-result.md`.
|
|
59
|
-
| AVL-010 | Cross-language capability boundaries | Establish what works for TypeScript, React, Vue, Rust, and any unsupported language surfaces. | `complete` | Completed in `docs/validation/2026-06-21-cross-language-capability-boundaries-result.md`.
|
|
60
|
-
| AVL-011 | Agent repair outcomes | Test whether acting on analyzer findings produces better code rather than churn or misplaced abstraction. | `complete` | Completed in `docs/validation/2026-06-21-agent-repair-outcomes-result.md`.
|
|
61
|
-
| AVL-012 | Locality analyzer validation | Validate the proposed `locality-candidates` report and `scip-locality-review` skill workflow before implementation. | `complete` | Completed in `docs/validation/2026-06-21-locality-analyzer-validation-result.md`.
|
|
62
|
-
| AVL-013 | Config and declared-coupling freshness | Check whether `.scipquery.json` declared couplings and suppressions still point at current paths. | `complete` | Completed in `docs/validation/2026-06-21-config-declared-coupling-freshness-result.md`.
|
|
63
|
-
| AVL-014 | Public command surface coverage | Ensure every public analyzer command is present in the inventory, protocol, and ledger. | `complete` | Completed in `docs/validation/2026-06-21-public-command-surface-coverage-result.md`.
|
|
48
|
+
| ID | Item | Scope | Status | Next action | Done signal |
|
|
49
|
+
| ------- | -------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
|
|
50
|
+
| AVL-001 | Field evaluation baseline | Run the protocol on `scip-query`, `Stable_Management`, `Vega_2.0`, and `SynthRunnerRust`. | `complete` | Completed in `docs/validation/2026-06-21-second-repo-confirmation.md`. | A dated run summary exists for each repo with raw-output locations and sampling notes. |
|
|
51
|
+
| AVL-002 | Direct repair analyzer verdicts | `cleanup-plan`, `dead`, `new-dead`, `isolated`, `unused-params`, `unused-imports`, `redundant-reexports`, `passthrough-candidates`, `cycles`, broken `doc-drift`, and `doc-reference`. | `complete` | Completed in `docs/validation/2026-06-21-direct-deletion-family-closure-result.md`. | Each direct analyzer has TP/FP/FN counts, accepted-design examples, and precision actions. |
|
|
52
|
+
| AVL-003 | Contextual signal analyzer verdicts | Similarity, extraction, locality, wrapper, stale abstraction, frontend duplicate, hook/composable, co-change, bottleneck, coupling, drift, and deep-chain families. | `complete` | Completed in `docs/validation/2026-06-21-contextual-signal-closure-result.md`. | Each contextual family has a reviewed precision note and a score-weight recommendation. |
|
|
53
|
+
| AVL-004 | Support analysis accuracy | `affected`, `change-surface`, `plan-context`, navigation commands, graph metrics, and `self-audit`. | `complete` | Completed in `docs/validation/2026-06-21-support-analysis-accuracy-result.md`. | Support commands have referential-accuracy notes and known unsupported cases. |
|
|
54
|
+
| AVL-005 | Analyzer implementation parity | Confirm each public analyzer command's documented behavior matches implementation behavior. | `complete` | Completed in `docs/validation/2026-06-21-analyzer-implementation-parity-result.md`. | The inventory and protocol either match implementation or list required doc/code corrections. |
|
|
55
|
+
| AVL-006 | Score calibration | Evaluate direct findings, contextual signals, suppressions, validation ratio, and signal backlog pressure. | `complete` | Completed in `docs/validation/2026-06-21-score-calibration-finalization-result.md`. | A calibration memo states score-weight changes, accepted current weights, or blocked evidence gaps. |
|
|
56
|
+
| AVL-007 | Output and schema quality | Verify each analyzer emits enough structured evidence for users and agents to review the claim. | `complete` | Completed in `docs/validation/2026-06-21-output-schema-quality-finalization-result.md`. | Each analyzer family has an output-quality verdict and missing-field list. |
|
|
57
|
+
| AVL-008 | Performance and budget behavior | Check large-index behavior, `--full`, scan limits, git-history bounds, and graceful degradation. | `complete` | Completed in `docs/validation/2026-06-21-performance-budget-behavior-result.md`. | Budget behavior is documented with any timeout, cap, or misleading-empty-output issues. |
|
|
58
|
+
| AVL-009 | Suppression lifecycle | Evaluate whether suppressions are stale, justified, expired, or useful as detector precision feedback. | `complete` | Completed in `docs/validation/2026-06-21-suppression-lifecycle-result.md`. | Suppression categories have counts, stale examples, and trust-weight recommendations. |
|
|
59
|
+
| AVL-010 | Cross-language capability boundaries | Establish what works for TypeScript, React, Vue, Rust, and any unsupported language surfaces. | `complete` | Completed in `docs/validation/2026-06-21-cross-language-capability-boundaries-result.md`. | Capability notes distinguish "no findings" from "not supported by current evidence." |
|
|
60
|
+
| AVL-011 | Agent repair outcomes | Test whether acting on analyzer findings produces better code rather than churn or misplaced abstraction. | `complete` | Completed in `docs/validation/2026-06-21-agent-repair-outcomes-result.md`. | Each action tier has at least one reviewed repair outcome or an explicit reason it cannot be tested yet. |
|
|
61
|
+
| AVL-012 | Locality analyzer validation | Validate the proposed `locality-candidates` report and `scip-locality-review` skill workflow before implementation. | `complete` | Completed in `docs/validation/2026-06-21-locality-analyzer-validation-result.md`. | The locality design has TP/FP/FN-style examples and a go/no-go recommendation for implementation. |
|
|
62
|
+
| AVL-013 | Config and declared-coupling freshness | Check whether `.scipquery.json` declared couplings and suppressions still point at current paths. | `complete` | Completed in `docs/validation/2026-06-21-config-declared-coupling-freshness-result.md`. | Stale config paths are fixed, removed, or documented as intentionally retained. |
|
|
63
|
+
| AVL-014 | Public command surface coverage | Ensure every public analyzer command is present in the inventory, protocol, and ledger. | `complete` | Completed in `docs/validation/2026-06-21-public-command-surface-coverage-result.md`. | A coverage checklist shows no missing analyzer or marks non-analyzer support commands separately. |
|
|
64
|
+
| AVL-015 | TypeScript `dead` certification | Fixed-seed four-repository precision review, causal remediation, holdout replay, and known-positive recall. | `complete` | Certified in `docs/validation/2026-07-10-typescript-dead-certification.md`. | Precision, confidence, corpus, and recall gates pass under the repository-dead truth rule. |
|
|
65
|
+
| AVL-016 | Rust `dead` hardening | Pinned Codex, SynthRunnerRust, and VegaAssistant review covering Cargo surfaces, traits, macros, reflection, examples, and positive recall. | `complete` | Hardened but insufficiently evidenced in `docs/validation/2026-07-10-rust-dead-certification.md`; expand the corpus before renewal. | Every baseline false positive is removed, applicability is visible, recall fixtures pass, and failed certification gates are explicit. |
|
|
64
66
|
|
|
65
67
|
## Public Command Coverage Checklist
|
|
66
68
|
|
|
@@ -324,6 +326,15 @@ and a `detectorPrecision` field (per-check finding-outcome stats from the new
|
|
|
324
326
|
finding-outcome ledger) — both paths still compute and render through the same
|
|
325
327
|
command surfaces cited above.
|
|
326
328
|
|
|
329
|
+
## 2026-07-08 Rust Semantic Parity Follow-Up
|
|
330
|
+
|
|
331
|
+
The `src/queries/health/health.ts` citation remains accurate after the Rust
|
|
332
|
+
semantic parity slice. Health still owns the composite phase inventory and
|
|
333
|
+
score assembly; the health budget now also carries whether a run should enrich
|
|
334
|
+
detectors with semantic facts. Full/default health keeps semantic enrichment
|
|
335
|
+
enabled, while bounded large-index health records the explicit semantic-off
|
|
336
|
+
budget choice.
|
|
337
|
+
|
|
327
338
|
## 2026-07-02 Doc-Reference Hub-Cascade Follow-Up
|
|
328
339
|
|
|
329
340
|
The `diffGate()` and `DIFF_GATE_CHECKS` citations were refreshed (line anchors
|
|
@@ -334,3 +345,22 @@ one clustered finding carrying `citationCount`, up to 3 `citationExemplars`,
|
|
|
334
345
|
and an explicit `suppressedCount`. Default diff-gate still runs the same
|
|
335
346
|
check family through the same entry point; per-doc findings under the
|
|
336
347
|
threshold are unchanged.
|
|
348
|
+
|
|
349
|
+
## 2026-07-10 TypeScript Dead-Code Certification Follow-Up
|
|
350
|
+
|
|
351
|
+
The direct-repair `dead` row now has a detector-language certificate rather
|
|
352
|
+
than relying on the earlier mixed-family calibration. The pinned four-repo
|
|
353
|
+
baseline produced 25 valid and 53 invalid TypeScript findings. Shared fixes
|
|
354
|
+
made test references count as repository usage, propagated declared package
|
|
355
|
+
surfaces through re-exports, recognized framework entry files, and excluded
|
|
356
|
+
interface, constructor, React lifecycle, and implemented-protocol contracts.
|
|
357
|
+
|
|
358
|
+
The final fixed-seed review contained 43 valid findings and zero invalid
|
|
359
|
+
findings across Vega_2.0, openwork, Stable_Management, and traceroot. Observed
|
|
360
|
+
precision was 100%, the 95% Wilson lower bound was 91.8%, and three positive
|
|
361
|
+
fixtures continued to detect ordinary unreferenced definitions. The retained
|
|
362
|
+
claim is narrowly scoped: TypeScript `dead-code` rows are certified
|
|
363
|
+
repository-dead candidates, while `file-internal`, other detector families,
|
|
364
|
+
Rust, Python, and the aggregate health score retain independent status. The
|
|
365
|
+
full evidence is in
|
|
366
|
+
`docs/validation/2026-07-10-typescript-dead-certification.md`.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "scip-query",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.16.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",
|
|
@@ -317,6 +317,7 @@
|
|
|
317
317
|
"lint": "npm run format:check && eslint src tests tsup.config.ts && node scripts/check-skill-links.mjs",
|
|
318
318
|
"build:scip-windows": "node scripts/build-scip-windows.mjs",
|
|
319
319
|
"bench:evidence-products": "node scripts/evidence-product-contract.mjs",
|
|
320
|
+
"bench:native-symbol-leaf": "node scripts/bench-native-symbol-leaf.mjs",
|
|
320
321
|
"calibrate": "node scripts/accuracy-calibration.mjs",
|
|
321
322
|
"docs:commands": "vite-node scripts/render-command-reference.ts --write",
|
|
322
323
|
"prepublishOnly": "npm run publish:scip-windows && npm run build",
|
|
@@ -45,16 +45,16 @@ try {
|
|
|
45
45
|
writeFileSync(
|
|
46
46
|
join(VENDOR_DIR, 'README.md'),
|
|
47
47
|
[
|
|
48
|
-
'# scip.exe
|
|
48
|
+
'# Windows scip.exe npm sidecar',
|
|
49
49
|
'',
|
|
50
50
|
`These binaries are built from ${SCIP_REPO_URL} at ${SCIP_VERSION}.`,
|
|
51
|
-
'They are
|
|
52
|
-
'
|
|
53
|
-
'
|
|
54
|
-
'and checksum-verifies them on demand so Windows `reindex` works without',
|
|
55
|
-
'requiring Go or WSL.',
|
|
51
|
+
'They are bundled in the OS-gated `scip-query-scip-windows` npm package. The main',
|
|
52
|
+
'`scip-query` package declares that sidecar as an optional dependency, so npm',
|
|
53
|
+
'installs it automatically on Windows and `reindex` works without Go or WSL.',
|
|
56
54
|
'',
|
|
57
|
-
'Run `npm run build:scip-windows` to
|
|
55
|
+
'Run `npm run build:scip-windows` to rebuild the binaries. Publishing the main',
|
|
56
|
+
'package verifies the version pin, builds missing binaries, and publishes the',
|
|
57
|
+
'matching sidecar first.',
|
|
58
58
|
'',
|
|
59
59
|
].join('\n'),
|
|
60
60
|
);
|
package/skills/_shared/SKILL.md
CHANGED
|
@@ -91,7 +91,7 @@ scip-query slice <symbol> # Reference-level program slice: what affects this (ba
|
|
|
91
91
|
### Cleanup
|
|
92
92
|
|
|
93
93
|
```bash
|
|
94
|
-
scip-query dead [scope] # Find dead code
|
|
94
|
+
scip-query dead [scope] # Find repository-dead code, file-internal symbols, and implicit-usage signals
|
|
95
95
|
scip-query unused-imports <file> # Find imports not referenced in the same file
|
|
96
96
|
scip-query isolated # Find completely orphaned symbols (no references at all)
|
|
97
97
|
scip-query similar [symbol] [other] # Find heuristic function similarity candidates from callee fingerprints
|
|
@@ -130,12 +130,12 @@ scip-query similar-signatures # Find functions with near-identical type signatur
|
|
|
130
130
|
|
|
131
131
|
```bash
|
|
132
132
|
scip-query hotspots # Most-referenced symbols in the codebase (choke points)
|
|
133
|
-
scip-query fan-in [symbol] #
|
|
133
|
+
scip-query fan-in [symbol] # Count files referencing an exact symbol; top JSON rows include exact symbol identity
|
|
134
134
|
scip-query fan-out [file] # How many external symbols a file uses (or top fan-out across codebase)
|
|
135
135
|
scip-query coupling [file1] [file2] # Coupling between two files, or top coupled pairs in codebase
|
|
136
136
|
scip-query cycles # Detect circular dependency chains between files
|
|
137
137
|
scip-query bottlenecks # Find coupling hubs: high fan-in AND high fan-out
|
|
138
|
-
scip-query deep-chains # Find the longest
|
|
138
|
+
scip-query deep-chains # Find the longest condensed dependency-component chains
|
|
139
139
|
scip-query call-graph <symbol> # Show incoming callers and outgoing callees for a symbol
|
|
140
140
|
```
|
|
141
141
|
|
|
@@ -174,6 +174,7 @@ scip-query complexity <symbol> # Per-symbol complexity: branches, cyclomatic est
|
|
|
174
174
|
|
|
175
175
|
```bash
|
|
176
176
|
scip-query bench # Benchmark indexing and command runtimes for this repository
|
|
177
|
+
scip-query work-audit <profile> # Rank exact repeated computations in a profiling JSONL file by measured avoidable time
|
|
177
178
|
scip-query install-skills # Install skills (_shared, scip-query, scip-setup, scip-calibrate, scip-cleanup-audit, scip-cleanup-improve, scip-integrity-audit, scip-twin-drift, scip-claim-audit, scip-probe-reachability, scip-hyper-optimization, scip-api-impact, scip-concrete-plan, scip-conductor, scip-debug, scip-explore, scip-triage-issue, scip-diagram, scip-doc-reconcile, scip-directory-architecture, scip-maintainability, scip-react-maintainability, scip-vue-maintainability, scip-verify, scip-language-playbook, scip-tla-model-system) into Claude Code, Codex, and shared agent roots
|
|
178
179
|
scip-query setup-hooks # Install or refresh project-local Codex and Claude Code lifecycle hooks
|
|
179
180
|
scip-query check-deps # Check whether scip-query and the detected language indexers are actually runnable
|
|
@@ -181,13 +182,14 @@ scip-query capabilities # Report which evidence and verification capabilities ar
|
|
|
181
182
|
scip-query capability-matrix # Deprecated alias for capabilities --matrix
|
|
182
183
|
scip-query init # Create a .scipquery.json config file for this project
|
|
183
184
|
scip-query config-validate # Validate .scipquery.json, including structured suppressions and declared coupling groups
|
|
184
|
-
scip-query suppress <id> # Record an accepted finding
|
|
185
|
+
scip-query suppress <id> # Record an accepted finding as a file under .scipquery/suppressions/ with a required reason
|
|
186
|
+
scip-query effectiveness # Per-check effectiveness from the committed outcome ledger: caught, same-HEAD verified fixes, suppressed, unverified disappearances, and precision
|
|
185
187
|
scip-query doctor # Diagnose config, index freshness, dependency readiness, and project capabilities
|
|
186
|
-
scip-query setup # Bootstrap this project: install agent skills, refresh the index, verify capabilities, and report health
|
|
188
|
+
scip-query setup # Bootstrap this project: enable automatic indexing, install agent skills, refresh the index, verify capabilities, and report health
|
|
187
189
|
scip-query 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
|
|
188
190
|
scip-query setup-ci # Write a GitHub Actions workflow that runs scip-query reindex and diff-gate on pull requests
|
|
189
191
|
scip-query uninstall # Remove scip-query-owned skill links, project hooks, and managed agent setup blocks
|
|
190
|
-
scip-query watch # Watch
|
|
192
|
+
scip-query watch # Watch in the foreground or manage the per-project background refresh service
|
|
191
193
|
scip-query status # Show index status for this project
|
|
192
194
|
```
|
|
193
195
|
|
|
@@ -196,7 +198,7 @@ scip-query status # Show index status for this project
|
|
|
196
198
|
## Detector Reliability
|
|
197
199
|
|
|
198
200
|
Calibrated against two external production repos on 2026-07-01
|
|
199
|
-
(docs/validation/2026-07-01-external-calibration
|
|
201
|
+
(docs/validation/2026-07-01-external-calibration-\*.md). Weight findings by
|
|
200
202
|
measured precision, not by volume:
|
|
201
203
|
|
|
202
204
|
- **Strong signal** — `complexity-hotspots` (~90%), `recent-duplicates` (~75%), graph facts (`refs`, `trace`, `deps`), compiler-verified `cleanup-plan --verify`.
|
|
@@ -205,6 +207,7 @@ measured precision, not by volume:
|
|
|
205
207
|
- **Advisory gate findings** (marked `(advisory)`) never block; they are context, not obligations.
|
|
206
208
|
- **False-dead archetypes (2026-07-02 remediation, docs/plans/2026-07-02-followups.md items 1-3)**: `import type`-only consumers (incl. tsconfig `paths`-aliased specifiers) and pnpm/npm/yarn workspace cross-package consumers (incl. unbuilt `dist/` exports maps) are now resolved by the shared reference-counting layer that `dead`/`isolated`/`new-dead`/`stale-abstractions`/`production-callables` all consume; Vue `<script setup>` composable consumers were already correctly resolved (verified live, no code change needed). One narrow residual gap remains: a symbol with an **ambiguous leaf name** (a same-named definition exists elsewhere in the project) reached only through a **re-exporting barrel file** in a workspace package can still misattribute — `new-dead` labels that specific shape `unconfirmed (cross-package ambiguous-name resolution gap)` with `evidence: "heuristic"` and lowered confidence instead of asserting `dead`; treat those as "verify manually," not as a fact. Everything else in this class is a normal graph-fact `dead` claim again — confirm with `refs` when in doubt, same as any other finding.
|
|
207
209
|
- **Ledger nudges**: when `diff-gate --hook` reports "this check is rarely acted on in this repo", 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.
|
|
210
|
+
- **Effectiveness ledger**: every completed diff-gate run, including JSON and hook mode, appends caught/resolved/suppressed transitions to `.scipquery/ledger/events.jsonl` (committed, conflict-free via a scoped `merge=union` gitattribute — commit it with your changes). Query it with `scip-query effectiveness [--since 30d] [--check <check>] [--json]`: per check it reports findings caught, same-HEAD verified fixed, suppressed, still open, `moved` (rename noise), `unverified` (the finding disappeared after HEAD changed or without Git identity), precision (verified fixed ÷ verified fixed plus suppressed), and median days-to-fix. Run diff-gate before and after a repair, before committing, to earn verified credit. Standalone detector commands are not outcome-tracked until they expose complete-scan evidence.
|
|
208
211
|
|
|
209
212
|
## Diff Gate Checks
|
|
210
213
|
|
|
@@ -214,17 +217,17 @@ measured precision, not by volume:
|
|
|
214
217
|
|
|
215
218
|
Run the rows that match the actual edit:
|
|
216
219
|
|
|
217
|
-
| Change made
|
|
218
|
-
|
|
|
219
|
-
| Extracted a helper or abstraction
|
|
220
|
-
| Added a helper, module, component, hook, composable, or adapter
|
|
221
|
-
| Added parameters, options, props, config flags, or broad option objects
|
|
222
|
-
| Added a wrapper, facade, forwarding layer, alias, or re-export
|
|
223
|
-
| Added an interface, base class, adapter contract, or type alias
|
|
224
|
-
| Changed schema, config, generated files, public contracts, command descriptors, or docs-backed behavior | `scip-query co-change <file> --json --full` and `scip-query doc-drift --json --full`
|
|
225
|
-
| Deleted code
|
|
226
|
-
| Changed React components or hooks
|
|
227
|
-
| Changed Vue SFCs or composables
|
|
220
|
+
| Change made | Check |
|
|
221
|
+
| ------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
222
|
+
| Extracted a helper or abstraction | `scip-query incomplete-migration --json --full` |
|
|
223
|
+
| Added a helper, module, component, hook, composable, or adapter | `scip-query similar <symbol> --json --full` and `scip-query recent-duplicates --json --full` |
|
|
224
|
+
| Added parameters, options, props, config flags, or broad option objects | `scip-query unused-params --json --full` |
|
|
225
|
+
| Added a wrapper, facade, forwarding layer, alias, or re-export | `scip-query wrapper-candidates --json --full`, `scip-query passthrough-candidates --json --full`, and `scip-query redundant-reexports` when exports changed |
|
|
226
|
+
| Added an interface, base class, adapter contract, or type alias | `scip-query stale-abstractions --json --full` |
|
|
227
|
+
| Changed schema, config, generated files, public contracts, command descriptors, or docs-backed behavior | `scip-query co-change <file> --json --full` and `scip-query doc-drift --json --full` |
|
|
228
|
+
| Deleted code | `scip-query cleanup-plan --verify --json` |
|
|
229
|
+
| Changed React components or hooks | the React frontend commands above |
|
|
230
|
+
| Changed Vue SFCs or composables | the Vue frontend commands above |
|
|
228
231
|
|
|
229
232
|
Every implemented change ends with:
|
|
230
233
|
|
|
@@ -8,6 +8,7 @@ commands:
|
|
|
8
8
|
- scip-query dead --json
|
|
9
9
|
- scip-query similar <symbol>
|
|
10
10
|
- scip-query config-validate
|
|
11
|
+
- scip-query effectiveness --since 30d --json
|
|
11
12
|
---
|
|
12
13
|
|
|
13
14
|
# scip-calibrate
|
|
@@ -116,9 +117,14 @@ filed upstream.
|
|
|
116
117
|
|
|
117
118
|
The finding-outcome ledger keeps calibrating for you: once the repo uses
|
|
118
119
|
diff-gate, per-detector precision is recomputed from real outcomes
|
|
119
|
-
(`detectorPrecision` in `health --json`)
|
|
120
|
-
|
|
121
|
-
|
|
120
|
+
(`detectorPrecision` in `health --json`), and the committed event ledger
|
|
121
|
+
makes those outcomes durable and queryable — `scip-query effectiveness
|
|
122
|
+
--since 30d --json` reports per-check caught/same-HEAD-fixed/suppressed/open/
|
|
123
|
+
unverified counts, precision, and median days-to-fix from
|
|
124
|
+
`.scipquery/ledger/events.jsonl`. Run diff-gate before and after the repair,
|
|
125
|
+
before committing, so a changed HEAD cannot be mistaken for a verified fix.
|
|
126
|
+
Re-run this protocol only after major detector upgrades or when the
|
|
127
|
+
ledger's precision numbers drift from what you measured. Write the calibration report to
|
|
122
128
|
`docs/validation/YYYY-MM-DD-external-calibration-<repo>.md` in the shape of
|
|
123
129
|
the exemplars this skill was distilled from — battery table, retro-gate
|
|
124
130
|
walls, per-detector verdicts, noise archetypes, caps and deviations.
|
|
@@ -6,6 +6,8 @@ commands:
|
|
|
6
6
|
when: "Target and harness: baseline timings for a scip-query command target."
|
|
7
7
|
- template: "scip-query bench --json --cold-index --include-heavy --timeout-ms 600000"
|
|
8
8
|
when: "Target and harness: cold-path and heavy-detector timings."
|
|
9
|
+
- template: "scip-query work-audit <profile> --json"
|
|
10
|
+
when: "Profile the chain: rank exact repeated computations by measured avoidable time."
|
|
9
11
|
- template: "scip-query plan-context <entry-symbol-or-file>"
|
|
10
12
|
when: "Trace behavior: pre-edit context for the profiled entry point."
|
|
11
13
|
- template: "scip-query call-graph <entry-symbol>"
|
|
@@ -40,6 +42,7 @@ One sentence to decide: if you can already name the one function you expect to f
|
|
|
40
42
|
| --- | --- | --- |
|
|
41
43
|
| `scip-query bench --json` | Benchmark indexing and command runtimes for this repository | Target and harness: baseline timings for a scip-query command target. |
|
|
42
44
|
| `scip-query bench --json --cold-index --include-heavy --timeout-ms 600000` | Benchmark indexing and command runtimes for this repository | Target and harness: cold-path and heavy-detector timings. |
|
|
45
|
+
| `scip-query work-audit <profile> --json` | Rank exact repeated computations in a profiling JSONL file by measured avoidable time | Profile the chain: rank exact repeated computations by measured avoidable time. |
|
|
43
46
|
| `scip-query plan-context <entry-symbol-or-file>` | Pre-edit planning context for a symbol, file, or module | Trace behavior: pre-edit context for the profiled entry point. |
|
|
44
47
|
| `scip-query call-graph <entry-symbol>` | Show incoming callers and outgoing callees for a symbol | Trace behavior: callers/callees for the pipeline under test. |
|
|
45
48
|
| `scip-query complexity <hot-symbol>` | Per-symbol complexity: branches, cyclomatic estimate, fan-in/out, callees | Diagnose: branches, cyclomatic estimate, fan-in/out for a hot symbol. |
|
|
@@ -117,7 +120,7 @@ This step is complete only when each major pipeline step can be timed as a profi
|
|
|
117
120
|
|
|
118
121
|
### 4. Profile the chain
|
|
119
122
|
|
|
120
|
-
0. Check whether the target app already has an instrumentation layer before adding spans — a bespoke profiling harness competes with the one the codebase already trusts. When the target is scip-query itself, its instrumentation is `src/instrumentation/profile.ts` (`profileSpan`, env-gated by `SCIP_QUERY_PROFILE`/`SCIP_QUERY_PROFILE_OUT`, with `SCIP_QUERY_PROFILE_CACHE_STATE` for cache-state labels) — use it, don't add a parallel one.
|
|
123
|
+
0. Check whether the target app already has an instrumentation layer before adding spans — a bespoke profiling harness competes with the one the codebase already trusts. When the target is scip-query itself, its instrumentation is `src/instrumentation/profile.ts` (`profileSpan`/`profileAsyncSpan`, env-gated by `SCIP_QUERY_PROFILE`/`SCIP_QUERY_PROFILE_OUT`, with `SCIP_QUERY_PROFILE_CACHE_STATE` for cache-state labels and inherited workload/subsystem identities) — use it, don't add a parallel one.
|
|
121
124
|
1. Measure the target unprofiled.
|
|
122
125
|
2. Measure profiled once and compare overhead.
|
|
123
126
|
3. Measure distinct states: cold index, cold evidence/cache fill, warm cache hit, repeated focused run, production-like mixed state.
|
|
@@ -125,6 +128,7 @@ This step is complete only when each major pipeline step can be timed as a profi
|
|
|
125
128
|
5. Split the largest workload-weighted span.
|
|
126
129
|
6. Repeat until the slow operation is a repeated lookup, initialization, scan, traversal, subprocess, serialization step, or wait.
|
|
127
130
|
7. Write span records with cardinality to run history.
|
|
131
|
+
8. When spans carry work identities, run `scip-query work-audit <profile> --json` to separate exact repeats from same-name work on different inputs.
|
|
128
132
|
|
|
129
133
|
This step is complete only when the dominant cost is concrete enough to form a falsifiable hypothesis.
|
|
130
134
|
|
|
@@ -100,7 +100,7 @@ Top commands per routed skill, generated from each skill's own `commands:` front
|
|
|
100
100
|
| `scip-directory-architecture` | `scip-query system <scope>`, `scip-query locality-candidates --json --full`, `scip-query similar-files --full --json` |
|
|
101
101
|
| `scip-doc-reconcile` | `scip-query doc-drift --json --full`, `scip-query doc-drift <doc>`, `scip-query outline <subject-file>` |
|
|
102
102
|
| `scip-explore` | `scip-query stats`, `scip-query system <module-or-scope>`, `scip-query trace <entry-symbol>` |
|
|
103
|
-
| `scip-hyper-optimization` | `scip-query bench --json`, `scip-query bench --json --cold-index --include-heavy --timeout-ms 600000`, `scip-query
|
|
103
|
+
| `scip-hyper-optimization` | `scip-query bench --json`, `scip-query bench --json --cold-index --include-heavy --timeout-ms 600000`, `scip-query work-audit <profile> --json` |
|
|
104
104
|
| `scip-language-playbook` | `scip-query stats`, `scip-query files <feature-or-module-name>`, `scip-query outline <file>` |
|
|
105
105
|
| `scip-maintainability` | `scip-query stats`, `scip-query system <scope>`, `scip-query surface <scope>` |
|
|
106
106
|
| `scip-probe-reachability` | `scip-query outline <file> --signatures`, `scip-query code <symbol>`, `scip-query trace <symbol>` |
|