@descryy/core 0.4.0 → 0.5.1

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 (361) hide show
  1. package/dist/budget/reply.d.ts +11 -46
  2. package/dist/budget/reply.d.ts.map +1 -1
  3. package/dist/budget/reply.js +10 -39
  4. package/dist/budget/reply.js.map +1 -1
  5. package/dist/budget/size.d.ts +2 -21
  6. package/dist/budget/size.d.ts.map +1 -1
  7. package/dist/budget/size.js +3 -24
  8. package/dist/budget/size.js.map +1 -1
  9. package/dist/capabilities/preconditions.d.ts +7 -68
  10. package/dist/capabilities/preconditions.d.ts.map +1 -1
  11. package/dist/capabilities/preconditions.js +6 -57
  12. package/dist/capabilities/preconditions.js.map +1 -1
  13. package/dist/contracts/engine.d.ts +23 -11
  14. package/dist/contracts/engine.d.ts.map +1 -1
  15. package/dist/contracts/engine.js +23 -11
  16. package/dist/contracts/engine.js.map +1 -1
  17. package/dist/contracts/orphans.d.ts +18 -122
  18. package/dist/contracts/orphans.d.ts.map +1 -1
  19. package/dist/contracts/orphans.js +36 -134
  20. package/dist/contracts/orphans.js.map +1 -1
  21. package/dist/contracts/paths.d.ts +4 -114
  22. package/dist/contracts/paths.d.ts.map +1 -1
  23. package/dist/contracts/paths.js +7 -140
  24. package/dist/contracts/paths.js.map +1 -1
  25. package/dist/contracts/shapes.d.ts +13 -66
  26. package/dist/contracts/shapes.d.ts.map +1 -1
  27. package/dist/contracts/shapes.js +20 -91
  28. package/dist/contracts/shapes.js.map +1 -1
  29. package/dist/governance/budget.d.ts +12 -48
  30. package/dist/governance/budget.d.ts.map +1 -1
  31. package/dist/governance/budget.js +12 -48
  32. package/dist/governance/budget.js.map +1 -1
  33. package/dist/governance/candidate-boundary.d.ts +4 -32
  34. package/dist/governance/candidate-boundary.d.ts.map +1 -1
  35. package/dist/governance/candidate-boundary.js +4 -32
  36. package/dist/governance/candidate-boundary.js.map +1 -1
  37. package/dist/governance/escalation.d.ts +7 -45
  38. package/dist/governance/escalation.d.ts.map +1 -1
  39. package/dist/governance/escalation.js +7 -45
  40. package/dist/governance/escalation.js.map +1 -1
  41. package/dist/governance/fact-boundary.d.ts +7 -49
  42. package/dist/governance/fact-boundary.d.ts.map +1 -1
  43. package/dist/governance/fact-boundary.js +5 -43
  44. package/dist/governance/fact-boundary.js.map +1 -1
  45. package/dist/governance/finding-funnel.d.ts +11 -72
  46. package/dist/governance/finding-funnel.d.ts.map +1 -1
  47. package/dist/governance/finding-funnel.js +9 -68
  48. package/dist/governance/finding-funnel.js.map +1 -1
  49. package/dist/graph/build.d.ts +9 -90
  50. package/dist/graph/build.d.ts.map +1 -1
  51. package/dist/graph/build.js +15 -62
  52. package/dist/graph/build.js.map +1 -1
  53. package/dist/graph/cross-language.d.ts +4 -43
  54. package/dist/graph/cross-language.d.ts.map +1 -1
  55. package/dist/graph/cross-language.js +9 -77
  56. package/dist/graph/cross-language.js.map +1 -1
  57. package/dist/graph/merge.d.ts +8 -88
  58. package/dist/graph/merge.d.ts.map +1 -1
  59. package/dist/graph/merge.js +9 -93
  60. package/dist/graph/merge.js.map +1 -1
  61. package/dist/graph/observed-tests.d.ts +7 -68
  62. package/dist/graph/observed-tests.d.ts.map +1 -1
  63. package/dist/graph/observed-tests.js +5 -60
  64. package/dist/graph/observed-tests.js.map +1 -1
  65. package/dist/graph/persist.d.ts +2 -25
  66. package/dist/graph/persist.d.ts.map +1 -1
  67. package/dist/graph/persist.js +2 -25
  68. package/dist/graph/persist.js.map +1 -1
  69. package/dist/graph/runtime-confirmation.d.ts +14 -91
  70. package/dist/graph/runtime-confirmation.d.ts.map +1 -1
  71. package/dist/graph/runtime-confirmation.js +19 -103
  72. package/dist/graph/runtime-confirmation.js.map +1 -1
  73. package/dist/ledger/mint.d.ts +9 -43
  74. package/dist/ledger/mint.d.ts.map +1 -1
  75. package/dist/ledger/mint.js +15 -65
  76. package/dist/ledger/mint.js.map +1 -1
  77. package/dist/ledger/resolve.d.ts +13 -81
  78. package/dist/ledger/resolve.d.ts.map +1 -1
  79. package/dist/ledger/resolve.js +13 -76
  80. package/dist/ledger/resolve.js.map +1 -1
  81. package/dist/multipr/fingerprint.d.ts +5 -46
  82. package/dist/multipr/fingerprint.d.ts.map +1 -1
  83. package/dist/multipr/fingerprint.js +22 -74
  84. package/dist/multipr/fingerprint.js.map +1 -1
  85. package/dist/multipr/hidden-dependency.d.ts +13 -73
  86. package/dist/multipr/hidden-dependency.d.ts.map +1 -1
  87. package/dist/multipr/hidden-dependency.js +12 -63
  88. package/dist/multipr/hidden-dependency.js.map +1 -1
  89. package/dist/multipr/mechanical.d.ts +25 -160
  90. package/dist/multipr/mechanical.d.ts.map +1 -1
  91. package/dist/multipr/mechanical.js +21 -137
  92. package/dist/multipr/mechanical.js.map +1 -1
  93. package/dist/multipr/migration-heads.d.ts +18 -105
  94. package/dist/multipr/migration-heads.d.ts.map +1 -1
  95. package/dist/multipr/migration-heads.js +15 -84
  96. package/dist/multipr/migration-heads.js.map +1 -1
  97. package/dist/multipr/overlap.d.ts +16 -94
  98. package/dist/multipr/overlap.d.ts.map +1 -1
  99. package/dist/multipr/overlap.js +25 -105
  100. package/dist/multipr/overlap.js.map +1 -1
  101. package/dist/multipr/scope-store.d.ts +15 -80
  102. package/dist/multipr/scope-store.d.ts.map +1 -1
  103. package/dist/multipr/scope-store.js +17 -87
  104. package/dist/multipr/scope-store.js.map +1 -1
  105. package/dist/multipr/superseded.d.ts +10 -95
  106. package/dist/multipr/superseded.d.ts.map +1 -1
  107. package/dist/multipr/superseded.js +7 -60
  108. package/dist/multipr/superseded.js.map +1 -1
  109. package/dist/query/confirmed-facts.d.ts +12 -58
  110. package/dist/query/confirmed-facts.d.ts.map +1 -1
  111. package/dist/query/confirmed-facts.js +8 -47
  112. package/dist/query/confirmed-facts.js.map +1 -1
  113. package/dist/query/declared-value-closure.d.ts +13 -104
  114. package/dist/query/declared-value-closure.d.ts.map +1 -1
  115. package/dist/query/declared-value-closure.js +15 -104
  116. package/dist/query/declared-value-closure.js.map +1 -1
  117. package/dist/query/memory.d.ts +4 -16
  118. package/dist/query/memory.d.ts.map +1 -1
  119. package/dist/query/memory.js +9 -22
  120. package/dist/query/memory.js.map +1 -1
  121. package/dist/query/prominence.d.ts +6 -55
  122. package/dist/query/prominence.d.ts.map +1 -1
  123. package/dist/query/prominence.js +6 -55
  124. package/dist/query/prominence.js.map +1 -1
  125. package/dist/query/provider.d.ts +27 -93
  126. package/dist/query/provider.d.ts.map +1 -1
  127. package/dist/query/provider.js +8 -29
  128. package/dist/query/provider.js.map +1 -1
  129. package/dist/query/queries.d.ts +15 -65
  130. package/dist/query/queries.d.ts.map +1 -1
  131. package/dist/query/queries.js +30 -104
  132. package/dist/query/queries.js.map +1 -1
  133. package/dist/query/refusal-fetch.d.ts +8 -85
  134. package/dist/query/refusal-fetch.d.ts.map +1 -1
  135. package/dist/query/refusal-fetch.js +11 -93
  136. package/dist/query/refusal-fetch.js.map +1 -1
  137. package/dist/query/refusal-questions.d.ts +17 -92
  138. package/dist/query/refusal-questions.d.ts.map +1 -1
  139. package/dist/query/refusal-questions.js +14 -78
  140. package/dist/query/refusal-questions.js.map +1 -1
  141. package/dist/query/resolution-floor.d.ts +3 -23
  142. package/dist/query/resolution-floor.d.ts.map +1 -1
  143. package/dist/query/resolution-floor.js +3 -23
  144. package/dist/query/resolution-floor.js.map +1 -1
  145. package/dist/query/root-cause-score.d.ts +11 -161
  146. package/dist/query/root-cause-score.d.ts.map +1 -1
  147. package/dist/query/root-cause-score.js +6 -137
  148. package/dist/query/root-cause-score.js.map +1 -1
  149. package/dist/query/row-closure-picture.d.ts +5 -67
  150. package/dist/query/row-closure-picture.d.ts.map +1 -1
  151. package/dist/query/row-closure-picture.js +6 -67
  152. package/dist/query/row-closure-picture.js.map +1 -1
  153. package/dist/query/similar-incidents.d.ts +6 -41
  154. package/dist/query/similar-incidents.d.ts.map +1 -1
  155. package/dist/query/similar-incidents.js +15 -69
  156. package/dist/query/similar-incidents.js.map +1 -1
  157. package/dist/query/sqlite.d.ts +3 -7
  158. package/dist/query/sqlite.d.ts.map +1 -1
  159. package/dist/query/sqlite.js +9 -19
  160. package/dist/query/sqlite.js.map +1 -1
  161. package/dist/query/test-coverage.d.ts +5 -45
  162. package/dist/query/test-coverage.d.ts.map +1 -1
  163. package/dist/query/test-coverage.js +10 -53
  164. package/dist/query/test-coverage.js.map +1 -1
  165. package/dist/query/traverse.d.ts +22 -126
  166. package/dist/query/traverse.d.ts.map +1 -1
  167. package/dist/query/traverse.js +25 -126
  168. package/dist/query/traverse.js.map +1 -1
  169. package/dist/query/unresolved.d.ts +19 -164
  170. package/dist/query/unresolved.d.ts.map +1 -1
  171. package/dist/query/unresolved.js +11 -138
  172. package/dist/query/unresolved.js.map +1 -1
  173. package/dist/query/verification-status.d.ts +12 -109
  174. package/dist/query/verification-status.d.ts.map +1 -1
  175. package/dist/query/verification-status.js +9 -99
  176. package/dist/query/verification-status.js.map +1 -1
  177. package/dist/recording/migrate.d.ts +4 -10
  178. package/dist/recording/migrate.d.ts.map +1 -1
  179. package/dist/recording/migrate.js +4 -10
  180. package/dist/recording/migrate.js.map +1 -1
  181. package/dist/recording/reader.d.ts +2 -7
  182. package/dist/recording/reader.d.ts.map +1 -1
  183. package/dist/recording/reader.js +2 -7
  184. package/dist/recording/reader.js.map +1 -1
  185. package/dist/recording/redact.d.ts +6 -57
  186. package/dist/recording/redact.d.ts.map +1 -1
  187. package/dist/recording/redact.js +8 -64
  188. package/dist/recording/redact.js.map +1 -1
  189. package/dist/recording/schema.d.ts +3 -38
  190. package/dist/recording/schema.d.ts.map +1 -1
  191. package/dist/recording/schema.js +3 -38
  192. package/dist/recording/schema.js.map +1 -1
  193. package/dist/recording/writer.d.ts +11 -74
  194. package/dist/recording/writer.d.ts.map +1 -1
  195. package/dist/recording/writer.js +3 -43
  196. package/dist/recording/writer.js.map +1 -1
  197. package/dist/scoping/fanout.d.ts +6 -68
  198. package/dist/scoping/fanout.d.ts.map +1 -1
  199. package/dist/scoping/fanout.js +6 -68
  200. package/dist/scoping/fanout.js.map +1 -1
  201. package/dist/scoping/score.d.ts +20 -70
  202. package/dist/scoping/score.d.ts.map +1 -1
  203. package/dist/scoping/score.js +20 -70
  204. package/dist/scoping/score.js.map +1 -1
  205. package/dist/scoping/tiers.d.ts +4 -16
  206. package/dist/scoping/tiers.d.ts.map +1 -1
  207. package/dist/scoping/tiers.js +4 -16
  208. package/dist/scoping/tiers.js.map +1 -1
  209. package/dist/scoping/traverse.d.ts +3 -25
  210. package/dist/scoping/traverse.d.ts.map +1 -1
  211. package/dist/scoping/traverse.js +14 -49
  212. package/dist/scoping/traverse.js.map +1 -1
  213. package/dist/scoping/weights.d.ts +10 -74
  214. package/dist/scoping/weights.d.ts.map +1 -1
  215. package/dist/scoping/weights.js +14 -86
  216. package/dist/scoping/weights.js.map +1 -1
  217. package/dist/sources/confirmed/incidents.d.ts +5 -35
  218. package/dist/sources/confirmed/incidents.d.ts.map +1 -1
  219. package/dist/sources/confirmed/incidents.js +14 -48
  220. package/dist/sources/confirmed/incidents.js.map +1 -1
  221. package/dist/sources/git/diff.d.ts +93 -63
  222. package/dist/sources/git/diff.d.ts.map +1 -1
  223. package/dist/sources/git/diff.js +200 -81
  224. package/dist/sources/git/diff.js.map +1 -1
  225. package/dist/sources/git/env.d.ts +7 -0
  226. package/dist/sources/git/env.d.ts.map +1 -1
  227. package/dist/sources/git/env.js +10 -11
  228. package/dist/sources/git/env.js.map +1 -1
  229. package/dist/sources/git/history.d.ts +64 -84
  230. package/dist/sources/git/history.d.ts.map +1 -1
  231. package/dist/sources/git/history.js +141 -112
  232. package/dist/sources/git/history.js.map +1 -1
  233. package/dist/sources/git/incidents.d.ts +13 -75
  234. package/dist/sources/git/incidents.d.ts.map +1 -1
  235. package/dist/sources/git/incidents.js +21 -91
  236. package/dist/sources/git/incidents.js.map +1 -1
  237. package/dist/sources/git/index.d.ts +5 -3
  238. package/dist/sources/git/index.d.ts.map +1 -1
  239. package/dist/sources/git/index.js +3 -2
  240. package/dist/sources/git/index.js.map +1 -1
  241. package/dist/sources/git/source.d.ts +9 -79
  242. package/dist/sources/git/source.d.ts.map +1 -1
  243. package/dist/sources/git/source.js +33 -133
  244. package/dist/sources/git/source.js.map +1 -1
  245. package/dist/sources/migrations/across-change.d.ts +94 -0
  246. package/dist/sources/migrations/across-change.d.ts.map +1 -0
  247. package/dist/sources/migrations/across-change.js +278 -0
  248. package/dist/sources/migrations/across-change.js.map +1 -0
  249. package/dist/sources/migrations/dialects.d.ts +20 -36
  250. package/dist/sources/migrations/dialects.d.ts.map +1 -1
  251. package/dist/sources/migrations/dialects.js +11 -36
  252. package/dist/sources/migrations/dialects.js.map +1 -1
  253. package/dist/sources/migrations/index.d.ts +3 -1
  254. package/dist/sources/migrations/index.d.ts.map +1 -1
  255. package/dist/sources/migrations/index.js +2 -1
  256. package/dist/sources/migrations/index.js.map +1 -1
  257. package/dist/sources/migrations/read.d.ts +14 -79
  258. package/dist/sources/migrations/read.d.ts.map +1 -1
  259. package/dist/sources/migrations/read.js +14 -89
  260. package/dist/sources/migrations/read.js.map +1 -1
  261. package/dist/sources/workspace/workspace.d.ts +6 -42
  262. package/dist/sources/workspace/workspace.d.ts.map +1 -1
  263. package/dist/sources/workspace/workspace.js +10 -53
  264. package/dist/sources/workspace/workspace.js.map +1 -1
  265. package/dist/store/driver/driver.d.ts +9 -38
  266. package/dist/store/driver/driver.d.ts.map +1 -1
  267. package/dist/store/driver/driver.js +4 -22
  268. package/dist/store/driver/driver.js.map +1 -1
  269. package/dist/store/driver/node-sqlite.d.ts +3 -12
  270. package/dist/store/driver/node-sqlite.d.ts.map +1 -1
  271. package/dist/store/driver/node-sqlite.js +4 -18
  272. package/dist/store/driver/node-sqlite.js.map +1 -1
  273. package/dist/store/index.d.ts +2 -7
  274. package/dist/store/index.d.ts.map +1 -1
  275. package/dist/store/index.js +4 -10
  276. package/dist/store/index.js.map +1 -1
  277. package/dist/store/migrate.d.ts +14 -50
  278. package/dist/store/migrate.d.ts.map +1 -1
  279. package/dist/store/migrate.js +15 -52
  280. package/dist/store/migrate.js.map +1 -1
  281. package/dist/store/reader.d.ts +19 -84
  282. package/dist/store/reader.d.ts.map +1 -1
  283. package/dist/store/reader.js +25 -92
  284. package/dist/store/reader.js.map +1 -1
  285. package/dist/store/schema.d.ts +14 -76
  286. package/dist/store/schema.d.ts.map +1 -1
  287. package/dist/store/schema.js +14 -76
  288. package/dist/store/schema.js.map +1 -1
  289. package/dist/store/writer.d.ts +14 -88
  290. package/dist/store/writer.d.ts.map +1 -1
  291. package/dist/store/writer.js +29 -123
  292. package/dist/store/writer.js.map +1 -1
  293. package/dist/tiers/certify.d.ts +46 -281
  294. package/dist/tiers/certify.d.ts.map +1 -1
  295. package/dist/tiers/certify.js +46 -226
  296. package/dist/tiers/certify.js.map +1 -1
  297. package/dist/tiers/ladder.d.ts +7 -51
  298. package/dist/tiers/ladder.d.ts.map +1 -1
  299. package/dist/tiers/ladder.js +13 -89
  300. package/dist/tiers/ladder.js.map +1 -1
  301. package/dist/validation/attributes.d.ts +6 -55
  302. package/dist/validation/attributes.d.ts.map +1 -1
  303. package/dist/validation/attributes.js +6 -55
  304. package/dist/validation/attributes.js.map +1 -1
  305. package/dist/validation/config-graph.d.ts +7 -56
  306. package/dist/validation/config-graph.d.ts.map +1 -1
  307. package/dist/validation/config-graph.js +15 -61
  308. package/dist/validation/config-graph.js.map +1 -1
  309. package/dist/validation/env.d.ts +47 -8
  310. package/dist/validation/env.d.ts.map +1 -1
  311. package/dist/validation/env.js +119 -31
  312. package/dist/validation/env.js.map +1 -1
  313. package/dist/validation/index.d.ts +2 -0
  314. package/dist/validation/index.d.ts.map +1 -1
  315. package/dist/validation/index.js +1 -0
  316. package/dist/validation/index.js.map +1 -1
  317. package/dist/validation/join-substitution.d.ts +22 -120
  318. package/dist/validation/join-substitution.d.ts.map +1 -1
  319. package/dist/validation/join-substitution.js +13 -90
  320. package/dist/validation/join-substitution.js.map +1 -1
  321. package/dist/validation/migration-integrity.d.ts +11 -72
  322. package/dist/validation/migration-integrity.d.ts.map +1 -1
  323. package/dist/validation/migration-integrity.js +16 -79
  324. package/dist/validation/migration-integrity.js.map +1 -1
  325. package/dist/validation/migrations.d.ts +22 -101
  326. package/dist/validation/migrations.d.ts.map +1 -1
  327. package/dist/validation/migrations.js +19 -83
  328. package/dist/validation/migrations.js.map +1 -1
  329. package/dist/validation/nodes.d.ts +3 -1
  330. package/dist/validation/nodes.d.ts.map +1 -1
  331. package/dist/validation/nodes.js +3 -1
  332. package/dist/validation/nodes.js.map +1 -1
  333. package/dist/validation/orm-registration.d.ts +106 -0
  334. package/dist/validation/orm-registration.d.ts.map +1 -0
  335. package/dist/validation/orm-registration.js +191 -0
  336. package/dist/validation/orm-registration.js.map +1 -0
  337. package/dist/validation/rollback.d.ts +10 -73
  338. package/dist/validation/rollback.d.ts.map +1 -1
  339. package/dist/validation/rollback.js +15 -82
  340. package/dist/validation/rollback.js.map +1 -1
  341. package/dist/validation/route-drift.d.ts +9 -62
  342. package/dist/validation/route-drift.d.ts.map +1 -1
  343. package/dist/validation/route-drift.js +7 -52
  344. package/dist/validation/route-drift.js.map +1 -1
  345. package/dist/validation/sources.d.ts +16 -94
  346. package/dist/validation/sources.d.ts.map +1 -1
  347. package/dist/validation/sources.js +51 -147
  348. package/dist/validation/sources.js.map +1 -1
  349. package/dist/worker/pool.d.ts +6 -45
  350. package/dist/worker/pool.d.ts.map +1 -1
  351. package/dist/worker/pool.js +5 -42
  352. package/dist/worker/pool.js.map +1 -1
  353. package/dist/worker/protocol.d.ts +7 -20
  354. package/dist/worker/protocol.d.ts.map +1 -1
  355. package/dist/worker/protocol.js +3 -10
  356. package/dist/worker/protocol.js.map +1 -1
  357. package/dist/worker/traversal.worker.d.ts +2 -21
  358. package/dist/worker/traversal.worker.d.ts.map +1 -1
  359. package/dist/worker/traversal.worker.js +4 -23
  360. package/dist/worker/traversal.worker.js.map +1 -1
  361. package/package.json +11 -2
