scip-query 0.19.6 → 0.19.10

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 (377) hide show
  1. package/CHANGELOG.md +116 -0
  2. package/README.md +156 -44
  3. package/dist/augment-vue-worker.js +1 -1
  4. package/dist/chunk-26QA6FAI.js +8 -0
  5. package/dist/{chunk-J7VT2CRB.js → chunk-2HPVVXM5.js} +2 -2
  6. package/dist/chunk-2KAZEZ6M.js +2 -0
  7. package/dist/chunk-32LVLCLN.js +40 -0
  8. package/dist/{chunk-2CVXCGL4.js → chunk-3CLX5EOX.js} +2 -2
  9. package/dist/{chunk-5OC3HWP5.js → chunk-3G66UZBH.js} +2 -2
  10. package/dist/{chunk-S2GP3CU3.js → chunk-3ORVDL3H.js} +2 -2
  11. package/dist/chunk-46XGSFNI.js +2 -0
  12. package/dist/chunk-4MAK2HOY.js +6 -0
  13. package/dist/chunk-4TURLRL5.js +16 -0
  14. package/dist/chunk-4UQVNCQE.js +2 -0
  15. package/dist/chunk-55Q3WLZX.js +2 -0
  16. package/dist/{chunk-OQ2A4G2G.js → chunk-5E4WNAVD.js} +2 -2
  17. package/dist/{chunk-YGQN3XGZ.js → chunk-5I5G2QOX.js} +2 -2
  18. package/dist/chunk-6LDJQXAH.js +2 -0
  19. package/dist/{chunk-WXAAURU7.js → chunk-6O5TICIZ.js} +2 -2
  20. package/dist/{chunk-OBKDTVZ3.js → chunk-6SHPK5ZE.js} +2 -2
  21. package/dist/chunk-7BAVHKMJ.js +49 -0
  22. package/dist/chunk-7O5IKBTZ.js +16 -0
  23. package/dist/chunk-7PIO7NKH.js +60 -0
  24. package/dist/chunk-7S5E7KWT.js +2 -0
  25. package/dist/{chunk-GK3GRUJX.js → chunk-7SQQWSY3.js} +2 -2
  26. package/dist/chunk-7WPLAODU.js +5 -0
  27. package/dist/chunk-A73XVBCR.js +20 -0
  28. package/dist/chunk-AFHORGLH.js +42 -0
  29. package/dist/chunk-AIE7TFJW.js +9 -0
  30. package/dist/chunk-AQOFWNQJ.js +1 -0
  31. package/dist/{chunk-MGBJHRFB.js → chunk-AZJQQKDD.js} +2 -2
  32. package/dist/{chunk-IYAOX36F.js → chunk-B2PX5I6M.js} +2 -2
  33. package/dist/{chunk-EVOC5I5I.js → chunk-B7PBSLZN.js} +2 -2
  34. package/dist/{chunk-ZLJLE6LK.js → chunk-BBW6JFHN.js} +2 -2
  35. package/dist/{chunk-NBRUH7OE.js → chunk-BDCC2NPY.js} +2 -2
  36. package/dist/{chunk-DD5BOU5I.js → chunk-BNXCIFVY.js} +2 -2
  37. package/dist/{chunk-FHCTEANE.js → chunk-BPAPWKP6.js} +2 -2
  38. package/dist/chunk-BS2NMXQZ.js +4 -0
  39. package/dist/chunk-C3KV2II6.js +2 -0
  40. package/dist/chunk-C43RDDP4.js +20 -0
  41. package/dist/{chunk-QBYYWGAT.js → chunk-CJST5ETY.js} +2 -2
  42. package/dist/chunk-DAFAHMNB.js +42 -0
  43. package/dist/chunk-DHEQMPLW.js +2 -0
  44. package/dist/{chunk-336DC5NJ.js → chunk-DQGFVPUV.js} +2 -2
  45. package/dist/chunk-DQLPXMH6.js +8 -0
  46. package/dist/chunk-EKZTZXHZ.js +117 -0
  47. package/dist/{chunk-KLVJABXA.js → chunk-EN3O7VJA.js} +2 -2
  48. package/dist/{chunk-U5CNPPTZ.js → chunk-EW2NTSFA.js} +2 -2
  49. package/dist/chunk-F3Z4OUDS.js +8 -0
  50. package/dist/chunk-FJH2NW7J.js +66 -0
  51. package/dist/{chunk-3OIKRYU5.js → chunk-FKSELJQF.js} +2 -2
  52. package/dist/chunk-FTFP6O3L.js +11 -0
  53. package/dist/chunk-FYLK2DEJ.js +2 -0
  54. package/dist/chunk-GH74ASD6.js +11 -0
  55. package/dist/{chunk-NQLSSVOB.js → chunk-GMXWZP2B.js} +2 -2
  56. package/dist/chunk-GOUBFH5O.js +3 -0
  57. package/dist/{chunk-RJHCPSZ7.js → chunk-HLF2TX6R.js} +2 -2
  58. package/dist/{chunk-PC44K7RF.js → chunk-HX4GQPZP.js} +2 -2
  59. package/dist/chunk-HX7M4BDI.js +30 -0
  60. package/dist/chunk-HZ72SESS.js +128 -0
  61. package/dist/{chunk-YTUD45PU.js → chunk-IB2N4FIY.js} +2 -2
  62. package/dist/chunk-ILMHV3KM.js +2 -0
  63. package/dist/chunk-IZYYAFN5.js +2 -0
  64. package/dist/{chunk-A43URCQ3.js → chunk-JAYYFEQY.js} +2 -2
  65. package/dist/{chunk-RWRLUZ6U.js → chunk-JDOEX4E6.js} +2 -2
  66. package/dist/chunk-JFGGXWQF.js +947 -0
  67. package/dist/chunk-JN4NMBEX.js +8 -0
  68. package/dist/{chunk-JELJLXEE.js → chunk-JVYA47YU.js} +2 -2
  69. package/dist/{chunk-F42A3AKG.js → chunk-JW56N3KI.js} +2 -2
  70. package/dist/{chunk-FQTPPXNA.js → chunk-JZ2OXNWB.js} +2 -2
  71. package/dist/chunk-KFZNKUNT.js +2 -0
  72. package/dist/chunk-KMKTIO2G.js +8 -0
  73. package/dist/chunk-L5GJNV2T.js +8 -0
  74. package/dist/{chunk-RBFFD4V2.js → chunk-L7AW2QB5.js} +2 -2
  75. package/dist/chunk-L7JDSCDF.js +4 -0
  76. package/dist/chunk-LU47HG23.js +14 -0
  77. package/dist/chunk-LVY7NPF7.js +2 -0
  78. package/dist/chunk-LY4WC4AD.js +74 -0
  79. package/dist/{chunk-MLGTCX56.js → chunk-MKCDWWGV.js} +2 -2
  80. package/dist/chunk-MNE7YG56.js +2 -0
  81. package/dist/{chunk-YWB2EBNB.js → chunk-MRXBEXSY.js} +2 -2
  82. package/dist/chunk-MV7OWDUX.js +2 -0
  83. package/dist/{chunk-2GSQR6YA.js → chunk-N5W4YZMK.js} +2 -2
  84. package/dist/chunk-NGEXCJJW.js +11 -0
  85. package/dist/{chunk-CYJM7CYF.js → chunk-NIW6JDC5.js} +2 -2
  86. package/dist/{chunk-YHXBD52M.js → chunk-O64IZ6UX.js} +2 -2
  87. package/dist/chunk-PBUQFCNB.js +16 -0
  88. package/dist/{chunk-UQK5CRUK.js → chunk-POAVPHH7.js} +2 -2
  89. package/dist/{chunk-TYQ76QHQ.js → chunk-PQCI4SQX.js} +2 -2
  90. package/dist/chunk-PXY7F6Y4.js +5 -0
  91. package/dist/chunk-RDO52JGY.js +2 -0
  92. package/dist/chunk-RJT3TUUZ.js +2 -0
  93. package/dist/{chunk-OHWZKLVA.js → chunk-RUJURYSV.js} +2 -2
  94. package/dist/{chunk-CSTYYXKC.js → chunk-RVLDN63O.js} +2 -2
  95. package/dist/chunk-RXOXSKY3.js +2 -0
  96. package/dist/chunk-S7OYBOCK.js +2 -0
  97. package/dist/chunk-SMNXQT5Z.js +3 -0
  98. package/dist/{chunk-QQWOFXNW.js → chunk-SRAFT254.js} +2 -2
  99. package/dist/{chunk-6XHTISLI.js → chunk-SXP2MBJH.js} +2 -2
  100. package/dist/chunk-T7YQSHPQ.js +3 -0
  101. package/dist/{chunk-2EZSOTSY.js → chunk-TFRAYKN6.js} +2 -2
  102. package/dist/{chunk-XVJ3V7LM.js → chunk-UJCOIXDY.js} +2 -2
  103. package/dist/{chunk-7LABSJSR.js → chunk-UJPRPGCO.js} +5 -5
  104. package/dist/chunk-W4ETQAXM.js +2 -0
  105. package/dist/chunk-WCCFZ7V7.js +113 -0
  106. package/dist/chunk-WUPW3UN3.js +3 -0
  107. package/dist/{chunk-VP542C25.js → chunk-WXZLAAWK.js} +2 -2
  108. package/dist/{chunk-LMFVTUW2.js → chunk-X54AGLVX.js} +2 -2
  109. package/dist/chunk-XKWKXZKW.js +20 -0
  110. package/dist/{chunk-OP3MTFJR.js → chunk-XSRF6Q77.js} +2 -2
  111. package/dist/chunk-Y2MVPNKY.js +5 -0
  112. package/dist/{chunk-6XFC7PQ5.js → chunk-YKUU5AIC.js} +2 -2
  113. package/dist/chunk-YLCJLTPL.js +2 -0
  114. package/dist/{chunk-47X75ZKH.js → chunk-YTQVETEO.js} +2 -2
  115. package/dist/chunk-Z4N3MZYA.js +38 -0
  116. package/dist/chunk-ZHXX42OH.js +18 -0
  117. package/dist/chunk-ZJOOT3BG.js +2 -0
  118. package/dist/chunk-ZK26BAQL.js +2 -0
  119. package/dist/{chunk-UUJBLG6J.js → chunk-ZTETIQ35.js} +2 -2
  120. package/dist/cli.js +3 -3
  121. package/dist/command-descriptors-4A4HWV4F.js +642 -0
  122. package/dist/{config-types-BWQ5xPGI.d.ts → config-types-jVM3D7MA.d.ts} +72 -2
  123. package/dist/{db-B0r1o7Vt.d.ts → db-B5PM5yNk.d.ts} +20 -2
  124. package/dist/{diff-gate-types-C9BoYwYD.d.ts → diff-gate-types-B0QYpDv1.d.ts} +2 -1
  125. package/dist/direct-navigation-6YHV6IB5.js +3 -0
  126. package/dist/{health-CFnlCiTz.d.ts → health-Do5TKSJI.d.ts} +1 -1
  127. package/dist/index.d.ts +3 -3
  128. package/dist/index.js +1 -1
  129. package/dist/postinstall.js +1 -1
  130. package/dist/queries/affected.d.ts +2 -2
  131. package/dist/queries/affected.js +1 -1
  132. package/dist/queries/architecture.d.ts +2 -2
  133. package/dist/queries/architecture.js +1 -1
  134. package/dist/queries/bottlenecks.d.ts +2 -2
  135. package/dist/queries/bottlenecks.js +1 -1
  136. package/dist/queries/by-kind.d.ts +2 -2
  137. package/dist/queries/by-kind.js +1 -1
  138. package/dist/queries/call-graph.d.ts +2 -2
  139. package/dist/queries/call-graph.js +1 -1
  140. package/dist/queries/change-surface.d.ts +22 -3
  141. package/dist/queries/change-surface.js +1 -1
  142. package/dist/queries/cleanup-plan.d.ts +2 -2
  143. package/dist/queries/cleanup-plan.js +1 -1
  144. package/dist/queries/co-change.d.ts +2 -2
  145. package/dist/queries/co-change.js +1 -1
  146. package/dist/queries/code.d.ts +2 -2
  147. package/dist/queries/code.js +1 -1
  148. package/dist/queries/complexity-hotspots.d.ts +3 -3
  149. package/dist/queries/complexity-hotspots.js +1 -1
  150. package/dist/queries/complexity.d.ts +3 -3
  151. package/dist/queries/complexity.js +1 -1
  152. package/dist/queries/convergence.d.ts +2 -2
  153. package/dist/queries/convergence.js +1 -1
  154. package/dist/queries/coupling.d.ts +2 -2
  155. package/dist/queries/coupling.js +1 -1
  156. package/dist/queries/cycles.d.ts +2 -2
  157. package/dist/queries/cycles.js +1 -1
  158. package/dist/queries/dataflow.d.ts +2 -2
  159. package/dist/queries/dataflow.js +1 -1
  160. package/dist/queries/dead.d.ts +2 -2
  161. package/dist/queries/dead.js +1 -1
  162. package/dist/queries/decorative-checkers.d.ts +2 -2
  163. package/dist/queries/decorative-checkers.js +1 -1
  164. package/dist/queries/deep-chains.d.ts +2 -2
  165. package/dist/queries/deep-chains.js +1 -1
  166. package/dist/queries/deps.d.ts +2 -2
  167. package/dist/queries/deps.js +1 -1
  168. package/dist/queries/diff-gate.d.ts +40 -7
  169. package/dist/queries/diff-gate.js +1 -1
  170. package/dist/queries/diff-impact.d.ts +84 -6
  171. package/dist/queries/diff-impact.js +1 -1
  172. package/dist/queries/doc-drift.d.ts +3 -3
  173. package/dist/queries/doc-drift.js +1 -1
  174. package/dist/queries/drift.d.ts +2 -2
  175. package/dist/queries/drift.js +1 -1
  176. package/dist/queries/duplicate-bodies.d.ts +3 -3
  177. package/dist/queries/duplicate-bodies.js +1 -1
  178. package/dist/queries/extract-candidates.d.ts +2 -2
  179. package/dist/queries/extract-candidates.js +1 -1
  180. package/dist/queries/fan.d.ts +2 -2
  181. package/dist/queries/fan.js +1 -1
  182. package/dist/queries/files.d.ts +12 -3
  183. package/dist/queries/files.js +1 -1
  184. package/dist/queries/health.d.ts +3 -3
  185. package/dist/queries/health.js +1 -1
  186. package/dist/queries/hierarchy.d.ts +2 -2
  187. package/dist/queries/hierarchy.js +1 -1
  188. package/dist/queries/hotspots.d.ts +2 -2
  189. package/dist/queries/hotspots.js +1 -1
  190. package/dist/queries/imports.d.ts +2 -2
  191. package/dist/queries/imports.js +1 -1
  192. package/dist/queries/incomplete-migration.d.ts +8 -6
  193. package/dist/queries/incomplete-migration.js +1 -1
  194. package/dist/queries/index.d.ts +141 -10
  195. package/dist/queries/index.js +1 -1
  196. package/dist/queries/isolated.d.ts +2 -2
  197. package/dist/queries/isolated.js +1 -1
  198. package/dist/queries/locality-candidates.d.ts +2 -2
  199. package/dist/queries/locality-candidates.js +1 -1
  200. package/dist/queries/members.d.ts +2 -2
  201. package/dist/queries/members.js +1 -1
  202. package/dist/queries/methods.d.ts +34 -3
  203. package/dist/queries/methods.js +1 -1
  204. package/dist/queries/not-implemented.d.ts +2 -2
  205. package/dist/queries/not-implemented.js +1 -1
  206. package/dist/queries/outline.d.ts +2 -2
  207. package/dist/queries/outline.js +1 -1
  208. package/dist/queries/passthrough-candidates.d.ts +3 -3
  209. package/dist/queries/passthrough-candidates.js +1 -1
  210. package/dist/queries/plan-context.d.ts +3 -3
  211. package/dist/queries/plan-context.js +1 -1
  212. package/dist/queries/react-component-duplicates.d.ts +2 -2
  213. package/dist/queries/react-component-duplicates.js +1 -1
  214. package/dist/queries/react-hook-candidates.d.ts +2 -2
  215. package/dist/queries/react-hook-candidates.js +1 -1
  216. package/dist/queries/react-large-component-pressure.d.ts +2 -2
  217. package/dist/queries/react-large-component-pressure.js +1 -1
  218. package/dist/queries/recent-duplicates.d.ts +2 -2
  219. package/dist/queries/recent-duplicates.js +1 -1
  220. package/dist/queries/redundant-reexports.d.ts +2 -2
  221. package/dist/queries/redundant-reexports.js +1 -1
  222. package/dist/queries/refs.d.ts +2 -2
  223. package/dist/queries/refs.js +1 -1
  224. package/dist/queries/self-audit.d.ts +2 -2
  225. package/dist/queries/self-audit.js +1 -1
  226. package/dist/queries/similar-chains.d.ts +2 -2
  227. package/dist/queries/similar-chains.js +1 -1
  228. package/dist/queries/similar-files.d.ts +2 -2
  229. package/dist/queries/similar-files.js +1 -1
  230. package/dist/queries/similar-signatures.d.ts +2 -2
  231. package/dist/queries/similar-signatures.js +1 -1
  232. package/dist/queries/similar.d.ts +2 -2
  233. package/dist/queries/similar.js +1 -1
  234. package/dist/queries/slice.d.ts +2 -2
  235. package/dist/queries/slice.js +1 -1
  236. package/dist/queries/stale-abstractions.d.ts +2 -2
  237. package/dist/queries/stale-abstractions.js +1 -1
  238. package/dist/queries/stats.d.ts +2 -2
  239. package/dist/queries/surface.d.ts +2 -2
  240. package/dist/queries/surface.js +1 -1
  241. package/dist/queries/symbols.d.ts +2 -2
  242. package/dist/queries/symbols.js +1 -1
  243. package/dist/queries/system.d.ts +2 -2
  244. package/dist/queries/system.js +1 -1
  245. package/dist/queries/test-quality.d.ts +2 -2
  246. package/dist/queries/test-quality.js +1 -1
  247. package/dist/queries/trace.d.ts +2 -2
  248. package/dist/queries/trace.js +1 -1
  249. package/dist/queries/twin-ab.d.ts +14 -3
  250. package/dist/queries/twin-ab.js +1 -1
  251. package/dist/queries/twin-drift.d.ts +2 -2
  252. package/dist/queries/twin-drift.js +1 -1
  253. package/dist/queries/unused-imports.d.ts +2 -2
  254. package/dist/queries/unused-imports.js +1 -1
  255. package/dist/queries/unused-params.d.ts +2 -2
  256. package/dist/queries/unused-params.js +1 -1
  257. package/dist/queries/vue-component-duplicates.d.ts +2 -2
  258. package/dist/queries/vue-component-duplicates.js +1 -1
  259. package/dist/queries/vue-composable-candidates.d.ts +2 -2
  260. package/dist/queries/vue-composable-candidates.js +1 -1
  261. package/dist/queries/vue-large-view-pressure.d.ts +2 -2
  262. package/dist/queries/vue-large-view-pressure.js +1 -1
  263. package/dist/queries/wrapper-candidates.d.ts +2 -2
  264. package/dist/queries/wrapper-candidates.js +1 -1
  265. package/dist/reindex-worker.js +26 -25
  266. package/dist/reindex.d.ts +7 -3
  267. package/dist/reindex.js +34 -33
  268. package/dist/runtime.d.ts +5 -10
  269. package/dist/runtime.js +3 -3
  270. package/dist/rust-semantic-session-server.js +1 -1
  271. package/dist/rust-semantic-session-worker.js +1 -1
  272. package/dist/rust-semantic-worker.js +1 -1
  273. package/dist/{scip-cli-DCvnlZCu.d.ts → scip-cli-BnEwZRLJ.d.ts} +2 -2
  274. package/dist/{symbol-types-BgWU6lhL.d.ts → symbol-types-BIQwfoAx.d.ts} +7 -1
  275. package/dist/typescript-mailbox-worker.js +2 -0
  276. package/dist/watch-server.js +2 -42
  277. package/docs/AGENT_GUIDE.md +28 -5
  278. package/docs/CLI_JSON_OUTPUT.md +176 -3
  279. package/docs/COMMAND_REFERENCE.md +89 -87
  280. package/docs/COMMITTED_RECORD_COMPATIBILITY.md +55 -18
  281. package/docs/DURABILITY.md +88 -38
  282. package/docs/INDEX_GENERATIONS.md +65 -19
  283. package/docs/MAILBOX_LIFECYCLE.md +28 -1
  284. package/docs/REINDEX_METADATA_COMPATIBILITY.md +18 -8
  285. package/docs/SECURITY_MODEL.md +146 -0
  286. package/docs/TELEMETRY_RETENTION.md +16 -4
  287. package/docs/WATCH_REFRESH_REQUESTS.md +34 -21
  288. package/docs/WINDOWS_SIDECAR_RELEASE.md +9 -4
  289. package/docs/analyzer-inventory.md +31 -22
  290. package/docs/analyzer-validation-ledger.md +8 -0
  291. package/docs/schemas/cli-output-page.schema.json +104 -0
  292. package/docs/schemas/outcome-event-record.schema.json +57 -1
  293. package/docs/schemas/project-config.schema.json +82 -1
  294. package/docs/schemas/suppression-record.schema.json +84 -3
  295. package/package.json +9 -8
  296. package/skills/_shared/SKILL.md +5 -3
  297. package/skills/_shared/references/agent-contract-catalog.md +1 -1
  298. package/skills/_shared/references/detector-precision-and-diffgate.md +1 -1
  299. package/skills/scip-audit/SKILL.md +9 -8
  300. package/skills/scip-audit/references/claims.md +1 -1
  301. package/skills/scip-audit/references/cleanup.md +19 -20
  302. package/skills/scip-audit/references/directory.md +4 -4
  303. package/skills/scip-audit/references/frontend.md +10 -10
  304. package/skills/scip-audit/references/twin-drift.md +2 -2
  305. package/skills/scip-diagnose/references/debug.md +8 -8
  306. package/skills/scip-diagnose/references/root-cause.md +3 -3
  307. package/skills/scip-diagnose/references/triage.md +10 -10
  308. package/skills/scip-explore/SKILL.md +4 -4
  309. package/skills/scip-improve/SKILL.md +10 -10
  310. package/skills/scip-improve/references/cleanup-batches.md +3 -3
  311. package/skills/scip-improve/references/directory-moves.md +3 -3
  312. package/skills/scip-improve/references/doc-reconcile.md +1 -1
  313. package/skills/scip-improve/references/frontend-extraction.md +2 -2
  314. package/skills/scip-improve/references/twin-drift.md +3 -3
  315. package/skills/scip-plan/SKILL.md +3 -3
  316. package/skills/scip-plan/references/api-impact.md +5 -5
  317. package/skills/scip-plan/references/conductor.md +2 -2
  318. package/skills/scip-plan/references/hyper-optimization.md +1 -1
  319. package/skills/scip-query/SKILL.md +15 -5
  320. package/skills/scip-setup/references/bootstrap-workflow.md +7 -8
  321. package/skills/scip-setup/references/language-verification.md +2 -2
  322. package/skills/scip-setup/references/per-repo-triage.md +1 -1
  323. package/skills/scip-verify/SKILL.md +16 -11
  324. package/skills/scip-verify/references/calibrate-detectors.md +7 -7
  325. package/dist/chunk-24QNP7MN.js +0 -2
  326. package/dist/chunk-26X7KCJR.js +0 -5
  327. package/dist/chunk-273W2U4Y.js +0 -40
  328. package/dist/chunk-2OXVAGGT.js +0 -3
  329. package/dist/chunk-2ZOCHAL2.js +0 -8
  330. package/dist/chunk-35SQLYCQ.js +0 -2
  331. package/dist/chunk-4CGVLUDP.js +0 -18
  332. package/dist/chunk-4RI4BJGT.js +0 -8
  333. package/dist/chunk-52HQTTPB.js +0 -2
  334. package/dist/chunk-64MNV6AB.js +0 -8
  335. package/dist/chunk-7E3TH5ZN.js +0 -33
  336. package/dist/chunk-7Q6VYYCH.js +0 -2
  337. package/dist/chunk-A63U2W3P.js +0 -3
  338. package/dist/chunk-ADFSIJP2.js +0 -16
  339. package/dist/chunk-AOLE4DYM.js +0 -6
  340. package/dist/chunk-APMMR5Y2.js +0 -2
  341. package/dist/chunk-B5MHCHP3.js +0 -107
  342. package/dist/chunk-DGAGY7RJ.js +0 -60
  343. package/dist/chunk-DGMCFMPG.js +0 -11
  344. package/dist/chunk-E2ZXPB7J.js +0 -38
  345. package/dist/chunk-FKGN4A4E.js +0 -61
  346. package/dist/chunk-G4UQL4CP.js +0 -2
  347. package/dist/chunk-GA64UPMI.js +0 -6
  348. package/dist/chunk-HEBAY673.js +0 -2
  349. package/dist/chunk-HELS7KFF.js +0 -2
  350. package/dist/chunk-IPDCSB6N.js +0 -6
  351. package/dist/chunk-JERWGHQT.js +0 -16
  352. package/dist/chunk-JJJCO4QC.js +0 -945
  353. package/dist/chunk-JZNLMHWY.js +0 -56
  354. package/dist/chunk-K42M2KWT.js +0 -2
  355. package/dist/chunk-KP4KBDVF.js +0 -3
  356. package/dist/chunk-LRTP3DKL.js +0 -3
  357. package/dist/chunk-N3SE646F.js +0 -2
  358. package/dist/chunk-NN4ZIRPK.js +0 -8
  359. package/dist/chunk-P6HBYNBE.js +0 -5
  360. package/dist/chunk-QHKUY4FW.js +0 -2
  361. package/dist/chunk-QHRL4LKM.js +0 -2
  362. package/dist/chunk-SHKZ7OVJ.js +0 -35
  363. package/dist/chunk-TFUU5MQQ.js +0 -2
  364. package/dist/chunk-UXP636P5.js +0 -144
  365. package/dist/chunk-VEVBIAOJ.js +0 -16
  366. package/dist/chunk-VKRQDBW5.js +0 -9
  367. package/dist/chunk-VOQFGC2W.js +0 -67
  368. package/dist/chunk-WMXRRBII.js +0 -8
  369. package/dist/chunk-X3NLZHPA.js +0 -20
  370. package/dist/chunk-XF3KLXN3.js +0 -11
  371. package/dist/chunk-YCPASUCX.js +0 -2
  372. package/dist/chunk-YLVE3SXZ.js +0 -20
  373. package/dist/chunk-Z2LHPIOM.js +0 -2
  374. package/dist/chunk-Z5QQPJ3U.js +0 -30
  375. package/dist/chunk-ZTTISZ7J.js +0 -112
  376. package/dist/command-descriptors-SJDZ7QGR.js +0 -617
  377. package/dist/direct-navigation-HTKOZEOM.js +0 -3
