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.
Files changed (400) hide show
  1. package/CHANGELOG.md +75 -1
  2. package/README.md +242 -49
  3. package/dist/augment-vue-worker.js +1 -1
  4. package/dist/{chunk-2YU7I3QO.js → chunk-24QNP7MN.js} +2 -2
  5. package/dist/{chunk-CNKAGUPL.js → chunk-26X7KCJR.js} +2 -2
  6. package/dist/{chunk-GPBBJ5Y4.js → chunk-273W2U4Y.js} +3 -3
  7. package/dist/{chunk-7GXM52MI.js → chunk-2CVXCGL4.js} +2 -2
  8. package/dist/{chunk-ABMYA4TN.js → chunk-2EZSOTSY.js} +2 -2
  9. package/dist/{chunk-HKEHS2AS.js → chunk-2GSQR6YA.js} +2 -2
  10. package/dist/{chunk-FECYOO5O.js → chunk-2OXVAGGT.js} +2 -2
  11. package/dist/chunk-2ZOCHAL2.js +8 -0
  12. package/dist/{chunk-QGXBRIM5.js → chunk-336DC5NJ.js} +2 -2
  13. package/dist/chunk-35SQLYCQ.js +2 -0
  14. package/dist/{chunk-VXQNNXJE.js → chunk-3OIKRYU5.js} +2 -2
  15. package/dist/{chunk-52ZYCAEO.js → chunk-47X75ZKH.js} +2 -2
  16. package/dist/{chunk-NPKYOIFM.js → chunk-4CGVLUDP.js} +2 -2
  17. package/dist/chunk-4RI4BJGT.js +8 -0
  18. package/dist/{chunk-P2PC2WGR.js → chunk-52HQTTPB.js} +2 -2
  19. package/dist/{chunk-YNRNA5LK.js → chunk-5OC3HWP5.js} +2 -2
  20. package/dist/{chunk-STOL2BTL.js → chunk-6XFC7PQ5.js} +2 -2
  21. package/dist/{chunk-J77UIT3I.js → chunk-6XHTISLI.js} +2 -2
  22. package/dist/chunk-6YTSKJJ3.js +2 -0
  23. package/dist/{chunk-BTEE5NZQ.js → chunk-7E3TH5ZN.js} +2 -2
  24. package/dist/{chunk-X6D5IC6I.js → chunk-7LABSJSR.js} +2 -2
  25. package/dist/chunk-7Q6VYYCH.js +2 -0
  26. package/dist/{chunk-FWUUZTIO.js → chunk-A43URCQ3.js} +2 -2
  27. package/dist/chunk-A63U2W3P.js +3 -0
  28. package/dist/{chunk-3MJ5YA4Y.js → chunk-ADFSIJP2.js} +2 -2
  29. package/dist/chunk-AOLE4DYM.js +6 -0
  30. package/dist/chunk-APMMR5Y2.js +2 -0
  31. package/dist/chunk-B5MHCHP3.js +107 -0
  32. package/dist/{chunk-4RSI5EMG.js → chunk-CSTYYXKC.js} +2 -2
  33. package/dist/{chunk-25LPM4DG.js → chunk-CYJM7CYF.js} +2 -2
  34. package/dist/{chunk-S44IULR6.js → chunk-DD5BOU5I.js} +2 -2
  35. package/dist/{chunk-YGAGTIDK.js → chunk-DGMCFMPG.js} +7 -7
  36. package/dist/{chunk-UOAV44HR.js → chunk-E2ZXPB7J.js} +2 -2
  37. package/dist/{chunk-IZKFSVBV.js → chunk-EVOC5I5I.js} +2 -2
  38. package/dist/{chunk-XTX6QHOF.js → chunk-F42A3AKG.js} +2 -2
  39. package/dist/{chunk-Q4IIEGXJ.js → chunk-FHCTEANE.js} +2 -2
  40. package/dist/{chunk-3SVWW4PN.js → chunk-FKGN4A4E.js} +2 -2
  41. package/dist/{chunk-IG7N5ZIK.js → chunk-FQTPPXNA.js} +2 -2
  42. package/dist/{chunk-F6O7AAC3.js → chunk-G4UQL4CP.js} +2 -2
  43. package/dist/chunk-GA64UPMI.js +6 -0
  44. package/dist/{chunk-ZXJYMGD3.js → chunk-GK3GRUJX.js} +2 -2
  45. package/dist/chunk-HEBAY673.js +2 -0
  46. package/dist/chunk-HELS7KFF.js +2 -0
  47. package/dist/{chunk-B5NLK2B3.js → chunk-IPDCSB6N.js} +2 -2
  48. package/dist/{chunk-M7MTH5NR.js → chunk-IYAOX36F.js} +2 -2
  49. package/dist/{chunk-YVVCVR2L.js → chunk-J7VT2CRB.js} +2 -2
  50. package/dist/{chunk-4333ETTV.js → chunk-JELJLXEE.js} +2 -2
  51. package/dist/{chunk-LBMJEAEW.js → chunk-JERWGHQT.js} +2 -2
  52. package/dist/chunk-JJJCO4QC.js +945 -0
  53. package/dist/{chunk-6E7UTQY7.js → chunk-JZNLMHWY.js} +2 -2
  54. package/dist/{chunk-R4FQGQ4X.js → chunk-K42M2KWT.js} +2 -2
  55. package/dist/{chunk-H7UKLTWJ.js → chunk-KLVJABXA.js} +2 -2
  56. package/dist/chunk-KP4KBDVF.js +3 -0
  57. package/dist/{chunk-RV2FQIX3.js → chunk-LMFVTUW2.js} +2 -2
  58. package/dist/chunk-LRTP3DKL.js +3 -0
  59. package/dist/{chunk-U6WNH5GC.js → chunk-MGBJHRFB.js} +2 -2
  60. package/dist/{chunk-QDV6RDCP.js → chunk-MLGTCX56.js} +2 -2
  61. package/dist/{chunk-54HA4ZXH.js → chunk-N3SE646F.js} +2 -2
  62. package/dist/{chunk-KP6XRY5Z.js → chunk-NBRUH7OE.js} +2 -2
  63. package/dist/{chunk-M7AIS73L.js → chunk-NN4ZIRPK.js} +2 -2
  64. package/dist/{chunk-I5RJM53C.js → chunk-NQLSSVOB.js} +2 -2
  65. package/dist/{chunk-4SALD7RU.js → chunk-OBKDTVZ3.js} +2 -2
  66. package/dist/{chunk-GBQ5NYPR.js → chunk-OHWZKLVA.js} +6 -6
  67. package/dist/{chunk-6NSFJYRC.js → chunk-OP3MTFJR.js} +2 -2
  68. package/dist/{chunk-EOOJGLDU.js → chunk-OQ2A4G2G.js} +2 -2
  69. package/dist/{chunk-DLWR3NUU.js → chunk-P6HBYNBE.js} +2 -2
  70. package/dist/{chunk-QVWS2VWZ.js → chunk-PC44K7RF.js} +2 -2
  71. package/dist/{chunk-A2EZV2UM.js → chunk-QBYYWGAT.js} +2 -2
  72. package/dist/{chunk-QRGV2F7L.js → chunk-QHKUY4FW.js} +2 -2
  73. package/dist/chunk-QHRL4LKM.js +2 -0
  74. package/dist/{chunk-I5AWSI2G.js → chunk-QQWOFXNW.js} +2 -2
  75. package/dist/{chunk-WQTAC523.js → chunk-RBFFD4V2.js} +2 -2
  76. package/dist/{chunk-SOAT6NLA.js → chunk-RJHCPSZ7.js} +2 -2
  77. package/dist/{chunk-VGRICIQI.js → chunk-RWRLUZ6U.js} +2 -2
  78. package/dist/{chunk-4T3LTWUS.js → chunk-S2GP3CU3.js} +2 -2
  79. package/dist/{chunk-HEXVUYFQ.js → chunk-SHKZ7OVJ.js} +2 -2
  80. package/dist/{chunk-NSS46APD.js → chunk-TFUU5MQQ.js} +2 -2
  81. package/dist/{chunk-IUFDSKGG.js → chunk-TYQ76QHQ.js} +2 -2
  82. package/dist/{chunk-NRCXJDHL.js → chunk-U5CNPPTZ.js} +2 -2
  83. package/dist/{chunk-MITTUCEH.js → chunk-UQK5CRUK.js} +2 -2
  84. package/dist/{chunk-XLTP42QA.js → chunk-UUJBLG6J.js} +2 -2
  85. package/dist/chunk-UXP636P5.js +144 -0
  86. package/dist/{chunk-64RFXJT5.js → chunk-VEVBIAOJ.js} +6 -6
  87. package/dist/chunk-VKRQDBW5.js +9 -0
  88. package/dist/{chunk-C7NIYIQ4.js → chunk-VOQFGC2W.js} +4 -4
  89. package/dist/{chunk-DZ74OMG6.js → chunk-VP542C25.js} +2 -2
  90. package/dist/{chunk-Q3AFUTGB.js → chunk-WMXRRBII.js} +2 -2
  91. package/dist/{chunk-ZGZUZ7XE.js → chunk-WXAAURU7.js} +2 -2
  92. package/dist/chunk-X3NLZHPA.js +20 -0
  93. package/dist/{chunk-WER3B7MI.js → chunk-XF3KLXN3.js} +2 -2
  94. package/dist/{chunk-NH5ALKPW.js → chunk-XVJ3V7LM.js} +2 -2
  95. package/dist/{chunk-4XTA5OMB.js → chunk-YGQN3XGZ.js} +2 -2
  96. package/dist/{chunk-CFMXJPHH.js → chunk-YHXBD52M.js} +2 -2
  97. package/dist/{chunk-7B3UPBVA.js → chunk-YLVE3SXZ.js} +2 -2
  98. package/dist/{chunk-YIJ7ZAA4.js → chunk-YTUD45PU.js} +2 -2
  99. package/dist/{chunk-VTKGCT3V.js → chunk-YWB2EBNB.js} +2 -2
  100. package/dist/{chunk-UKZBVX4U.js → chunk-Z2LHPIOM.js} +2 -2
  101. package/dist/chunk-Z5QQPJ3U.js +30 -0
  102. package/dist/{chunk-NZL2DBT7.js → chunk-ZLJLE6LK.js} +2 -2
  103. package/dist/{chunk-XYADIZHU.js → chunk-ZTTISZ7J.js} +2 -2
  104. package/dist/cli.js +3 -3
  105. package/dist/command-descriptors-SJDZ7QGR.js +617 -0
  106. package/dist/{config-types-D20KuvvZ.d.ts → config-types-BWQ5xPGI.d.ts} +4 -0
  107. package/dist/{db-G_II8yXU.d.ts → db-B0r1o7Vt.d.ts} +18 -1
  108. package/dist/direct-navigation-HTKOZEOM.js +3 -0
  109. package/dist/{health-oblXYgkF.d.ts → health-CFnlCiTz.d.ts} +1 -1
  110. package/dist/index.d.ts +2 -2
  111. package/dist/index.js +1 -1
  112. package/dist/postinstall.js +1 -1
  113. package/dist/queries/affected.d.ts +2 -2
  114. package/dist/queries/affected.js +1 -1
  115. package/dist/queries/architecture.d.ts +2 -2
  116. package/dist/queries/architecture.js +1 -1
  117. package/dist/queries/bottlenecks.d.ts +2 -2
  118. package/dist/queries/bottlenecks.js +1 -1
  119. package/dist/queries/by-kind.d.ts +2 -2
  120. package/dist/queries/by-kind.js +1 -1
  121. package/dist/queries/call-graph.d.ts +2 -2
  122. package/dist/queries/call-graph.js +1 -1
  123. package/dist/queries/change-surface.d.ts +2 -2
  124. package/dist/queries/change-surface.js +1 -1
  125. package/dist/queries/cleanup-plan.d.ts +2 -2
  126. package/dist/queries/cleanup-plan.js +1 -1
  127. package/dist/queries/co-change.d.ts +2 -2
  128. package/dist/queries/co-change.js +1 -1
  129. package/dist/queries/code.d.ts +2 -2
  130. package/dist/queries/code.js +1 -1
  131. package/dist/queries/complexity-hotspots.d.ts +2 -2
  132. package/dist/queries/complexity-hotspots.js +1 -1
  133. package/dist/queries/complexity.d.ts +2 -2
  134. package/dist/queries/complexity.js +1 -1
  135. package/dist/queries/convergence.d.ts +2 -2
  136. package/dist/queries/convergence.js +1 -1
  137. package/dist/queries/coupling.d.ts +2 -2
  138. package/dist/queries/coupling.js +1 -1
  139. package/dist/queries/cycles.d.ts +2 -2
  140. package/dist/queries/cycles.js +1 -1
  141. package/dist/queries/dataflow.d.ts +2 -2
  142. package/dist/queries/dataflow.js +1 -1
  143. package/dist/queries/dead.d.ts +2 -2
  144. package/dist/queries/dead.js +1 -1
  145. package/dist/queries/decorative-checkers.d.ts +3 -3
  146. package/dist/queries/decorative-checkers.js +1 -1
  147. package/dist/queries/deep-chains.d.ts +2 -2
  148. package/dist/queries/deep-chains.js +1 -1
  149. package/dist/queries/deps.d.ts +2 -2
  150. package/dist/queries/deps.js +1 -1
  151. package/dist/queries/diff-gate.d.ts +30 -2
  152. package/dist/queries/diff-gate.js +1 -1
  153. package/dist/queries/diff-impact.d.ts +2 -2
  154. package/dist/queries/diff-impact.js +1 -1
  155. package/dist/queries/doc-drift.d.ts +2 -2
  156. package/dist/queries/doc-drift.js +1 -1
  157. package/dist/queries/drift.d.ts +2 -2
  158. package/dist/queries/drift.js +1 -1
  159. package/dist/queries/duplicate-bodies.d.ts +2 -2
  160. package/dist/queries/duplicate-bodies.js +1 -1
  161. package/dist/queries/extract-candidates.d.ts +2 -2
  162. package/dist/queries/extract-candidates.js +1 -1
  163. package/dist/queries/fan.d.ts +2 -2
  164. package/dist/queries/fan.js +1 -1
  165. package/dist/queries/files.d.ts +2 -2
  166. package/dist/queries/health.d.ts +3 -3
  167. package/dist/queries/health.js +1 -1
  168. package/dist/queries/hierarchy.d.ts +2 -2
  169. package/dist/queries/hierarchy.js +1 -1
  170. package/dist/queries/hotspots.d.ts +2 -2
  171. package/dist/queries/hotspots.js +1 -1
  172. package/dist/queries/imports.d.ts +2 -2
  173. package/dist/queries/imports.js +1 -1
  174. package/dist/queries/incomplete-migration.d.ts +2 -2
  175. package/dist/queries/incomplete-migration.js +1 -1
  176. package/dist/queries/index.d.ts +17 -3
  177. package/dist/queries/index.js +1 -1
  178. package/dist/queries/isolated.d.ts +2 -2
  179. package/dist/queries/isolated.js +1 -1
  180. package/dist/queries/locality-candidates.d.ts +2 -2
  181. package/dist/queries/locality-candidates.js +1 -1
  182. package/dist/queries/members.d.ts +2 -2
  183. package/dist/queries/members.js +1 -1
  184. package/dist/queries/methods.d.ts +2 -2
  185. package/dist/queries/methods.js +1 -1
  186. package/dist/queries/not-implemented.d.ts +3 -3
  187. package/dist/queries/not-implemented.js +1 -1
  188. package/dist/queries/outline.d.ts +2 -2
  189. package/dist/queries/outline.js +1 -1
  190. package/dist/queries/passthrough-candidates.d.ts +2 -2
  191. package/dist/queries/passthrough-candidates.js +1 -1
  192. package/dist/queries/plan-context.d.ts +2 -2
  193. package/dist/queries/plan-context.js +1 -1
  194. package/dist/queries/react-component-duplicates.d.ts +2 -2
  195. package/dist/queries/react-component-duplicates.js +1 -1
  196. package/dist/queries/react-hook-candidates.d.ts +2 -2
  197. package/dist/queries/react-hook-candidates.js +1 -1
  198. package/dist/queries/react-large-component-pressure.d.ts +2 -2
  199. package/dist/queries/react-large-component-pressure.js +1 -1
  200. package/dist/queries/recent-duplicates.d.ts +2 -2
  201. package/dist/queries/recent-duplicates.js +1 -1
  202. package/dist/queries/redundant-reexports.d.ts +2 -2
  203. package/dist/queries/redundant-reexports.js +1 -1
  204. package/dist/queries/refs.d.ts +2 -2
  205. package/dist/queries/refs.js +1 -1
  206. package/dist/queries/self-audit.d.ts +2 -2
  207. package/dist/queries/self-audit.js +1 -1
  208. package/dist/queries/similar-chains.d.ts +2 -2
  209. package/dist/queries/similar-chains.js +1 -1
  210. package/dist/queries/similar-files.d.ts +2 -2
  211. package/dist/queries/similar-files.js +1 -1
  212. package/dist/queries/similar-signatures.d.ts +2 -2
  213. package/dist/queries/similar-signatures.js +1 -1
  214. package/dist/queries/similar.d.ts +2 -2
  215. package/dist/queries/similar.js +1 -1
  216. package/dist/queries/slice.d.ts +2 -2
  217. package/dist/queries/slice.js +1 -1
  218. package/dist/queries/stale-abstractions.d.ts +2 -2
  219. package/dist/queries/stale-abstractions.js +1 -1
  220. package/dist/queries/stats.d.ts +2 -2
  221. package/dist/queries/stats.js +1 -1
  222. package/dist/queries/surface.d.ts +2 -2
  223. package/dist/queries/surface.js +1 -1
  224. package/dist/queries/symbols.d.ts +2 -2
  225. package/dist/queries/symbols.js +1 -1
  226. package/dist/queries/system.d.ts +2 -2
  227. package/dist/queries/system.js +1 -1
  228. package/dist/queries/test-quality.d.ts +2 -2
  229. package/dist/queries/test-quality.js +1 -1
  230. package/dist/queries/trace.d.ts +2 -2
  231. package/dist/queries/trace.js +1 -1
  232. package/dist/queries/twin-ab.d.ts +3 -3
  233. package/dist/queries/twin-ab.js +1 -1
  234. package/dist/queries/twin-drift.d.ts +2 -2
  235. package/dist/queries/twin-drift.js +1 -1
  236. package/dist/queries/unused-imports.d.ts +2 -2
  237. package/dist/queries/unused-imports.js +1 -1
  238. package/dist/queries/unused-params.d.ts +2 -2
  239. package/dist/queries/unused-params.js +1 -1
  240. package/dist/queries/vue-component-duplicates.d.ts +2 -2
  241. package/dist/queries/vue-component-duplicates.js +1 -1
  242. package/dist/queries/vue-composable-candidates.d.ts +2 -2
  243. package/dist/queries/vue-composable-candidates.js +1 -1
  244. package/dist/queries/vue-large-view-pressure.d.ts +2 -2
  245. package/dist/queries/vue-large-view-pressure.js +1 -1
  246. package/dist/queries/wrapper-candidates.d.ts +2 -2
  247. package/dist/queries/wrapper-candidates.js +1 -1
  248. package/dist/reindex-worker.js +23 -24
  249. package/dist/reindex.d.ts +10 -4
  250. package/dist/reindex.js +33 -38
  251. package/dist/runtime.d.ts +167 -11
  252. package/dist/runtime.js +3 -2
  253. package/dist/rust-semantic-session-server.js +1 -1
  254. package/dist/rust-semantic-session-worker.js +1 -1
  255. package/dist/rust-semantic-worker.js +1 -1
  256. package/dist/{scip-cli-kRpaexVJ.d.ts → scip-cli-DCvnlZCu.d.ts} +5 -1
  257. package/dist/watch-server.js +5 -5
  258. package/docs/AGENT_GUIDE.md +1 -1
  259. package/docs/AI_FAILURE_MODES.md +18 -18
  260. package/docs/API_EVOLUTION.md +71 -0
  261. package/docs/CLI_JSON_OUTPUT.md +83 -0
  262. package/docs/COMMAND_REFERENCE.md +10 -8
  263. package/docs/COMMITTED_RECORD_COMPATIBILITY.md +117 -0
  264. package/docs/CONFIGURATION_WRITE_SAFETY.md +130 -0
  265. package/docs/DETECTOR_GUIDE.md +47 -47
  266. package/docs/DURABILITY.md +103 -0
  267. package/docs/INDEX_GENERATIONS.md +121 -0
  268. package/docs/LOCK_PROTOCOL.md +133 -0
  269. package/docs/MAILBOX_LIFECYCLE.md +197 -0
  270. package/docs/REINDEX_METADATA_COMPATIBILITY.md +84 -0
  271. package/docs/RUST_DURABLE_SESSION_PROTOCOL.md +126 -0
  272. package/docs/TELEMETRY_RETENTION.md +72 -0
  273. package/docs/TIME_SEMANTICS.md +77 -0
  274. package/docs/WATCH_REFRESH_REQUESTS.md +110 -0
  275. package/docs/WINDOWS_SIDECAR_RELEASE.md +298 -0
  276. package/docs/analyzer-validation-ledger.md +24 -23
  277. package/docs/schemas/cli-json-envelope.schema.json +53 -0
  278. package/docs/schemas/npm-release-state.schema.json +146 -0
  279. package/docs/schemas/outcome-event-record.schema.json +39 -0
  280. package/docs/schemas/project-config.schema.json +247 -0
  281. package/docs/schemas/suppression-record.schema.json +31 -0
  282. package/docs/schemas/windows-sidecar-provenance.schema.json +137 -0
  283. package/package.json +15 -5
  284. package/scripts/build-scip-windows.mjs +180 -61
  285. package/scripts/scip-windows-provenance.mjs +364 -0
  286. package/scripts/verify-scip-windows.mjs +29 -0
  287. package/skills/_shared/SKILL.md +91 -242
  288. package/skills/_shared/agents/openai.yaml +1 -1
  289. package/skills/_shared/references/agent-contract-catalog.md +105 -0
  290. package/skills/_shared/references/command-catalog.md +118 -0
  291. package/skills/_shared/references/detector-precision-and-diffgate.md +59 -0
  292. package/skills/_shared/references/evidence-and-dead-code.md +25 -0
  293. package/skills/scip-audit/SKILL.md +76 -0
  294. package/skills/scip-audit/agents/openai.yaml +4 -0
  295. package/skills/scip-audit/references/claims.md +98 -0
  296. package/skills/scip-audit/references/cleanup.md +101 -0
  297. package/skills/scip-audit/references/directory.md +222 -0
  298. package/skills/scip-audit/references/frontend.md +130 -0
  299. package/skills/scip-audit/references/integrity.md +154 -0
  300. package/skills/scip-audit/references/maintainability.md +162 -0
  301. package/skills/scip-audit/references/twin-drift.md +104 -0
  302. package/skills/scip-diagnose/SKILL.md +52 -0
  303. package/skills/scip-diagnose/agents/openai.yaml +4 -0
  304. package/skills/scip-diagnose/references/debug.md +117 -0
  305. package/skills/{scip-probe-reachability/SKILL.md → scip-diagnose/references/probe-reachability.md} +12 -27
  306. package/skills/scip-diagnose/references/root-cause.md +145 -0
  307. package/skills/scip-diagnose/references/triage.md +119 -0
  308. package/skills/scip-explore/SKILL.md +53 -84
  309. package/skills/scip-explore/agents/openai.yaml +2 -2
  310. package/skills/scip-explore/references/diagrams.md +40 -0
  311. package/skills/scip-explore/references/language-playbook.md +49 -0
  312. package/skills/scip-improve/SKILL.md +56 -0
  313. package/skills/scip-improve/agents/openai.yaml +4 -0
  314. package/skills/scip-improve/references/cleanup-batches.md +53 -0
  315. package/skills/scip-improve/references/directory-moves.md +53 -0
  316. package/skills/scip-improve/references/doc-reconcile.md +30 -0
  317. package/skills/scip-improve/references/frontend-extraction.md +39 -0
  318. package/skills/scip-improve/references/maintainability-mechanism.md +43 -0
  319. package/skills/scip-improve/references/twin-drift.md +35 -0
  320. package/skills/scip-plan/SKILL.md +68 -0
  321. package/skills/scip-plan/agents/openai.yaml +4 -0
  322. package/skills/scip-plan/references/api-impact.md +19 -0
  323. package/skills/scip-plan/references/conductor.md +41 -0
  324. package/skills/scip-plan/references/high-assurance.md +43 -0
  325. package/skills/scip-plan/references/hyper-optimization.md +50 -0
  326. package/skills/scip-plan/references/tla-model.md +88 -0
  327. package/skills/scip-query/SKILL.md +52 -97
  328. package/skills/scip-query/agents/openai.yaml +2 -2
  329. package/skills/scip-setup/SKILL.md +65 -176
  330. package/skills/scip-setup/agents/openai.yaml +3 -3
  331. package/skills/scip-setup/references/bootstrap-workflow.md +120 -0
  332. package/skills/scip-setup/references/language-verification.md +61 -0
  333. package/skills/scip-setup/references/lifecycle-commands.md +119 -0
  334. package/skills/scip-setup/references/per-repo-triage.md +24 -0
  335. package/skills/scip-verify/SKILL.md +123 -70
  336. package/skills/scip-verify/agents/openai.yaml +2 -2
  337. package/skills/scip-verify/references/calibrate-detectors.md +170 -0
  338. package/dist/chunk-2CTX5CMX.js +0 -4
  339. package/dist/chunk-2Y373BDD.js +0 -2
  340. package/dist/chunk-C2QSK7E7.js +0 -2
  341. package/dist/chunk-D4U5Q3FT.js +0 -7
  342. package/dist/chunk-K2ERX4UT.js +0 -3
  343. package/dist/chunk-KHE7J5ZN.js +0 -3
  344. package/dist/chunk-L7SPDE73.js +0 -84
  345. package/dist/chunk-LHMNRHGV.js +0 -3
  346. package/dist/chunk-LM72NQ7T.js +0 -3
  347. package/dist/chunk-MSWVMDAH.js +0 -122
  348. package/dist/chunk-NH7WNNQC.js +0 -20
  349. package/dist/chunk-OMPZHGHO.js +0 -2
  350. package/dist/chunk-SVLTAG5O.js +0 -927
  351. package/dist/chunk-U7DSEKOM.js +0 -30
  352. package/dist/chunk-V27BEQJN.js +0 -7
  353. package/dist/chunk-VMNZB6WI.js +0 -4
  354. package/dist/chunk-XBN5VO53.js +0 -2
  355. package/dist/chunk-ZAIILQNP.js +0 -5
  356. package/dist/command-descriptors-MFU4BCJ7.js +0 -612
  357. package/dist/direct-navigation-MRMQFIRB.js +0 -3
  358. package/skills/scip-api-impact/SKILL.md +0 -139
  359. package/skills/scip-api-impact/agents/openai.yaml +0 -4
  360. package/skills/scip-calibrate/SKILL.md +0 -131
  361. package/skills/scip-calibrate/agents/openai.yaml +0 -4
  362. package/skills/scip-claim-audit/SKILL.md +0 -106
  363. package/skills/scip-claim-audit/agents/openai.yaml +0 -4
  364. package/skills/scip-cleanup-audit/SKILL.md +0 -126
  365. package/skills/scip-cleanup-audit/agents/openai.yaml +0 -4
  366. package/skills/scip-cleanup-improve/SKILL.md +0 -84
  367. package/skills/scip-cleanup-improve/agents/openai.yaml +0 -4
  368. package/skills/scip-concrete-plan/SKILL.md +0 -262
  369. package/skills/scip-concrete-plan/agents/openai.yaml +0 -4
  370. package/skills/scip-conductor/SKILL.md +0 -133
  371. package/skills/scip-conductor/agents/openai.yaml +0 -4
  372. package/skills/scip-debug/SKILL.md +0 -130
  373. package/skills/scip-debug/agents/openai.yaml +0 -4
  374. package/skills/scip-diagram/SKILL.md +0 -110
  375. package/skills/scip-diagram/agents/openai.yaml +0 -4
  376. package/skills/scip-directory-architecture/SKILL.md +0 -254
  377. package/skills/scip-directory-architecture/agents/openai.yaml +0 -4
  378. package/skills/scip-doc-reconcile/SKILL.md +0 -89
  379. package/skills/scip-doc-reconcile/agents/openai.yaml +0 -4
  380. package/skills/scip-hyper-optimization/SKILL.md +0 -156
  381. package/skills/scip-hyper-optimization/agents/openai.yaml +0 -4
  382. package/skills/scip-integrity-audit/SKILL.md +0 -152
  383. package/skills/scip-integrity-audit/agents/openai.yaml +0 -4
  384. package/skills/scip-language-playbook/SKILL.md +0 -106
  385. package/skills/scip-language-playbook/agents/openai.yaml +0 -4
  386. package/skills/scip-maintainability/SKILL.md +0 -158
  387. package/skills/scip-maintainability/agents/openai.yaml +0 -4
  388. package/skills/scip-probe-reachability/agents/openai.yaml +0 -4
  389. package/skills/scip-react-maintainability/SKILL.md +0 -101
  390. package/skills/scip-react-maintainability/agents/openai.yaml +0 -4
  391. package/skills/scip-root-cause/SKILL.md +0 -150
  392. package/skills/scip-root-cause/agents/openai.yaml +0 -4
  393. package/skills/scip-tla-model-system/SKILL.md +0 -148
  394. package/skills/scip-tla-model-system/agents/openai.yaml +0 -4
  395. package/skills/scip-triage-issue/SKILL.md +0 -126
  396. package/skills/scip-triage-issue/agents/openai.yaml +0 -4
  397. package/skills/scip-twin-drift/SKILL.md +0 -107
  398. package/skills/scip-twin-drift/agents/openai.yaml +0 -4
  399. package/skills/scip-vue-maintainability/SKILL.md +0 -107
  400. package/skills/scip-vue-maintainability/agents/openai.yaml +0 -4