@@ -1,65 +1,31 @@
1
- /**
2
- * `AdjacencyProvider` — the interface every traversal is written against.
3
- *
4
- * Not an abstraction for its own sake. Two consequences follow from it and both
5
- * are structural:
6
- *
7
- * 1. **Most of the engine's tests need no database.** A traversal written
8
- * against SQLite is a traversal that can only be tested with a file, a
9
- * schema, a writer and eventually a worker thread. Written against this, the
10
- * same code runs over an in-memory graph built in four lines.
11
- *
12
- * 2. **Traversal stays identical across backends.** §11.8 chose application-code
13
- * traversal over recursive CTEs precisely so that decay scoring, budgets and
14
- * per-edge weights work the same on SQLite and Postgres. That only holds if
15
- * the traversal never sees which one it is talking to.
16
- *
17
- * `incoming()` takes a limit and a ranking rather than returning everything.
18
- * That is not politeness: the prior-art graphs measured for this build have a
19
- * max in-degree of **1,036** (`append`), and materialising every neighbour of a
20
- * hub turns a 200-node budget into a 10,000-row read.
21
- */
1
+ /** `AdjacencyProvider` — the interface every traversal is written against.
2
+ * Tests run with no database (in-memory graph); traversal stays identical
3
+ * across SQLite/Postgres (§11.8's app-code traversal, not recursive CTEs).
4
+ * `incoming()` takes a limit+ranking, not everything: measured max
5
+ * in-degree is 1,036 (`append`) — full neighbour reads blow the budget. */
22
6
  import type { EdgeType, IREdge, IRNode, NodeType, ResolutionLevel, UnresolvedRef } from "@descryy/ir";