@@ -21,10 +21,15 @@ A claim is an exclusive processing marker for that admitted request. A
21
21
  completion is a durable receipt proving that the attempt associated with the
22
22
  claim finished successfully, or that the request expired before execution.
23
23
 
24
- These records provide at-least-once execution for an accepted, unexpired
25
- request. At-least-once execution means a crash after reindex success but before
26
- the completion receipt may repeat the safe reindex operation; it never means an
27
- unacknowledged request can disappear.
24
+ On hosts that support directory synchronization, these records provide
25
+ at-least-once execution across process, operating-system, and machine failure
26
+ for an accepted, unexpired request. At-least-once execution means a crash after
27
+ reindex success but before the completion receipt may repeat the safe reindex
28
+ operation; it never means an acknowledged request can disappear. On Windows
29
+ hosts where Node cannot synchronize directory handles, admission reports
30
+ `achievedDurability: "file-flushed"` and `directorySync: "unsupported"`:
31
+ process-crash recovery remains intact, but the stronger machine-crash
32
+ namespace guarantee is not claimed.
28
33
 
29
34
  ## Layout
30
35
 
@@ -52,18 +57,22 @@ deadline remain authoritative.
52
57
 
53
58
  ## Lifecycle
54
59
 
55
- 1. The requester durably writes a complete staging record.
56
- 2. It exclusively links that record into `requests/`. A collision is a
60
+ 1. The requester durably establishes the protocol root, `staging/`, and the
61
+ target record directory from the nearest existing ancestor.
62
+ 2. It writes and flushes a complete staging record.
63
+ 3. It exclusively links that record into `requests/`. A collision is a
57
64
  duplicate, not an overwrite.