@@ -0,0 +1,298 @@
1
+ # Windows Sidecar Provenance and Release
2
+
3
+ The Windows sidecar is the npm package `scip-query-scip-windows` and the two
4
+ Windows PE executables it carries. It is a platform-specific optional package
5
+ whose distinguishing role is to make the `scip` index converter available on
6
+ Windows without placing roughly 40 MB of Windows-only bytes in every
7
+ `scip-query` installation.
8
+
9
+ A sidecar provenance record is the versioned `provenance.json` file committed
10
+ under `packages/scip-windows`. It is a build attestation distinguished by
11
+ binding one sidecar package version to the exact upstream repository, tag,
12
+ immutable source commit, Go toolchain, build flags, Windows target, PE machine,
13
+ file size, and SHA-256 of both executable files. The JSON Schema is
14
+ `docs/schemas/windows-sidecar-provenance.schema.json`.
15
+
16
+ ## Authority and guarantees
17
+
18
+ The committed provenance record is the release authority for local sidecar
19
+ bytes. The executable files are intentionally ignored by Git because of their
20
+ size; file presence alone therefore proves nothing. A release is locally
21
+ eligible only when all of these facts agree:
22
+
23
+ 1. The main package pins the exact sidecar package version.
24
+ 2. `provenance.json` names that package and version.
25
+ 3. Its repository, tag, Go version, command, flags, and build environment match
26
+ the checked-in build contract.
27
+ 4. It names exactly the x64 and ARM64 targets.
28
+ 5. Each file is a PE32+ executable with the target's machine code.
29
+ 6. Each observed byte size and SHA-256 equals the manifest.
30
+
31
+ This evidence proves which reviewed build claim belongs to the exact local
32
+ bytes. It is not a cryptographic signature by a remote builder. Trust in the
33
+ source and toolchain claim comes from producing the record in a clean trusted
34
+ environment, reviewing the generated manifest, and committing it with the
35
+ release change. Registry-byte identity and partial multi-package publication
36
+ are separate contracts implemented by REL-02 and REL-03.
37
+
38
+ ## Rebuild procedure
39
+
40
+ The build contract currently pins:
41
+
42
+ - SCIP repository: `https://github.com/scip-code/scip.git`
43
+ - SCIP tag: `v0.8.1`
44
+ - Go toolchain: `go1.26.4`
45
+ - command: `go build -trimpath -ldflags="-s -w" ./cmd/scip`
46
+ - environment: `CGO_ENABLED=0`, `GOOS=windows`
47
+ - targets: `GOARCH=amd64` and `GOARCH=arm64`
48
+
49
+ From a clean trusted checkout:
50
+
51
+ 1. Install the pinned Go toolchain.
52
+ 2. Run `npm run build:scip-windows`.
53
+ 3. Run `npm run verify:scip-windows`.
54
+ 4. Review the generated `packages/scip-windows/provenance.json`, README, and
55
+ license change. Confirm the immutable source commit is the intended tag.
56
+ 5. Run `npm pack --dry-run` inside `packages/scip-windows`. Its `prepack`
57
+ lifecycle verifies provenance before npm computes the tarball.
58
+ 6. Commit the provenance and release metadata. Do not commit the ignored
59
+ executables.
60
+
61
+ `SCIP_REPO_URL`, `SCIP_VERSION`, and `SCIP_GO_VERSION` are intentional-update
62
+ inputs, not ways to bypass the contract. A changed value makes verification
63
+ fail until a rebuild produces reviewed evidence for the new input.
64
+
65
+ The first provenance-bearing package is `0.13.1`. Published `0.13.0` has the
66
+ same executables but lacks `provenance.json`; npm versions are immutable, so
67
+ the registry identity gate correctly requires the patch bump instead of
68
+ trying to overwrite it.
69
+
70
+ ## Registry identity gate
71
+
72
+ A packed sidecar identity is the npm package coordinate, exact tarball
73
+ SHA-1/SHA-512/size, and decoded provenance bytes observed from one locally
74
+ created `.tgz`. What distinguishes it from a version-existence check is that
75
+ it identifies the bytes intended for installation, not merely the name under
76
+ which some bytes were published.
77
+
78
+ Before any registry mutation, the release flow:
79
+
80
+ 1. verifies the checked-in binaries and provenance;
81
+ 2. packs the local sidecar once into a private temporary directory;
82
+ 3. recomputes the tarball hashes and size instead of trusting npm's JSON
83
+ report;
84
+ 4. extracts `provenance.json` from the tar archive under a 64 MiB decompression
85
+ ceiling; and
86
+ 5. requires the packed manifest bytes to equal the reviewed local file.
87
+
88
+ For an existing version, the flow reads npm's `dist` identity, downloads the
89
+ published tarball with lifecycle scripts disabled, recomputes its hashes, and
90
+ requires all of the following to agree:
91
+
92
+ - registry metadata and downloaded tarball SHA-1/SHA-512;
93
+ - local and registry package names and versions;
94
+ - local and registry tarball SHA-1/SHA-512; and
95
+ - local and registry provenance bytes.
96
+
97
+ An explicit npm `E404` is the only evidence that authorizes the
98
+ not-yet-published branch. Authentication failures, timeouts, output-limit
99
+ failures, malformed metadata, generic proxy errors, and server failures are
100
+ ambiguous registry states and stop the release. Pack and registry commands
101
+ have finite 120-second and 30-second deadlines respectively, a 4 MiB captured
102
+ output ceiling, and typed timeout/output/exit failure classification.
103
+
104
+ Run `npm run verify:scip-windows-registry` for a read-only reconciliation. It
105
+ packs and verifies local bytes, then either proves that the existing registry
106
+ tarball is identical or reports that the version is absent and ready for its
107
+ first publish. The wrapper passes an explicit verification-only capability;
108
+ no inherited environment variable can suppress an authorized release publish.
109
+
110
+ The complete release coordinator publishes an already verified local `.tgz`,
111
+ not a directory that npm could repack differently. If a publish command fails
112
+ because another process won the race, the coordinator rereads and downloads
113
+ the winning registry version. It may continue only when the winner has the
114
+ same complete identity; a different winner requires a new package version.
115
+
116
+ The historical `npm run publish:scip-windows` alias is now local verification
117
+ only. `npm_lifecycle_event`, npm's dry-run environment, and other inherited
118
+ environment variables cannot grant it registry mutation authority. The
119
+ sidecar-only registry reader has an explicit verification capability, while
120
+ the complete coordinator is the only publishing CLI.
121
+
122
+ ## Two-package release coordinator
123
+
124
+ A two-package release is one ordered publication of an exact main-package
125
+ tarball and the exact Windows-sidecar tarball pinned by that main package.
126
+ Unlike a database transaction, it cannot roll back an npm publication. Its
127
+ essential safety property is therefore not atomicity: it is that every
128
+ partial registry state identifies the intended bytes, is observed before the
129
+ next irreversible step, and can be reconciled by rerunning one command.
130
+
131
+ The release coordinator is the repository command that owns this entire
132
+ ordering. It differs from a lifecycle hook by packing and validating both
133
+ artifacts before either registry mutation, recording local recovery evidence,
134
+ and verifying registry truth after each publication:
135
+
136
+ 1. acquire the token-owned release lock;
137
+ 2. require a clean Git checkout and record the exact `HEAD` object ID;
138
+ 3. resolve one canonical credential-free HTTPS npm registry and retain it for
139
+ the complete run;
140
+ 4. run typecheck, the complete test suite, and lint; lint includes formatting,
141
+ production build, API compatibility, downstream compilation, and skill
142
+ link checks;
143
+ 5. verify provenance and pack the sidecar;
144
+ 6. pack the main package with lifecycle scripts disabled;
145
+ 7. extract both packed `package.json` files, require their coordinates, and
146
+ require the packed main tarball to pin the exact packed sidecar version;
147
+ 8. require Git `HEAD` and complete tracked/untracked working-tree cleanliness
148
+ to be unchanged;
149
+ 9. durably record the registry and both local tarball identities before
150
+ reading the registry;
151
+ 10. observe and fully verify both registry coordinates, always passing the
152
+ retained registry URL explicitly, before the first
153
+ publish;
154
+ 11. publish and verify the sidecar if absent, then durably record that fact;
155
+ 12. publish and verify the main package if absent, then durably record that
156
+ fact; and
157
+ 13. remove private packs and release the owned lock.
158
+
159
+ Every Git, npm pack, registry, publish, test, and lint process has a finite
160
+ deadline and captured-output limit. A cleanup or lock-release failure produces
161
+ a nonzero outcome without erasing an earlier build, registry, or publication
162
+ failure from the diagnostic.
163
+
164
+ ### Operator runbook
165
+
166
+ Prepare and commit the complete release change first. The checkout must be
167
+ clean because the recorded source revision is the wider evidence from which
168
+ the two packed artifacts were tested and produced.
169
+
170
+ 1. Bump the main package version. If sidecar bytes or provenance changed, also
171
+ bump the immutable sidecar version and update its exact optional-dependency
172
+ pin.
173
+ 2. Rebuild and review sidecar provenance when required, following the rebuild
174
+ procedure above.
175
+ 3. Review and commit the version, lockfile, changelog, provenance, schemas,
176
+ release code, and tests.
177
+ 4. Run:
178
+
179
+ ```bash
180
+ npm run release:npm:dry-run
181
+ ```
182
+
183
+ This runs the complete local preflight, packs both artifacts, writes the
184
+ local recovery record, and reads/downloads any existing registry versions.
185
+ It never invokes `npm publish`.
186
+
187
+ 5. Review the reported coordinates, integrities, registry states, and the JSON
188
+ record under `.scipquery/releases/`.
189
+ 6. Run:
190
+
191
+ ```bash
192
+ npm run release:npm
193
+ ```
194
+
195
+ 7. Require the final output to say that both exact registry identities are
196
+ verified. A later retry of the same command is safe: it repeats local
197
+ preflight and registry verification, but it does not republish an already
198
+ identical coordinate.
199
+
200
+ Do not run `npm publish` directly. The root `prepublishOnly` guard refuses that
201
+ path because npm's lifecycle owns only one package publication and cannot
202
+ record or recover the pair. An operator can deliberately bypass lifecycle
203
+ scripts with npm's `--ignore-scripts` option; that is an administrative
204
+ capability outside the repository's enforcement boundary, not an alternate
205
+ supported release path. The coordinator itself uses `--ignore-scripts` only
206
+ when publishing the two tarballs it has already packed, hashed, inspected,
207
+ and recorded.
208
+
209
+ ### Durable local release state
210
+
211
+ A local release-state record is a schema-versioned JSON recovery fact stored
212
+ outside both npm tarballs under `.scipquery/releases/`. It is distinguished
213
+ from registry authority by recording what this checkout intended and what an
214
+ earlier run verified, while never permitting a later run to skip fresh
215
+ registry observation.
216
+
217
+ Schema version 1 records:
218
+
219
+ - a content-derived `releaseId`;
220
+ - the clean Git revision used for preflight and packing;
221
+ - the canonical HTTPS npm registry on which the coordinates are interpreted;
222
+ - each package's name, version, byte size, SHA-1, and SHA-512 integrity;
223
+ - `createdAt` and nondecreasing `updatedAt` timestamps;
224
+ - the writer identity; and
225
+ - a canonical set of completed facts:
226
+ `local-preflight-complete`, `sidecar-registry-verified`, and
227
+ `main-registry-verified`.
228
+
229
+ The registry facts are independent observations, not a fictional transaction
230
+ log. For example, an old or manually created state may have the main identity
231
+ verified while the sidecar is absent. The next coordinator run still verifies
232
+ both coordinates and repairs only the absent intended package.
233
+
234
+ The path is stable for one pair of package coordinates. Repacking different
235
+ bytes, using a different source revision, or selecting a different registry
236
+ under those same versions therefore collides with the existing record and
237
+ stops before registry work. The record is atomically replaced with directory
238
+ durability while the release lock is owned. It is intentionally ignored by Git
239
+ and omitted from the npm package: it is local recovery state, not portable
240
+ release authority. The normative shape is
241
+ `docs/schemas/npm-release-state.schema.json`.
242
+
243
+ Current-schema additive fields are tolerated. Malformed JSON, a wrong
244
+ discriminator, an invalid identity, a noncanonical stage list, or a future
245
+ schema fails closed. Do not hand-edit a damaged record. Preserve it for
246
+ diagnosis, move it out of the coordinate-stable path, and rerun from the exact
247
+ recorded source revision; the new run will recompute local bytes and reverify
248
+ both registry coordinates before acquiring publication authority.
249
+
250
+ ## Failure and recovery
251
+
252
+ | Observed state or failure | Safe outcome and recovery |
253
+ | ------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- |
254
+ | Missing executable or provenance | Stop before registry reads; rebuild, review, and commit the intended sidecar |
255
+ | Stale hash, wrong PE machine, or changed build input | Stop before registry reads; do not authorize bytes from file presence |
256
+ | One target build fails or promotion is interrupted | No complete new build is authorized; rebuild both and rerun verification |
257
+ | Dirty checkout before preflight | Stop before tests and registry reads; commit, remove, or intentionally ignore/restore every tracked or untracked path |
258
+ | Missing, insecure, credential-bearing, or malformed registry URL | Stop before tests and registry reads; configure one canonical credential-free HTTPS npm registry |
259
+ | Git revision or any tracked/untracked path changes during preflight | Stop before the state record and registry reads; remove the concurrent editor and rerun from one completely clean revision |
260
+ | Test, lint, build, API, sidecar pack, or main pack fails | No registry mutation has occurred; fix the local failure and rerun |
261
+ | Initial state publication fails | No registry read or mutation has occurred; repair local filesystem durability/permissions and rerun |
262
+ | State contains only `local-preflight-complete` | Registry is freshly reconciled; absent packages publish in sidecar-then-main order |
263
+ | Sidecar is exact, main is absent | Record sidecar verification if needed, then publish and verify the main package |
264
+ | Main is exact, sidecar is absent | Verify the main tarball pins the intended sidecar, then publish and verify only the sidecar |
265
+ | Both packages are exact, state is stale or absent | Record both observed facts and finish without publication |
266
+ | Sidecar publishes but its state write fails | Stop before main; retry observes the exact sidecar and continues |
267
+ | Main publishes but its state write fails | Retry observes both exact registry identities and records completion |
268
+ | Publish reports failure but an identical winner is visible | Accept the registry fact after downloading and hashing it; continue |
269
+ | Publish and its immediate registry reconciliation both fail | Report both causal failures; rerun the coordinator to establish registry truth before another publication decision |
270
+ | Publish returns success but identity is not yet visible | Stop after bounded visibility retries; rerun the coordinator rather than publishing blindly |
271
+ | Registry query times out, is unauthorized, or is malformed | Stop; ambiguity is not converted to absence |
272
+ | Published tarball disagrees with `dist` metadata | Stop; treat the download or registry metadata as corrupt |
273
+ | Existing coordinate lacks provenance or has different bytes | Stop; npm versions are immutable, so bump the changed package version |
274
+ | State records different source or bytes under the same versions | Stop before registry reads; resume the recorded revision, or bump the changed package version |
275
+ | Configured registry differs from the recorded release registry | Stop before registry reads; restore the intended registry or begin new package versions for the other registry |
276
+ | Malformed or future local state | Preserve and move the artifact for diagnosis; rerun from the recorded revision so local and registry facts are rebuilt |
277
+ | Release lock is held by a live owner | Wait; a dead attributable owner is reclaimed conservatively, while unverifiable ownership fails closed |
278
+ | Cleanup and an earlier operation both fail | Both failures are reported; inspect registry/state first, then rerun to reconcile |
279
+ | Lock ownership changes before release | Command exits nonzero; do not infer failure or success from the local message—rerun and require exact registry identity |
280
+
281
+ Build outputs are produced in a private temporary directory. Only after both
282
+ targets and the manifest exist are individual files atomically replaced in the
283
+ sidecar directory. A process crash between replacements can leave an old/new
284
+ mixture visible, but the next verifier detects the mismatch and fails closed.
285
+
286
+ ## Compatibility
287
+
288
+ Schema version 1 is the first executable provenance format. Readers accept
289
+ unknown additive fields within version 1 but require every identity and binary
290
+ field used by the release decision. Missing, malformed, older, or future
291
+ versions are not treated as legacy success. Changing a required field or its
292
+ meaning requires a new schema version and an explicit overlap policy before a
293
+ writer ships it.
294
+
295
+ The local release-state schema is independently versioned at 1. Because it has
296
+ not shipped before `0.19.6`, it has no legacy reader. Additive current fields
297
+ are compatible; removing or reinterpreting a required identity, source, stage,
298
+ or timestamp field requires a new schema and an explicit recovery policy.
@@ -12,12 +12,12 @@ The companion documents are:
12
12
 
