@descryy/core 0.3.0 → 0.5.0

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 (362) 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 +26 -12
  14. package/dist/contracts/engine.d.ts.map +1 -1
  15. package/dist/contracts/engine.js +28 -11
  16. package/dist/contracts/engine.js.map +1 -1
  17. package/dist/contracts/index.d.ts +1 -1
  18. package/dist/contracts/index.d.ts.map +1 -1
  19. package/dist/contracts/index.js.map +1 -1
  20. package/dist/contracts/orphans.d.ts +28 -77
  21. package/dist/contracts/orphans.d.ts.map +1 -1
  22. package/dist/contracts/orphans.js +124 -94
  23. package/dist/contracts/orphans.js.map +1 -1
  24. package/dist/contracts/paths.d.ts +4 -114
  25. package/dist/contracts/paths.d.ts.map +1 -1
  26. package/dist/contracts/paths.js +7 -140
  27. package/dist/contracts/paths.js.map +1 -1
  28. package/dist/contracts/shapes.d.ts +13 -66
  29. package/dist/contracts/shapes.d.ts.map +1 -1
  30. package/dist/contracts/shapes.js +20 -91
  31. package/dist/contracts/shapes.js.map +1 -1
  32. package/dist/governance/budget.d.ts +12 -48
  33. package/dist/governance/budget.d.ts.map +1 -1
  34. package/dist/governance/budget.js +12 -48
  35. package/dist/governance/budget.js.map +1 -1
  36. package/dist/governance/candidate-boundary.d.ts +4 -32
  37. package/dist/governance/candidate-boundary.d.ts.map +1 -1
  38. package/dist/governance/candidate-boundary.js +4 -32
  39. package/dist/governance/candidate-boundary.js.map +1 -1
  40. package/dist/governance/escalation.d.ts +7 -45
  41. package/dist/governance/escalation.d.ts.map +1 -1
  42. package/dist/governance/escalation.js +7 -45
  43. package/dist/governance/escalation.js.map +1 -1
  44. package/dist/governance/fact-boundary.d.ts +7 -49
  45. package/dist/governance/fact-boundary.d.ts.map +1 -1
  46. package/dist/governance/fact-boundary.js +5 -43
  47. package/dist/governance/fact-boundary.js.map +1 -1
  48. package/dist/governance/finding-funnel.d.ts +11 -72
  49. package/dist/governance/finding-funnel.d.ts.map +1 -1
  50. package/dist/governance/finding-funnel.js +9 -68
  51. package/dist/governance/finding-funnel.js.map +1 -1
  52. package/dist/graph/build.d.ts +13 -75
  53. package/dist/graph/build.d.ts.map +1 -1
  54. package/dist/graph/build.js +0 -0
  55. package/dist/graph/build.js.map +1 -1
  56. package/dist/graph/cross-language.d.ts +4 -43
  57. package/dist/graph/cross-language.d.ts.map +1 -1
  58. package/dist/graph/cross-language.js +9 -77
  59. package/dist/graph/cross-language.js.map +1 -1
  60. package/dist/graph/index.d.ts +1 -1
  61. package/dist/graph/index.d.ts.map +1 -1
  62. package/dist/graph/merge.d.ts +8 -76
  63. package/dist/graph/merge.d.ts.map +1 -1
  64. package/dist/graph/merge.js +27 -77
  65. package/dist/graph/merge.js.map +1 -1
  66. package/dist/graph/observed-tests.d.ts +7 -68
  67. package/dist/graph/observed-tests.d.ts.map +1 -1
  68. package/dist/graph/observed-tests.js +5 -60
  69. package/dist/graph/observed-tests.js.map +1 -1
  70. package/dist/graph/persist.d.ts +2 -25
  71. package/dist/graph/persist.d.ts.map +1 -1
  72. package/dist/graph/persist.js +2 -25
  73. package/dist/graph/persist.js.map +1 -1
  74. package/dist/graph/runtime-confirmation.d.ts +14 -91
  75. package/dist/graph/runtime-confirmation.d.ts.map +1 -1
  76. package/dist/graph/runtime-confirmation.js +19 -103
  77. package/dist/graph/runtime-confirmation.js.map +1 -1
  78. package/dist/ledger/mint.d.ts +9 -43
  79. package/dist/ledger/mint.d.ts.map +1 -1
  80. package/dist/ledger/mint.js +15 -65
  81. package/dist/ledger/mint.js.map +1 -1
  82. package/dist/ledger/resolve.d.ts +13 -81
  83. package/dist/ledger/resolve.d.ts.map +1 -1
  84. package/dist/ledger/resolve.js +13 -76
  85. package/dist/ledger/resolve.js.map +1 -1
  86. package/dist/multipr/fingerprint.d.ts +5 -46
  87. package/dist/multipr/fingerprint.d.ts.map +1 -1
  88. package/dist/multipr/fingerprint.js +22 -74
  89. package/dist/multipr/fingerprint.js.map +1 -1
  90. package/dist/multipr/hidden-dependency.d.ts +13 -73
  91. package/dist/multipr/hidden-dependency.d.ts.map +1 -1
  92. package/dist/multipr/hidden-dependency.js +12 -63
  93. package/dist/multipr/hidden-dependency.js.map +1 -1
  94. package/dist/multipr/mechanical.d.ts +25 -160
  95. package/dist/multipr/mechanical.d.ts.map +1 -1
  96. package/dist/multipr/mechanical.js +21 -137
  97. package/dist/multipr/mechanical.js.map +1 -1
  98. package/dist/multipr/migration-heads.d.ts +18 -105
  99. package/dist/multipr/migration-heads.d.ts.map +1 -1
  100. package/dist/multipr/migration-heads.js +15 -84
  101. package/dist/multipr/migration-heads.js.map +1 -1
  102. package/dist/multipr/overlap.d.ts +16 -94
  103. package/dist/multipr/overlap.d.ts.map +1 -1
  104. package/dist/multipr/overlap.js +25 -105
  105. package/dist/multipr/overlap.js.map +1 -1
  106. package/dist/multipr/scope-store.d.ts +15 -80
  107. package/dist/multipr/scope-store.d.ts.map +1 -1
  108. package/dist/multipr/scope-store.js +17 -87
  109. package/dist/multipr/scope-store.js.map +1 -1
  110. package/dist/multipr/superseded.d.ts +10 -95
  111. package/dist/multipr/superseded.d.ts.map +1 -1
  112. package/dist/multipr/superseded.js +7 -60
  113. package/dist/multipr/superseded.js.map +1 -1
  114. package/dist/query/confirmed-facts.d.ts +12 -58
  115. package/dist/query/confirmed-facts.d.ts.map +1 -1
  116. package/dist/query/confirmed-facts.js +8 -47
  117. package/dist/query/confirmed-facts.js.map +1 -1
  118. package/dist/query/declared-value-closure.d.ts +13 -104
  119. package/dist/query/declared-value-closure.d.ts.map +1 -1
  120. package/dist/query/declared-value-closure.js +15 -104
  121. package/dist/query/declared-value-closure.js.map +1 -1
  122. package/dist/query/memory.d.ts +5 -9
  123. package/dist/query/memory.d.ts.map +1 -1
  124. package/dist/query/memory.js +31 -15
  125. package/dist/query/memory.js.map +1 -1
  126. package/dist/query/prominence.d.ts +6 -55
  127. package/dist/query/prominence.d.ts.map +1 -1
  128. package/dist/query/prominence.js +6 -55
  129. package/dist/query/prominence.js.map +1 -1
  130. package/dist/query/provider.d.ts +28 -81
  131. package/dist/query/provider.d.ts.map +1 -1
  132. package/dist/query/provider.js +8 -29
  133. package/dist/query/provider.js.map +1 -1
  134. package/dist/query/queries.d.ts +15 -65
  135. package/dist/query/queries.d.ts.map +1 -1
  136. package/dist/query/queries.js +43 -100
  137. package/dist/query/queries.js.map +1 -1
  138. package/dist/query/refusal-fetch.d.ts +8 -85
  139. package/dist/query/refusal-fetch.d.ts.map +1 -1
  140. package/dist/query/refusal-fetch.js +11 -93
  141. package/dist/query/refusal-fetch.js.map +1 -1
  142. package/dist/query/refusal-questions.d.ts +17 -92
  143. package/dist/query/refusal-questions.d.ts.map +1 -1
  144. package/dist/query/refusal-questions.js +14 -78
  145. package/dist/query/refusal-questions.js.map +1 -1
  146. package/dist/query/resolution-floor.d.ts +3 -23
  147. package/dist/query/resolution-floor.d.ts.map +1 -1
  148. package/dist/query/resolution-floor.js +3 -23
  149. package/dist/query/resolution-floor.js.map +1 -1
  150. package/dist/query/root-cause-score.d.ts +11 -161
  151. package/dist/query/root-cause-score.d.ts.map +1 -1
  152. package/dist/query/root-cause-score.js +6 -137
  153. package/dist/query/root-cause-score.js.map +1 -1
  154. package/dist/query/row-closure-picture.d.ts +5 -67
  155. package/dist/query/row-closure-picture.d.ts.map +1 -1
  156. package/dist/query/row-closure-picture.js +6 -67
  157. package/dist/query/row-closure-picture.js.map +1 -1
  158. package/dist/query/similar-incidents.d.ts +6 -41
  159. package/dist/query/similar-incidents.d.ts.map +1 -1
  160. package/dist/query/similar-incidents.js +15 -69
  161. package/dist/query/similar-incidents.js.map +1 -1
  162. package/dist/query/sqlite.d.ts +3 -7
  163. package/dist/query/sqlite.d.ts.map +1 -1
  164. package/dist/query/sqlite.js +13 -16
  165. package/dist/query/sqlite.js.map +1 -1
  166. package/dist/query/test-coverage.d.ts +5 -45
  167. package/dist/query/test-coverage.d.ts.map +1 -1
  168. package/dist/query/test-coverage.js +10 -53
  169. package/dist/query/test-coverage.js.map +1 -1
  170. package/dist/query/traverse.d.ts +22 -126
  171. package/dist/query/traverse.d.ts.map +1 -1
  172. package/dist/query/traverse.js +0 -0
  173. package/dist/query/traverse.js.map +1 -1
  174. package/dist/query/unresolved.d.ts +19 -164
  175. package/dist/query/unresolved.d.ts.map +1 -1
  176. package/dist/query/unresolved.js +11 -138
  177. package/dist/query/unresolved.js.map +1 -1
  178. package/dist/query/verification-status.d.ts +12 -109
  179. package/dist/query/verification-status.d.ts.map +1 -1
  180. package/dist/query/verification-status.js +9 -99
  181. package/dist/query/verification-status.js.map +1 -1
  182. package/dist/recording/migrate.d.ts +4 -10
  183. package/dist/recording/migrate.d.ts.map +1 -1
  184. package/dist/recording/migrate.js +4 -10
  185. package/dist/recording/migrate.js.map +1 -1
  186. package/dist/recording/reader.d.ts +2 -7
  187. package/dist/recording/reader.d.ts.map +1 -1
  188. package/dist/recording/reader.js +2 -7
  189. package/dist/recording/reader.js.map +1 -1
  190. package/dist/recording/redact.d.ts +6 -57
  191. package/dist/recording/redact.d.ts.map +1 -1
  192. package/dist/recording/redact.js +8 -64
  193. package/dist/recording/redact.js.map +1 -1
  194. package/dist/recording/schema.d.ts +3 -38
  195. package/dist/recording/schema.d.ts.map +1 -1
  196. package/dist/recording/schema.js +3 -38
  197. package/dist/recording/schema.js.map +1 -1
  198. package/dist/recording/writer.d.ts +11 -74
  199. package/dist/recording/writer.d.ts.map +1 -1
  200. package/dist/recording/writer.js +3 -43
  201. package/dist/recording/writer.js.map +1 -1
  202. package/dist/scoping/fanout.d.ts +6 -68
  203. package/dist/scoping/fanout.d.ts.map +1 -1
  204. package/dist/scoping/fanout.js +6 -68
  205. package/dist/scoping/fanout.js.map +1 -1
  206. package/dist/scoping/score.d.ts +20 -70
  207. package/dist/scoping/score.d.ts.map +1 -1
  208. package/dist/scoping/score.js +20 -70
  209. package/dist/scoping/score.js.map +1 -1
  210. package/dist/scoping/tiers.d.ts +4 -16
  211. package/dist/scoping/tiers.d.ts.map +1 -1
  212. package/dist/scoping/tiers.js +4 -16
  213. package/dist/scoping/tiers.js.map +1 -1
  214. package/dist/scoping/traverse.d.ts +3 -25
  215. package/dist/scoping/traverse.d.ts.map +1 -1
  216. package/dist/scoping/traverse.js +14 -49
  217. package/dist/scoping/traverse.js.map +1 -1
  218. package/dist/scoping/weights.d.ts +10 -74
  219. package/dist/scoping/weights.d.ts.map +1 -1
  220. package/dist/scoping/weights.js +14 -86
  221. package/dist/scoping/weights.js.map +1 -1
  222. package/dist/sources/confirmed/incidents.d.ts +5 -35
  223. package/dist/sources/confirmed/incidents.d.ts.map +1 -1
  224. package/dist/sources/confirmed/incidents.js +14 -48
  225. package/dist/sources/confirmed/incidents.js.map +1 -1
  226. package/dist/sources/git/diff.d.ts +71 -65
  227. package/dist/sources/git/diff.d.ts.map +1 -1
  228. package/dist/sources/git/diff.js +136 -83
  229. package/dist/sources/git/diff.js.map +1 -1
  230. package/dist/sources/git/env.d.ts +7 -0
  231. package/dist/sources/git/env.d.ts.map +1 -1
  232. package/dist/sources/git/env.js +10 -11
  233. package/dist/sources/git/env.js.map +1 -1
  234. package/dist/sources/git/history.d.ts +64 -84
  235. package/dist/sources/git/history.d.ts.map +1 -1
  236. package/dist/sources/git/history.js +141 -112
  237. package/dist/sources/git/history.js.map +1 -1
  238. package/dist/sources/git/incidents.d.ts +13 -75
  239. package/dist/sources/git/incidents.d.ts.map +1 -1
  240. package/dist/sources/git/incidents.js +21 -91
  241. package/dist/sources/git/incidents.js.map +1 -1
  242. package/dist/sources/git/index.d.ts +5 -3
  243. package/dist/sources/git/index.d.ts.map +1 -1
  244. package/dist/sources/git/index.js +3 -2
  245. package/dist/sources/git/index.js.map +1 -1
  246. package/dist/sources/git/source.d.ts +9 -79
  247. package/dist/sources/git/source.d.ts.map +1 -1
  248. package/dist/sources/git/source.js +0 -0
  249. package/dist/sources/git/source.js.map +1 -1
  250. package/dist/sources/migrations/across-change.d.ts +94 -0
  251. package/dist/sources/migrations/across-change.d.ts.map +1 -0
  252. package/dist/sources/migrations/across-change.js +278 -0
  253. package/dist/sources/migrations/across-change.js.map +1 -0
  254. package/dist/sources/migrations/dialects.d.ts +20 -36
  255. package/dist/sources/migrations/dialects.d.ts.map +1 -1
  256. package/dist/sources/migrations/dialects.js +11 -36
  257. package/dist/sources/migrations/dialects.js.map +1 -1
  258. package/dist/sources/migrations/index.d.ts +3 -1
  259. package/dist/sources/migrations/index.d.ts.map +1 -1
  260. package/dist/sources/migrations/index.js +2 -1
  261. package/dist/sources/migrations/index.js.map +1 -1
  262. package/dist/sources/migrations/read.d.ts +14 -79
  263. package/dist/sources/migrations/read.d.ts.map +1 -1
  264. package/dist/sources/migrations/read.js +14 -89
  265. package/dist/sources/migrations/read.js.map +1 -1
  266. package/dist/sources/workspace/workspace.d.ts +6 -42
  267. package/dist/sources/workspace/workspace.d.ts.map +1 -1
  268. package/dist/sources/workspace/workspace.js +10 -53
  269. package/dist/sources/workspace/workspace.js.map +1 -1
  270. package/dist/store/driver/driver.d.ts +9 -38
  271. package/dist/store/driver/driver.d.ts.map +1 -1
  272. package/dist/store/driver/driver.js +4 -22
  273. package/dist/store/driver/driver.js.map +1 -1
  274. package/dist/store/driver/node-sqlite.d.ts +3 -12
  275. package/dist/store/driver/node-sqlite.d.ts.map +1 -1
  276. package/dist/store/driver/node-sqlite.js +4 -18
  277. package/dist/store/driver/node-sqlite.js.map +1 -1
  278. package/dist/store/index.d.ts +2 -7
  279. package/dist/store/index.d.ts.map +1 -1
  280. package/dist/store/index.js +4 -10
  281. package/dist/store/index.js.map +1 -1
  282. package/dist/store/migrate.d.ts +14 -50
  283. package/dist/store/migrate.d.ts.map +1 -1
  284. package/dist/store/migrate.js +15 -52
  285. package/dist/store/migrate.js.map +1 -1
  286. package/dist/store/reader.d.ts +19 -84
  287. package/dist/store/reader.d.ts.map +1 -1
  288. package/dist/store/reader.js +25 -92
  289. package/dist/store/reader.js.map +1 -1
  290. package/dist/store/schema.d.ts +14 -76
  291. package/dist/store/schema.d.ts.map +1 -1
  292. package/dist/store/schema.js +14 -76
  293. package/dist/store/schema.js.map +1 -1
  294. package/dist/store/writer.d.ts +14 -88
  295. package/dist/store/writer.d.ts.map +1 -1
  296. package/dist/store/writer.js +29 -123
  297. package/dist/store/writer.js.map +1 -1
  298. package/dist/tiers/certify.d.ts +46 -281
  299. package/dist/tiers/certify.d.ts.map +1 -1
  300. package/dist/tiers/certify.js +46 -226
  301. package/dist/tiers/certify.js.map +1 -1
  302. package/dist/tiers/ladder.d.ts +7 -51
  303. package/dist/tiers/ladder.d.ts.map +1 -1
  304. package/dist/tiers/ladder.js +13 -89
  305. package/dist/tiers/ladder.js.map +1 -1
  306. package/dist/validation/attributes.d.ts +47 -0
  307. package/dist/validation/attributes.d.ts.map +1 -0
  308. package/dist/validation/attributes.js +130 -0
  309. package/dist/validation/attributes.js.map +1 -0
  310. package/dist/validation/config-graph.d.ts +7 -56
  311. package/dist/validation/config-graph.d.ts.map +1 -1
  312. package/dist/validation/config-graph.js +15 -61
  313. package/dist/validation/config-graph.js.map +1 -1
  314. package/dist/validation/env.d.ts +53 -2
  315. package/dist/validation/env.d.ts.map +1 -1
  316. package/dist/validation/env.js +99 -4
  317. package/dist/validation/env.js.map +1 -1
  318. package/dist/validation/index.d.ts +5 -1
  319. package/dist/validation/index.d.ts.map +1 -1
  320. package/dist/validation/index.js +3 -1
  321. package/dist/validation/index.js.map +1 -1
  322. package/dist/validation/join-substitution.d.ts +22 -120
  323. package/dist/validation/join-substitution.d.ts.map +1 -1
  324. package/dist/validation/join-substitution.js +13 -90
  325. package/dist/validation/join-substitution.js.map +1 -1
  326. package/dist/validation/migration-integrity.d.ts +72 -0
  327. package/dist/validation/migration-integrity.d.ts.map +1 -0
  328. package/dist/validation/migration-integrity.js +238 -0
  329. package/dist/validation/migration-integrity.js.map +1 -0
  330. package/dist/validation/migrations.d.ts +23 -88
  331. package/dist/validation/migrations.d.ts.map +1 -1
  332. package/dist/validation/migrations.js +20 -79
  333. package/dist/validation/migrations.js.map +1 -1
  334. package/dist/validation/nodes.d.ts +3 -1
  335. package/dist/validation/nodes.d.ts.map +1 -1
  336. package/dist/validation/nodes.js +3 -1
  337. package/dist/validation/nodes.js.map +1 -1
  338. package/dist/validation/rollback.d.ts +10 -73
  339. package/dist/validation/rollback.d.ts.map +1 -1
  340. package/dist/validation/rollback.js +23 -81
  341. package/dist/validation/rollback.js.map +1 -1
  342. package/dist/validation/route-drift.d.ts +9 -62
  343. package/dist/validation/route-drift.d.ts.map +1 -1
  344. package/dist/validation/route-drift.js +7 -52
  345. package/dist/validation/route-drift.js.map +1 -1
  346. package/dist/validation/sources.d.ts +16 -94
  347. package/dist/validation/sources.d.ts.map +1 -1
  348. package/dist/validation/sources.js +51 -147
  349. package/dist/validation/sources.js.map +1 -1
  350. package/dist/worker/pool.d.ts +6 -45
  351. package/dist/worker/pool.d.ts.map +1 -1
  352. package/dist/worker/pool.js +5 -42
  353. package/dist/worker/pool.js.map +1 -1
  354. package/dist/worker/protocol.d.ts +7 -20
  355. package/dist/worker/protocol.d.ts.map +1 -1
  356. package/dist/worker/protocol.js +3 -10
  357. package/dist/worker/protocol.js.map +1 -1
  358. package/dist/worker/traversal.worker.d.ts +2 -21
  359. package/dist/worker/traversal.worker.d.ts.map +1 -1
  360. package/dist/worker/traversal.worker.js +4 -23
  361. package/dist/worker/traversal.worker.js.map +1 -1
  362. package/package.json +11 -2