58
- 3. The watch server, while holding the project watch lock, claims pending,
65
+ 4. It flushes `requests/` before returning accepted and reports the achieved
66
+ platform guarantee.
67
+ 5. The watch server, while holding the project watch lock, claims pending,
59
68
  unexpired requests through exclusive claim records.
60
- 4. It deliberately coalesces one claimed batch into one `watch-demand`
69
+ 6. It deliberately coalesces one claimed batch into one `watch-demand`
61
70
  refresh. Requests arriving while the watcher is busy remain pending.
62
- 5. A successful corresponding reindex writes every completion receipt before
71
+ 7. A successful corresponding reindex writes every completion receipt before
63
72
  removing any claim.
64
- 6. A failed reindex removes its claims without writing completion, making the
73
+ 8. A failed reindex removes its claims without writing completion, making the
65
74
  requests pending after a bounded retry delay.
66
- 7. A successor watch server removes predecessor claims only after acquiring
75
+ 9. A successor watch server removes predecessor claims only after acquiring
67
76
  the same exclusive watch lock. Completed requests remain completed; all
68
77
  other claimed requests become pending.
69
78
 
@@ -76,17 +85,21 @@ retention window.
76
85
 
77
86
  ## Crash and Concurrency Outcomes
78
87
 
79
- | Boundary | Observable outcome |
80
- | --- | --- |
81
- | Crash before exclusive admission | No request was accepted; only staging may remain |
88
+ | Boundary | Observable outcome |
89
+ | ------------------------------------------------ | --------------------------------------------------------------------------------------- |
90
+ | Crash before exclusive admission | No request was accepted; only staging may remain |
82
91
  | Crash after admission before caller sees success | Request remains pending; retrying the same idempotency key returns the admitted request |