13
13
  The ledger is anchored to the current tool surface, not memory.
14
14
 
15
- | Surface | Source | Why it anchors the ledger |
16
- | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- |
17
- | Repo-wide health analysis | `scip-query code health --json` reported `src/queries/health/health.ts:218`, where `health()` runs `runHealthAnalyses()` and `buildHealthReport()` through the health budget that carries full-vs-bounded semantic enrichment. | Every repo-wide analyzer validation must eventually reconcile with health output and scoring. |
18
- | Change-time gate analysis | `scip-query code diffGate --json` reported `src/queries/impact/diff-gate.ts:228`, where `diffGate()` runs the default diff-scoped checks: `echo`, `incomplete-migration`, `co-change-partner`, `doc-reference`, `unused-params`, and `new-dead`. The baseline ratchet is explicit because it is repo-wide. | Every diff-only analyzer needs a separate validation path from repo-wide health. |
19
- | Public command registry | `scip-query trace queryCommandOrder --json` reported `src/runtime/commands/query-command-specs.ts:11`, where the public query command order starts. `scip-query code queryCommandDescriptor --json` reported `src/runtime/commands/query-command-specs.ts:104`, where command descriptors are resolved by id. | The ledger must not silently miss a public analyzer command. |
20
- | Diff-gate check list | `scip-query trace DIFF_GATE_CHECKS --json` reported `src/queries/impact/diff-gate.ts:64`, where the canonical diff-gate check list is exported. | The ledger must cover every change-time check that can block a diff. |
15
+ | Surface | Source | Why it anchors the ledger |
16
+ | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------- |
17
+ | Repo-wide health analysis | `scip-query code health --json` reported `src/queries/health/health.ts:218`, where `health()` runs `runHealthAnalyses()` and `buildHealthReport()` through the health budget that carries full-vs-bounded semantic enrichment. | Every repo-wide analyzer validation must eventually reconcile with health output and scoring. |
18
+ | Change-time gate analysis | `scip-query trace diffGate --json` resolves `diffGate()` in `src/queries/impact/diff-gate.ts`, where it runs the default diff-scoped checks: `echo`, `incomplete-migration`, `co-change-partner`, `twin-partner`, `coverage-contract`, `architecture`, `doc-reference`, `unused-params`, and `new-dead`. The baseline ratchet is explicit because it is repo-wide. | Every diff-only analyzer needs a separate validation path from repo-wide health. |
19
+ | Public command registry | `scip-query trace queryCommandOrder --json` reported `src/runtime/commands/query-command-specs.ts:11`, where the public query command order starts. `scip-query code queryCommandDescriptor --json` reported `src/runtime/commands/query-command-specs.ts:104`, where command descriptors are resolved by id. | The ledger must not silently miss a public analyzer command. |
20
+ | Diff-gate check list | `scip-query trace DIFF_GATE_CHECKS --json` resolves the canonical exported check list in `src/queries/impact/diff-gate.ts`. | The ledger must cover every change-time check that can block a diff. |
21
21
 
