@inventarch/compliance 0.0.0-stage → 1.0.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 (511) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +4 -0
  3. package/README.md +8 -2
  4. package/SPEC.md +128 -0
  5. package/dist/adoption.d.ts +18 -0
  6. package/dist/adoption.d.ts.map +1 -0
  7. package/dist/adoption.js +76 -0
  8. package/dist/adoption.js.map +1 -0
  9. package/dist/catalog.d.ts +112 -0
  10. package/dist/catalog.d.ts.map +1 -0
  11. package/dist/catalog.js +265 -0
  12. package/dist/catalog.js.map +1 -0
  13. package/dist/check-ids.d.ts +4 -0
  14. package/dist/check-ids.d.ts.map +1 -0
  15. package/dist/check-ids.js +22 -0
  16. package/dist/check-ids.js.map +1 -0
  17. package/dist/evidence.d.ts +145 -0
  18. package/dist/evidence.d.ts.map +1 -0
  19. package/dist/evidence.js +468 -0
  20. package/dist/evidence.js.map +1 -0
  21. package/dist/fixtures.d.ts +29 -0
  22. package/dist/fixtures.d.ts.map +1 -0
  23. package/dist/fixtures.js +107 -0
  24. package/dist/fixtures.js.map +1 -0
  25. package/dist/graph-checks.d.ts +27 -0
  26. package/dist/graph-checks.d.ts.map +1 -0
  27. package/dist/graph-checks.js +184 -0
  28. package/dist/graph-checks.js.map +1 -0
  29. package/dist/host-plugin.d.ts +23 -0
  30. package/dist/host-plugin.d.ts.map +1 -0
  31. package/dist/host-plugin.js +204 -0
  32. package/dist/host-plugin.js.map +1 -0
  33. package/dist/index.d.ts +31 -0
  34. package/dist/index.d.ts.map +1 -0
  35. package/dist/index.js +18 -0
  36. package/dist/index.js.map +1 -0
  37. package/dist/obligations.d.ts +157 -0
  38. package/dist/obligations.d.ts.map +1 -0
  39. package/dist/obligations.js +301 -0
  40. package/dist/obligations.js.map +1 -0
  41. package/dist/profiles.d.ts +27 -0
  42. package/dist/profiles.d.ts.map +1 -0
  43. package/dist/profiles.js +40 -0
  44. package/dist/profiles.js.map +1 -0
  45. package/dist/projections.d.ts +51 -0
  46. package/dist/projections.d.ts.map +1 -0
  47. package/dist/projections.js +124 -0
  48. package/dist/projections.js.map +1 -0
  49. package/dist/record-text.d.ts +26 -0
  50. package/dist/record-text.d.ts.map +1 -0
  51. package/dist/record-text.js +73 -0
  52. package/dist/record-text.js.map +1 -0
  53. package/dist/report.d.ts +25 -0
  54. package/dist/report.d.ts.map +1 -0
  55. package/dist/report.js +80 -0
  56. package/dist/report.js.map +1 -0
  57. package/dist/schema.d.ts +23 -0
  58. package/dist/schema.d.ts.map +1 -0
  59. package/dist/schema.js +229 -0
  60. package/dist/schema.js.map +1 -0
  61. package/dist/shape.d.ts +18 -0
  62. package/dist/shape.d.ts.map +1 -0
  63. package/dist/shape.js +106 -0
  64. package/dist/shape.js.map +1 -0
  65. package/dist/steward-profile.d.ts +39 -0
  66. package/dist/steward-profile.d.ts.map +1 -0
  67. package/dist/steward-profile.js +143 -0
  68. package/dist/steward-profile.js.map +1 -0
  69. package/dist/systems.d.ts +11 -0
  70. package/dist/systems.d.ts.map +1 -0
  71. package/dist/systems.js +86 -0
  72. package/dist/systems.js.map +1 -0
  73. package/dist/types.d.ts +23 -0
  74. package/dist/types.d.ts.map +1 -0
  75. package/dist/types.js +92 -0
  76. package/dist/types.js.map +1 -0
  77. package/dist/values.d.ts +8 -0
  78. package/dist/values.d.ts.map +1 -0
  79. package/dist/values.js +47 -0
  80. package/dist/values.js.map +1 -0
  81. package/dist/variants.d.ts +4 -0
  82. package/dist/variants.d.ts.map +1 -0
  83. package/dist/variants.js +82 -0
  84. package/dist/variants.js.map +1 -0
  85. package/dist/workspace-projection.d.ts +22 -0
  86. package/dist/workspace-projection.d.ts.map +1 -0
  87. package/dist/workspace-projection.js +68 -0
  88. package/dist/workspace-projection.js.map +1 -0
  89. package/fixtures/language/cases/fail/duplicate-given.diagnostics.json +10 -0
  90. package/fixtures/language/cases/fail/duplicate-given.ia +72 -0
  91. package/fixtures/language/cases/fail/given-scalar.diagnostics.json +6 -0
  92. package/fixtures/language/cases/fail/given-scalar.ia +71 -0
  93. package/fixtures/language/cases/fail/head-verdict.diagnostics.json +6 -0
  94. package/fixtures/language/cases/fail/head-verdict.ia +72 -0
  95. package/fixtures/language/cases/fail/missing-evaluator.diagnostics.json +6 -0
  96. package/fixtures/language/cases/fail/missing-evaluator.ia +70 -0
  97. package/fixtures/language/cases/fail/missing-expected.diagnostics.json +6 -0
  98. package/fixtures/language/cases/fail/missing-expected.ia +70 -0
  99. package/fixtures/language/cases/fail/missing-given.diagnostics.json +6 -0
  100. package/fixtures/language/cases/fail/missing-given.ia +70 -0
  101. package/fixtures/language/cases/fail/missing-kind.diagnostics.json +6 -0
  102. package/fixtures/language/cases/fail/missing-kind.ia +70 -0
  103. package/fixtures/language/cases/fail/missing-request.diagnostics.json +6 -0
  104. package/fixtures/language/cases/fail/missing-request.ia +70 -0
  105. package/fixtures/language/cases/fail/scenario-conditioned-field.diagnostics.json +6 -0
  106. package/fixtures/language/cases/fail/scenario-conditioned-field.ia +71 -0
  107. package/fixtures/language/cases/fail/scenario-verdict.diagnostics.json +6 -0
  108. package/fixtures/language/cases/fail/scenario-verdict.ia +72 -0
  109. package/fixtures/language/cases/fail/unbound.diagnostics.json +6 -0
  110. package/fixtures/language/cases/fail/unbound.ia +71 -0
  111. package/fixtures/language/cases/fail/unknown-kind.diagnostics.json +6 -0
  112. package/fixtures/language/cases/fail/unknown-kind.ia +71 -0
  113. package/fixtures/language/cases/fail/verdict-block.diagnostics.json +6 -0
  114. package/fixtures/language/cases/fail/verdict-block.ia +73 -0
  115. package/fixtures/language/cases/fail/wrong-fragment.diagnostics.json +6 -0
  116. package/fixtures/language/cases/fail/wrong-fragment.ia +71 -0
  117. package/fixtures/language/cases/pass/all-scenario-kinds.ia +107 -0
  118. package/fixtures/language/cases/pass/all-scenario-kinds.records.json +1558 -0
  119. package/fixtures/language/cells/fail/duplicate-phase-sections.diagnostics.json +10 -0
  120. package/fixtures/language/cells/fail/duplicate-phase-sections.ia +64 -0
  121. package/fixtures/language/cells/fail/duplicate-primary.diagnostics.json +10 -0
  122. package/fixtures/language/cells/fail/duplicate-primary.ia +63 -0
  123. package/fixtures/language/cells/fail/duplicate-primitive.diagnostics.json +10 -0
  124. package/fixtures/language/cells/fail/duplicate-primitive.ia +63 -0
  125. package/fixtures/language/cells/fail/legacy-primary-move.diagnostics.json +6 -0
  126. package/fixtures/language/cells/fail/legacy-primary-move.ia +61 -0
  127. package/fixtures/language/cells/fail/means-list.diagnostics.json +6 -0
  128. package/fixtures/language/cells/fail/means-list.ia +61 -0
  129. package/fixtures/language/cells/fail/means-reference.diagnostics.json +6 -0
  130. package/fixtures/language/cells/fail/means-reference.ia +61 -0
  131. package/fixtures/language/cells/fail/means-scalar.diagnostics.json +6 -0
  132. package/fixtures/language/cells/fail/means-scalar.ia +61 -0
  133. package/fixtures/language/cells/fail/means-unsupported-child.diagnostics.json +6 -0
  134. package/fixtures/language/cells/fail/means-unsupported-child.ia +62 -0
  135. package/fixtures/language/cells/fail/phase-unknown.diagnostics.json +6 -0
  136. package/fixtures/language/cells/fail/phase-unknown.ia +61 -0
  137. package/fixtures/language/cells/fail/primary-quoted.diagnostics.json +6 -0
  138. package/fixtures/language/cells/fail/primary-quoted.ia +61 -0
  139. package/fixtures/language/cells/fail/primary-requires-means.diagnostics.json +6 -0
  140. package/fixtures/language/cells/fail/primary-requires-means.ia +61 -0
  141. package/fixtures/language/cells/fail/primary-unknown.diagnostics.json +6 -0
  142. package/fixtures/language/cells/fail/primary-unknown.ia +61 -0
  143. package/fixtures/language/cells/fail/primitive-case.diagnostics.json +6 -0
  144. package/fixtures/language/cells/fail/primitive-case.ia +61 -0
  145. package/fixtures/language/cells/fail/primitive-unknown.diagnostics.json +6 -0
  146. package/fixtures/language/cells/fail/primitive-unknown.ia +61 -0
  147. package/fixtures/language/cells/fail/unsupported-item.diagnostics.json +6 -0
  148. package/fixtures/language/cells/fail/unsupported-item.ia +61 -0
  149. package/fixtures/language/cells/pass/full-opal-grid.ia +92 -0
  150. package/fixtures/language/cells/pass/full-opal-grid.records.json +1450 -0
  151. package/fixtures/language/compile/fail/blocked-keyword.diagnostics.json +1 -0
  152. package/fixtures/language/compile/fail/blocked-keyword.ia +22 -0
  153. package/fixtures/language/compile/fail/discriminator-unregistered.diagnostics.json +1 -0
  154. package/fixtures/language/compile/fail/discriminator-unregistered.ia +19 -0
  155. package/fixtures/language/compile/pass/minimal-floor.ia +22 -0
  156. package/fixtures/language/compile/pass/minimal-floor.records.json +293 -0
  157. package/fixtures/language/compile/pass/nested-and-items.ia +27 -0
  158. package/fixtures/language/compile/pass/nested-and-items.records.json +373 -0
  159. package/fixtures/language/conditions/fail/conflicting-name.diagnostics.json +6 -0
  160. package/fixtures/language/conditions/fail/conflicting-name.ia +60 -0
  161. package/fixtures/language/conditions/fail/dangling-and.diagnostics.json +6 -0
  162. package/fixtures/language/conditions/fail/dangling-and.ia +60 -0
  163. package/fixtures/language/conditions/fail/empty-child.diagnostics.json +6 -0
  164. package/fixtures/language/conditions/fail/empty-child.ia +61 -0
  165. package/fixtures/language/conditions/fail/misplaced-head.diagnostics.json +6 -0
  166. package/fixtures/language/conditions/fail/misplaced-head.ia +59 -0
  167. package/fixtures/language/conditions/fail/misplaced-meaning.diagnostics.json +6 -0
  168. package/fixtures/language/conditions/fail/misplaced-meaning.ia +60 -0
  169. package/fixtures/language/conditions/fail/misplaced-ordinary-deep.diagnostics.json +6 -0
  170. package/fixtures/language/conditions/fail/misplaced-ordinary-deep.ia +61 -0
  171. package/fixtures/language/conditions/fail/misplaced-phase.diagnostics.json +6 -0
  172. package/fixtures/language/conditions/fail/misplaced-phase.ia +61 -0
  173. package/fixtures/language/conditions/fail/misplaced-primary.diagnostics.json +6 -0
  174. package/fixtures/language/conditions/fail/misplaced-primary.ia +62 -0
  175. package/fixtures/language/conditions/fail/misplaced-severity.diagnostics.json +6 -0
  176. package/fixtures/language/conditions/fail/misplaced-severity.ia +60 -0
  177. package/fixtures/language/conditions/fail/misplaced-standalone.diagnostics.json +6 -0
  178. package/fixtures/language/conditions/fail/misplaced-standalone.ia +60 -0
  179. package/fixtures/language/conditions/fail/missing-is.diagnostics.json +6 -0
  180. package/fixtures/language/conditions/fail/missing-is.ia +60 -0
  181. package/fixtures/language/conditions/fail/mixed-carriers.diagnostics.json +6 -0
  182. package/fixtures/language/conditions/fail/mixed-carriers.ia +61 -0
  183. package/fixtures/language/conditions/fail/quoted-value.diagnostics.json +6 -0
  184. package/fixtures/language/conditions/fail/quoted-value.ia +60 -0
  185. package/fixtures/language/conditions/fail/repeated-child.diagnostics.json +6 -0
  186. package/fixtures/language/conditions/fail/repeated-child.ia +62 -0
  187. package/fixtures/language/conditions/fail/repeated-name.diagnostics.json +6 -0
  188. package/fixtures/language/conditions/fail/repeated-name.ia +60 -0
  189. package/fixtures/language/conditions/fail/schema-when-block.diagnostics.json +6 -0
  190. package/fixtures/language/conditions/fail/schema-when-block.ia +64 -0
  191. package/fixtures/language/conditions/fail/unknown-term.diagnostics.json +6 -0
  192. package/fixtures/language/conditions/fail/unknown-term.ia +60 -0
  193. package/fixtures/language/conditions/fail/unknown-value.diagnostics.json +6 -0
  194. package/fixtures/language/conditions/fail/unknown-value.ia +60 -0
  195. package/fixtures/language/conditions/pass/all-carriers-and-dimensions.ia +71 -0
  196. package/fixtures/language/conditions/pass/all-carriers-and-dimensions.records.json +1131 -0
  197. package/fixtures/language/contracts/fail/duplicate-requirement-records.diagnostics.json +10 -0
  198. package/fixtures/language/contracts/fail/duplicate-requirement-records.ia +67 -0
  199. package/fixtures/language/contracts/fail/duplicate-requirement-sections.diagnostics.json +10 -0
  200. package/fixtures/language/contracts/fail/duplicate-requirement-sections.ia +64 -0
  201. package/fixtures/language/contracts/fail/extra-word.diagnostics.json +6 -0
  202. package/fixtures/language/contracts/fail/extra-word.ia +62 -0
  203. package/fixtures/language/contracts/fail/id-case.diagnostics.json +6 -0
  204. package/fixtures/language/contracts/fail/id-case.ia +62 -0
  205. package/fixtures/language/contracts/fail/id-empty.diagnostics.json +6 -0
  206. package/fixtures/language/contracts/fail/id-empty.ia +62 -0
  207. package/fixtures/language/contracts/fail/retired-binds.diagnostics.json +6 -0
  208. package/fixtures/language/contracts/fail/retired-binds.ia +59 -0
  209. package/fixtures/language/contracts/fail/retired-schema.diagnostics.json +6 -0
  210. package/fixtures/language/contracts/fail/retired-schema.ia +62 -0
  211. package/fixtures/language/contracts/fail/text-reference.diagnostics.json +6 -0
  212. package/fixtures/language/contracts/fail/text-reference.ia +62 -0
  213. package/fixtures/language/contracts/fail/text-scalar.diagnostics.json +6 -0
  214. package/fixtures/language/contracts/fail/text-scalar.ia +62 -0
  215. package/fixtures/language/contracts/fail/unbound.diagnostics.json +6 -0
  216. package/fixtures/language/contracts/fail/unbound.ia +60 -0
  217. package/fixtures/language/contracts/fail/unsupported-child.diagnostics.json +6 -0
  218. package/fixtures/language/contracts/fail/unsupported-child.ia +63 -0
  219. package/fixtures/language/contracts/pass/all-requirement-kinds.ia +76 -0
  220. package/fixtures/language/contracts/pass/all-requirement-kinds.records.json +1101 -0
  221. package/fixtures/language/edges/fail/identity-fragment.diagnostics.json +6 -0
  222. package/fixtures/language/edges/fail/identity-fragment.ia +60 -0
  223. package/fixtures/language/edges/fail/identity-kind.diagnostics.json +6 -0
  224. package/fixtures/language/edges/fail/identity-kind.ia +60 -0
  225. package/fixtures/language/edges/fail/identity-short.diagnostics.json +6 -0
  226. package/fixtures/language/edges/fail/identity-short.ia +60 -0
  227. package/fixtures/language/edges/fail/missing-target.diagnostics.json +6 -0
  228. package/fixtures/language/edges/fail/missing-target.ia +60 -0
  229. package/fixtures/language/edges/fail/source-side-unconsented.diagnostics.json +6 -0
  230. package/fixtures/language/edges/fail/source-side-unconsented.ia +60 -0
  231. package/fixtures/language/edges/fail/target-absent.diagnostics.json +6 -0
  232. package/fixtures/language/edges/fail/target-absent.ia +60 -0
  233. package/fixtures/language/edges/fail/target-ambiguous.diagnostics.json +6 -0
  234. package/fixtures/language/edges/fail/target-ambiguous.ia +60 -0
  235. package/fixtures/language/edges/fail/target-ambiguous.pool.json +26 -0
  236. package/fixtures/language/edges/fail/target-bare.diagnostics.json +6 -0
  237. package/fixtures/language/edges/fail/target-bare.ia +60 -0
  238. package/fixtures/language/edges/fail/target-list.diagnostics.json +6 -0
  239. package/fixtures/language/edges/fail/target-list.ia +60 -0
  240. package/fixtures/language/edges/fail/target-quoted.diagnostics.json +6 -0
  241. package/fixtures/language/edges/fail/target-quoted.ia +60 -0
  242. package/fixtures/language/edges/fail/target-side-unconsented.diagnostics.json +6 -0
  243. package/fixtures/language/edges/fail/target-side-unconsented.ia +60 -0
  244. package/fixtures/language/edges/fail/target-trailing-word.diagnostics.json +6 -0
  245. package/fixtures/language/edges/fail/target-trailing-word.ia +60 -0
  246. package/fixtures/language/edges/fail/unknown-verb.diagnostics.json +6 -0
  247. package/fixtures/language/edges/fail/unknown-verb.ia +60 -0
  248. package/fixtures/language/edges/pass/all-verbs-and-addresses.ia +114 -0
  249. package/fixtures/language/edges/pass/all-verbs-and-addresses.records.json +2221 -0
  250. package/fixtures/language/format/fail/lost-comment.candidate.txt +5 -0
  251. package/fixtures/language/format/fail/lost-comment.diagnostics.json +3 -0
  252. package/fixtures/language/format/fail/lost-comment.ia +5 -0
  253. package/fixtures/language/format/pass/token-spacing.ast.json +100 -0
  254. package/fixtures/language/format/pass/token-spacing.formatted.txt +7 -0
  255. package/fixtures/language/format/pass/token-spacing.ia +7 -0
  256. package/fixtures/language/identity/fail/facet-undeclared.diagnostics.json +1 -0
  257. package/fixtures/language/identity/fail/facet-undeclared.ia +20 -0
  258. package/fixtures/language/identity/fail/identity-collision.diagnostics.json +1 -0
  259. package/fixtures/language/identity/fail/identity-collision.ia +20 -0
  260. package/fixtures/language/identity/pass/facets.ia +21 -0
  261. package/fixtures/language/identity/pass/facets.records.json +300 -0
  262. package/fixtures/language/indent/fail/odd-block-with-prose.diagnostics.json +1 -0
  263. package/fixtures/language/indent/fail/odd-block-with-prose.ia +6 -0
  264. package/fixtures/language/indent/fail/odd-block.diagnostics.json +1 -0
  265. package/fixtures/language/indent/fail/odd-block.ia +4 -0
  266. package/fixtures/language/indent/fail/odd.diagnostics.json +1 -0
  267. package/fixtures/language/indent/fail/odd.ia +3 -0
  268. package/fixtures/language/indent/fail/step-block.diagnostics.json +1 -0
  269. package/fixtures/language/indent/fail/step-block.ia +4 -0
  270. package/fixtures/language/indent/fail/step-in-block.diagnostics.json +1 -0
  271. package/fixtures/language/indent/fail/step-in-block.ia +6 -0
  272. package/fixtures/language/indent/fail/step-under-header.diagnostics.json +1 -0
  273. package/fixtures/language/indent/fail/step-under-header.ia +3 -0
  274. package/fixtures/language/indent/fail/tab-block.diagnostics.json +1 -0
  275. package/fixtures/language/indent/fail/tab-block.ia +5 -0
  276. package/fixtures/language/indent/fail/tab.diagnostics.json +1 -0
  277. package/fixtures/language/indent/fail/tab.ia +3 -0
  278. package/fixtures/language/indent/fail/under-item.diagnostics.json +1 -0
  279. package/fixtures/language/indent/fail/under-item.ia +5 -0
  280. package/fixtures/language/indent/pass/blocks.ast.json +127 -0
  281. package/fixtures/language/indent/pass/blocks.ia +9 -0
  282. package/fixtures/language/lists/fail/dash-without-value.diagnostics.json +1 -0
  283. package/fixtures/language/lists/fail/dash-without-value.ia +4 -0
  284. package/fixtures/language/lists/fail/empty-item.diagnostics.json +1 -0
  285. package/fixtures/language/lists/fail/empty-item.ia +4 -0
  286. package/fixtures/language/lists/fail/item-line-list.diagnostics.json +1 -0
  287. package/fixtures/language/lists/fail/item-line-list.ia +4 -0
  288. package/fixtures/language/lists/fail/item-line-prose.diagnostics.json +1 -0
  289. package/fixtures/language/lists/fail/item-line-prose.ia +4 -0
  290. package/fixtures/language/lists/fail/missing-separator.diagnostics.json +1 -0
  291. package/fixtures/language/lists/fail/missing-separator.ia +4 -0
  292. package/fixtures/language/lists/fail/nested-list.diagnostics.json +1 -0
  293. package/fixtures/language/lists/fail/nested-list.ia +4 -0
  294. package/fixtures/language/lists/fail/unterminated.diagnostics.json +1 -0
  295. package/fixtures/language/lists/fail/unterminated.ia +5 -0
  296. package/fixtures/language/lists/pass/multi-line.ast.json +117 -0
  297. package/fixtures/language/lists/pass/multi-line.ia +9 -0
  298. package/fixtures/language/pragma/fail/missing.diagnostics.json +1 -0
  299. package/fixtures/language/pragma/fail/missing.ia +1 -0
  300. package/fixtures/language/pragma/fail/unsupported.diagnostics.json +1 -0
  301. package/fixtures/language/pragma/fail/unsupported.ia +2 -0
  302. package/fixtures/language/pragma/pass/minimal.ast.json +20 -0
  303. package/fixtures/language/pragma/pass/minimal.ia +2 -0
  304. package/fixtures/language/prose/fail/trailing.diagnostics.json +1 -0
  305. package/fixtures/language/prose/fail/trailing.ia +4 -0
  306. package/fixtures/language/prose/fail/unterminated.diagnostics.json +1 -0
  307. package/fixtures/language/prose/fail/unterminated.ia +5 -0
  308. package/fixtures/language/prose/pass/paragraphs.ast.json +48 -0
  309. package/fixtures/language/prose/pass/paragraphs.ia +7 -0
  310. package/fixtures/language/records/fail/head-after-section.diagnostics.json +1 -0
  311. package/fixtures/language/records/fail/head-after-section.ia +5 -0
  312. package/fixtures/language/records/fail/header-discriminator-class.diagnostics.json +1 -0
  313. package/fixtures/language/records/fail/header-discriminator-class.ia +2 -0
  314. package/fixtures/language/records/fail/header-extra-token.diagnostics.json +1 -0
  315. package/fixtures/language/records/fail/header-extra-token.ia +2 -0
  316. package/fixtures/language/records/fail/header-missing-name.diagnostics.json +1 -0
  317. package/fixtures/language/records/fail/header-missing-name.ia +2 -0
  318. package/fixtures/language/records/fail/header-name-class.diagnostics.json +1 -0
  319. package/fixtures/language/records/fail/header-name-class.ia +2 -0
  320. package/fixtures/language/records/fail/indented-preamble.diagnostics.json +1 -0
  321. package/fixtures/language/records/fail/indented-preamble.ia +3 -0
  322. package/fixtures/language/records/fail/item-under-header.diagnostics.json +1 -0
  323. package/fixtures/language/records/fail/item-under-header.ia +3 -0
  324. package/fixtures/language/records/fail/nested-under-header.diagnostics.json +1 -0
  325. package/fixtures/language/records/fail/nested-under-header.ia +3 -0
  326. package/fixtures/language/records/fail/toplevel.diagnostics.json +1 -0
  327. package/fixtures/language/records/fail/toplevel.ia +3 -0
  328. package/fixtures/language/records/pass/full.ast.json +31 -0
  329. package/fixtures/language/records/pass/full.ia +11 -0
  330. package/fixtures/language/refs/fail/discriminator-class.diagnostics.json +1 -0
  331. package/fixtures/language/refs/fail/discriminator-class.ia +4 -0
  332. package/fixtures/language/refs/fail/name-class.diagnostics.json +1 -0
  333. package/fixtures/language/refs/fail/name-class.ia +4 -0
  334. package/fixtures/language/refs/pass/cell-fragment.ast.json +50 -0
  335. package/fixtures/language/refs/pass/cell-fragment.ia +4 -0
  336. package/fixtures/language/refs/pass/fragments.ast.json +104 -0
  337. package/fixtures/language/refs/pass/fragments.ia +6 -0
  338. package/fixtures/language/registry/fail/category-missing.diagnostics.json +1 -0
  339. package/fixtures/language/registry/fail/category-missing.ia +8 -0
  340. package/fixtures/language/registry/fail/category-unknown.diagnostics.json +1 -0
  341. package/fixtures/language/registry/fail/category-unknown.ia +9 -0
  342. package/fixtures/language/registry/fail/condition-in-entry.diagnostics.json +1 -0
  343. package/fixtures/language/registry/fail/condition-in-entry.ia +9 -0
  344. package/fixtures/language/registry/fail/condition-on-head.diagnostics.json +1 -0
  345. package/fixtures/language/registry/fail/condition-on-head.ia +4 -0
  346. package/fixtures/language/registry/fail/consent-predicate-unknown.diagnostics.json +1 -0
  347. package/fixtures/language/registry/fail/consent-predicate-unknown.ia +6 -0
  348. package/fixtures/language/registry/fail/consent-row-malformed.diagnostics.json +1 -0
  349. package/fixtures/language/registry/fail/consent-row-malformed.ia +6 -0
  350. package/fixtures/language/registry/fail/discriminator-conflict.diagnostics.json +1 -0
  351. package/fixtures/language/registry/fail/discriminator-conflict.ia +21 -0
  352. package/fixtures/language/registry/fail/entry-malformed.diagnostics.json +1 -0
  353. package/fixtures/language/registry/fail/entry-malformed.ia +6 -0
  354. package/fixtures/language/registry/fail/facets-missing.diagnostics.json +1 -0
  355. package/fixtures/language/registry/fail/facets-missing.ia +9 -0
  356. package/fixtures/language/registry/fail/keyword-reserved.diagnostics.json +1 -0
  357. package/fixtures/language/registry/fail/keyword-reserved.ia +9 -0
  358. package/fixtures/language/registry/fail/kind-unknown.diagnostics.json +1 -0
  359. package/fixtures/language/registry/fail/kind-unknown.ia +9 -0
  360. package/fixtures/language/registry/fail/provider-missing.diagnostics.json +1 -0
  361. package/fixtures/language/registry/fail/provider-missing.ia +3 -0
  362. package/fixtures/language/registry/fail/requires-head-field.diagnostics.json +1 -0
  363. package/fixtures/language/registry/fail/requires-head-field.ia +5 -0
  364. package/fixtures/language/registry/fail/retired-interface.diagnostics.json +6 -0
  365. package/fixtures/language/registry/fail/retired-interface.ia +9 -0
  366. package/fixtures/language/registry/fail/retired-protocol.diagnostics.json +6 -0
  367. package/fixtures/language/registry/fail/retired-protocol.ia +9 -0
  368. package/fixtures/language/registry/fail/retired-shape.diagnostics.json +6 -0
  369. package/fixtures/language/registry/fail/retired-shape.ia +9 -0
  370. package/fixtures/language/registry/fail/schema-entry-missing.diagnostics.json +1 -0
  371. package/fixtures/language/registry/fail/schema-entry-missing.ia +9 -0
  372. package/fixtures/language/registry/fail/schema-kind-mismatch.diagnostics.json +1 -0
  373. package/fixtures/language/registry/fail/schema-kind-mismatch.ia +13 -0
  374. package/fixtures/language/registry/fail/schema-missing.diagnostics.json +1 -0
  375. package/fixtures/language/registry/fail/schema-missing.ia +9 -0
  376. package/fixtures/language/registry/fail/system-cycle.diagnostics.json +1 -0
  377. package/fixtures/language/registry/fail/system-cycle.ia +11 -0
  378. package/fixtures/language/registry/fail/system-missing.diagnostics.json +1 -0
  379. package/fixtures/language/registry/fail/system-missing.ia +6 -0
  380. package/fixtures/language/registry/fail/version-not-semver.diagnostics.json +1 -0
  381. package/fixtures/language/registry/fail/version-not-semver.ia +4 -0
  382. package/fixtures/language/registry/pass/requires-order.ia +44 -0
  383. package/fixtures/language/registry/pass/requires-order.records.json +633 -0
  384. package/fixtures/language/schema/fail/edge-as-field.diagnostics.json +1 -0
  385. package/fixtures/language/schema/fail/edge-as-field.ia +7 -0
  386. package/fixtures/language/schema/fail/edge-cardinality-unknown.diagnostics.json +1 -0
  387. package/fixtures/language/schema/fail/edge-cardinality-unknown.ia +7 -0
  388. package/fixtures/language/schema/fail/edge-predicate-unknown.diagnostics.json +1 -0
  389. package/fixtures/language/schema/fail/edge-predicate-unknown.ia +7 -0
  390. package/fixtures/language/schema/fail/field-form-unknown.diagnostics.json +1 -0
  391. package/fixtures/language/schema/fail/field-form-unknown.ia +7 -0
  392. package/fixtures/language/schema/fail/field-path-malformed.diagnostics.json +1 -0
  393. package/fixtures/language/schema/fail/field-path-malformed.ia +7 -0
  394. package/fixtures/language/schema/fail/field-set-not-id.diagnostics.json +1 -0
  395. package/fixtures/language/schema/fail/field-set-not-id.ia +7 -0
  396. package/fixtures/language/schema/fail/field-type-unknown.diagnostics.json +1 -0
  397. package/fixtures/language/schema/fail/field-type-unknown.ia +7 -0
  398. package/fixtures/language/schema/fail/kind-unknown.diagnostics.json +1 -0
  399. package/fixtures/language/schema/fail/kind-unknown.ia +5 -0
  400. package/fixtures/language/schema/fail/lowers-to-missing.diagnostics.json +1 -0
  401. package/fixtures/language/schema/fail/lowers-to-missing.ia +4 -0
  402. package/fixtures/language/schema/fail/sections-unclosed.diagnostics.json +1 -0
  403. package/fixtures/language/schema/fail/sections-unclosed.ia +5 -0
  404. package/fixtures/language/schema/pass/field-narrowing.ia +13 -0
  405. package/fixtures/language/schema/pass/field-narrowing.records.json +170 -0
  406. package/fixtures/language/schema/pass/full-dialect.ia +16 -0
  407. package/fixtures/language/schema/pass/full-dialect.records.json +179 -0
  408. package/fixtures/language/selectors/fail/child-condition.diagnostics.json +6 -0
  409. package/fixtures/language/selectors/fail/child-condition.ia +61 -0
  410. package/fixtures/language/selectors/fail/dangling-and.diagnostics.json +6 -0
  411. package/fixtures/language/selectors/fail/dangling-and.ia +60 -0
  412. package/fixtures/language/selectors/fail/dimension-not-axis.diagnostics.json +6 -0
  413. package/fixtures/language/selectors/fail/dimension-not-axis.ia +60 -0
  414. package/fixtures/language/selectors/fail/missing-is.diagnostics.json +6 -0
  415. package/fixtures/language/selectors/fail/missing-is.ia +60 -0
  416. package/fixtures/language/selectors/fail/quoted-value.diagnostics.json +6 -0
  417. package/fixtures/language/selectors/fail/quoted-value.ia +60 -0
  418. package/fixtures/language/selectors/fail/repeated-axis.diagnostics.json +6 -0
  419. package/fixtures/language/selectors/fail/repeated-axis.ia +60 -0
  420. package/fixtures/language/selectors/fail/unknown-axis.diagnostics.json +6 -0
  421. package/fixtures/language/selectors/fail/unknown-axis.ia +60 -0
  422. package/fixtures/language/selectors/fail/unknown-value.diagnostics.json +6 -0
  423. package/fixtures/language/selectors/fail/unknown-value.ia +60 -0
  424. package/fixtures/language/selectors/fail/wrong-grammar-case.diagnostics.json +6 -0
  425. package/fixtures/language/selectors/fail/wrong-grammar-case.ia +60 -0
  426. package/fixtures/language/selectors/pass/all-axes-canonical-values.ia +136 -0
  427. package/fixtures/language/selectors/pass/all-axes-canonical-values.records.json +2437 -0
  428. package/fixtures/language/strings/fail/unterminated-block.diagnostics.json +1 -0
  429. package/fixtures/language/strings/fail/unterminated-block.ia +6 -0
  430. package/fixtures/language/strings/fail/unterminated.diagnostics.json +1 -0
  431. package/fixtures/language/strings/fail/unterminated.ia +4 -0
  432. package/fixtures/language/strings/pass/structural-words.ast.json +21 -0
  433. package/fixtures/language/strings/pass/structural-words.ia +4 -0
  434. package/fixtures/language/values/fail/key-missing.diagnostics.json +1 -0
  435. package/fixtures/language/values/fail/key-missing.ia +4 -0
  436. package/fixtures/language/values/fail/trailing.diagnostics.json +1 -0
  437. package/fixtures/language/values/fail/trailing.ia +4 -0
  438. package/fixtures/language/values/fail/when-empty.diagnostics.json +1 -0
  439. package/fixtures/language/values/fail/when-empty.ia +4 -0
  440. package/fixtures/language/values/fail/when-list.diagnostics.json +1 -0
  441. package/fixtures/language/values/fail/when-list.ia +4 -0
  442. package/fixtures/language/values/pass/forms.ast.json +177 -0
  443. package/fixtures/language/values/pass/forms.ia +11 -0
  444. package/fixtures/language/variants/fail/duplicate-canonical-conjunction.diagnostics.json +14 -0
  445. package/fixtures/language/variants/fail/duplicate-canonical-conjunction.ia +63 -0
  446. package/fixtures/language/variants/fail/duplicate-fallback.diagnostics.json +10 -0
  447. package/fixtures/language/variants/fail/duplicate-fallback.ia +61 -0
  448. package/fixtures/language/variants/pass/fallback-and-coordinate-families.ia +65 -0
  449. package/fixtures/language/variants/pass/fallback-and-coordinate-families.records.json +971 -0
  450. package/fixtures/loop/.ia/src/blocking.ia +8 -0
  451. package/fixtures/loop/.ia/src/choice-a.ia +9 -0
  452. package/fixtures/loop/.ia/src/choice-b.ia +9 -0
  453. package/fixtures/loop/.ia/src/declared-decision.ia +12 -0
  454. package/fixtures/loop/.ia/src/fallback.ia +9 -0
  455. package/fixtures/loop/.ia/src/floor/artifact-set.ia +65 -0
  456. package/fixtures/loop/.ia/src/floor/axis.ia +74 -0
  457. package/fixtures/loop/.ia/src/floor/cardinality.ia +23 -0
  458. package/fixtures/loop/.ia/src/floor/category.ia +107 -0
  459. package/fixtures/loop/.ia/src/floor/dimension.ia +29 -0
  460. package/fixtures/loop/.ia/src/floor/floor.schema.ia +23 -0
  461. package/fixtures/loop/.ia/src/floor/intent-shape.ia +73 -0
  462. package/fixtures/loop/.ia/src/floor/kernel.schema.ia +173 -0
  463. package/fixtures/loop/.ia/src/floor/kind.ia +59 -0
  464. package/fixtures/loop/.ia/src/floor/lane.ia +44 -0
  465. package/fixtures/loop/.ia/src/floor/move.ia +37 -0
  466. package/fixtures/loop/.ia/src/floor/phase.ia +30 -0
  467. package/fixtures/loop/.ia/src/floor/placement.ia +42 -0
  468. package/fixtures/loop/.ia/src/floor/predicate.ia +164 -0
  469. package/fixtures/loop/.ia/src/floor/primitive.ia +50 -0
  470. package/fixtures/loop/.ia/src/floor/taxonomy.system.ia +67 -0
  471. package/fixtures/loop/.ia/src/floor/value-type.ia +44 -0
  472. package/fixtures/loop/.ia/src/systems/agent-system/records/foreign.ia +9 -0
  473. package/fixtures/loop/.ia/src/systems/agent-system/records/sample-mandate.ia +8 -0
  474. package/fixtures/loop/.ia/src/systems/agent-system/schemas/agent.schema.ia +13 -0
  475. package/fixtures/loop/.ia/src/systems/agent-system/schemas/mandate.schema.ia +12 -0
  476. package/fixtures/loop/.ia/src/systems/agent-system/steward.ia +9 -0
  477. package/fixtures/loop/.ia/src/systems/agent-system/system.ia +25 -0
  478. package/fixtures/loop/.ia/src/systems/compliance-system/cases/foreign-vocabulary.ia +14 -0
  479. package/fixtures/loop/.ia/src/systems/compliance-system/cases/missing-required-field.ia +14 -0
  480. package/fixtures/loop/.ia/src/systems/compliance-system/cases/valid-native-record.ia +15 -0
  481. package/fixtures/loop/.ia/src/systems/compliance-system/checks/instance-schema-check.ia +13 -0
  482. package/fixtures/loop/.ia/src/systems/compliance-system/contracts/foundation-authoring-contract.ia +15 -0
  483. package/fixtures/loop/.ia/src/systems/compliance-system/schemas/case.schema.ia +17 -0
  484. package/fixtures/loop/.ia/src/systems/compliance-system/schemas/check.schema.ia +15 -0
  485. package/fixtures/loop/.ia/src/systems/compliance-system/schemas/contract.schema.ia +20 -0
  486. package/fixtures/loop/.ia/src/systems/compliance-system/steward.ia +9 -0
  487. package/fixtures/loop/.ia/src/systems/compliance-system/system.ia +29 -0
  488. package/fixtures/loop/.ia/src/systems/governance-system/records/sample-convention.ia +9 -0
  489. package/fixtures/loop/.ia/src/systems/governance-system/records/sample-principle.ia +9 -0
  490. package/fixtures/loop/.ia/src/systems/governance-system/records/sample-procedure.ia +44 -0
  491. package/fixtures/loop/.ia/src/systems/governance-system/records/sample-rule.ia +13 -0
  492. package/fixtures/loop/.ia/src/systems/governance-system/schemas/convention.schema.ia +13 -0
  493. package/fixtures/loop/.ia/src/systems/governance-system/schemas/law.schema.ia +13 -0
  494. package/fixtures/loop/.ia/src/systems/governance-system/schemas/playbook.schema.ia +14 -0
  495. package/fixtures/loop/.ia/src/systems/governance-system/schemas/principle.schema.ia +13 -0
  496. package/fixtures/loop/.ia/src/systems/governance-system/steward.ia +9 -0
  497. package/fixtures/loop/.ia/src/systems/governance-system/system.ia +35 -0
  498. package/fixtures/loop/.ia/src/systems/session-system/records/sample-session.ia +10 -0
  499. package/fixtures/loop/.ia/src/systems/session-system/schemas/run.schema.ia +15 -0
  500. package/fixtures/loop/.ia/src/systems/session-system/steward.ia +9 -0
  501. package/fixtures/loop/.ia/src/systems/session-system/system.ia +23 -0
  502. package/fixtures/loop/.ia/src/systems/workspace-system/records/foundation-distribution.ia +8 -0
  503. package/fixtures/loop/.ia/src/systems/workspace-system/records/foundation-workspace.ia +10 -0
  504. package/fixtures/loop/.ia/src/systems/workspace-system/schemas/distribution.schema.ia +13 -0
  505. package/fixtures/loop/.ia/src/systems/workspace-system/schemas/workspace.schema.ia +13 -0
  506. package/fixtures/loop/.ia/src/systems/workspace-system/steward.ia +9 -0
  507. package/fixtures/loop/.ia/src/systems/workspace-system/system.ia +26 -0
  508. package/fixtures/loop/README.md +3 -0
  509. package/fixtures/loop/SPEC.md +9 -0
  510. package/fixtures/refusals.ts +434 -0
  511. package/package.json +129 -3