83
- | Two callers use one idempotency key | Exactly one immutable request wins |
84
- | Two callers use distinct keys | Both requests remain independently visible and may be coalesced deliberately |
85
- | Crash after claim before reindex | Successor clears the stale claim and retries the request |
86
- | Reindex failure | Claim is released; request remains pending |
87
- | Crash after reindex before completion | Request may execute again; it is never lost |
88
- | Crash after completion before claim removal | Completion prevents replay; successor removes the obsolete claim |
89
- | Activity writer races any row above | Activity changes only `watch-activity.json` and cannot modify request state |
92
+ | Two callers use one idempotency key | Exactly one immutable request wins |
93
+ | Two callers use distinct keys | Both requests remain independently visible and may be coalesced deliberately |
94
+ | Crash after claim before reindex | Successor clears the stale claim and retries the request |
95
+ | Reindex failure | Claim is released; request remains pending |
96
+ | Crash after reindex before completion | Request may execute again; it is never lost |
97
+ | Crash after completion before claim removal | Completion prevents replay; successor removes the obsolete claim |
98
+ | Activity writer races any row above | Activity changes only `watch-activity.json` and cannot modify request state |
99
+
100
+ The first two rows are machine-crash claims only when admission returned
101
+ `directory-durable`. A `file-flushed` result is explicit evidence that the
102
+ host could not commit the complete namespace frontier.
90
103
 