23
7
  export interface AdjacencyOptions {
24
8
  readonly types?: readonly EdgeType[];
25
- /**
26
- * Cap on returned edges, applied *after* ranking by resolution then confidence.
27
- * A cap without a ranking keeps whichever rows the index reached first, which
28
- * is both arbitrary and unstable between runs.
29
- */
9
+ /** Cap on returned edges, applied after ranking by resolution then
10
+ * confidence — an unranked cap would be arbitrary and unstable. */
30
11
  readonly limit?: number;
31
12
  /** Drop edges below this confidence before ranking. */
32
13
  readonly minConfidence?: number;
33
14
  }
34
- /**
35
- * What every query response carries — §27.3's staleness rule.
36
- *
37
- * Threaded through from the start on purpose. Retrofitting a stamp through six
38
- * return shapes later is the kind of change that gets deferred once and then
39
- * never made, and a query layer that cannot say *how old and how well resolved*
40
- * its answer is cannot support the honesty rules that the product is.
41
- */
15
+ /** What every query response carries — §27.3's staleness rule, threaded
16
+ * through from the start (retrofitting it later never happens). Without
17
+ * it a query can't say how stale/resolved an answer is. */
42
18
  export interface GraphStamp {
43
19
  /** The commit the graph was built from. Null on an empty graph. */
44
20
  readonly commitSha: string | null;
45
21
  /** Epoch ms of the most recent write. Null on an empty graph. */
46
22
  readonly graphBuiltAt: number | null;
47
23
  readonly irSchemaVersion: number;
48
- /**
49
- * How many distinct commits the stored graph spans. One is healthy (and so
50
- * is zero, on an empty graph); more than one is a real staleness signal — it
51
- * means part of the graph describes code that is no longer what the other
52
- * part describes. Surfaced as a disclosure note rather than averaged away.
53
- */
24
+ /** Distinct commits the stored graph spans. >1 is a real staleness signal
25
+ * — part of the graph describes code the rest no longer matches. */
54
26
  readonly commitSpread: number;
55
- /**
56
- * The lowest resolution anything in *this answer* rests on.
57
- *
58
- * Per architecture principle 3 the reliability class of a finding is capped by
59
- * the resolution of the edges beneath it, so this is the cap, computed per
60
- * result rather than declared globally. A result touching one R0 edge is an R0
61
- * result no matter how well resolved the rest of it is.
62
- */
27
+ /** Lowest resolution anything in this answer rests on — rule 3's cap,
28
+ * computed per result. One R0 edge makes the whole result R0. */
63
29
  readonly resolutionFloor: ResolutionLevel;
64
30
  }
