@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,60 +1,10 @@
1
- /**
2
- * The governance funnel — architecture §20.1.
3
- *
4
- * > *"Without this layer, a run that surfaces 200 findings gets read by
5
- * > nobody. Volume without governance is functionally the same as no output at
6
- * > all."*
7
- *
8
- * §20.1 draws a five-filter funnel ending in a hard cap. Two of its boxes had
9
- * no implementation anywhere: **F2, "known false positives from the feedback
10
- * store,"** and **the HARD CAP itself**, whose value architecture §32 item 6
11
- * has carried as a blank since the document was written (*"Hard cap value —
12
- * how many findings is 'a few'"*, Tuning, *"set from early runs"*).
13
- *
14
- * `CLAUDE.md` rule 5 — *"a few high-confidence findings, never an exhaustive
15
- * maybe-list"* — is the rule aimed most directly at what this whole category
16
- * of tool gets wrong, and it was the one rule with no number behind it. Three
17
- * per-check caps of 25 existed (`contracts/orphans.ts`, `validation/rollback.ts`,
18
- * `validation/env.ts`), which is not the same thing: three checks at 25 present
19
- * 75 items and nothing objects.
20
- *
21
- * ## The cap values, and where they come from
22
- *
23
- * §20.1 states its own worked example in prose: *"Twenty-seven possible issues
24
- * get ignored. Three confirmed issues plus two worth checking get acted on
25
- * immediately."* **Three plus two is five**, and that is `pr`'s cap — read off
26
- * the architecture rather than invented.
27
- *
28
- * The other three are scaled to their trigger the same way `NODE_BUDGETS`
29
- * already is, and for the same reason: an IDE hover and a nightly sweep are
30
- * not the same reading surface. **Starting values, not measurements** —
31
- * `CLAUDE.md`'s standing convention for every number in this project.
32
- *
33
- * ## What this module deliberately does not own
34
- *
35
- * - **It does not assign a category.** Only G4 does (`ai-governance-spec.md`
36
- * §11). This runs strictly after, on already-categorised findings, and
37
- * reorders and truncates them without touching a single field.
38
- * - **It does not store dismissals.** `isDismissed` is a caller-supplied
39
- * predicate. The ledger is `descry-desktop`'s (§21.3 puts the feedback store
40
- * next to the runs it belongs to); the *filter* is governance and belongs
41
- * here, next to G1–G4.
42
- * - **It never silently drops anything.** Every finding that entered leaves in
43
- * exactly one of `reported` / `unconfirmed` / `suppressed`, and the count it
44
- * truncated is a structured field with a rendered sentence — the same rule
45
- * `ai-tool-contract.md` §4 technique 5 applies one layer down (*"a capped
46
- * result that looks complete is the same defect as a zero that looks like a
47
- * finding"*).
48
- */
1
+ /** §20.1 governance funnel — five filters ending in a hard cap; F2 (feedback-store false
2
+ * positives) and the cap itself were unimplemented until now. Caps are starting values (pr=5,
3
+ * §20.1's own 3+2 example). Never silently drops: every finding lands in reported/unconfirmed/suppressed. */
49
4
  import { type Finding } from "@descryy/ir";
50
5
  import type { Trigger } from "../scoping/tiers.ts";