@@ -1,62 +1,6 @@
1
1
  /**
2
- * The batch writer — DEC-015.
3
- *
4
- * "The writer deletes everything previously written by `producedBy` for
5
- * `sourceFiles`, then inserts, in one transaction." That sentence hides three
6
- * decisions the decision entry does not make, and getting any of them wrong
7
- * loses data silently. They are made here and each is tested.
8
- *
9
- * ## 1. Invalidation matches on adapter *id* and *repo*, not `producedBy` alone
10
- *
11
- * `producedBy` is `id@version`. Matching the full string would mean an adapter
12
- * upgrade never invalidates anything the old version wrote — the two producers
13
- * would simply coexist, and the graph would hold both readings of every file
14
- * forever. §24.1 is explicit: "an adapter version bump invalidates every node
15
- * and edge that adapter produced". So overlap is computed on the id, and the
16
- * version is what makes the *stale* rows recognisable.
17
- *
18
- * `repo` is a second, equally load-bearing part of the same match, added after
19
- * a real defect: a store holding more than one repository (`descry-runtime`'s
20
- * graph correlator merges a frontend and a backend into one store to trace
21
- * across them, per DEC-228) can have two repos using the same adapter with an
22
- * overlapping relative file path — `src/index.ts`, `package.json`, anything
23
- * common. Without `repo` in this match, writing the second repo's batch reads
24
- * as "adapter X re-ran over a file it already owned" and evicts the first
25
- * repo's run outright — silent cross-repository data loss, not a wrong
26
- * answer. `invalidateAdapter` below is intentionally *not* repo-scoped — its
27
- * own contract is "every repo," a different, explicitly global operation.
28
- *
29
- * ## 2. Prior runs are matched by file-set *overlap*, not equality
30
- *
31
- * A batch is the unit of invalidation, but the batch that previously owned a
32
- * file may have covered a different set of files. Deleting only exact-matching
33
- * runs leaves two rows for the same symbol; deleting only the intersection is
34
- * impossible, because an edge has no file. So every prior run of the same
35
- * adapter that touches *any* of these files is replaced whole — and the files
36
- * it covered that this batch does not re-supply are reported as `evictedFiles`.
37
- * Reporting them is the honest-degradation rule (principle 7): the caller is
38
- * told what fell out, rather than discovering it as a missing edge next week.
39
- *
40
- * ## 3. A run also cleans up after its own previous write
41
- *
42
- * The run id is content-derived from producer, repo, commit and file set — not
43
- * from the nodes. So an adapter re-run at the same commit over the same files
44
- * lands on the *same* run id, and "delete the prior runs" excludes it by
45
- * definition. Without a self-clean pass, rows that run no longer produces stay
46
- * forever: the upsert refreshes what is still there and nothing removes what is
47
- * not. Every write therefore ends by deleting its own run's rows that this batch
48
- * did not supply.
49
- *
50
- * ## 4. Re-supplied nodes are updated, not deleted and recreated
51
- *
52
- * A node id is stable across file moves by construction (DEC-004), so re-parsing
53
- * a file normally yields the ids that were already there. Deleting a prior run's
54
- * nodes wholesale would cascade away every edge *other* runs had pointing into
55
- * them, and those runs will not be re-run. Instead: upsert the ids this batch
56
- * supplies, then delete the prior run — whose remaining nodes are exactly those
57
- * it no longer produces. Edges into a node that genuinely disappeared do cascade
58
- * away, and are reported as `orphanedEdges`, because keeping an edge to a node
59
- * that no longer exists is the wrong-edge failure the precision rule forbids.
2
+ * Batch writer (DEC-015). Prior runs matched on adapter id+repo (not full `producedBy` — §24.1 version bumps invalidate; DEC-228 multi-repo stores need `repo` or cross-repo files silently evict each other), by file-set *overlap* not equality (evicted files reported, principle 7).
3
+ * Run id is content-derived, so a same-commit re-run self-cleans what it stopped producing. Re-supplied nodes are upserted, not deleted+recreated (DEC-004 stable ids) — only genuinely-gone nodes cascade, reported as `orphanedEdges`.
60
4
  */