65
31
  /** Everything a query returns, so no caller can accidentally drop the disclosure. */
@@ -68,10 +34,8 @@ export interface QueryResult<T> {
68
34
  readonly stamp: GraphStamp;
69
35
  /** True when a budget or limit stopped the answer short of complete. */
70
36
  readonly truncated: boolean;
71
- /**
72
- * Things the caller must be told, in plain words — §20.2's "not tested" and
73
- * "not analysable" categories start here. Never empty for a degraded answer.
74
- */
37
+ /** Plain-language things the caller must be told — §20.2's "not tested"/
38
+ * "not analysable" categories start here. Never empty for a degraded answer. */
75
39
  readonly notes: readonly string[];
76
40
  }
77
41
  /** What `nodesOfType` returned, and whether that was all of them. */
@@ -89,58 +53,28 @@ export interface AdjacencyProvider {
89
53
  node(id: string): IRNode | undefined;
90
54
  outgoing(id: string, options?: AdjacencyOptions): readonly IREdge[];
91
55
  incoming(id: string, options?: AdjacencyOptions): readonly IREdge[];
92
- /**
93
- * Every node of one type, capped.
94
- *
95
- * The one query that is not adjacency, and it is here because a whole class of
96
- * question cannot start from a seed. *"Which endpoints does the frontend call
97
- * that no route serves?"* has no node to begin at — the answer is a property
98
- * of the **set**, and the contract engine, the static-validation checks and
99
- * the capability-tier generator all need it.
100
- *
101
- * Capped, and the cap is reported rather than applied quietly. `API_ENDPOINT`
102
- * runs to the hundreds and is safe to enumerate; `FUNCTION` on a large
103
- * monorepo runs to tens of thousands, and a caller that asked for all of them
104
- * and silently received the first thousand would compute a set property over a
105
- * sample and report it as a fact.
106
- */
56
+ /** Every node of one type, capped — the one non-adjacency query, for
57
+ * set-level questions with no seed node. Cap is reported, not silent:
58
+ * a truncated set reported as complete would be a false fact. */
107
59
  nodesOfType(type: NodeType, limit?: number): NodeSet;
108
- /**
109
- * Refusal-ledger rows — DEC-243's question grouper reads these. `classified`
110
- * (default `true`) restricts to rows carrying `attrs` at all, which is every
111
- * row that could ever become a question; see `store/reader.ts#unresolvedRefs`
112
- * for why that is a real filter and not an approximation.
113
- */
60
+ /** Refusal-ledger rows — DEC-243's question grouper reads these.
61
+ * `classified` (default true) keeps only rows carrying `attrs`. */
114
62
  unresolvedRefs(options?: {
115
63
  readonly classified?: boolean;
116
64
  readonly limit?: number;
117
65
  }): UnresolvedRefSet;
118
66
  /** Graph-level provenance. The per-result `resolutionFloor` is computed by the query. */
119
67
  baseStamp(): Omit<GraphStamp, "resolutionFloor">;
120
- /**
121
- * Which producers (adapter/source ids, without the `@version` suffix)
122
- * contributed to this graph at all — a run-level fact, not a claim about
123
- * any one node.
124
- *
125
- * Added for `changesWith`'s disclosure (UAT round 3, B2): whether a given
126
- * `FILE` node's own attrs happen to carry `changeCount` is a fact about
127
- * *that node*, and a merge that a different producer won can leave it
128
- * silent even though `git-history` genuinely ran. "Did git-history run in
129
- * this build" is answerable without touching any one node's attrs, and
130
- * this is that answer.
131
- */
68
+ /** Producers (adapter/source ids) that ran on this graph — a run-level
69
+ * fact. Answers "did git-history run" independent of whether a given
70
+ * node's own attrs happen to carry that producer's output (UAT B2). */
132
71
  sourcesRun(): readonly string[];
133
72
  }