51
- /**
52
- * How many findings one run may report, per trigger.
53
- *
54
- * `pr` is architecture §20.1's own arithmetic (3 confirmed + 2 worth
55
- * checking). The rest are scaled to the reading surface, the same shape
56
- * `NODE_BUDGETS` uses, and are starting values pending real runs to tune from.
57
- */
6
+ /** Findings one run may report, per trigger. `pr`=5 is §20.1's own arithmetic (3+2). The rest
7
+ * scale to the reading surface (same shape as NODE_BUDGETS) — starting values, not measurements. */
58
8
  export declare const FINDING_CAPS: {
59
9
  /** A hover is one line of screen. More than one finding there is a list nobody reads. */
60
10
  readonly "ide-hover": 1;
@@ -67,10 +17,8 @@ export declare const FINDING_CAPS: {
67
17
  };
68
18
  export interface FindingFunnelOptions {
69
19
  readonly trigger: Trigger;
70
- /**
71
- * F2. `true` suppresses the finding. Supplied by the caller's feedback store
72
- * — see the module doc for why the ledger is not here.
73
- */
20
+ /** F2. `true` suppresses the finding. Supplied by the caller's feedback store — the ledger
21
+ * lives in descry-desktop (§21.3), the filter lives here. */
74
22
  readonly isDismissed?: (finding: Finding) => boolean;
75
23
  /** Overrides the trigger's cap. For a caller that has measured its own; not a way to opt out. */
76
24
  readonly cap?: number;
@@ -91,19 +39,10 @@ export interface FindingFunnelResult {
91
39
  readonly suppressed: readonly Finding[];
92
40
  readonly truncation: FindingTruncation;
93
41
  }
94
- /**
95
- * Run §20.1's funnel over one run's findings.
96
- *
97
- * Pure and total: same input, same output, and every input finding appears in
98
- * exactly one output list. Deterministic ordering — required by
99
- * `ai-layer-plan.md` §9 layer 6's replay guarantee, so ties break on the
100
- * finding's own fingerprint rather than on input order.
101
- */
42
+ /** §20.1's funnel. Pure and total — every input finding appears in exactly one output list.
43
+ * Deterministic ordering (replay guarantee, §9 layer 6): ties break on fingerprint, not input order. */
102
44
  export declare function runFindingFunnel(findings: readonly Finding[], options: FindingFunnelOptions): FindingFunnelResult;
103
- /**
104
- * Re-exported so a caller wiring the funnel and its ledger imports one module.
105
- * The implementation lives in `@descryy/ir`'s identity module — see
106
- * `DEC-NEXT-edge-id-prefix-split` for why an identity gets exactly one home.
107
- */
45
+ /** Re-exported so a caller wiring the funnel and ledger imports one module — implementation
46
+ * lives in @descryy/ir's identity module (DEC-NEXT-edge-id-prefix-split). */
108
47
  export { findingFingerprint } from "@descryy/ir";
109
48
  //# sourceMappingURL=finding-funnel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"finding-funnel.d.ts","sourceRoot":"","sources":["../../src/governance/finding-funnel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AAEH,OAAO,EAAsB,KAAK,OAAO,EAAuB,MAAM,aAAa,CAAC;AAEpF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEnD;;;;;;GAMG;AACH,eAAO,MAAM,YAAY;IACvB,yFAAyF;;IAEzF,uEAAuE;;IAEvE,kCAAkC;;IAElC,oFAAoF;;CAE1C,CAAC;AAc7C,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B;;;OAGG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC;IACrD,iGAAiG;IACjG,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,sGAAsG;IACtG,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC;AAED,MAAM,WAAW,mBAAmB;IAClC,yEAAyE;IACzE,QAAQ,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAC;IACtC,iFAAiF;IACjF,QAAQ,CAAC,WAAW,EAAE,SAAS,OAAO,EAAE,CAAC;IACzC,wFAAwF;IACxF,QAAQ,CAAC,UAAU,EAAE,SAAS,OAAO,EAAE,CAAC;IACxC,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC;CACxC;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,OAAO,EAAE,oBAAoB,GAC5B,mBAAmB,CAqCrB;AAYD;;;;GAIG;AACH,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"finding-funnel.d.ts","sourceRoot":"","sources":["../../src/governance/finding-funnel.ts"],"names":[],"mappings":"AAAA;;8GAE8G;AAE9G,OAAO,EAAsB,KAAK,OAAO,EAAuB,MAAM,aAAa,CAAC;AAEpF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEnD;qGACqG;AACrG,eAAO,MAAM,YAAY;IACvB,yFAAyF;;IAEzF,uEAAuE;;IAEvE,kCAAkC;;IAElC,oFAAoF;;CAE1C,CAAC;AAc7C,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B;kEAC8D;IAC9D,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC;IACrD,iGAAiG;IACjG,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,sGAAsG;IACtG,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC;AAED,MAAM,WAAW,mBAAmB;IAClC,yEAAyE;IACzE,QAAQ,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAC;IACtC,iFAAiF;IACjF,QAAQ,CAAC,WAAW,EAAE,SAAS,OAAO,EAAE,CAAC;IACzC,wFAAwF;IACxF,QAAQ,CAAC,UAAU,EAAE,SAAS,OAAO,EAAE,CAAC;IACxC,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC;CACxC;AAED;yGACyG;AACzG,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,OAAO,EAAE,oBAAoB,GAC5B,mBAAmB,CAqCrB;AAYD;8EAC8E;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC"}
@@ -1,59 +1,9 @@
1
- /**
2
- * The governance funnel — architecture §20.1.
3
- *
4
- * > *"Without this layer, a run that surfaces 200 findings gets read by
5
- * > nobody. Volume without governance is functionally the same as no output at
6
- * > all."*
7
- *
8
- * §20.1 draws a five-filter funnel ending in a hard cap. Two of its boxes had
9
- * no implementation anywhere: **F2, "known false positives from the feedback
10
- * store,"** and **the HARD CAP itself**, whose value architecture §32 item 6
11
- * has carried as a blank since the document was written (*"Hard cap value —
12
- * how many findings is 'a few'"*, Tuning, *"set from early runs"*).
13
- *
14
- * `CLAUDE.md` rule 5 — *"a few high-confidence findings, never an exhaustive
15
- * maybe-list"* — is the rule aimed most directly at what this whole category
16
- * of tool gets wrong, and it was the one rule with no number behind it. Three
17
- * per-check caps of 25 existed (`contracts/orphans.ts`, `validation/rollback.ts`,
18
- * `validation/env.ts`), which is not the same thing: three checks at 25 present
19
- * 75 items and nothing objects.
20
- *
21
- * ## The cap values, and where they come from
22
- *
23
- * §20.1 states its own worked example in prose: *"Twenty-seven possible issues
24
- * get ignored. Three confirmed issues plus two worth checking get acted on
25
- * immediately."* **Three plus two is five**, and that is `pr`'s cap — read off
26
- * the architecture rather than invented.
27
- *
28
- * The other three are scaled to their trigger the same way `NODE_BUDGETS`
29
- * already is, and for the same reason: an IDE hover and a nightly sweep are
30
- * not the same reading surface. **Starting values, not measurements** —
31
- * `CLAUDE.md`'s standing convention for every number in this project.
32
- *
33
- * ## What this module deliberately does not own
34
- *
35
- * - **It does not assign a category.** Only G4 does (`ai-governance-spec.md`
36
- * §11). This runs strictly after, on already-categorised findings, and
37
- * reorders and truncates them without touching a single field.
38
- * - **It does not store dismissals.** `isDismissed` is a caller-supplied
39
- * predicate. The ledger is `descry-desktop`'s (§21.3 puts the feedback store
40
- * next to the runs it belongs to); the *filter* is governance and belongs
41
- * here, next to G1–G4.
42
- * - **It never silently drops anything.** Every finding that entered leaves in
43
- * exactly one of `reported` / `unconfirmed` / `suppressed`, and the count it
44
- * truncated is a structured field with a rendered sentence — the same rule
45
- * `ai-tool-contract.md` §4 technique 5 applies one layer down (*"a capped
46
- * result that looks complete is the same defect as a zero that looks like a
47
- * finding"*).
48
- */
1
+ /** §20.1 governance funnel — five filters ending in a hard cap; F2 (feedback-store false
2
+ * positives) and the cap itself were unimplemented until now. Caps are starting values (pr=5,
3
+ * §20.1's own 3+2 example). Never silently drops: every finding lands in reported/unconfirmed/suppressed. */
49
4
  import { findingFingerprint } from "@descryy/ir";
50
- /**
51
- * How many findings one run may report, per trigger.
52
- *
53
- * `pr` is architecture §20.1's own arithmetic (3 confirmed + 2 worth
54
- * checking). The rest are scaled to the reading surface, the same shape
55
- * `NODE_BUDGETS` uses, and are starting values pending real runs to tune from.
56
- */
5
+ /** Findings one run may report, per trigger. `pr`=5 is §20.1's own arithmetic (3+2). The rest
6
+ * scale to the reading surface (same shape as NODE_BUDGETS) — starting values, not measurements. */
57
7
  export const FINDING_CAPS = {
58
8
  /** A hover is one line of screen. More than one finding there is a list nobody reads. */
59
9
  "ide-hover": 1,
@@ -74,14 +24,8 @@ const CATEGORY_RANK = {
74
24
  };
75
25
  /** Categories that belong in §20.1's separate unconfirmed list rather than the capped one. */
76
26
  const NOT_CONFIDENT = new Set(["unconfirmed", "not analysable", "unsupported"]);
77
- /**
78
- * Run §20.1's funnel over one run's findings.
79
- *
80
- * Pure and total: same input, same output, and every input finding appears in
81
- * exactly one output list. Deterministic ordering — required by
82
- * `ai-layer-plan.md` §9 layer 6's replay guarantee, so ties break on the
83
- * finding's own fingerprint rather than on input order.
84
- */
27
+ /** §20.1's funnel. Pure and total — every input finding appears in exactly one output list.
28
+ * Deterministic ordering (replay guarantee, §9 layer 6): ties break on fingerprint, not input order. */
85
29
  export function runFindingFunnel(findings, options) {
86
30
  const isDismissed = options.isDismissed ?? (() => false);
87
31
  const suppressed = [];
@@ -128,10 +72,7 @@ function compareFindings(a, b) {
128
72
  // A stable, content-derived tiebreak, so replay reproduces the order.
129
73
  return findingFingerprint(a) < findingFingerprint(b) ? -1 : 1;
130
74
  }
131
- /**
132
- * Re-exported so a caller wiring the funnel and its ledger imports one module.
133
- * The implementation lives in `@descryy/ir`'s identity module — see
134
- * `DEC-NEXT-edge-id-prefix-split` for why an identity gets exactly one home.
135
- */
75
+ /** Re-exported so a caller wiring the funnel and ledger imports one module — implementation
76
+ * lives in @descryy/ir's identity module (DEC-NEXT-edge-id-prefix-split). */
136
77
  export { findingFingerprint } from "@descryy/ir";
137
78
  //# sourceMappingURL=finding-funnel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"finding-funnel.js","sourceRoot":"","sources":["../../src/governance/finding-funnel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"finding-funnel.js","sourceRoot":"","sources":["../../src/governance/finding-funnel.ts"],"names":[],"mappings":"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"}
@@ -1,48 +1,10 @@
1
1
  /**
2
- * The Graph Builder.
3
- *
4
- * This is the first place the multi-language thesis is true or false in code.
5
- * Everything before it works on one adapter's output at a time; this folds
6
- * several adapters' IR into one graph, and either the cross-language join
7
- * happens here or it never happens at all.
8
- *
9
- * Its acceptance test is XL-1 — *exactly one* `API_ENDPOINT` node after merging
10
- * both adapters — and XL-2, that the node carries no language. Step 7 showed the
11
- * two fakes reach the same endpoint id independently; this has to preserve that
12
- * through the merge rather than produce two nodes or one wrong one.
13
- *
14
- * ## Four rules, in order of how much damage they prevent
15
- *
16
- * **1. Never invent a node.** An edge whose target cannot be resolved is
17
- * dropped. It never becomes a stub node, however convenient that would be for
18
- * traversal. On the prior-art graphs measured for this build, 52-60% of edges
19
- * pointed at a non-existent target — `append` with in-degree 1,036, `get` with
20
- * 973. Materialising those as nodes is how a graph acquires a thousand-way hub
21
- * that every impact score then routes through.
22
- *
23
- * **2. Merge is order-independent.** DEC-012's third tie-break exists only for
24
- * this. Without it, "which adapter ran first" leaks into every impact score, and
25
- * the symptom is an unreproducible difference nobody can bisect.
26
- *
27
- * **3. Collisions are reported, not merged.** Two nodes sharing an id but
28
- * disagreeing on type or language are not the same thing, and merging them pools
29
- * the edges of two unrelated symbols. See DEC-024 — this is a live hazard in a
30
- * polyglot monorepo, not a hypothetical one.
31
- *
32
- * **4. Nothing enters without passing the Normaliser.** The builder calls it
33
- * rather than trusting its caller, because the batch-spanning `nodeExists` it
34
- * needs — an edge may legitimately point into a sibling batch in the same build
35
- * — can only be computed here.
2
+ * Folds multiple adapters' IR into one graph — XL-1: one `API_ENDPOINT` node after merging; XL-2: no
3
+ * language on it. Never invents a node for an unresolved edge (52-60% of edges were dangling in
4
+ * prior-art graphs measured here); merge order-independent (DEC-012); collisions reported, never merged (DEC-024).
36
5
  */
37
6
  import { type IRBatch, type IREdge, type IRNode, type NodeType, type NormaliseOptions, type Rejection, type UnresolvedRef } from "@descryy/ir";
38
- /**
39
- * Two nodes claimed the same id but are not the same thing.
40
- *
41
- * Reported rather than resolved. There is no correct merge — the ids are equal,
42
- * so the graph has no way to represent them separately — and picking one
43
- * silently is the corruption DEC-024 describes. Surfacing it puts the failure in
44
- * §20.2's "not analysable" category, where a user can see it.
45
- */
7
+ /** Two nodes claimed the same id but are not the same thing. Reported, never silently resolved (DEC-024). */
46
8
  export interface IdentityCollision {
47
9
  readonly nodeId: string;
48
10
  readonly kept: {
@@ -56,35 +18,21 @@ export interface IdentityCollision {
56
18
  readonly producedBy: string;
57
19
  };
58
20
  }
59
- /**
60
- * How much of a workspace-scoped node type actually crossed a repository
61
- * boundary, and how much only ever existed in one.
62
- *
63
- * Counted per *repository*, not per producer: two adapters in one repo agreeing
64
- * on a node is a within-repo merge and is not what DEC-054's scope table exists
65
- * to achieve.
66
- */
21
+ /** How much of a workspace-scoped type crossed a repo boundary, counted per repo not producer (DEC-054). */
67
22
  export interface JoinMetric {
68
23
  readonly type: NodeType;
69
24
  /** Distinct nodes of this type in the built graph. */
70
25
  readonly total: number;
71
- /** Of those, how many were supplied by more than one repository — the join. */
72
- readonly joined: number;
26
+ /** Of those, how many were supplied by more than one repository — the join itself. */
27
+ readonly suppliedByTwoOrMoreRepos: number;
28
+ /** False when fewer than two repos emitted this type (join is structurally zero). True only means possible — see `NO_CROSS_REPO_JOIN`. */
29
+ readonly crossRepoJoinPossible: boolean;
73
30
  /** Repositories in this build that emitted the type at all. */
74
31
  readonly repos: readonly string[];
75
32
  /** The identity scope each of those repositories resolved to, deduplicated. */
76
33
  readonly scopes: readonly string[];
77
34
  }
78
- /**
79
- * Something the build cannot call an error but must not pass over in silence.
80
- *
81
- * `NO_CROSS_REPO_JOIN` is the one that matters and the reason this list exists.
82
- * A workspace id has to be byte-identical in every repository that shares it,
83
- * and when it is not, nothing fails: every batch normalises, every node is
84
- * well-formed, every edge resolves, and the two sides simply never meet. Zero
85
- * joins, zero errors, zero warnings — which is why the zero itself has to be the
86
- * warning.
87
- */
35
+ /** Not an error, but not silent. `NO_CROSS_REPO_JOIN`: a workspace id must be byte-identical across repos, or nothing else fails but the zero-join is the warning. */
88
36
  export interface BuildWarning {
89
37
  readonly code: "NO_CROSS_REPO_JOIN";
90
38
  readonly type: NodeType;
@@ -104,24 +52,14 @@ export interface BuildResult {
104
52
  /** Edges dropped because an endpoint resolved to nothing. Never stubbed. */
105
53
  readonly droppedEdges: number;
106
54
  /** Per workspace-scoped type, emitted by at least one repository in this build. */
107
- readonly joins: readonly JoinMetric[];
55
+ readonly crossRepoJoins: readonly JoinMetric[];
108
56
  readonly warnings: readonly BuildWarning[];
109
57
  }
110
58
  export interface BuildOptions {
111
- /**
112
- * Does a node with this id already exist in the store? An incremental build
113
- * over one changed file legitimately points at nodes no batch in this build
114
- * supplied.
115
- */
59
+ /** Does a node with this id already exist in the store? Needed for incremental builds over one changed file. */
116
60
  readonly nodeExists?: (id: string) => boolean;
117
61
  readonly confidenceCeilings?: NormaliseOptions["confidenceCeilings"];
118
62
  }
119
- /**
120
- * Fold normalised batches into one graph.
121
- *
122
- * Pure: no store, no IO. The store is one consumer of the result, the
123
- * conformance harness is another, and a builder that wrote as it went could be
124
- * tested by neither without a database.
125
- */
63
+ /** Fold normalised batches into one graph. Pure: no store, no IO — testable without a database. */
126
64
  export declare function buildGraph(batches: readonly IRBatch[], options?: BuildOptions): BuildResult;
127
65
  //# sourceMappingURL=build.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/graph/build.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,OAAO,EAIL,KAAK,OAAO,EACZ,KAAK,MAAM,EACX,KAAK,MAAM,EACX,KAAK,QAAQ,EACb,KAAK,gBAAgB,EACrB,KAAK,SAAS,EACd,KAAK,aAAa,EACnB,MAAM,aAAa,CAAC;AAMrB;;;;;;;GAOG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IACxG,QAAQ,CAAC,SAAS,EAAE;QAClB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QACjC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;KAC7B,CAAC;CACH;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,sDAAsD;IACtD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,+EAA+E;IAC/E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,+DAA+D;IAC/D,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,+EAA+E;IAC/E,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;IACpC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,UAAU,EAAE,SAAS,aAAa,EAAE,CAAC;IAC9C,+EAA+E;IAC/E,QAAQ,CAAC,UAAU,EAAE,SAAS,SAAS,EAAE,CAAC;IAC1C,qFAAqF;IACrF,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,oEAAoE;IACpE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAClD,4EAA4E;IAC5E,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,mFAAmF;IACnF,QAAQ,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,SAAS,YAAY,EAAE,CAAC;CAC5C;AAED,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC;IAC9C,QAAQ,CAAC,kBAAkB,CAAC,EAAE,gBAAgB,CAAC,oBAAoB,CAAC,CAAC;CACtE;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,SAAS,OAAO,EAAE,EAAE,OAAO,GAAE,YAAiB,GAAG,WAAW,CA4L/F"}
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/graph/build.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAIL,KAAK,OAAO,EACZ,KAAK,MAAM,EACX,KAAK,MAAM,EACX,KAAK,QAAQ,EACb,KAAK,gBAAgB,EACrB,KAAK,SAAS,EACd,KAAK,aAAa,EACnB,MAAM,aAAa,CAAC;AAMrB,6GAA6G;AAC7G,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IACxG,QAAQ,CAAC,SAAS,EAAE;QAClB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QACjC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;KAC7B,CAAC;CACH;AAED,4GAA4G;AAC5G,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,sDAAsD;IACtD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,sFAAsF;IACtF,QAAQ,CAAC,wBAAwB,EAAE,MAAM,CAAC;IAC1C,0IAA0I;IAC1I,QAAQ,CAAC,qBAAqB,EAAE,OAAO,CAAC;IACxC,+DAA+D;IAC/D,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,+EAA+E;IAC/E,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAED,sKAAsK;AACtK,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;IACpC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,UAAU,EAAE,SAAS,aAAa,EAAE,CAAC;IAC9C,+EAA+E;IAC/E,QAAQ,CAAC,UAAU,EAAE,SAAS,SAAS,EAAE,CAAC;IAC1C,qFAAqF;IACrF,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,oEAAoE;IACpE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAClD,4EAA4E;IAC5E,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,mFAAmF;IACnF,QAAQ,CAAC,cAAc,EAAE,SAAS,UAAU,EAAE,CAAC;IAC/C,QAAQ,CAAC,QAAQ,EAAE,SAAS,YAAY,EAAE,CAAC;CAC5C;AAED,MAAM,WAAW,YAAY;IAC3B,gHAAgH;IAChH,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC;IAC9C,QAAQ,CAAC,kBAAkB,CAAC,EAAE,gBAAgB,CAAC,oBAAoB,CAAC,CAAC;CACtE;AAED,mGAAmG;AACnG,wBAAgB,UAAU,CAAC,OAAO,EAAE,SAAS,OAAO,EAAE,EAAE,OAAO,GAAE,YAAiB,GAAG,WAAW,CA2L/F"}
Binary file
@@ -1 +1 @@
1
- {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/graph/build.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,OAAO,EACL,cAAc,EACd,OAAO,EACP,2BAA2B,GAQ5B,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvE,MAAM,gBAAgB,GAA0B,IAAI,GAAG,CAAC,2BAA2B,CAAC,CAAC;AAoFrF;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAC,OAA2B,EAAE,UAAwB,EAAE;IAChF,MAAM,UAAU,GAAgB,EAAE,CAAC;IAEnC,4EAA4E;IAC5E,uEAAuE;IACvE,6EAA6E;IAC7E,4EAA4E;IAE5E,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;IACtC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAC/B,IAAI,OAAO,IAAI,EAAE,EAAE,KAAK,QAAQ;gBAAE,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IACD,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;IACrD,MAAM,UAAU,GAAG,CAAC,EAAU,EAAW,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,QAAQ,CAAC,EAAE,CAAC,CAAC;IAEhF,4EAA4E;IAE5E,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IACxC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IACxC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAyB,CAAC;IACpD,MAAM,UAAU,GAAwB,EAAE,CAAC;IAC3C,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,WAAW,GAAG,CAAC,CAAC;IAEpB,6EAA6E;IAC7E,2EAA2E;IAC3E,qEAAqE;IACrE,mEAAmE;IACnE,MAAM,SAAS,GAAG,IAAI,GAAG,EAAuB,CAAC;IACjD,MAAM,WAAW,GAAG,IAAI,GAAG,EAAyB,CAAC;IACrD,MAAM,YAAY,GAAG,IAAI,GAAG,EAAyB,CAAC;IAEtD,8EAA8E;IAC9E,yEAAyE;IACzE,2EAA2E;IAC3E,4EAA4E;IAC5E,kBAAkB;IAClB,MAAM,OAAO,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACzC,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC,aAAa,CACtD,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,SAAS,EAAE,CAC3C,CACF,CAAC;IAEF,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,gBAAgB,GAAqB;YACzC,UAAU;YACV,GAAG,CAAC,OAAO,CAAC,kBAAkB,KAAK,SAAS;gBAC1C,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,EAAE,CAAC;SACxD,CAAC;QACF,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;QACvD,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;QACtC,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI;YAAE,SAAS;QAEpC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACtC,IAAI,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpC,IAAI,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACnC,IAAI,KAAK,KAAK,SAAS;oBAAE,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;gBACrE,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAE7B,IAAI,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC1C,IAAI,QAAQ,KAAK,SAAS;oBAAE,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;gBAC/E,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAEhC,IAAI,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACzC,IAAI,MAAM,KAAK,SAAS;oBAAE,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;gBAC5E,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;YACjG,CAAC;YAED,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACpC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;gBACzB,SAAS;YACX,CAAC;YACD,IAAI,mBAAmB,CAAC,QAAQ,CAAC,KAAK,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChE,0DAA0D;gBAC1D,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;gBACzC,UAAU,CAAC,IAAI,CAAC;oBACd,MAAM,EAAE,IAAI,CAAC,EAAE;oBACf,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE;oBACrF,SAAS,EACP,MAAM,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU;wBACnC,CAAC,CAAC;4BACE,IAAI,EAAE,QAAQ,CAAC,IAAI;4BACnB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;4BAC3B,UAAU,EAAE,QAAQ,CAAC,UAAU;yBAChC;wBACH,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;iBAChF,CAAC,CAAC;gBACH,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;gBAC3B,SAAS;YACX,CAAC;YACD,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;YAC9C,WAAW,IAAI,CAAC,CAAC;QACnB,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACtC,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACnD,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAChC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBACrB,SAAS;YACX,CAAC;YACD,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;YAC1C,WAAW,IAAI,CAAC,CAAC;QACnB,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;YAC1C,yEAAyE;YACzE,wEAAwE;YACxE,sDAAsD;YACtD,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;YACzF,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAED,6EAA6E;IAC7E,+EAA+E;IAC/E,0EAA0E;IAC1E,yCAAyC;IAEzC,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3D,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrD,IAAI,MAAM,IAAI,IAAI;YAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;YACpC,YAAY,IAAI,CAAC,CAAC;IACzB,CAAC;IAED,6EAA6E;IAE7E,MAAM,KAAK,GAAiB,EAAE,CAAC;IAC/B,MAAM,QAAQ,GAAmB,EAAE,CAAC;IAEpC,KAAK,MAAM,IAAI,IAAI,2BAA2B,EAAE,CAAC;QAC/C,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACxD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAEjC,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QACxE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;QACvF,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC1D,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QAElE,2EAA2E;QAC3E,sEAAsE;QACtE,2EAA2E;QAC3E,4DAA4D;QAC5D,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;YACrC,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,oBAAoB;gBAC1B,IAAI;gBACJ,MAAM,EACJ,GAAG,KAAK,CAAC,MAAM,yBAAyB,IAAI,0BAA0B;oBACtE,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;oBAC9F,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;wBAChB,CAAC,CAAC,wFAAwF;4BACxF,yFAAyF;wBAC3F,CAAC,CAAC,uEAAuE,CAAC;aAC/E,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,2EAA2E;IAC3E,6EAA6E;IAC7E,gBAAgB;IAChB,MAAM,IAAI,GAAG,CAA2B,CAAI,EAAE,CAAI,EAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAExF,OAAO;QACL,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QACrC,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAC7B,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,CACvE;QACD,UAAU,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACjD,GAAG,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,aAAa,CACxD,GAAG,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,SAAS,EAAE,CAC7C,CACF;QACD,UAAU;QACV,WAAW;QACX,WAAW;QACX,UAAU;QACV,YAAY;QACZ,KAAK;QACL,QAAQ;KACT,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/graph/build.ts"],"names":[],"mappings":"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"}
@@ -1,45 +1,7 @@
1
1
  /**
2
- * The cross-language declaration index — DEC-161.
3
- *
4
- * Runs **after** every adapter has produced its batch, over the batches
5
- * themselves rather than inside any one adapter, because the target id an
6
- * unresolved reference should join to is not something the referencing
7
- * adapter can compute — it does not have the declaring language's source.
8
- *
9
- * ## Why the key is a string neither side derives from the other
10
- *
11
- * `UnresolvedRef.rawTarget` is what the referencing side's own source spells —
12
- * a Java `import okhttp3.OkHttpClient;` cannot carry Kotlin's module or source
13
- * set, because nothing in that line names either.
14
- * `CrossLanguageDeclaration.qualifiedName` is the same kind of fact, stated by
15
- * the *declaring* adapter about how an external reader would reach its node.
16
- * Matching the two is a string comparison over two independently-computed
17
- * facts, not a derivation of one from the other — which is what keeps this a
18
- * resolver rather than a heuristic.
19
- *
20
- * ## Mutual declaration
21
- *
22
- * Two adapters resolve against each other only when each names the other as a
23
- * peer (`CapabilityMatrix.crossLanguageNamespace`). A one-sided declaration —
24
- * or two unrelated adapters that happen to pick the same namespace `id` by
25
- * accident — resolves nothing. This is deliberate: equality-only comparison
26
- * makes an accidental id collision silent otherwise, and that is the exact
27
- * failure this mechanism exists to prevent, arriving through its own door if
28
- * declaration were not mutual.
29
- *
30
- * ## Ambiguity is the normal case, not the exception
31
- *
32
- * More than one candidate for a `qualifiedName`, with no stated basis to
33
- * choose between them, is reported and resolves nothing — precision over
34
- * recall, and the same rule `dup-ids.mjs` enforces on plain node identity.
35
- *
36
- * ## Resolution and provenance
37
- *
38
- * Every resolved edge is stamped `resolution: 1` (R1 — a name match between
39
- * two adapters, neither of which type-checked the other's file) and
40
- * `producedBy: RESOLVER_PRODUCED_BY`. Neither adapter produced this edge, and
41
- * attributing it to one would make that adapter's own precision figures
42
- * answer for a join it did not make.
2
+ * Cross-language declaration index (DEC-161): matches `rawTarget` to `qualifiedName` as independently-
3
+ * computed strings, never derived from each other. Requires mutual peer declaration or resolves nothing;
4
+ * ambiguity is reported, never guessed. Every resolved edge stamped R1, `RESOLVER_PRODUCED_BY`.
43
5
  */
44
6
  import type { IRBatch, IREdge, UnresolvedRef } from "@descryy/ir";
45
7
  /** Stamped on every edge this pass mints. Neither adapter's own id, on purpose. */
@@ -48,8 +10,7 @@ export interface NamespaceDeclaration {
48
10
  readonly id: string;
49
11
  readonly peers: readonly string[];
50
12
  }
51
- /** More than one declared node answers to this `qualifiedName` inside a
52
- * matched namespace pair — refused rather than guessed. */
13
+ /** More than one declared node answers to this `qualifiedName` — refused rather than guessed. */
53
14
  export interface CrossLanguageAmbiguity {
54
15
  readonly unresolved: UnresolvedRef;
55
16
  readonly qualifiedName: string;
@@ -1 +1 @@
1
- {"version":3,"file":"cross-language.d.ts","sourceRoot":"","sources":["../../src/graph/cross-language.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH,OAAO,KAAK,EAAY,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5E,mFAAmF;AACnF,eAAO,MAAM,oBAAoB,8BAA8B,CAAC;AAEhE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AAED;4DAC4D;AAC5D,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC;IACnC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9C;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,SAAS,EAAE,SAAS,sBAAsB,EAAE,CAAC;CACvD;AAgDD,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,SAAS,OAAO,EAAE,EAC3B,WAAW,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,oBAAoB,GAAG,SAAS,GACpE,mBAAmB,CAsDrB"}
1
+ {"version":3,"file":"cross-language.d.ts","sourceRoot":"","sources":["../../src/graph/cross-language.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAY,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5E,mFAAmF;AACnF,eAAO,MAAM,oBAAoB,8BAA8B,CAAC;AAEhE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AAED,iGAAiG;AACjG,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC;IACnC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9C;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,SAAS,EAAE,SAAS,sBAAsB,EAAE,CAAC;CACvD;AAqBD,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,SAAS,OAAO,EAAE,EAC3B,WAAW,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,oBAAoB,GAAG,SAAS,GACpE,mBAAmB,CAmDrB"}
@@ -1,80 +1,15 @@
1
1
  /**
2
- * The cross-language declaration index — DEC-161.
3
- *
4
- * Runs **after** every adapter has produced its batch, over the batches
5
- * themselves rather than inside any one adapter, because the target id an
6
- * unresolved reference should join to is not something the referencing
7
- * adapter can compute — it does not have the declaring language's source.
8
- *
9
- * ## Why the key is a string neither side derives from the other
10
- *
11
- * `UnresolvedRef.rawTarget` is what the referencing side's own source spells —
12
- * a Java `import okhttp3.OkHttpClient;` cannot carry Kotlin's module or source
13
- * set, because nothing in that line names either.
14
- * `CrossLanguageDeclaration.qualifiedName` is the same kind of fact, stated by
15
- * the *declaring* adapter about how an external reader would reach its node.
16
- * Matching the two is a string comparison over two independently-computed
17
- * facts, not a derivation of one from the other — which is what keeps this a
18
- * resolver rather than a heuristic.
19
- *
20
- * ## Mutual declaration
21
- *
22
- * Two adapters resolve against each other only when each names the other as a
23
- * peer (`CapabilityMatrix.crossLanguageNamespace`). A one-sided declaration —
24
- * or two unrelated adapters that happen to pick the same namespace `id` by
25
- * accident — resolves nothing. This is deliberate: equality-only comparison
26
- * makes an accidental id collision silent otherwise, and that is the exact
27
- * failure this mechanism exists to prevent, arriving through its own door if
28
- * declaration were not mutual.
29
- *
30
- * ## Ambiguity is the normal case, not the exception
31
- *
32
- * More than one candidate for a `qualifiedName`, with no stated basis to
33
- * choose between them, is reported and resolves nothing — precision over
34
- * recall, and the same rule `dup-ids.mjs` enforces on plain node identity.
35
- *
36
- * ## Resolution and provenance
37
- *
38
- * Every resolved edge is stamped `resolution: 1` (R1 — a name match between
39
- * two adapters, neither of which type-checked the other's file) and
40
- * `producedBy: RESOLVER_PRODUCED_BY`. Neither adapter produced this edge, and
41
- * attributing it to one would make that adapter's own precision figures
42
- * answer for a join it did not make.
2
+ * Cross-language declaration index (DEC-161): matches `rawTarget` to `qualifiedName` as independently-
3
+ * computed strings, never derived from each other. Requires mutual peer declaration or resolves nothing;
4
+ * ambiguity is reported, never guessed. Every resolved edge stamped R1, `RESOLVER_PRODUCED_BY`.
43
5
  */
44
6
  /** Stamped on every edge this pass mints. Neither adapter's own id, on purpose. */
45
7
  export const RESOLVER_PRODUCED_BY = "cross-language-resolver@1";
46
8
  function isMutualPeer(a, b) {
47
9
  return a.peers.includes(b.id) && b.peers.includes(a.id);
48
10
  }
49
- /**
50
- * @param batches Every batch in this build, from every adapter.
51
- * @param namespaceOf A batch's `producedBy` (`adapterId@version`) to its
52
- * declared namespace, if any. The caller supplies this because a
53
- * `CapabilityMatrix` is a per-adapter fact, not a per-batch one, and this
54
- * pass is deliberately kept ignorant of how an adapter is instantiated.
55
- */
56
- /**
57
- * A batch's `unresolved` list, tolerating the producer that has never heard of
58
- * the field.
59
- *
60
- * `normaliseBatch` — every batch's gatekeeper on the way to the store — treats
61
- * `unresolved` as absent-means-none, and says why in its own comment: absent is
62
- * what a producer not yet updated to report it sends. Adapters are versioned
63
- * and released on their own cadence exactly so that can happen, so a batch this
64
- * pass rejects is one the Normaliser would have accepted.
65
- *
66
- * This is the same unguarded `.length` that crashed a real `analyze` run
67
- * (b9044b2), reported as the *adapter* failing while the adapter was returning
68
- * over a thousand perfectly good nodes. This pass is not reachable from
69
- * `analyze` today, so it was latent rather than live — which is a reason to
70
- * close it while the reason is written down, not a reason to leave it.
71
- *
72
- * Absent and malformed stay different, the line the Normaliser draws too: a
73
- * missing field is an older producer, a field holding a string is a broken one,
74
- * and defaulting the second away would hide a real defect. The producer is
75
- * named in the message because that is the one thing a reader needs and cannot
76
- * recover from the stack.
77
- */
11
+ /** @param batches Every batch in this build. @param namespaceOf A batch's producedBy to its declared namespace, if any. */
12
+ /** A batch's `unresolved` list, absent-means-none (same as `normaliseBatch`) — but malformed is a real defect (crashed a real `analyze` run, b9044b2). */
78
13
  function referencingRefs(batch) {
79
14
  const raw = batch.unresolved;
80
15
  if (raw === undefined || raw === null)
@@ -87,16 +22,13 @@ function referencingRefs(batch) {
87
22
  return raw;
88
23
  }
89
24
  export function resolveCrossLanguage(batches, namespaceOf) {
90
- // One entry per batch that actually declared a namespace. A batch with no
91
- // declaration contributes nothing to either side — it is neither a source
92
- // of candidates nor a consumer of them.
25
+ // One entry per batch that declared a namespace — a batch with none
26
+ // contributes nothing to either side.
93
27
  const declaring = batches
94
28
  .map((batch) => ({ batch, namespace: namespaceOf(batch.producedBy) }))
95
29
  .filter((entry) => entry.namespace !== undefined);
96
- // qualifiedName -> candidate node ids, scoped to ONE declaring batch at a
97
- // time rather than pooled across batches sharing a namespace id — pooling
98
- // would let two same-language batches silently stand in for each other,
99
- // which is not a claim this pass is entitled to make.
30
+ // Scoped to ONE declaring batch at a time, never pooled across batches
31
+ // sharing a namespace id — pooling would let them silently stand in for each other.
100
32
  const resolved = [];
101
33
  const ambiguous = [];
102
34
  for (const referencing of declaring) {
@@ -1 +1 @@
1
- {"version":3,"file":"cross-language.js","sourceRoot":"","sources":["../../src/graph/cross-language.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cross-language.js","sourceRoot":"","sources":["../../src/graph/cross-language.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  export { buildGraph } from "./build.ts";
2
- export type { BuildResult, BuildOptions, IdentityCollision } from "./build.ts";
2
+ export type { BuildResult, BuildOptions, IdentityCollision, JoinMetric, BuildWarning } from "./build.ts";
3
3
  export { persistGraph } from "./persist.ts";
4
4
  export type { PersistResult } from "./persist.ts";
5
5
  export { preferIncoming, mergeEdge, mergeNode, corroborators, identityFingerprint, EDGE_MERGE_CONDITION, NODE_MERGE_CONDITION, } from "./merge.ts";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/graph/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/E,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD,OAAO,EACL,cAAc,EACd,SAAS,EACT,SAAS,EACT,aAAa,EACb,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AACjF,YAAY,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE7G,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,aAAa,EACb,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EAClB,uBAAuB,EACvB,gBAAgB,GACjB,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,KAAK,EACL,iBAAiB,EACjB,eAAe,EACf,wBAAwB,EACxB,yBAAyB,EACzB,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACxE,YAAY,EACV,uBAAuB,EACvB,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,EACf,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/graph/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,iBAAiB,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEzG,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD,OAAO,EACL,cAAc,EACd,SAAS,EACT,SAAS,EACT,aAAa,EACb,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AACjF,YAAY,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE7G,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,aAAa,EACb,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EAClB,uBAAuB,EACvB,gBAAgB,GACjB,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,KAAK,EACL,iBAAiB,EACjB,eAAe,EACf,wBAAwB,EACxB,yBAAyB,EACzB,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACxE,YAAY,EACV,uBAAuB,EACvB,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,EACf,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC"}