91
104
  ## Compatibility and Diagnostics
92
105
 
@@ -234,10 +234,15 @@ both coordinates and repairs only the absent intended package.
234
234
  The path is stable for one pair of package coordinates. Repacking different
235
235
  bytes, using a different source revision, or selecting a different registry
236
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
237
+ stops before registry work. The record is atomically replaced while the
238
+ release lock is owned. The coordinator reports `directory-durable` when the
239
+ host synchronizes the containing directory and
240
+ `file-flushed; directory sync unsupported` when Windows exposes only the
241
+ bounded file guarantee; a real synchronization failure aborts the run. It is
242
+ intentionally ignored by Git and omitted from the npm package: it is local
243
+ recovery state, not portable release authority. Fresh registry observation,
244
+ immutable npm versions, and exact package identity remain the external safety
245
+ authority regardless of the local result. The normative shape is
241
246
  `docs/schemas/npm-release-state.schema.json`.
242
247
 
243
248
  Current-schema additive fields are tolerated. Malformed JSON, a wrong
@@ -52,7 +52,7 @@ The declared-coupling config has been refreshed after the inventory surfaced old
52
52
  | `wrapper-candidates` | Small production callables with one real external caller, caller fan-in, and boundary-token evidence | Hygiene | Contextual signal, sometimes direct | Single-caller wrappers can be needless indirection, but may also be names, domain/lifecycle boundaries, test seams, or API shaping. Boundary evidence discounts those without hiding them. |
53
53
  | `passthrough-candidates` | Small production callables with exactly one callee, literal pass-through body, runtime-boundary evidence, public-facade evidence, action tier, recommendation, and score count | Hygiene, with `scoreCount` discount | Direct when no boundary or public-facade evidence is present; contextual signal when either exists | Body-shape gate is real. Boundary evidence distinguishes adapter, provider, public, capability, transport, lifecycle, access-policy, and facade-shaped forwarders; public-facade evidence separately identifies package-public or rooted exported passthroughs. |
54
54
  | `stale-abstractions` | Type-like definitions, real consumers, barrel consumers, transitive reachability, definer usage, confidence, staleness kind, action tier, and recommendation | Hygiene | Direct for unused abstractions; contextual signal for one-consumer ownership rows | `0 consumers` is direct repair. `1 consumer` is contextual, including high-confidence misplaced types, because the repair may be move, inline, keep, or document as public contract. |
55
- | `drift` | File dep graph, symbol ref graph, semantic/source import usage, project-owned architecture report, sibling patterns, action tier, policy basis, recommendation | Hygiene | Split by kind | `unused-import` and grouped `architecture-violation` rows are direct repair. `pattern-deviation` rows are contextual signals and remain excluded from health scoring. Undeclared boundary edges, reciprocity, and connected groups appear only in architecture context. |
55
+ | `drift` | File dep graph, symbol ref graph, semantic/source import usage, project-owned architecture report, sibling patterns, action tier, policy basis, recommendation | Hygiene | Split by kind | `unused-import` and grouped `architecture-violation` rows are direct repair. `pattern-deviation` rows are contextual signals and remain excluded from health scoring. Undeclared boundary edges, reciprocity, and connected groups appear only in architecture context. |
56
56
  | `complexity-hotspots` | Production callable LOC, fan-in, fan-out, callee count | Risk | Direct repair pressure | Complexity pressure usually means refactor, but the current score is structural, not cyclomatic. It should be separate from branch-count complexity. |
57
57
  | `co-change` / hidden coupling | Git co-change pairs, dependency edges, declared couplings, file noise filters, partner-class labels, declared-coupling suggestions, commit scope, recency context, commit-subject context, and score-weighted count | Risk, weighted by history strength | Contextual signal | Strong evidence that coordination may be missing, but not proof that extraction or unification is correct. Partner classes, history context, subject context, and score weighting now separate contract-like focused current pairs from broad, stale, or unlabeled history before suggesting declared coupling. |
58
58
  | Suppression inventory | `scip-query: ignore-*` comments in source, plus structured `.scipquery.json` suppressions | Evidence quality axis | Meta signal | Useful precision feedback. High suppressions should reduce trust or weight for that detector family. Structured file-scoped suppressions now validate path freshness. |
@@ -85,19 +85,19 @@ The declared-coupling config has been refreshed after the inventory surfaced old
85
85
 
86
86
  ## Graph, Risk, and Planning Analyzers
87
87
 
