scip-query 0.19.4 → 0.19.6
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 +75 -1
- package/README.md +242 -49
- package/dist/augment-vue-worker.js +1 -1
- package/dist/{chunk-2YU7I3QO.js → chunk-24QNP7MN.js} +2 -2
- package/dist/{chunk-CNKAGUPL.js → chunk-26X7KCJR.js} +2 -2
- package/dist/{chunk-GPBBJ5Y4.js → chunk-273W2U4Y.js} +3 -3
- package/dist/{chunk-7GXM52MI.js → chunk-2CVXCGL4.js} +2 -2
- package/dist/{chunk-ABMYA4TN.js → chunk-2EZSOTSY.js} +2 -2
- package/dist/{chunk-HKEHS2AS.js → chunk-2GSQR6YA.js} +2 -2
- package/dist/{chunk-FECYOO5O.js → chunk-2OXVAGGT.js} +2 -2
- package/dist/chunk-2ZOCHAL2.js +8 -0
- package/dist/{chunk-QGXBRIM5.js → chunk-336DC5NJ.js} +2 -2
- package/dist/chunk-35SQLYCQ.js +2 -0
- package/dist/{chunk-VXQNNXJE.js → chunk-3OIKRYU5.js} +2 -2
- package/dist/{chunk-52ZYCAEO.js → chunk-47X75ZKH.js} +2 -2
- package/dist/{chunk-NPKYOIFM.js → chunk-4CGVLUDP.js} +2 -2
- package/dist/chunk-4RI4BJGT.js +8 -0
- package/dist/{chunk-P2PC2WGR.js → chunk-52HQTTPB.js} +2 -2
- package/dist/{chunk-YNRNA5LK.js → chunk-5OC3HWP5.js} +2 -2
- package/dist/{chunk-STOL2BTL.js → chunk-6XFC7PQ5.js} +2 -2
- package/dist/{chunk-J77UIT3I.js → chunk-6XHTISLI.js} +2 -2
- package/dist/chunk-6YTSKJJ3.js +2 -0
- package/dist/{chunk-BTEE5NZQ.js → chunk-7E3TH5ZN.js} +2 -2
- package/dist/{chunk-X6D5IC6I.js → chunk-7LABSJSR.js} +2 -2
- package/dist/chunk-7Q6VYYCH.js +2 -0
- package/dist/{chunk-FWUUZTIO.js → chunk-A43URCQ3.js} +2 -2
- package/dist/chunk-A63U2W3P.js +3 -0
- package/dist/{chunk-3MJ5YA4Y.js → chunk-ADFSIJP2.js} +2 -2
- package/dist/chunk-AOLE4DYM.js +6 -0
- package/dist/chunk-APMMR5Y2.js +2 -0
- package/dist/chunk-B5MHCHP3.js +107 -0
- package/dist/{chunk-4RSI5EMG.js → chunk-CSTYYXKC.js} +2 -2
- package/dist/{chunk-25LPM4DG.js → chunk-CYJM7CYF.js} +2 -2
- package/dist/{chunk-S44IULR6.js → chunk-DD5BOU5I.js} +2 -2
- package/dist/{chunk-YGAGTIDK.js → chunk-DGMCFMPG.js} +7 -7
- package/dist/{chunk-UOAV44HR.js → chunk-E2ZXPB7J.js} +2 -2
- package/dist/{chunk-IZKFSVBV.js → chunk-EVOC5I5I.js} +2 -2
- package/dist/{chunk-XTX6QHOF.js → chunk-F42A3AKG.js} +2 -2
- package/dist/{chunk-Q4IIEGXJ.js → chunk-FHCTEANE.js} +2 -2
- package/dist/{chunk-3SVWW4PN.js → chunk-FKGN4A4E.js} +2 -2
- package/dist/{chunk-IG7N5ZIK.js → chunk-FQTPPXNA.js} +2 -2
- package/dist/{chunk-F6O7AAC3.js → chunk-G4UQL4CP.js} +2 -2
- package/dist/chunk-GA64UPMI.js +6 -0
- package/dist/{chunk-ZXJYMGD3.js → chunk-GK3GRUJX.js} +2 -2
- package/dist/chunk-HEBAY673.js +2 -0
- package/dist/chunk-HELS7KFF.js +2 -0
- package/dist/{chunk-B5NLK2B3.js → chunk-IPDCSB6N.js} +2 -2
- package/dist/{chunk-M7MTH5NR.js → chunk-IYAOX36F.js} +2 -2
- package/dist/{chunk-YVVCVR2L.js → chunk-J7VT2CRB.js} +2 -2
- package/dist/{chunk-4333ETTV.js → chunk-JELJLXEE.js} +2 -2
- package/dist/{chunk-LBMJEAEW.js → chunk-JERWGHQT.js} +2 -2
- package/dist/chunk-JJJCO4QC.js +945 -0
- package/dist/{chunk-6E7UTQY7.js → chunk-JZNLMHWY.js} +2 -2
- package/dist/{chunk-R4FQGQ4X.js → chunk-K42M2KWT.js} +2 -2
- package/dist/{chunk-H7UKLTWJ.js → chunk-KLVJABXA.js} +2 -2
- package/dist/chunk-KP4KBDVF.js +3 -0
- package/dist/{chunk-RV2FQIX3.js → chunk-LMFVTUW2.js} +2 -2
- package/dist/chunk-LRTP3DKL.js +3 -0
- package/dist/{chunk-U6WNH5GC.js → chunk-MGBJHRFB.js} +2 -2
- package/dist/{chunk-QDV6RDCP.js → chunk-MLGTCX56.js} +2 -2
- package/dist/{chunk-54HA4ZXH.js → chunk-N3SE646F.js} +2 -2
- package/dist/{chunk-KP6XRY5Z.js → chunk-NBRUH7OE.js} +2 -2
- package/dist/{chunk-M7AIS73L.js → chunk-NN4ZIRPK.js} +2 -2
- package/dist/{chunk-I5RJM53C.js → chunk-NQLSSVOB.js} +2 -2
- package/dist/{chunk-4SALD7RU.js → chunk-OBKDTVZ3.js} +2 -2
- package/dist/{chunk-GBQ5NYPR.js → chunk-OHWZKLVA.js} +6 -6
- package/dist/{chunk-6NSFJYRC.js → chunk-OP3MTFJR.js} +2 -2
- package/dist/{chunk-EOOJGLDU.js → chunk-OQ2A4G2G.js} +2 -2
- package/dist/{chunk-DLWR3NUU.js → chunk-P6HBYNBE.js} +2 -2
- package/dist/{chunk-QVWS2VWZ.js → chunk-PC44K7RF.js} +2 -2
- package/dist/{chunk-A2EZV2UM.js → chunk-QBYYWGAT.js} +2 -2
- package/dist/{chunk-QRGV2F7L.js → chunk-QHKUY4FW.js} +2 -2
- package/dist/chunk-QHRL4LKM.js +2 -0
- package/dist/{chunk-I5AWSI2G.js → chunk-QQWOFXNW.js} +2 -2
- package/dist/{chunk-WQTAC523.js → chunk-RBFFD4V2.js} +2 -2
- package/dist/{chunk-SOAT6NLA.js → chunk-RJHCPSZ7.js} +2 -2
- package/dist/{chunk-VGRICIQI.js → chunk-RWRLUZ6U.js} +2 -2
- package/dist/{chunk-4T3LTWUS.js → chunk-S2GP3CU3.js} +2 -2
- package/dist/{chunk-HEXVUYFQ.js → chunk-SHKZ7OVJ.js} +2 -2
- package/dist/{chunk-NSS46APD.js → chunk-TFUU5MQQ.js} +2 -2
- package/dist/{chunk-IUFDSKGG.js → chunk-TYQ76QHQ.js} +2 -2
- package/dist/{chunk-NRCXJDHL.js → chunk-U5CNPPTZ.js} +2 -2
- package/dist/{chunk-MITTUCEH.js → chunk-UQK5CRUK.js} +2 -2
- package/dist/{chunk-XLTP42QA.js → chunk-UUJBLG6J.js} +2 -2
- package/dist/chunk-UXP636P5.js +144 -0
- package/dist/{chunk-64RFXJT5.js → chunk-VEVBIAOJ.js} +6 -6
- package/dist/chunk-VKRQDBW5.js +9 -0
- package/dist/{chunk-C7NIYIQ4.js → chunk-VOQFGC2W.js} +4 -4
- package/dist/{chunk-DZ74OMG6.js → chunk-VP542C25.js} +2 -2
- package/dist/{chunk-Q3AFUTGB.js → chunk-WMXRRBII.js} +2 -2
- package/dist/{chunk-ZGZUZ7XE.js → chunk-WXAAURU7.js} +2 -2
- package/dist/chunk-X3NLZHPA.js +20 -0
- package/dist/{chunk-WER3B7MI.js → chunk-XF3KLXN3.js} +2 -2
- package/dist/{chunk-NH5ALKPW.js → chunk-XVJ3V7LM.js} +2 -2
- package/dist/{chunk-4XTA5OMB.js → chunk-YGQN3XGZ.js} +2 -2
- package/dist/{chunk-CFMXJPHH.js → chunk-YHXBD52M.js} +2 -2
- package/dist/{chunk-7B3UPBVA.js → chunk-YLVE3SXZ.js} +2 -2
- package/dist/{chunk-YIJ7ZAA4.js → chunk-YTUD45PU.js} +2 -2
- package/dist/{chunk-VTKGCT3V.js → chunk-YWB2EBNB.js} +2 -2
- package/dist/{chunk-UKZBVX4U.js → chunk-Z2LHPIOM.js} +2 -2
- package/dist/chunk-Z5QQPJ3U.js +30 -0
- package/dist/{chunk-NZL2DBT7.js → chunk-ZLJLE6LK.js} +2 -2
- package/dist/{chunk-XYADIZHU.js → chunk-ZTTISZ7J.js} +2 -2
- package/dist/cli.js +3 -3
- package/dist/command-descriptors-SJDZ7QGR.js +617 -0
- package/dist/{config-types-D20KuvvZ.d.ts → config-types-BWQ5xPGI.d.ts} +4 -0
- package/dist/{db-G_II8yXU.d.ts → db-B0r1o7Vt.d.ts} +18 -1
- package/dist/direct-navigation-HTKOZEOM.js +3 -0
- package/dist/{health-oblXYgkF.d.ts → health-CFnlCiTz.d.ts} +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1 -1
- package/dist/postinstall.js +1 -1
- package/dist/queries/affected.d.ts +2 -2
- package/dist/queries/affected.js +1 -1
- package/dist/queries/architecture.d.ts +2 -2
- package/dist/queries/architecture.js +1 -1
- package/dist/queries/bottlenecks.d.ts +2 -2
- package/dist/queries/bottlenecks.js +1 -1
- package/dist/queries/by-kind.d.ts +2 -2
- package/dist/queries/by-kind.js +1 -1
- package/dist/queries/call-graph.d.ts +2 -2
- package/dist/queries/call-graph.js +1 -1
- package/dist/queries/change-surface.d.ts +2 -2
- package/dist/queries/change-surface.js +1 -1
- package/dist/queries/cleanup-plan.d.ts +2 -2
- package/dist/queries/cleanup-plan.js +1 -1
- package/dist/queries/co-change.d.ts +2 -2
- package/dist/queries/co-change.js +1 -1
- package/dist/queries/code.d.ts +2 -2
- package/dist/queries/code.js +1 -1
- package/dist/queries/complexity-hotspots.d.ts +2 -2
- package/dist/queries/complexity-hotspots.js +1 -1
- package/dist/queries/complexity.d.ts +2 -2
- package/dist/queries/complexity.js +1 -1
- package/dist/queries/convergence.d.ts +2 -2
- package/dist/queries/convergence.js +1 -1
- package/dist/queries/coupling.d.ts +2 -2
- package/dist/queries/coupling.js +1 -1
- package/dist/queries/cycles.d.ts +2 -2
- package/dist/queries/cycles.js +1 -1
- package/dist/queries/dataflow.d.ts +2 -2
- package/dist/queries/dataflow.js +1 -1
- package/dist/queries/dead.d.ts +2 -2
- package/dist/queries/dead.js +1 -1
- package/dist/queries/decorative-checkers.d.ts +3 -3
- package/dist/queries/decorative-checkers.js +1 -1
- package/dist/queries/deep-chains.d.ts +2 -2
- package/dist/queries/deep-chains.js +1 -1
- package/dist/queries/deps.d.ts +2 -2
- package/dist/queries/deps.js +1 -1
- package/dist/queries/diff-gate.d.ts +30 -2
- package/dist/queries/diff-gate.js +1 -1
- package/dist/queries/diff-impact.d.ts +2 -2
- package/dist/queries/diff-impact.js +1 -1
- package/dist/queries/doc-drift.d.ts +2 -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 +2 -2
- package/dist/queries/duplicate-bodies.js +1 -1
- package/dist/queries/extract-candidates.d.ts +2 -2
- package/dist/queries/extract-candidates.js +1 -1
- package/dist/queries/fan.d.ts +2 -2
- package/dist/queries/fan.js +1 -1
- package/dist/queries/files.d.ts +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 +2 -2
- package/dist/queries/incomplete-migration.js +1 -1
- package/dist/queries/index.d.ts +17 -3
- package/dist/queries/index.js +1 -1
- package/dist/queries/isolated.d.ts +2 -2
- package/dist/queries/isolated.js +1 -1
- package/dist/queries/locality-candidates.d.ts +2 -2
- package/dist/queries/locality-candidates.js +1 -1
- package/dist/queries/members.d.ts +2 -2
- package/dist/queries/members.js +1 -1
- package/dist/queries/methods.d.ts +2 -2
- package/dist/queries/methods.js +1 -1
- package/dist/queries/not-implemented.d.ts +3 -3
- package/dist/queries/not-implemented.js +1 -1
- package/dist/queries/outline.d.ts +2 -2
- package/dist/queries/outline.js +1 -1
- package/dist/queries/passthrough-candidates.d.ts +2 -2
- package/dist/queries/passthrough-candidates.js +1 -1
- package/dist/queries/plan-context.d.ts +2 -2
- package/dist/queries/plan-context.js +1 -1
- package/dist/queries/react-component-duplicates.d.ts +2 -2
- package/dist/queries/react-component-duplicates.js +1 -1
- package/dist/queries/react-hook-candidates.d.ts +2 -2
- package/dist/queries/react-hook-candidates.js +1 -1
- package/dist/queries/react-large-component-pressure.d.ts +2 -2
- package/dist/queries/react-large-component-pressure.js +1 -1
- package/dist/queries/recent-duplicates.d.ts +2 -2
- package/dist/queries/recent-duplicates.js +1 -1
- package/dist/queries/redundant-reexports.d.ts +2 -2
- package/dist/queries/redundant-reexports.js +1 -1
- package/dist/queries/refs.d.ts +2 -2
- package/dist/queries/refs.js +1 -1
- package/dist/queries/self-audit.d.ts +2 -2
- package/dist/queries/self-audit.js +1 -1
- package/dist/queries/similar-chains.d.ts +2 -2
- package/dist/queries/similar-chains.js +1 -1
- package/dist/queries/similar-files.d.ts +2 -2
- package/dist/queries/similar-files.js +1 -1
- package/dist/queries/similar-signatures.d.ts +2 -2
- package/dist/queries/similar-signatures.js +1 -1
- package/dist/queries/similar.d.ts +2 -2
- package/dist/queries/similar.js +1 -1
- package/dist/queries/slice.d.ts +2 -2
- package/dist/queries/slice.js +1 -1
- package/dist/queries/stale-abstractions.d.ts +2 -2
- package/dist/queries/stale-abstractions.js +1 -1
- package/dist/queries/stats.d.ts +2 -2
- package/dist/queries/stats.js +1 -1
- 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 +3 -3
- package/dist/queries/twin-ab.js +1 -1
- package/dist/queries/twin-drift.d.ts +2 -2
- package/dist/queries/twin-drift.js +1 -1
- package/dist/queries/unused-imports.d.ts +2 -2
- package/dist/queries/unused-imports.js +1 -1
- package/dist/queries/unused-params.d.ts +2 -2
- package/dist/queries/unused-params.js +1 -1
- package/dist/queries/vue-component-duplicates.d.ts +2 -2
- package/dist/queries/vue-component-duplicates.js +1 -1
- package/dist/queries/vue-composable-candidates.d.ts +2 -2
- package/dist/queries/vue-composable-candidates.js +1 -1
- package/dist/queries/vue-large-view-pressure.d.ts +2 -2
- package/dist/queries/vue-large-view-pressure.js +1 -1
- package/dist/queries/wrapper-candidates.d.ts +2 -2
- package/dist/queries/wrapper-candidates.js +1 -1
- package/dist/reindex-worker.js +23 -24
- package/dist/reindex.d.ts +10 -4
- package/dist/reindex.js +33 -38
- package/dist/runtime.d.ts +167 -11
- package/dist/runtime.js +3 -2
- package/dist/rust-semantic-session-server.js +1 -1
- package/dist/rust-semantic-session-worker.js +1 -1
- package/dist/rust-semantic-worker.js +1 -1
- package/dist/{scip-cli-kRpaexVJ.d.ts → scip-cli-DCvnlZCu.d.ts} +5 -1
- package/dist/watch-server.js +5 -5
- package/docs/AGENT_GUIDE.md +1 -1
- package/docs/AI_FAILURE_MODES.md +18 -18
- package/docs/API_EVOLUTION.md +71 -0
- package/docs/CLI_JSON_OUTPUT.md +83 -0
- package/docs/COMMAND_REFERENCE.md +10 -8
- package/docs/COMMITTED_RECORD_COMPATIBILITY.md +117 -0
- package/docs/CONFIGURATION_WRITE_SAFETY.md +130 -0
- package/docs/DETECTOR_GUIDE.md +47 -47
- package/docs/DURABILITY.md +103 -0
- package/docs/INDEX_GENERATIONS.md +121 -0
- package/docs/LOCK_PROTOCOL.md +133 -0
- package/docs/MAILBOX_LIFECYCLE.md +197 -0
- package/docs/REINDEX_METADATA_COMPATIBILITY.md +84 -0
- package/docs/RUST_DURABLE_SESSION_PROTOCOL.md +126 -0
- package/docs/TELEMETRY_RETENTION.md +72 -0
- package/docs/TIME_SEMANTICS.md +77 -0
- package/docs/WATCH_REFRESH_REQUESTS.md +110 -0
- package/docs/WINDOWS_SIDECAR_RELEASE.md +298 -0
- package/docs/analyzer-validation-ledger.md +24 -23
- package/docs/schemas/cli-json-envelope.schema.json +53 -0
- package/docs/schemas/npm-release-state.schema.json +146 -0
- package/docs/schemas/outcome-event-record.schema.json +39 -0
- package/docs/schemas/project-config.schema.json +247 -0
- package/docs/schemas/suppression-record.schema.json +31 -0
- package/docs/schemas/windows-sidecar-provenance.schema.json +137 -0
- package/package.json +15 -5
- package/scripts/build-scip-windows.mjs +180 -61
- package/scripts/scip-windows-provenance.mjs +364 -0
- package/scripts/verify-scip-windows.mjs +29 -0
- package/skills/_shared/SKILL.md +91 -242
- package/skills/_shared/agents/openai.yaml +1 -1
- package/skills/_shared/references/agent-contract-catalog.md +105 -0
- package/skills/_shared/references/command-catalog.md +118 -0
- package/skills/_shared/references/detector-precision-and-diffgate.md +59 -0
- package/skills/_shared/references/evidence-and-dead-code.md +25 -0
- package/skills/scip-audit/SKILL.md +76 -0
- package/skills/scip-audit/agents/openai.yaml +4 -0
- package/skills/scip-audit/references/claims.md +98 -0
- package/skills/scip-audit/references/cleanup.md +101 -0
- package/skills/scip-audit/references/directory.md +222 -0
- package/skills/scip-audit/references/frontend.md +130 -0
- package/skills/scip-audit/references/integrity.md +154 -0
- package/skills/scip-audit/references/maintainability.md +162 -0
- package/skills/scip-audit/references/twin-drift.md +104 -0
- package/skills/scip-diagnose/SKILL.md +52 -0
- package/skills/scip-diagnose/agents/openai.yaml +4 -0
- package/skills/scip-diagnose/references/debug.md +117 -0
- package/skills/{scip-probe-reachability/SKILL.md → scip-diagnose/references/probe-reachability.md} +12 -27
- package/skills/scip-diagnose/references/root-cause.md +145 -0
- package/skills/scip-diagnose/references/triage.md +119 -0
- package/skills/scip-explore/SKILL.md +53 -84
- package/skills/scip-explore/agents/openai.yaml +2 -2
- package/skills/scip-explore/references/diagrams.md +40 -0
- package/skills/scip-explore/references/language-playbook.md +49 -0
- package/skills/scip-improve/SKILL.md +56 -0
- package/skills/scip-improve/agents/openai.yaml +4 -0
- package/skills/scip-improve/references/cleanup-batches.md +53 -0
- package/skills/scip-improve/references/directory-moves.md +53 -0
- package/skills/scip-improve/references/doc-reconcile.md +30 -0
- package/skills/scip-improve/references/frontend-extraction.md +39 -0
- package/skills/scip-improve/references/maintainability-mechanism.md +43 -0
- package/skills/scip-improve/references/twin-drift.md +35 -0
- package/skills/scip-plan/SKILL.md +68 -0
- package/skills/scip-plan/agents/openai.yaml +4 -0
- package/skills/scip-plan/references/api-impact.md +19 -0
- package/skills/scip-plan/references/conductor.md +41 -0
- package/skills/scip-plan/references/high-assurance.md +43 -0
- package/skills/scip-plan/references/hyper-optimization.md +50 -0
- package/skills/scip-plan/references/tla-model.md +88 -0
- package/skills/scip-query/SKILL.md +52 -97
- package/skills/scip-query/agents/openai.yaml +2 -2
- package/skills/scip-setup/SKILL.md +65 -176
- package/skills/scip-setup/agents/openai.yaml +3 -3
- package/skills/scip-setup/references/bootstrap-workflow.md +120 -0
- package/skills/scip-setup/references/language-verification.md +61 -0
- package/skills/scip-setup/references/lifecycle-commands.md +119 -0
- package/skills/scip-setup/references/per-repo-triage.md +24 -0
- package/skills/scip-verify/SKILL.md +123 -70
- package/skills/scip-verify/agents/openai.yaml +2 -2
- package/skills/scip-verify/references/calibrate-detectors.md +170 -0
- package/dist/chunk-2CTX5CMX.js +0 -4
- package/dist/chunk-2Y373BDD.js +0 -2
- package/dist/chunk-C2QSK7E7.js +0 -2
- package/dist/chunk-D4U5Q3FT.js +0 -7
- package/dist/chunk-K2ERX4UT.js +0 -3
- package/dist/chunk-KHE7J5ZN.js +0 -3
- package/dist/chunk-L7SPDE73.js +0 -84
- package/dist/chunk-LHMNRHGV.js +0 -3
- package/dist/chunk-LM72NQ7T.js +0 -3
- package/dist/chunk-MSWVMDAH.js +0 -122
- package/dist/chunk-NH7WNNQC.js +0 -20
- package/dist/chunk-OMPZHGHO.js +0 -2
- package/dist/chunk-SVLTAG5O.js +0 -927
- package/dist/chunk-U7DSEKOM.js +0 -30
- package/dist/chunk-V27BEQJN.js +0 -7
- package/dist/chunk-VMNZB6WI.js +0 -4
- package/dist/chunk-XBN5VO53.js +0 -2
- package/dist/chunk-ZAIILQNP.js +0 -5
- package/dist/command-descriptors-MFU4BCJ7.js +0 -612
- package/dist/direct-navigation-MRMQFIRB.js +0 -3
- package/skills/scip-api-impact/SKILL.md +0 -139
- package/skills/scip-api-impact/agents/openai.yaml +0 -4
- package/skills/scip-calibrate/SKILL.md +0 -131
- package/skills/scip-calibrate/agents/openai.yaml +0 -4
- package/skills/scip-claim-audit/SKILL.md +0 -106
- package/skills/scip-claim-audit/agents/openai.yaml +0 -4
- package/skills/scip-cleanup-audit/SKILL.md +0 -126
- package/skills/scip-cleanup-audit/agents/openai.yaml +0 -4
- package/skills/scip-cleanup-improve/SKILL.md +0 -84
- package/skills/scip-cleanup-improve/agents/openai.yaml +0 -4
- package/skills/scip-concrete-plan/SKILL.md +0 -262
- package/skills/scip-concrete-plan/agents/openai.yaml +0 -4
- package/skills/scip-conductor/SKILL.md +0 -133
- package/skills/scip-conductor/agents/openai.yaml +0 -4
- package/skills/scip-debug/SKILL.md +0 -130
- package/skills/scip-debug/agents/openai.yaml +0 -4
- package/skills/scip-diagram/SKILL.md +0 -110
- package/skills/scip-diagram/agents/openai.yaml +0 -4
- package/skills/scip-directory-architecture/SKILL.md +0 -254
- package/skills/scip-directory-architecture/agents/openai.yaml +0 -4
- package/skills/scip-doc-reconcile/SKILL.md +0 -89
- package/skills/scip-doc-reconcile/agents/openai.yaml +0 -4
- package/skills/scip-hyper-optimization/SKILL.md +0 -156
- package/skills/scip-hyper-optimization/agents/openai.yaml +0 -4
- package/skills/scip-integrity-audit/SKILL.md +0 -152
- package/skills/scip-integrity-audit/agents/openai.yaml +0 -4
- package/skills/scip-language-playbook/SKILL.md +0 -106
- package/skills/scip-language-playbook/agents/openai.yaml +0 -4
- package/skills/scip-maintainability/SKILL.md +0 -158
- package/skills/scip-maintainability/agents/openai.yaml +0 -4
- package/skills/scip-probe-reachability/agents/openai.yaml +0 -4
- package/skills/scip-react-maintainability/SKILL.md +0 -101
- package/skills/scip-react-maintainability/agents/openai.yaml +0 -4
- package/skills/scip-root-cause/SKILL.md +0 -150
- package/skills/scip-root-cause/agents/openai.yaml +0 -4
- package/skills/scip-tla-model-system/SKILL.md +0 -148
- package/skills/scip-tla-model-system/agents/openai.yaml +0 -4
- package/skills/scip-triage-issue/SKILL.md +0 -126
- package/skills/scip-triage-issue/agents/openai.yaml +0 -4
- package/skills/scip-twin-drift/SKILL.md +0 -107
- package/skills/scip-twin-drift/agents/openai.yaml +0 -4
- package/skills/scip-vue-maintainability/SKILL.md +0 -107
- package/skills/scip-vue-maintainability/agents/openai.yaml +0 -4
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,80 @@ All notable changes to `scip-query` are documented here. This file starts at 0.1
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [0.19.6]
|
|
8
|
+
|
|
9
|
+
### State and process resilience
|
|
10
|
+
|
|
11
|
+
- Index publication now binds SQLite, SCIP, metadata, cursors, semantic
|
|
12
|
+
sessions, and retained generations to one immutable generation identity.
|
|
13
|
+
Shared-cache hydration and lease updates preserve current ownership across
|
|
14
|
+
concurrent writers and crash recovery.
|
|
15
|
+
- Watch/reindex locks, refresh requests, TypeScript and Rust mailboxes,
|
|
16
|
+
evidence counters, suppressions, and outcome records now use explicit
|
|
17
|
+
operation identities, bounded queues, durable publication, conservative
|
|
18
|
+
owner reclamation, retry-safe transitions, and versioned compatibility
|
|
19
|
+
readers.
|
|
20
|
+
- Child processes, workers, verified downloads, and Rust LSP framing have
|
|
21
|
+
finite time, byte, output, and shutdown budgets with typed timeout,
|
|
22
|
+
overflow, cancellation, and recovery outcomes.
|
|
23
|
+
|
|
24
|
+
### Public and durable contracts
|
|
25
|
+
|
|
26
|
+
- CLI JSON, project configuration, reindex metadata, committed suppression and
|
|
27
|
+
outcome files, and Rust durable-session messages have explicit current,
|
|
28
|
+
legacy, malformed, and future-version policies. Incomplete history and
|
|
29
|
+
partial metadata disclose their reduced capabilities instead of silently
|
|
30
|
+
acting current.
|
|
31
|
+
- The published TypeScript declaration surface is checked across all 72
|
|
32
|
+
export paths and 871 declarations, including transitive declaration chunks
|
|
33
|
+
and a downstream consumer compile fixture.
|
|
34
|
+
|
|
35
|
+
### Windows sidecar and npm release
|
|
36
|
+
|
|
37
|
+
- The Windows sidecar carries a versioned provenance manifest binding its
|
|
38
|
+
immutable SCIP source commit, pinned Go toolchain, build contract, PE
|
|
39
|
+
machines, sizes, and SHA-256 hashes. Build, sidecar pack, and release all
|
|
40
|
+
reject stale, partial, swapped, or unverifiable binaries.
|
|
41
|
+
- Existing npm versions are accepted only after local pack reports, registry
|
|
42
|
+
metadata, downloaded tarball hashes, package coordinates, and provenance
|
|
43
|
+
bytes agree. Only an explicit npm `E404` authorizes first publication;
|
|
44
|
+
ambiguity and concurrent different-content winners fail closed.
|
|
45
|
+
- `npm run release:npm` owns the complete two-package workflow: test/build/API
|
|
46
|
+
preflight and both packs from one clean, unchanged Git revision precede
|
|
47
|
+
registry mutation, the sidecar publishes and verifies first, the main
|
|
48
|
+
package publishes and verifies last, and a durable schema-versioned local
|
|
49
|
+
state record binds the canonical HTTPS registry, source revision, and exact
|
|
50
|
+
artifacts so every partial state is observable and safely retryable. Direct
|
|
51
|
+
`npm publish` is guarded because it cannot provide that cross-package
|
|
52
|
+
recovery contract.
|
|
53
|
+
|
|
54
|
+
## [0.19.5]
|
|
55
|
+
|
|
56
|
+
### Agent evidence and workflows
|
|
57
|
+
|
|
58
|
+
- Every public command now declares an agent-facing contract describing its
|
|
59
|
+
inputs, returned units, evidence class, and default coverage. JSON envelopes
|
|
60
|
+
report whether results are complete, bounded, sampled, or unknown; compact
|
|
61
|
+
summaries preserve the identities agents need without blind line clipping.
|
|
62
|
+
- `refs` supports stable, index-generation-bound pagination with explicit
|
|
63
|
+
totals and continuation cursors. Heavy navigation, planning, and diff-gate
|
|
64
|
+
commands expose compact machine-readable output and concise agent summaries.
|
|
65
|
+
- Claude Code hooks reject unsafe `head`, `tail`, and line-range truncation when
|
|
66
|
+
a compact or paginated alternative exists, and provide one context-window
|
|
67
|
+
reminder to reconsider native text search for relationship and completeness
|
|
68
|
+
questions. Shared guidance is expressed as moment-based evidence gates.
|
|
69
|
+
- The bundled planning workflow now has a short ordinary path and a separate
|
|
70
|
+
high-assurance certificate. Skill descriptions use problem-language trigger
|
|
71
|
+
phrases, and native file reads remain available for literal source facts.
|
|
72
|
+
|
|
73
|
+
### Architecture and release operations
|
|
74
|
+
|
|
75
|
+
- Architecture enforcement distinguishes production ownership from tests,
|
|
76
|
+
preserves boundary-specific file ceilings, and detects additional coarse
|
|
77
|
+
cycles without weakening the repository's declared layer policy.
|
|
78
|
+
- The main npm publish lifecycle invokes the Windows sidecar publisher directly
|
|
79
|
+
while keeping dry runs and validation paths registry-safe.
|
|
80
|
+
|
|
7
81
|
## [0.19.3]
|
|
8
82
|
|
|
9
83
|
### Performance and operations
|
|
@@ -174,7 +248,7 @@ All notable changes to `scip-query` are documented here. This file starts at 0.1
|
|
|
174
248
|
|
|
175
249
|
### Fixes (accuracy / false-positive)
|
|
176
250
|
|
|
177
|
-
- **Three false-dead archetypes fixed.** Symbols consumed only via `import type` across a `tsconfig` path alias are no longer reported dead. pnpm-workspace cross-package consumers are now resolved via a new workspace-package resolver (this also fixed a real bug — `fanInBySymbolId.get(id) === 0` treated an
|
|
251
|
+
- **Three false-dead archetypes fixed.** Symbols consumed only via `import type` across a `tsconfig` path alias are no longer reported dead. pnpm-workspace cross-package consumers are now resolved via a new workspace-package resolver (this also fixed a real bug — `fanInBySymbolId.get(id) === 0` treated an _absent_ symbol the same as a zero-reference one, suppressing semantic enrichment broadly, not just for the workspace case). Vue `<script setup>` composable consumers were verified already correct and gained a regression fixture. Where the remaining gap couldn't be closed this release (an ambiguous leaf name across an unresolved barrel re-export hop), the finding is now labeled `unconfirmed` instead of asserted `dead`.
|
|
178
252
|
- **`diff-gate` fails closed.** A git-diff-unavailable condition (diff too large for the exec buffer, a bad `--base`, or a git error) now exits nonzero having run zero checks, instead of silently passing.
|
|
179
253
|
- **`doc-drift` epoch-0 timestamp bug fixed.** A doc whose only commit touched it as part of a >50-file bulk sweep now falls back to file mtime instead of being reported as "last changed at the Unix epoch."
|
|
180
254
|
- **SANY XML export was silently dead code.** `-o <path>` on the SANY invocation meant "offline mode," not "output path" — the real-parser XML export path never actually ran. Fixed the invocation and rewrote the XML grammar parser against real `tla2tools` v1.8.0 output.
|
package/README.md
CHANGED
|
@@ -34,16 +34,22 @@ Two layers, wired by `scip-query setup`:
|
|
|
34
34
|
|
|
35
35
|
**Invoked** — the agent routes work through skills, each carrying its own short command list so it never navigates the full CLI:
|
|
36
36
|
|
|
37
|
-
| Phase
|
|
38
|
-
|
|
|
39
|
-
| Orient
|
|
40
|
-
| Plan
|
|
41
|
-
|
|
|
42
|
-
|
|
|
43
|
-
|
|
|
44
|
-
|
|
|
45
|
-
|
|
46
|
-
|
|
37
|
+
| Phase | Skill | Commands underneath (also usable directly) |
|
|
38
|
+
| -------- | ------------------------------------------------ | --------------------------------------------------- |
|
|
39
|
+
| Orient | `scip-explore` | `system`, `trace`, `affected`, `call-graph` |
|
|
40
|
+
| Plan | `scip-plan` | `plan-context`, `change-surface`, `co-change` |
|
|
41
|
+
| Diagnose | `scip-diagnose` | `files`, `trace`, `call-graph`, `outline` |
|
|
42
|
+
| Audit | `scip-audit` | `cleanup-plan --verify`, `dead`, `twin-drift` |
|
|
43
|
+
| Improve | `scip-improve` | `incomplete-migration`, `recent-duplicates` |
|
|
44
|
+
| Verify | `scip-verify` (closeout) + the ambient diff gate | `diff-impact`, `diff-gate`, `health --baseline` |
|
|
45
|
+
| Set up | `scip-setup` | `doctor`, `setup`, `setup-hooks`, `setup-agent` |
|
|
46
|
+
|
|
47
|
+
The consolidated skills retain the former specialist lenses as routed
|
|
48
|
+
scenarios: API impact and formal/performance planning live in `scip-plan`;
|
|
49
|
+
root cause and reachability probes live in `scip-diagnose`; integrity,
|
|
50
|
+
maintainability, claim, framework, directory, and twin-drift review live in
|
|
51
|
+
`scip-audit`; and cleanup or documentation repair lives in `scip-improve`.
|
|
52
|
+
Every command remains directly invocable for humans and scripts.
|
|
47
53
|
|
|
48
54
|
React and Vue repositories get additional framework-aware checks for repeated component/template structure, hook/composable behavior, and large-component or large-view pressure. These extend the same reuse and completion workflow; the core graph, history, planning, cleanup, and diff-gate commands are not frontend-specific.
|
|
49
55
|
|
|
@@ -69,6 +75,15 @@ For automation, use `scip-query setup --yes` to accept recommended defaults or
|
|
|
69
75
|
scope is intentionally managed elsewhere. Or run without a global install:
|
|
70
76
|
`npx scip-query@latest setup`.
|
|
71
77
|
|
|
78
|
+
Every public `--json` response identifies its envelope schema, command result
|
|
79
|
+
schema, and producing package version. See the
|
|
80
|
+
[CLI JSON output contract](docs/CLI_JSON_OUTPUT.md) for the compatibility
|
|
81
|
+
policy, decoder API, and machine-readable schema.
|
|
82
|
+
|
|
83
|
+
Contributors changing exported TypeScript declarations should also follow the
|
|
84
|
+
[public API evolution workflow](docs/API_EVOLUTION.md). Its committed manifest
|
|
85
|
+
makes every package-subpath signature change explicit before release.
|
|
86
|
+
|
|
72
87
|
### If npm warns about install scripts
|
|
73
88
|
|
|
74
89
|
On npm setups with script approval enabled (`allow-scripts`), the install prints warnings like
|
|
@@ -213,7 +228,7 @@ When verification _fails_, the errors name the exact references the static evide
|
|
|
213
228
|
| `co-change-partner` | Historically coupled files that usually change together but are missing from this diff. | Default diff gate. |
|
|
214
229
|
| `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. |
|
|
215
230
|
| `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. |
|
|
216
|
-
| `architecture` | A declared architecture boundary rule has a violation absent from the committed health baseline. | Default diff gate when closed dependency rows, requireCompletePolicy, requireAcyclic, requireResolvedBoundaries, requireMinimalPolicy, maxBoundaryFanOut
|
|
231
|
+
| `architecture` | A declared architecture boundary rule has a violation absent from the committed health baseline. | Default diff gate when closed dependency rows, requireCompletePolicy, requireAcyclic, requireResolvedBoundaries, requireMinimalPolicy, maxBoundaryFanOut/maxBoundaryFiles, or testPaths are configured and a baseline exists. |
|
|
217
232
|
| `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. |
|
|
218
233
|
| `unused-params` | Fresh trailing parameters or options that no changed body uses. | Default diff gate. |
|
|
219
234
|
| `new-dead` | Changed production symbols with zero indexed consumers. | Default diff gate. |
|
|
@@ -243,6 +258,33 @@ scip-query suppress SQABC123DEF456 --check echo --reason "intentional compatibil
|
|
|
243
258
|
|
|
244
259
|
This writes one file per suppression under `.scipquery/suppressions/` — commit it with your change. One-file-per-suppression means two branches suppressing different findings merge without conflict; the legacy `suppressions[]` array in `.scipquery.json` is still honored (read-only). Every suppression requires a reason plus either a stable finding id or a `check` (optionally narrowed by `file`). Check+file suppressions are allowed but warn because they waive every matching finding in that file. `diff-gate --json` reports both active and suppressed findings.
|
|
245
260
|
|
|
261
|
+
The first suppression for an identity is created exclusively. Repeating the
|
|
262
|
+
same decision is idempotent, but a different reason, expiry, check, or file is
|
|
263
|
+
a policy change and never silently overwrites the existing file. The command
|
|
264
|
+
reports the existing SHA-256 revision:
|
|
265
|
+
|
|
266
|
+
```text
|
|
267
|
+
error: A different suppression decision already exists at ...
|
|
268
|
+
Current revision: 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef.
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
After reviewing the committed decision, replace exactly that revision:
|
|
272
|
+
|
|
273
|
+
```bash
|
|
274
|
+
scip-query suppress SQABC123DEF456 --check echo \
|
|
275
|
+
--reason "superseded by a narrower compatibility exception" \
|
|
276
|
+
--replace 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
If another writer changes the record first, the stale replacement is rejected
|
|
280
|
+
and the newer bytes remain intact. New records declare their schema version,
|
|
281
|
+
record kind, stable suppression identity, and writer version. Older
|
|
282
|
+
unversioned and pre-discriminator v1 records remain readable and are upgraded
|
|
283
|
+
only by an explicit replacement. If a malformed or future record cannot be
|
|
284
|
+
used, `diff-gate` reports exact incomplete-coverage counts and keeps findings
|
|
285
|
+
conservatively unsuppressed. The wire schemas and merge rules are documented
|
|
286
|
+
in [`docs/COMMITTED_RECORD_COMPATIBILITY.md`](docs/COMMITTED_RECORD_COMPATIBILITY.md).
|
|
287
|
+
|
|
246
288
|
**12. Measure whether the gate is earning its keep.** Every completed `diff-gate` run, including JSON and installed Stop-hook runs, writes each finding transition to its own committed `.scipquery/events/*.json` file. Independent branches add independent paths instead of editing one shared ledger file, so ordinary event writes do not create merge conflicts. Each event stores the immutable Git commit used as its comparison base. A finding is a verified fix when it disappears under that same comparison—either directly or after scip-query cleanly replays the original base against a newer committed `HEAD`. Merely committing the finding cannot clear it: if replay still finds it, the outcome stays open; if the worktree is dirty or Git cannot reproduce the base, verification waits. A suppressed finding was noise or an accepted trade-off:
|
|
247
289
|
|
|
248
290
|
```bash
|
|
@@ -255,7 +297,20 @@ echo 14 10 2 1 0 1 83% 0.8
|
|
|
255
297
|
new-dead 6 5 0 1 0 0 100% 0.3
|
|
256
298
|
```
|
|
257
299
|
|
|
258
|
-
`precision` is verified fixed ÷ (verified fixed + suppressed). `moved` separates rename churn, while `unverified` is reserved for legacy or otherwise non-comparable resolutions that lack replay proof. Run diff-gate once to record the finding and again after the repair; a pre-commit rerun uses the same base directly, while a clean post-commit run automatically replays the stored base. Filter with `--check <name>`, window with `--since 30d|12w|<ISO date>`, and get machine-readable output with `--json`. Because the event files are committed, the numbers survive re-clones and aggregate across every machine and agent working the repo. Legacy `.scipquery/ledger/events.jsonl` records remain readable and are migrated to individual files on the next gate write. Historical cross-`HEAD` events without stored comparison evidence remain unverified rather than being reclassified speculatively. Standalone health/cleanup commands are not yet outcome-tracked because they do not all expose a complete-scan contract.
|
|
300
|
+
`precision` is verified fixed ÷ (verified fixed + suppressed). `moved` separates rename churn, while `unverified` is reserved for legacy or otherwise non-comparable resolutions that lack replay proof. Run diff-gate once to record the finding and again after the repair; a pre-commit rerun uses the same base directly, while a clean post-commit run automatically replays the stored base. Filter with `--check <name>`, window with `--since 30d|12w|<ISO date>`, and get machine-readable output with `--json`. Because the event files are committed, the numbers survive re-clones and aggregate across every machine and agent working the repo. Current event files carry an additive v1 discriminator, stable semantic identity, and writer version; existing unversioned files remain readable. `effectiveness` reports accepted and omitted record counts when history is partial, and cross-HEAD verification defers fixes rather than trusting an incomplete lifecycle. Legacy `.scipquery/ledger/events.jsonl` records remain readable and are migrated to individual files on the next gate write only when every non-empty line is compatible; otherwise the source ledger is preserved. Historical cross-`HEAD` events without stored comparison evidence remain unverified rather than being reclassified speculatively. Standalone health/cleanup commands are not yet outcome-tracked because they do not all expose a complete-scan contract.
|
|
301
|
+
|
|
302
|
+
The health report also keeps a worktree-local repeat counter in `evidence.db`.
|
|
303
|
+
A logical observation is one completed detector evaluation named by an
|
|
304
|
+
observation ID; unlike a process attempt, a retry of that evaluation reuses the
|
|
305
|
+
same ID. SQLite serializes these observations before deriving their
|
|
306
|
+
transitions. Two different IDs that report the same finding therefore add two
|
|
307
|
+
to `timesShown`, while an exact retry with the same ID and evidence adds
|
|
308
|
+
nothing. Reusing an ID for different evidence is rejected and reported. A
|
|
309
|
+
writer-lock timeout skips the local counter update rather than delaying or
|
|
310
|
+
changing the gate decision, and the next distinct run may try again. The
|
|
311
|
+
dedupe records live as long as that rebuildable `evidence.db`; deleting the
|
|
312
|
+
database resets both the counters and their retry memory. These local counters
|
|
313
|
+
feed detector-precision hints, not the committed `effectiveness` totals above.
|
|
259
314
|
|
|
260
315
|
Before any edit, `plan-context <target>` bundles the structural picture — definitions, references, call graph, blast radius — plus a HISTORY section: churn, fix-commit density, and the files that usually change together with the target ("editing this usually means editing these").
|
|
261
316
|
|
|
@@ -312,40 +367,35 @@ Heuristic detectors carry guardrails learned from real codebases: published `pac
|
|
|
312
367
|
|
|
313
368
|
One-line "essential difference" per skill — read this table before the Routes table in `skills/scip-query/SKILL.md` if two names sound alike.
|
|
314
369
|
|
|
315
|
-
| Skill
|
|
316
|
-
|
|
|
317
|
-
| `scip-query`
|
|
318
|
-
| `scip-explore`
|
|
319
|
-
| `scip-
|
|
320
|
-
| `scip-
|
|
321
|
-
| `scip-
|
|
322
|
-
| `scip-
|
|
323
|
-
| `scip-
|
|
324
|
-
| `scip-
|
|
325
|
-
| `
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
| `scip-probe-reachability` | Prove parser/AST branches actually fire. |
|
|
333
|
-
| `scip-api-impact` | Blast radius before changing public surfaces. |
|
|
334
|
-
| `scip-directory-architecture` | Folder/ownership layout. |
|
|
335
|
-
| `scip-doc-reconcile` | Docs vs code drift. |
|
|
336
|
-
| `scip-diagram` | Visual artifacts. |
|
|
337
|
-
| `scip-react-maintainability` | Framework-specific reuse lens (React). |
|
|
338
|
-
| `scip-vue-maintainability` | Framework-specific reuse lens (Vue). |
|
|
339
|
-
| `scip-language-playbook` | Which commands per language. |
|
|
340
|
-
| `scip-hyper-optimization` | Performance campaigns without output changes. |
|
|
341
|
-
| `scip-tla-model-system` | Formal models tied to code evidence. |
|
|
342
|
-
| `scip-setup` | Adopt or repair scip-query in a repo. |
|
|
343
|
-
| `_shared` | Reference loaded by other skills, not user-invoked. |
|
|
344
|
-
|
|
345
|
-
The confusable clusters, disambiguated: `scip-debug` (one failure, one minimal fix) vs `scip-root-cause` (a family of recurring bugs traced to a design flaw); `scip-concrete-plan` (one change) vs `scip-conductor` (a program of changes with delegation); `scip-cleanup-audit` (report only) vs `scip-cleanup-improve` (autonomous fixing loop); `scip-verify` (did this specific change land safely) vs `scip-integrity-audit` (does this code actually work at all) vs `scip-maintainability` (is this well organized) vs `scip-twin-drift` (one drifted same-name pair specifically); `scip-directory-architecture` (folder ownership) vs `scip-maintainability` (deeper structural compression). `skills/scip-query/SKILL.md`'s Tie-Breaks section has the full routing logic.
|
|
370
|
+
| Skill | Essential difference |
|
|
371
|
+
| --------------- | ------------------------------------------------------------------------------ |
|
|
372
|
+
| `scip-query` | Router: select the smallest workflow that answers the request. |
|
|
373
|
+
| `scip-explore` | Understand or diagram existing code without changing it. |
|
|
374
|
+
| `scip-plan` | Prove the blast radius and specify one change or a multi-phase program. |
|
|
375
|
+
| `scip-diagnose` | Trace a failure, recurring design flaw, issue, or unreachable branch to cause. |
|
|
376
|
+
| `scip-audit` | Classify integrity, maintainability, drift, framework, and cleanup evidence. |
|
|
377
|
+
| `scip-improve` | Act on confirmed audit or documentation findings and ratchet the result. |
|
|
378
|
+
| `scip-verify` | Test and challenge a finished change before declaring it complete. |
|
|
379
|
+
| `scip-setup` | Adopt or repair scip-query in a repository. |
|
|
380
|
+
| `_shared` | Manual-only command/evidence reference loaded by another workflow when needed. |
|
|
381
|
+
|
|
382
|
+
The important boundary is read-only versus mutating work: `scip-audit`
|
|
383
|
+
classifies current evidence, while `scip-improve` changes confirmed findings.
|
|
384
|
+
`scip-plan` is prospective evidence before implementation; `scip-verify`
|
|
385
|
+
challenges a concrete finished diff. `scip-explore` explains working behavior;
|
|
386
|
+
`scip-diagnose` starts from a failure or contradiction.
|
|
346
387
|
|
|
347
388
|
Project setup writes reviewable checkout-local lifecycle hooks for Codex and Claude Code (`.codex/hooks.json` and `.claude/settings.local.json`). A checkout-local hook is an agent-tool preference whose defining trait is that it applies to one clone rather than expressing team policy. Setup adds both paths to that clone's `.git/info/exclude`, so they do not appear in commits, and refuses to rewrite either path if it is already tracked. `setup-hooks --shared` remains accepted only as a deprecated compatibility flag; it no longer writes `.claude/settings.json`. These hooks add scip-query context at session start, route prompts toward the right skill, and run an advisory Stop-hook wrapper around the diff gate only for that repository. The Stop hook sends feedback to the agent by default instead of blocking; set `SCIP_QUERY_STOP_HOOK_MODE=warn` for a warning-only hook response, or `SCIP_QUERY_STOP_HOOK_MODE=block` to enforce the gate. Set `SCIP_QUERY_SKIP_HOOK_INSTALL=1` or run `scip-query setup --no-hooks` to skip hook installation during setup, and run `scip-query setup-hooks --json` later to repair the current checkout's hooks.
|
|
348
389
|
|
|
390
|
+
Setup/configuration writers are conflict-aware. They reread the latest file
|
|
391
|
+
under a short token-owned lock, preserve unknown JSON fields and prose outside
|
|
392
|
+
owned Markdown markers, and publish complete bytes durably. An unrelated
|
|
393
|
+
intervening JSON edit is merged; a stale decision about the same project-config
|
|
394
|
+
field, malformed latest JSON, malformed managed markers, or an edit that wins
|
|
395
|
+
the final revision check produces an explicit conflict and leaves the latest
|
|
396
|
+
file untouched. Reload the file and rerun the command after resolving that
|
|
397
|
+
conflict. See [Configuration and setup write safety](docs/CONFIGURATION_WRITE_SAFETY.md).
|
|
398
|
+
|
|
349
399
|
For a project, run `scip-query setup`. It enables demand-started automatic
|
|
350
400
|
indexing unless the project already has an explicit `watch.enabled: false`,
|
|
351
401
|
starts or reuses the project service, verifies its clean-idle deadline, and
|
|
@@ -361,7 +411,7 @@ AGENTS.md/CLAUDE.md guidance. Use
|
|
|
361
411
|
the default terminal checklist to accept or decline the recommended automatic
|
|
362
412
|
indexing action and other project-local changes (`--guided` reopens it
|
|
363
413
|
explicitly). After setup,
|
|
364
|
-
`scip-
|
|
414
|
+
`scip-audit` confirms raw signals and `scip-improve` keeps
|
|
365
415
|
fixing the worst confirmed items until no safe confirmed cleanup remains. Use
|
|
366
416
|
`scip-query setup --git-hook` when you also want a local pre-commit diff gate.
|
|
367
417
|
CI setup is intentionally separate.
|
|
@@ -386,7 +436,24 @@ scip-query tla trace-check specs/queue/Queue.tla --trace traces/run1.json # ch
|
|
|
386
436
|
scip-query tla fetch-tools # download the pinned tla2tools.jar into the cache
|
|
387
437
|
```
|
|
388
438
|
|
|
389
|
-
`tla verify` checks the mapping contract against the model text and the indexed code: variable and action referents must resolve to value-like symbols (not types), declared reads/writes are checked against a static scan, and every waiver requires a reason and is counted in the output. At scale, findings are grouped by `(category, modelElement)` with up to 3 exemplars per group by default — pass `--full` to print every finding ungrouped. The `scip-
|
|
439
|
+
`tla verify` checks the mapping contract against the model text and the indexed code: variable and action referents must resolve to value-like symbols (not types), declared reads/writes are checked against a static scan, and every waiver requires a reason and is counted in the output. At scale, findings are grouped by `(category, modelElement)` with up to 3 exemplars per group by default — pass `--full` to print every finding ungrouped. The `scip-plan` formal-model scenario (`scip-query install-skills`) walks the scaffold → verify → instrument → trace-check loop end to end.
|
|
440
|
+
|
|
441
|
+
`tla fetch-tools` allows five minutes and 256 MiB for the pinned download by
|
|
442
|
+
default. It streams bytes through the SHA-256 verifier instead of buffering the
|
|
443
|
+
response, rejects malformed or oversized `Content-Length`, and enforces the
|
|
444
|
+
same ceiling when the header is absent. Callers for one cache path serialize on
|
|
445
|
+
a token-owned lock and recheck the winner's checksum before fetching. Failed,
|
|
446
|
+
aborted, or competing operations remove only their random-token staging file;
|
|
447
|
+
the previously accepted cache remains available. Successful promotion flushes
|
|
448
|
+
the verified file and its containing directory before acknowledging the new
|
|
449
|
+
cache where the platform supports directory sync.
|
|
450
|
+
|
|
451
|
+
File-backed state uses an explicit visibility-versus-crash-durability
|
|
452
|
+
classification. See [Filesystem Publication and Durability](docs/DURABILITY.md)
|
|
453
|
+
for the guarantees, failure outcomes, Windows limitation, and call-site matrix.
|
|
454
|
+
Process coordination uses one versioned, token-owned format with conservative
|
|
455
|
+
malformed-file recovery; see
|
|
456
|
+
[Process Lock Ownership and Recovery](docs/LOCK_PROTOCOL.md).
|
|
390
457
|
|
|
391
458
|
## Quick Start
|
|
392
459
|
|
|
@@ -409,7 +476,18 @@ scip-query health --write-baseline # start the ratchet
|
|
|
409
476
|
- `scip` CLI, from [Sourcegraph SCIP releases](https://github.com/sourcegraph/scip/releases)
|
|
410
477
|
- A language-specific SCIP indexer for your project
|
|
411
478
|
|
|
412
|
-
On Windows, the `scip` binary is installed automatically from npm:
|
|
479
|
+
On Windows, the `scip` binary is installed automatically from npm:
|
|
480
|
+
`scip-query-scip-windows` is an OS-gated optional dependency (universal
|
|
481
|
+
package, x64 + ARM64) that only Windows installs fetch. Resolution order:
|
|
482
|
+
`scip` on PATH, then `SCIP_QUERY_SCIP_BIN`, then the sidecar package. Run
|
|
483
|
+
`scip-query check-deps` for platform-specific install instructions. The
|
|
484
|
+
[Windows sidecar release guide](docs/WINDOWS_SIDECAR_RELEASE.md) defines its
|
|
485
|
+
executable provenance, fail-closed build/pack checks, and registry identity
|
|
486
|
+
gate. Release operators can run `npm run verify:scip-windows-registry` for a
|
|
487
|
+
sidecar-only read, or `npm run release:npm:dry-run` for the complete
|
|
488
|
+
main-plus-sidecar preflight and registry reconciliation without publication.
|
|
489
|
+
The publishing command is `npm run release:npm`; direct `npm publish` refuses
|
|
490
|
+
to run because it cannot own the recoverable two-package ordering.
|
|
413
491
|
|
|
414
492
|
| Language | Indexer | Install |
|
|
415
493
|
| ----------------------------- | ---------------- | ----------------------------------------------------------------------------------------------------------------------------- |
|
|
@@ -429,6 +507,16 @@ For Python, the executable may be `scip-python`, `scip-python-plus`, or both. `s
|
|
|
429
507
|
|
|
430
508
|
Vue single-file components are handled through the JavaScript/TypeScript indexer. `scip-query` also extracts the `<script>` or `<script setup>` block so symbol, reference, and import queries cover Vue components alongside regular `.ts` and `.js` files.
|
|
431
509
|
|
|
510
|
+
`augment-vue` uses one in-process Volar context by default. Calibrated projects
|
|
511
|
+
can opt into parallel computation with `SCIP_QUERY_AUGMENT_VUE_WORKERS=<count>`.
|
|
512
|
+
The CLI then owns every worker until exit: a timeout or peer failure terminates
|
|
513
|
+
and awaits all unfinished workers before removing their private result
|
|
514
|
+
directory. `SCIP_QUERY_AUGMENT_VUE_WORKER_TIMEOUT_MS` defaults to five minutes,
|
|
515
|
+
and `SCIP_QUERY_AUGMENT_VUE_WORKER_RESULT_MAX_BYTES` defaults to 64 MiB per
|
|
516
|
+
worker. Every result carries its run, worker, and task identities and is
|
|
517
|
+
size-checked before parsing, so a stale, partial, or mismatched result cannot
|
|
518
|
+
enter the deterministic worker-order merge.
|
|
519
|
+
|
|
432
520
|
`scip-query capabilities` prints project-level readiness plus a per-language matrix for SCIP indexing, source fallback evidence, semantic provider support, cleanup detector support, and cleanup verification coverage. Use it when you need to know whether a finding is graph-backed, semantic, heuristic, or compiler-verified for the language in front of you.
|
|
433
521
|
|
|
434
522
|
## How It Works
|
|
@@ -439,6 +527,21 @@ Vue single-file components are handled through the JavaScript/TypeScript indexer
|
|
|
439
527
|
|
|
440
528
|
By default, indexes live in `~/.cache/scip-query/projects/<hash>/`, keeping project directories clean. Override paths with `.scipquery.json` or `SCIP_QUERY_*` environment variables. Reindexing writes per-language SCIP shards next to the SQLite index, so a mixed-language repo can reuse unchanged language outputs and rerun only the languages whose source/config inputs changed.
|
|
441
529
|
|
|
530
|
+
Each accepted worktree-local index is also stored beneath an immutable
|
|
531
|
+
`.scipquery-generations/<identity>/` directory. An atomic `state.json` pointer
|
|
532
|
+
selects the database, SCIP companion, and metadata as one unit; every
|
|
533
|
+
`ScipDatabase` retains that unit for its lifetime. The familiar top-level
|
|
534
|
+
`index.db`, `index.scip`, and `meta.json` files remain compatibility mirrors,
|
|
535
|
+
but internal queries do not reread them after opening a generation. This keeps
|
|
536
|
+
cursor identities and semantic requests attached to the same rows even during
|
|
537
|
+
a concurrent reindex. The publication, crash, legacy-overlap, and retention
|
|
538
|
+
rules are documented in [Local Index Generations](docs/INDEX_GENERATIONS.md).
|
|
539
|
+
|
|
540
|
+
All `meta.json` consumers share one version decoder and an explicit capability
|
|
541
|
+
matrix. Version 2 remains readable, version 3 is current, and version 4 is a
|
|
542
|
+
reserved unsupported migration boundary. See
|
|
543
|
+
[Reindex Metadata Compatibility](docs/REINDEX_METADATA_COMPATIBILITY.md).
|
|
544
|
+
|
|
442
545
|
Git worktrees in the same repository also share immutable generations under
|
|
443
546
|
`~/.cache/scip-query/repositories/<repository-id>/`. A shared generation is a
|
|
444
547
|
complete index for one exact committed tree, indexing configuration, artifact
|
|
@@ -450,6 +553,15 @@ copy-on-write cloning is used when available, with an ordinary copy fallback;
|
|
|
450
553
|
hard links are never used. Dirty edits, watcher refreshes, locks, and local
|
|
451
554
|
`evidence.db` state therefore remain private to the worktree.
|
|
452
555
|
|
|
556
|
+
Each worktree lease names the exact shared generation protected from
|
|
557
|
+
collection. Lease publication, liveness touches, and repository cleanup share
|
|
558
|
+
one repository-cache lock. A touch rereads the current lease only after
|
|
559
|
+
acquiring that lock, validates its ownership checksum and current local
|
|
560
|
+
generation, and changes only `lastSeenAt`. If a newer generation was attached,
|
|
561
|
+
the lease was deleted or recreated, or its ownership changed while the touch
|
|
562
|
+
waited, the touch preserves that current state instead of replaying its stale
|
|
563
|
+
observation.
|
|
564
|
+
|
|
453
565
|
Automatic refresh follows the same boundary. When `watch.enabled` is true,
|
|
454
566
|
the first watcher-eligible command in each worktree starts or reuses a daemon
|
|
455
567
|
identified by that checkout's Git worktree ID. A Git worktree ID is a checkout
|
|
@@ -472,6 +584,16 @@ shared generation is only a warm starting snapshot; it never implies a shared
|
|
|
472
584
|
watcher or shared later writes. A daemon that exits after its configured idle
|
|
473
585
|
timeout starts warm again when that worktree is next used.
|
|
474
586
|
|
|
587
|
+
Command-triggered refresh intent is stored separately from disposable activity
|
|
588
|
+
timestamps. Each accepted demand is an immutable request with a deadline and
|
|
589
|
+
optional idempotency key; the daemon claims pending requests exclusively,
|
|
590
|
+
coalesces them deliberately, and acknowledges them only after the corresponding
|
|
591
|
+
reindex completes. A failed attempt returns its requests to pending, and a
|
|
592
|
+
successor daemon recovers claims left by a crashed owner. `watch --status`
|
|
593
|
+
reports pending, claimed, completed, and expired counts. The complete
|
|
594
|
+
at-least-once and retention contract is documented in
|
|
595
|
+
[Watch Refresh Requests](docs/WATCH_REFRESH_REQUESTS.md).
|
|
596
|
+
|
|
475
597
|
The primary checkout is only a possible source of a generation, never an
|
|
476
598
|
authority for a linked worktree. If its local cache already contains
|
|
477
599
|
uncommitted changes that are absent from a new worktree's `HEAD`, the full
|
|
@@ -506,6 +628,26 @@ Historical shadow rows are compact calibration summaries. They rotate at
|
|
|
506
628
|
project; the complete latest record remains available for status diagnostics.
|
|
507
629
|
After acquiring a project's exclusive reindex lock, each reindex also removes
|
|
508
630
|
staging directories abandoned by interrupted earlier reindexes.
|
|
631
|
+
Watch and watcher-triggered reindex ownership records include the operating
|
|
632
|
+
system process start identity as well as the PID. `watch stop`, daemon
|
|
633
|
+
replacement, and manual preemption verify both values before signaling. A
|
|
634
|
+
legacy record or a platform lookup failure therefore fails closed with an
|
|
635
|
+
explicit recovery error instead of treating a reused PID as the old
|
|
636
|
+
tool-owned process.
|
|
637
|
+
|
|
638
|
+
Finite subprocesses use explicit wall-time and output budgets. Quick binary
|
|
639
|
+
probes default to 10 seconds, Git operations to 30 seconds, isolated analysis
|
|
640
|
+
workers to 180 seconds, installers and index conversion to 300 seconds, and
|
|
641
|
+
language indexers to 600 seconds. Set `SCIP_QUERY_INDEXER_TIMEOUT_MS` to a
|
|
642
|
+
positive integer to override the indexer deadline. Command-specific checker,
|
|
643
|
+
TLA+, benchmark, and Rust semantic budgets continue to use their documented
|
|
644
|
+
options or environment settings. When an asynchronous finite child exceeds
|
|
645
|
+
its deadline or output budget, scip-query drains both streams, sends `TERM`,
|
|
646
|
+
escalates to `KILL` after a one-second grace period only while the recorded
|
|
647
|
+
process identity still matches, and reports completion only after the child
|
|
648
|
+
has closed. Detached watch and semantic services are deliberate exceptions:
|
|
649
|
+
their persisted identity, lease, request deadlines, and stop protocol own
|
|
650
|
+
their lifetime.
|
|
509
651
|
|
|
510
652
|
TypeScript monorepos can opt into project sharding with `indexer.typescript.projectMode: "workspace"`. In that mode, `scip-query` discovers repo-local TypeScript project roots, runs one `scip-typescript` process per project with bounded concurrency, merges the shard protobufs, and still publishes one TypeScript language index. Set `indexer.typescript.projects` to an explicit list of project directories or tsconfig paths when automatic discovery is too broad. When `projects` is set to a non-empty list, it is authoritative: only the listed projects are indexed, automatic discovery does not run, and the repo root is not re-added alongside them (even if the root tsconfig covers subdirectories) — files that are only covered by an excluded root tsconfig (e.g. shared ambient `.d.ts` files) drop out of the index, so pick the list deliberately. An empty or absent `projects` falls back to full discovery, unchanged. Workspace mode also caches each project shard: reindexing after an edit reruns only the changed projects and their dependents (workspace `package.json` dependencies and tsconfig `paths`/`references` targets count as dependencies), serves untouched projects from `language-indexes/typescript-projects/`, and reports every reuse decision in `reindex --json` shard diagnostics. Set `indexerConcurrency` when a repo needs a persistent worker cap; CLI `--indexer-concurrency` and `SCIP_QUERY_INDEXER_CONCURRENCY` still override ad hoc runs.
|
|
511
653
|
Use `indexer.typescript.pnpmWorkspaces` only with the default single-project mode; workspace mode passes explicit projects instead.
|
|
@@ -520,6 +662,8 @@ Clojure projects can pass a project-local `scip-clojure` config file through `.s
|
|
|
520
662
|
|
|
521
663
|
```json
|
|
522
664
|
{
|
|
665
|
+
"$schema": "./node_modules/scip-query/docs/schemas/project-config.schema.json",
|
|
666
|
+
"schemaVersion": 2,
|
|
523
667
|
"languages": ["clojure"],
|
|
524
668
|
"indexer": {
|
|
525
669
|
"clojure": {
|
|
@@ -547,6 +691,8 @@ It creates a minimal `.scipquery.json`:
|
|
|
547
691
|
|
|
548
692
|
```json
|
|
549
693
|
{
|
|
694
|
+
"$schema": "./node_modules/scip-query/docs/schemas/project-config.schema.json",
|
|
695
|
+
"schemaVersion": 2,
|
|
550
696
|
"languages": ["typescript"],
|
|
551
697
|
"watch": {
|
|
552
698
|
"enabled": true,
|
|
@@ -559,6 +705,17 @@ It creates a minimal `.scipquery.json`:
|
|
|
559
705
|
}
|
|
560
706
|
```
|
|
561
707
|
|
|
708
|
+
`schemaVersion` identifies the meaning of the persisted fields. Version 2 is
|
|
709
|
+
the current format. The CLI reads both unversioned/explicit-v1 legacy files
|
|
710
|
+
and version 2. A setup command migrates a legacy file on its next authorized
|
|
711
|
+
config write, preserving fields it does not own. An unsupported future
|
|
712
|
+
version or malformed discriminator fails before any option is used and is
|
|
713
|
+
left byte-for-byte unchanged. `$schema` points editors at the JSON Schema
|
|
714
|
+
bundled with the installed package.
|
|
715
|
+
|
|
716
|
+
Creation is exclusive: if another process creates `.scipquery.json` first,
|
|
717
|
+
`init` preserves that complete file rather than replacing it.
|
|
718
|
+
|
|
562
719
|
Add optional fields such as `indexerConcurrency`, `indexer`, `entryRoots`,
|
|
563
720
|
`declaredCouplings`, and `suppressions` only when the project needs them.
|
|
564
721
|
|
|
@@ -571,18 +728,47 @@ background service. Relevant file/Git activity keeps it alive; it exits after
|
|
|
571
728
|
timeout to `0` to keep it running. `scip-query watch` still provides foreground
|
|
572
729
|
mode, while `watch --daemon`, `watch --status`, and `watch --stop` expose the
|
|
573
730
|
background lifecycle. Both modes share one project lock, so only one can own an
|
|
574
|
-
index cache.
|
|
731
|
+
index cache. Stopping is an asynchronous drain: the watcher first rejects new
|
|
732
|
+
refreshes, continuously consumes a bounded tail of the active worker's output,
|
|
733
|
+
closes every source subscription, and waits for the worker to exit after
|
|
734
|
+
`TERM`/`KILL` escalation before it removes service state or releases the lock.
|
|
735
|
+
`watch --status` reports `Stopping safely` while that work is in progress. If a
|
|
736
|
+
subscription cannot close or worker exit cannot be established, the service
|
|
737
|
+
keeps an explicit degraded draining record and its ownership files instead of
|
|
738
|
+
advertising a clean stop; the reported reason is the recovery evidence.
|
|
739
|
+
Elapsed waits and idle control use a process-local monotonic clock; shared
|
|
740
|
+
heartbeats remain civil-time diagnostics and never authorize replacement or a
|
|
741
|
+
process signal by age alone. See [Time Semantics](docs/TIME_SEMANTICS.md).
|
|
575
742
|
|
|
576
743
|
The same demand-started service lazily owns TypeScript compiler Projects after
|
|
577
744
|
the first command that needs ts-morph semantics. Separate CLI processes reuse
|
|
578
|
-
that session through a repository-local
|
|
745
|
+
that session through a repository-local bounded mailbox; source-only index
|
|
579
746
|
generations refresh the existing Projects, while configuration or uncertain
|
|
580
747
|
changes replace them. `watch --status` reports Project/session/request counts.
|
|
748
|
+
Current TypeScript and durable Rust mailbox operations use stable
|
|
749
|
+
content-derived identities, pending/inflight/response states, atomic
|
|
750
|
+
owner-expiring claims, retained idempotent completions, FIFO enqueue ordering,
|
|
751
|
+
typed item/byte backpressure, bounded cleanup, and pressure telemetry. Client
|
|
752
|
+
timeout or exit no longer deletes shared work; a service crash before response
|
|
753
|
+
is reclaimable, while a response published before a crash prevents
|
|
754
|
+
re-execution. The precise state machine, default limits, legacy overlap, and
|
|
755
|
+
failure matrix are documented in
|
|
756
|
+
[`docs/MAILBOX_LIFECYCLE.md`](docs/MAILBOX_LIFECYCLE.md).
|
|
757
|
+
Rust v3 additionally binds every accepted response to its request ID,
|
|
758
|
+
operation ID, mailbox-session identity, and authoritative absolute deadline;
|
|
759
|
+
its old/current/future compatibility matrix is in
|
|
760
|
+
[`docs/RUST_DURABLE_SESSION_PROTOCOL.md`](docs/RUST_DURABLE_SESSION_PROTOCOL.md).
|
|
581
761
|
It also reports a rolling 24-hour reindex activity summary: rebuilt, reused,
|
|
582
762
|
failed, and freshness-proven suppressed refreshes plus estimated logical output
|
|
583
763
|
bytes. The estimate counts scip-query artifacts emitted by rebuilt refreshes;
|
|
584
764
|
it is not a measurement of physical SSD writes. The underlying
|
|
585
|
-
`reindex-activity.jsonl` history uses two bounded 1 MiB segments.
|
|
765
|
+
`reindex-activity.jsonl` history uses two bounded 1 MiB segments. Append,
|
|
766
|
+
rotation, and retained-set reads share a process-instance lock; incomplete
|
|
767
|
+
crash tails are trimmed or ignored without deleting earlier complete lines.
|
|
768
|
+
These observations are process-visible rather than crash-durable. See
|
|
769
|
+
[`docs/TELEMETRY_RETENTION.md`](docs/TELEMETRY_RETENTION.md).
|
|
770
|
+
The refresh-request counters reported beside it describe durable demand
|
|
771
|
+
admission and processing state, not reindex frequency.
|
|
586
772
|
If the service is stopped, incompatible, busy beyond its bound, or returns an
|
|
587
773
|
invalid response, the command falls back to the existing in-process ts-morph
|
|
588
774
|
provider.
|
|
@@ -592,6 +778,12 @@ session by default. It remains stopped until a Rust semantic request needs it,
|
|
|
592
778
|
exits after its clean idle period, and automatically falls back to the
|
|
593
779
|
per-command worker on helper/readiness/timeout/request failure. Set
|
|
594
780
|
`SCIP_RUST_SEMANTIC_DURABLE_SESSION=0` for an explicit worker-only opt-out.
|
|
781
|
+
The LSP transport accepts at most a 16 KiB response header and a 64 MiB JSON
|
|
782
|
+
message by default, with a 64 KiB header ceiling and a 256 MiB combined
|
|
783
|
+
wire-buffer ceiling even for programmatic overrides. Missing, invalid,
|
|
784
|
+
duplicate, unsafe, or oversized `Content-Length` framing kills that transport
|
|
785
|
+
once, clears its retained bytes, and fails all outstanding semantic/readiness
|
|
786
|
+
work so the normal worker or graph/source fallback can take over.
|
|
595
787
|
|
|
596
788
|
Use `declaredCouplings` for files that intentionally form one maintenance unit.
|
|
597
789
|
These pairs are treated as structurally linked by `co-change` and health, while
|
|
@@ -639,6 +831,7 @@ Query results are filtered through the project's `.gitignore`. If none exists, c
|
|
|
639
831
|
- [Detector Guide](docs/DETECTOR_GUIDE.md): what each detector measures, the differences between the confusable ones, and which check to run after which kind of change.
|
|
640
832
|
- [Agent Guide](docs/AGENT_GUIDE.md): goal-oriented workflows for tracing, planning, cleanup, quality checks, and change verification.
|
|
641
833
|
- [Command Reference](docs/COMMAND_REFERENCE.md): generated command syntax, descriptions, and options.
|
|
834
|
+
- [CLI JSON output contract](docs/CLI_JSON_OUTPUT.md): versioned envelopes, compatibility rules, and schema.
|
|
642
835
|
- [Programmatic API](docs/API.md): using the query functions from TypeScript.
|
|
643
836
|
- [Historical plans](https://github.com/PlunderStruck/scip-query/tree/main/docs/plans): implementation notes and completed cleanup plans.
|
|
644
837
|
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{c as t}from"./chunk-
|
|
1
|
+
import{c as t}from"./chunk-VEVBIAOJ.js";import"./chunk-VOQFGC2W.js";import{writeFileSync as s}from"fs";import{workerData as o}from"worker_threads";var r=o;try{let e=t({projectRoot:r.projectRoot,dbPath:r.dbPath,tsconfig:r.tsconfig,vueFiles:r.vueFiles,tasks:r.tasks});s(r.resultPath,JSON.stringify({version:1,runId:r.runId,workerId:r.workerId,taskIds:r.taskIds,ok:!0,result:e}))}catch(e){s(r.resultPath,JSON.stringify({version:1,runId:r.runId,workerId:r.workerId,taskIds:r.taskIds,ok:!1,error:e instanceof Error?e.message:String(e)}))}
|
|
2
2
|
//# sourceMappingURL=augment-vue-worker.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as f,b as m}from"./chunk-QZ4JVECJ.js";import{a as u}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{a as f,b as m}from"./chunk-QZ4JVECJ.js";import{a as u}from"./chunk-7LABSJSR.js";import{B as g,E as d}from"./chunk-DGMCFMPG.js";import{H as l}from"./chunk-B5MHCHP3.js";import{readFileSync as E,readdirSync as h}from"fs";import{basename as k,join as c}from"path";function S(t,e,r={}){let a=new Set(t),n=new Set(e),o=[...n].filter(i=>!a.has(i)).sort(),s=r.allowExtra?[]:[...a].filter(i=>!n.has(i)).sort();return{missing:o,extra:s}}function b(t,e){let r=N(t,e.file,e.keys);if(!r.ok)return{name:e.name,file:e.file,status:"unavailable",missing:[],extra:[],unavailableReason:r.reason};let a=L(t.config.projectRoot,e.mustEqual),n=S(r.keys,a,{allowExtra:e.allowExtra??!1}),o=n.missing.length>0||n.extra.length>0?"violated":"ok";return{name:e.name,file:e.file,status:o,missing:n.missing,extra:n.extra}}function O(t,e){return e.map(r=>b(t,r))}function G(t,e){if(e.has(t.file))return!0;let r=t.mustEqual;switch(r.type){case"top-level-dirs":return[...e].some(a=>a===r.path||a.startsWith(`${r.path}/`));case"file-glob":return[...e].some(a=>f(r.pattern,a));case"registered-commands":return e.has("docs/COMMAND_REFERENCE.md");case"builtin-skills":return[...e].some(a=>a.startsWith("skills/"))}}function I(t){if(t.status==="unavailable")return`[coverage-contract] ${t.name}: DISCLOSED \u2014 could not evaluate (${t.unavailableReason})`;let e=[];return t.missing.length>0&&e.push(`missing ${t.missing.join(", ")}`),t.extra.length>0&&e.push(`extra ${t.extra.join(", ")}`),`[coverage-contract] ${t.name}: ${e.join("; ")}`}function N(t,e,r){return r.type==="markdown-list"?T(t,e,r.marker):R(t,e,r)}function R(t,e,r){if(!l(t,e))return{ok:!1,reason:`file not found: ${e}`};let n=g(e);if(!n)return{ok:!1,reason:`unsupported file type for ${r.type} extraction: ${e}`};let o=d(t,e);if(!o)return{ok:!1,reason:`tree-sitter parser unavailable for ${n} (${e}) \u2014 contract skipped, not silently passed`,disclosedUnavailable:{language:n,reason:"parser-unavailable"}};let s=r.type==="object-literal-keys"?D(o,r.identifier):w(o,r.identifier);return s===null?{ok:!1,reason:`no ${r.type==="object-literal-keys"?"object literal":"string array"} named "${r.identifier}" found in ${e}`}:{ok:!0,keys:s}}function y(t){let e=t.childForFieldName("value");return e?e.type==="as_expression"||e.type==="satisfies_expression"?e.namedChild(0):e:null}function D(t,e){for(let r of t.rootNode.descendantsOfType("variable_declarator")){if(r.childForFieldName("name")?.text!==e)continue;let n=y(r);if(n?.type==="object")return $(n)}return null}function $(t){let e=new Set;for(let r of t.namedChildren)if(r.type==="pair"){let a=r.childForFieldName("key");a&&e.add(C(a.text))}else r.type==="shorthand_property_identifier"&&e.add(r.text);return[...e].sort()}function w(t,e){for(let r of t.rootNode.descendantsOfType("variable_declarator")){if(r.childForFieldName("name")?.text!==e)continue;let n=y(r);if(n?.type!=="array")continue;let o=new Set;for(let s of n.namedChildren)s.type==="string"&&o.add(C(s.text));return[...o].sort()}return null}function C(t){return t.length>=2&&(t[0]==="'"&&t.endsWith("'")||t[0]==='"'&&t.endsWith('"'))?t.slice(1,-1):t}function T(t,e,r){let a=l(t,e);if(!a)return{ok:!1,reason:`file not found: ${e}`};let n=v(a,r);return n===null?{ok:!1,reason:`no <!-- BEGIN GENERATED ${r} --> ... <!-- END GENERATED ${r} --> block in ${e}`}:{ok:!0,keys:x(n)}}function v(t,e){let r=u(e),n=new RegExp(`<!--\\s*BEGIN GENERATED ${r}\\s*-->([\\s\\S]*?)<!--\\s*END GENERATED ${r}\\s*-->`).exec(t);return n?n[1]:null}function x(t){let e=new Set;for(let r of t.matchAll(/`([a-z][a-z0-9-]*)`/g))e.add(r[1]);for(let r of t.matchAll(/\[([a-z][a-z0-9-]*)\]\([^)]*\)/g))e.add(r[1]);return[...e].sort()}function L(t,e){switch(e.type){case"top-level-dirs":return p(c(t,e.path));case"file-glob":return[...new Set(m(t,e.pattern).map(r=>k(r)))].sort();case"registered-commands":return A(t);case"builtin-skills":return p(c(t,"skills"))}}function p(t){let e;try{e=h(t,{withFileTypes:!0})}catch{return[]}return e.filter(r=>r.isDirectory()&&!r.name.startsWith(".")).map(r=>r.name).sort()}function A(t){let e;try{e=E(c(t,"docs/COMMAND_REFERENCE.md"),"utf-8")}catch{return[]}let r=v(e,"COMMAND REFERENCE");return r?x(r):[]}var z={dead:{minLoc:3,skipBarrels:!0,deadCodeOnly:!0},isolated:{minLoc:3},similar:{minSimilarity:.6,limit:50,minCallees:4},duplicateBodies:{maxLoc:15,limit:50},extract:{minLoc:15,minCallees:5,limit:50},wrappers:{maxLoc:15,limit:50},passthroughs:{maxLoc:15,limit:50},stale:{minLoc:3,limit:50},drift:{},twinDrift:{minSimilarity:.3}};export{b as a,O as b,G as c,I as d,z as e};
|
|
2
|
+
//# sourceMappingURL=chunk-24QNP7MN.js.map
|