134
73
  /** The cap `nodesOfType` applies when a caller names none. */
135
74
  export declare const DEFAULT_NODE_SET_LIMIT = 5000;
136
- /**
137
- * Rank edges the way every caller wants them: best evidence first, stably.
138
- *
139
- * Resolution outranks confidence because they are not the same axis — a
140
- * type-checked edge at 0.8 is a better fact than a name-matched one at 0.95, and
141
- * §11A.5 exists because v2.0 could not tell those apart. `from`/`to`/`type`
142
- * break the final tie so the order is identical between runs.
143
- */
75
+ /** Ranks edges best-evidence-first, stably. Resolution outranks confidence
76
+ * — a type-checked 0.8 beats a name-matched 0.95 (§11A.5). `from`/`to`/`type`
77
+ * break ties for a stable order. */
144
78
  export declare function rankEdges(edges: readonly IREdge[]): IREdge[];
145
79
  /** Apply type filter, confidence floor, ranking and limit. Shared by both providers. */
146
80
  export declare function applyAdjacencyOptions(edges: readonly IREdge[], options?: AdjacencyOptions): IREdge[];
@@ -1 +1 @@
1
- {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/query/provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEtG,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAC;IACrC;;;;OAIG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,uDAAuD;IACvD,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,UAAU;IACzB,mEAAmE;IACnE,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,iEAAiE;IACjE,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B;;;;;;;OAOG;IACH,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;CAC3C;AAED,qFAAqF;AACrF,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACjB,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,wEAAwE;IACxE,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AAED,qEAAqE;AACrE,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,8EAA8E;IAC9E,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B;AAED,wEAAwE;AACxE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,SAAS,aAAa,EAAE,CAAC;IACxC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACrC,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,SAAS,MAAM,EAAE,CAAC;IACpE,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,SAAS,MAAM,EAAE,CAAC;IACpE;;;;;;;;;;;;;;OAcG;IACH,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACrD;;;;;OAKG;IACH,cAAc,CAAC,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,gBAAgB,CAAC;IACvG,yFAAyF;IACzF,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;IACjD;;;;;;;;;;;OAWG;IACH,UAAU,IAAI,SAAS,MAAM,EAAE,CAAC;CACjC;AAED,8DAA8D;AAC9D,eAAO,MAAM,sBAAsB,OAAQ,CAAC;AAE5C;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAM5D;AAED,wFAAwF;AACxF,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,OAAO,GAAE,gBAAqB,GAC7B,MAAM,EAAE,CAYV"}
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/query/provider.ts"],"names":[],"mappings":"AAAA;;;;4EAI4E;AAE5E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEtG,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAC;IACrC;wEACoE;IACpE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,uDAAuD;IACvD,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AAED;;4DAE4D;AAC5D,MAAM,WAAW,UAAU;IACzB,mEAAmE;IACnE,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,iEAAiE;IACjE,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC;yEACqE;IACrE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B;sEACkE;IAClE,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;CAC3C;AAED,qFAAqF;AACrF,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACjB,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,wEAAwE;IACxE,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B;qFACiF;IACjF,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AAED,qEAAqE;AACrE,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,8EAA8E;IAC9E,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B;AAED,wEAAwE;AACxE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,SAAS,aAAa,EAAE,CAAC;IACxC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACrC,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,SAAS,MAAM,EAAE,CAAC;IACpE,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,SAAS,MAAM,EAAE,CAAC;IACpE;;sEAEkE;IAClE,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACrD;wEACoE;IACpE,cAAc,CAAC,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,gBAAgB,CAAC;IACvG,yFAAyF;IACzF,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;IACjD;;4EAEwE;IACxE,UAAU,IAAI,SAAS,MAAM,EAAE,CAAC;CACjC;AAED,8DAA8D;AAC9D,eAAO,MAAM,sBAAsB,OAAQ,CAAC;AAE5C;;qCAEqC;AACrC,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAM5D;AAED,wFAAwF;AACxF,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,OAAO,GAAE,gBAAqB,GAC7B,MAAM,EAAE,CAYV"}
@@ -1,34 +1,13 @@
1
- /**
2
- * `AdjacencyProvider` — the interface every traversal is written against.
3
- *
4
- * Not an abstraction for its own sake. Two consequences follow from it and both
5
- * are structural:
6
- *
7
- * 1. **Most of the engine's tests need no database.** A traversal written
8
- * against SQLite is a traversal that can only be tested with a file, a
9
- * schema, a writer and eventually a worker thread. Written against this, the
10
- * same code runs over an in-memory graph built in four lines.
11
- *
12
- * 2. **Traversal stays identical across backends.** §11.8 chose application-code
13
- * traversal over recursive CTEs precisely so that decay scoring, budgets and
14
- * per-edge weights work the same on SQLite and Postgres. That only holds if
15
- * the traversal never sees which one it is talking to.
16
- *
17
- * `incoming()` takes a limit and a ranking rather than returning everything.
18
- * That is not politeness: the prior-art graphs measured for this build have a
19
- * max in-degree of **1,036** (`append`), and materialising every neighbour of a
20
- * hub turns a 200-node budget into a 10,000-row read.
21
- */
1
+ /** `AdjacencyProvider` — the interface every traversal is written against.
2
+ * Tests run with no database (in-memory graph); traversal stays identical
3
+ * across SQLite/Postgres (§11.8's app-code traversal, not recursive CTEs).
4
+ * `incoming()` takes a limit+ranking, not everything: measured max
5
+ * in-degree is 1,036 (`append`) — full neighbour reads blow the budget. */
22
6
  /** The cap `nodesOfType` applies when a caller names none. */
23
7
  export const DEFAULT_NODE_SET_LIMIT = 5_000;
24
- /**
25
- * Rank edges the way every caller wants them: best evidence first, stably.
26
- *
27
- * Resolution outranks confidence because they are not the same axis — a
28
- * type-checked edge at 0.8 is a better fact than a name-matched one at 0.95, and
29
- * §11A.5 exists because v2.0 could not tell those apart. `from`/`to`/`type`
30
- * break the final tie so the order is identical between runs.
31
- */
8
+ /** Ranks edges best-evidence-first, stably. Resolution outranks confidence
9
+ * — a type-checked 0.8 beats a name-matched 0.95 (§11A.5). `from`/`to`/`type`
10
+ * break ties for a stable order. */
32
11
  export function rankEdges(edges) {
33
12
  return [...edges].sort((a, b) => {
34
13
  if (a.resolution !== b.resolution)
@@ -1 +1 @@
1
- {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/query/provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAsHH,8DAA8D;AAC9D,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,CAAC;AAE5C;;;;;;;GAOG;AACH,MAAM,UAAU,SAAS,CAAC,KAAwB;IAChD,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAC9B,IAAI,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,UAAU;YAAE,OAAO,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC;QACtE,IAAI,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,UAAU;YAAE,OAAO,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC;QACtE,OAAO,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAChF,CAAC,CAAC,CAAC;AACL,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,qBAAqB,CACnC,KAAwB,EACxB,UAA4B,EAAE;IAE9B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAC5B,IAAI,QAAQ,GACV,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QACvC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;QACZ,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAClD,IAAI,OAAO,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,OAAO,CAAC,aAAa,CAAC;QACpC,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,KAAK,CAAC,CAAC;IAC3D,CAAC;IACD,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IACnC,OAAO,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5F,CAAC"}
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/query/provider.ts"],"names":[],"mappings":"AAAA;;;;4EAI4E;AAyE5E,8DAA8D;AAC9D,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,CAAC;AAE5C;;qCAEqC;AACrC,MAAM,UAAU,SAAS,CAAC,KAAwB;IAChD,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAC9B,IAAI,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,UAAU;YAAE,OAAO,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC;QACtE,IAAI,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,UAAU;YAAE,OAAO,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC;QACtE,OAAO,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAChF,CAAC,CAAC,CAAC;AACL,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,qBAAqB,CACnC,KAAwB,EACxB,UAA4B,EAAE;IAE9B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAC5B,IAAI,QAAQ,GACV,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QACvC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;QACZ,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAClD,IAAI,OAAO,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,OAAO,CAAC,aAAa,CAAC;QACpC,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,KAAK,CAAC,CAAC;IAC3D,CAAC;IACD,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IACnC,OAAO,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5F,CAAC"}
@@ -1,20 +1,8 @@
1
- /**
2
- * The six query types of architecture §11.9, plus one added since: §18's
3
- * `get_git_history`/`get_git_diff` named a real gap — `CHANGES_WITH` edges
4
- * existed in the graph, produced by `analyze`'s git source, with no query
5
- * reading them per node. `changesWith` (below) is that query. It is scoped to
6
- * the stored co-change graph, never a live `git log`/`git diff` call — a new
7
- * query over an existing edge type, not a new capability.
8
- *
9
- * Every one returns a `QueryResult`, so no caller can take the answer without
10
- * the disclosure attached to it. That is the point of the envelope: §27.3's
11
- * staleness rule and principle 3's resolution cap are not reporting concerns
12
- * bolted on later, they are properties of the answer itself.
13
- *
14
- * One of the seven is **deliberately incomplete in this build** and says so —
15
- * see `rootCauseSearch`. Reporting a partial answer as a whole one is the
16
- * exact failure the honest-degradation rule exists to prevent.
17
- */
1
+ /** §11.9's six query types plus `changesWith` (a 7th, added for the
2
+ * `CHANGES_WITH` gap — scoped to the stored co-change graph, never a live
3
+ * git call). Every query returns a `QueryResult`: §27.3 staleness and
4
+ * rule 3's resolution cap are properties of the answer, not bolted on.
5
+ * `rootCauseSearch` is deliberately incomplete here and discloses it. */
18
6
  import type { EdgeType, IRNode } from "@descryy/ir";
19
7
  import type { AdjacencyProvider, QueryResult } from "./provider.ts";
20
8
  import { type TraversalOptions } from "./traverse.ts";
@@ -35,33 +23,16 @@ export interface RootCauseMatch {
35
23
  readonly incident: IRNode;
36
24
  readonly via: EdgeType;
37
25
  }
38
- /**
39
- * Incidents correlated with a node, by graph edges only.
40
- *
41
- * **Incomplete by design in this build, and the caller is told so.** §11.9's
42
- * root-cause query is "incident **plus embedding match**", and this build has no
43
- * vector store — `embeddings` is a pointer table, since §8.2 keeps vectors in
44
- * pgvector or a local extension and a column of serialised floats with no index
45
- * is a scan rather than a search.
46
- *
47
- * So this answers the structural half and discloses the other. Returning it
48
- * silently as "root cause search" would report "we found no similar incident"
49
- * when the truth is "we did not look the way we said we would" — §20.2 keeps
50
- * those in different categories for a reason.
51
- */
26
+ /** Incidents correlated with a node, by graph edges only — deliberately
27
+ * incomplete: §11.9 wants incident + embedding match, but this build has
28
+ * no vector store (§8.2). Discloses the gap, not "no similar incident" (§20.2). */
52
29
  export declare function rootCauseSearch(provider: AdjacencyProvider, nodeId: string): QueryResult<RootCauseMatch[]>;
53
30
  export declare function testsCovering(provider: AdjacencyProvider, nodeId: string, options?: {
54
31
  maxDepth?: number;
55
32
  budget?: number;
56
33
  }): QueryResult<IRNode[]>;
57
- /**
58
- * The four edge types that carry data rather than control.
59
- *
60
- * Exported because a caller that discloses *what it walked* must name the same
61
- * list this walk uses. A second copy in the MCP tool would drift, and the note
62
- * would then describe a walk that did not run — the report-the-run rule applied
63
- * to a constant instead of to a header.
64
- */
34
+ /** Edge types that carry data, not control. Exported so a caller
35
+ * disclosing "what it walked" names this same list — a second copy would drift. */
65
36
  export declare const DATA_FLOW_EDGE_TYPES: readonly ["PROPAGATES_TO", "READS", "WRITES", "RETURNS"];
66
37
  export declare function dataFlowFrom(provider: AdjacencyProvider, nodeId: string, options?: TraversalOptions): QueryResult<{
67
38
  node: IRNode;
@@ -81,12 +52,8 @@ export interface ChangeRisk {
81
52
  readonly tests: IRNode[];
82
53
  readonly untested: IRNode[];
83
54
  }
84
- /**
85
- * The scoped subgraph, ranked, intersected with `TESTS` edges.
86
- *
87
- * The ranking weights are Step 12's; this composes the primitives so that step
88
- * supplies a weight function rather than a second traversal.
89
- */
55
+ /** Scoped subgraph, ranked, intersected with `TESTS` edges — composes the
56
+ * primitives so Step 12 supplies a weight function, not a second traversal. */
90
57
  export declare function changeRisk(provider: AdjacencyProvider, changed: readonly string[], options?: ImpactOptions): QueryResult<ChangeRisk>;
91
58
  export interface CoChange {
92
59
  readonly node: IRNode;
@@ -95,25 +62,8 @@ export interface CoChange {
95
62
  /** `support` divided by the more-frequently-changed file's own total — DEC-036/§11.7. */
96
63
  readonly confidence: number;
97
64
  }
98
- /**
99
- * `CHANGES_WITH` edges touching one `FILE` node, in either direction.
100
- *
101
- * `CHANGES_WITH` is symmetric but stored once, `from` the lexicographically
102
- * smaller path (DEC-036) — reading only `provider.outgoing` would silently
103
- * miss every pair where this file sorts second. Both `outgoing` and
104
- * `incoming` are read here so the caller never has to know which side of the
105
- * pair this file landed on; `traverse.ts`'s `neighbours()` does the identical
106
- * thing for `direction: "both"`, but a one-hop, unscored list is what this
107
- * question actually asks — walking it through `bfs` would return `Reached`
108
- * entries with no `support`/`confidence` to report, since those live in
109
- * `attrs`, not in the traversal primitives' own `Reached` shape.
110
- *
111
- * Answers only what the stored graph holds: co-change is windowed by however
112
- * far back the git source read (`GitSourceOptions`, not this function's
113
- * concern), and a pair below `minSupport`/`minConfidence` at ingest time
114
- * never became an edge at all — silence here does not mean the files never
115
- * changed together, only that they did not clear the threshold recorded when
116
- * the graph was built.
117
- */
65
+ /** `CHANGES_WITH` edges touching one `FILE`, either direction — stored once
66
+ * from the lexicographically smaller path (DEC-036), so both directions
67
+ * must be read. Windowed/thresholded at ingest — silence ≠ "never co-changed." */
118
68
  export declare function changesWith(provider: AdjacencyProvider, nodeId: string): QueryResult<CoChange[]>;
119
69
  //# sourceMappingURL=queries.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../src/query/queries.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../src/query/queries.ts"],"names":[],"mappings":"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"}
@@ -1,20 +1,8 @@
1
- /**
2
- * The six query types of architecture §11.9, plus one added since: §18's
3
- * `get_git_history`/`get_git_diff` named a real gap — `CHANGES_WITH` edges
4
- * existed in the graph, produced by `analyze`'s git source, with no query
5
- * reading them per node. `changesWith` (below) is that query. It is scoped to
6
- * the stored co-change graph, never a live `git log`/`git diff` call — a new
7
- * query over an existing edge type, not a new capability.
8
- *
9
- * Every one returns a `QueryResult`, so no caller can take the answer without
10
- * the disclosure attached to it. That is the point of the envelope: §27.3's
11
- * staleness rule and principle 3's resolution cap are not reporting concerns
12
- * bolted on later, they are properties of the answer itself.
13
- *
14
- * One of the seven is **deliberately incomplete in this build** and says so —
15
- * see `rootCauseSearch`. Reporting a partial answer as a whole one is the
16
- * exact failure the honest-degradation rule exists to prevent.
17
- */
1
+ /** §11.9's six query types plus `changesWith` (a 7th, added for the
2
+ * `CHANGES_WITH` gap — scoped to the stored co-change graph, never a live
3
+ * git call). Every query returns a `QueryResult`: §27.3 staleness and
4
+ * rule 3's resolution cap are properties of the answer, not bolted on.
5
+ * `rootCauseSearch` is deliberately incomplete here and discloses it. */
18
6
  import { GIT_SOURCE_ID } from "../sources/git/source.js";
19
7
  import { createResolutionFloor } from "./resolution-floor.js";
20
8
  import { bfs, findPath, weightedBfs } from "./traverse.js";
@@ -44,10 +32,8 @@ export function impactOf(provider, seeds, options = {}) {
44
32
  ...options,
45
33
  ...(options.weightFor === undefined ? {} : { weightFor: options.weightFor }),
46
34
  });
47
- // Direction is `in` by default and that is not a typo: "what breaks if this
48
- // changes" walks from the changed node to its *callers*, not its callees. A
49
- // function's dependencies are unaffected by it changing; its dependents are
50
- // the blast radius.
35
+ // `in` by default is not a typo: "what breaks if this changes" walks to
36
+ // *callers*, not callees — dependents are the blast radius, not dependencies.
51
37
  const notes = [];
52
38
  if (outcome.resolutionFloor <= 1) {
53
39
  notes.push(`This blast radius rests on edges resolved no better than R${outcome.resolutionFloor}. ` +
@@ -56,20 +42,9 @@ export function impactOf(provider, seeds, options = {}) {
56
42
  }
57
43
  return result(provider, hydrate(provider, outcome.reached), outcome.resolutionFloor, outcome.truncated, notes);
58
44
  }
59
- /**
60
- * Incidents correlated with a node, by graph edges only.
61
- *
62
- * **Incomplete by design in this build, and the caller is told so.** §11.9's
63
- * root-cause query is "incident **plus embedding match**", and this build has no
64
- * vector store — `embeddings` is a pointer table, since §8.2 keeps vectors in
65
- * pgvector or a local extension and a column of serialised floats with no index
66
- * is a scan rather than a search.
67
- *
68
- * So this answers the structural half and discloses the other. Returning it
69
- * silently as "root cause search" would report "we found no similar incident"
70
- * when the truth is "we did not look the way we said we would" — §20.2 keeps
71
- * those in different categories for a reason.
72
- */
45
+ /** Incidents correlated with a node, by graph edges only — deliberately
46
+ * incomplete: §11.9 wants incident + embedding match, but this build has
47
+ * no vector store (§8.2). Discloses the gap, not "no similar incident" (§20.2). */
73
48
  export function rootCauseSearch(provider, nodeId) {
74
49
  const types = ["INCIDENT_CORRELATED", "FIXED_BY"];
75
50
  const matches = [];
@@ -92,13 +67,10 @@ export function rootCauseSearch(provider, nodeId) {
92
67
  "not appear here. Absence is not evidence.",
93
68
  ]);
94
69
  }
95
- // ---------------------------------------------------------------------------
96
70
  // 3. Test discovery — "what tests cover this?"
97
- // ---------------------------------------------------------------------------
98
71
  export function testsCovering(provider, nodeId, options = {}) {
99
- // `TESTS` edges inward, transitively: a test covering a handler also covers
100
- // what the handler calls, and stopping at depth 1 would report a changed
101
- // helper as untested when a test does exercise it.
72
+ // `TESTS` edges inward, transitively — a test covering a handler also
73
+ // covers what it calls; depth 1 alone would misreport a helper as untested.
102
74
  const outcome = bfs(provider, [nodeId], {
103
75
  direction: "in",
104
76
  types: ["TESTS", "CALLS"],
@@ -119,17 +91,9 @@ export function testsCovering(provider, nodeId, options = {}) {
119
91
  }
120
92
  return result(provider, tests, outcome.resolutionFloor, outcome.truncated, notes);
121
93
  }
122
- // ---------------------------------------------------------------------------
123
94
  // 4. Data flow — "where does this field end up?"
124
- // ---------------------------------------------------------------------------
125
- /**
126
- * The four edge types that carry data rather than control.
127
- *
128
- * Exported because a caller that discloses *what it walked* must name the same
129
- * list this walk uses. A second copy in the MCP tool would drift, and the note
130
- * would then describe a walk that did not run — the report-the-run rule applied
131
- * to a constant instead of to a header.
132
- */
95
+ /** Edge types that carry data, not control. Exported so a caller
96
+ * disclosing "what it walked" names this same list — a second copy would drift. */
133
97
  export const DATA_FLOW_EDGE_TYPES = ["PROPAGATES_TO", "READS", "WRITES", "RETURNS"];
134
98
  export function dataFlowFrom(provider, nodeId, options = {}) {
135
99
  const outcome = bfs(provider, [nodeId], {
@@ -146,22 +110,14 @@ export function dataFlowFrom(provider, nodeId, options = {}) {
146
110
  }
147
111
  return result(provider, hydrate(provider, outcome.reached), outcome.resolutionFloor, outcome.truncated, notes);
148
112
  }
149
- // ---------------------------------------------------------------------------
150
113
  // 5. API tracing — "how does this work end to end?"
151
- // ---------------------------------------------------------------------------
152
114
  export function traceApi(provider, fromNodeId, toNodeId, options = {}) {
153
115
  const edges = findPath(provider, fromNodeId, toNodeId, { direction: "both", ...options });
154
116
  const ids = edges.length === 0 ? [] : [fromNodeId];
155
117
  for (const e of edges) {
156
- // Each hop may be traversed in either direction, so the far end is
157
- // whichever of the two is not wherever the walk actually is right now —
158
- // tracked from `ids` itself, not re-derived from the previous edge's own
159
- // `.to`, which is only correct when every hop happens to go forward.
160
- // `direction: "both"` exists precisely so a hop can go either way (e.g.
161
- // an incoming SERVES_API followed by an outgoing CALLS), and the old
162
- // `edges[i - 1]!.to` comparison silently re-picked the node just left
163
- // whenever the previous hop was traversed backward, duplicating it in
164
- // the path instead of advancing.
118
+ // Far end tracked from `ids` itself, not `edge.to` — `direction: "both"`
119
+ // means a hop can go either way, and `.to` alone silently re-picked the
120
+ // node just left (duplicating it) whenever a hop went backward. Bug fix.
165
121
  const current = ids[ids.length - 1];
166
122
  ids.push(e.from === current ? e.to : e.from);
167
123
  }
@@ -171,9 +127,8 @@ export function traceApi(provider, fromNodeId, toNodeId, options = {}) {
171
127
  if (node !== undefined)
172
128
  path.push(node);
173
129
  }
174
- // R0 when no path was found. The note below already says nothing was
175
- // traversed; stamping R4 beside it said the opposite in the field the
176
- // reliability cap is actually derived from.
130
+ // R0 when no path found — stamping R4 here would contradict the "nothing
131
+ // traversed" note in the field the reliability cap is derived from.
177
132
  const floor = createResolutionFloor();
178
133
  for (const edge of edges)
179
134
  floor.observe(edge.resolution);
@@ -183,12 +138,8 @@ export function traceApi(provider, fromNodeId, toNodeId, options = {}) {
183
138
  : [];
184
139
  return result(provider, { path, hops: edges.length }, floor.value(), false, notes);
185
140
  }
186
- /**
187
- * The scoped subgraph, ranked, intersected with `TESTS` edges.
188
- *
189
- * The ranking weights are Step 12's; this composes the primitives so that step
190
- * supplies a weight function rather than a second traversal.
191
- */
141
+ /** Scoped subgraph, ranked, intersected with `TESTS` edges — composes the
142
+ * primitives so Step 12 supplies a weight function, not a second traversal. */
192
143
  export function changeRisk(provider, changed, options = {}) {
193
144
  const impact = impactOf(provider, changed, options);
194
145
  const tests = new Map();
@@ -221,26 +172,9 @@ export function changeRisk(provider, changed, options = {}) {
221
172
  notes,
222
173
  };
223
174
  }
224
- /**
225
- * `CHANGES_WITH` edges touching one `FILE` node, in either direction.
226
- *
227
- * `CHANGES_WITH` is symmetric but stored once, `from` the lexicographically
228
- * smaller path (DEC-036) — reading only `provider.outgoing` would silently
229
- * miss every pair where this file sorts second. Both `outgoing` and
230
- * `incoming` are read here so the caller never has to know which side of the
231
- * pair this file landed on; `traverse.ts`'s `neighbours()` does the identical
232
- * thing for `direction: "both"`, but a one-hop, unscored list is what this
233
- * question actually asks — walking it through `bfs` would return `Reached`
234
- * entries with no `support`/`confidence` to report, since those live in
235
- * `attrs`, not in the traversal primitives' own `Reached` shape.
236
- *
237
- * Answers only what the stored graph holds: co-change is windowed by however
238
- * far back the git source read (`GitSourceOptions`, not this function's
239
- * concern), and a pair below `minSupport`/`minConfidence` at ingest time
240
- * never became an edge at all — silence here does not mean the files never
241
- * changed together, only that they did not clear the threshold recorded when
242
- * the graph was built.
243
- */
175
+ /** `CHANGES_WITH` edges touching one `FILE`, either direction — stored once
176
+ * from the lexicographically smaller path (DEC-036), so both directions
177
+ * must be read. Windowed/thresholded at ingest — silence ≠ "never co-changed." */
244
178
  export function changesWith(provider, nodeId) {
245
179
  const edges = [
246
180
  ...provider.outgoing(nodeId, { types: ["CHANGES_WITH"] }),
@@ -262,13 +196,9 @@ export function changesWith(provider, nodeId) {
262
196
  const data = [...byOther.values()].sort((a, b) => b.support - a.support || a.node.id.localeCompare(b.node.id));
263
197
  const notes = [];
264
198
  if (data.length === 0) {
265
- // This note used to claim an ambiguity the graph does not actually have.
266
- // It said the query "cannot tell apart" a file below the thresholds from a
267
- // graph built without git history — but the `FILE` node's own
268
- // `changeCount` is written by the git-history source and by nothing else,
269
- // so its presence *is* the evidence that history ran for this file. UAT
270
- // Phase 3 item 6: a 21-commit file came back empty here and the caller was
271
- // told the reason was unknowable, when half of it was already on the node.
199
+ // The `FILE` node's own `changeCount` is written only by the git-history
200
+ // source, so its presence is evidence history ran for this file (UAT
201
+ // Phase 3 item 6: previously reported "unknowable" when this was known).
272
202
  const changeCount = provider.node(nodeId)?.attrs?.["changeCount"];
273
203
  if (typeof changeCount === "number" && changeCount > 0) {
274
204
  notes.push(`No CHANGES_WITH edge touches this node, and git history did run for it: the graph records ` +
@@ -281,13 +211,9 @@ export function changesWith(provider, nodeId) {
281
211
  "coupling to everything) and does mean the busiest files report the fewest partners.");
282
212
  }
283
213
  else if (provider.sourcesRun().includes(GIT_SOURCE_ID)) {
284
- // UAT round 3, B2: a node's own attrs can go silent on `changeCount`
285
- // for a reason that has nothing to do with whether history ran — a
286
- // second producer (`confirmed-incidents`, most often) can win the
287
- // merge tie-break for this same FILE id and simply not carry the key.
288
- // "Was git-history among this build's sources" is a run-level fact,
289
- // answerable without trusting any one node, so it is asked directly
290
- // instead of inferred from this node's silence.
214
+ // UAT B2: `changeCount` can go silent for reasons unrelated to whether
215
+ // history ran (a merge tie-break winner, e.g. `confirmed-incidents`,
216
+ // may not carry it) — so "did git-history run" is asked directly.
291
217
  notes.push("No CHANGES_WITH edge touches this node, and this file's own FILE node carries no recorded " +
292
218
  "change count — but git history did run in this build (it is among this graph's sources), " +
293
219
  "so that is not evidence it was skipped. Either this file genuinely had zero commits in the " +
@@ -1 +1 @@
1
- {"version":3,"file":"queries.js","sourceRoot":"","sources":["../../src/query/queries.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"queries.js","sourceRoot":"","sources":["../../src/query/queries.ts"],"names":[],"mappings":"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"}