@metaobjectsdev/metadata 0.9.0-rc.1 → 0.10.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 (426) hide show
  1. package/dist/attr-schema-validate.d.ts +1 -1
  2. package/dist/attr-schema-validate.d.ts.map +1 -1
  3. package/dist/attr-schema-validate.js +84 -7
  4. package/dist/attr-schema-validate.js.map +1 -1
  5. package/dist/constants.d.ts +208 -0
  6. package/dist/constants.d.ts.map +1 -0
  7. package/dist/constants.js +419 -0
  8. package/dist/constants.js.map +1 -0
  9. package/dist/constraint-merge.d.ts +18 -0
  10. package/dist/constraint-merge.d.ts.map +1 -0
  11. package/dist/constraint-merge.js +0 -0
  12. package/dist/constraint-merge.js.map +1 -0
  13. package/dist/constraint-validate.d.ts +6 -0
  14. package/dist/constraint-validate.d.ts.map +1 -0
  15. package/dist/constraint-validate.js +274 -0
  16. package/dist/constraint-validate.js.map +1 -0
  17. package/dist/core/attr/attr-constants.d.ts +13 -3
  18. package/dist/core/attr/attr-constants.d.ts.map +1 -1
  19. package/dist/core/attr/attr-constants.js +11 -2
  20. package/dist/core/attr/attr-constants.js.map +1 -1
  21. package/dist/core/attr/attr-definition.embedded.d.ts +3 -0
  22. package/dist/core/attr/attr-definition.embedded.d.ts.map +1 -0
  23. package/dist/core/attr/attr-definition.embedded.js +60 -0
  24. package/dist/core/attr/attr-definition.embedded.js.map +1 -0
  25. package/dist/core/documentation/doc-constants.d.ts +3 -2
  26. package/dist/core/documentation/doc-constants.d.ts.map +1 -1
  27. package/dist/core/documentation/doc-constants.js +3 -1
  28. package/dist/core/documentation/doc-constants.js.map +1 -1
  29. package/dist/core/documentation/doc-provider.d.ts.map +1 -1
  30. package/dist/core/documentation/doc-provider.js +6 -2
  31. package/dist/core/documentation/doc-provider.js.map +1 -1
  32. package/dist/core/documentation/doc-schema.d.ts +1 -1
  33. package/dist/core/documentation/doc-schema.d.ts.map +1 -1
  34. package/dist/core/documentation/doc-schema.js +13 -5
  35. package/dist/core/documentation/doc-schema.js.map +1 -1
  36. package/dist/core/documentation/documentation-definition.embedded.d.ts +3 -0
  37. package/dist/core/documentation/documentation-definition.embedded.d.ts.map +1 -0
  38. package/dist/core/documentation/documentation-definition.embedded.js +79 -0
  39. package/dist/core/documentation/documentation-definition.embedded.js.map +1 -0
  40. package/dist/core/field/field-constants.d.ts +7 -4
  41. package/dist/core/field/field-constants.d.ts.map +1 -1
  42. package/dist/core/field/field-constants.js +7 -7
  43. package/dist/core/field/field-constants.js.map +1 -1
  44. package/dist/core/field/field-definition.embedded.d.ts +3 -0
  45. package/dist/core/field/field-definition.embedded.d.ts.map +1 -0
  46. package/dist/core/field/field-definition.embedded.js +236 -0
  47. package/dist/core/field/field-definition.embedded.js.map +1 -0
  48. package/dist/core/field/field-schema.d.ts +0 -16
  49. package/dist/core/field/field-schema.d.ts.map +1 -1
  50. package/dist/core/field/field-schema.js +10 -158
  51. package/dist/core/field/field-schema.js.map +1 -1
  52. package/dist/core/field/meta-field.d.ts.map +1 -1
  53. package/dist/core/field/meta-field.js +7 -5
  54. package/dist/core/field/meta-field.js.map +1 -1
  55. package/dist/core/file-meta-data-loader.d.ts +18 -0
  56. package/dist/core/file-meta-data-loader.d.ts.map +1 -0
  57. package/dist/core/file-meta-data-loader.js +81 -0
  58. package/dist/core/file-meta-data-loader.js.map +1 -0
  59. package/dist/core/file-source.d.ts +12 -0
  60. package/dist/core/file-source.d.ts.map +1 -0
  61. package/dist/core/file-source.js +46 -0
  62. package/dist/core/file-source.js.map +1 -0
  63. package/dist/core/identity/identity-definition.embedded.d.ts +3 -0
  64. package/dist/core/identity/identity-definition.embedded.d.ts.map +1 -0
  65. package/dist/core/identity/identity-definition.embedded.js +91 -0
  66. package/dist/core/identity/identity-definition.embedded.js.map +1 -0
  67. package/dist/core/identity/identity-schema.d.ts.map +1 -1
  68. package/dist/core/identity/identity-schema.js +3 -2
  69. package/dist/core/identity/identity-schema.js.map +1 -1
  70. package/dist/core/identity/validate-identity-passthrough.d.ts +42 -0
  71. package/dist/core/identity/validate-identity-passthrough.d.ts.map +1 -0
  72. package/dist/core/identity/validate-identity-passthrough.js +158 -0
  73. package/dist/core/identity/validate-identity-passthrough.js.map +1 -0
  74. package/dist/core/object/object-constants.d.ts +2 -1
  75. package/dist/core/object/object-constants.d.ts.map +1 -1
  76. package/dist/core/object/object-constants.js +3 -0
  77. package/dist/core/object/object-constants.js.map +1 -1
  78. package/dist/core/object/object-definition.embedded.d.ts +3 -0
  79. package/dist/core/object/object-definition.embedded.d.ts.map +1 -0
  80. package/dist/core/object/object-definition.embedded.js +110 -0
  81. package/dist/core/object/object-definition.embedded.js.map +1 -0
  82. package/dist/core/object/validate-discriminator.d.ts.map +1 -1
  83. package/dist/core/object/validate-discriminator.js +1 -3
  84. package/dist/core/object/validate-discriminator.js.map +1 -1
  85. package/dist/core/query/query-constants.d.ts.map +1 -1
  86. package/dist/core/query/query-constants.js +5 -3
  87. package/dist/core/query/query-constants.js.map +1 -1
  88. package/dist/core/relationship/derive-m2m-fields.d.ts +26 -0
  89. package/dist/core/relationship/derive-m2m-fields.d.ts.map +1 -0
  90. package/dist/core/relationship/derive-m2m-fields.js +102 -0
  91. package/dist/core/relationship/derive-m2m-fields.js.map +1 -0
  92. package/dist/core/relationship/meta-relationship.d.ts +6 -4
  93. package/dist/core/relationship/meta-relationship.d.ts.map +1 -1
  94. package/dist/core/relationship/meta-relationship.js +12 -8
  95. package/dist/core/relationship/meta-relationship.js.map +1 -1
  96. package/dist/core/relationship/relationship-constants.d.ts +6 -2
  97. package/dist/core/relationship/relationship-constants.d.ts.map +1 -1
  98. package/dist/core/relationship/relationship-constants.js +6 -2
  99. package/dist/core/relationship/relationship-constants.js.map +1 -1
  100. package/dist/core/relationship/relationship-definition.embedded.d.ts +3 -0
  101. package/dist/core/relationship/relationship-definition.embedded.d.ts.map +1 -0
  102. package/dist/core/relationship/relationship-definition.embedded.js +310 -0
  103. package/dist/core/relationship/relationship-definition.embedded.js.map +1 -0
  104. package/dist/core/relationship/relationship-schema.d.ts.map +1 -1
  105. package/dist/core/relationship/relationship-schema.js +13 -7
  106. package/dist/core/relationship/relationship-schema.js.map +1 -1
  107. package/dist/core/validator/validator-definition.embedded.d.ts +3 -0
  108. package/dist/core/validator/validator-definition.embedded.d.ts.map +1 -0
  109. package/dist/core/validator/validator-definition.embedded.js +134 -0
  110. package/dist/core/validator/validator-definition.embedded.js.map +1 -0
  111. package/dist/core/yaml-desugar.d.ts.map +1 -1
  112. package/dist/core/yaml-desugar.js +88 -10
  113. package/dist/core/yaml-desugar.js.map +1 -1
  114. package/dist/core-attr-schemas.d.ts +22 -0
  115. package/dist/core-attr-schemas.d.ts.map +1 -0
  116. package/dist/core-attr-schemas.js +324 -0
  117. package/dist/core-attr-schemas.js.map +1 -0
  118. package/dist/core-types.d.ts +5 -2
  119. package/dist/core-types.d.ts.map +1 -1
  120. package/dist/core-types.js +261 -115
  121. package/dist/core-types.js.map +1 -1
  122. package/dist/db/db-attr-schemas.d.ts +8 -0
  123. package/dist/db/db-attr-schemas.d.ts.map +1 -0
  124. package/dist/db/db-attr-schemas.js +26 -0
  125. package/dist/db/db-attr-schemas.js.map +1 -0
  126. package/dist/db/db-provider.d.ts +3 -0
  127. package/dist/db/db-provider.d.ts.map +1 -0
  128. package/dist/db/db-provider.js +28 -0
  129. package/dist/db/db-provider.js.map +1 -0
  130. package/dist/errors.d.ts +1 -1
  131. package/dist/errors.d.ts.map +1 -1
  132. package/dist/errors.js +78 -0
  133. package/dist/errors.js.map +1 -1
  134. package/dist/index.d.ts +17 -2
  135. package/dist/index.d.ts.map +1 -1
  136. package/dist/index.js +26 -1
  137. package/dist/index.js.map +1 -1
  138. package/dist/library/embedded-library.generated.d.ts +2 -0
  139. package/dist/library/embedded-library.generated.d.ts.map +1 -0
  140. package/dist/library/embedded-library.generated.js +11 -0
  141. package/dist/library/embedded-library.generated.js.map +1 -0
  142. package/dist/library/library-sources.d.ts +12 -0
  143. package/dist/library/library-sources.d.ts.map +1 -0
  144. package/dist/library/library-sources.js +88 -0
  145. package/dist/library/library-sources.js.map +1 -0
  146. package/dist/loader/meta-data-loader.d.ts +10 -2
  147. package/dist/loader/meta-data-loader.d.ts.map +1 -1
  148. package/dist/loader/meta-data-loader.js +47 -6
  149. package/dist/loader/meta-data-loader.js.map +1 -1
  150. package/dist/loader/shortcuts.d.ts +2 -5
  151. package/dist/loader/shortcuts.d.ts.map +1 -1
  152. package/dist/loader/shortcuts.js.map +1 -1
  153. package/dist/loader/validation-passes.d.ts +3 -0
  154. package/dist/loader/validation-passes.d.ts.map +1 -1
  155. package/dist/loader/validation-passes.js +513 -33
  156. package/dist/loader/validation-passes.js.map +1 -1
  157. package/dist/meta/find-reference.d.ts +22 -0
  158. package/dist/meta/find-reference.d.ts.map +1 -0
  159. package/dist/meta/find-reference.js +29 -0
  160. package/dist/meta/find-reference.js.map +1 -0
  161. package/dist/meta/meta-attr.d.ts +8 -0
  162. package/dist/meta/meta-attr.d.ts.map +1 -0
  163. package/dist/meta/meta-attr.js +17 -0
  164. package/dist/meta/meta-attr.js.map +1 -0
  165. package/dist/meta/meta-data.d.ts +107 -0
  166. package/dist/meta/meta-data.d.ts.map +1 -0
  167. package/dist/meta/meta-data.js +302 -0
  168. package/dist/meta/meta-data.js.map +1 -0
  169. package/dist/meta/meta-field.d.ts +48 -0
  170. package/dist/meta/meta-field.d.ts.map +1 -0
  171. package/dist/meta/meta-field.js +94 -0
  172. package/dist/meta/meta-field.js.map +1 -0
  173. package/dist/meta/meta-identity.d.ts +71 -0
  174. package/dist/meta/meta-identity.d.ts.map +1 -0
  175. package/dist/meta/meta-identity.js +129 -0
  176. package/dist/meta/meta-identity.js.map +1 -0
  177. package/dist/meta/meta-layout.d.ts +23 -0
  178. package/dist/meta/meta-layout.d.ts.map +1 -0
  179. package/dist/meta/meta-layout.js +45 -0
  180. package/dist/meta/meta-layout.js.map +1 -0
  181. package/dist/meta/meta-object.d.ts +40 -0
  182. package/dist/meta/meta-object.d.ts.map +1 -0
  183. package/dist/meta/meta-object.js +81 -0
  184. package/dist/meta/meta-object.js.map +1 -0
  185. package/dist/meta/meta-origin.d.ts +32 -0
  186. package/dist/meta/meta-origin.d.ts.map +1 -0
  187. package/dist/meta/meta-origin.js +55 -0
  188. package/dist/meta/meta-origin.js.map +1 -0
  189. package/dist/meta/meta-relationship.d.ts +11 -0
  190. package/dist/meta/meta-relationship.d.ts.map +1 -0
  191. package/dist/meta/meta-relationship.js +27 -0
  192. package/dist/meta/meta-relationship.js.map +1 -0
  193. package/dist/meta/meta-root.d.ts +12 -0
  194. package/dist/meta/meta-root.d.ts.map +1 -0
  195. package/dist/meta/meta-root.js +24 -0
  196. package/dist/meta/meta-root.js.map +1 -0
  197. package/dist/meta/meta-source.d.ts +18 -0
  198. package/dist/meta/meta-source.d.ts.map +1 -0
  199. package/dist/meta/meta-source.js +31 -0
  200. package/dist/meta/meta-source.js.map +1 -0
  201. package/dist/meta/meta-validator.d.ts +29 -0
  202. package/dist/meta/meta-validator.d.ts.map +1 -0
  203. package/dist/meta/meta-validator.js +49 -0
  204. package/dist/meta/meta-validator.js.map +1 -0
  205. package/dist/meta/meta-view.d.ts +4 -0
  206. package/dist/meta/meta-view.d.ts.map +1 -0
  207. package/dist/meta/meta-view.js +8 -0
  208. package/dist/meta/meta-view.js.map +1 -0
  209. package/dist/metamodel-docs/index.d.ts +19 -0
  210. package/dist/metamodel-docs/index.d.ts.map +1 -0
  211. package/dist/metamodel-docs/index.js +37 -0
  212. package/dist/metamodel-docs/index.js.map +1 -0
  213. package/dist/metamodel-docs/provenance.d.ts +42 -0
  214. package/dist/metamodel-docs/provenance.d.ts.map +1 -0
  215. package/dist/metamodel-docs/provenance.js +148 -0
  216. package/dist/metamodel-docs/provenance.js.map +1 -0
  217. package/dist/metamodel-docs/provider-definitions.d.ts +8 -0
  218. package/dist/metamodel-docs/provider-definitions.d.ts.map +1 -0
  219. package/dist/metamodel-docs/provider-definitions.js +48 -0
  220. package/dist/metamodel-docs/provider-definitions.js.map +1 -0
  221. package/dist/metamodel-docs/render.d.ts +12 -0
  222. package/dist/metamodel-docs/render.d.ts.map +1 -0
  223. package/dist/metamodel-docs/render.js +252 -0
  224. package/dist/metamodel-docs/render.js.map +1 -0
  225. package/dist/naming-refs.d.ts +41 -0
  226. package/dist/naming-refs.d.ts.map +1 -0
  227. package/dist/naming-refs.js +144 -0
  228. package/dist/naming-refs.js.map +1 -0
  229. package/dist/naming.d.ts.map +1 -1
  230. package/dist/naming.js +10 -2
  231. package/dist/naming.js.map +1 -1
  232. package/dist/parser-core.d.ts.map +1 -1
  233. package/dist/parser-core.js +74 -8
  234. package/dist/parser-core.js.map +1 -1
  235. package/dist/persistence/db/db-attr-schemas.d.ts +8 -0
  236. package/dist/persistence/db/db-attr-schemas.d.ts.map +1 -0
  237. package/dist/persistence/db/db-attr-schemas.js +28 -0
  238. package/dist/persistence/db/db-attr-schemas.js.map +1 -0
  239. package/dist/persistence/db/db-definition.embedded.d.ts +3 -0
  240. package/dist/persistence/db/db-definition.embedded.d.ts.map +1 -0
  241. package/dist/persistence/db/db-definition.embedded.js +170 -0
  242. package/dist/persistence/db/db-definition.embedded.js.map +1 -0
  243. package/dist/persistence/db/db-provider.d.ts.map +1 -1
  244. package/dist/persistence/db/db-provider.js +13 -18
  245. package/dist/persistence/db/db-provider.js.map +1 -1
  246. package/dist/persistence/db/db-schema.d.ts +14 -0
  247. package/dist/persistence/db/db-schema.d.ts.map +1 -1
  248. package/dist/persistence/db/db-schema.js +27 -0
  249. package/dist/persistence/db/db-schema.js.map +1 -1
  250. package/dist/persistence/origin/origin-definition.embedded.d.ts +3 -0
  251. package/dist/persistence/origin/origin-definition.embedded.d.ts.map +1 -0
  252. package/dist/persistence/origin/origin-definition.embedded.js +88 -0
  253. package/dist/persistence/origin/origin-definition.embedded.js.map +1 -0
  254. package/dist/persistence/origin/origin-schema.d.ts.map +1 -1
  255. package/dist/persistence/origin/origin-schema.js +7 -3
  256. package/dist/persistence/origin/origin-schema.js.map +1 -1
  257. package/dist/persistence/source/source-definition.embedded.d.ts +3 -0
  258. package/dist/persistence/source/source-definition.embedded.d.ts.map +1 -0
  259. package/dist/persistence/source/source-definition.embedded.js +17 -0
  260. package/dist/persistence/source/source-definition.embedded.js.map +1 -0
  261. package/dist/persistence/source/validate-source-parameter-ref.d.ts.map +1 -1
  262. package/dist/persistence/source/validate-source-parameter-ref.js +7 -1
  263. package/dist/persistence/source/validate-source-parameter-ref.js.map +1 -1
  264. package/dist/persistence/source/validate-source-roles.d.ts.map +1 -1
  265. package/dist/persistence/source/validate-source-roles.js +16 -1
  266. package/dist/persistence/source/validate-source-roles.js.map +1 -1
  267. package/dist/presentation/layout/layout-definition.embedded.d.ts +3 -0
  268. package/dist/presentation/layout/layout-definition.embedded.d.ts.map +1 -0
  269. package/dist/presentation/layout/layout-definition.embedded.js +16 -0
  270. package/dist/presentation/layout/layout-definition.embedded.js.map +1 -0
  271. package/dist/presentation/layout/layout-schema.d.ts.map +1 -1
  272. package/dist/presentation/layout/layout-schema.js +3 -2
  273. package/dist/presentation/layout/layout-schema.js.map +1 -1
  274. package/dist/presentation/ui/ui-definition.embedded.d.ts +3 -0
  275. package/dist/presentation/ui/ui-definition.embedded.d.ts.map +1 -0
  276. package/dist/presentation/ui/ui-definition.embedded.js +114 -0
  277. package/dist/presentation/ui/ui-definition.embedded.js.map +1 -0
  278. package/dist/presentation/ui/ui-provider.d.ts +3 -0
  279. package/dist/presentation/ui/ui-provider.d.ts.map +1 -0
  280. package/dist/presentation/ui/ui-provider.js +21 -0
  281. package/dist/presentation/ui/ui-provider.js.map +1 -0
  282. package/dist/presentation/ui/ui-schema.d.ts +10 -0
  283. package/dist/presentation/ui/ui-schema.d.ts.map +1 -0
  284. package/dist/presentation/ui/ui-schema.js +41 -0
  285. package/dist/presentation/ui/ui-schema.js.map +1 -0
  286. package/dist/presentation/view/view-definition.embedded.d.ts +3 -0
  287. package/dist/presentation/view/view-definition.embedded.d.ts.map +1 -0
  288. package/dist/presentation/view/view-definition.embedded.js +76 -0
  289. package/dist/presentation/view/view-definition.embedded.js.map +1 -0
  290. package/dist/provider-data.d.ts +169 -0
  291. package/dist/provider-data.d.ts.map +1 -0
  292. package/dist/provider-data.js +269 -0
  293. package/dist/provider-data.js.map +1 -0
  294. package/dist/provider.d.ts +3 -1
  295. package/dist/provider.d.ts.map +1 -1
  296. package/dist/provider.js +15 -1
  297. package/dist/provider.js.map +1 -1
  298. package/dist/registry-coverage.d.ts +99 -0
  299. package/dist/registry-coverage.d.ts.map +1 -0
  300. package/dist/registry-coverage.js +294 -0
  301. package/dist/registry-coverage.js.map +1 -0
  302. package/dist/registry-manifest-exclusions.d.ts +62 -0
  303. package/dist/registry-manifest-exclusions.d.ts.map +1 -0
  304. package/dist/registry-manifest-exclusions.js +163 -0
  305. package/dist/registry-manifest-exclusions.js.map +1 -0
  306. package/dist/registry-manifest.d.ts +117 -0
  307. package/dist/registry-manifest.d.ts.map +1 -0
  308. package/dist/registry-manifest.js +242 -0
  309. package/dist/registry-manifest.js.map +1 -0
  310. package/dist/registry.d.ts +60 -2
  311. package/dist/registry.d.ts.map +1 -1
  312. package/dist/registry.js +37 -1
  313. package/dist/registry.js.map +1 -1
  314. package/dist/shared/structural.d.ts +7 -0
  315. package/dist/shared/structural.d.ts.map +1 -1
  316. package/dist/shared/structural.js +7 -0
  317. package/dist/shared/structural.js.map +1 -1
  318. package/dist/subtype-rules.d.ts.map +1 -1
  319. package/dist/subtype-rules.js +97 -13
  320. package/dist/subtype-rules.js.map +1 -1
  321. package/dist/super-resolve.d.ts +49 -2
  322. package/dist/super-resolve.d.ts.map +1 -1
  323. package/dist/super-resolve.js +128 -43
  324. package/dist/super-resolve.js.map +1 -1
  325. package/dist/template/meta-template.d.ts +3 -2
  326. package/dist/template/meta-template.d.ts.map +1 -1
  327. package/dist/template/meta-template.js +3 -2
  328. package/dist/template/meta-template.js.map +1 -1
  329. package/dist/template/prompt-definition.embedded.d.ts +3 -0
  330. package/dist/template/prompt-definition.embedded.d.ts.map +1 -0
  331. package/dist/template/prompt-definition.embedded.js +368 -0
  332. package/dist/template/prompt-definition.embedded.js.map +1 -0
  333. package/dist/template/prompt-provider.d.ts +3 -0
  334. package/dist/template/prompt-provider.d.ts.map +1 -0
  335. package/dist/template/prompt-provider.js +25 -0
  336. package/dist/template/prompt-provider.js.map +1 -0
  337. package/dist/template/prompt-schema.d.ts +20 -0
  338. package/dist/template/prompt-schema.d.ts.map +1 -0
  339. package/dist/template/prompt-schema.js +70 -0
  340. package/dist/template/prompt-schema.js.map +1 -0
  341. package/dist/template/template-constants.d.ts +2 -0
  342. package/dist/template/template-constants.d.ts.map +1 -1
  343. package/dist/template/template-constants.js +7 -0
  344. package/dist/template/template-constants.js.map +1 -1
  345. package/dist/template/template-definition.embedded.d.ts +3 -0
  346. package/dist/template/template-definition.embedded.d.ts.map +1 -0
  347. package/dist/template/template-definition.embedded.js +30 -0
  348. package/dist/template/template-definition.embedded.js.map +1 -0
  349. package/dist/template/template-schema.d.ts.map +1 -1
  350. package/dist/template/template-schema.js +12 -4
  351. package/dist/template/template-schema.js.map +1 -1
  352. package/package.json +33 -22
  353. package/src/attr-schema-validate.ts +96 -4
  354. package/src/constraint-merge.ts +0 -0
  355. package/src/constraint-validate.ts +363 -0
  356. package/src/core/attr/attr-constants.ts +15 -3
  357. package/src/core/attr/attr-definition.embedded.ts +67 -0
  358. package/src/core/documentation/doc-constants.ts +3 -1
  359. package/src/core/documentation/doc-provider.ts +6 -2
  360. package/src/core/documentation/documentation-definition.embedded.ts +86 -0
  361. package/src/core/field/field-constants.ts +8 -7
  362. package/src/core/field/field-definition.embedded.ts +243 -0
  363. package/src/core/field/meta-field.ts +6 -7
  364. package/src/core/identity/identity-definition.embedded.ts +98 -0
  365. package/src/core/identity/validate-identity-passthrough.ts +194 -0
  366. package/src/core/object/object-constants.ts +3 -0
  367. package/src/core/object/object-definition.embedded.ts +117 -0
  368. package/src/core/object/validate-discriminator.ts +0 -4
  369. package/src/core/query/query-constants.ts +5 -3
  370. package/src/core/relationship/derive-m2m-fields.ts +145 -0
  371. package/src/core/relationship/meta-relationship.ts +15 -9
  372. package/src/core/relationship/relationship-constants.ts +6 -2
  373. package/src/core/relationship/relationship-definition.embedded.ts +317 -0
  374. package/src/core/validator/validator-definition.embedded.ts +141 -0
  375. package/src/core/yaml-desugar.ts +96 -7
  376. package/src/core-types.ts +289 -150
  377. package/src/errors.ts +78 -0
  378. package/src/index.ts +47 -2
  379. package/src/library/embedded-library.generated.ts +10 -0
  380. package/src/library/library-sources.ts +97 -0
  381. package/src/loader/meta-data-loader.ts +66 -7
  382. package/src/loader/shortcuts.ts +2 -2
  383. package/src/loader/validation-passes.ts +679 -33
  384. package/src/metamodel-docs/index.ts +41 -0
  385. package/src/metamodel-docs/provenance.ts +187 -0
  386. package/src/metamodel-docs/provider-definitions.ts +50 -0
  387. package/src/metamodel-docs/render.ts +309 -0
  388. package/src/naming-refs.ts +162 -0
  389. package/src/naming.ts +10 -2
  390. package/src/parser-core.ts +86 -8
  391. package/src/persistence/db/db-definition.embedded.ts +177 -0
  392. package/src/persistence/db/db-provider.ts +13 -18
  393. package/src/persistence/origin/origin-definition.embedded.ts +95 -0
  394. package/src/persistence/source/source-definition.embedded.ts +24 -0
  395. package/src/persistence/source/validate-source-parameter-ref.ts +7 -1
  396. package/src/persistence/source/validate-source-roles.ts +22 -1
  397. package/src/presentation/layout/layout-definition.embedded.ts +23 -0
  398. package/src/presentation/ui/ui-definition.embedded.ts +121 -0
  399. package/src/presentation/ui/ui-provider.ts +25 -0
  400. package/src/presentation/view/view-definition.embedded.ts +83 -0
  401. package/src/provider-data.ts +446 -0
  402. package/src/provider.ts +18 -0
  403. package/src/registry-coverage.ts +430 -0
  404. package/src/registry-manifest-exclusions.ts +176 -0
  405. package/src/registry-manifest.ts +334 -0
  406. package/src/registry.ts +90 -3
  407. package/src/shared/structural.ts +8 -0
  408. package/src/subtype-rules.ts +135 -18
  409. package/src/super-resolve.ts +153 -43
  410. package/src/template/meta-template.ts +3 -2
  411. package/src/template/prompt-definition.embedded.ts +375 -0
  412. package/src/template/prompt-provider.ts +29 -0
  413. package/src/template/template-constants.ts +8 -0
  414. package/src/template/template-definition.embedded.ts +37 -0
  415. package/src/core/documentation/doc-schema.ts +0 -64
  416. package/src/core/field/field-schema.ts +0 -228
  417. package/src/core/identity/identity-schema.ts +0 -80
  418. package/src/core/object/object-schema.ts +0 -35
  419. package/src/core/relationship/relationship-schema.ts +0 -67
  420. package/src/core/validator/validator-schema.ts +0 -50
  421. package/src/persistence/db/db-schema.ts +0 -50
  422. package/src/persistence/origin/origin-schema.ts +0 -80
  423. package/src/persistence/source/source-schema.ts +0 -129
  424. package/src/presentation/layout/layout-schema.ts +0 -62
  425. package/src/presentation/view/view-schema.ts +0 -21
  426. package/src/template/template-schema.ts +0 -211