22
22
  ## Core Concepts
23
23
 
@@ -337,13 +337,14 @@ budget choice.
337
337
 
338
338
  ## 2026-07-02 Doc-Reference Hub-Cascade Follow-Up
339
339
 
340
- The `diffGate()` and `DIFF_GATE_CHECKS` citations were refreshed (line anchors
341
- `diff-gate.ts:205` -> `:228` and `:62` -> `:64`) after followup #8 added
342
- hub-file cascade damping to the doc-reference check: when more than 3 docs
343
- cite the same changed hub file in one gate run, their findings collapse into
344
- one clustered finding carrying `citationCount`, up to 3 `citationExemplars`,
345
- and an explicit `suppressedCount`. Default diff-gate still runs the same
346
- check family through the same entry point; per-doc findings under the
340
+ The `diffGate()` and `DIFF_GATE_CHECKS` citations were refreshed after
341
+ followup #8 added hub-file cascade damping to the doc-reference check: when
342
+ more than 3 docs cite the same changed hub file in one gate run, their
343
+ findings collapse into one clustered finding carrying `citationCount`, up to
344
+ 3 `citationExemplars`, and an explicit `suppressedCount`. Slice 23 removed the
345
+ historical line numbers from these source anchors because the exported symbol
346
+ identities are stable while repeated additive checks made the numbers stale.
347
+ The current table names every default check; per-doc findings under the
347
348
  threshold are unchanged.