88
- | Analyzer | Evidence examined | Recommended role | Evaluation |
89
- | -------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
90
- | `affected` | Transitive symbol impact from a changed symbol | Support analysis | Blast-radius map, not smell. |
91
- | `change-surface` | Definitions in a file plus external consumer counts | Support/risk analysis | Pre-change risk briefing. Useful for planning and score context, not a repair. |
92
- | `plan-context` | Trace, references, call graph, dataflow, deps/rdeps, surface, affected, change-surface, complexity, history | Support analysis | Composite planning bundle. It should not contribute smell score directly. |
93
- | `bottlenecks` | Callable fan-in times fan-out, risk kind, action tier, evidence reasons, recommendation | Contextual signal | Good risk hotspot, not automatic refactor. Output now states `signal` and frames central code as coordination risk rather than repair proof. |
94
- | `hotspots` | Most referenced symbols | Support/contextual signal | Identifies choke points. Not a smell alone. |
95
- | `fan-in` / `fan-out` | Reference counts into symbols or out of files | Support analysis | Raw graph metrics. |
96
- | `coupling` | Shared symbols between two files or top coupled pairs, coupling kind, action tier, evidence reasons, recommendation | Contextual signal | May reveal boundary problems, but shared symbols can be intended. Output now makes the coordination-pressure interpretation explicit. |
97
- | `architecture` | Project-owned boundary paths and dependency rules applied to resolved import and re-export edges, with mapping coverage, policy-row coverage, edge breadth, reciprocity, and SCCs | Split by evidence | Forbidden edges, required-but-missing policy rows, cycles under `requireAcyclic`, and boundaries hiding an internal sub-directory cycle under `requireResolvedBoundaries` are direct policy findings. Unmapped files, reciprocity, and advisory cycles remain report-only signals. |
98
- | `deep-chains` | Longest dependency chains after SCC condensation, suffix de-duplication, chain kind, action tier, evidence reasons, recommendation | Contextual signal | Long chains imply propagation risk, but action depends on layers and ownership. Strict suffix duplicates are now removed from top results. |
99
- | `complexity` | Branch count, cyclomatic estimate, callee count, fan-in, fan-out for one symbol | Direct repair pressure | This is closer to the user-specified "cyclomatic complexity" analyzer than `complexity-hotspots`. Should score strongly when branches/cyclomatic exceed thresholds. |
100
- | `self-audit` | Cheap evidence paths checked against TypeScript compiler oracle | Meta analysis | Measures analyzer accuracy. Should guide trust/weight, not code health directly. |
88
+ | Analyzer | Evidence examined | Recommended role | Evaluation |
89
+ | -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
90
+ | `affected` | Transitive symbol impact from a changed symbol | Support analysis | Blast-radius map, not smell. |
91
+ | `change-surface` | Definitions in a file plus external consumer counts | Support/risk analysis | Pre-change risk briefing. Useful for planning and score context, not a repair. |
92
+ | `plan-context` | Trace, references, call graph, dataflow, deps/rdeps, surface, affected, change-surface, complexity, history | Support analysis | Composite planning bundle. It should not contribute smell score directly. |
93
+ | `bottlenecks` | Callable fan-in times fan-out, risk kind, action tier, evidence reasons, recommendation | Contextual signal | Good risk hotspot, not automatic refactor. Output now states `signal` and frames central code as coordination risk rather than repair proof. |
94
+ | `hotspots` | Most referenced symbols | Support/contextual signal | Identifies choke points. Not a smell alone. |
95
+ | `fan-in` / `fan-out` | Reference counts into symbols or out of files | Support analysis | Raw graph metrics. |
96
+ | `coupling` | Shared symbols between two files or top coupled pairs, coupling kind, action tier, evidence reasons, recommendation | Contextual signal | May reveal boundary problems, but shared symbols can be intended. Output now makes the coordination-pressure interpretation explicit. |
97
+ | `architecture` | Project-owned boundary paths and dependency rules applied to resolved import and re-export edges, with mapping coverage, policy-row coverage, edge breadth, reciprocity, and SCCs | Split by evidence | Forbidden edges, required-but-missing policy rows, cycles under `requireAcyclic`, and boundaries hiding an internal sub-directory cycle under `requireResolvedBoundaries` are direct policy findings. Unmapped files, reciprocity, and advisory cycles remain report-only signals. |
98
+ | `deep-chains` | Longest dependency chains after SCC condensation, suffix de-duplication, chain kind, action tier, evidence reasons, recommendation | Contextual signal | Long chains imply propagation risk, but action depends on layers and ownership. Strict suffix duplicates are now removed from top results. |
99
+ | `complexity` | Branch count, cyclomatic estimate, callee count, fan-in, fan-out for one symbol | Direct repair pressure | This is closer to the user-specified "cyclomatic complexity" analyzer than `complexity-hotspots`. Should score strongly when branches/cyclomatic exceed thresholds. |
100
+ | `self-audit` | Cheap evidence paths checked against TypeScript compiler oracle | Meta analysis | Measures analyzer accuracy. Should guide trust/weight, not code health directly. |
101
101
 
102
102
  ## Navigation and Evidence Providers
103
103
 
@@ -123,14 +123,14 @@ The codebase already avoids some duplicate analysis by sharing kernels:
123
123
 
124
124
  The remaining conceptual overlap is mostly healthy, but needs product labels:
125
125
 
126
- | Overlap family | Members | Same analysis or distinct? | Recommendation |
127
- | -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
128
- | Deletability | `dead`, `isolated`, `cleanup-plan`, `redundant-reexports`, `new-dead` | Distinct evidence scopes over the same core question: can this be removed or must it be wired? | Model as one "deletability" action family with subtypes and confidence. |
129
- | Similarity and reuse | `similar`, `similar-files`, `similar-chains`, `similar-signatures`, `convergence`, React/Vue duplicates, `recent-duplicates`, `echo` | Distinct evidence bases. The risk is UX confusion, not implementation duplication. | Keep separate, but expose basis, action tier, and root-cause groups where pairwise rows repeat. |
130
- | Extraction pressure | `extract-candidates`, React/Vue behavior candidates, large component/view pressure, `incomplete-migration` | Different stages: discover seam, detect duplicated behavior, detect excessive size, catch unfinished migration. | Score unfinished migrations higher than discovery leads. |
131
- | Indirection | `wrapper-candidates`, `passthrough-candidates`, `stale-abstractions` | Related but not the same: single caller, literal forwarding, low-consumer types. | Passthrough and wrapper rows now split by boundary evidence; stale should split by confidence. |
132
- | Architecture/history drift | `architecture`, `drift`, `doc-drift`, `co-change`, `co-change-partner`, `doc-reference` | Same broad problem of things moving out of sync, but sources differ. | Explicit architecture rules are direct; co-change remains signal; doc-reference strength depends on citation kind. |
133
- | Graph risk | `architecture`, `fan-in`, `fan-out`, `hotspots`, `bottlenecks`, `coupling`, `deep-chains`, `change-surface`, `affected` | Mostly layered views of graph pressure. | Treat inferred graph shape as support/context; declared forbidden edges and acyclicity violations are direct policy disagreements. |
126
+ | Overlap family | Members | Same analysis or distinct? | Recommendation |
127
+ | -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
128
+ | Deletability | `dead`, `isolated`, `cleanup-plan`, `redundant-reexports`, `new-dead` | Distinct evidence scopes over the same core question: can this be removed or must it be wired? | Model as one "deletability" action family with subtypes and confidence. |
129
+ | Similarity and reuse | `similar`, `similar-files`, `similar-chains`, `similar-signatures`, `convergence`, React/Vue duplicates, `recent-duplicates`, `echo` | Distinct evidence bases. The risk is UX confusion, not implementation duplication. | Keep separate, but expose basis, action tier, and root-cause groups where pairwise rows repeat. |
130
+ | Extraction pressure | `extract-candidates`, React/Vue behavior candidates, large component/view pressure, `incomplete-migration` | Different stages: discover seam, detect duplicated behavior, detect excessive size, catch unfinished migration. | Score unfinished migrations higher than discovery leads. |
131
+ | Indirection | `wrapper-candidates`, `passthrough-candidates`, `stale-abstractions` | Related but not the same: single caller, literal forwarding, low-consumer types. | Passthrough and wrapper rows now split by boundary evidence; stale should split by confidence. |
132
+ | Architecture/history drift | `architecture`, `drift`, `doc-drift`, `co-change`, `co-change-partner`, `doc-reference` | Same broad problem of things moving out of sync, but sources differ. | Explicit architecture rules are direct; co-change remains signal; doc-reference strength depends on citation kind. |
133
+ | Graph risk | `architecture`, `fan-in`, `fan-out`, `hotspots`, `bottlenecks`, `coupling`, `deep-chains`, `change-surface`, `affected` | Mostly layered views of graph pressure. | Treat inferred graph shape as support/context; declared forbidden edges and acyclicity violations are direct policy disagreements. |
134
134
 
