scip-query 0.10.12 → 0.11.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 +45 -0
- package/{vendor/scip/LICENSE.scip → LICENSE} +1 -0
- package/README.md +141 -49
- package/dist/augment-vue-worker.js +1 -1
- package/dist/chunk-2VSDXOG5.js +2 -0
- package/dist/chunk-343O6EVV.js +2 -0
- package/dist/{chunk-RUV5IY25.js → chunk-3KDUITBE.js} +2 -2
- package/dist/chunk-3T2FNHIU.js +2 -0
- package/dist/{chunk-EOLGSSDR.js → chunk-3V6JQQM5.js} +2 -2
- package/dist/chunk-5AAAEZ2Z.js +2 -0
- package/dist/chunk-6Q6OFLFQ.js +8 -0
- package/dist/chunk-6XA4LDHY.js +2 -0
- package/dist/chunk-75X52JTA.js +2 -0
- package/dist/{chunk-LEHVP4DY.js → chunk-7HB3CZFD.js} +2 -2
- package/dist/chunk-7JZRFDCU.js +2 -0
- package/dist/{chunk-SQNHOOJ5.js → chunk-7XL7J7PT.js} +2 -2
- package/dist/{chunk-GKB4JJDU.js → chunk-ALHNAPS2.js} +2 -2
- package/dist/{chunk-TBCHRDAC.js → chunk-BDRBPG7Y.js} +2 -2
- package/dist/chunk-BN5SXXQS.js +40 -0
- package/dist/chunk-C4ICAIJ4.js +3 -0
- package/dist/{chunk-2GLNBCHB.js → chunk-CMHYBXJB.js} +2 -2
- package/dist/{chunk-S2MRVIJ5.js → chunk-DRPAQAFM.js} +6 -6
- package/dist/chunk-FERAXG6Y.js +72 -0
- package/dist/chunk-FLJJLSGB.js +2 -0
- package/dist/chunk-FXG3PHVW.js +9 -0
- package/dist/{chunk-JS6B76AQ.js → chunk-GCN2P4EJ.js} +2 -2
- package/dist/chunk-GHXRVCIY.js +21 -0
- package/dist/chunk-GNG622H3.js +3 -0
- package/dist/chunk-H4LUPLEJ.js +2 -0
- package/dist/{chunk-XUCZ3RQ5.js → chunk-H56MGERE.js} +4 -4
- package/dist/chunk-H7NSJ7L2.js +5 -0
- package/dist/chunk-HINMXZ6J.js +2 -0
- package/dist/chunk-HXXMPYEF.js +2 -0
- package/dist/{chunk-A4UTLKHU.js → chunk-HZKMEXA3.js} +2 -2
- package/dist/{chunk-T3AEVJBG.js → chunk-IFSX6YVU.js} +2 -2
- package/dist/chunk-ISLWJ4PY.js +10 -0
- package/dist/chunk-J5WVNZ6O.js +2 -0
- package/dist/chunk-K2HYR5A7.js +3 -0
- package/dist/{chunk-UVPY3RUZ.js → chunk-K6UI6EBZ.js} +2 -2
- package/dist/{chunk-MNCQPMCH.js → chunk-KJCDEDQW.js} +2 -2
- package/dist/{chunk-KZ4MG5NY.js → chunk-KKMOB3OJ.js} +2 -2
- package/dist/{chunk-ELC77ZDE.js → chunk-KMVGRIO2.js} +2 -2
- package/dist/chunk-LWOOTRHC.js +2 -0
- package/dist/{chunk-DQ6433ZG.js → chunk-LZNLRE4X.js} +17 -8
- package/dist/{chunk-7C6JBBE4.js → chunk-M2YXL62V.js} +2 -2
- package/dist/chunk-MNEJYEHW.js +3 -0
- package/dist/chunk-MTDBHTSF.js +2 -0
- package/dist/{chunk-VB2EZZPA.js → chunk-N2Z3CU7X.js} +2 -2
- package/dist/{chunk-2UVCH7CQ.js → chunk-N7PNFLGY.js} +2 -2
- package/dist/chunk-NAH5EAZS.js +6 -0
- package/dist/{chunk-XHMVZFA6.js → chunk-NBXK32I6.js} +2 -2
- package/dist/chunk-NJJ7AS4F.js +2 -0
- package/dist/{chunk-ANUEY5WV.js → chunk-NLMRJ7SI.js} +2 -2
- package/dist/chunk-ODVITBYU.js +26 -0
- package/dist/chunk-ORBRX2QJ.js +2 -0
- package/dist/{chunk-NTSR6SRP.js → chunk-P36UR5II.js} +2 -2
- package/dist/chunk-PYZZBIEU.js +3 -0
- package/dist/chunk-PZS6J5YG.js +16 -0
- package/dist/{chunk-3XSNW5XB.js → chunk-QARYU7R3.js} +2 -2
- package/dist/chunk-QJ3FK4TB.js +38 -0
- package/dist/{chunk-4ISHQ7UW.js → chunk-QXGTGE2C.js} +4 -4
- package/dist/chunk-QZ4JVECJ.js +2 -0
- package/dist/{chunk-63CI3IXR.js → chunk-R3JY4EZ4.js} +10 -10
- package/dist/{chunk-FX6ULETZ.js → chunk-R5336VHZ.js} +2 -2
- package/dist/chunk-RJMXSHKM.js +2 -0
- package/dist/chunk-STBXCPKY.js +5 -0
- package/dist/chunk-T2FQ4GHD.js +9 -0
- package/dist/chunk-TFWDJDGO.js +2 -0
- package/dist/chunk-TG7QSYCJ.js +2 -0
- package/dist/{chunk-ZUUNREKS.js → chunk-TTS75UF2.js} +5 -5
- package/dist/{chunk-DDQONX6B.js → chunk-U7I373V4.js} +2 -2
- package/dist/chunk-UIKLA3F5.js +2 -0
- package/dist/{chunk-6BN3EHQE.js → chunk-UMPNL7T6.js} +2 -2
- package/dist/chunk-URSSPS5H.js +2 -0
- package/dist/chunk-VGMUFW3J.js +2 -0
- package/dist/chunk-VXTNADIW.js +18 -0
- package/dist/{chunk-PWAK75BU.js → chunk-VYF5HA76.js} +2 -2
- package/dist/chunk-WFGOH2UI.js +43 -0
- package/dist/chunk-WGA5BBTA.js +4 -0
- package/dist/chunk-WIBFXSYB.js +6 -0
- package/dist/chunk-WPSS37EW.js +2 -0
- package/dist/chunk-WQHWIVA7.js +3 -0
- package/dist/chunk-WS3Z6W3M.js +65 -0
- package/dist/chunk-WXVGNFAO.js +2 -0
- package/dist/{chunk-RXINFVBN.js → chunk-WZLPXFZU.js} +2 -2
- package/dist/chunk-X4O6K47U.js +2 -0
- package/dist/chunk-X6OGDTQH.js +2 -0
- package/dist/chunk-XEMQUN3Z.js +20 -0
- package/dist/{chunk-OFXN2BCT.js → chunk-XHWLNQVZ.js} +2 -2
- package/dist/chunk-XMR747CP.js +2 -0
- package/dist/{chunk-JJ5SAWBT.js → chunk-Y6L4LXPG.js} +2 -2
- package/dist/chunk-YCPASUCX.js +2 -0
- package/dist/chunk-YZXV3CU3.js +60 -0
- package/dist/{chunk-XRUGSM76.js → chunk-ZEKBR4OK.js} +2 -2
- package/dist/chunk-ZMGBWSFZ.js +2 -0
- package/dist/cli.js +446 -280
- package/dist/{config-types-dvHOz0zU.d.ts → config-types-BrHl3Bge.d.ts} +57 -0
- package/dist/{db-rMZO5JFK.d.ts → db-_Bdx0E1W.d.ts} +1 -1
- package/dist/diff-gate-types-CG2YQ_ei.d.ts +4 -0
- package/dist/{frontend-behavior-evidence-BxKpKWUu.d.ts → frontend-behavior-evidence-EfM4_9bc.d.ts} +1 -1
- package/dist/{health-CtTIGh6H.d.ts → health-BEZ1Rt0S.d.ts} +54 -2
- package/dist/index.d.ts +4 -68
- package/dist/index.js +1 -1
- package/dist/postinstall.js +1 -4
- package/dist/queries/affected.d.ts +2 -2
- package/dist/queries/affected.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 +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 +12 -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 +7 -3
- package/dist/queries/complexity-hotspots.js +1 -1
- package/dist/queries/complexity.d.ts +42 -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 +12 -3
- 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 +3 -3
- package/dist/queries/dead.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 +65 -8
- package/dist/queries/diff-gate.js +1 -1
- package/dist/queries/diff-impact.d.ts +21 -3
- package/dist/queries/diff-impact.js +1 -1
- package/dist/queries/doc-drift.d.ts +29 -2
- package/dist/queries/doc-drift.js +1 -1
- package/dist/queries/drift.d.ts +15 -3
- package/dist/queries/drift.js +1 -1
- package/dist/queries/duplicate-bodies.d.ts +55 -0
- package/dist/queries/duplicate-bodies.js +2 -0
- package/dist/queries/extract-candidates.d.ts +2 -2
- package/dist/queries/extract-candidates.js +1 -1
- package/dist/queries/fan.d.ts +2 -2
- package/dist/queries/fan.js +1 -1
- package/dist/queries/files.d.ts +4 -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 +3 -2
- package/dist/queries/incomplete-migration.js +1 -1
- package/dist/queries/index.d.ts +12 -7
- 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/outline.d.ts +2 -2
- package/dist/queries/outline.js +1 -1
- package/dist/queries/passthrough-candidates.d.ts +11 -3
- package/dist/queries/passthrough-candidates.js +1 -1
- package/dist/queries/plan-context.d.ts +3 -2
- package/dist/queries/plan-context.js +1 -1
- package/dist/queries/react-component-duplicates.d.ts +7 -2
- package/dist/queries/react-component-duplicates.js +1 -1
- package/dist/queries/react-hook-candidates.d.ts +3 -3
- 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 +4 -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 +17 -10
- package/dist/queries/similar-signatures.js +1 -1
- package/dist/queries/similar.d.ts +42 -3
- 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/trace.d.ts +2 -2
- package/dist/queries/trace.js +1 -1
- package/dist/queries/twin-ab.d.ts +55 -0
- package/dist/queries/twin-ab.js +2 -0
- package/dist/queries/twin-drift.d.ts +97 -0
- package/dist/queries/twin-drift.js +2 -0
- 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 +7 -2
- package/dist/queries/vue-component-duplicates.js +1 -1
- package/dist/queries/vue-composable-candidates.d.ts +3 -3
- package/dist/queries/vue-composable-candidates.js +1 -1
- package/dist/queries/vue-large-view-pressure.d.ts +6 -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 +9 -9
- package/dist/reindex.d.ts +3 -3
- package/dist/reindex.js +19 -19
- package/dist/runtime.d.ts +11 -6
- package/dist/runtime.js +2 -2
- package/dist/{scip-cli-trnNvymv.d.ts → scip-cli-C7cg4ZHR.d.ts} +1 -1
- package/dist/symbol-types-DaoeXKUt.d.ts +66 -0
- package/docs/AGENT_GUIDE.md +20 -18
- package/docs/AI_FAILURE_MODES.md +36 -13
- package/docs/API.md +1 -1
- package/docs/COMMAND_REFERENCE.md +56 -13
- package/docs/DETECTOR_GUIDE.md +20 -3
- package/docs/REGEX_POLICY.md +34 -0
- package/docs/analyzer-inventory.md +40 -3
- package/docs/analyzer-validation-ledger.md +34 -6
- package/package.json +21 -7
- package/scripts/build-scip-windows.mjs +10 -7
- package/skills/_shared/SKILL.md +243 -0
- package/skills/_shared/agents/openai.yaml +4 -0
- package/skills/scip-api-impact/SKILL.md +55 -71
- package/skills/scip-claim-audit/SKILL.md +105 -0
- package/skills/scip-claim-audit/agents/openai.yaml +4 -0
- package/skills/scip-cleanup-audit/SKILL.md +122 -0
- package/skills/scip-cleanup-audit/agents/openai.yaml +4 -0
- package/skills/scip-cleanup-improve/SKILL.md +84 -0
- package/skills/scip-cleanup-improve/agents/openai.yaml +4 -0
- package/skills/scip-concrete-plan/SKILL.md +181 -0
- package/skills/scip-concrete-plan/agents/openai.yaml +4 -0
- package/skills/scip-conductor/SKILL.md +133 -0
- package/skills/scip-conductor/agents/openai.yaml +4 -0
- package/skills/scip-debug/SKILL.md +60 -58
- package/skills/scip-diagram/SKILL.md +64 -94
- package/skills/scip-directory-architecture/SKILL.md +65 -107
- package/skills/scip-doc-reconcile/SKILL.md +56 -67
- package/skills/scip-explore/SKILL.md +78 -210
- package/skills/scip-hyper-optimization/SKILL.md +124 -198
- package/skills/scip-integrity-audit/SKILL.md +103 -0
- package/skills/scip-integrity-audit/agents/openai.yaml +4 -0
- package/skills/scip-language-playbook/SKILL.md +56 -326
- package/skills/scip-maintainability/SKILL.md +80 -219
- package/skills/scip-probe-reachability/SKILL.md +92 -0
- package/skills/scip-probe-reachability/agents/openai.yaml +4 -0
- package/skills/scip-query/SKILL.md +108 -124
- package/skills/scip-react-maintainability/SKILL.md +64 -82
- package/skills/scip-setup/SKILL.md +121 -0
- package/skills/scip-setup/agents/openai.yaml +4 -0
- package/skills/scip-tla-model-system/SKILL.md +138 -0
- package/skills/scip-tla-model-system/agents/openai.yaml +4 -0
- package/skills/scip-triage-issue/SKILL.md +53 -41
- package/skills/scip-twin-drift/SKILL.md +107 -0
- package/skills/scip-twin-drift/agents/openai.yaml +4 -0
- package/skills/scip-verify/SKILL.md +70 -88
- package/skills/scip-vue-maintainability/SKILL.md +67 -94
- package/dist/chunk-2DOW7QCA.js +0 -71
- package/dist/chunk-2FMFF4RI.js +0 -2
- package/dist/chunk-5GXTUANY.js +0 -2
- package/dist/chunk-5JHEN5VN.js +0 -25
- package/dist/chunk-62ULXMQ7.js +0 -18
- package/dist/chunk-7EK7OSWS.js +0 -2
- package/dist/chunk-7IWIMNHI.js +0 -2
- package/dist/chunk-7XTO4YXB.js +0 -8
- package/dist/chunk-AOWFUGDL.js +0 -2
- package/dist/chunk-AREANYIA.js +0 -3
- package/dist/chunk-AZBELWZQ.js +0 -7
- package/dist/chunk-B32FX5KB.js +0 -2
- package/dist/chunk-B6MJ5VQV.js +0 -2
- package/dist/chunk-CXWCLVYL.js +0 -2
- package/dist/chunk-CYHIKTJN.js +0 -3
- package/dist/chunk-DFSEARAU.js +0 -2
- package/dist/chunk-DVFP6PZI.js +0 -2
- package/dist/chunk-E3ADDB43.js +0 -2
- package/dist/chunk-F6IXELII.js +0 -20
- package/dist/chunk-FMGVZBS2.js +0 -2
- package/dist/chunk-GG5LHT27.js +0 -2
- package/dist/chunk-H7JF2CKK.js +0 -2
- package/dist/chunk-HHOMJCP5.js +0 -4
- package/dist/chunk-HRDSU5FN.js +0 -9
- package/dist/chunk-HWVYTJOV.js +0 -2
- package/dist/chunk-JNMLBL36.js +0 -2
- package/dist/chunk-L446VQYQ.js +0 -2
- package/dist/chunk-LDJUB7XW.js +0 -2
- package/dist/chunk-MYTUWXHK.js +0 -4
- package/dist/chunk-N25HPUOK.js +0 -2
- package/dist/chunk-NABVR6B7.js +0 -2
- package/dist/chunk-NBNEVLRC.js +0 -3
- package/dist/chunk-ONPCQ2PM.js +0 -6
- package/dist/chunk-Q5P7NOVM.js +0 -2
- package/dist/chunk-RGKRYO22.js +0 -4
- package/dist/chunk-RM2WQ75T.js +0 -2
- package/dist/chunk-ROGZXWN2.js +0 -2
- package/dist/chunk-RSSXKJ6J.js +0 -38
- package/dist/chunk-RVGEZYMQ.js +0 -2
- package/dist/chunk-SA3DPTHT.js +0 -7
- package/dist/chunk-SGTKURU6.js +0 -52
- package/dist/chunk-T4N2ZRVY.js +0 -21
- package/dist/chunk-THB6AM3V.js +0 -11
- package/dist/chunk-ULHLDOD6.js +0 -4
- package/dist/chunk-UQ73QF5D.js +0 -43
- package/dist/chunk-UUBMFL3F.js +0 -59
- package/dist/chunk-V5FGK3DZ.js +0 -2
- package/dist/chunk-WTY5FERW.js +0 -2
- package/dist/chunk-WUOB4DHH.js +0 -6
- package/dist/chunk-YFQIKYOP.js +0 -2
- package/dist/chunk-Z2LDWIJV.js +0 -5
- package/dist/chunk-ZNWWVYQL.js +0 -3
- package/skills/concrete-plan/SKILL.md +0 -372
- package/skills/concrete-plan/agents/openai.yaml +0 -4
- package/skills/scip-adoption/SKILL.md +0 -122
- package/skills/scip-adoption/agents/openai.yaml +0 -4
- package/skills/scip-ai-cleanup/SKILL.md +0 -153
- package/skills/scip-ai-cleanup/agents/openai.yaml +0 -4
- package/skills/scip-debloat/SKILL.md +0 -439
- package/skills/scip-debloat/agents/openai.yaml +0 -4
- package/skills/scip-health-audit/SKILL.md +0 -162
- package/skills/scip-health-audit/agents/openai.yaml +0 -4
- package/skills/scip-health-improve/SKILL.md +0 -155
- package/skills/scip-health-improve/agents/openai.yaml +0 -4
- package/skills/scip-query-setup/SKILL.md +0 -170
- package/skills/scip-query-setup/agents/openai.yaml +0 -3
- package/vendor/scip/README.md +0 -6
- package/vendor/scip/win32-arm64/scip.exe +0 -0
- package/vendor/scip/win32-x64/scip.exe +0 -0
package/docs/AGENT_GUIDE.md
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
Goal-oriented workflows for AI agents and developers. Each section starts with a goal and walks through the exact commands to run, what to expect back, and how to use the results.
|
|
4
4
|
|
|
5
5
|
For command syntax and options reference, see [Command Reference](COMMAND_REFERENCE.md).
|
|
6
|
+
For analyzer implementation work, follow [Regex Policy](REGEX_POLICY.md): regex is kept for flat machine-generated strings, while structured inputs should use available parsers and disclose fallback paths.
|
|
6
7
|
|
|
7
8
|
---
|
|
8
9
|
|
|
@@ -14,25 +15,24 @@ For command syntax and options reference, see [Command Reference](COMMAND_REFERE
|
|
|
14
15
|
|
|
15
16
|
1. **Run setup**
|
|
16
17
|
```bash
|
|
17
|
-
scip-query setup-hooks --json
|
|
18
18
|
scip-query setup --json
|
|
19
19
|
```
|
|
20
|
-
Returns:
|
|
20
|
+
Returns: detected languages, indexer readiness, remediation attempts, index result, capability summary, project-local hook install state, smoke tests, health score, issue list, health dossier paths, and setup verdict. Use `scip-query setup --no-hooks --json` when the repo should not write Codex or Claude Code lifecycle hooks.
|
|
21
21
|
|
|
22
22
|
2. **Resolve blockers**
|
|
23
23
|
```bash
|
|
24
|
-
scip-query check-deps
|
|
25
24
|
scip-query doctor
|
|
26
|
-
scip-query
|
|
25
|
+
scip-query status --json
|
|
26
|
+
scip-query capabilities --matrix
|
|
27
27
|
```
|
|
28
|
-
|
|
28
|
+
`doctor` is the human diagnostic. `status --json` is the machine-readable freshness/config surface. `check-deps` and `capability-matrix` remain compatibility aliases, but new workflows should prefer `doctor`, `status`, and `capabilities --matrix`.
|
|
29
29
|
|
|
30
30
|
3. **Start health follow-through**
|
|
31
31
|
```bash
|
|
32
|
-
scip-query health --json
|
|
32
|
+
scip-query health --json
|
|
33
33
|
scip-query diff-gate --json
|
|
34
34
|
```
|
|
35
|
-
Before cleanup, tell the user the health score, confirmed items, unavailable checks, and recommended first cleanup batch. Use `scip-
|
|
35
|
+
Before cleanup, tell the user the health score, confirmed items, unavailable checks, and recommended first cleanup batch. Use `scip-cleanup-audit` for confirmation and `scip-cleanup-improve` when the user wants autonomous score improvement.
|
|
36
36
|
|
|
37
37
|
### What you should know after this workflow
|
|
38
38
|
|
|
@@ -178,17 +178,19 @@ For command syntax and options reference, see [Command Reference](COMMAND_REFERE
|
|
|
178
178
|
|
|
179
179
|
### Steps
|
|
180
180
|
|
|
181
|
+
Numeric thresholds below are recommended starting points for review sessions; command defaults may differ.
|
|
182
|
+
|
|
181
183
|
1. **Get the full health report**
|
|
182
184
|
```bash
|
|
183
185
|
scip-query health
|
|
184
186
|
```
|
|
185
187
|
This runs every analysis and produces a prioritized action list. Start here. The actions are sorted by impact/effort ratio — do the top ones first.
|
|
186
188
|
|
|
187
|
-
2. **
|
|
189
|
+
2. **Review dead-code candidates**
|
|
188
190
|
```bash
|
|
189
191
|
scip-query dead --min-loc 10 --skip-barrels
|
|
190
192
|
```
|
|
191
|
-
These symbols have zero cross-file references.
|
|
193
|
+
These symbols have zero cross-file references. Treat them as deletion candidates and confirm with `cleanup-plan --verify` before deleting. `--skip-barrels` ignores references from inactive barrel files, which helps surface exports kept alive only by unused re-export layers without hiding live package entry surfaces.
|
|
192
194
|
|
|
193
195
|
3. **Delete isolated symbols**
|
|
194
196
|
```bash
|
|
@@ -233,9 +235,9 @@ For command syntax and options reference, see [Command Reference](COMMAND_REFERE
|
|
|
233
235
|
|
|
234
236
|
9. **Fix pattern drift**
|
|
235
237
|
```bash
|
|
236
|
-
scip-query drift
|
|
238
|
+
scip-query drift --patterns
|
|
237
239
|
```
|
|
238
|
-
Files that deviate from their directory's typical dependency pattern. Bring them into line with their neighbors.
|
|
240
|
+
Files that deviate from their directory's typical dependency pattern. Bring them into line with their neighbors. `--patterns` is opt-in (off by default since 21.2 calibration found this channel low-precision at scale) — treat hits as leads to confirm, not findings.
|
|
239
241
|
|
|
240
242
|
10. **Remove redundant re-exports**
|
|
241
243
|
```bash
|
|
@@ -253,8 +255,8 @@ For command syntax and options reference, see [Command Reference](COMMAND_REFERE
|
|
|
253
255
|
|
|
254
256
|
| Priority | What | Why |
|
|
255
257
|
|---|---|---|
|
|
256
|
-
| 1 | Dead code |
|
|
257
|
-
| 2 | Isolated symbols | Zero
|
|
258
|
+
| 1 | Dead code | High-confidence deletion candidates; verify before deleting |
|
|
259
|
+
| 2 | Isolated symbols | Zero indexed consumers; verify before deleting |
|
|
258
260
|
| 3 | Circular deps | Structural fix, prevents future problems |
|
|
259
261
|
| 4 | Similar functions | Reduces duplication, use `convergence` for prescription |
|
|
260
262
|
| 5 | Extraction candidates | Reduces function complexity |
|
|
@@ -296,9 +298,9 @@ For command syntax and options reference, see [Command Reference](COMMAND_REFERE
|
|
|
296
298
|
|
|
297
299
|
5. **Structural drift**
|
|
298
300
|
```bash
|
|
299
|
-
scip-query drift
|
|
301
|
+
scip-query drift --patterns
|
|
300
302
|
```
|
|
301
|
-
Files with unused imports, layer violations, or dependency profiles that deviate from their neighbors.
|
|
303
|
+
Files with unused imports, layer violations, or dependency profiles that deviate from their neighbors. `--patterns` opts into the deviation channel (off by default since 21.2 calibration); layer violations and unused imports print either way.
|
|
302
304
|
|
|
303
305
|
### Quality report template
|
|
304
306
|
|
|
@@ -346,10 +348,10 @@ For command syntax and options reference, see [Command Reference](COMMAND_REFERE
|
|
|
346
348
|
|
|
347
349
|
3. **Re-check structural drift around the changed area**
|
|
348
350
|
```bash
|
|
349
|
-
scip-query drift
|
|
351
|
+
scip-query drift --patterns
|
|
350
352
|
scip-query change-surface <changed-file>
|
|
351
353
|
```
|
|
352
|
-
Verify the change did not introduce new dependency-pattern outliers and understand the remaining blast radius.
|
|
354
|
+
Verify the change did not introduce new dependency-pattern outliers and understand the remaining blast radius. `--patterns` opts into the deviation channel (off by default since 21.2 calibration).
|
|
353
355
|
|
|
354
356
|
---
|
|
355
357
|
|
|
@@ -387,4 +389,4 @@ For command syntax and options reference, see [Command Reference](COMMAND_REFERE
|
|
|
387
389
|
- **Run `diff-impact --json` before committing** — catches unexpected blast radius across downstream consumers
|
|
388
390
|
- **Use `convergence` after `similar`** — `similar` finds the problem, `convergence` gives the solution
|
|
389
391
|
- **Start cleanup with `health`** — it prioritizes for you so you don't have to decide what to fix first
|
|
390
|
-
- **Scope
|
|
392
|
+
- **Scope where supported** — many cleanup and health commands accept `-s, --scope <path>`; navigation commands usually take a file, symbol, or module argument instead. Use the narrowest supported target on large codebases.
|
package/docs/AI_FAILURE_MODES.md
CHANGED
|
@@ -21,7 +21,9 @@ contradict each other.
|
|
|
21
21
|
|
|
22
22
|
**The detector:** `recent-duplicates` makes similarity *directional* using git
|
|
23
23
|
file ages - which side is the established original, which is the freshly-added
|
|
24
|
-
echo
|
|
24
|
+
echo.
|
|
25
|
+
|
|
26
|
+
Illustrative output:
|
|
25
27
|
|
|
26
28
|
```
|
|
27
29
|
91% ECHO react-component src/components/ProjectCardVisual.tsx ProjectCardVisual (added 62 commits ago)
|
|
@@ -135,7 +137,9 @@ is worse than none.
|
|
|
135
137
|
|
|
136
138
|
**The detector:** `doc-drift` reads every doc's file citations *and* its
|
|
137
139
|
co-change history, and flags docs whose referenced code kept changing after
|
|
138
|
-
the doc stopped — including broken references to files that no longer exist
|
|
140
|
+
the doc stopped — including broken references to files that no longer exist.
|
|
141
|
+
|
|
142
|
+
Illustrative output:
|
|
139
143
|
|
|
140
144
|
```
|
|
141
145
|
staleness 94 product/domain-model.md
|
|
@@ -183,7 +187,9 @@ safe to remove.
|
|
|
183
187
|
deleting batch 0 makes batch 1 dead, and the plan shows the cascade. Then
|
|
184
188
|
`--verify` applies each batch in a throwaway git worktree and runs **your own
|
|
185
189
|
compiler** (tsc, cargo, go, python oracles — differentially, so pre-existing
|
|
186
|
-
errors don't drown the signal)
|
|
190
|
+
errors don't drown the signal).
|
|
191
|
+
|
|
192
|
+
Illustrative output:
|
|
187
193
|
|
|
188
194
|
```
|
|
189
195
|
── Batch 0: deletable now (graph-fact, 67 LOC) ──
|
|
@@ -216,7 +222,7 @@ scip-query plan-context <symbol-or-file> # before the edit
|
|
|
216
222
|
scip-query diff-impact --json # after the edit
|
|
217
223
|
```
|
|
218
224
|
|
|
219
|
-
The `concrete-plan` skill enforces this end-to-end: every step in a plan must
|
|
225
|
+
The `scip-concrete-plan` skill enforces this end-to-end: every step in a plan must
|
|
220
226
|
cite the scip-query command that verified it.
|
|
221
227
|
|
|
222
228
|
## 10. Slow quality decay nobody notices
|
|
@@ -248,12 +254,14 @@ The detectors only help if they run. Three layers, in increasing strength:
|
|
|
248
254
|
bundled skills into `~/.agents/skills/`, `~/.claude/skills/`, and
|
|
249
255
|
`~/.codex/skills/` — they update automatically with the package. Project setup
|
|
250
256
|
writes reviewable repo-local hooks to `.codex/hooks.json` and
|
|
251
|
-
`.claude/settings.json
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
hook
|
|
257
|
+
`.claude/settings.local.json` by default; `setup-hooks --shared` opts into the
|
|
258
|
+
tracked `.claude/settings.json`. Set `SCIP_QUERY_SKIP_HOOK_INSTALL=1` or run
|
|
259
|
+
`scip-query setup --no-hooks` to skip lifecycle hook setup. The hooks add
|
|
260
|
+
scip-query context at session start, route prompts toward the right specialist,
|
|
261
|
+
and run a safe Stop hook wrapper around the diff gate only for that repository.
|
|
262
|
+
The Stop hook sends feedback to the agent by default; set
|
|
263
|
+
`SCIP_QUERY_STOP_HOOK_MODE=warn` for warning-only output or
|
|
264
|
+
`SCIP_QUERY_STOP_HOOK_MODE=block` to enforce the gate. Run
|
|
257
265
|
`scip-query setup-hooks --json` to repair the current repo's hooks.
|
|
258
266
|
|
|
259
267
|
**2. Project setup and guidance.** Run once per project:
|
|
@@ -268,17 +276,32 @@ commands, writes `docs/scip-query/health-dossier.md` and `.json`, reports the
|
|
|
268
276
|
health score and items needing attention, and seeds a managed block in
|
|
269
277
|
`AGENTS.md` plus a `CLAUDE.md` import shim.
|
|
270
278
|
|
|
271
|
-
After setup, use `scip-
|
|
272
|
-
`scip-
|
|
279
|
+
After setup, use `scip-cleanup-audit` to confirm raw signals and
|
|
280
|
+
`scip-cleanup-improve` when the user wants the agent to fix the worst confirmed
|
|
273
281
|
items until the health score is as high as reasonably possible.
|
|
274
282
|
|
|
275
283
|
**3. The gate (enforcement).**
|
|
276
284
|
|
|
277
285
|
```bash
|
|
278
|
-
scip-query diff-gate --json #
|
|
286
|
+
scip-query diff-gate --json # default diff-scoped checks, exit 1 on findings
|
|
287
|
+
scip-query diff-gate --json --baseline # include the health-baseline ratchet
|
|
279
288
|
scip-query setup-agent --git-hook # pre-commit backstop: fires whoever wrote the diff
|
|
280
289
|
```
|
|
281
290
|
|
|
291
|
+
<!-- BEGIN GENERATED DIFF-GATE CHECKS -->
|
|
292
|
+
| Check | What it catches | When it runs |
|
|
293
|
+
| --- | --- | --- |
|
|
294
|
+
| `echo` | Changed symbols that newly echo established code elsewhere. | Default diff gate. |
|
|
295
|
+
| `incomplete-migration` | New helpers or abstractions wired into some sites while older inline sites remain. | Default diff gate. |
|
|
296
|
+
| `co-change-partner` | Historically coupled files that usually change together but are missing from this diff. | Default diff gate. |
|
|
297
|
+
| `twin-partner` | A changed symbol has a same-(near-)name twin (identical or already-divergent) elsewhere that this diff left untouched. | Default diff gate. Advisory: findings print but never cause a nonzero exit by themselves. |
|
|
298
|
+
| `coverage-contract` | A configured `coverageContracts` entry (.scipquery.json) drifted: its declared key set no longer matches its ground-truth source. | Default diff gate, only when either side of a configured contract changed. |
|
|
299
|
+
| `doc-reference` | Docs that cite changed files and may need a matching update. Dated snapshot docs (docs.snapshotPaths) are excluded by policy. | Default diff gate. Advisory (21.2) for bare file-mention citations; blocking when the citation has a line anchor or the cited file was deleted/renamed. |
|
|
300
|
+
| `unused-params` | Fresh trailing parameters or options that no changed body uses. | Default diff gate. |
|
|
301
|
+
| `new-dead` | Changed production symbols with zero indexed consumers. | Default diff gate. |
|
|
302
|
+
| `baseline` | New health finding identities compared with the committed health baseline. | Only with `diff-gate --baseline`. |
|
|
303
|
+
<!-- END GENERATED DIFF-GATE CHECKS -->
|
|
304
|
+
|
|
282
305
|
Every finding ships with a remediation an agent can act on without human
|
|
283
306
|
triage. The installed Codex/Claude Stop hook uses the same diff-gate evidence,
|
|
284
307
|
warns by default, and no-ops outside indexed scip-query workspaces, so global
|
package/docs/API.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Programmatic API
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Public query commands are also available as TypeScript functions. The `queries` namespace exports cover the analysis commands, including the `top*` variants of `fan-in`, `fan-out`, and `coupling`, plus `similarAll` for the cross-codebase mode of `similar`. Operational CLI commands such as `setup`, `doctor`, and `setup-hooks` remain runtime commands rather than query-library exports.
|
|
4
4
|
|
|
5
5
|
```typescript
|
|
6
6
|
import { ScipDatabase, createGitignoreFilter } from 'scip-query';
|
|
@@ -48,7 +48,7 @@ This syntax summary is generated from the CLI command descriptors. Keep workflow
|
|
|
48
48
|
| `dead [scope]` | Find dead code and file-internal symbols (no cross-file consumers) | `--min-loc <n>`<br>`--include-tests`<br>`--skip-barrels`<br>`--include-members`<br>`--only-dead`<br>`--only-internal`<br>`--full`<br>`--json` |
|
|
49
49
|
| `unused-imports <file>` | Find imports not referenced in the same file | `--full`<br>`--json` |
|
|
50
50
|
| `isolated` | Find completely orphaned symbols (no references at all) | `-s, --scope <path>`<br>`--min-loc <n>`<br>`--full`<br>`--json` |
|
|
51
|
-
| `similar [symbol]` | Find heuristic function similarity candidates from callee fingerprints | `--min-similarity <n>`<br>`-n, --limit <n>`<br>`-s, --scope <path>`<br>`--min-callees <n>`<br>`--cross-file-only`<br>`--full`<br>`--json` |
|
|
51
|
+
| `similar [symbol] [other]` | Find heuristic function similarity candidates from callee fingerprints | `--min-similarity <n>`<br>`-n, --limit <n>`<br>`-s, --scope <path>`<br>`--min-callees <n>`<br>`--cross-file-only`<br>`--plan`<br>`--full`<br>`--json` |
|
|
52
52
|
| `similar-files [file]` | Find heuristic similar-file candidates from dependency profiles | `--min-similarity <n>`<br>`-n, --limit <n>`<br>`-s, --scope <path>`<br>`--min-deps <n>`<br>`--full`<br>`--json` |
|
|
53
53
|
| `react-component-duplicates [file]` | Find heuristic duplicated React component structure candidates from JSX tags, props, events, and bindings | `--min-similarity <n>`<br>`--min-tokens <n>`<br>`-n, --limit <n>`<br>`-s, --scope <path>`<br>`--full`<br>`--json` |
|
|
54
54
|
| `react-hook-candidates [file]` | Find heuristic React hook extraction candidates from shared state, effects, requests, and handlers | `--min-similarity <n>`<br>`--min-shared-behaviors <n>`<br>`-n, --limit <n>`<br>`-s, --scope <path>`<br>`--full`<br>`--json` |
|
|
@@ -64,14 +64,17 @@ This syntax summary is generated from the CLI command descriptors. Keep workflow
|
|
|
64
64
|
| `recent-duplicates` | Directional duplicate candidates: recent code that re-implements established callable, React, or Vue code | `--window <n>`<br>`--min-similarity <n>`<br>`-n, --limit <n>`<br>`-s, --scope <path>`<br>`--full`<br>`--json` |
|
|
65
65
|
| `doc-drift [doc]` | Stale-doc candidates: code the doc references or co-changed with kept changing after the doc stopped | `-n, --limit <n>`<br>`--min-coupling <n>`<br>`--full`<br>`--json` |
|
|
66
66
|
| `unused-params` | Speculative-generality candidates: trailing parameters no body ever uses (TS/JS) | `-s, --scope <path>`<br>`-n, --limit <n>`<br>`--full`<br>`--json` |
|
|
67
|
-
| `drift [module]` | Detect heuristic drift candidates: unused imports
|
|
68
|
-
| `wrapper-candidates` | Find heuristic wrapper candidates only called by one consumer | `-s, --scope <path>`<br>`--max-loc <n>`<br>`-n, --limit <n>`<br>`--full`<br>`--json` |
|
|
67
|
+
| `drift [module]` | Detect heuristic drift candidates: unused imports and layer violations by default; pass --patterns for pattern deviations too | `--min-deviation <n>`<br>`--patterns`<br>`-n, --limit <n>`<br>`--full`<br>`--json` |
|
|
68
|
+
| `wrapper-candidates` | Find heuristic wrapper candidates only called by one consumer (high false-positive rate on codebases with intentional layering/ambient types — treat as exploration, not findings) | `-s, --scope <path>`<br>`--max-loc <n>`<br>`-n, --limit <n>`<br>`--full`<br>`--json` |
|
|
69
69
|
| `passthrough-candidates` | Find heuristic passthrough candidates that forward to one callee | `-s, --scope <path>`<br>`--max-loc <n>`<br>`-n, --limit <n>`<br>`--full`<br>`--json` |
|
|
70
|
-
| `stale-abstractions` | Find heuristic stale abstraction candidates with 0-1 consumers | `-s, --scope <path>`<br>`--min-loc <n>`<br>`-n, --limit <n>`<br>`--include-low-confidence`<br>`--full`<br>`--json` |
|
|
70
|
+
| `stale-abstractions` | Find heuristic stale abstraction candidates with 0-1 consumers (high false-positive rate on codebases with intentional layering/ambient types — treat as exploration, not findings) | `-s, --scope <path>`<br>`--min-loc <n>`<br>`-n, --limit <n>`<br>`--include-low-confidence`<br>`--full`<br>`--json` |
|
|
71
71
|
| `complexity-hotspots` | Find heuristic complexity hotspot candidates from LOC x fan-in x fan-out | `-s, --scope <path>`<br>`--min-loc <n>`<br>`-n, --limit <n>`<br>`--full`<br>`--json` |
|
|
72
|
-
| `convergence <symbol1> <symbol2>` |
|
|
72
|
+
| `convergence <symbol1> <symbol2>` | Deprecated alias for similar <symbol1> <symbol2> --plan | `--full`<br>`--json` |
|
|
73
73
|
| `redundant-reexports` | Find barrel re-exports that nobody imports through | `-s, --scope <path>`<br>`-n, --limit <n>`<br>`--full`<br>`--json` |
|
|
74
|
-
| `
|
|
74
|
+
| `duplicate-bodies` | Find exact duplicate small-body candidates across files | `-s, --scope <path>`<br>`--max-loc <n>`<br>`--min-loc <n>`<br>`-n, --limit <n>`<br>`--full`<br>`--json` |
|
|
75
|
+
| `twin-drift` | Twin drift candidates: same-name (or near-name) functions across files with diverged bodies | `-s, --scope <path>`<br>`--min-similarity <n>`<br>`--include-homonyms`<br>`-n, --limit <n>`<br>`--full`<br>`--json` |
|
|
76
|
+
| `twin-ab <symbolA> <symbolB>` | Generate a behavioral A/B scaffold comparing two same-concept twins (scip-integrity-audit drill 5) — a ready-to-fill vitest file, not an auto-executor | `--out <path>`<br>`--force`<br>`--json` |
|
|
77
|
+
| `similar-signatures` | Find functions with near-identical type signatures (same shape) | `-s, --scope <path>`<br>`--min-loc <n>`<br>`--max-shape-frequency <n>`<br>`-n, --limit <n>`<br>`--full`<br>`--json` |
|
|
75
78
|
|
|
76
79
|
### Graph
|
|
77
80
|
|
|
@@ -93,10 +96,16 @@ This syntax summary is generated from the CLI command descriptors. Keep workflow
|
|
|
93
96
|
| `affected <symbol>` | Transitive closure of symbols that could break if this symbol changes | `--max-depth <n>`<br>`-s, --scope <path>`<br>`--json` |
|
|
94
97
|
| `change-surface <file>` | Pre-change briefing: exports, consumers, and blast-radius risk | `--full`<br>`--json` |
|
|
95
98
|
| `co-change [file]` | Files that change together in git history without a dependency edge — hidden coupling candidates | `--min-together <n>`<br>`-n, --limit <n>`<br>`--all`<br>`--full`<br>`--json` |
|
|
96
|
-
| `diff-gate` | Gate the current diff: echo candidates, incomplete migrations, missing co-change partners, uncited doc updates, unused params, new dead symbols; exit 1 on findings | `--base <ref>`<br>`--min-together <n>`<br>`--max-echo-checks <n>`<br>`--max-helpers <n>`<br>`--baseline`<br>`--full`<br>`--skip <check>`<br>`--hook`<br>`--json` |
|
|
99
|
+
| `diff-gate` | Gate the current diff: echo candidates, incomplete migrations, missing co-change partners, unedited twin partners (advisory), uncited doc updates, unused params, new dead symbols; exit 1 on blocking findings | `--base <ref>`<br>`--min-together <n>`<br>`--max-echo-checks <n>`<br>`--max-helpers <n>`<br>`--baseline`<br>`--full`<br>`--skip <check>`<br>`--hook`<br>`--json` |
|
|
97
100
|
| `incomplete-migration` | Partially-completed extraction candidates: new helpers in the diff wired into some sites while similar un-migrated sites remain | `--base <ref>`<br>`--min-containment <n>`<br>`--max-helpers <n>`<br>`-n, --limit <n>`<br>`--full`<br>`--json` |
|
|
98
101
|
| `diff-impact` | Compute changed symbols and downstream consumers from current git diff | `--base <ref>`<br>`--json` |
|
|
99
102
|
|
|
103
|
+
### Formal Models
|
|
104
|
+
|
|
105
|
+
| Command | Description | Options |
|
|
106
|
+
|---|---|---|
|
|
107
|
+
| `tla <operation> [spec]` | TLA+ model workflow: verify a model and mapping contract, scaffold a draft model from indexed code, generate a trace recorder, or check a recorded trace against the next-state relation | `--map <file>`<br>`--config <file>`<br>`--checker <mode>`<br>`--tla-tools <jar>`<br>`--apalache <binary>`<br>`--length <n>`<br>`--timeout-ms <n>`<br>`--trace <file>`<br>`--next <operator>`<br>`--allow-unknown`<br>`--out <path>`<br>`--module-name <name>`<br>`--force`<br>`--full`<br>`--json` |
|
|
108
|
+
|
|
100
109
|
### Planning
|
|
101
110
|
|
|
102
111
|
| Command | Description | Options |
|
|
@@ -116,19 +125,53 @@ This syntax summary is generated from the CLI command descriptors. Keep workflow
|
|
|
116
125
|
| Command | Description | Options |
|
|
117
126
|
|---|---|---|
|
|
118
127
|
| `bench` | Benchmark indexing and command runtimes for this repository | `--json`<br>`--cold-index`<br>`--include-heavy`<br>`--command <cmd>`<br>`--timeout-ms <n>`<br>`--progress`<br>`--profile`<br>`--profile-out <path>` |
|
|
119
|
-
| `install-skills` | Install skills (scip-query, scip-
|
|
120
|
-
| `setup-hooks` | Install or refresh project-local Codex and Claude Code lifecycle hooks | `--json` |
|
|
128
|
+
| `install-skills` | Install skills (_shared, scip-query, scip-setup, 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 | - |
|
|
129
|
+
| `setup-hooks` | Install or refresh project-local Codex and Claude Code lifecycle hooks | `--shared`<br>`--remove`<br>`--force`<br>`--json` |
|
|
121
130
|
| `check-deps` | Check whether scip-query and the detected language indexers are actually runnable | - |
|
|
122
|
-
| `capabilities` | Report which evidence and verification capabilities are available in this project | `--json` |
|
|
123
|
-
| `capability-matrix` |
|
|
131
|
+
| `capabilities` | Report which evidence and verification capabilities are available in this project | `--matrix`<br>`--json` |
|
|
132
|
+
| `capability-matrix` | Deprecated alias for capabilities --matrix | `--json` |
|
|
124
133
|
| `init` | Create a .scipquery.json config file for this project | - |
|
|
125
134
|
| `config-validate` | Validate .scipquery.json, including structured suppressions and declared coupling groups | `--json` |
|
|
126
135
|
| `suppress <id>` | Record an accepted finding in .scipquery.json with a required reason | `--reason <text>`<br>`--check <check>`<br>`--file <path>`<br>`--expires-at <iso>`<br>`--json` |
|
|
127
136
|
| `doctor` | Diagnose config, index freshness, dependency readiness, and project capabilities | `--json` |
|
|
128
|
-
| `setup` | Bootstrap this project: install agent skills, refresh the index, verify capabilities, and report health | `--git-hook`<br>`--json` |
|
|
137
|
+
| `setup` | Bootstrap this project: install agent skills, refresh the index, verify capabilities, and report health | `--git-hook`<br>`--no-hooks`<br>`--dossier-dir <path>`<br>`--json` |
|
|
129
138
|
| `setup-agent` | Seed agent guidance for this project: AGENTS.md/CLAUDE.md block pointing agents at the scip-query skills and diff gate, plus an optional git pre-commit backstop | `--git-hook` |
|
|
130
139
|
| `setup-ci` | Write a GitHub Actions workflow that runs scip-query reindex and diff-gate on pull requests | `--force`<br>`--dry-run` |
|
|
131
|
-
| `
|
|
140
|
+
| `uninstall` | Remove scip-query-owned skill links, project hooks, and managed agent setup blocks | `--global`<br>`--project`<br>`--dry-run`<br>`--json` |
|
|
141
|
+
| `watch` | Watch for file changes in the foreground and reindex automatically | `--debounce <ms>`<br>`--cooldown <ms>`<br>`--git-poll <ms>` |
|
|
132
142
|
| `status` | Show index status for this project | `--json`<br>`--capabilities` |
|
|
133
143
|
|
|
134
144
|
<!-- END GENERATED COMMAND REFERENCE -->
|
|
145
|
+
|
|
146
|
+
## `analysisBudget` disclosure contract
|
|
147
|
+
|
|
148
|
+
On a large index (`stats.symbols >= 25,000` or `stats.documents >= 2,500`), commands built on the
|
|
149
|
+
shared `budgetedDbCommand`/`budgetedListCommand`/`budgetedTableCommand`/`budgetedReportCommand`/
|
|
150
|
+
`budgetedGroupedByFileCommand`/`budgetedSectionedReportCommand` helpers (`src/runtime/commands/
|
|
151
|
+
command-execution.ts`) automatically cap their candidate scan and disable semantic (ts-morph)
|
|
152
|
+
enrichment, and — unless `--full` is passed — disclose the cap two ways: a stderr notice in human
|
|
153
|
+
mode, and an `analysisBudget: { scanLimit, semanticEnrichment, reason }` key at the top level of
|
|
154
|
+
the `--json` envelope (`printJsonEnvelope`, same file). This is a general-purpose seam, not
|
|
155
|
+
diff-gate-specific: as of this writing it already covers `dead`, `unused-imports`, `isolated`,
|
|
156
|
+
`extract-candidates`, `locality-candidates`, `similar`, `similar-signatures`, `drift`,
|
|
157
|
+
`convergence`, `duplicate-bodies`, `twin-drift`, `cleanup-plan`, `cleanup-apply`,
|
|
158
|
+
`recent-duplicates`, `unused-params`, `complexity-hotspots`, `complexity`, `bottlenecks`,
|
|
159
|
+
`imports`, `refs`, `dataflow`, `slice`, `plan-context`, `change-surface`, `incomplete-migration`,
|
|
160
|
+
`co-change`, `diff-gate`, and the React/Vue battery commands.
|
|
161
|
+
|
|
162
|
+
Commands stay on the plain (unbudgeted) `dbCommand`/`listCommand`/`tableCommand`/`reportCommand`
|
|
163
|
+
family — and so never emit `analysisBudget` — when their cost model has no candidate-count or
|
|
164
|
+
semantic-enrichment knob for the budget to honestly describe: single-symbol/single-file lookups
|
|
165
|
+
(`code`, `outline`, `fan-in`, `fan-out`, `coupling`, `twin-ab`), or whole-graph structural queries
|
|
166
|
+
with their own independent bound (`cycles`, `deep-chains`). Adding the `analysisBudget` key to one of those
|
|
167
|
+
without also making the underlying query respect `scanLimit`/`semantic` would disclose a cap that
|
|
168
|
+
isn't real — forbidden by the same "no silent/false disclosure" rule this contract exists to
|
|
169
|
+
enforce (see `docs/plans/2026-07-02-followups.md` items 6 and 9).
|
|
170
|
+
|
|
171
|
+
Followup #6 closed the one confirmed gap in an otherwise-wired battery command: `co-change`
|
|
172
|
+
(`src/runtime/query-commands/impact.ts`) used the plain `dbCommand` and never disclosed a budget,
|
|
173
|
+
even though its per-pair classification loop in `queries.coChange`
|
|
174
|
+
(`src/queries/impact/co-change.ts`) does real filesystem/graph work whose cost scales with
|
|
175
|
+
candidate-pair count on a large repository. It now flows through `budgetedDbCommand` and
|
|
176
|
+
`coChange` accepts a `scanLimit` option that truncates the (already priority-sorted) candidate
|
|
177
|
+
pairs before classification, so the disclosed budget is truthful rather than cosmetic.
|
package/docs/DETECTOR_GUIDE.md
CHANGED
|
@@ -79,8 +79,25 @@ gaps:
|
|
|
79
79
|
|
|
80
80
|
How to keep them straight: `drift` is structural and intra-code, `doc-drift`
|
|
81
81
|
is prose-vs-code, `co-change` is code-vs-code where the connection exists only
|
|
82
|
-
in commit history. The diff
|
|
83
|
-
|
|
82
|
+
in commit history. The diff gate includes doc/code and hidden-coupling coverage
|
|
83
|
+
through the `doc-reference` and `co-change-partner` checks; run `drift`
|
|
84
|
+
directly when you need directory-pattern or layer-policy analysis.
|
|
85
|
+
|
|
86
|
+
<!-- BEGIN GENERATED DIFF-GATE CHECKS -->
|
|
87
|
+
| Check | What it catches | When it runs |
|
|
88
|
+
| --- | --- | --- |
|
|
89
|
+
| `echo` | Changed symbols that newly echo established code elsewhere. | Default diff gate. |
|
|
90
|
+
| `incomplete-migration` | New helpers or abstractions wired into some sites while older inline sites remain. | Default diff gate. |
|
|
91
|
+
| `co-change-partner` | Historically coupled files that usually change together but are missing from this diff. | Default diff gate. |
|
|
92
|
+
| `twin-partner` | A changed symbol has a same-(near-)name twin (identical or already-divergent) elsewhere that this diff left untouched. | Default diff gate. Advisory: findings print but never cause a nonzero exit by themselves. |
|
|
93
|
+
| `coverage-contract` | A configured `coverageContracts` entry (.scipquery.json) drifted: its declared key set no longer matches its ground-truth source. | Default diff gate, only when either side of a configured contract changed. |
|
|
94
|
+
| `doc-reference` | Docs that cite changed files and may need a matching update. Dated snapshot docs (docs.snapshotPaths) are excluded by policy. | Default diff gate. Advisory (21.2) for bare file-mention citations; blocking when the citation has a line anchor or the cited file was deleted/renamed. |
|
|
95
|
+
| `unused-params` | Fresh trailing parameters or options that no changed body uses. | Default diff gate. |
|
|
96
|
+
| `new-dead` | Changed production symbols with zero indexed consumers. | Default diff gate. |
|
|
97
|
+
| `baseline` | New health finding identities compared with the committed health baseline. | Only with `diff-gate --baseline`. |
|
|
98
|
+
<!-- END GENERATED DIFF-GATE CHECKS -->
|
|
99
|
+
|
|
100
|
+
Baseline identities use `detector:file:shortName`. File or symbol renames can legitimately show as one fixed baseline identity plus one new identity; update the baseline after reviewing intentional renames.
|
|
84
101
|
|
|
85
102
|
## Cluster 4 — "Nothing uses this" (the deadness family)
|
|
86
103
|
|
|
@@ -115,5 +132,5 @@ broad sweep on every diff; these are the targeted follow-ups.
|
|
|
115
132
|
| Anything at all, before saying "done" | `scip-query reindex && scip-query diff-gate` |
|
|
116
133
|
|
|
117
134
|
And before any non-trivial change: plan with `scip-query plan-context
|
|
118
|
-
<target>` (or the `concrete-plan` skill, which requires a scip-query citation
|
|
135
|
+
<target>` (or the `scip-concrete-plan` skill, which requires a scip-query citation
|
|
119
136
|
for every claim in the plan).
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Regex Policy
|
|
2
|
+
|
|
3
|
+
Regular expressions are pattern matchers over text. In this codebase, they are appropriate when the input is a flat machine-generated string whose structure is fully represented by local characters, and inappropriate when an available parser can expose the structure that gives the text its meaning.
|
|
4
|
+
|
|
5
|
+
Use parsers for structured inputs when the parser is available:
|
|
6
|
+
|
|
7
|
+
- Source code: use tree-sitter, ts-morph, Vue compiler APIs, or language-specific source readers before scanning syntax with regex.
|
|
8
|
+
- TLA modules: use SANY-derived facts when the tools are available; regex model parsing is a disclosed fallback only.
|
|
9
|
+
- Checker diagnostics: use each checker's structured output or documented diagnostic shape before falling back to generic line matching.
|
|
10
|
+
- Markdown citations: use the existing citation context and citation-kind classifiers rather than broad path regexes alone.
|
|
11
|
+
|
|
12
|
+
Regex remains the right tool for flat machine-generated strings:
|
|
13
|
+
|
|
14
|
+
- SCIP symbol encodings in `src/symbols/symbol-parser.ts`.
|
|
15
|
+
- SCIP row and descriptor filters in storage/query SQL when the pattern is static.
|
|
16
|
+
- Path fragments and glob prefilters, followed by segment-aware matching when slash semantics matter.
|
|
17
|
+
- Signature normalization in `src/queries/cleanup/similar-signatures.ts`.
|
|
18
|
+
- Import path and source-text stripping helpers where the input is already a known lexical fragment.
|
|
19
|
+
- Framework and file classifiers that match names, extensions, and conventional path segments.
|
|
20
|
+
|
|
21
|
+
Retired or downgraded load-bearing regexes in the round-2 remediation:
|
|
22
|
+
|
|
23
|
+
- Complexity branch counting now uses AST nodes when parsing succeeds; source regex counting is labeled `regex-fallback`.
|
|
24
|
+
- `complexity-hotspots` uses the same branch estimate and no longer relies on size and fan metrics alone.
|
|
25
|
+
- Scope filters in SQL queries now bind parameters instead of interpolating user text into `LIKE`.
|
|
26
|
+
- `files` keeps SQL `LIKE` only as a prefilter and applies segment-aware glob matching in code.
|
|
27
|
+
- Drift policy no longer turns an unlisted `src/*` layer into an explicit layer violation.
|
|
28
|
+
- Cycles output discloses when DFS depth truncates the search.
|
|
29
|
+
|
|
30
|
+
Future work already identified:
|
|
31
|
+
|
|
32
|
+
- Health's fix-commit signal intentionally remains a subject-keyword regex until conventional-commit or issue-link evidence replaces it; output must disclose that basis.
|
|
33
|
+
- Checker diagnostic extraction should prefer structured per-oracle parsers and label heuristic fallback.
|
|
34
|
+
- TLA conformance should prefer SANY XML facts and label text parsing as `regex-fallback`.
|
|
@@ -20,15 +20,15 @@ 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`. 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.
|
|
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`. 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
|
-
`health --json` on this repository
|
|
25
|
+
An earlier `health --json` run on this repository reported:
|
|
26
26
|
|
|
27
27
|
- score 100, riskScore 100, hygieneScore 100
|
|
28
28
|
- zero active findings across all health phases
|
|
29
29
|
- 174 suppression comments: 72 extract, 62 wrapper, 17 stale, 15 similar, 8 passthrough
|
|
30
30
|
|
|
31
|
-
That suppression shape
|
|
31
|
+
That suppression shape was evidence that broad candidate analyzers had historically produced enough accepted or false-positive results to need explicit maintainer judgment. The suppression lifecycle review confirmed the source comments were recent and reasoned, while structured file-scoped suppressions now warn when their file path goes stale.
|
|
32
32
|
|
|
33
33
|
The declared-coupling config has been refreshed after the inventory surfaced old pre-folder-move paths. `config-validate` now warns when a declared-coupling entry names a file that no longer exists, so known maintenance units stay connected to the current file graph instead of silently becoming stale metadata.
|
|
34
34
|
|
|
@@ -104,6 +104,8 @@ These commands analyze the index, but they are not finding detectors and should
|
|
|
104
104
|
|
|
105
105
|
They are essential because other analyzers and agents use them to ground claims. Their defining characteristic is retrieval or explanation, not smell detection.
|
|
106
106
|
|
|
107
|
+
`tla` is a formal-model verification command: it checks a TLA+ module, an explicit model-to-TypeScript mapping contract, and compiler-indexed code evidence in one on-demand run. Its defining role is to make model/code discrepancies reviewable before a user or agent treats the TLA+ model as an accurate description of the implementation.
|
|
108
|
+
|
|
107
109
|
The support-analysis accuracy review confirmed that `refs`, `affected`, `change-surface`, `plan-context`, `imports`, `deps`, `rdeps`, `fan-in`, `fan-out`, `hotspots`, `status`, and `self-audit` return useful source-grounded evidence for a TypeScript target. It also fixed diagnostic parity so `status` and `doctor` use the same root-aware config validation as `config-validate`.
|
|
108
110
|
|
|
109
111
|
The cross-language boundary review confirmed that Rust projects have graph-backed indexing, source fallback, cleanup detector output, git/diff support, and compiler cleanup verification when `rust-analyzer` and `cargo check` are available. It also confirmed that TypeScript semantic self-audit is explicitly unavailable on Rust and that React/Vue analyzers return stack-specific empty results rather than Rust findings.
|
|
@@ -201,3 +203,38 @@ citations remain accurate after the Git evidence product migration. Health
|
|
|
201
203
|
still owns the composite phase inventory, and diff-gate still owns
|
|
202
204
|
`DIFF_GATE_CHECKS`; both now obtain Git history facts through
|
|
203
205
|
`gitEvidenceProduct()` instead of direct helper reads.
|
|
206
|
+
|
|
207
|
+
## 2026-06-30 Health Cleanup Follow-Up
|
|
208
|
+
|
|
209
|
+
The `src/queries/public-query-entries.ts` reference remains the public query
|
|
210
|
+
manifest reference. Private query-helper coverage is now asserted as a
|
|
211
|
+
CLI-contract test fixture in `tests/runtime/cli-contract.test.ts`, so the
|
|
212
|
+
production manifest only exports the public entries and source paths used by
|
|
213
|
+
packaging.
|
|
214
|
+
|
|
215
|
+
2026-07-01 round-2 remediation note: the `src/queries/health/health.ts`
|
|
216
|
+
guide reference remains current after the health output gained explicit
|
|
217
|
+
validation-basis and source-facts disclosure fields. The analyzer inventory
|
|
218
|
+
still points readers at the health command implementation that owns score
|
|
219
|
+
phases, suppressions, and validation reporting.
|
|
220
|
+
|
|
221
|
+
## 2026-07-01 Remediation Plan 3 Follow-Up
|
|
222
|
+
|
|
223
|
+
The `src/queries/impact/diff-gate.ts` and `src/queries/health/health.ts`
|
|
224
|
+
citations remain accurate after remediation plan 3 (detection primitives).
|
|
225
|
+
`DIFF_GATE_CHECKS` gained `twin-partner` (advisory — a same-(near-)name twin
|
|
226
|
+
left behind by a one-sided edit) and `coverage-contract` (enumeration-rot:
|
|
227
|
+
a configured `coverageContracts` key set drifted from its ground-truth
|
|
228
|
+
source). `HEALTH_PHASES` gained `coverage-contracts`. Both files still own
|
|
229
|
+
their respective canonical lists; only the list contents grew.
|
|
230
|
+
|
|
231
|
+
## 2026-07-02 Queued Enhancements Follow-Up
|
|
232
|
+
|
|
233
|
+
The `src/queries/health/health.ts`, `src/queries/public-query-entries.ts`,
|
|
234
|
+
and `src/runtime/commands/query-command-specs.ts` citations remain accurate
|
|
235
|
+
after the queued-enhancements batch (Q1/Q4). `HEALTH_PHASES` gained
|
|
236
|
+
`twin-drift` (divergent/identical same-name twin groups as a hygiene
|
|
237
|
+
dimension), and the public command surface gained `twin-ab` (behavioral A/B
|
|
238
|
+
scaffold generator for scip-integrity-audit drill 5) in `queryCommandOrder`
|
|
239
|
+
and `PUBLIC_QUERY_ENTRIES`. All three files still own their respective
|
|
240
|
+
canonical lists; only the list contents grew.
|
|
@@ -14,10 +14,10 @@ The ledger is anchored to the current tool surface, not memory.
|
|
|
14
14
|
|
|
15
15
|
| Surface | Source | Why it anchors the ledger |
|
|
16
16
|
| ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------- |
|
|
17
|
-
| Repo-wide health analysis | `scip-query code health --json` reported `src/queries/health/health.ts:
|
|
18
|
-
| Change-time gate analysis | `scip-query code diffGate --json` reported `src/queries/impact/diff-gate.ts:
|
|
19
|
-
| Public command registry | `scip-query trace queryCommandOrder --json` reported `src/runtime/commands/query-command-specs.ts:
|
|
20
|
-
| Diff-gate check list | `scip-query trace DIFF_GATE_CHECKS --json` reported `src/queries/impact/diff-gate.ts:
|
|
17
|
+
| Repo-wide health analysis | `scip-query code health --json` reported `src/queries/health/health.ts:217`, where `health()` runs `runHealthAnalyses()` and `buildHealthReport()`. | Every repo-wide analyzer validation must eventually reconcile with health output and scoring. |
|
|
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. | The ledger must cover every change-time check that can block a diff. |
|
|
21
21
|
|
|
22
22
|
## Core Concepts
|
|
23
23
|
|
|
@@ -64,14 +64,15 @@ Closeout status: all active ledger rows are complete as of 2026-06-22. Remaining
|
|
|
64
64
|
|
|
65
65
|
## Public Command Coverage Checklist
|
|
66
66
|
|
|
67
|
-
The canonical source is `src/runtime/commands/query-command-specs.ts:
|
|
67
|
+
The canonical source is `src/runtime/commands/query-command-specs.ts:11-78`, where `queryCommandOrder` lists the public query command surface.
|
|
68
68
|
|
|
69
69
|
- Core and navigation support: `stats`, `files`, `methods`, `refs`, `trace`, `deps`, `rdeps`, `system`, `surface`, `imports`, `imported-by`, `outline`, `members`, `by-kind`, `kind-counts`, `hierarchy`, `call-graph`, `code`, `dataflow`, `slice`
|
|
70
70
|
- Direct cleanup and deletion analyzers: `dead`, `isolated`, `unused-imports`, `cleanup-plan`, `unused-params`, `passthrough-candidates`, `redundant-reexports`
|
|
71
|
-
- Similarity, reuse, extraction, and locality analyzers: `similar`, `similar-files`, `similar-chains`, `similar-signatures`, `recent-duplicates`, `extract-candidates`, `locality-candidates`, `wrapper-candidates`, `stale-abstractions`, `doc-drift`, `drift`, `convergence`
|
|
71
|
+
- Similarity, reuse, extraction, and locality analyzers: `similar`, `similar-files`, `similar-chains`, `similar-signatures`, `recent-duplicates`, `duplicate-bodies`, `twin-drift`, `twin-ab`, `extract-candidates`, `locality-candidates`, `wrapper-candidates`, `stale-abstractions`, `doc-drift`, `drift`, `convergence`
|
|
72
72
|
- Frontend analyzers: `react-component-duplicates`, `react-hook-candidates`, `react-large-component-pressure`, `vue-component-duplicates`, `vue-composable-candidates`, `vue-large-view-pressure`
|
|
73
73
|
- Graph, risk, and complexity analyzers: `hotspots`, `fan-in`, `fan-out`, `coupling`, `cycles`, `bottlenecks`, `deep-chains`, `complexity-hotspots`, `complexity`
|
|
74
74
|
- Diff, impact, and planning analyzers: `affected`, `change-surface`, `co-change`, `diff-gate`, `incomplete-migration`, `plan-context`
|
|
75
|
+
- Formal model verification: `tla`
|
|
75
76
|
- Meta and action commands: `self-audit`, `cleanup-apply`
|
|
76
77
|
|
|
77
78
|
## Completed Run Batches
|
|
@@ -306,3 +307,30 @@ The `diffGate()` and health citations remain accurate after the Git evidence
|
|
|
306
307
|
product migration. Default diff-gate still runs the same check family, and
|
|
307
308
|
health still reports the same Git evidence summary; both paths now read Git
|
|
308
309
|
history through `gitEvidenceProduct()`.
|
|
310
|
+
|
|
311
|
+
2026-07-01 round-2 remediation note: the `src/queries/health/health.ts`
|
|
312
|
+
configuration example remains current after the health command added
|
|
313
|
+
validation-basis disclosure and parser-unavailable reporting. The validation
|
|
314
|
+
ledger's health examples still cite the command surface that computes and
|
|
315
|
+
renders those analyzer signals.
|
|
316
|
+
|
|
317
|
+
## 2026-07-01 Remediation Plan 3 Follow-Up
|
|
318
|
+
|
|
319
|
+
The `diffGate()` and health citations remain accurate after remediation plan 3
|
|
320
|
+
(detection primitives). Default diff-gate now also runs `twin-partner`
|
|
321
|
+
(advisory) and `coverage-contract`; `src/runtime/commands/query-command-specs.ts`
|
|
322
|
+
still owns the public query order. Health gained a `coverage-contracts` phase
|
|
323
|
+
and a `detectorPrecision` field (per-check finding-outcome stats from the new
|
|
324
|
+
finding-outcome ledger) — both paths still compute and render through the same
|
|
325
|
+
command surfaces cited above.
|
|
326
|
+
|
|
327
|
+
## 2026-07-02 Doc-Reference Hub-Cascade Follow-Up
|
|
328
|
+
|
|
329
|
+
The `diffGate()` and `DIFF_GATE_CHECKS` citations were refreshed (line anchors
|
|
330
|
+
`diff-gate.ts:205` -> `:228` and `:62` -> `:64`) after followup #8 added
|
|
331
|
+
hub-file cascade damping to the doc-reference check: when more than 3 docs
|
|
332
|
+
cite the same changed hub file in one gate run, their findings collapse into
|
|
333
|
+
one clustered finding carrying `citationCount`, up to 3 `citationExemplars`,
|
|
334
|
+
and an explicit `suppressedCount`. Default diff-gate still runs the same
|
|
335
|
+
check family through the same entry point; per-doc findings under the
|
|
336
|
+
threshold are unchanged.
|