348
349
 
349
350
  ## 2026-07-10 TypeScript Dead-Code Certification Follow-Up
@@ -403,7 +404,7 @@ covered, so the result is not an artifact of a permanently-firing check.
403
404
  **Precision decision.** Module-hierarchy suppression is content-aware, not
404
405
  path-based. `classifyFile` decides "barrel" from the filename, which labels
405
406
  every `index.ts` bookkeeping — including `src/language-parsers/index.ts`, a
406
- 130-line cache module that was the *target* of the narrowest real back edge in
407
+ 130-line cache module that was the _target_ of the narrowest real back edge in
407
408
  the repository. A path-based rule therefore produced a false negative on the
408
409
  single most important finding. A barrel is now excluded only when the index
409
410
  records no definitions of its own inside it.
@@ -415,7 +416,7 @@ files depending on one of its own sub-directories is the most common real
415
416
  intra-boundary cycle, not module bookkeeping.
416
417
 
417
418
  **Known limits, not yet calibrated.** Sub-units are one directory level, so a
418
- layer inversion *inside* a single directory is invisible; the `src/source`
419
+ layer inversion _inside_ a single directory is invisible; the `src/source`
419
420
  primitives/facts/products tangle had to be derived by hand and was fixed by
420
421
  splitting the directory. Test files are not SCIP-indexed and are therefore