135
135
  ## Score Model Implications
136
136
 
@@ -272,3 +272,12 @@ boundary paths and dependency rows to import-only file edges, retaining edge
272
272
  breadth and representative files. It is report-only in this slice: inferred
273
273
  reciprocity and strongly connected groups do not affect health or diff-gate,
274
274
  and an unconfigured repository receives no implicit source-layer policy.
275
+
276
+ ## 2026-07-26 Diff-Gate Progress Follow-Up
277
+
278
+ The `src/queries/impact/diff-gate.ts` citation remains accurate after bounded
279
+ progress reporting was added. `DIFF_GATE_CHECKS` is still the canonical public
280
+ check list and `diffGate()` still owns check execution; the check-name type and
281
+ process-local observer contract now live in `queries/internal`, while the
282
+ impact query emits start and completion notifications around each executed
283
+ check.
@@ -506,3 +506,11 @@ still overriding it with the content-aware version. And the report described a
506
506
  single-import edge as "incidental rather than load-bearing" — the graph
507
507
  establishes edge breadth, not importance, so it now reports the measurement and
508
508
  says explicitly that breadth alone settles nothing.
509
+
510
+ ## 2026-07-26 Diff-Gate Progress Follow-Up
511
+
512
+ The change-time gate and check-list citations remain accurate. Progress
513
+ instrumentation does not add, remove, or reorder any `DIFF_GATE_CHECKS` entry:
514
+ `diffGate()` emits process-local start and completion notifications around
515
+ each check, while isolated CLI execution turns those notifications into
516
+ diagnostic progress and active-detector timeout evidence.
@@ -0,0 +1,104 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://github.com/ainsleyclark/scip-query/blob/main/docs/schemas/cli-output-page.schema.json",
4
+ "title": "scip-query CLI output page v1",
5
+ "description": "A bounded, resumable page of rendered scip-query output.",
6
+ "type": "object",
7
+ "required": ["kind", "schemaVersion", "producer", "command", "contentType", "page", "content"],
8
+ "properties": {
9
+ "kind": {
10
+ "const": "scip-query-output-page"
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": false
28
+ },
29
+ "command": {
30
+ "type": "string",
31
+ "minLength": 1
32
+ },
33
+ "contentType": {
34
+ "enum": ["text/plain", "application/json"]
35
+ },
36
+ "agentInstruction": {
37
+ "type": "string",
38
+ "minLength": 1,
39
+ "description": "A direct evidence-completeness obligation for an AI agent consuming this page."
40
+ },
41
+ "page": {
42
+ "type": "object",
43
+ "required": [
44
+ "offset",
45
+ "returnedCharacters",
46
+ "totalCharacters",
47
+ "omittedCharacters",
48
+ "remainingCharacters",
49
+ "complete",
50
+ "outputHash"
51
+ ],
52
+ "properties": {
53
+ "offset": {
54
+ "type": "integer",
55
+ "minimum": 0
56
+ },
57
+ "returnedCharacters": {
58
+ "type": "integer",
59
+ "minimum": 0
60
+ },
61
+ "totalCharacters": {
62
+ "type": "integer",
63
+ "minimum": 0
64
+ },
65
+ "omittedCharacters": {
66
+ "type": "integer",
67
+ "minimum": 0
68
+ },
69
+ "remainingCharacters": {
70
+ "type": "integer",
71
+ "minimum": 0
72
+ },
73
+ "complete": {
74
+ "type": "boolean"
75
+ },
76
+ "outputHash": {
77
+ "type": "string",
78
+ "pattern": "^[a-f0-9]{64}$"
79
+ },
80
+ "continuation": {
81
+ "type": "object",
82
+ "required": ["cursor", "command"],
83
+ "properties": {
84
+ "cursor": {
85
+ "type": "string",
86
+ "minLength": 1,
87
+ "maxLength": 4096
88
+ },
89
+ "command": {
90
+ "type": "string",
91
+ "minLength": 1
92
+ }
93
+ },
94
+ "additionalProperties": false
95
+ }
96
+ },
97
+ "additionalProperties": false
98
+ },
99
+ "content": {
100
+ "type": "string"
101
+ }
102
+ },
103
+ "additionalProperties": false
104
+ }
@@ -27,12 +27,68 @@
27
27
  },
28
28
  "comparisonBaseCommit": { "type": "string" },
29
29
  "verifiedAgainstCommit": { "type": "string" },
30
- "symbol": { "type": "string" }
30
+ "symbol": { "type": "string" },
31
+ "gateRunId": { "type": "string", "minLength": 1, "maxLength": 256 },
32
+ "observer": {
33
+ "type": "object",
34
+ "required": ["kind", "authority"],
35
+ "properties": {
36
+ "kind": { "enum": ["local-agent", "local-human", "protected-ci"] },
37
+ "authority": { "enum": ["repository-writable", "protected-external"] },
38
+ "source": { "type": "string", "minLength": 1, "maxLength": 256 }
39
+ },
40
+ "allOf": [
41
+ {
42
+ "if": { "properties": { "authority": { "const": "protected-external" } }, "required": ["authority"] },
43
+ "then": { "properties": { "kind": { "const": "protected-ci" } } }
44
+ }
45
+ ],
46
+ "additionalProperties": true
47
+ },
48
+ "observation": {
49
+ "type": "object",
50
+ "required": ["schemaVersion", "authorityKind", "observedAt", "projectIdentity"],
51
+ "properties": {
52
+ "schemaVersion": { "const": 1 },
53
+ "authorityKind": {
54
+ "enum": ["index-worktree", "index-only", "worktree-only", "process-local"]
55
+ },
56
+ "observedAt": { "type": "string", "format": "date-time" },
57
+ "projectIdentity": { "type": "string", "minLength": 1 },
58
+ "index": {
59
+ "type": "object",
60
+ "required": ["generationIdentity", "source", "alignment"],
61
+ "properties": {
62
+ "generationIdentity": { "type": "string", "minLength": 1 },
63
+ "source": { "enum": ["immutable", "legacy"] },
64
+ "alignment": { "enum": ["not-certified", "leased"] }
65
+ },
66
+ "additionalProperties": true
67
+ },
68
+ "worktree": {
69
+ "type": "object",
70
+ "required": ["identity", "clean"],
71
+ "properties": {
72
+ "identity": { "type": "string", "minLength": 1 },
73
+ "clean": { "type": "boolean" },
74
+ "headCommit": { "type": "string", "minLength": 1 },
75
+ "treeOid": { "type": "string", "minLength": 1 }
76
+ },
77
+ "additionalProperties": true
78
+ }
79
+ },
80
+ "additionalProperties": true
81
+ },
82
+ "suppressionPolicyVersion": { "type": "integer", "minimum": 1 }
31
83
  },
32
84
  "allOf": [
33
85
  {
34
86
  "if": { "required": ["verifiedAgainstCommit"] },
35
87
  "then": { "properties": { "event": { "const": "resolved" } } }
88
+ },
89
+ {
90
+ "if": { "required": ["suppressionPolicyVersion"] },
91
+ "then": { "properties": { "event": { "const": "suppressed" } } }
36
92
  }
37
93
  ],
38
94
  "additionalProperties": true
@@ -143,7 +143,88 @@
143
143
  "file": { "type": "string", "minLength": 1 },
144
144
  "reason": { "type": "string", "minLength": 1 },
145
145
  "expiresAt": { "type": "string", "format": "date-time" },
