@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,170 +1,41 @@
1
1
  /**
2
- * The capability-tier generator. DEC-075 §6, in code.
3
- *
4
- * > *"A tier is generated from `capabilities()`, never written in prose, and may
5
- * > be published for a language only when the corpus passes at the resolution
6
- * > the tier claims, a ≥200-edge precision draw passes on at least two
7
- * > repositories the adapter's author did not choose, and `capabilities()`
8
- * > declares exactly the node and edge types the adapter emitted."*
9
- *
10
- * ## The design point: this thing exists to say no
11
- *
12
- * A generator that awards a tier to everything it is shown is a rubber stamp
13
- * with a build step. The output that matters is **the row that failed**, which
14
- * is why `unmet` is a list of requirements with their statements rather than a
15
- * boolean, and why `certify` never returns a bare tier without also returning
16
- * what the next tier up is missing.
17
- *
18
- * Two rules follow from that, and both are the opposite of what is convenient:
19
- *
20
- * 1. **Absent evidence is not a pass.** No precision draw recorded means the
21
- * attested requirement is unmet, exactly as if a recorded draw had failed.
22
- * The alternative — treating silence as satisfaction — is how every unearned
23
- * claim in this repository would have been generated.
24
- * 2. **An attested requirement is labelled attested, in the output, always.**
25
- * A machine can check "≥200 edges" and "two repositories". It cannot check
26
- * *"the author did not choose them"*, because that is a fact about a person's
27
- * intent. Marking it as declared-by-a-human is what stops this function
28
- * laundering a judgement into a computed result. `certify` therefore reports
29
- * `attestedBy` alongside the tier, and a consumer that prints the tier
30
- * without it has dropped the only part that says who is responsible.
31
- *
32
- * ## What it does not do
33
- *
34
- * It does not run the conformance harness or the precision benches. It is given
35
- * their results. That keeps it pure and testable, and it keeps the awkward fact
36
- * visible: the precision evidence is **recorded by hand today**, because the
37
- * benches are throwaway scripts that print to a terminal. `GateEvidence` is
38
- * where that hand-recording is written down and dated, rather than living in a
39
- * decision document that nothing reads.
2
+ * Capability-tier generator (DEC-075 §6): computed from `capabilities()`, never prose. Requires a
3
+ * ≥200-edge precision draw on two repos the author didn't choose; absent evidence fails, never passes.
4
+ * Given harness/bench results, doesn't run them itself; `attestedBy` names who recorded the human call.
40
5
  */
41
6
  import type { CapabilityMatrix, EdgeType, NodeType, ResolutionLevel } from "@descryy/ir";
42
7
  import type { RefusalCensus } from "../query/unresolved.ts";
43
8
  import { type Requirement, type Tier } from "./ladder.ts";