421
422
  outside boundary enforcement entirely. `requireCompletePolicy` checks that a
@@ -428,17 +429,17 @@ Five rules were added to `architecture` after auditing what boundary
428
429
  enforcement still could not see. Each is opt-in and defaults to off, so
429
430
  upgrading tightens no existing project's gate.
430
431
 
431
- | Rule | Closes | Finding identity |
432
- | --- | --- | --- |
433
- | `requireMinimalPolicy` | A declared allowance outliving the edge that justified it. `requireCompletePolicy` checks a row *exists*, never that it is *minimal*, so policy widens silently. | `architecture:stale-allowance:<from>:<to>` |
434
- | `maxBoundaryFanOut` / global `maxBoundaryFiles` / per-boundary `maxFiles` | A boundary growing until it is coupled to most of the system. A local file ceiling overrides the global default only for its reviewed boundary. Coarseness was previously caught only when it *hid a cycle*, never when it merely got large. | `architecture:boundary-limit:<kind>:<boundary>` |
435
- | `testPaths` | Test files are excluded from the compiler project and therefore from the index, leaving them outside every boundary rule. | `architecture:test-boundary:<test>:<boundary>` |
436
- | `subUnits: 'file'` | A layer inversion *inside* one directory, invisible when sub-units are directories. | (reuses `coarse-boundary`) |
437
- | `fragileEdges` (report-only) | No signal distinguishing a load-bearing dependency from one resting on a single import. 60 of 251 edges here are single-import. | none — advisory |
432
+ | Rule | Closes | Finding identity |
433
+ | ------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------- |
434
+ | `requireMinimalPolicy` | A declared allowance outliving the edge that justified it. `requireCompletePolicy` checks a row _exists_, never that it is _minimal_, so policy widens silently. | `architecture:stale-allowance:<from>:<to>` |
435
+ | `maxBoundaryFanOut` / global `maxBoundaryFiles` / per-boundary `maxFiles` | A boundary growing until it is coupled to most of the system. A local file ceiling overrides the global default only for its reviewed boundary. Coarseness was previously caught only when it _hid a cycle_, never when it merely got large. | `architecture:boundary-limit:<kind>:<boundary>` |
436
+ | `testPaths` | Test files are excluded from the compiler project and therefore from the index, leaving them outside every boundary rule. | `architecture:test-boundary:<test>:<boundary>` |
437
+ | `subUnits: 'file'` | A layer inversion _inside_ one directory, invisible when sub-units are directories. | (reuses `coarse-boundary`) |
438
+ | `fragileEdges` (report-only) | No signal distinguishing a load-bearing dependency from one resting on a single import. 60 of 251 edges here are single-import. | none — advisory |
438
439
 