@@ -0,0 +1,99 @@
1
+ /** One attr in the registry manifest. */
2
+ export interface ManifestAttr {
3
+ name: string;
4
+ valueType: string | null;
5
+ required: boolean;
6
+ }
7
+ /** One registered (type, subType) with its declared attrs. */
8
+ export interface ManifestType {
9
+ type: string;
10
+ subType: string;
11
+ attrs: ManifestAttr[];
12
+ }
13
+ /** The canonical registry manifest (expected-registry.json). */
14
+ export interface RegistryManifest {
15
+ types: ManifestType[];
16
+ commonAttrs: ManifestAttr[];
17
+ defaultSubTypes: Record<string, string>;
18
+ }
19
+ /** Per-subtype attr coverage: which declared attrs no fixture sets. */
20
+ export interface UntestedAttrs {
21
+ /** The `"<type>.<subType>"` key. */
22
+ key: string;
23
+ /** Sorted attr names declared on this subtype that NO fixture exercises. */
24
+ untestedAttrs: string[];
25
+ }
26
+ /** The full coverage report — all collections sorted for determinism. */
27
+ export interface CoverageReport {
28
+ /** Total registered `(type, subType)` keys. */
29
+ registeredSubTypeCount: number;
30
+ /** Registered keys at least one fixture exercises. */
31
+ exercisedSubTypeCount: number;
32
+ /** Sorted registered keys NO fixture exercises (the valuable backlog). */
33
+ untestedSubTypes: string[];
34
+ /**
35
+ * Per EXERCISED subtype, the declared attrs no fixture sets. Only includes
36
+ * subtypes that ARE exercised (an untested subtype's attrs are all untested
37
+ * by definition — listing them would be noise). Sorted by key; only entries
38
+ * with a non-empty `untestedAttrs` list are included.
39
+ */
40
+ untestedAttrsByExercisedSubType: UntestedAttrs[];
41
+ }
42
+ /** The snapshot written to disk — a stable, diffable subset of the report. */
43
+ export interface CoverageSnapshot {
44
+ registeredSubTypeCount: number;
45
+ exercisedSubTypeCount: number;
46
+ untestedSubTypes: string[];
47
+ untestedAttrsByExercisedSubType: UntestedAttrs[];
48
+ }
49
+ /** What a single fixture corpus exercises. */
50
+ interface Usage {
51
+ /** Set of `"<type>.<subType>"` keys seen in any fixture node. */
52
+ subTypes: Set<string>;
53
+ /** key → set of attr names (sans `@` prefix) set on a node of that subtype. */
54
+ attrsByKey: Map<string, Set<string>>;
55
+ }
56
+ /** Scan a set of corpus roots, unioning vocabulary usage across all of them. */
57
+ export declare function scanFixtureUsage(roots: readonly string[]): Usage;
58
+ /**
59
+ * Compute the untested-vocabulary coverage report.
60
+ *
61
+ * @param manifest the parsed registry manifest (the registered vocabulary)
62
+ * @param roots fixture-corpus directory roots to scan for usage
63
+ */
64
+ export declare function computeCoverage(manifest: RegistryManifest, roots: readonly string[]): CoverageReport;
65
+ /** Project a report into the stable, diffable snapshot shape. */
66
+ export declare function toSnapshot(report: CoverageReport): CoverageSnapshot;
67
+ /** Serialize a snapshot as byte-stable JSON (2-space indent, trailing newline). */
68
+ export declare function emitSnapshot(snapshot: CoverageSnapshot): string;
69
+ /** One named coverage regression — an item that became unexercised. */
70
+ export interface CoverageRegression {
71
+ /** "subtype" — a registered (type, subType) no longer exercised; or "attr". */
72
+ kind: "subtype" | "attr";
73
+ /** The `"<type>.<subType>"` key that regressed. */
74
+ key: string;
75
+ /** For an attr regression: the attr name that became untested (else undefined). */
76
+ attr?: string;
77
+ }
78
+ /** The ratchet verdict: ok=true when live coverage is no worse than baseline. */
79
+ export interface RatchetResult {
80
+ ok: boolean;
81
+ /** Every named regression (empty when ok). Sorted for determinism. */
82
+ regressions: CoverageRegression[];
83
+ }
84
+ /**
85
+ * Compare a live coverage snapshot against a committed baseline and report any
86
+ * REGRESSION (an item the baseline had exercised that the live run no longer
87
+ * exercises). Improvements (items that left an untested set) are NOT regressions.
88
+ *
89
+ * - subtype regression: a key in `live.untestedSubTypes` not in baseline's set.
90
+ * - attr regression: an attr in a live subtype's `untestedAttrs` not in the
91
+ * baseline's untested-attrs set for that SAME key. (A subtype that newly became
92
+ * untested is reported once as a subtype regression — its attrs are not double-
93
+ * reported, since an untested subtype has no per-attr entry by construction.)
94
+ */
95
+ export declare function checkRatchet(baseline: CoverageSnapshot, live: CoverageSnapshot): RatchetResult;
96
+ /** Render the regressions into an actionable, human-readable failure message. */
97
+ export declare function formatRatchetFailure(result: RatchetResult): string;
98
+ export {};
99
+ //# sourceMappingURL=registry-coverage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry-coverage.d.ts","sourceRoot":"","sources":["../src/registry-coverage.ts"],"names":[],"mappings":"AA8BA,yCAAyC;AACzC,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,8DAA8D;AAC9D,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,YAAY,EAAE,CAAC;CACvB;AAED,gEAAgE;AAChE,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,WAAW,EAAE,YAAY,EAAE,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzC;AAMD,uEAAuE;AACvE,MAAM,WAAW,aAAa;IAC5B,oCAAoC;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,4EAA4E;IAC5E,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,yEAAyE;AACzE,MAAM,WAAW,cAAc;IAC7B,+CAA+C;IAC/C,sBAAsB,EAAE,MAAM,CAAC;IAC/B,sDAAsD;IACtD,qBAAqB,EAAE,MAAM,CAAC;IAC9B,0EAA0E;IAC1E,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B;;;;;OAKG;IACH,+BAA+B,EAAE,aAAa,EAAE,CAAC;CAClD;AAED,8EAA8E;AAC9E,MAAM,WAAW,gBAAgB;IAC/B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,+BAA+B,EAAE,aAAa,EAAE,CAAC;CAClD;AAMD,8CAA8C;AAC9C,UAAU,KAAK;IACb,iEAAiE;IACjE,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACtB,+EAA+E;IAC/E,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;CACtC;AA0HD,gFAAgF;AAChF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,KAAK,CAchE;AAUD;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,gBAAgB,EAC1B,KAAK,EAAE,SAAS,MAAM,EAAE,GACvB,cAAc,CAoChB;AAED,iEAAiE;AACjE,wBAAgB,UAAU,CAAC,MAAM,EAAE,cAAc,GAAG,gBAAgB,CAOnE;AAED,mFAAmF;AACnF,wBAAgB,YAAY,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM,CAE/D;AAmBD,uEAAuE;AACvE,MAAM,WAAW,kBAAkB;IACjC,+EAA+E;IAC/E,IAAI,EAAE,SAAS,GAAG,MAAM,CAAC;IACzB,mDAAmD;IACnD,GAAG,EAAE,MAAM,CAAC;IACZ,mFAAmF;IACnF,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,iFAAiF;AACjF,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,OAAO,CAAC;IACZ,sEAAsE;IACtE,WAAW,EAAE,kBAAkB,EAAE,CAAC;CACnC;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,gBAAgB,EAC1B,IAAI,EAAE,gBAAgB,GACrB,aAAa,CA6Cf;AAED,iFAAiF;AACjF,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAsBlE"}
@@ -0,0 +1,294 @@
1
+ // SP-G Unit 5 — untested-vocabulary coverage report.
2
+ //
3
+ // Cross-references the REGISTERED metamodel vocabulary (the canonical
4
+ // registry-conformance manifest — "what SHOULD be exercised") against the
5
+ // conformance FIXTURE corpora ("what IS exercised"), and surfaces every
6
+ // registered (type, subType) — and each attr — that NO fixture exercises.
7
+ //
8
+ // This closes the meta-gap that let SP-C's vocabulary drift hide for weeks: a
9
+ // drifted/missing vocabulary member was only caught incidentally, if some
10
+ // fixture happened to use it. Making the *untested* set VISIBLE is the
11
+ // deliverable. The registry-conformance gate (Unit 1) proves the vocabulary is
12
+ // IDENTICAL across ports; this report proves the vocabulary is EXERCISED at all.
13
+ //
14
+ // Pure + testable: takes the parsed manifest + a set of fixture roots, walks the
15
+ // canonical-JSON node graph (nodes keyed `"<type>.<subType>"`, `@attr` inline
16
+ // keys, reserved bare keys, nested `children`), and returns the registered /
17
+ // exercised / untested sets — all deterministic + sorted.
18
+ import { readdirSync, readFileSync, statSync } from "node:fs";
19
+ import { join } from "node:path";
20
+ import { ATTR_PREFIX, RESERVED_KEYS, TYPE_SUBTYPE_SEPARATOR, } from "./shared/structural.js";
21
+ function newUsage() {
22
+ return { subTypes: new Set(), attrsByKey: new Map() };
23
+ }
24
+ /** Recursively collect every *.json file path under a directory root. */
25
+ function collectJsonFiles(root) {
26
+ const out = [];
27
+ const walk = (dir) => {
28
+ let entries;
29
+ try {
30
+ entries = readdirSync(dir);
31
+ }
32
+ catch {
33
+ return; // missing/unreadable dir — skip (a corpus root may not exist)
34
+ }
35
+ for (const entry of entries) {
36
+ const full = join(dir, entry);
37
+ let st;
38
+ try {
39
+ st = statSync(full);
40
+ }
41
+ catch {
42
+ continue;
43
+ }
44
+ if (st.isDirectory()) {
45
+ walk(full);
46
+ }
47
+ else if (st.isFile() && entry.endsWith(".json")) {
48
+ out.push(full);
49
+ }
50
+ }
51
+ };
52
+ walk(root);
53
+ return out;
54
+ }
55
+ /** True if a node-body key is a `"<type>.<subType>"` wrapper key. */
56
+ function isTypeSubTypeKey(key) {
57
+ // A wrapper key fuses type + subType with the separator. Reserved structural
58
+ // keys, `@`-attrs, and the JSON `$schema` key are NOT wrapper keys.
59
+ if (key.startsWith(ATTR_PREFIX))
60
+ return false;
61
+ if (RESERVED_KEYS.has(key))
62
+ return false;
63
+ if (!key.includes(TYPE_SUBTYPE_SEPARATOR))
64
+ return false;
65
+ if (key.startsWith("$"))
66
+ return false;
67
+ // Must be exactly `type.subType` (one separator, two non-empty halves).
68
+ const idx = key.indexOf(TYPE_SUBTYPE_SEPARATOR);
69
+ const type = key.slice(0, idx);
70
+ const subType = key.slice(idx + TYPE_SUBTYPE_SEPARATOR.length);
71
+ return type.length > 0 && subType.length > 0 && !subType.includes(TYPE_SUBTYPE_SEPARATOR);
72
+ }
73
+ /**
74
+ * Record one node-body: its inline `@attrs` (against the owning wrapper key) and
75
+ * recurse into its children. `body` is the object under a wrapper key.
76
+ */
77
+ function visitBody(body, ownerKey, usage) {
78
+ if (body === null || typeof body !== "object" || Array.isArray(body))
79
+ return;
80
+ const obj = body;
81
+ for (const [k, v] of Object.entries(obj)) {
82
+ if (k.startsWith(ATTR_PREFIX)) {
83
+ // An inline attr on this node. Strip the prefix → the logical attr name.
84
+ const attrName = k.slice(ATTR_PREFIX.length);
85
+ let set = usage.attrsByKey.get(ownerKey);
86
+ if (!set) {
87
+ set = new Set();
88
+ usage.attrsByKey.set(ownerKey, set);
89
+ }
90
+ set.add(attrName);
91
+ }
92
+ else if (k === "children") {
93
+ visitNodeList(v, usage);
94
+ }
95
+ // Reserved bare keys (name/package/extends/value/...) are not attrs — skip.
96
+ // (`value` may hold nested arbitrary data, not metamodel nodes — skip it.)
97
+ }
98
+ }
99
+ /** Visit an array of wrapper-keyed nodes (the `children` list, or a root list). */
100
+ function visitNodeList(list, usage) {
101
+ if (!Array.isArray(list))
102
+ return;
103
+ for (const item of list) {
104
+ visitNode(item, usage);
105
+ }
106
+ }
107
+ /**
108
+ * Visit one wrapper-keyed node object: `{ "<type>.<subType>": { ...body } }`.
109
+ * A single object may carry multiple wrapper keys; handle each.
110
+ */
111
+ function visitNode(node, usage) {
112
+ if (node === null || typeof node !== "object" || Array.isArray(node))
113
+ return;
114
+ const obj = node;
115
+ for (const [key, body] of Object.entries(obj)) {
116
+ if (isTypeSubTypeKey(key)) {
117
+ usage.subTypes.add(key);
118
+ visitBody(body, key, usage);
119
+ }
120
+ else if (key === "children") {
121
+ // Some corpora nest a bare `children` list at a level without a wrapper.
122
+ visitNodeList(body, usage);
123
+ }
124
+ }
125
+ }
126
+ /**
127
+ * Parse one fixture JSON document and fold its vocabulary usage into `usage`.
128
+ * The document root is the metadata.root wrapper (or, defensively, an array or
129
+ * a bare node). Robust to non-metadata JSON (e.g. CAPABILITIES.json) — such a
130
+ * doc simply contributes no wrapper keys.
131
+ */
132
+ function scanDocument(text, usage) {
133
+ let parsed;
134
+ try {
135
+ parsed = JSON.parse(text);
136
+ }
137
+ catch {
138
+ return; // not JSON / malformed — contributes nothing
139
+ }
140
+ if (Array.isArray(parsed)) {
141
+ visitNodeList(parsed, usage);
142
+ }
143
+ else {
144
+ visitNode(parsed, usage);
145
+ }
146
+ }
147
+ /** Scan a set of corpus roots, unioning vocabulary usage across all of them. */
148
+ export function scanFixtureUsage(roots) {
149
+ const usage = newUsage();
150
+ for (const root of roots) {
151
+ for (const file of collectJsonFiles(root)) {
152
+ let text;
153
+ try {
154
+ text = readFileSync(file, "utf8");
155
+ }
156
+ catch {
157
+ continue;
158
+ }
159
+ scanDocument(text, usage);
160
+ }
161
+ }
162
+ return usage;
163
+ }
164
+ // ---------------------------------------------------------------------------
165
+ // Coverage computation
166
+ // ---------------------------------------------------------------------------
167
+ function compareStrings(a, b) {
168
+ return a < b ? -1 : a > b ? 1 : 0;
169
+ }
170
+ /**
171
+ * Compute the untested-vocabulary coverage report.
172
+ *
173
+ * @param manifest the parsed registry manifest (the registered vocabulary)
174
+ * @param roots fixture-corpus directory roots to scan for usage
175
+ */
176
+ export function computeCoverage(manifest, roots) {
177
+ const usage = scanFixtureUsage(roots);
178
+ const registeredKeys = manifest.types.map((t) => `${t.type}${TYPE_SUBTYPE_SEPARATOR}${t.subType}`);
179
+ const untestedSubTypes = registeredKeys
180
+ .filter((key) => !usage.subTypes.has(key))
181
+ .sort(compareStrings);
182
+ const exercisedSubTypeCount = registeredKeys.length - untestedSubTypes.length;
183
+ // Per EXERCISED subtype, which declared attrs no fixture sets.
184
+ const untestedAttrsByExercisedSubType = [];
185
+ for (const t of manifest.types) {
186
+ const key = `${t.type}${TYPE_SUBTYPE_SEPARATOR}${t.subType}`;
187
+ if (!usage.subTypes.has(key))
188
+ continue; // skip untested subtypes (all-untested by definition)
189
+ if (t.attrs.length === 0)
190
+ continue;
191
+ const seen = usage.attrsByKey.get(key) ?? new Set();
192
+ const untestedAttrs = t.attrs
193
+ .map((a) => a.name)
194
+ .filter((name) => !seen.has(name))
195
+ .sort(compareStrings);
196
+ if (untestedAttrs.length > 0) {
197
+ untestedAttrsByExercisedSubType.push({ key, untestedAttrs });
198
+ }
199
+ }
200
+ untestedAttrsByExercisedSubType.sort((a, b) => compareStrings(a.key, b.key));
201
+ return {
202
+ registeredSubTypeCount: registeredKeys.length,
203
+ exercisedSubTypeCount,
204
+ untestedSubTypes,
205
+ untestedAttrsByExercisedSubType,
206
+ };
207
+ }
208
+ /** Project a report into the stable, diffable snapshot shape. */
209
+ export function toSnapshot(report) {
210
+ return {
211
+ registeredSubTypeCount: report.registeredSubTypeCount,
212
+ exercisedSubTypeCount: report.exercisedSubTypeCount,
213
+ untestedSubTypes: report.untestedSubTypes,
214
+ untestedAttrsByExercisedSubType: report.untestedAttrsByExercisedSubType,
215
+ };
216
+ }
217
+ /** Serialize a snapshot as byte-stable JSON (2-space indent, trailing newline). */
218
+ export function emitSnapshot(snapshot) {
219
+ return `${JSON.stringify(snapshot, null, 2)}\n`;
220
+ }
221
+ function sortedUnique(items) {
222
+ return [...new Set(items)].sort(compareStrings);
223
+ }
224
+ /**
225
+ * Compare a live coverage snapshot against a committed baseline and report any
226
+ * REGRESSION (an item the baseline had exercised that the live run no longer
227
+ * exercises). Improvements (items that left an untested set) are NOT regressions.
228
+ *
229
+ * - subtype regression: a key in `live.untestedSubTypes` not in baseline's set.
230
+ * - attr regression: an attr in a live subtype's `untestedAttrs` not in the
231
+ * baseline's untested-attrs set for that SAME key. (A subtype that newly became
232
+ * untested is reported once as a subtype regression — its attrs are not double-
233
+ * reported, since an untested subtype has no per-attr entry by construction.)
234
+ */
235
+ export function checkRatchet(baseline, live) {
236
+ const baselineUntestedSubTypes = new Set(baseline.untestedSubTypes);
237
+ const liveUntestedSubTypes = sortedUnique(live.untestedSubTypes);
238
+ const regressions = [];
239
+ // Subtype regressions: a NEW untested subtype (was exercised in the baseline).
240
+ for (const key of liveUntestedSubTypes) {
241
+ if (!baselineUntestedSubTypes.has(key)) {
242
+ regressions.push({ kind: "subtype", key });
243
+ }
244
+ }
245
+ // Attr regressions: for each EXERCISED subtype (it carries a per-attr entry),
246
+ // any attr now untested that the baseline did not list as untested for that key.
247
+ const baselineAttrsByKey = new Map();
248
+ for (const entry of baseline.untestedAttrsByExercisedSubType) {
249
+ baselineAttrsByKey.set(entry.key, new Set(entry.untestedAttrs));
250
+ }
251
+ for (const entry of live.untestedAttrsByExercisedSubType) {
252
+ // If the whole subtype regressed, it's already reported above — don't also
253
+ // attribute its attrs (it has no per-attr baseline entry by construction).
254
+ if (!baselineUntestedSubTypes.has(entry.key) &&
255
+ liveUntestedSubTypes.includes(entry.key)) {
256
+ continue;
257
+ }
258
+ const baselineUntested = baselineAttrsByKey.get(entry.key) ?? new Set();
259
+ for (const attr of sortedUnique(entry.untestedAttrs)) {
260
+ if (!baselineUntested.has(attr)) {
261
+ regressions.push({ kind: "attr", key: entry.key, attr });
262
+ }
263
+ }
264
+ }
265
+ regressions.sort((a, b) => {
266
+ const byKind = compareStrings(a.kind, b.kind);
267
+ if (byKind !== 0)
268
+ return byKind;
269
+ const byKey = compareStrings(a.key, b.key);
270
+ if (byKey !== 0)
271
+ return byKey;
272
+ return compareStrings(a.attr ?? "", b.attr ?? "");
273
+ });
274
+ return { ok: regressions.length === 0, regressions };
275
+ }
276
+ /** Render the regressions into an actionable, human-readable failure message. */
277
+ export function formatRatchetFailure(result) {
278
+ const lines = [
279
+ "Registry coverage REGRESSED — a previously-exercised vocabulary member is no",
280
+ "longer exercised by any conformance fixture (monotonic-ratchet violation):",
281
+ "",
282
+ ];
283
+ for (const r of result.regressions) {
284
+ if (r.kind === "subtype") {
285
+ lines.push(` - subtype ${r.key} (no fixture exercises it anymore)`);
286
+ }
287
+ else {
288
+ lines.push(` - attr ${r.key} @${r.attr} (no fixture sets it anymore)`);
289
+ }
290
+ }
291
+ lines.push("", "Fix: add a conformance fixture that exercises the listed member(s). Only if", "the member was LEGITIMATELY removed from the vocabulary (a justified change)", "should you regenerate the baseline:", " cd server/typescript", " MO_UPDATE_COVERAGE_SNAPSHOT=1 bun test packages/metadata/test/registry-coverage.test.ts");
292
+ return lines.join("\n");
293
+ }
294
+ //# sourceMappingURL=registry-coverage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry-coverage.js","sourceRoot":"","sources":["../src/registry-coverage.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,EAAE;AACF,sEAAsE;AACtE,0EAA0E;AAC1E,wEAAwE;AACxE,0EAA0E;AAC1E,EAAE;AACF,8EAA8E;AAC9E,0EAA0E;AAC1E,uEAAuE;AACvE,+EAA+E;AAC/E,iFAAiF;AACjF,EAAE;AACF,iFAAiF;AACjF,8EAA8E;AAC9E,6EAA6E;AAC7E,0DAA0D;AAE1D,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC9D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EACL,WAAW,EACX,aAAa,EACb,sBAAsB,GACvB,MAAM,wBAAwB,CAAC;AA4EhC,SAAS,QAAQ;IACf,OAAO,EAAE,QAAQ,EAAE,IAAI,GAAG,EAAU,EAAE,UAAU,EAAE,IAAI,GAAG,EAAuB,EAAE,CAAC;AACrF,CAAC;AAED,yEAAyE;AACzE,SAAS,gBAAgB,CAAC,IAAY;IACpC,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,MAAM,IAAI,GAAG,CAAC,GAAW,EAAQ,EAAE;QACjC,IAAI,OAAiB,CAAC;QACtB,IAAI,CAAC;YACH,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,8DAA8D;QACxE,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC9B,IAAI,EAA+B,CAAC;YACpC,IAAI,CAAC;gBACH,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;YACtB,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;YACD,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;gBACrB,IAAI,CAAC,IAAI,CAAC,CAAC;YACb,CAAC;iBAAM,IAAI,EAAE,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBAClD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjB,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IACF,IAAI,CAAC,IAAI,CAAC,CAAC;IACX,OAAO,GAAG,CAAC;AACb,CAAC;AAED,qEAAqE;AACrE,SAAS,gBAAgB,CAAC,GAAW;IACnC,6EAA6E;IAC7E,oEAAoE;IACpE,IAAI,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO,KAAK,CAAC;IAC9C,IAAI,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACzC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,sBAAsB,CAAC;QAAE,OAAO,KAAK,CAAC;IACxD,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACtC,wEAAwE;IACxE,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC/B,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC/D,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC;AAC5F,CAAC;AAED;;;GAGG;AACH,SAAS,SAAS,CAAC,IAAa,EAAE,QAAgB,EAAE,KAAY;IAC9D,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO;IAC7E,MAAM,GAAG,GAAG,IAA+B,CAAC;IAE5C,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACzC,IAAI,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAC9B,yEAAyE;YACzE,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAC7C,IAAI,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACzC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;gBACxB,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YACtC,CAAC;YACD,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACpB,CAAC;aAAM,IAAI,CAAC,KAAK,UAAU,EAAE,CAAC;YAC5B,aAAa,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC1B,CAAC;QACD,4EAA4E;QAC5E,2EAA2E;IAC7E,CAAC;AACH,CAAC;AAED,mFAAmF;AACnF,SAAS,aAAa,CAAC,IAAa,EAAE,KAAY;IAChD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO;IACjC,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;QACxB,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACzB,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,SAAS,CAAC,IAAa,EAAE,KAAY;IAC5C,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO;IAC7E,MAAM,GAAG,GAAG,IAA+B,CAAC;IAC5C,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9C,IAAI,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACxB,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QAC9B,CAAC;aAAM,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;YAC9B,yEAAyE;YACzE,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAS,YAAY,CAAC,IAAY,EAAE,KAAY;IAC9C,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,6CAA6C;IACvD,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC/B,CAAC;SAAM,CAAC;QACN,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC3B,CAAC;AACH,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,gBAAgB,CAAC,KAAwB;IACvD,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,KAAK,MAAM,IAAI,IAAI,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1C,IAAI,IAAY,CAAC;YACjB,IAAI,CAAC;gBACH,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACpC,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;YACD,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,8EAA8E;AAC9E,uBAAuB;AACvB,8EAA8E;AAE9E,SAAS,cAAc,CAAC,CAAS,EAAE,CAAS;IAC1C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAC7B,QAA0B,EAC1B,KAAwB;IAExB,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAEtC,MAAM,cAAc,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CACvC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,sBAAsB,GAAG,CAAC,CAAC,OAAO,EAAE,CACxD,CAAC;IAEF,MAAM,gBAAgB,GAAG,cAAc;SACpC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;SACzC,IAAI,CAAC,cAAc,CAAC,CAAC;IAExB,MAAM,qBAAqB,GAAG,cAAc,CAAC,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC;IAE9E,+DAA+D;IAC/D,MAAM,+BAA+B,GAAoB,EAAE,CAAC;IAC5D,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,IAAI,GAAG,sBAAsB,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;QAC7D,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS,CAAC,sDAAsD;QAC9F,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QACnC,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,EAAU,CAAC;QAC5D,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK;aAC1B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;aAClB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;aACjC,IAAI,CAAC,cAAc,CAAC,CAAC;QACxB,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,+BAA+B,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IACD,+BAA+B,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAE7E,OAAO;QACL,sBAAsB,EAAE,cAAc,CAAC,MAAM;QAC7C,qBAAqB;QACrB,gBAAgB;QAChB,+BAA+B;KAChC,CAAC;AACJ,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,UAAU,CAAC,MAAsB;IAC/C,OAAO;QACL,sBAAsB,EAAE,MAAM,CAAC,sBAAsB;QACrD,qBAAqB,EAAE,MAAM,CAAC,qBAAqB;QACnD,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;QACzC,+BAA+B,EAAE,MAAM,CAAC,+BAA+B;KACxE,CAAC;AACJ,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,YAAY,CAAC,QAA0B;IACrD,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;AAClD,CAAC;AAoCD,SAAS,YAAY,CAAC,KAAwB;IAC5C,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAClD,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,YAAY,CAC1B,QAA0B,EAC1B,IAAsB;IAEtB,MAAM,wBAAwB,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IACpE,MAAM,oBAAoB,GAAG,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAEjE,MAAM,WAAW,GAAyB,EAAE,CAAC;IAE7C,+EAA+E;IAC/E,KAAK,MAAM,GAAG,IAAI,oBAAoB,EAAE,CAAC;QACvC,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACvC,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,8EAA8E;IAC9E,iFAAiF;IACjF,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC1D,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,+BAA+B,EAAE,CAAC;QAC7D,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;IAClE,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,+BAA+B,EAAE,CAAC;QACzD,2EAA2E;QAC3E,2EAA2E;QAC3E,IACE,CAAC,wBAAwB,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;YACxC,oBAAoB,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EACxC,CAAC;YACD,SAAS;QACX,CAAC;QACD,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,EAAU,CAAC;QAChF,KAAK,MAAM,IAAI,IAAI,YAAY,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC;YACrD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChC,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;IACH,CAAC;IAED,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACxB,MAAM,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,MAAM,KAAK,CAAC;YAAE,OAAO,MAAM,CAAC;QAChC,MAAM,KAAK,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,KAAK,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QAC9B,OAAO,cAAc,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,EAAE,EAAE,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC;AACvD,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,oBAAoB,CAAC,MAAqB;IACxD,MAAM,KAAK,GAAa;QACtB,8EAA8E;QAC9E,4EAA4E;QAC5E,EAAE;KACH,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;QACnC,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACzB,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,GAAG,qCAAqC,CAAC,CAAC;QACzE,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,gCAAgC,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;IACD,KAAK,CAAC,IAAI,CACR,EAAE,EACF,6EAA6E,EAC7E,8EAA8E,EAC9E,qCAAqC,EACrC,wBAAwB,EACxB,2FAA2F,CAC5F,CAAC;IACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,62 @@
1
+ /** The reason an attr/row is classified PORT_PRIVATE (carved out of the agreed vocabulary). */
2
+ export declare enum ExclusionReason {
3
+ /** Native type-binding / factory mechanism (incl. ADR-0001 `object`, ADR-0005 `objectAdapter`). */
4
+ NativeBinding = "native-binding",
5
+ /** Bare structural / OO-shape keyword (`isArray`/`isAbstract`/`extends`/`implements`/`isInterface`). */
6
+ StructuralKeyword = "structural-keyword",
7
+ /** A `commonAttr` (`description`) re-registered per-type — belongs in the commonAttrs block. */
8
+ CommonAttrDup = "common-attr-dup",
9
+ /** The `metadata.base` per-port inheritance anchor (deferred `inheritsFrom` facet). */
10
+ InheritanceAnchor = "inheritance-anchor",
11
+ /** TS-web-presentation-only facet (the generic `view.*` controls). */
12
+ PresentationOnly = "presentation-only",
13
+ /**
14
+ * FR-024 TS-reference-first rollout (RETIRED at the atomic flip): new
15
+ * vocabulary genuinely registered (and gated by TS tests) but carved out of
16
+ * the cross-port manifest until every port registered it; the carve-outs were
17
+ * then removed and the canonical updated in ONE commit (the same lifecycle
18
+ * the retired TsPilotVocab carve-outs followed for `@responseRef`/`@provided`).
19
+ * The `object.projection` row + the `origin.aggregate.via` required-override
20
+ * flipped when all five ports shipped the FR-024 loader-grammar slice. The
21
+ * reason is kept as the documented lifecycle slot for the NEXT
22
+ * reference-first rollout; it currently has no members.
23
+ */
24
+ Fr024Pending = "fr024-pending"
25
+ }
26
+ /**
27
+ * The per-type attr names carved OUT of the agreed vocabulary, each mapped to
28
+ * its PORT_PRIVATE reason category. This is the classification — an attr name
29
+ * here is OUT *because of its declared category*, not merely because it is
30
+ * listed. A per-type attr NOT in this map is LOGICAL (INCLUDED) by the
31
+ * ADR-0023 sealed-vocabulary contract.
32
+ */
33
+ export declare const EXCLUDED_PER_TYPE_ATTRS: ReadonlyMap<string, ExclusionReason>;
34
+ /**
35
+ * `(type, subType)` rows carved OUT of the agreed vocabulary, with reason.
36
+ * `metadata.base` is the per-port inheritance anchor (INHERITANCE_ANCHOR); the
37
+ * 11 generic `view.*` controls are TS-web-presentation-only (PRESENTATION_ONLY).
38
+ * Returns the reason, or `undefined` for an INCLUDED (logical) row.
39
+ */
40
+ export declare function classifyTypeSubType(type: string, subType: string): ExclusionReason | undefined;
41
+ /** True if a `(type, subType)` row is carved out of the manifest (any reason). */
42
+ export declare function isExcludedTypeSubType(type: string, subType: string): boolean;
43
+ /**
44
+ * FR-024-pending manifest REQUIREDNESS overrides (the attr-level analogue of
45
+ * the `Fr024Pending` row carve-out). Key is `"type.subType.attrName"`; value is
46
+ * the requiredness the cross-port canonical (`expected-registry.json`) still
47
+ * records. The TS registry already registers the FR-024 requiredness (and the
48
+ * TS loader enforces it), but the other four ports have not flipped yet — the
49
+ * manifest keeps emitting the pre-FR-024 agreed value so the shared canonical
50
+ * stays byte-identical until the Phase-E atomic all-ports flip, when this map
51
+ * empties and the canonical is updated in ONE commit.
52
+ *
53
+ * Members today: NONE — `origin.aggregate.via` flipped at the FR-024 atomic
54
+ * all-ports manifest flip (it is OPTIONAL everywhere under ADR-0029 decision 5:
55
+ * omitted `@via` is inferred when exactly one single-hop relationship leads
56
+ * from the base entity to the `@of` entity). The mechanism stays for the next
57
+ * reference-first rollout.
58
+ */
59
+ export declare const FR024_PENDING_REQUIRED_OVERRIDES: ReadonlyMap<string, boolean>;
60
+ /** Manifest requiredness for an attr — the FR-024-pending override when one exists. */
61
+ export declare function manifestRequiredOverride(type: string, subType: string, attrName: string): boolean | undefined;
62
+ //# sourceMappingURL=registry-manifest-exclusions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry-manifest-exclusions.d.ts","sourceRoot":"","sources":["../src/registry-manifest-exclusions.ts"],"names":[],"mappings":"AAyEA,+FAA+F;AAC/F,oBAAY,eAAe;IACzB,mGAAmG;IACnG,aAAa,mBAAmB;IAChC,wGAAwG;IACxG,iBAAiB,uBAAuB;IACxC,gGAAgG;IAChG,aAAa,oBAAoB;IACjC,uFAAuF;IACvF,iBAAiB,uBAAuB;IACxC,sEAAsE;IACtE,gBAAgB,sBAAsB;IACtC;;;;;;;;;;OAUG;IACH,YAAY,kBAAkB;CAC/B;AAWD;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,EAAE,WAAW,CAAC,MAAM,EAAE,eAAe,CASvE,CAAC;AAEH;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GACd,eAAe,GAAG,SAAS,CAQ7B;AAED,kFAAkF;AAClF,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAE5E;AAED;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,gCAAgC,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,CAAe,CAAC;AAE1F,uFAAuF;AACvF,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACf,OAAO,GAAG,SAAS,CAErB"}
@@ -0,0 +1,163 @@
1
+ // SP-G Registry Conformance — manifest emitter CLASSIFICATION (the in/out boundary).
2
+ //
3
+ // WHY THIS FILE IS A CLASSIFICATION, NOT A NAME-MATCH LIST (Wave 3b).
4
+ // ---------------------------------------------------------------------------
5
+ // The manifest's in/out boundary used to be decided by a bare exclusion
6
+ // name-list: an attr was OUT iff its name happened to be hand-added to the set,
7
+ // IN otherwise — a silent default-include. That is a tautology: it cannot tell a
8
+ // genuinely-logical attr from a port-private one; it just records the names
9
+ // someone remembered to list. The next physical/binding attr nobody adds to the
10
+ // list silently enters the cross-port logical contract.
11
+ //
12
+ // The principled axis. Every metamodel facet the emitter encounters is one of:
13
+ //
14
+ // • LOGICAL — part of the cross-port vocabulary contract. MUST be identical
15
+ // in all five ports (this is what the gate measures). INCLUDED.
16
+ // Note "logical" is NOT "non-physical": the physical-DB attrs
17
+ // `column`/`dbColumnType`/`db.indexed`/`precision`/`scale`/
18
+ // `maxLength`/`unique` ARE logical here — they are the agreed
19
+ // cross-port persistence vocabulary (every port emits the same
20
+ // DDL contract from them). The axis is cross-port-CONTRACT vs
21
+ // port-PRIVATE-mechanism, not abstract-vs-physical.
22
+ //
23
+ // • PORT_PRIVATE — a per-port mechanism, NOT cross-port vocabulary:
24
+ // - NATIVE_BINDING factories / native type classes / the ADR-0001
25
+ // `object` class-FQN binding + ADR-0005 `objectAdapter`
26
+ // value-access seam (OO-port runtime mechanisms).
27
+ // - STRUCTURAL_KEYWORD bare body keywords (`isArray`/`isAbstract`/
28
+ // `extends`/`implements`/`isInterface`) — the
29
+ // structural/OO-shape spine, peers of name/children,
30
+ // never per-type attributes.
31
+ // - COMMON_ATTR_DUP `description` re-registered per-type (it lives in the
32
+ // `commonAttrs` block, never as a per-type attr).
33
+ // - INHERITANCE_ANCHOR the `metadata.base` per-port abstract anchor (the
34
+ // deferred `inheritsFrom` facet; other ports register
35
+ // only the concrete `metadata.root`).
36
+ // - PRESENTATION_ONLY the 11 generic `view.*` controls (checkbox/date/…)
37
+ // — a TS-web presentation facet (TS web client + TS
38
+ // form codegen consume them; zero backend/codegen/
39
+ // render consumers in any port), like the TS-only `D1`
40
+ // dialect. Stay REGISTERED in TS; deregistered in
41
+ // C#/Python; EXCLUDED from the manifest everywhere.
42
+ //
43
+ // The boundary is now an EXPLICIT classification (not a silent default): the
44
+ // port-private set is enumerated WITH a reason category, and a TRIPWIRE
45
+ // (`assertExclusionsAreLive`) asserts every enumerated exclusion is genuinely
46
+ // present in the registry — so a stale/typo'd exclusion (an excluded name no
47
+ // provider registers) fails the emit instead of silently doing nothing.
48
+ //
49
+ // Inclusion-by-default is SOUND here precisely because of ADR-0023: the library
50
+ // seals its composed metamodel registry after the agreed-provider bootstrap, so
51
+ // every registered (type, subType, attr) is, by construction, deliberately-agreed
52
+ // metamodel vocabulary — there is no "accidental" registration to silently let
53
+ // in. The classification's job is therefore to carve the small, declared set of
54
+ // agreed-but-port-private facets OUT of that agreed vocabulary, with a reason and
55
+ // a liveness tripwire. See fixtures/registry-conformance/README.md.
56
+ //
57
+ // FR-033 NOTE — the manifest now emits per-type and per-attr `description`
58
+ // (required, non-empty), optional `rules`/`example`/`whenToUse`, AND the full
59
+ // structural constraint graph (`children` from childRules, with optional
60
+ // cardinality, and optional `parents`) as FIRST-CLASS PROPERTIES of each type/
61
+ // attr entry. The v1 boundary note that listed `childRules` / type-level
62
+ // `description` as EXCLUDED is SUPERSEDED for those facets. This does NOT change
63
+ // the COMMON_ATTR_DUP carve-out below: that entry removes a per-type ATTR whose
64
+ // NAME is "description" (the commonAttr re-registered as a per-type attr) from
65
+ // the `attrs` ARRAY — a different mechanism from the type/attr-level
66
+ // `description` PROPERTY now emitted as a sibling of `attrs`. The carve-out (and
67
+ // the test asserting no `attrs[]` entry is named "description") stays unchanged.
68
+ import { RESERVED_KEY_IS_ARRAY, RESERVED_KEY_EXTENDS } from "./shared/structural.js";
69
+ import { DOC_ATTR_DESCRIPTION } from "./core/documentation/doc-constants.js";
70
+ import { SUBTYPE_BASE, TYPE_METADATA, TYPE_VIEW } from "./shared/base-types.js";
71
+ import { VIEW_SUBTYPE_CURRENCY } from "./presentation/view/view-constants.js";
72
+ /** The reason an attr/row is classified PORT_PRIVATE (carved out of the agreed vocabulary). */
73
+ export var ExclusionReason;
74
+ (function (ExclusionReason) {
75
+ /** Native type-binding / factory mechanism (incl. ADR-0001 `object`, ADR-0005 `objectAdapter`). */
76
+ ExclusionReason["NativeBinding"] = "native-binding";
77
+ /** Bare structural / OO-shape keyword (`isArray`/`isAbstract`/`extends`/`implements`/`isInterface`). */
78
+ ExclusionReason["StructuralKeyword"] = "structural-keyword";
79
+ /** A `commonAttr` (`description`) re-registered per-type — belongs in the commonAttrs block. */
80
+ ExclusionReason["CommonAttrDup"] = "common-attr-dup";
81
+ /** The `metadata.base` per-port inheritance anchor (deferred `inheritsFrom` facet). */
82
+ ExclusionReason["InheritanceAnchor"] = "inheritance-anchor";
83
+ /** TS-web-presentation-only facet (the generic `view.*` controls). */
84
+ ExclusionReason["PresentationOnly"] = "presentation-only";
85
+ /**
86
+ * FR-024 TS-reference-first rollout (RETIRED at the atomic flip): new
87
+ * vocabulary genuinely registered (and gated by TS tests) but carved out of
88
+ * the cross-port manifest until every port registered it; the carve-outs were
89
+ * then removed and the canonical updated in ONE commit (the same lifecycle
90
+ * the retired TsPilotVocab carve-outs followed for `@responseRef`/`@provided`).
91
+ * The `object.projection` row + the `origin.aggregate.via` required-override
92
+ * flipped when all five ports shipped the FR-024 loader-grammar slice. The
93
+ * reason is kept as the documented lifecycle slot for the NEXT
94
+ * reference-first rollout; it currently has no members.
95
+ */
96
+ ExclusionReason["Fr024Pending"] = "fr024-pending";
97
+ })(ExclusionReason || (ExclusionReason = {}));
98
+ /** `isAbstract` as Java's per-type attr name (the contract's bare `abstract` structural keyword). */
99
+ const ATTR_NAME_IS_ABSTRACT = "isAbstract";
100
+ /** Java-OO structural-shape keywords as per-type attr names (the OO modeling spine). */
101
+ const ATTR_NAME_IMPLEMENTS = "implements";
102
+ const ATTR_NAME_IS_INTERFACE = "isInterface";
103
+ /** ADR-0001 class-FQN type binding + ADR-0005 hybrid value-access seam (per-port runtime mechanisms). */
104
+ const ATTR_NAME_OBJECT = "object";
105
+ const ATTR_NAME_OBJECT_ADAPTER = "objectAdapter";
106
+ /**
107
+ * The per-type attr names carved OUT of the agreed vocabulary, each mapped to
108
+ * its PORT_PRIVATE reason category. This is the classification — an attr name
109
+ * here is OUT *because of its declared category*, not merely because it is
110
+ * listed. A per-type attr NOT in this map is LOGICAL (INCLUDED) by the
111
+ * ADR-0023 sealed-vocabulary contract.
112
+ */
113
+ export const EXCLUDED_PER_TYPE_ATTRS = new Map([
114
+ [RESERVED_KEY_IS_ARRAY, ExclusionReason.StructuralKeyword],
115
+ [ATTR_NAME_IS_ABSTRACT, ExclusionReason.StructuralKeyword],
116
+ [RESERVED_KEY_EXTENDS, ExclusionReason.StructuralKeyword],
117
+ [ATTR_NAME_IMPLEMENTS, ExclusionReason.StructuralKeyword],
118
+ [ATTR_NAME_IS_INTERFACE, ExclusionReason.StructuralKeyword],
119
+ [ATTR_NAME_OBJECT, ExclusionReason.NativeBinding],
120
+ [ATTR_NAME_OBJECT_ADAPTER, ExclusionReason.NativeBinding],
121
+ [DOC_ATTR_DESCRIPTION, ExclusionReason.CommonAttrDup],
122
+ ]);
123
+ /**
124
+ * `(type, subType)` rows carved OUT of the agreed vocabulary, with reason.
125
+ * `metadata.base` is the per-port inheritance anchor (INHERITANCE_ANCHOR); the
126
+ * 11 generic `view.*` controls are TS-web-presentation-only (PRESENTATION_ONLY).
127
+ * Returns the reason, or `undefined` for an INCLUDED (logical) row.
128
+ */
129
+ export function classifyTypeSubType(type, subType) {
130
+ if (type === TYPE_METADATA && subType === SUBTYPE_BASE) {
131
+ return ExclusionReason.InheritanceAnchor; // C-5 — Java's internal inheritance anchor
132
+ }
133
+ if (type === TYPE_VIEW && subType !== SUBTYPE_BASE && subType !== VIEW_SUBTYPE_CURRENCY) {
134
+ return ExclusionReason.PresentationOnly; // B-2 — TS-web-presentation generic view controls
135
+ }
136
+ return undefined;
137
+ }
138
+ /** True if a `(type, subType)` row is carved out of the manifest (any reason). */
139
+ export function isExcludedTypeSubType(type, subType) {
140
+ return classifyTypeSubType(type, subType) !== undefined;
141
+ }
142
+ /**
143
+ * FR-024-pending manifest REQUIREDNESS overrides (the attr-level analogue of
144
+ * the `Fr024Pending` row carve-out). Key is `"type.subType.attrName"`; value is
145
+ * the requiredness the cross-port canonical (`expected-registry.json`) still
146
+ * records. The TS registry already registers the FR-024 requiredness (and the
147
+ * TS loader enforces it), but the other four ports have not flipped yet — the
148
+ * manifest keeps emitting the pre-FR-024 agreed value so the shared canonical
149
+ * stays byte-identical until the Phase-E atomic all-ports flip, when this map
150
+ * empties and the canonical is updated in ONE commit.
151
+ *
152
+ * Members today: NONE — `origin.aggregate.via` flipped at the FR-024 atomic
153
+ * all-ports manifest flip (it is OPTIONAL everywhere under ADR-0029 decision 5:
154
+ * omitted `@via` is inferred when exactly one single-hop relationship leads
155
+ * from the base entity to the `@of` entity). The mechanism stays for the next
156
+ * reference-first rollout.
157
+ */
158
+ export const FR024_PENDING_REQUIRED_OVERRIDES = new Map([]);
159
+ /** Manifest requiredness for an attr — the FR-024-pending override when one exists. */
160
+ export function manifestRequiredOverride(type, subType, attrName) {
161
+ return FR024_PENDING_REQUIRED_OVERRIDES.get(`${type}.${subType}.${attrName}`);
162
+ }
163
+ //# sourceMappingURL=registry-manifest-exclusions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry-manifest-exclusions.js","sourceRoot":"","sources":["../src/registry-manifest-exclusions.ts"],"names":[],"mappings":"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"}