44
- /**
45
- * One adjudicated precision draw, as DEC-075 §6.2 requires it.
46
- *
47
- * `authorChose` is the field that makes this honest. It defaults to nothing —
48
- * a recorder who has not thought about it produces an incomplete record rather
49
- * than an accidental pass, the same reason `reliabilityCap`'s `nameLevel` has
50
- * no default.
51
- */
9
+ /** One adjudicated precision draw (DEC-075 §6.2). `authorChose` has no default — an unrecorded
10
+ * value is an incomplete record, not an accidental pass (same reason as `reliabilityCap.nameLevel`). */
52
11
  export interface PrecisionDraw {
53
12
  readonly repository: string;
54
13
  readonly edgeType: EdgeType | "mixed";
55
14
  readonly drawn: number;
56
15
  readonly correct: number;
57
- /**
58
- * How many of `drawn` the adjudicator actually rendered a verdict on —
59
- * `undefined` when every adjudicator this project has ever recorded a draw
60
- * with decides every row it draws, so `decided` and `drawn` have always
61
- * been the same number and no draw needed to say so until now.
62
- *
63
- * **Kotlin is the first adapter where they diverge, and the divergence
64
- * exposed a real instrument defect.** `correct / drawn` silently punishes
65
- * an adjudicator for honestly declining to decide a row exactly as if it
66
- * had decided that row wrong — okhttp drew 200, decided 192, and every one
67
- * of the 192 it *did* decide was correct (192/192 = 100%, its own
68
- * pre-registered gate: GATE PASSED); `correct / drawn` reads that as
69
- * 192/200 = 96%, below the 98% floor, for a reason that has nothing to do
70
- * with the adapter's precision. Precision is measured over `decided` rows
71
- * only (see `checkPrecisionDraws`); `decided / drawn` — coverage — is a
72
- * separate, always-disclosed axis (`bench/tier-matrix.mjs`'s
73
- * `describeDrawCoverage`), never folded into the precision figure: a draw
74
- * with high coverage and lower precision and one with low coverage and
75
- * clean precision are different facts, and burying the second inside a
76
- * clean-looking percentage is the failure this field exists to prevent.
77
- */
16
+ /** How many of `drawn` rows the adjudicator actually decided (undefined if it never diverges).
17
+ * Precision = correct/decided, not correct/drawn — okhttp: 192/192 decided passes 98%, but
18
+ * 192/200 fails it for the wrong reason. Coverage (decided/drawn) is disclosed separately. */
78
19
  readonly decided?: number;
79
- /**
80
- * How many candidates of this edge type the repository contained — the
81
- * population the draw was taken **from**, not the sample size.
82
- *
83
- * ## Zero out of zero is undefined here too
84
- *
85
- * Without it, `0 edges drawn, below 200` and `47 edges drawn, below 200` print
86
- * identically, and they are different facts with different remedies:
87
- *
88
- * | | statement about | what to do |
89
- * | --- | --- | --- |
90
- * | population 0 | **the corpus** — this reference set contains nothing to sample | find other repositories, or accept the bar is unreachable here |
91
- * | population > 0, drawn short | **the adapter** — measured and short | measure more |
92
- *
93
- * Python is the live case: `USES_API` is emitted and measures **0 edges** on
94
- * both reference repositories, and that zero is *correct* — a backend service
95
- * in this reference set is a provider rather than a consumer, so no 200-edge
96
- * draw is reachable from it at all. Reporting that as "below 200" tells a
97
- * reader to measure harder, when the honest answer is that **this reference
98
- * set cannot answer the question**.
99
- *
100
- * `undefined` means the population was not recorded, which is neither zero nor
101
- * non-zero and is reported as its own case — the same reason
102
- * `capabilitiesHonest` has an `"unknown"`.
103
- */
20
+ /** Population this edge type could draw from (not the sample size). Needed because 0-of-0 and
21
+ * 0-of-200 are different facts: Python's USES_API measures 0 because backends are providers only
22
+ * here — that's a fact about the corpus, not the adapter. `undefined` = not recorded, its own case. */
104
23
  readonly population?: number;
105
- /**
106
- * The refusal census for this draw's edge type, from `classifyRefusals`.
107
- *
108
- * ## Why the census rather than a recorded "drawable" count
109
- *
110
- * The number that decides reachability is **population minus `outOfScope`**:
111
- * a call read correctly that targets something this workspace does not serve
112
- * can never become an edge here, however good the adapter gets.
113
- *
114
- * | | population | outOfScope | drawable | reads as |
115
- * | --- | --- | --- | --- | --- |
116
- * | `saleor` | 0 | 0 | **0** | nothing to sample |
117
- * | `dispatch` | 4 | 4 | **0** | four third-party calls, refused forever |
118
- * | `discourse` | 20 | 0 | **20** | a capability gap the adapter owns |
119
- *
120
- * Carrying the census rather than a recorded count keeps this **derived**, so
121
- * a measured zero still attests to itself and needs no attribution — unlike a
122
- * `StructuralLimit`. And it cannot drift from the ledger, **because it is the
123
- * ledger**: a separately recorded "drawable" number is the same fact in two
124
- * places, and this project has measured what that costs.
125
- *
126
- * ## The abuse route, which is why `scopeKnown` is load-bearing
127
- *
128
- * With no internal hosts supplied, `classifyRefusals` classifies **every**
129
- * absolute target as `outOfScope` and says so — it "understates the deficit".
130
- * Subtracting blindly there would let an adapter that declares no hosts write
131
- * off every external-looking call as unreachable and **improve its tier by
132
- * supplying less information**. So `scopeKnown === false` makes the
133
- * subtraction **unavailable**, never zero.
134
- *
135
- * Absent entirely, `drawable` falls back to the full population — which blames
136
- * the **adapter** rather than the corpus. That is the safe direction: the
137
- * failure being guarded is a tier improved by withholding evidence.
138
- */
24
+ /** Refusal census for this edge type. drawable = population − outOfScope (a call that can never
25
+ * target this workspace can never become an edge here). `scopeKnown === false` makes that
26
+ * subtraction unavailable, never zero — blocks gaming the tier by declaring fewer hosts. */
139
27
  readonly refusals?: RefusalCensus;
140
28
  /** The negative control over the same adjudicator. Must be ~0. */
141
29
  readonly controlDrawn: number;
142
30
  readonly controlCorrect: number;
143
- /**
144
- * Did the adapter's author pick this repository? DEC-075 §6.2 requires two
145
- * where the answer is **no**. Declared, never inferred — see the header.
146
- */
31
+ /** Did the adapter's author pick this repo? DEC-075 §6.2 requires two that didn't. Declared, not inferred. */
147
32
  readonly authorChose: boolean;
148
33
  /** Who recorded this, so an attested claim has a name against it. */
149
34
  readonly recordedBy: string;
150
35
  readonly recordedOn: string;
151
- /**
152
- * The mixed draw's own composition, by edge type — `undefined` for every
153
- * draw recorded before this field existed, and that absence is itself
154
- * meaningful (see `checkCapability`'s use of it: no data means the
155
- * type-floor check does not run for that draw, not that it fails).
156
- *
157
- * The gap this closes: DEC-221 made the precision draw whole-graph and
158
- * NOT edge-type-scoped (a `USES_API`-only draw structurally cannot carry
159
- * a negative control, DEC-164 §2). That is still correct for what a
160
- * *draw* needs to qualify. But a language's tier can rest on a capability
161
- * (`A.callers` on `USES_API`, `A.routes` on `SERVES_API`) that the draw
162
- * happened to sample almost none of — Kotlin's ktor draw cleared 98%
163
- * precision overall while carrying exactly one decided `USES_API` row,
164
- * which is evidence of nothing about that specific capability. This field
165
- * is what lets `checkCapability` tell "the capability was validated" from
166
- * "the capability was declared and the aggregate draw happened to pass".
167
- */
36
+ /** Per-edge-type breakdown within a mixed draw; undefined predates this field (no-op, not fail).
37
+ * DEC-221 keeps draws whole-graph, not edge-scoped — Kotlin's ktor draw hit 98% precision overall
38
+ * on exactly one decided USES_API row, which validates nothing about that capability specifically. */
168
39
  readonly perEdgeType?: Readonly<Record<string, {
169
40
  readonly decided: number;
170
41
  readonly correct: number;
@@ -173,17 +44,9 @@ export interface PrecisionDraw {
173
44
  export interface ConformanceEvidence {
174
45
  readonly resolution: ResolutionLevel;
175
46
  readonly passed: boolean;
176
- /**
177
- * DEC-070's **adapter** verdict — no type emitted that `capabilities()` did
178
- * not declare.
179
- *
180
- * Deliberately not "the manifest check produced no findings". That check
181
- * reports two different things and only one of them is the adapter's fault:
182
- * `adapterFailed` (emitted-but-undeclared, a real overclaim) and `corpusThin`
183
- * (declared-but-unexercised, a fact about the corpus). Reading them as one
184
- * failed every adapter in the repository at Tier C on its first run here,
185
- * because a low-resolution sweep leaves plenty declared and unexercised.
186
- */
47
+ /** DEC-070's adapter verdict: no type emitted that `capabilities()` didn't declare. Distinguishes
48
+ * `adapterFailed` (overclaim, the adapter's fault) from `corpusThin` (declared-unexercised, the
49
+ * corpus's fault) — conflating them failed every adapter at Tier C on a low-resolution sweep. */
187
50
  readonly manifestClean: boolean;
188
51
  }
189
52
  export interface GateEvidence {
@@ -195,50 +58,15 @@ export interface GateEvidence {
195
58
  readonly emittedEdgeTypes?: readonly EdgeType[];
196
59
  readonly conformance: readonly ConformanceEvidence[];
197
60
  readonly precisionDraws: readonly PrecisionDraw[];
198
- /**
199
- * Types the adapter declares that **no corpus pattern exercised**.
200
- *
201
- * `checkManifest` already computes this and calls it `unpublishable`, with
202
- * the comment *"not publishable as a tier claim"* — written before any tier
203
- * generator existed. It is exactly right: a declared type nothing exercised
204
- * is an untested claim, and a tier resting on it rests on a promise. Treated
205
- * here as not satisfying a capability requirement at all, with its own reason
206
- * so it is distinguishable from a type that was never declared.
207
- */
61
+ /** Types declared but no corpus pattern exercised (`checkManifest`'s `unpublishable`). Treated as
62
+ * not satisfying the requirement at all, with its own reason distinct from "never declared". */
208
63
  readonly unpublishableTypes?: readonly string[];
209
- /**
210
- * Capabilities that **cannot exist in this language**, whatever anyone builds.
211
- *
212
- * DEC-123's case: `REQUIRED_NOT_DECLARED` fires only when an environment
213
- * accessor *fails* on absence, and JavaScript has no such form — `process.env.X`
214
- * yields undefined. No adapter effort makes that finding reachable in
215
- * TypeScript. Without this, the generator scores it as **absent evidence**,
216
- * which is the verdict for *"nobody has built it yet"*, and the two collapse
217
- * into one output.
218
- *
219
- * That collapse is the one distinction §20.2 exists to hold: *"we found
220
- * nothing"* and *"we cannot check this"* are different sentences. At the tier
221
- * layer the difference is between a gap someone should close and a boundary
222
- * nobody can.
223
- *
224
- * **A limit does not block the tier, and it does not vanish either.** It is
225
- * carried onto the certificate and printed, so the tier is published *with*
226
- * its qualifier. Awarding the tier silently would claim the capability;
227
- * withholding it forever would punish a language for its own semantics.
228
- *
229
- * `id` matches a requirement id (`A.callers`) or names a check
230
- * (`REQUIRED_NOT_DECLARED`). `declaredBy` is required for the same reason
231
- * `PrecisionDraw.recordedBy` is: **this is a human judgement, and an
232
- * unattributable one is a way to dodge a requirement that is merely unbuilt.**
233
- * A limit with no reason or no declarer is ignored, and the requirement is
234
- * checked normally.
235
- */
64
+ /** Capabilities this language cannot have, ever (DEC-123: REQUIRED_NOT_DECLARED needs an accessor
65
+ * that fails on absence; JS has none). Distinct from "not built yet" (§20.2) — doesn't block the
66
+ * tier and doesn't vanish, it's printed on the certificate. `declaredBy` required; unattributed = ignored. */
236
67
  readonly structuralLimits?: readonly StructuralLimit[];
237
- /**
238
- * Capabilities claimed **below** what the evidence supports, pending an open
239
- * policy. See `PolicyCap` — this neither waives a requirement nor blocks a
240
- * tier; it stops a deliberate cap being published as an absence.
241
- */
68
+ /** Capabilities claimed below what evidence supports, pending an open policy (see `PolicyCap`).
69
+ * Doesn't waive a requirement or block a tier — stops a deliberate cap being published as an absence. */
242
70
  readonly policyCaps?: readonly PolicyCap[];
243
71
  }
244
72
  /** A capability this language cannot have. Declared, never inferred. */
@@ -250,41 +78,9 @@ export interface StructuralLimit {
250
78
  /** Who declared it. An anonymous structural limit is not admissible. */
251
79
  readonly declaredBy: string;
252
80
  }
253
- /**
254
- * A capability we **could** claim higher and are deliberately claiming lower,
255
- * pending a policy that has not been written.
256
- *
257
- * ## The third state, and why two were not enough
258
- *
259
- * The certificate could say two things about a capability it does not claim:
260
- *
261
- * | | meaning |
262
- * | --- | --- |
263
- * | **absent** | we have not measured it |
264
- * | **unreachable** (`StructuralLimit`) | this language structurally cannot produce it |
265
- * | **capped** *(this)* | we could claim more and are choosing not to, pending a policy |
266
- *
267
- * Publishing the third as the first **understates a capability we have** — the
268
- * tier layer would tell a user we cannot do something we deliberately declined
269
- * to claim. That is §20.2's distinction one layer up, and the same family as the
270
- * `FILE` gap: two different sentences collapsing into one because there was only
271
- * one field to put them in.
272
- *
273
- * The case that produced it: an introspection-fed route table is R4 on fidelity
274
- * — it is read from a running process — and is claimed at R3 because R4's
275
- * promotion and expiry policy is open, R4 requires `observedByRun`, and R4 is
276
- * unconditionally class A (DEC-115). Nothing is lost, because R3 already reaches
277
- * class A for a name-level fact; what is lost is the *promise about expiry*, and
278
- * that is exactly what wants recording.
279
- *
280
- * ## It does not waive anything
281
- *
282
- * Unlike a `StructuralLimit`, a cap is **not** removed from the tier check. The
283
- * requirement is met at the lower claim, so there is nothing to waive — and that
284
- * asymmetry is deliberate: if a cap could skip a requirement it would become the
285
- * cheapest way to collect a tier, which is the abuse `admissibleLimits` already
286
- * guards against for the other kind.
287
- */
81
+ /** A capability claimable higher but deliberately claimed lower, pending an unwritten policy —
82
+ * distinct from absent (unmeasured) and StructuralLimit (impossible). E.g. an R4-introspected
83
+ * route table claimed at R3 pending R4's expiry policy (R4 is unconditionally class A, DEC-115). */
288
84
  export interface PolicyCap {
289
85
  /** A requirement id, or the name of a check. */
290
86
  readonly id: string;
@@ -292,13 +88,8 @@ export interface PolicyCap {
292
88
  readonly claimable: string;
293
89
  /** What is actually claimed. */
294
90
  readonly claimed: string;
295
- /**
296
- * The open policy that would lift the cap.
297
- *
298
- * **Required, and a cap without one is ignored.** "Capped pending nothing" is
299
- * not a cap, it is a decision — and a cap that names no condition can never be
300
- * discharged, so it would sit on the certificate forever looking like caution.
301
- */
91
+ /** The policy that would lift this cap. Required — a cap with none can never be discharged
92
+ * and would sit on the certificate forever looking like caution rather than a decision. */
302
93
  readonly pendingOn: string;
303
94
  /** Who declared it. Same rule as `StructuralLimit`: unattributable is not admissible. */
304
95
  readonly declaredBy: string;
@@ -323,53 +114,27 @@ export interface TierCertificate {
323
114
  readonly unmetForNext: readonly UnmetRequirement[];
324
115
  /** Every tier's verdict, so a reader can see the whole ladder at once. */
325
116
  readonly byTier: Readonly<Record<Tier, readonly UnmetRequirement[]>>;
326
- /**
327
- * Names of the people whose declarations this tier rests on. Empty when the
328
- * tier needed no attested requirement — C and B do not.
329
- */
117
+ /** Who declared the attested requirements this tier rests on. Empty when the tier needs
118
+ * none — C and B never do. */
330
119
  readonly attestedBy: readonly string[];
331
- /**
332
- * Edge types the qualifying precision draws actually covered. Empty under
333
- * the same condition as `attestedBy`. See the generator's own comment: a
334
- * tier resting on, say, an `IMPORTS`-only draw has not had `USES_API`
335
- * itself sampled, and this is where a reader finds that out rather than
336
- * assuming "Tier A" answered a question it did not.
337
- */
120
+ /** Edge types the qualifying draws actually covered (empty under the same condition as
121
+ * `attestedBy`). An IMPORTS-only draw doesn't mean USES_API was itself sampled — this
122
+ * is where a reader finds that gap instead of assuming "Tier A" covers everything. */
338
123
  readonly attestedEdgeTypes: readonly (EdgeType | "mixed")[];
339
- /**
340
- * Requirements waived because this language cannot satisfy them, and checks
341
- * declared unreachable. **Never empty-by-omission in the printed form** — a
342
- * consumer that prints the tier without these has published a capability
343
- * claim the certificate does not make.
344
- */
124
+ /** Requirements waived as unreachable in this language. Never omit these when printing the
125
+ * tier — a consumer that does has published a capability claim the certificate doesn't make. */
345
126
  readonly limitations: readonly StructuralLimit[];
346
- /**
347
- * Deliberate under-claims, printed for the same reason `limitations` are:
348
- * omitting them publishes a cap as an absence, which understates a capability
349
- * the adapter has.
350
- */
127
+ /** Deliberate under-claims. Omitting them publishes a cap as an absence, understating a
128
+ * capability the adapter actually has. */
351
129
  readonly policyCaps: readonly PolicyCap[];
352
- /**
353
- * Bars this **reference set** cannot answer — every recorded draw whose
354
- * population was zero.
355
- *
356
- * Printed beside the structural limitations because it is the same kind of
357
- * statement: not *"the adapter fell short"* but *"there was nothing here to
358
- * measure"*. The remedy is other repositories, and a certificate that does not
359
- * say so sends a reader to measure harder against an empty population.
360
- */
130
+ /** Draws whose population was zero — nothing here to measure, not "the adapter fell short."
131
+ * Printed beside structural limitations; the remedy is other repositories. */
361
132
  readonly unreachableHere: readonly EmptyPopulation[];
362
133
  /** DEC-075 §6.3: does `capabilities()` match what was emitted? */
363
134
  readonly capabilitiesHonest: boolean | "unknown";
364
135
  }
365
136
  export declare function certify(evidence: GateEvidence): TierCertificate;
366
- /**
367
- * The certificate as a developer should read it: the tier, then immediately the
368
- * reason it is not higher.
369
- *
370
- * The failing rows are not an appendix. A support matrix that prints "B" and
371
- * stops teaches a reader that B is the ceiling; printing what A is missing
372
- * turns the same fact into a work item.
373
- */
137
+ /** Tier first, then immediately why it isn't higher. Printing "B" alone teaches a reader B is
138
+ * the ceiling; printing what A is missing turns it into a work item instead. */
374
139
  export declare function formatCertificate(certificate: TierCertificate): string;
375
140
  //# sourceMappingURL=certify.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"certify.d.ts","sourceRoot":"","sources":["../../src/tiers/certify.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"certify.d.ts","sourceRoot":"","sources":["../../src/tiers/certify.ts"],"names":[],"mappings":"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"}