scip-query 0.19.5 → 0.19.8
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 +85 -1
- package/README.md +259 -53
- package/dist/augment-vue-worker.js +1 -1
- package/dist/chunk-2465DLHK.js +3 -0
- package/dist/{chunk-7GXM52MI.js → chunk-24GTWJ3N.js} +2 -2
- package/dist/{chunk-NH5ALKPW.js → chunk-2SNGN6U4.js} +2 -2
- package/dist/{chunk-3SVWW4PN.js → chunk-2U3OLUNJ.js} +2 -2
- package/dist/{chunk-XLTP42QA.js → chunk-33KUO7CG.js} +2 -2
- package/dist/{chunk-54HA4ZXH.js → chunk-33XTHFKR.js} +2 -2
- package/dist/{chunk-ZGZUZ7XE.js → chunk-3EDFLQ6A.js} +2 -2
- package/dist/chunk-3ZSJ3PWF.js +16 -0
- package/dist/{chunk-F6O7AAC3.js → chunk-43KC6EQZ.js} +2 -2
- package/dist/{chunk-I5RJM53C.js → chunk-464PLI5O.js} +2 -2
- package/dist/chunk-46XGSFNI.js +2 -0
- package/dist/{chunk-M7AIS73L.js → chunk-47BU5Z4T.js} +2 -2
- package/dist/chunk-4BV4QAZJ.js +5 -0
- package/dist/chunk-4YTUWQ6M.js +18 -0
- package/dist/{chunk-RV2FQIX3.js → chunk-5ML2BNRH.js} +2 -2
- package/dist/{chunk-6NSFJYRC.js → chunk-5YLUDDAF.js} +2 -2
- package/dist/chunk-67QRR5YC.js +6 -0
- package/dist/{chunk-GPBBJ5Y4.js → chunk-6GXYN7YA.js} +3 -3
- package/dist/{chunk-4333ETTV.js → chunk-6M7RONVB.js} +2 -2
- package/dist/chunk-6YTSKJJ3.js +2 -0
- package/dist/{chunk-QDV6RDCP.js → chunk-7FT5Y65S.js} +2 -2
- package/dist/{chunk-XTX6QHOF.js → chunk-7KYNAMMH.js} +2 -2
- package/dist/{chunk-DZ74OMG6.js → chunk-7LSVMFX7.js} +2 -2
- package/dist/{chunk-VTKGCT3V.js → chunk-7QHY3H7P.js} +2 -2
- package/dist/{chunk-MITTUCEH.js → chunk-7RAG65VK.js} +2 -2
- package/dist/{chunk-25LPM4DG.js → chunk-7SWJEWJF.js} +2 -2
- package/dist/{chunk-52ZYCAEO.js → chunk-7VCOXZH3.js} +2 -2
- package/dist/chunk-A2TNXAXO.js +8 -0
- package/dist/{chunk-IUFDSKGG.js → chunk-A3QXWFBK.js} +2 -2
- package/dist/{chunk-4T3LTWUS.js → chunk-AA4UWRNL.js} +2 -2
- package/dist/{chunk-4SALD7RU.js → chunk-ACAM6O5R.js} +2 -2
- package/dist/chunk-APMMR5Y2.js +2 -0
- package/dist/chunk-AQOFWNQJ.js +1 -0
- package/dist/chunk-AZFUMCQB.js +2 -0
- package/dist/{chunk-M7MTH5NR.js → chunk-BDOIKGDI.js} +2 -2
- package/dist/{chunk-BTEE5NZQ.js → chunk-BNXICU42.js} +2 -2
- package/dist/chunk-C5Q44Q5D.js +3 -0
- package/dist/{chunk-EOOJGLDU.js → chunk-CTF2GDEX.js} +2 -2
- package/dist/chunk-DHEQMPLW.js +2 -0
- package/dist/{chunk-IZKFSVBV.js → chunk-DQBCO2UY.js} +2 -2
- package/dist/{chunk-7B3UPBVA.js → chunk-DQGSM7RZ.js} +2 -2
- package/dist/chunk-E2LAW7SL.js +30 -0
- package/dist/chunk-E3HYEQO7.js +2 -0
- package/dist/chunk-E4NFOAD4.js +6 -0
- package/dist/chunk-E5HNT4X2.js +3 -0
- package/dist/{chunk-J77UIT3I.js → chunk-ELLMY7XJ.js} +2 -2
- package/dist/chunk-FD3HFKXR.js +5 -0
- package/dist/{chunk-SOAT6NLA.js → chunk-FIJCV235.js} +2 -2
- package/dist/{chunk-H7UKLTWJ.js → chunk-FJ5UDTQF.js} +2 -2
- package/dist/{chunk-HEXVUYFQ.js → chunk-GHKEJTCE.js} +2 -2
- package/dist/{chunk-LBMJEAEW.js → chunk-GLZTVKAB.js} +3 -3
- package/dist/{chunk-FWUUZTIO.js → chunk-GNC4JVAN.js} +2 -2
- package/dist/chunk-HIB452NU.js +949 -0
- package/dist/{chunk-NRCXJDHL.js → chunk-HZYDQPNY.js} +2 -2
- package/dist/chunk-IF6FP6B2.js +66 -0
- package/dist/{chunk-4RSI5EMG.js → chunk-JAY7YWS3.js} +2 -2
- package/dist/{chunk-STOL2BTL.js → chunk-JHF3E4YM.js} +2 -2
- package/dist/chunk-JORHF5AL.js +108 -0
- package/dist/{chunk-A2EZV2UM.js → chunk-K2WO7XY7.js} +2 -2
- package/dist/chunk-KFZNKUNT.js +2 -0
- package/dist/{chunk-YVVCVR2L.js → chunk-KJ2IIBZN.js} +2 -2
- package/dist/{chunk-QGXBRIM5.js → chunk-KKME5ZAI.js} +2 -2
- package/dist/chunk-KSGTULOS.js +9 -0
- package/dist/{chunk-UOAV44HR.js → chunk-KXDJAG4N.js} +3 -3
- package/dist/{chunk-UKZBVX4U.js → chunk-L4S2A7BV.js} +2 -2
- package/dist/chunk-LP3ARJKF.js +8 -0
- package/dist/chunk-LSOR3LQG.js +3 -0
- package/dist/{chunk-Q4IIEGXJ.js → chunk-MLFZP76A.js} +2 -2
- package/dist/{chunk-WQTAC523.js → chunk-MNSTUIDD.js} +2 -2
- package/dist/{chunk-VXQNNXJE.js → chunk-MSBDMFER.js} +2 -2
- package/dist/{chunk-X6D5IC6I.js → chunk-MZZBAITE.js} +5 -5
- package/dist/{chunk-I5AWSI2G.js → chunk-NE3TZUCI.js} +2 -2
- package/dist/{chunk-6E7UTQY7.js → chunk-NTUMF2X3.js} +2 -2
- package/dist/{chunk-S44IULR6.js → chunk-O23I56NA.js} +2 -2
- package/dist/{chunk-CFMXJPHH.js → chunk-O3O4XXO6.js} +2 -2
- package/dist/{chunk-IG7N5ZIK.js → chunk-OUBAF226.js} +2 -2
- package/dist/chunk-P3UO3EH3.js +2 -0
- package/dist/{chunk-YNRNA5LK.js → chunk-QGGLL3UH.js} +2 -2
- package/dist/chunk-QIQ63BHW.js +16 -0
- package/dist/{chunk-VGRICIQI.js → chunk-QJIVBYEK.js} +2 -2
- package/dist/chunk-QOXBSI6G.js +20 -0
- package/dist/chunk-QXK6UUSM.js +2 -0
- package/dist/{chunk-XYADIZHU.js → chunk-RA3AYNWP.js} +2 -2
- package/dist/chunk-RJMDJR3A.js +2 -0
- package/dist/{chunk-NSS46APD.js → chunk-RLH5VUMG.js} +2 -2
- package/dist/{chunk-GBQ5NYPR.js → chunk-S4S2WOIX.js} +6 -6
- package/dist/{chunk-YIJ7ZAA4.js → chunk-SERUIGV5.js} +2 -2
- package/dist/{chunk-FECYOO5O.js → chunk-SMQWE25B.js} +2 -2
- package/dist/{chunk-R4FQGQ4X.js → chunk-TAVELHYR.js} +2 -2
- package/dist/{chunk-U6WNH5GC.js → chunk-TWMJ3Y3G.js} +2 -2
- package/dist/chunk-VAXNI5NE.js +146 -0
- package/dist/chunk-VVY2G5ET.js +2 -0
- package/dist/{chunk-WER3B7MI.js → chunk-W3DBTGL4.js} +2 -2
- package/dist/{chunk-CNKAGUPL.js → chunk-WANA4KAQ.js} +2 -2
- package/dist/chunk-WJL2L6MV.js +60 -0
- package/dist/chunk-WUW7YUAH.js +11 -0
- package/dist/{chunk-QVWS2VWZ.js → chunk-WWKWUPSU.js} +2 -2
- package/dist/{chunk-ABMYA4TN.js → chunk-WY45BHKQ.js} +2 -2
- package/dist/chunk-X4FR5BZF.js +9 -0
- package/dist/chunk-X6RKPDY7.js +2 -0
- package/dist/{chunk-ZXJYMGD3.js → chunk-YLFORA5G.js} +2 -2
- package/dist/{chunk-KP6XRY5Z.js → chunk-YTVWB7YJ.js} +2 -2
- package/dist/{chunk-4XTA5OMB.js → chunk-ZCEJ63SP.js} +2 -2
- package/dist/{chunk-HKEHS2AS.js → chunk-ZJ5CBXK3.js} +2 -2
- package/dist/chunk-ZL2OGDCD.js +2 -0
- package/dist/cli.js +8 -3
- package/dist/command-descriptors-ZW5J4ZEM.js +631 -0
- package/dist/{config-types-D20KuvvZ.d.ts → config-types-B6MEoRNy.d.ts} +8 -0
- package/dist/{db-G_II8yXU.d.ts → db-DYLKr9Wn.d.ts} +18 -1
- package/dist/direct-navigation-42YHQPOI.js +3 -0
- package/dist/{health-oblXYgkF.d.ts → health-DgxIDXJC.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 +26 -26
- package/dist/reindex.d.ts +14 -4
- package/dist/reindex.js +34 -38
- package/dist/runtime.d.ts +167 -18
- 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-Cc6c00-a.d.ts} +6 -2
- package/dist/watch-server.js +5 -5
- package/docs/AGENT_GUIDE.md +20 -4
- package/docs/AI_FAILURE_MODES.md +17 -17
- package/docs/API_EVOLUTION.md +71 -0
- package/docs/CLI_JSON_OUTPUT.md +168 -0
- package/docs/COMMAND_REFERENCE.md +10 -6
- package/docs/COMMITTED_RECORD_COMPATIBILITY.md +117 -0
- package/docs/CONFIGURATION_WRITE_SAFETY.md +130 -0
- package/docs/DETECTOR_GUIDE.md +46 -46
- 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/SECURITY_MODEL.md +129 -0
- package/docs/TELEMETRY_RETENTION.md +77 -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/cli-output-page.schema.json +104 -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 +21 -10
- 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 +90 -229
- 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 +77 -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} +11 -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 +54 -85
- 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 +53 -98
- package/skills/scip-query/agents/openai.yaml +2 -2
- package/skills/scip-setup/SKILL.md +69 -181
- 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 +126 -84
- 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-2YU7I3QO.js +0 -2
- package/dist/chunk-3MJ5YA4Y.js +0 -16
- package/dist/chunk-64RFXJT5.js +0 -16
- package/dist/chunk-7UY7SD7D.js +0 -927
- package/dist/chunk-B5NLK2B3.js +0 -6
- package/dist/chunk-C2QSK7E7.js +0 -2
- package/dist/chunk-C7NIYIQ4.js +0 -67
- package/dist/chunk-D4U5Q3FT.js +0 -7
- package/dist/chunk-DGAGY7RJ.js +0 -60
- package/dist/chunk-DLWR3NUU.js +0 -5
- 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-NPKYOIFM.js +0 -18
- package/dist/chunk-NZL2DBT7.js +0 -2
- package/dist/chunk-OMPZHGHO.js +0 -2
- package/dist/chunk-P2PC2WGR.js +0 -2
- package/dist/chunk-Q3AFUTGB.js +0 -8
- package/dist/chunk-QRGV2F7L.js +0 -2
- package/dist/chunk-TW4OG5FC.js +0 -4
- package/dist/chunk-U7DSEKOM.js +0 -30
- package/dist/chunk-V27BEQJN.js +0 -7
- package/dist/chunk-XAGAZSFE.js +0 -6
- package/dist/chunk-XBN5VO53.js +0 -2
- package/dist/chunk-YGAGTIDK.js +0 -11
- package/dist/command-descriptors-N2TL4XM2.js +0 -613
- package/dist/direct-navigation-DUCZCTOE.js +0 -3
- package/skills/scip-api-impact/SKILL.md +0 -140
- 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 -107
- package/skills/scip-claim-audit/agents/openai.yaml +0 -4
- package/skills/scip-cleanup-audit/SKILL.md +0 -130
- package/skills/scip-cleanup-audit/agents/openai.yaml +0 -4
- package/skills/scip-cleanup-improve/SKILL.md +0 -85
- package/skills/scip-cleanup-improve/agents/openai.yaml +0 -4
- package/skills/scip-concrete-plan/HIGH_ASSURANCE.md +0 -317
- package/skills/scip-concrete-plan/SKILL.md +0 -105
- 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 -266
- 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 -151
- 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 -133
- package/skills/scip-triage-issue/agents/openai.yaml +0 -4
- package/skills/scip-twin-drift/SKILL.md +0 -109
- 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,90 @@ 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.8]
|
|
8
|
+
|
|
9
|
+
### Complete agent evidence
|
|
10
|
+
|
|
11
|
+
- Every descriptor-backed command now supports resumable output pages backed
|
|
12
|
+
by one immutable private snapshot. Pages report exact character totals,
|
|
13
|
+
bind cursors to the original invocation and content hash, and emit the exact
|
|
14
|
+
continuation command without rerunning a nondeterministic query.
|
|
15
|
+
- Incomplete machine-readable and human pages identify themselves as
|
|
16
|
+
incomplete evidence. Generated project guidance requires agents to retrieve
|
|
17
|
+
every page before drawing a conclusion, changing evidence commands, or
|
|
18
|
+
reporting completion.
|
|
19
|
+
|
|
20
|
+
### Diff-gate containment
|
|
21
|
+
|
|
22
|
+
- CLI and Stop-hook gates now share a per-project single-flight lease, so
|
|
23
|
+
overlapping agents report the live owner instead of multiplying detector
|
|
24
|
+
work.
|
|
25
|
+
- Gate evaluation runs in an owned child with a finite 60-second deadline, or
|
|
26
|
+
180 seconds with `--full`. Timeout terminates and reaps the child and fails
|
|
27
|
+
closed.
|
|
28
|
+
- Historical finding reconciliation replays at most one comparison base per
|
|
29
|
+
foreground gate, runs only the detectors needed for that base, and leaves
|
|
30
|
+
deferred findings open with exact counts.
|
|
31
|
+
|
|
32
|
+
### Security and operational hardening
|
|
33
|
+
|
|
34
|
+
- Repository-controlled paths, tools, regular expressions, persisted records,
|
|
35
|
+
subprocesses, and output now cross explicit containment, size, time, and
|
|
36
|
+
trust boundaries. Terminal text is rendered inert, and destructive cache
|
|
37
|
+
operations require verified ownership.
|
|
38
|
+
- Watchers and semantic mailboxes back off while idle, suppress redundant
|
|
39
|
+
refreshes, and preserve one canonical source identity across filesystem
|
|
40
|
+
aliases.
|
|
41
|
+
- Production dependency audit and release preflight now reject high-severity
|
|
42
|
+
production advisories; the shipped production dependency tree is clean.
|
|
43
|
+
|
|
44
|
+
## [0.19.6]
|
|
45
|
+
|
|
46
|
+
### State and process resilience
|
|
47
|
+
|
|
48
|
+
- Index publication now binds SQLite, SCIP, metadata, cursors, semantic
|
|
49
|
+
sessions, and retained generations to one immutable generation identity.
|
|
50
|
+
Shared-cache hydration and lease updates preserve current ownership across
|
|
51
|
+
concurrent writers and crash recovery.
|
|
52
|
+
- Watch/reindex locks, refresh requests, TypeScript and Rust mailboxes,
|
|
53
|
+
evidence counters, suppressions, and outcome records now use explicit
|
|
54
|
+
operation identities, bounded queues, durable publication, conservative
|
|
55
|
+
owner reclamation, retry-safe transitions, and versioned compatibility
|
|
56
|
+
readers.
|
|
57
|
+
- Child processes, workers, verified downloads, and Rust LSP framing have
|
|
58
|
+
finite time, byte, output, and shutdown budgets with typed timeout,
|
|
59
|
+
overflow, cancellation, and recovery outcomes.
|
|
60
|
+
|
|
61
|
+
### Public and durable contracts
|
|
62
|
+
|
|
63
|
+
- CLI JSON, project configuration, reindex metadata, committed suppression and
|
|
64
|
+
outcome files, and Rust durable-session messages have explicit current,
|
|
65
|
+
legacy, malformed, and future-version policies. Incomplete history and
|
|
66
|
+
partial metadata disclose their reduced capabilities instead of silently
|
|
67
|
+
acting current.
|
|
68
|
+
- The published TypeScript declaration surface is checked across all 72
|
|
69
|
+
export paths and 871 declarations, including transitive declaration chunks
|
|
70
|
+
and a downstream consumer compile fixture.
|
|
71
|
+
|
|
72
|
+
### Windows sidecar and npm release
|
|
73
|
+
|
|
74
|
+
- The Windows sidecar carries a versioned provenance manifest binding its
|
|
75
|
+
immutable SCIP source commit, pinned Go toolchain, build contract, PE
|
|
76
|
+
machines, sizes, and SHA-256 hashes. Build, sidecar pack, and release all
|
|
77
|
+
reject stale, partial, swapped, or unverifiable binaries.
|
|
78
|
+
- Existing npm versions are accepted only after local pack reports, registry
|
|
79
|
+
metadata, downloaded tarball hashes, package coordinates, and provenance
|
|
80
|
+
bytes agree. Only an explicit npm `E404` authorizes first publication;
|
|
81
|
+
ambiguity and concurrent different-content winners fail closed.
|
|
82
|
+
- `npm run release:npm` owns the complete two-package workflow: test/build/API
|
|
83
|
+
preflight and both packs from one clean, unchanged Git revision precede
|
|
84
|
+
registry mutation, the sidecar publishes and verifies first, the main
|
|
85
|
+
package publishes and verifies last, and a durable schema-versioned local
|
|
86
|
+
state record binds the canonical HTTPS registry, source revision, and exact
|
|
87
|
+
artifacts so every partial state is observable and safely retryable. Direct
|
|
88
|
+
`npm publish` is guarded because it cannot provide that cross-package
|
|
89
|
+
recovery contract.
|
|
90
|
+
|
|
7
91
|
## [0.19.5]
|
|
8
92
|
|
|
9
93
|
### Agent evidence and workflows
|
|
@@ -201,7 +285,7 @@ All notable changes to `scip-query` are documented here. This file starts at 0.1
|
|
|
201
285
|
|
|
202
286
|
### Fixes (accuracy / false-positive)
|
|
203
287
|
|
|
204
|
-
- **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
|
|
288
|
+
- **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`.
|
|
205
289
|
- **`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.
|
|
206
290
|
- **`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."
|
|
207
291
|
- **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
|
|
@@ -104,8 +119,9 @@ scip-query similar <closest-symbol>
|
|
|
104
119
|
# After an extraction or migration: find sites that still contain old logic
|
|
105
120
|
scip-query incomplete-migration
|
|
106
121
|
|
|
107
|
-
# Before declaring the work complete:
|
|
108
|
-
|
|
122
|
+
# Before declaring the work complete: gate the diff. Reindex only when status
|
|
123
|
+
# reports stale and no live watcher or hook refresh is already responsible.
|
|
124
|
+
scip-query diff-gate --json
|
|
109
125
|
```
|
|
110
126
|
|
|
111
127
|
For a repository-wide cleanup pass:
|
|
@@ -243,7 +259,34 @@ scip-query suppress SQABC123DEF456 --check echo --reason "intentional compatibil
|
|
|
243
259
|
|
|
244
260
|
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
261
|
|
|
246
|
-
|
|
262
|
+
The first suppression for an identity is created exclusively. Repeating the
|
|
263
|
+
same decision is idempotent, but a different reason, expiry, check, or file is
|
|
264
|
+
a policy change and never silently overwrites the existing file. The command
|
|
265
|
+
reports the existing SHA-256 revision:
|
|
266
|
+
|
|
267
|
+
```text
|
|
268
|
+
error: A different suppression decision already exists at ...
|
|
269
|
+
Current revision: 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef.
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
After reviewing the committed decision, replace exactly that revision:
|
|
273
|
+
|
|
274
|
+
```bash
|
|
275
|
+
scip-query suppress SQABC123DEF456 --check echo \
|
|
276
|
+
--reason "superseded by a narrower compatibility exception" \
|
|
277
|
+
--replace 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
If another writer changes the record first, the stale replacement is rejected
|
|
281
|
+
and the newer bytes remain intact. New records declare their schema version,
|
|
282
|
+
record kind, stable suppression identity, and writer version. Older
|
|
283
|
+
unversioned and pre-discriminator v1 records remain readable and are upgraded
|
|
284
|
+
only by an explicit replacement. If a malformed or future record cannot be
|
|
285
|
+
used, `diff-gate` reports exact incomplete-coverage counts and keeps findings
|
|
286
|
+
conservatively unsuppressed. The wire schemas and merge rules are documented
|
|
287
|
+
in [`docs/COMMITTED_RECORD_COMPATIBILITY.md`](docs/COMMITTED_RECORD_COMPATIBILITY.md).
|
|
288
|
+
|
|
289
|
+
**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. Historical reconciliation is deliberately incremental: one run replays at most one stored comparison base, reports the exact deferred base and finding counts, and leaves every deferred finding open for a later gate. A suppressed finding was noise or an accepted trade-off:
|
|
247
290
|
|
|
248
291
|
```bash
|
|
249
292
|
scip-query effectiveness --since 30d
|
|
@@ -255,7 +298,28 @@ echo 14 10 2 1 0 1 83% 0.8
|
|
|
255
298
|
new-dead 6 5 0 1 0 0 100% 0.3
|
|
256
299
|
```
|
|
257
300
|
|
|
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
|
|
301
|
+
`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 clean post-commit runs advance through stored bases incrementally. 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.
|
|
302
|
+
|
|
303
|
+
`diff-gate` is also single-flight per project: a second CLI or Stop-hook gate
|
|
304
|
+
returns the live owner's PID and start time instead of duplicating the same
|
|
305
|
+
CPU-heavy work. The gate runs in an owned child process with a 60-second
|
|
306
|
+
deadline, or 180 seconds with `--full`; timeout terminates and reaps that child
|
|
307
|
+
and fails the gate explicitly. Operators may set
|
|
308
|
+
`SCIP_QUERY_DIFF_GATE_TIMEOUT_MS` to a positive millisecond value, capped at
|
|
309
|
+
10 minutes.
|
|
310
|
+
|
|
311
|
+
The health report also keeps a worktree-local repeat counter in `evidence.db`.
|
|
312
|
+
A logical observation is one completed detector evaluation named by an
|
|
313
|
+
observation ID; unlike a process attempt, a retry of that evaluation reuses the
|
|
314
|
+
same ID. SQLite serializes these observations before deriving their
|
|
315
|
+
transitions. Two different IDs that report the same finding therefore add two
|
|
316
|
+
to `timesShown`, while an exact retry with the same ID and evidence adds
|
|
317
|
+
nothing. Reusing an ID for different evidence is rejected and reported. A
|
|
318
|
+
writer-lock timeout skips the local counter update rather than delaying or
|
|
319
|
+
changing the gate decision, and the next distinct run may try again. The
|
|
320
|
+
dedupe records live as long as that rebuildable `evidence.db`; deleting the
|
|
321
|
+
database resets both the counters and their retry memory. These local counters
|
|
322
|
+
feed detector-precision hints, not the committed `effectiveness` totals above.
|
|
259
323
|
|
|
260
324
|
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
325
|
|
|
@@ -312,40 +376,35 @@ Heuristic detectors carry guardrails learned from real codebases: published `pac
|
|
|
312
376
|
|
|
313
377
|
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
378
|
|
|
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.
|
|
379
|
+
| Skill | Essential difference |
|
|
380
|
+
| --------------- | ------------------------------------------------------------------------------ |
|
|
381
|
+
| `scip-query` | Router: select the smallest workflow that answers the request. |
|
|
382
|
+
| `scip-explore` | Understand or diagram existing code without changing it. |
|
|
383
|
+
| `scip-plan` | Prove the blast radius and specify one change or a multi-phase program. |
|
|
384
|
+
| `scip-diagnose` | Trace a failure, recurring design flaw, issue, or unreachable branch to cause. |
|
|
385
|
+
| `scip-audit` | Classify integrity, maintainability, drift, framework, and cleanup evidence. |
|
|
386
|
+
| `scip-improve` | Act on confirmed audit or documentation findings and ratchet the result. |
|
|
387
|
+
| `scip-verify` | Test and challenge a finished change before declaring it complete. |
|
|
388
|
+
| `scip-setup` | Adopt or repair scip-query in a repository. |
|
|
389
|
+
| `_shared` | Manual-only command/evidence reference loaded by another workflow when needed. |
|
|
390
|
+
|
|
391
|
+
The important boundary is read-only versus mutating work: `scip-audit`
|
|
392
|
+
classifies current evidence, while `scip-improve` changes confirmed findings.
|
|
393
|
+
`scip-plan` is prospective evidence before implementation; `scip-verify`
|
|
394
|
+
challenges a concrete finished diff. `scip-explore` explains working behavior;
|
|
395
|
+
`scip-diagnose` starts from a failure or contradiction.
|
|
346
396
|
|
|
347
397
|
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
398
|
|
|
399
|
+
Setup/configuration writers are conflict-aware. They reread the latest file
|
|
400
|
+
under a short token-owned lock, preserve unknown JSON fields and prose outside
|
|
401
|
+
owned Markdown markers, and publish complete bytes durably. An unrelated
|
|
402
|
+
intervening JSON edit is merged; a stale decision about the same project-config
|
|
403
|
+
field, malformed latest JSON, malformed managed markers, or an edit that wins
|
|
404
|
+
the final revision check produces an explicit conflict and leaves the latest
|
|
405
|
+
file untouched. Reload the file and rerun the command after resolving that
|
|
406
|
+
conflict. See [Configuration and setup write safety](docs/CONFIGURATION_WRITE_SAFETY.md).
|
|
407
|
+
|
|
349
408
|
For a project, run `scip-query setup`. It enables demand-started automatic
|
|
350
409
|
indexing unless the project already has an explicit `watch.enabled: false`,
|
|
351
410
|
starts or reuses the project service, verifies its clean-idle deadline, and
|
|
@@ -353,7 +412,8 @@ reports Rust's final durable/worker semantic selection and lifecycle state.
|
|
|
353
412
|
The status read is passive; the setup health audit may make a semantic request
|
|
354
413
|
that wakes rust-analyzer, after which the helper exits on clean idle.
|
|
355
414
|
It also installs/refreshes skills, configures project-local hooks unless
|
|
356
|
-
skipped, checks indexer readiness,
|
|
415
|
+
skipped, checks indexer readiness, performs explicitly approved pinned indexer
|
|
416
|
+
remediation,
|
|
357
417
|
refreshes the index, smoke-tests representative command families, writes
|
|
358
418
|
`docs/scip-query/health-dossier.md` and `.json` when the optional health pass is
|
|
359
419
|
selected, reports the health score and items needing attention, and seeds
|
|
@@ -361,10 +421,12 @@ AGENTS.md/CLAUDE.md guidance. Use
|
|
|
361
421
|
the default terminal checklist to accept or decline the recommended automatic
|
|
362
422
|
indexing action and other project-local changes (`--guided` reopens it
|
|
363
423
|
explicitly). After setup,
|
|
364
|
-
`scip-
|
|
424
|
+
`scip-audit` confirms raw signals and `scip-improve` keeps
|
|
365
425
|
fixing the worst confirmed items until no safe confirmed cleanup remains. Use
|
|
366
426
|
`scip-query setup --git-hook` when you also want a local pre-commit diff gate.
|
|
367
|
-
|
|
427
|
+
Non-interactive setup and ordinary reindex report missing global tools without
|
|
428
|
+
installing them; pass `--install-missing` only when that operation may install
|
|
429
|
+
the reviewed immutable package versions. CI setup is intentionally separate.
|
|
368
430
|
|
|
369
431
|
Setup classifies every change by where its facts belong:
|
|
370
432
|
|
|
@@ -386,7 +448,24 @@ scip-query tla trace-check specs/queue/Queue.tla --trace traces/run1.json # ch
|
|
|
386
448
|
scip-query tla fetch-tools # download the pinned tla2tools.jar into the cache
|
|
387
449
|
```
|
|
388
450
|
|
|
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-
|
|
451
|
+
`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.
|
|
452
|
+
|
|
453
|
+
`tla fetch-tools` allows five minutes and 256 MiB for the pinned download by
|
|
454
|
+
default. It streams bytes through the SHA-256 verifier instead of buffering the
|
|
455
|
+
response, rejects malformed or oversized `Content-Length`, and enforces the
|
|
456
|
+
same ceiling when the header is absent. Callers for one cache path serialize on
|
|
457
|
+
a token-owned lock and recheck the winner's checksum before fetching. Failed,
|
|
458
|
+
aborted, or competing operations remove only their random-token staging file;
|
|
459
|
+
the previously accepted cache remains available. Successful promotion flushes
|
|
460
|
+
the verified file and its containing directory before acknowledging the new
|
|
461
|
+
cache where the platform supports directory sync.
|
|
462
|
+
|
|
463
|
+
File-backed state uses an explicit visibility-versus-crash-durability
|
|
464
|
+
classification. See [Filesystem Publication and Durability](docs/DURABILITY.md)
|
|
465
|
+
for the guarantees, failure outcomes, Windows limitation, and call-site matrix.
|
|
466
|
+
Process coordination uses one versioned, token-owned format with conservative
|
|
467
|
+
malformed-file recovery; see
|
|
468
|
+
[Process Lock Ownership and Recovery](docs/LOCK_PROTOCOL.md).
|
|
390
469
|
|
|
391
470
|
## Quick Start
|
|
392
471
|
|
|
@@ -409,7 +488,18 @@ scip-query health --write-baseline # start the ratchet
|
|
|
409
488
|
- `scip` CLI, from [Sourcegraph SCIP releases](https://github.com/sourcegraph/scip/releases)
|
|
410
489
|
- A language-specific SCIP indexer for your project
|
|
411
490
|
|
|
412
|
-
On Windows, the `scip` binary is installed automatically from npm:
|
|
491
|
+
On Windows, the `scip` binary is installed automatically from npm:
|
|
492
|
+
`scip-query-scip-windows` is an OS-gated optional dependency (universal
|
|
493
|
+
package, x64 + ARM64) that only Windows installs fetch. Resolution order:
|
|
494
|
+
`scip` on PATH, then `SCIP_QUERY_SCIP_BIN`, then the sidecar package. Run
|
|
495
|
+
`scip-query check-deps` for platform-specific install instructions. The
|
|
496
|
+
[Windows sidecar release guide](docs/WINDOWS_SIDECAR_RELEASE.md) defines its
|
|
497
|
+
executable provenance, fail-closed build/pack checks, and registry identity
|
|
498
|
+
gate. Release operators can run `npm run verify:scip-windows-registry` for a
|
|
499
|
+
sidecar-only read, or `npm run release:npm:dry-run` for the complete
|
|
500
|
+
main-plus-sidecar preflight and registry reconciliation without publication.
|
|
501
|
+
The publishing command is `npm run release:npm`; direct `npm publish` refuses
|
|
502
|
+
to run because it cannot own the recoverable two-package ordering.
|
|
413
503
|
|
|
414
504
|
| Language | Indexer | Install |
|
|
415
505
|
| ----------------------------- | ---------------- | ----------------------------------------------------------------------------------------------------------------------------- |
|
|
@@ -429,6 +519,16 @@ For Python, the executable may be `scip-python`, `scip-python-plus`, or both. `s
|
|
|
429
519
|
|
|
430
520
|
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
521
|
|
|
522
|
+
`augment-vue` uses one in-process Volar context by default. Calibrated projects
|
|
523
|
+
can opt into parallel computation with `SCIP_QUERY_AUGMENT_VUE_WORKERS=<count>`.
|
|
524
|
+
The CLI then owns every worker until exit: a timeout or peer failure terminates
|
|
525
|
+
and awaits all unfinished workers before removing their private result
|
|
526
|
+
directory. `SCIP_QUERY_AUGMENT_VUE_WORKER_TIMEOUT_MS` defaults to five minutes,
|
|
527
|
+
and `SCIP_QUERY_AUGMENT_VUE_WORKER_RESULT_MAX_BYTES` defaults to 64 MiB per
|
|
528
|
+
worker. Every result carries its run, worker, and task identities and is
|
|
529
|
+
size-checked before parsing, so a stale, partial, or mismatched result cannot
|
|
530
|
+
enter the deterministic worker-order merge.
|
|
531
|
+
|
|
432
532
|
`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
533
|
|
|
434
534
|
## How It Works
|
|
@@ -439,6 +539,21 @@ Vue single-file components are handled through the JavaScript/TypeScript indexer
|
|
|
439
539
|
|
|
440
540
|
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
541
|
|
|
542
|
+
Each accepted worktree-local index is also stored beneath an immutable
|
|
543
|
+
`.scipquery-generations/<identity>/` directory. An atomic `state.json` pointer
|
|
544
|
+
selects the database, SCIP companion, and metadata as one unit; every
|
|
545
|
+
`ScipDatabase` retains that unit for its lifetime. The familiar top-level
|
|
546
|
+
`index.db`, `index.scip`, and `meta.json` files remain compatibility mirrors,
|
|
547
|
+
but internal queries do not reread them after opening a generation. This keeps
|
|
548
|
+
cursor identities and semantic requests attached to the same rows even during
|
|
549
|
+
a concurrent reindex. The publication, crash, legacy-overlap, and retention
|
|
550
|
+
rules are documented in [Local Index Generations](docs/INDEX_GENERATIONS.md).
|
|
551
|
+
|
|
552
|
+
All `meta.json` consumers share one version decoder and an explicit capability
|
|
553
|
+
matrix. Version 2 remains readable, version 3 is current, and version 4 is a
|
|
554
|
+
reserved unsupported migration boundary. See
|
|
555
|
+
[Reindex Metadata Compatibility](docs/REINDEX_METADATA_COMPATIBILITY.md).
|
|
556
|
+
|
|
442
557
|
Git worktrees in the same repository also share immutable generations under
|
|
443
558
|
`~/.cache/scip-query/repositories/<repository-id>/`. A shared generation is a
|
|
444
559
|
complete index for one exact committed tree, indexing configuration, artifact
|
|
@@ -450,6 +565,15 @@ copy-on-write cloning is used when available, with an ordinary copy fallback;
|
|
|
450
565
|
hard links are never used. Dirty edits, watcher refreshes, locks, and local
|
|
451
566
|
`evidence.db` state therefore remain private to the worktree.
|
|
452
567
|
|
|
568
|
+
Each worktree lease names the exact shared generation protected from
|
|
569
|
+
collection. Lease publication, liveness touches, and repository cleanup share
|
|
570
|
+
one repository-cache lock. A touch rereads the current lease only after
|
|
571
|
+
acquiring that lock, validates its ownership checksum and current local
|
|
572
|
+
generation, and changes only `lastSeenAt`. If a newer generation was attached,
|
|
573
|
+
the lease was deleted or recreated, or its ownership changed while the touch
|
|
574
|
+
waited, the touch preserves that current state instead of replaying its stale
|
|
575
|
+
observation.
|
|
576
|
+
|
|
453
577
|
Automatic refresh follows the same boundary. When `watch.enabled` is true,
|
|
454
578
|
the first watcher-eligible command in each worktree starts or reuses a daemon
|
|
455
579
|
identified by that checkout's Git worktree ID. A Git worktree ID is a checkout
|
|
@@ -472,6 +596,16 @@ shared generation is only a warm starting snapshot; it never implies a shared
|
|
|
472
596
|
watcher or shared later writes. A daemon that exits after its configured idle
|
|
473
597
|
timeout starts warm again when that worktree is next used.
|
|
474
598
|
|
|
599
|
+
Command-triggered refresh intent is stored separately from disposable activity
|
|
600
|
+
timestamps. Each accepted demand is an immutable request with a deadline and
|
|
601
|
+
optional idempotency key; the daemon claims pending requests exclusively,
|
|
602
|
+
coalesces them deliberately, and acknowledges them only after the corresponding
|
|
603
|
+
reindex completes. A failed attempt returns its requests to pending, and a
|
|
604
|
+
successor daemon recovers claims left by a crashed owner. `watch --status`
|
|
605
|
+
reports pending, claimed, completed, and expired counts. The complete
|
|
606
|
+
at-least-once and retention contract is documented in
|
|
607
|
+
[Watch Refresh Requests](docs/WATCH_REFRESH_REQUESTS.md).
|
|
608
|
+
|
|
475
609
|
The primary checkout is only a possible source of a generation, never an
|
|
476
610
|
authority for a linked worktree. If its local cache already contains
|
|
477
611
|
uncommitted changes that are absent from a new worktree's `HEAD`, the full
|
|
@@ -506,6 +640,26 @@ Historical shadow rows are compact calibration summaries. They rotate at
|
|
|
506
640
|
project; the complete latest record remains available for status diagnostics.
|
|
507
641
|
After acquiring a project's exclusive reindex lock, each reindex also removes
|
|
508
642
|
staging directories abandoned by interrupted earlier reindexes.
|
|
643
|
+
Watch and watcher-triggered reindex ownership records include the operating
|
|
644
|
+
system process start identity as well as the PID. `watch stop`, daemon
|
|
645
|
+
replacement, and manual preemption verify both values before signaling. A
|
|
646
|
+
legacy record or a platform lookup failure therefore fails closed with an
|
|
647
|
+
explicit recovery error instead of treating a reused PID as the old
|
|
648
|
+
tool-owned process.
|
|
649
|
+
|
|
650
|
+
Finite subprocesses use explicit wall-time and output budgets. Quick binary
|
|
651
|
+
probes default to 10 seconds, Git operations to 30 seconds, isolated analysis
|
|
652
|
+
workers to 180 seconds, installers and index conversion to 300 seconds, and
|
|
653
|
+
language indexers to 600 seconds. Set `SCIP_QUERY_INDEXER_TIMEOUT_MS` to a
|
|
654
|
+
positive integer to override the indexer deadline. Command-specific checker,
|
|
655
|
+
TLA+, benchmark, and Rust semantic budgets continue to use their documented
|
|
656
|
+
options or environment settings. When an asynchronous finite child exceeds
|
|
657
|
+
its deadline or output budget, scip-query drains both streams, sends `TERM`,
|
|
658
|
+
escalates to `KILL` after a one-second grace period only while the recorded
|
|
659
|
+
process identity still matches, and reports completion only after the child
|
|
660
|
+
has closed. Detached watch and semantic services are deliberate exceptions:
|
|
661
|
+
their persisted identity, lease, request deadlines, and stop protocol own
|
|
662
|
+
their lifetime.
|
|
509
663
|
|
|
510
664
|
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
665
|
Use `indexer.typescript.pnpmWorkspaces` only with the default single-project mode; workspace mode passes explicit projects instead.
|
|
@@ -520,6 +674,8 @@ Clojure projects can pass a project-local `scip-clojure` config file through `.s
|
|
|
520
674
|
|
|
521
675
|
```json
|
|
522
676
|
{
|
|
677
|
+
"$schema": "./node_modules/scip-query/docs/schemas/project-config.schema.json",
|
|
678
|
+
"schemaVersion": 2,
|
|
523
679
|
"languages": ["clojure"],
|
|
524
680
|
"indexer": {
|
|
525
681
|
"clojure": {
|
|
@@ -547,6 +703,8 @@ It creates a minimal `.scipquery.json`:
|
|
|
547
703
|
|
|
548
704
|
```json
|
|
549
705
|
{
|
|
706
|
+
"$schema": "./node_modules/scip-query/docs/schemas/project-config.schema.json",
|
|
707
|
+
"schemaVersion": 2,
|
|
550
708
|
"languages": ["typescript"],
|
|
551
709
|
"watch": {
|
|
552
710
|
"enabled": true,
|
|
@@ -559,6 +717,17 @@ It creates a minimal `.scipquery.json`:
|
|
|
559
717
|
}
|
|
560
718
|
```
|
|
561
719
|
|
|
720
|
+
`schemaVersion` identifies the meaning of the persisted fields. Version 2 is
|
|
721
|
+
the current format. The CLI reads both unversioned/explicit-v1 legacy files
|
|
722
|
+
and version 2. A setup command migrates a legacy file on its next authorized
|
|
723
|
+
config write, preserving fields it does not own. An unsupported future
|
|
724
|
+
version or malformed discriminator fails before any option is used and is
|
|
725
|
+
left byte-for-byte unchanged. `$schema` points editors at the JSON Schema
|
|
726
|
+
bundled with the installed package.
|
|
727
|
+
|
|
728
|
+
Creation is exclusive: if another process creates `.scipquery.json` first,
|
|
729
|
+
`init` preserves that complete file rather than replacing it.
|
|
730
|
+
|
|
562
731
|
Add optional fields such as `indexerConcurrency`, `indexer`, `entryRoots`,
|
|
563
732
|
`declaredCouplings`, and `suppressions` only when the project needs them.
|
|
564
733
|
|
|
@@ -571,18 +740,47 @@ background service. Relevant file/Git activity keeps it alive; it exits after
|
|
|
571
740
|
timeout to `0` to keep it running. `scip-query watch` still provides foreground
|
|
572
741
|
mode, while `watch --daemon`, `watch --status`, and `watch --stop` expose the
|
|
573
742
|
background lifecycle. Both modes share one project lock, so only one can own an
|
|
574
|
-
index cache.
|
|
743
|
+
index cache. Stopping is an asynchronous drain: the watcher first rejects new
|
|
744
|
+
refreshes, continuously consumes a bounded tail of the active worker's output,
|
|
745
|
+
closes every source subscription, and waits for the worker to exit after
|
|
746
|
+
`TERM`/`KILL` escalation before it removes service state or releases the lock.
|
|
747
|
+
`watch --status` reports `Stopping safely` while that work is in progress. If a
|
|
748
|
+
subscription cannot close or worker exit cannot be established, the service
|
|
749
|
+
keeps an explicit degraded draining record and its ownership files instead of
|
|
750
|
+
advertising a clean stop; the reported reason is the recovery evidence.
|
|
751
|
+
Elapsed waits and idle control use a process-local monotonic clock; shared
|
|
752
|
+
heartbeats remain civil-time diagnostics and never authorize replacement or a
|
|
753
|
+
process signal by age alone. See [Time Semantics](docs/TIME_SEMANTICS.md).
|
|
575
754
|
|
|
576
755
|
The same demand-started service lazily owns TypeScript compiler Projects after
|
|
577
756
|
the first command that needs ts-morph semantics. Separate CLI processes reuse
|
|
578
|
-
that session through a repository-local
|
|
757
|
+
that session through a repository-local bounded mailbox; source-only index
|
|
579
758
|
generations refresh the existing Projects, while configuration or uncertain
|
|
580
759
|
changes replace them. `watch --status` reports Project/session/request counts.
|
|
760
|
+
Current TypeScript and durable Rust mailbox operations use stable
|
|
761
|
+
content-derived identities, pending/inflight/response states, atomic
|
|
762
|
+
owner-expiring claims, retained idempotent completions, FIFO enqueue ordering,
|
|
763
|
+
typed item/byte backpressure, bounded cleanup, and pressure telemetry. Client
|
|
764
|
+
timeout or exit no longer deletes shared work; a service crash before response
|
|
765
|
+
is reclaimable, while a response published before a crash prevents
|
|
766
|
+
re-execution. The precise state machine, default limits, legacy overlap, and
|
|
767
|
+
failure matrix are documented in
|
|
768
|
+
[`docs/MAILBOX_LIFECYCLE.md`](docs/MAILBOX_LIFECYCLE.md).
|
|
769
|
+
Rust v3 additionally binds every accepted response to its request ID,
|
|
770
|
+
operation ID, mailbox-session identity, and authoritative absolute deadline;
|
|
771
|
+
its old/current/future compatibility matrix is in
|
|
772
|
+
[`docs/RUST_DURABLE_SESSION_PROTOCOL.md`](docs/RUST_DURABLE_SESSION_PROTOCOL.md).
|
|
581
773
|
It also reports a rolling 24-hour reindex activity summary: rebuilt, reused,
|
|
582
774
|
failed, and freshness-proven suppressed refreshes plus estimated logical output
|
|
583
775
|
bytes. The estimate counts scip-query artifacts emitted by rebuilt refreshes;
|
|
584
776
|
it is not a measurement of physical SSD writes. The underlying
|
|
585
|
-
`reindex-activity.jsonl` history uses two bounded 1 MiB segments.
|
|
777
|
+
`reindex-activity.jsonl` history uses two bounded 1 MiB segments. Append,
|
|
778
|
+
rotation, and retained-set reads share a process-instance lock; incomplete
|
|
779
|
+
crash tails are trimmed or ignored without deleting earlier complete lines.
|
|
780
|
+
These observations are process-visible rather than crash-durable. See
|
|
781
|
+
[`docs/TELEMETRY_RETENTION.md`](docs/TELEMETRY_RETENTION.md).
|
|
782
|
+
The refresh-request counters reported beside it describe durable demand
|
|
783
|
+
admission and processing state, not reindex frequency.
|
|
586
784
|
If the service is stopped, incompatible, busy beyond its bound, or returns an
|
|
587
785
|
invalid response, the command falls back to the existing in-process ts-morph
|
|
588
786
|
provider.
|
|
@@ -592,6 +790,12 @@ session by default. It remains stopped until a Rust semantic request needs it,
|
|
|
592
790
|
exits after its clean idle period, and automatically falls back to the
|
|
593
791
|
per-command worker on helper/readiness/timeout/request failure. Set
|
|
594
792
|
`SCIP_RUST_SEMANTIC_DURABLE_SESSION=0` for an explicit worker-only opt-out.
|
|
793
|
+
The LSP transport accepts at most a 16 KiB response header and a 64 MiB JSON
|
|
794
|
+
message by default, with a 64 KiB header ceiling and a 256 MiB combined
|
|
795
|
+
wire-buffer ceiling even for programmatic overrides. Missing, invalid,
|
|
796
|
+
duplicate, unsafe, or oversized `Content-Length` framing kills that transport
|
|
797
|
+
once, clears its retained bytes, and fails all outstanding semantic/readiness
|
|
798
|
+
work so the normal worker or graph/source fallback can take over.
|
|
595
799
|
|
|
596
800
|
Use `declaredCouplings` for files that intentionally form one maintenance unit.
|
|
597
801
|
These pairs are treated as structurally linked by `co-change` and health, while
|
|
@@ -639,6 +843,8 @@ Query results are filtered through the project's `.gitignore`. If none exists, c
|
|
|
639
843
|
- [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
844
|
- [Agent Guide](docs/AGENT_GUIDE.md): goal-oriented workflows for tracing, planning, cleanup, quality checks, and change verification.
|
|
641
845
|
- [Command Reference](docs/COMMAND_REFERENCE.md): generated command syntax, descriptions, and options.
|
|
846
|
+
- [CLI JSON output contract](docs/CLI_JSON_OUTPUT.md): versioned envelopes, compatibility rules, and schema.
|
|
847
|
+
- [Security model](docs/SECURITY_MODEL.md): untrusted-checkout boundaries, authority flags, input budgets, and complete-output pagination.
|
|
642
848
|
- [Programmatic API](docs/API.md): using the query functions from TypeScript.
|
|
643
849
|
- [Historical plans](https://github.com/PlunderStruck/scip-query/tree/main/docs/plans): implementation notes and completed cleanup plans.
|
|
644
850
|
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{c as t}from"./chunk-
|
|
1
|
+
import{c as t}from"./chunk-3ZSJ3PWF.js";import"./chunk-IF6FP6B2.js";import"./chunk-C5Q44Q5D.js";import"./chunk-46XGSFNI.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
|