439
440
  **Test-boundary calibration.** The first rule shape — "a test may import only what
440
441
  its subject's boundary may import" — produced 91 findings, nearly all
441
- legitimate: a test for `analysis/git-history` drives it *through*
442
+ legitimate: a test for `analysis/git-history` drives it _through_
442
443
  `queries/cleanup/co-change`, which is composition, not coupling. The shipped
443
444
  rule allows the subject's **transitive** reach plus any boundary that reaches
444
445
  the subject (a consumer is the natural driver). That yields 0 findings here,
@@ -0,0 +1,53 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://github.com/ainsleyclark/scip-query/blob/main/docs/schemas/cli-json-envelope.schema.json",
4
+ "title": "scip-query CLI JSON envelope v1",
5
+ "description": "The public transport record emitted by scip-query commands that accept --json.",
6
+ "type": "object",
7
+ "required": ["kind", "schemaVersion", "producer", "command", "resultSchemaVersion", "args", "options", "result"],
8
+ "properties": {
9
+ "kind": {
10
+ "const": "scip-query-result"
11
+ },
12
+ "schemaVersion": {
13
+ "const": 1
14
+ },
15
+ "producer": {
16
+ "type": "object",
17
+ "required": ["name", "version"],
18
+ "properties": {
19
+ "name": {
20
+ "const": "scip-query"
21
+ },
22
+ "version": {
23
+ "type": "string",
24
+ "minLength": 1
25
+ }
26
+ },
27
+ "additionalProperties": true
28
+ },
29
+ "command": {
30
+ "type": "string",
31
+ "minLength": 1
32
+ },
33
+ "resultSchemaVersion": {
34
+ "type": "integer",
35
+ "minimum": 1
36
+ },
37
+ "evidence": {
38
+ "enum": ["graph-fact", "heuristic", "mixed"]
39
+ },
40
+ "analysisBudget": {},
41
+ "args": {
42
+ "type": "array"
43
+ },
44
+ "options": {
45
+ "type": "object",
46
+ "additionalProperties": true
47
+ },
48
+ "result": {},
49
+ "coverage": {},
50
+ "agentResult": {}
51
+ },
52
+ "additionalProperties": true
53
+ }
@@ -0,0 +1,146 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://github.com/PlunderStruck/scip-query/blob/main/docs/schemas/npm-release-state.schema.json",
4
+ "title": "scip-query npm release state",
5
+ "description": "Durable local progress for one exact main-package and Windows-sidecar npm release.",
6
+ "type": "object",
7
+ "required": [
8
+ "kind",
9
+ "schemaVersion",
10
+ "releaseId",
11
+ "source",
12
+ "packages",
13
+ "completedStages",
14
+ "createdAt",
15
+ "updatedAt",
16
+ "writer"
17
+ ],
18
+ "properties": {
19
+ "kind": {
20
+ "const": "scip-query-npm-release-state"
21
+ },
22
+ "schemaVersion": {
23
+ "const": 1
24
+ },
25
+ "releaseId": {
26
+ "type": "string",
27
+ "pattern": "^[a-f0-9]{64}$"
28
+ },
29
+ "source": {
30
+ "type": "object",
31
+ "required": ["gitRevision", "registry"],
32
+ "properties": {
33
+ "gitRevision": {
34
+ "type": "string",
35
+ "pattern": "^[a-f0-9]{40,64}$"
36
+ },
37
+ "registry": {
38
+ "type": "string",
39
+ "format": "uri",
40
+ "pattern": "^https://",
41
+ "allOf": [
42
+ {
43
+ "not": {
44
+ "pattern": "^https://[^/]*@"
45
+ }
46
+ },
47
+ {
48
+ "not": {
49
+ "pattern": "[?#]"
50
+ }
51
+ }
52
+ ]
53
+ }
54
+ },
55
+ "additionalProperties": true
56
+ },
57
+ "packages": {
58
+ "type": "object",
59
+ "required": ["main", "sidecar"],
60
+ "properties": {
61
+ "main": {
62
+ "$ref": "#/$defs/packageIdentity"
63
+ },
64
+ "sidecar": {
65
+ "$ref": "#/$defs/packageIdentity"
66
+ }
67
+ },
68
+ "additionalProperties": true
69
+ },
70
+ "completedStages": {
71
+ "type": "array",
72
+ "minItems": 1,
73
+ "uniqueItems": true,
74
+ "items": {
75
+ "enum": ["local-preflight-complete", "sidecar-registry-verified", "main-registry-verified"]
76
+ },
77
+ "oneOf": [
78
+ {
79
+ "const": ["local-preflight-complete"]
80
+ },
81
+ {
82
+ "const": ["local-preflight-complete", "sidecar-registry-verified"]
83
+ },
84
+ {
85
+ "const": ["local-preflight-complete", "main-registry-verified"]
86
+ },
87
+ {
88
+ "const": ["local-preflight-complete", "sidecar-registry-verified", "main-registry-verified"]
89
+ }
90
+ ]
91
+ },
92
+ "createdAt": {
93
+ "type": "string",
94
+ "format": "date-time"
95
+ },
96
+ "updatedAt": {
97
+ "type": "string",
98
+ "format": "date-time"
99
+ },
100
+ "writer": {
101
+ "type": "object",
102
+ "required": ["name", "version"],
103
+ "properties": {
104
+ "name": {
105
+ "const": "scip-query"
106
+ },
107
+ "version": {
108
+ "type": "string",
109
+ "minLength": 1,
110
+ "description": "The main-package version that produced this state; the executable reader requires it to equal packages.main.version."
111
+ }
112
+ },
113
+ "additionalProperties": true
114
+ }
115
+ },
116
+ "$defs": {
117
+ "packageIdentity": {
118
+ "type": "object",
119
+ "required": ["name", "version", "size", "shasum", "integrity"],
120
+ "properties": {
121
+ "name": {
122
+ "type": "string",
123
+ "minLength": 1
124
+ },
125
+ "version": {
126
+ "type": "string",
127
+ "minLength": 1
128
+ },
129
+ "size": {
130
+ "type": "integer",
131
+ "minimum": 0
132
+ },
133
+ "shasum": {
134
+ "type": "string",
135
+ "pattern": "^[a-f0-9]{40}$"
136
+ },
137
+ "integrity": {
138
+ "type": "string",
139
+ "pattern": "^sha512-[A-Za-z0-9+/]+={0,2}$"
140
+ }
141
+ },
142
+ "additionalProperties": true
143
+ }
144
+ },
145
+ "additionalProperties": true
146
+ }
@@ -0,0 +1,39 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://unpkg.com/scip-query/docs/schemas/outcome-event-record.schema.json",
4
+ "title": "scip-query outcome event record v1",
5
+ "description": "One immutable repository-owned finding transition stored under .scipquery/events/.",
6
+ "type": "object",
7
+ "required": ["kind", "schemaVersion", "eventIdentity", "writer", "ts", "check", "findingId", "event", "commit"],
8
+ "properties": {
9
+ "kind": { "const": "scip-query-outcome-event" },
10
+ "schemaVersion": { "const": 1 },
11
+ "eventIdentity": { "type": "string", "minLength": 1 },
12
+ "writer": {
13
+ "type": "object",
14
+ "required": ["tool", "version"],
15
+ "properties": {
16
+ "tool": { "const": "scip-query" },
17
+ "version": { "type": "string", "minLength": 1 }
18
+ },
19
+ "additionalProperties": true
20
+ },
21
+ "ts": { "type": "number" },
22
+ "check": { "type": "string", "minLength": 1 },
23
+ "findingId": { "type": "string", "minLength": 1 },
24
+ "event": { "enum": ["caught", "resolved", "suppressed", "reopened"] },
25
+ "commit": {
26
+ "oneOf": [{ "type": "string" }, { "type": "null" }]
27
+ },
28
+ "comparisonBaseCommit": { "type": "string" },
29
+ "verifiedAgainstCommit": { "type": "string" },
30
+ "symbol": { "type": "string" }
31
+ },
32
+ "allOf": [
33
+ {
34
+ "if": { "required": ["verifiedAgainstCommit"] },
35
+ "then": { "properties": { "event": { "const": "resolved" } } }
36
+ }
37
+ ],
38
+ "additionalProperties": true
39
+ }