146
- "createdAt": { "type": "string", "format": "date-time" }
146
+ "createdAt": { "type": "string", "format": "date-time" },
147
+ "decision": {
148
+ "type": "object",
149
+ "required": ["kind", "reasonCode", "decidedBy", "policyVersion", "evidence", "invalidateOn"],
150
+ "additionalProperties": true,
151
+ "properties": {
152
+ "kind": { "const": "automated-adjudication" },
153
+ "reasonCode": {
154
+ "enum": [
155
+ "entry-surface",
156
+ "generated-code",
157
+ "compatibility-shim",
158
+ "reflection-or-registration",
159
+ "test-fixture",
160
+ "intentional-twin",
161
+ "historical-coupling-ended",
162
+ "detector-counterexample"
163
+ ]
164
+ },
165
+ "decidedBy": { "enum": ["agent", "human"] },
166
+ "policyVersion": { "const": 1 },
167
+ "observation": {
168
+ "type": "object",
169
+ "required": ["schemaVersion", "authorityKind", "observedAt", "projectIdentity"],
170
+ "properties": {
171
+ "schemaVersion": { "const": 1 },
172
+ "authorityKind": {
173
+ "enum": ["index-worktree", "index-only", "worktree-only", "process-local"]
174
+ },
175
+ "observedAt": { "type": "string", "format": "date-time" },
176
+ "projectIdentity": { "type": "string", "minLength": 1 },
177
+ "index": {
178
+ "type": "object",
179
+ "required": ["generationIdentity", "source", "alignment"],
180
+ "properties": {
181
+ "generationIdentity": { "type": "string", "minLength": 1 },
182
+ "source": { "enum": ["immutable", "legacy"] },
183
+ "alignment": { "enum": ["not-certified", "leased"] }
184
+ },
185
+ "additionalProperties": true
186
+ },
187
+ "worktree": {
188
+ "type": "object",
189
+ "required": ["identity", "clean"],
190
+ "properties": {
191
+ "identity": { "type": "string", "minLength": 1 },
192
+ "clean": { "type": "boolean" },
193
+ "headCommit": { "type": "string", "minLength": 1 },
194
+ "treeOid": { "type": "string", "minLength": 1 }
195
+ },
196
+ "additionalProperties": true
197
+ }
198
+ },
199
+ "additionalProperties": true
200
+ },
201
+ "evidence": {
202
+ "type": "array",
203
+ "minItems": 1,
204
+ "items": {
205
+ "type": "object",
206
+ "required": ["kind", "referent", "claim"],
207
+ "additionalProperties": true,
208
+ "properties": {
209
+ "kind": { "enum": ["source", "config", "test", "graph"] },
210
+ "referent": { "type": "string", "minLength": 1 },
211
+ "claim": { "type": "string", "minLength": 1 },
212
+ "contentHash": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
213
+ "generation": { "type": "string", "minLength": 1 }
214
+ }
215
+ }
216
+ },
217
+ "invalidateOn": {
218
+ "type": "object",
219
+ "required": ["targetContentChange", "detectorMajorChange"],
220
+ "additionalProperties": true,
221
+ "properties": {
222
+ "targetContentChange": { "type": "boolean" },
223
+ "detectorMajorChange": { "type": "boolean" }
224
+ }
225
+ }
226
+ }
227
+ }
147
228
  },
148
229
  "anyOf": [{ "required": ["id"] }, { "required": ["check"] }]
149
230
  },
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "$id": "https://unpkg.com/scip-query/docs/schemas/suppression-record.schema.json",
4
- "title": "scip-query suppression record v1",
4
+ "title": "scip-query suppression record v2",
5
5
  "description": "A repository-owned policy decision stored as one file under .scipquery/suppressions/.",
6
6
  "type": "object",
7
- "required": ["kind", "schemaVersion", "suppressionIdentity", "writer", "reason", "createdAt"],
7
+ "required": ["kind", "schemaVersion", "suppressionIdentity", "writer", "reason", "createdAt", "decision"],
8
8
  "properties": {
9
9
  "kind": { "const": "scip-query-suppression" },
10
- "schemaVersion": { "const": 1 },
10
+ "schemaVersion": { "const": 2 },
11
11
  "suppressionIdentity": { "type": "string", "minLength": 1 },
12
12
  "writer": {
13
13
  "type": "object",
@@ -22,6 +22,87 @@
22
22
  "check": { "type": "string", "minLength": 1 },
23
23
  "file": { "type": "string", "minLength": 1 },
24
24
  "reason": { "type": "string", "minLength": 1 },
25
+ "decision": {
26
+ "type": "object",
27
+ "required": ["kind", "reasonCode", "decidedBy", "policyVersion", "evidence", "invalidateOn"],
28
+ "properties": {
29
+ "kind": { "const": "automated-adjudication" },
30
+ "reasonCode": {
31
+ "enum": [
32
+ "entry-surface",
33
+ "generated-code",
34
+ "compatibility-shim",
35
+ "reflection-or-registration",
36
+ "test-fixture",
37
+ "intentional-twin",
38
+ "historical-coupling-ended",
39
+ "detector-counterexample"
40
+ ]
41
+ },
42
+ "decidedBy": { "enum": ["agent", "human"] },
43
+ "policyVersion": { "const": 1 },
44
+ "observation": {
45
+ "type": "object",
46
+ "required": ["schemaVersion", "authorityKind", "observedAt", "projectIdentity"],
47
+ "properties": {
48
+ "schemaVersion": { "const": 1 },
49
+ "authorityKind": {
50
+ "enum": ["index-worktree", "index-only", "worktree-only", "process-local"]
51
+ },
52
+ "observedAt": { "type": "string", "format": "date-time" },
53
+ "projectIdentity": { "type": "string", "minLength": 1 },
54
+ "index": {
55
+ "type": "object",
56
+ "required": ["generationIdentity", "source", "alignment"],
57
+ "properties": {
58
+ "generationIdentity": { "type": "string", "minLength": 1 },
59
+ "source": { "enum": ["immutable", "legacy"] },
60
+ "alignment": { "enum": ["not-certified", "leased"] }
61
+ },
62
+ "additionalProperties": true
63
+ },
64
+ "worktree": {
65
+ "type": "object",
66
+ "required": ["identity", "clean"],
67
+ "properties": {
68
+ "identity": { "type": "string", "minLength": 1 },
69
+ "clean": { "type": "boolean" },
70
+ "headCommit": { "type": "string", "minLength": 1 },
71
+ "treeOid": { "type": "string", "minLength": 1 }
72
+ },
73
+ "additionalProperties": true
74
+ }
75
+ },
76
+ "additionalProperties": true
77
+ },
78
+ "evidence": {
79
+ "type": "array",
80
+ "minItems": 1,
81
+ "items": {
82
+ "type": "object",
83
+ "required": ["kind", "referent", "claim"],
84
+ "properties": {
85
+ "kind": { "enum": ["source", "config", "test", "graph"] },
86
+ "referent": { "type": "string", "minLength": 1 },
87
+ "claim": { "type": "string", "minLength": 1 },
88
+ "contentHash": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
89
+ "generation": { "type": "string", "minLength": 1 }
90
+ },
91
+ "additionalProperties": true
92
+ }
93
+ },
94
+ "invalidateOn": {
95
+ "type": "object",
96
+ "required": ["targetContentChange", "detectorMajorChange"],
97
+ "properties": {
98
+ "targetContentChange": { "type": "boolean" },
99
+ "detectorMajorChange": { "type": "boolean" }
100
+ },
101
+ "additionalProperties": true
102
+ }
103
+ },
104
+ "additionalProperties": true
105
+ },
25
106
  "expiresAt": { "type": "string", "format": "date-time" },
26
107
  "createdAt": { "type": "string", "format": "date-time" },
27
108
  "updatedAt": { "type": "string", "format": "date-time" }