61
5
  import { createHash } from "node:crypto";
62
6
  import { canonicalJson, edgeId } from "@descryy/ir";
@@ -69,49 +13,30 @@ function splitProducer(producedBy) {
69
13
  function hash128(input) {
70
14
  return createHash("sha256").update(input, "utf8").digest("hex").slice(0, 32);
71
15
  }
72
- /**
73
- * A run id derived from the batch's content, never a counter.
74
- *
75
- * Re-ingesting an identical batch must land on the same row, or "idempotent"
76
- * cannot even be stated as a property. `sourceFiles` is sorted first so that an
77
- * adapter listing the same files in a different order does not create a second
78
- * run for identical work.
79
- */
16
+ /** Run id derived from the batch's content, never a counter — re-ingesting an
17
+ * identical batch must land on the same row. `sourceFiles` sorted first so
18
+ * order doesn't create a second run for identical work. */
80
19
  export function runIdFor(batch) {
81
20
  return `r1:${hash128(canonicalJson([batch.producedBy, batch.repo, batch.commitSha, [...batch.sourceFiles].sort()]))}`;
82
21
  }
83
22
  function unresolvedId(ref) {
84
23
  return `u1:${hash128(canonicalJson([ref.fromNodeId, ref.edgeType, ref.rawTarget, ref.file, ref.line, ref.producedBy]))}`;
85
24
  }
86
- /**
87
- * **Delegates to `@descryy/ir`'s `edgeId()` — it must not re-derive this.**
88
- *
89
- * It used to, as a hand-rolled `` `e1:${hash128(...)}` ``, and that was a
90
- * latent identity split: DEC-054 moved the prefixes to `n2:`/`e2:` and this
91
- * copy was never moved with them, so `edgeId()` and the stored id agreed on
92
- * every byte of the hash and disagreed on the prefix. Nothing caught it
93
- * because `edgeId()` had zero callers — the first caller to look an edge up
94
- * by its public id would have silently matched nothing, which is DEC-055's
95
- * measured failure (16 joins to 0, no error anywhere) reproduced inside the
96
- * engine rather than across two adapters.
97
- *
98
- * One identity, one function. See DEC-NEXT-edge-id-prefix-split.
99
- */
25
+ /** Delegates to `@descryy/ir`'s `edgeId()` — must never re-derive this. A
26
+ * hand-rolled copy once drifted on the DEC-054 prefix bump (16 joins to 0,
27
+ * DEC-055). One identity, one function (DEC-NEXT-edge-id-prefix-split). */
100
28
  function edgeRowId(edge) {
101
29
  return edgeId(edge.from, edge.to, edge.type);
102
30
  }
103
- /**
104
- * Write one normalised batch. **Input must already have passed the Normaliser** —
105
- * this function does no validation, on purpose. Two validators drift; one
106
- * validator at the boundary is a boundary.
107
- */
31
+ /** Writes one normalised batch. Input must already have passed the Normaliser —
32
+ * this does no validation, on purpose. Two validators drift. */
108
33
  export function writeBatch(driver, batch, options = {}) {
109
34
  const now = options.now ?? Date.now;
110
35
  const runId = runIdFor(batch);
111
36
  const { id: adapterId, version } = splitProducer(batch.producedBy);
112
37
  const incomingFiles = new Set(batch.sourceFiles);
113
38
  return driver.transaction(() => {
114
- // --- find the prior runs this batch supersedes --------------------------
39
+ // Find the prior runs this batch supersedes.
115
40
  const priorRuns = driver
116
41
  .prepare("SELECT id, source_files FROM adapter_runs WHERE adapter_id = ? AND repo = ? AND id != ?")
117
42
  .all(adapterId, batch.repo, runId)
@@ -128,23 +53,17 @@ export function writeBatch(driver, batch, options = {}) {
128
53
  }
129
54
  const ownRunIds = [runId, ...priorRuns.map((r) => r.id)];
130
55
  const foreignEdgesBefore = countForeignEdges(driver, ownRunIds);
131
- // A scratch list of what this batch supplies, so the self-clean below is a
132
- // set difference rather than a `NOT IN (?, ?, ...)` with one parameter per
133
- // row — which caps out at SQLITE_MAX_VARIABLE_NUMBER on a large batch.
56
+ // Scratch list of what this batch supplies, so self-clean is a set difference
57
+ // rather than a `NOT IN (?, ...)` that caps out on SQLITE_MAX_VARIABLE_NUMBER.
134
58
  driver.exec(`CREATE TEMP TABLE IF NOT EXISTS supplied (kind TEXT NOT NULL, id TEXT NOT NULL, PRIMARY KEY (kind, id))`);
135
59
  driver.exec("DELETE FROM temp.supplied");
136
60
  const remember = driver.prepare("INSERT OR IGNORE INTO temp.supplied (kind, id) VALUES (?, ?)");
137
- // Rows owned by a run this write replaces are always overwritten, never
138
- // merged. DEC-012 arbitrates between two *different* producers claiming the
139
- // same thing; the same adapter re-running over the same files is
140
- // invalidation, and the fresh reading wins even when it reached a lower
141
- // resolution — stale R3 facts about code that has since changed are worse
142
- // than accurate R1 ones. Without this, a degraded re-run would fail the
143
- // merge test, leave the row owned by the prior run, and then lose it to that
144
- // run's cascade a few statements later.
61
+ // Rows owned by a replaced run always overwrite, never merge (DEC-012 merge
62
+ // logic is for two *different* producers; same-adapter re-run is invalidation —
63
+ // the fresh reading wins even at lower resolution, since stale facts are worse).
145
64
  for (const run of priorRuns)
146
65
  remember.run("run", run.id);
147
- // --- the run row, before anything references it -------------------------
66
+ // The run row, before anything references it.
148
67
  driver
149
68
  .prepare(`INSERT INTO adapter_runs
150
69
  (id, repo, workspace, commit_sha, adapter_id, adapter_version, produced_by,
@@ -157,12 +76,9 @@ export function writeBatch(driver, batch, options = {}) {
157
76
  reached_resolution = excluded.reached_resolution,
158
77
  written_at = excluded.written_at`)
159
78
  .run(runId, batch.repo, batch.workspace ?? null, batch.commitSha, adapterId, version, batch.producedBy, batch.reachedResolution, JSON.stringify([...batch.sourceFiles].sort()), batch.sourceFiles.length, now());
160
- // ON CONFLICT DO UPDATE, never INSERT OR REPLACE. `REPLACE` is a DELETE
161
- // followed by an INSERT, so with foreign keys on it would cascade away this
162
- // run's own nodes and edges before re-inserting them — and because the run
163
- // id is content-derived, re-ingesting an identical batch hits that path
164
- // every single time.
165
- // --- nodes: upsert first, so ids that survive keep their inbound edges ---
79
+ // ON CONFLICT DO UPDATE, never INSERT OR REPLACE — REPLACE is DELETE+INSERT
80
+ // and would cascade away this run's own nodes/edges via foreign keys.
81
+ // Nodes: upsert first, so surviving ids keep their inbound edges.
166
82
  const insertNode = driver.prepare(`INSERT INTO nodes
167
83
  (id, type, name, file_path, start_line, end_line, language, produced_by, resolution, attrs, run_id)
168
84
  VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
@@ -178,23 +94,20 @@ export function writeBatch(driver, batch, options = {}) {
178
94
  insertNode.run(node.id, node.type, node.name, node.file, node.range?.startLine ?? null, node.range?.endLine ?? null, node.language, node.producedBy, node.resolution, canonicalJson(node.attrs), runId);
179
95
  remember.run("node", node.id);
180
96
  }
181
- // --- retire the prior runs ----------------------------------------------
182
- // Everything still pointing at them is, by definition, what this batch no
183
- // longer produces. The cascade removes it; the counts above and below say
184
- // how much.
97
+ // Retire the prior runs — everything still pointing at them is what this
98
+ // batch no longer produces; the cascade removes it.
185
99
  if (priorRuns.length > 0) {
186
100
  const del = driver.prepare("DELETE FROM adapter_runs WHERE id = ?");
187
101
  for (const run of priorRuns)
188
102
  del.run(run.id);
189
103
  }
190
- // ...and after this run's own previous write. See note 3 above: an adapter
191
- // re-run at the same commit reuses the run id, so this is the only thing
192
- // that removes what it stopped producing.
104
+ // And after this run's own previous write — a same-commit re-run reuses the
105
+ // run id, so this is the only thing that removes what it stopped producing.
193
106
  driver
194
107
  .prepare(`DELETE FROM nodes WHERE run_id = ?
195
108
  AND id NOT IN (SELECT id FROM temp.supplied WHERE kind = 'node')`)
196
109
  .run(runId);
197
- // --- edges and unresolved references -------------------------------------
110
+ // Edges and unresolved references.
198
111
  const insertEdge = driver.prepare(`INSERT INTO edges
199
112
  (id, source, target, type, resolution, confidence, produced_by, observed_by_run, attrs, run_id)
200
113
  VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
@@ -227,9 +140,7 @@ export function writeBatch(driver, batch, options = {}) {
227
140
  .prepare(`DELETE FROM unresolved_refs WHERE run_id = ?
228
141
  AND id NOT IN (SELECT id FROM temp.supplied WHERE kind = 'ref')`)
229
142
  .run(runId);
230
- // Edges belonging to neither this run nor the runs it replaced can only have
231
- // vanished by cascade — an endpoint node ceased to exist. Measured directly
232
- // rather than inferred from a before/after total, which dedupe would skew.
143
+ // Foreign edges that vanished can only be cascade from a dead endpoint node.
233
144
  const orphaned = foreignEdgesBefore - countForeignEdges(driver, ownRunIds);
234
145
  return {
235
146
  runId,
@@ -249,14 +160,9 @@ function countForeignEdges(driver, ownRunIds) {
249
160
  .prepare(`SELECT COUNT(*) AS n FROM edges WHERE run_id NOT IN (${placeholders})`)
250
161
  .get(...ownRunIds)?.n ?? 0);
251
162
  }
252
- /**
253
- * Remove everything an adapter ever produced, at every version, for every repo.
254
- *
255
- * §24.1's invalidation rule, as its own operation rather than a side effect of
256
- * writing. It is deliberately separate from `writeBatch`: an upgraded adapter
257
- * usually re-runs over a subset of files first, and folding this into the write
258
- * path would make a partial re-run delete data it was never going to replace.
259
- */
163
+ /** Removes everything an adapter ever produced, at every version, every repo
164
+ * (§24.1). Kept separate from `writeBatch` — folding it in would make a
165
+ * partial re-run delete data it was never going to replace. */
260
166
  export function invalidateAdapter(driver, adapterId) {
261
167
  return driver.transaction(() => {
262
168
  const result = driver.prepare("DELETE FROM adapter_runs WHERE adapter_id = ?").run(adapterId);
@@ -1 +1 @@
1
- {"version":3,"file":"writer.js","sourceRoot":"","sources":["../../src/store/writer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"writer.js","sourceRoot":"","sources":["../../src/store/writer.ts"],"names":[],"mappings":"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"}