@@ -0,0 +1,434 @@
1
+ /** Executable boundary fixtures over the actual native corpus. These mutate
2
+ * typed products to exercise refusal APIs; they are not substitute providers. */
3
+ import { KERNEL_DIGEST, LANGUAGE_VERSION } from '@inventarch/language';
4
+ import type { CompiledRecord, FrozenRegistry, SchemaField } from '@inventarch/language';
5
+ import {
6
+ GraphUsageError,
7
+ canonicalRoot,
8
+ load,
9
+ resolve,
10
+ traverse,
11
+ validateCoordinate,
12
+ variants,
13
+ } from '@inventarch/graph';
14
+ import type { Graph, Node, RevisionSource } from '@inventarch/graph';
15
+ import {
16
+ renderHostArtifacts,
17
+ validateAdoption,
18
+ validateCheck,
19
+ validateCoverage,
20
+ validateFragments,
21
+ validateParse,
22
+ validateSchema,
23
+ validateSelectors,
24
+ validateSystems,
25
+ validateVariants,
26
+ runLanguageFixture,
27
+ } from '../src/index.js';
28
+ import type { AdoptionEvaluators, Finding, FixtureResult, SystemFolder } from '../src/index.js';
29
+ import { assess } from '../src/types.js';
30
+
31
+ export function runRefusalFixtures(
32
+ graph: Graph,
33
+ inputs: readonly RevisionSource[],
34
+ folders: readonly SystemFolder[],
35
+ ): readonly FixtureResult[] {
36
+ const records = [...graph.nodes.values()],
37
+ registry = graph.registry;
38
+ const agent = records.find((r) => r.discriminator === 'agent')!,
39
+ method = records.find((r) => r.name === 'sample-procedure')!;
40
+ const law = records.find((r) => r.discriminator === 'law')!,
41
+ contract = records.find((r) => r.name === 'foundation-authoring-contract')!,
42
+ check = records.find((r) => r.discriminator === 'check')!;
43
+ const ambiguous: Node = {
44
+ ...law,
45
+ variants: [
46
+ {
47
+ key: 'requires',
48
+ value: { kind: 'string', text: 'one' },
49
+ condition: [{ axis: 'phase', value: 'act' }],
50
+ span: { line: 10, endLine: 10 },
51
+ },
52
+ {
53
+ key: 'requires',
54
+ value: { kind: 'string', text: 'two' },
55
+ condition: [{ axis: 'primitive', value: 'Memory' }],
56
+ span: { line: 11, endLine: 11 },
57
+ },
58
+ ],
59
+ };
60
+ const rebuild = (changed: readonly CompiledRecord[] = records, vocabulary: FrozenRegistry = registry) =>
61
+ load(changed, vocabulary, {
62
+ sources: inputs,
63
+ languageVersion: LANGUAGE_VERSION,
64
+ kernelDigest: KERNEL_DIGEST,
65
+ location: '',
66
+ });
67
+ const schemaFindings = (changed: CompiledRecord = agent, vocabulary = registry) =>
68
+ validateSchema(changed, vocabulary, records).findings;
69
+ const systemFindings = (changed = folders, vocabulary = registry, pool: readonly CompiledRecord[] = records) =>
70
+ validateSystems(changed, vocabulary, pool).flatMap((a) => a.findings);
71
+ const rule = {
72
+ predicate: 'cite' as const,
73
+ target: 'playbook',
74
+ must: true,
75
+ cardinality: 'one' as const,
76
+ span: { line: 1, endLine: 1 },
77
+ };
78
+ const schemas = new Map(registry.schemas);
79
+ schemas.set('agent', { ...schemas.get('agent')!, edges: [rule] });
80
+ // W0 narrowing rows: the agent's `meaning.says` value re-typed, and its schema re-declared to narrow that one field.
81
+ const saying = (value: CompiledRecord['head'][number]['value']): CompiledRecord => ({
82
+ ...agent,
83
+ sections: agent.sections.map((s) =>
84
+ s.name !== 'meaning'
85
+ ? s
86
+ : { ...s, fields: s.fields.map((f) => ('key' in f && f.key === 'says' ? { ...f, value } : f)) },
87
+ ),
88
+ });
89
+ const narrowed = (field: Partial<SchemaField>): FrozenRegistry => {
90
+ const declared = new Map(registry.schemas),
91
+ original = declared.get('agent')!;
92
+ declared.set('agent', {
93
+ ...original,
94
+ fields: [{ section: 'meaning', key: 'says', type: 'text', must: true, span: original.span, ...field }],
95
+ });
96
+ return { ...registry, schemas: declared };
97
+ };
98
+ const edge = {
99
+ predicate: 'cite' as const,
100
+ direction: 'out' as const,
101
+ reference: { kind: 'ref' as const, discriminator: 'playbook', name: 'missing' },
102
+ target: null,
103
+ span: agent.source,
104
+ };
105
+ const examples: readonly [Finding['code'], () => readonly Finding[]][] = [
106
+ [
107
+ 'IA-GRAPH-IDENTITY-TIE',
108
+ () => rebuild([...records, { ...method, source: { ...method.source, line: 1000 } }]).diagnostics,
109
+ ],
110
+ ['IA-GRAPH-TARGET-MISSING', () => rebuild(records.filter((r) => r.identity !== contract.identity)).diagnostics],
111
+ [
112
+ 'IA-GRAPH-TARGET-AMBIGUOUS',
113
+ () => {
114
+ const result = resolve(
115
+ { kind: 'ref', discriminator: method.discriminator, name: method.name },
116
+ [method, { ...method, source: { ...method.source, line: 1000 } }],
117
+ registry,
118
+ );
119
+ return result.ok
120
+ ? []
121
+ : [
122
+ {
123
+ code: result.code,
124
+ path: method.source.path,
125
+ line: 1,
126
+ severity: 'error',
127
+ message: 'Ambiguous boundary reference',
128
+ },
129
+ ];
130
+ },
131
+ ],
132
+ ['IA-GRAPH-EDGE-UNCONSENTED', () => rebuild(records, { ...registry, consent: new Map() }).diagnostics],
133
+ [
134
+ 'IA-GRAPH-DIMENSION-UNKNOWN',
135
+ () =>
136
+ rebuild(
137
+ records.map((r) =>
138
+ r !== method
139
+ ? r
140
+ : { ...r, head: [{ key: 'artifact-set', value: { kind: 'scalar', text: 'unknown' }, span: r.source }] },
141
+ ),
142
+ ).diagnostics,
143
+ ],
144
+ [
145
+ 'IA-GRAPH-COORDINATE-VALUE-UNKNOWN',
146
+ () => {
147
+ validateCoordinate({ phase: 'unknown' });
148
+ return [];
149
+ },
150
+ ],
151
+ [
152
+ 'IA-GRAPH-VERB-UNKNOWN',
153
+ () => {
154
+ traverse(graph, { start: [], follow: ['imagines'] });
155
+ return [];
156
+ },
157
+ ],
158
+ [
159
+ 'IA-GRAPH-TRAVERSAL-INVALID',
160
+ () => {
161
+ traverse(graph, { start: [], depth: 9 });
162
+ return [];
163
+ },
164
+ ],
165
+ ['IA-GRAPH-VARIANT-AMBIGUOUS', () => variants(ambiguous, { phase: 'act', primitive: 'Memory' }).diagnostics],
166
+ [
167
+ 'IA-GRAPH-SCOPE-INVALID',
168
+ () => {
169
+ canonicalRoot('../escape');
170
+ return [];
171
+ },
172
+ ],
173
+ ['IA-COMP-SCHEMA-MISSING', () => schemaFindings(agent, { ...registry, schemas: new Map() })],
174
+ ['IA-COMP-SCHEMA-KIND-MISMATCH', () => schemaFindings({ ...agent, kind: 'definition' })],
175
+ [
176
+ 'IA-COMP-SECTION-MISSING',
177
+ () => schemaFindings({ ...agent, sections: agent.sections.filter((s) => s.name !== 'meaning') }),
178
+ ],
179
+ [
180
+ 'IA-COMP-SECTION-UNKNOWN',
181
+ () =>
182
+ schemaFindings({
183
+ ...agent,
184
+ sections: [...agent.sections, { name: 'unknown', span: agent.source, fields: [] }],
185
+ }),
186
+ ],
187
+ [
188
+ 'IA-COMP-FIELD-MISSING',
189
+ () =>
190
+ schemaFindings({
191
+ ...agent,
192
+ sections: agent.sections.map((s) => (s.name !== 'meaning' ? s : { ...s, fields: [] })),
193
+ }),
194
+ ],
195
+ [
196
+ 'IA-COMP-FIELD-DUPLICATE',
197
+ () =>
198
+ schemaFindings({
199
+ ...agent,
200
+ sections: agent.sections.map((s) =>
201
+ s.name !== 'meaning'
202
+ ? s
203
+ : { ...s, fields: [...s.fields, ...s.fields.filter((f) => 'key' in f && f.key === 'says')] },
204
+ ),
205
+ }),
206
+ ],
207
+ [
208
+ 'IA-COMP-FIELD-UNKNOWN',
209
+ () =>
210
+ schemaFindings({
211
+ ...agent,
212
+ sections: agent.sections.map((s) =>
213
+ s.name !== 'meaning'
214
+ ? s
215
+ : {
216
+ ...s,
217
+ fields: [...s.fields, { key: 'ready', value: { kind: 'scalar', text: 'true' }, span: agent.source }],
218
+ },
219
+ ),
220
+ }),
221
+ ],
222
+ [
223
+ 'IA-COMP-FIELD-TYPE',
224
+ () =>
225
+ schemaFindings({
226
+ ...agent,
227
+ sections: agent.sections.map((s) =>
228
+ s.name !== 'meaning'
229
+ ? s
230
+ : {
231
+ ...s,
232
+ fields: s.fields.map((f) =>
233
+ 'key' in f && f.key === 'says' ? { ...f, value: { kind: 'list', items: [] } } : f,
234
+ ),
235
+ },
236
+ ),
237
+ }),
238
+ ],
239
+ [
240
+ 'IA-COMP-FIELD-VALUE',
241
+ () => schemaFindings(saying({ kind: 'scalar', text: 'nope' }), narrowed({ type: 'id', values: ['yes'] })),
242
+ ],
243
+ [
244
+ 'IA-COMP-FIELD-REF-TARGET',
245
+ () =>
246
+ schemaFindings(
247
+ saying({ kind: 'ref', discriminator: 'playbook', name: 'sample-procedure' }),
248
+ narrowed({ type: 'ref', target: 'agent' }),
249
+ ),
250
+ ],
251
+ [
252
+ 'IA-COMP-FIELD-REF-MISSING',
253
+ () =>
254
+ schemaFindings(
255
+ saying({ kind: 'ref', discriminator: 'playbook', name: 'missing' }),
256
+ narrowed({ type: 'ref', target: 'playbook' }),
257
+ ),
258
+ ],
259
+ ['IA-COMP-FIELD-FORM', () => schemaFindings(agent, narrowed({ type: 'text', form: 'iso-date' }))],
260
+ ['IA-COMP-EDGE-CARDINALITY', () => schemaFindings(agent, { ...registry, schemas })],
261
+ ['IA-COMP-EDGE-UNRESOLVED', () => schemaFindings({ ...agent, edges: [edge] }, { ...registry, schemas })],
262
+ ['IA-COMP-SYSTEM-MALFORMED', () => systemFindings([{ name: 'empty', path: 'empty', sources: [], records: [] }])],
263
+ [
264
+ 'IA-COMP-DISCRIMINATOR-FOREIGN',
265
+ () =>
266
+ systemFindings(folders.map((f) => (f.name !== 'agent-system' ? f : { ...f, records: [...f.records, method] }))),
267
+ ],
268
+ ['IA-COMP-BOOTSTRAP-ORDER', () => systemFindings(folders, { ...registry, order: [...registry.order].reverse() })],
269
+ [
270
+ 'IA-COMP-STEWARD-MISSING',
271
+ () =>
272
+ systemFindings(
273
+ folders,
274
+ registry,
275
+ records.filter((r) => r.discriminator !== 'agent'),
276
+ ),
277
+ ],
278
+ [
279
+ 'IA-COMP-CONSENT-EMPTY',
280
+ () =>
281
+ systemFindings(folders, {
282
+ ...registry,
283
+ systems: new Map([...registry.systems].map(([key, value]) => [key, { ...value, consent: [] }])),
284
+ }),
285
+ ],
286
+ [
287
+ 'IA-COMP-SCHEMA-UNREFERENCED',
288
+ () =>
289
+ systemFindings(folders, {
290
+ ...registry,
291
+ registrations: new Map([...registry.registrations].filter(([key]) => key !== 'agent')),
292
+ }),
293
+ ],
294
+ [
295
+ 'IA-COMP-SCHEMA-MULTIPLE',
296
+ () =>
297
+ systemFindings(folders, {
298
+ ...registry,
299
+ registrations: new Map([
300
+ ...registry.registrations,
301
+ ['duplicate', { ...registry.registrations.get('agent')!, keyword: 'duplicate' }],
302
+ ]),
303
+ }),
304
+ ],
305
+ [
306
+ 'IA-COMP-FRAGMENT-MISSING',
307
+ () =>
308
+ validateFragments(
309
+ rebuild(
310
+ records.map((r) =>
311
+ r.discriminator !== 'case'
312
+ ? r
313
+ : {
314
+ ...r,
315
+ edges: r.edges.map((e) => ({
316
+ ...e,
317
+ fragment: 'REQ-MISSING',
318
+ reference: { ...e.reference, fragment: 'REQ-MISSING' },
319
+ })),
320
+ },
321
+ ),
322
+ ),
323
+ ).findings,
324
+ ],
325
+ [
326
+ 'IA-COMP-COVERAGE-MISSING',
327
+ () => {
328
+ const g = rebuild(records.filter((r) => r.name !== 'valid-native-record'));
329
+ return validateCoverage(g.nodes.get(contract.identity)!, g).findings;
330
+ },
331
+ ],
332
+ [
333
+ 'IA-COMP-COVERAGE-KIND',
334
+ () => {
335
+ const g = rebuild(
336
+ records.map((r) =>
337
+ r.discriminator !== 'case'
338
+ ? r
339
+ : {
340
+ ...r,
341
+ sections: r.sections.map((s) =>
342
+ s.name !== 'scenario'
343
+ ? s
344
+ : {
345
+ ...s,
346
+ fields: s.fields.map((f) =>
347
+ 'key' in f && f.key === 'kind' ? { ...f, value: { kind: 'scalar', text: 'success' } } : f,
348
+ ),
349
+ },
350
+ ),
351
+ },
352
+ ),
353
+ );
354
+ return validateCoverage(g.nodes.get(contract.identity)!, g).findings;
355
+ },
356
+ ],
357
+ [
358
+ 'IA-COMP-SELECTOR-INVALID',
359
+ () => validateSelectors({ ...method, selectors: [[{ axis: 'phase', value: 'unknown' }]] }).findings,
360
+ ],
361
+ ['IA-COMP-CHECK-UNKNOWN', () => validateCheck({ ...check, sections: [] }).findings],
362
+ ['IA-COMP-VARIANT-AMBIGUOUS', () => validateVariants(ambiguous).findings],
363
+ [
364
+ 'IA-COMP-ADOPTION-FAILED',
365
+ () => {
366
+ const evaluators: AdoptionEvaluators = new Map([
367
+ [
368
+ contract.identity,
369
+ new Map(
370
+ contract.requirements.map((r) => [
371
+ r.id,
372
+ () => ({ outcome: 'fail' as const, message: 'Fixture rejects the structural claim' }),
373
+ ]),
374
+ ),
375
+ ],
376
+ ]);
377
+ return validateAdoption(graph, evaluators).flatMap((a) => a.findings);
378
+ },
379
+ ],
380
+ ['IA-COMP-NOT-EVALUATED', () => validateParse(undefined).findings],
381
+ ['IA-COMP-PROJECTION-INVALID', () => renderHostArtifacts(records, '').assessment.findings],
382
+ [
383
+ 'IA-COMP-FIXTURE-MISMATCH',
384
+ () =>
385
+ runLanguageFixture({
386
+ path: 'fixture.ia',
387
+ clause: 'parser',
388
+ mode: 'fail',
389
+ source: '#! ia 1.0\n',
390
+ diagnostics: [],
391
+ }).assessment.findings,
392
+ ],
393
+ ];
394
+ return Object.freeze(
395
+ examples.map(([code, run]): FixtureResult => {
396
+ let observed: readonly Finding[];
397
+ let unexpected = false;
398
+ try {
399
+ observed = run();
400
+ } catch (error) {
401
+ if (error instanceof GraphUsageError)
402
+ observed = [{ code: error.code, path: '', line: 1, severity: 'error', message: error.message }];
403
+ else {
404
+ unexpected = true;
405
+ observed = [
406
+ {
407
+ code: 'IA-COMP-FIXTURE-MISMATCH',
408
+ path: '',
409
+ line: 1,
410
+ severity: 'error',
411
+ message: `Boundary fixture threw: ${error instanceof Error ? error.message : String(error)}`,
412
+ },
413
+ ];
414
+ }
415
+ }
416
+ const findings: Finding[] =
417
+ !unexpected && observed.some((d) => d.code === code)
418
+ ? []
419
+ : [
420
+ {
421
+ code: 'IA-COMP-FIXTURE-MISMATCH',
422
+ path: '',
423
+ line: 1,
424
+ severity: 'error',
425
+ message: `${code} boundary fixture produced ${observed.map((d) => `${d.code}: ${d.message}`).join(', ')}`,
426
+ },
427
+ ];
428
+ return Object.freeze({
429
+ assessment: assess('COMP-FIXTURES', `boundary/${code}`, findings),
430
+ observedCodes: Object.freeze([...new Set(observed.map((d) => d.code))].sort()),
431
+ });
432
+ }),
433
+ );
434
+ }
package/package.json CHANGED
@@ -1,6 +1,132 @@
1
1
  {
2
2
  "name": "@inventarch/compliance",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
3
+ "version": "1.0.0",
4
+ "type": "module",
5
+ "main": "./dist/index.js",
6
+ "types": "./dist/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "default": "./dist/index.js"
11
+ },
12
+ "./internal/adoption": {
13
+ "types": "./dist/adoption.d.ts",
14
+ "default": "./dist/adoption.js"
15
+ },
16
+ "./internal/catalog": {
17
+ "types": "./dist/catalog.d.ts",
18
+ "default": "./dist/catalog.js"
19
+ },
20
+ "./internal/check-ids": {
21
+ "types": "./dist/check-ids.d.ts",
22
+ "default": "./dist/check-ids.js"
23
+ },
24
+ "./internal/evidence": {
25
+ "types": "./dist/evidence.d.ts",
26
+ "default": "./dist/evidence.js"
27
+ },
28
+ "./internal/fixtures": {
29
+ "types": "./dist/fixtures.d.ts",
30
+ "default": "./dist/fixtures.js"
31
+ },
32
+ "./internal/graph-checks": {
33
+ "types": "./dist/graph-checks.d.ts",
34
+ "default": "./dist/graph-checks.js"
35
+ },
36
+ "./internal/host-plugin": {
37
+ "types": "./dist/host-plugin.d.ts",
38
+ "default": "./dist/host-plugin.js"
39
+ },
40
+ "./internal/index": {
41
+ "types": "./dist/index.d.ts",
42
+ "default": "./dist/index.js"
43
+ },
44
+ "./internal/obligations": {
45
+ "types": "./dist/obligations.d.ts",
46
+ "default": "./dist/obligations.js"
47
+ },
48
+ "./internal/profiles": {
49
+ "types": "./dist/profiles.d.ts",
50
+ "default": "./dist/profiles.js"
51
+ },
52
+ "./internal/projections": {
53
+ "types": "./dist/projections.d.ts",
54
+ "default": "./dist/projections.js"
55
+ },
56
+ "./internal/record-text": {
57
+ "types": "./dist/record-text.d.ts",
58
+ "default": "./dist/record-text.js"
59
+ },
60
+ "./internal/report": {
61
+ "types": "./dist/report.d.ts",
62
+ "default": "./dist/report.js"
63
+ },
64
+ "./internal/schema": {
65
+ "types": "./dist/schema.d.ts",
66
+ "default": "./dist/schema.js"
67
+ },
68
+ "./internal/shape": {
69
+ "types": "./dist/shape.d.ts",
70
+ "default": "./dist/shape.js"
71
+ },
72
+ "./internal/steward-profile": {
73
+ "types": "./dist/steward-profile.d.ts",
74
+ "default": "./dist/steward-profile.js"
75
+ },
76
+ "./internal/systems": {
77
+ "types": "./dist/systems.d.ts",
78
+ "default": "./dist/systems.js"
79
+ },
80
+ "./internal/types": {
81
+ "types": "./dist/types.d.ts",
82
+ "default": "./dist/types.js"
83
+ },
84
+ "./internal/values": {
85
+ "types": "./dist/values.d.ts",
86
+ "default": "./dist/values.js"
87
+ },
88
+ "./internal/variants": {
89
+ "types": "./dist/variants.d.ts",
90
+ "default": "./dist/variants.js"
91
+ },
92
+ "./internal/workspace-projection": {
93
+ "types": "./dist/workspace-projection.d.ts",
94
+ "default": "./dist/workspace-projection.js"
95
+ }
96
+ },
97
+ "files": [
98
+ "dist",
99
+ "fixtures",
100
+ "README.md",
101
+ "SPEC.md",
102
+ "LICENSE",
103
+ "NOTICE"
104
+ ],
105
+ "dependencies": {
106
+ "@inventarch/language": "1.0.0",
107
+ "@inventarch/graph": "1.0.0"
108
+ },
109
+ "devDependencies": {
110
+ "@types/node": "^22.19.0",
111
+ "typescript": "^5.9.3",
112
+ "vitest": "^4.1.4"
113
+ },
114
+ "license": "Apache-2.0",
115
+ "publishConfig": {
116
+ "access": "public",
117
+ "registry": "https://registry.npmjs.org"
118
+ },
119
+ "engines": {
120
+ "node": ">=22.22.0 <23"
121
+ },
122
+ "repository": {
123
+ "type": "git",
124
+ "url": "git+https://github.com/inventarch/ia.git",
125
+ "directory": "packages/compliance"
126
+ },
127
+ "scripts": {
128
+ "build": "tsc -p tsconfig.json",
129
+ "typecheck": "tsc --noEmit -p tsconfig.json && tsc -p tsconfig.tests.json",
130
+ "test": "vitest run --config vitest.config.mts"
131
+ }
6
132
  }