@rathnasgala2/schemas 2.11.0 → 2.13.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 (408) hide show
  1. package/README.md +192 -84
  2. package/THIRD_PARTY_LICENSES.json +79 -106
  3. package/diagnostics/diagnostic-map.json +443 -405
  4. package/diagnostics/diagnostic-map.public-runtime-origins.json +5 -0
  5. package/docs/catalogs/app-routes.json +2 -1
  6. package/docs/catalogs/schema-inventory.json +33 -54
  7. package/examples/valid/adapter-capability/rules.json +11 -0
  8. package/examples/valid/artifact-manifest/rules.json +156 -177
  9. package/examples/valid/build-input/rules.json +67 -63
  10. package/examples/valid/build-provenance/rules.json +151 -172
  11. package/examples/valid/deployment-intent/rules.json +152 -148
  12. package/examples/valid/deployment-observation/rules.json +24 -20
  13. package/examples/valid/deployment-receipt/rules.json +152 -148
  14. package/examples/valid/navigation/rules.json +2 -4
  15. package/examples/valid/theme-contract/rules.json +4 -1
  16. package/fixtures/boundary/adapter-capability/rules.json +16 -0
  17. package/fixtures/boundary/artifact-manifest/rules.json +195 -202
  18. package/fixtures/boundary/build-input/rules.json +99 -86
  19. package/fixtures/boundary/build-provenance/rules.json +193 -202
  20. package/fixtures/boundary/deployment-intent/rules.json +186 -140
  21. package/fixtures/boundary/deployment-observation/rules.json +68 -18
  22. package/fixtures/boundary/deployment-receipt/rules.json +186 -140
  23. package/fixtures/boundary/navigation/rules.json +2 -17
  24. package/fixtures/boundary/theme-contract/rules.json +34 -0
  25. package/fixtures/invalid/adapter-capability/SCHEMA_STRING_TOO_LONG/cases.json +11 -0
  26. package/fixtures/invalid/adapter-capability/UTF8_BYTE_LENGTH_INVALID/cases.json +11 -0
  27. package/fixtures/invalid/artifact-manifest/ASCII_BYTE_LENGTH_INVALID/cases.json +13 -0
  28. package/fixtures/invalid/artifact-manifest/INTEGER_RANGE_INVALID/cases.json +24 -0
  29. package/fixtures/invalid/artifact-manifest/REQUEST_FIELD_UNKNOWN/cases.json +19 -19
  30. package/fixtures/invalid/artifact-manifest/SCHEMA_CONSTANT_INVALID/cases.json +48 -48
  31. package/fixtures/invalid/artifact-manifest/SCHEMA_ENUM_INVALID/cases.json +11 -11
  32. package/fixtures/invalid/artifact-manifest/SCHEMA_FORMAT_INVALID/cases.json +0 -9
  33. package/fixtures/invalid/artifact-manifest/SCHEMA_NEGATED_RULE_MATCHED/cases.json +0 -11
  34. package/fixtures/invalid/artifact-manifest/SCHEMA_PATTERN_INVALID/cases.json +0 -22
  35. package/fixtures/invalid/artifact-manifest/SCHEMA_REQUIRED_FIELD_MISSING/cases.json +1105 -1105
  36. package/fixtures/invalid/artifact-manifest/SCHEMA_STRING_TOO_LONG/cases.json +4 -6
  37. package/fixtures/invalid/artifact-manifest/SCHEMA_STRING_TOO_SHORT/cases.json +9 -11
  38. package/fixtures/invalid/artifact-manifest/SCHEMA_TYPE_INVALID/cases.json +22 -31
  39. package/fixtures/invalid/artifact-manifest/UTF8_BYTE_LENGTH_INVALID/cases.json +0 -11
  40. package/fixtures/invalid/build-input/INTEGER_RANGE_INVALID/cases.json +13 -0
  41. package/fixtures/invalid/build-input/REQUEST_FIELD_UNKNOWN/cases.json +32 -32
  42. package/fixtures/invalid/build-input/SCHEMA_CONSTANT_INVALID/cases.json +11 -11
  43. package/fixtures/invalid/build-input/SCHEMA_ENUM_INVALID/cases.json +11 -11
  44. package/fixtures/invalid/build-input/SCHEMA_REQUIRED_FIELD_MISSING/cases.json +78 -78
  45. package/fixtures/invalid/build-input/SCHEMA_TYPE_INVALID/cases.json +51 -18
  46. package/fixtures/invalid/build-provenance/ASCII_BYTE_LENGTH_INVALID/cases.json +13 -0
  47. package/fixtures/invalid/build-provenance/INTEGER_RANGE_INVALID/cases.json +22 -0
  48. package/fixtures/invalid/build-provenance/REQUEST_FIELD_UNKNOWN/cases.json +56 -56
  49. package/fixtures/invalid/build-provenance/SCHEMA_CONSTANT_INVALID/cases.json +37 -37
  50. package/fixtures/invalid/build-provenance/SCHEMA_ENUM_INVALID/cases.json +11 -11
  51. package/fixtures/invalid/build-provenance/SCHEMA_FORMAT_INVALID/cases.json +0 -9
  52. package/fixtures/invalid/build-provenance/SCHEMA_NEGATED_RULE_MATCHED/cases.json +0 -11
  53. package/fixtures/invalid/build-provenance/SCHEMA_PATTERN_INVALID/cases.json +0 -22
  54. package/fixtures/invalid/build-provenance/SCHEMA_REQUIRED_FIELD_MISSING/cases.json +927 -927
  55. package/fixtures/invalid/build-provenance/SCHEMA_STRING_TOO_LONG/cases.json +9 -11
  56. package/fixtures/invalid/build-provenance/SCHEMA_STRING_TOO_SHORT/cases.json +8 -10
  57. package/fixtures/invalid/build-provenance/SCHEMA_TYPE_INVALID/cases.json +20 -25
  58. package/fixtures/invalid/build-provenance/UTF8_BYTE_LENGTH_INVALID/cases.json +0 -11
  59. package/fixtures/invalid/deployment-intent/INTEGER_RANGE_INVALID/cases.json +24 -0
  60. package/fixtures/invalid/deployment-intent/REQUEST_FIELD_UNKNOWN/cases.json +30 -30
  61. package/fixtures/invalid/deployment-intent/SCHEMA_CONSTANT_INVALID/cases.json +41 -41
  62. package/fixtures/invalid/deployment-intent/SCHEMA_ENUM_INVALID/cases.json +11 -11
  63. package/fixtures/invalid/deployment-intent/SCHEMA_FORMAT_INVALID/cases.json +0 -9
  64. package/fixtures/invalid/deployment-intent/SCHEMA_REQUIRED_FIELD_MISSING/cases.json +1209 -1209
  65. package/fixtures/invalid/deployment-intent/SCHEMA_STRING_TOO_LONG/cases.json +9 -0
  66. package/fixtures/invalid/deployment-intent/SCHEMA_STRING_TOO_SHORT/cases.json +9 -0
  67. package/fixtures/invalid/deployment-intent/SCHEMA_TYPE_INVALID/cases.json +22 -20
  68. package/fixtures/invalid/deployment-observation/INTEGER_RANGE_INVALID/cases.json +24 -0
  69. package/fixtures/invalid/deployment-observation/REQUEST_FIELD_UNKNOWN/cases.json +16 -16
  70. package/fixtures/invalid/deployment-observation/SCHEMA_FORMAT_INVALID/cases.json +0 -9
  71. package/fixtures/invalid/deployment-observation/SCHEMA_REQUIRED_FIELD_MISSING/cases.json +39 -39
  72. package/fixtures/invalid/deployment-observation/SCHEMA_STRING_TOO_LONG/cases.json +11 -0
  73. package/fixtures/invalid/deployment-observation/SCHEMA_STRING_TOO_SHORT/cases.json +11 -0
  74. package/fixtures/invalid/deployment-observation/SCHEMA_TYPE_INVALID/cases.json +11 -11
  75. package/fixtures/invalid/deployment-receipt/INTEGER_RANGE_INVALID/cases.json +24 -0
  76. package/fixtures/invalid/deployment-receipt/REQUEST_FIELD_UNKNOWN/cases.json +70 -70
  77. package/fixtures/invalid/deployment-receipt/SCHEMA_CONSTANT_INVALID/cases.json +36 -36
  78. package/fixtures/invalid/deployment-receipt/SCHEMA_ENUM_INVALID/cases.json +11 -11
  79. package/fixtures/invalid/deployment-receipt/SCHEMA_FORMAT_INVALID/cases.json +0 -9
  80. package/fixtures/invalid/deployment-receipt/SCHEMA_REQUIRED_FIELD_MISSING/cases.json +1304 -1304
  81. package/fixtures/invalid/deployment-receipt/SCHEMA_STRING_TOO_LONG/cases.json +9 -0
  82. package/fixtures/invalid/deployment-receipt/SCHEMA_STRING_TOO_SHORT/cases.json +9 -0
  83. package/fixtures/invalid/deployment-receipt/SCHEMA_TYPE_INVALID/cases.json +22 -20
  84. package/fixtures/invalid/navigation/SCHEMA_ARRAY_TOO_LONG/cases.json +0 -15
  85. package/fixtures/invalid/navigation/SCHEMA_CONSTANT_INVALID/cases.json +11 -0
  86. package/fixtures/invalid/navigation/SCHEMA_TYPE_INVALID/cases.json +0 -11
  87. package/fixtures/invalid/theme-contract/INTEGER_RANGE_INVALID/cases.json +11 -0
  88. package/fixtures/invalid/theme-contract/SCHEMA_FORMAT_INVALID/cases.json +0 -9
  89. package/fixtures/invalid/theme-contract/SCHEMA_STRING_TOO_LONG/cases.json +9 -0
  90. package/fixtures/invalid/theme-contract/SCHEMA_STRING_TOO_SHORT/cases.json +9 -0
  91. package/fixtures/manifest.json +3217 -2930
  92. package/fixtures/unknown-field/adapter-capability/rules.json +2 -0
  93. package/fixtures/unknown-field/artifact-manifest/rules.json +111 -114
  94. package/fixtures/unknown-field/build-input/rules.json +36 -32
  95. package/fixtures/unknown-field/build-provenance/rules.json +111 -114
  96. package/fixtures/unknown-field/deployment-intent/rules.json +109 -105
  97. package/fixtures/unknown-field/deployment-observation/rules.json +24 -20
  98. package/fixtures/unknown-field/deployment-receipt/rules.json +109 -105
  99. package/fixtures/unknown-field/navigation/rules.json +1 -3
  100. package/fixtures/unknown-field/theme-contract/rules.json +3 -0
  101. package/generated/browser/runtime-origins-validator-core.d.mts +10 -0
  102. package/generated/browser/runtime-origins-validator-core.mjs +35 -0
  103. package/generated/browser/validator-core.d.mts +10 -0
  104. package/generated/browser/validator-core.mjs +80 -0
  105. package/generated/typescript/contracts/artifact-manifest.d.ts +49 -48
  106. package/generated/typescript/contracts/build-input.d.ts +15 -15
  107. package/generated/typescript/contracts/build-provenance.d.ts +51 -50
  108. package/generated/typescript/contracts/deployment-intent.d.ts +6 -6
  109. package/generated/typescript/contracts/deployment-observation.d.ts +1 -1
  110. package/generated/typescript/contracts/deployment-receipt.d.ts +5 -5
  111. package/generated/typescript/contracts/navigation.d.ts +1 -1
  112. package/generated/typescript/index.js +11 -37
  113. package/openapi/http-catalog.json +14 -2
  114. package/openapi/openapi.yaml +527 -13
  115. package/package.json +19 -16
  116. package/sbom.cdx.json +23 -23
  117. package/schemas/adapter-capability.schema.json +5 -1
  118. package/schemas/appearance.schema.json +1 -1
  119. package/schemas/artifact-manifest.schema.json +15 -18
  120. package/schemas/build-input.schema.json +18 -11
  121. package/schemas/build-provenance.schema.json +15 -18
  122. package/schemas/deployment-intent.schema.json +13 -8
  123. package/schemas/deployment-observation.schema.json +10 -5
  124. package/schemas/deployment-receipt.schema.json +12 -7
  125. package/schemas/navigation.schema.json +5 -26
  126. package/schemas/theme-contract.schema.json +4 -2
  127. package/src/index.js +2 -2
  128. package/src/internal/browser-schema-validator.js +43 -0
  129. package/src/internal/format-validators.js +1 -1
  130. package/src/internal/gala-keywords.js +148 -0
  131. package/src/internal/validator-core.js +244 -108
  132. package/src/runtime-origins.js +18 -18
  133. package/types/index.d.ts +2 -2
  134. package/types/internal/browser-schema-validator.d.ts +16 -0
  135. package/types/internal/format-validators.d.ts +1 -1
  136. package/types/internal/gala-keywords.d.ts +68 -0
  137. package/types/internal/validator-core.d.ts +80 -1
  138. package/compatibility/compatibility.json +0 -594
  139. package/generated/java/src/main/java/io/gala/schema/generated/GalaSchemaRegistry.java +0 -67
  140. package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilityAdapterConfigurationCapabilities.java +0 -24
  141. package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilityAdapterIdentity.java +0 -20
  142. package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilityCapabilityDecision.java +0 -62
  143. package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilityCredentialEgressProfile.java +0 -35
  144. package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilityDestinationIdentity.java +0 -25
  145. package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilityDestinationProviderCoordinates.java +0 -19
  146. package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilityDocument.java +0 -52
  147. package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilityFilesystemProviderLimits.java +0 -32
  148. package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilityGithubActionsOidcOriginCatalog.java +0 -25
  149. package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilityHttpProviderLimits.java +0 -72
  150. package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilityLocalFilesystemAllowlist.java +0 -21
  151. package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilityLocalFilesystemAllowlistEntry.java +0 -28
  152. package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilityLocalFilesystemCapabilityEvidence.java +0 -42
  153. package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilityLocalFilesystemControlPublication.java +0 -26
  154. package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilityLocalFilesystemControlRow.java +0 -44
  155. package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilityLocalFilesystemFailureEvidence.java +0 -40
  156. package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilityLocalFilesystemObservationEvidence.java +0 -40
  157. package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilityLocalFilesystemPlatform.java +0 -25
  158. package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilityLocalFilesystemProbeSummary.java +0 -32
  159. package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilityLocalFilesystemProbeTranscript.java +0 -25
  160. package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilityLocalFilesystemReplacement.java +0 -22
  161. package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilityLocalFilesystemSurfaceIdentity.java +0 -20
  162. package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilityManagedExecutionBudget.java +0 -26
  163. package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilityPagesOidcCredentialEgress.java +0 -30
  164. package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilityProviderCallClassBinding.java +0 -22
  165. package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilityProviderCredentialEgress.java +0 -26
  166. package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilityProviderCredentialHeader.java +0 -24
  167. package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilityProviderDerivedHeader.java +0 -18
  168. package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilityProviderFixedHeader.java +0 -18
  169. package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilityProviderRequestTemplate.java +0 -39
  170. package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilitySpacesControlPlaneBinding.java +0 -32
  171. package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilitySpacesControlPlaneRequest.java +0 -26
  172. package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilitySpacesControlPlaneRequestCatalog.java +0 -31
  173. package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilitySpacesControlPlaneResponseCatalog.java +0 -20
  174. package/generated/java/src/main/java/io/gala/schema/generated/model/AdapterCapabilitySpacesWebsiteConfiguration.java +0 -24
  175. package/generated/java/src/main/java/io/gala/schema/generated/model/AppearanceColorMode.java +0 -19
  176. package/generated/java/src/main/java/io/gala/schema/generated/model/AppearanceDocument.java +0 -37
  177. package/generated/java/src/main/java/io/gala/schema/generated/model/AppearanceExtensionMap.java +0 -15
  178. package/generated/java/src/main/java/io/gala/schema/generated/model/AppearanceSemanticTokens.java +0 -15
  179. package/generated/java/src/main/java/io/gala/schema/generated/model/ArtifactManifestActionPinEvidence.java +0 -20
  180. package/generated/java/src/main/java/io/gala/schema/generated/model/ArtifactManifestArtifactLicenseConclusion.java +0 -21
  181. package/generated/java/src/main/java/io/gala/schema/generated/model/ArtifactManifestAssertedWorkload.java +0 -44
  182. package/generated/java/src/main/java/io/gala/schema/generated/model/ArtifactManifestBuildSandboxEvidence.java +0 -38
  183. package/generated/java/src/main/java/io/gala/schema/generated/model/ArtifactManifestDocument.java +0 -73
  184. package/generated/java/src/main/java/io/gala/schema/generated/model/ArtifactManifestFinding.java +0 -22
  185. package/generated/java/src/main/java/io/gala/schema/generated/model/ArtifactManifestManifestAsset.java +0 -24
  186. package/generated/java/src/main/java/io/gala/schema/generated/model/ArtifactManifestManifestCompositionIdentity.java +0 -25
  187. package/generated/java/src/main/java/io/gala/schema/generated/model/ArtifactManifestManifestExcludedInput.java +0 -22
  188. package/generated/java/src/main/java/io/gala/schema/generated/model/ArtifactManifestManifestIncludedSource.java +0 -22
  189. package/generated/java/src/main/java/io/gala/schema/generated/model/ArtifactManifestManifestRedirect.java +0 -24
  190. package/generated/java/src/main/java/io/gala/schema/generated/model/ArtifactManifestManifestRoute.java +0 -28
  191. package/generated/java/src/main/java/io/gala/schema/generated/model/ArtifactManifestManifestSourceIdentity.java +0 -26
  192. package/generated/java/src/main/java/io/gala/schema/generated/model/ArtifactManifestManifestValidationEvidence.java +0 -22
  193. package/generated/java/src/main/java/io/gala/schema/generated/model/ArtifactManifestMeasurement.java +0 -20
  194. package/generated/java/src/main/java/io/gala/schema/generated/model/ArtifactManifestPackageIdentity.java +0 -22
  195. package/generated/java/src/main/java/io/gala/schema/generated/model/ArtifactManifestRenderPolicyIdentity.java +0 -20
  196. package/generated/java/src/main/java/io/gala/schema/generated/model/ArtifactManifestReproducibleBuildRecord.java +0 -56
  197. package/generated/java/src/main/java/io/gala/schema/generated/model/ArtifactManifestWorkflowCarrierEvidence.java +0 -26
  198. package/generated/java/src/main/java/io/gala/schema/generated/model/ArtifactManifestWorkflowFileEvidence.java +0 -26
  199. package/generated/java/src/main/java/io/gala/schema/generated/model/AuthorDocument.java +0 -33
  200. package/generated/java/src/main/java/io/gala/schema/generated/model/AuthorExtensionMap.java +0 -15
  201. package/generated/java/src/main/java/io/gala/schema/generated/model/AuthorLocalizedAuthor.java +0 -20
  202. package/generated/java/src/main/java/io/gala/schema/generated/model/AuthorSocialLink.java +0 -19
  203. package/generated/java/src/main/java/io/gala/schema/generated/model/BuildInputAdapterIdentity.java +0 -20
  204. package/generated/java/src/main/java/io/gala/schema/generated/model/BuildInputAppearanceNormalized.java +0 -33
  205. package/generated/java/src/main/java/io/gala/schema/generated/model/BuildInputAuthorNormalized.java +0 -31
  206. package/generated/java/src/main/java/io/gala/schema/generated/model/BuildInputBuildPackages.java +0 -25
  207. package/generated/java/src/main/java/io/gala/schema/generated/model/BuildInputColorMode.java +0 -19
  208. package/generated/java/src/main/java/io/gala/schema/generated/model/BuildInputContentBuildRecord.java +0 -33
  209. package/generated/java/src/main/java/io/gala/schema/generated/model/BuildInputContentFrontmatterNormalized.java +0 -44
  210. package/generated/java/src/main/java/io/gala/schema/generated/model/BuildInputDestinationCapabilityProfile.java +0 -20
  211. package/generated/java/src/main/java/io/gala/schema/generated/model/BuildInputDocument.java +0 -51
  212. package/generated/java/src/main/java/io/gala/schema/generated/model/BuildInputLocalizedAuthor.java +0 -20
  213. package/generated/java/src/main/java/io/gala/schema/generated/model/BuildInputModuleBuildSelection.java +0 -15
  214. package/generated/java/src/main/java/io/gala/schema/generated/model/BuildInputNavigationItem.java +0 -23
  215. package/generated/java/src/main/java/io/gala/schema/generated/model/BuildInputNavigationLeaf.java +0 -22
  216. package/generated/java/src/main/java/io/gala/schema/generated/model/BuildInputNavigationNormalized.java +0 -21
  217. package/generated/java/src/main/java/io/gala/schema/generated/model/BuildInputPackageIdentity.java +0 -22
  218. package/generated/java/src/main/java/io/gala/schema/generated/model/BuildInputPublicationNormalized.java +0 -39
  219. package/generated/java/src/main/java/io/gala/schema/generated/model/BuildInputRenderPolicyIdentity.java +0 -20
  220. package/generated/java/src/main/java/io/gala/schema/generated/model/BuildInputRenderableBody.java +0 -26
  221. package/generated/java/src/main/java/io/gala/schema/generated/model/BuildInputRepositorySnapshot.java +0 -22
  222. package/generated/java/src/main/java/io/gala/schema/generated/model/BuildInputResolvedFile.java +0 -18
  223. package/generated/java/src/main/java/io/gala/schema/generated/model/BuildInputResolvedMedia.java +0 -20
  224. package/generated/java/src/main/java/io/gala/schema/generated/model/BuildInputSemanticTokens.java +0 -15
  225. package/generated/java/src/main/java/io/gala/schema/generated/model/BuildInputSocialLink.java +0 -19
  226. package/generated/java/src/main/java/io/gala/schema/generated/model/BuildProvenanceActionPinEvidence.java +0 -20
  227. package/generated/java/src/main/java/io/gala/schema/generated/model/BuildProvenanceArtifactLicenseConclusion.java +0 -21
  228. package/generated/java/src/main/java/io/gala/schema/generated/model/BuildProvenanceAssertedWorkload.java +0 -44
  229. package/generated/java/src/main/java/io/gala/schema/generated/model/BuildProvenanceBuildSandboxEvidence.java +0 -38
  230. package/generated/java/src/main/java/io/gala/schema/generated/model/BuildProvenanceDocument.java +0 -69
  231. package/generated/java/src/main/java/io/gala/schema/generated/model/BuildProvenanceFinding.java +0 -22
  232. package/generated/java/src/main/java/io/gala/schema/generated/model/BuildProvenanceManifestAsset.java +0 -24
  233. package/generated/java/src/main/java/io/gala/schema/generated/model/BuildProvenanceManifestCompositionIdentity.java +0 -25
  234. package/generated/java/src/main/java/io/gala/schema/generated/model/BuildProvenanceManifestExcludedInput.java +0 -22
  235. package/generated/java/src/main/java/io/gala/schema/generated/model/BuildProvenanceManifestIncludedSource.java +0 -22
  236. package/generated/java/src/main/java/io/gala/schema/generated/model/BuildProvenanceManifestRedirect.java +0 -24
  237. package/generated/java/src/main/java/io/gala/schema/generated/model/BuildProvenanceManifestRoute.java +0 -28
  238. package/generated/java/src/main/java/io/gala/schema/generated/model/BuildProvenanceManifestSourceIdentity.java +0 -26
  239. package/generated/java/src/main/java/io/gala/schema/generated/model/BuildProvenanceManifestValidationEvidence.java +0 -22
  240. package/generated/java/src/main/java/io/gala/schema/generated/model/BuildProvenanceMeasurement.java +0 -20
  241. package/generated/java/src/main/java/io/gala/schema/generated/model/BuildProvenancePackageIdentity.java +0 -22
  242. package/generated/java/src/main/java/io/gala/schema/generated/model/BuildProvenanceRenderPolicyIdentity.java +0 -20
  243. package/generated/java/src/main/java/io/gala/schema/generated/model/BuildProvenanceReproducibleBuildRecord.java +0 -56
  244. package/generated/java/src/main/java/io/gala/schema/generated/model/BuildProvenanceWorkflowCarrierEvidence.java +0 -26
  245. package/generated/java/src/main/java/io/gala/schema/generated/model/BuildProvenanceWorkflowFileEvidence.java +0 -26
  246. package/generated/java/src/main/java/io/gala/schema/generated/model/ContentFrontmatterDocument.java +0 -50
  247. package/generated/java/src/main/java/io/gala/schema/generated/model/ContentFrontmatterExtensionMap.java +0 -15
  248. package/generated/java/src/main/java/io/gala/schema/generated/model/ContentFrontmatterMediaRef.java +0 -20
  249. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentIntentActivationBasis.java +0 -20
  250. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentIntentActivationDetectionObservation.java +0 -33
  251. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentIntentActivationDetectionPlan.java +0 -44
  252. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentIntentActivationDetectionProbe.java +0 -52
  253. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentIntentAdapterIdentity.java +0 -20
  254. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentIntentCancellationFinalizationEvidence.java +0 -41
  255. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentIntentDeadlineFinalizationEvidence.java +0 -39
  256. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentIntentDeadlineFinalizationStream.java +0 -22
  257. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentIntentDeploymentPolicyDecision.java +0 -75
  258. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentIntentDestinationIdentity.java +0 -25
  259. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentIntentDestinationMutationAuthority.java +0 -36
  260. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentIntentDestinationProviderCoordinates.java +0 -19
  261. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentIntentDocument.java +0 -136
  262. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentIntentExpectedRedirectHop.java +0 -23
  263. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentIntentObservedVerificationHeader.java +0 -19
  264. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentIntentPackageIdentity.java +0 -22
  265. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentIntentPagesInterveningRunAttempt.java +0 -20
  266. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentIntentPagesReconciliationCommand.java +0 -48
  267. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentIntentPagesReconciliationRecovery.java +0 -41
  268. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentIntentPagesRunAttemptGapProof.java +0 -27
  269. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentIntentPublicGenerationMarkerPayload.java +0 -24
  270. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentIntentPublicProbeObservation.java +0 -54
  271. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentIntentRecognizedPriorRouteContract.java +0 -30
  272. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentIntentRenderPolicyIdentity.java +0 -20
  273. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentIntentReproducibleBuildRecord.java +0 -56
  274. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentIntentSupersessionFinalizationEvidence.java +0 -45
  275. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentIntentVerificationHeaderExpectation.java +0 -18
  276. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentIntentVerificationPlanTarget.java +0 -52
  277. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentObservationActivationDetectionObservation.java +0 -33
  278. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentObservationActivationDetectionProbe.java +0 -52
  279. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentObservationAdapterIdentity.java +0 -20
  280. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentObservationCancellationFinalizationEvidence.java +0 -41
  281. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentObservationDeadlineFinalizationEvidence.java +0 -39
  282. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentObservationDeadlineFinalizationStream.java +0 -22
  283. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentObservationDestinationIdentity.java +0 -25
  284. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentObservationDestinationProviderCoordinates.java +0 -19
  285. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentObservationDocument.java +0 -57
  286. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentObservationExpectedRedirectHop.java +0 -23
  287. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentObservationObservedVerificationHeader.java +0 -19
  288. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentObservationPackageIdentity.java +0 -22
  289. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentObservationPublicProbeObservation.java +0 -54
  290. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentObservationRecognizedPriorRouteContract.java +0 -30
  291. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentObservationRenderPolicyIdentity.java +0 -20
  292. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentObservationSupersessionFinalizationEvidence.java +0 -45
  293. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentObservationVerificationHeaderExpectation.java +0 -18
  294. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentObservationVerificationPlanTarget.java +0 -52
  295. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptActivationBasis.java +0 -20
  296. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptActivationDetectionObservation.java +0 -33
  297. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptActivationDetectionPlan.java +0 -44
  298. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptActivationDetectionProbe.java +0 -52
  299. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptAdapterIdentity.java +0 -20
  300. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptCancellationFinalizationEvidence.java +0 -41
  301. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptDeadlineFinalizationEvidence.java +0 -39
  302. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptDeadlineFinalizationStream.java +0 -22
  303. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptDeploymentAttempt.java +0 -38
  304. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptDeploymentFailure.java +0 -24
  305. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptDeploymentObservation.java +0 -53
  306. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptDeploymentPolicyDecision.java +0 -75
  307. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptDeploymentStageEvidence.java +0 -36
  308. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptDeploymentStageInput.java +0 -26
  309. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptDeploymentStageObservationEvidenceReference.java +0 -18
  310. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptDeploymentStageResult.java +0 -31
  311. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptDestinationIdentity.java +0 -25
  312. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptDestinationMutationAuthority.java +0 -36
  313. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptDestinationProviderCoordinates.java +0 -19
  314. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptDocument.java +0 -105
  315. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptExpectedRedirectHop.java +0 -23
  316. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptFinding.java +0 -22
  317. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptObservedVerificationHeader.java +0 -19
  318. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptPackageIdentity.java +0 -22
  319. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptPagesInterveningRunAttempt.java +0 -20
  320. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptPagesReconciliationCommand.java +0 -48
  321. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptPagesReconciliationRecovery.java +0 -41
  322. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptPagesRunAttemptGapProof.java +0 -27
  323. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptPublicGenerationMarkerPayload.java +0 -24
  324. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptPublicProbeObservation.java +0 -54
  325. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptRecognizedPriorRouteContract.java +0 -30
  326. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptRenderPolicyIdentity.java +0 -20
  327. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptReproducibleBuildRecord.java +0 -56
  328. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptSupersessionFinalizationEvidence.java +0 -45
  329. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptVerificationHeaderExpectation.java +0 -18
  330. package/generated/java/src/main/java/io/gala/schema/generated/model/DeploymentReceiptVerificationPlanTarget.java +0 -52
  331. package/generated/java/src/main/java/io/gala/schema/generated/model/EventEnvelopeDocument.java +0 -46
  332. package/generated/java/src/main/java/io/gala/schema/generated/model/EventEnvelopeRegisteredEventPayload.java +0 -26
  333. package/generated/java/src/main/java/io/gala/schema/generated/model/LockDependencyEdge.java +0 -18
  334. package/generated/java/src/main/java/io/gala/schema/generated/model/LockDocument.java +0 -39
  335. package/generated/java/src/main/java/io/gala/schema/generated/model/LockLockedPackage.java +0 -26
  336. package/generated/java/src/main/java/io/gala/schema/generated/model/LockLockedTemplate.java +0 -28
  337. package/generated/java/src/main/java/io/gala/schema/generated/model/LockPackageIdentity.java +0 -22
  338. package/generated/java/src/main/java/io/gala/schema/generated/model/NavigationDocument.java +0 -25
  339. package/generated/java/src/main/java/io/gala/schema/generated/model/NavigationExtensionMap.java +0 -15
  340. package/generated/java/src/main/java/io/gala/schema/generated/model/NavigationNavigationItem.java +0 -23
  341. package/generated/java/src/main/java/io/gala/schema/generated/model/NavigationNavigationLeaf.java +0 -23
  342. package/generated/java/src/main/java/io/gala/schema/generated/model/ProblemDocument.java +0 -37
  343. package/generated/java/src/main/java/io/gala/schema/generated/model/ProblemFieldError.java +0 -18
  344. package/generated/java/src/main/java/io/gala/schema/generated/model/PublicGenerationMarkerDocument.java +0 -24
  345. package/generated/java/src/main/java/io/gala/schema/generated/model/PublicRuntimeOriginsDocument.java +0 -44
  346. package/generated/java/src/main/java/io/gala/schema/generated/model/PublicationDocument.java +0 -41
  347. package/generated/java/src/main/java/io/gala/schema/generated/model/PublicationExtensionMap.java +0 -15
  348. package/generated/java/src/main/java/io/gala/schema/generated/model/PublicationFooterCard.java +0 -23
  349. package/generated/java/src/main/java/io/gala/schema/generated/model/PublicationPublicationProfile.java +0 -18
  350. package/generated/java/src/main/java/io/gala/schema/generated/model/PublicationSocialLink.java +0 -19
  351. package/generated/java/src/main/java/io/gala/schema/generated/model/RepositoryAssetRoot.java +0 -16
  352. package/generated/java/src/main/java/io/gala/schema/generated/model/RepositoryContentRoot.java +0 -23
  353. package/generated/java/src/main/java/io/gala/schema/generated/model/RepositoryDocument.java +0 -41
  354. package/generated/java/src/main/java/io/gala/schema/generated/model/RepositoryExtensionMap.java +0 -15
  355. package/generated/java/src/main/java/io/gala/schema/generated/model/RepositoryGeneratedRoot.java +0 -20
  356. package/generated/java/src/main/java/io/gala/schema/generated/model/TemplateCompositionDocument.java +0 -18
  357. package/generated/java/src/main/java/io/gala/schema/generated/model/ThemeContractDocument.java +0 -53
  358. package/generated/java/src/main/java/io/gala/schema/generated/model/ThemeContractPassiveAsset.java +0 -24
  359. package/generated/java/src/main/java/io/gala/schema/generated/model/ThemeContractThemeBudgets.java +0 -20
  360. package/generated/java/src/main/java/io/gala/schema/generated/model/ThemeContractThemeToken.java +0 -22
  361. package/generated/java/src/main/resources/io/gala/schema/generated/schemas/adapter-capability.schema.json +0 -2689
  362. package/generated/java/src/main/resources/io/gala/schema/generated/schemas/appearance.schema.json +0 -226
  363. package/generated/java/src/main/resources/io/gala/schema/generated/schemas/artifact-manifest.schema.json +0 -1063
  364. package/generated/java/src/main/resources/io/gala/schema/generated/schemas/author.schema.json +0 -231
  365. package/generated/java/src/main/resources/io/gala/schema/generated/schemas/build-input.schema.json +0 -866
  366. package/generated/java/src/main/resources/io/gala/schema/generated/schemas/build-provenance.schema.json +0 -937
  367. package/generated/java/src/main/resources/io/gala/schema/generated/schemas/content-frontmatter.schema.json +0 -241
  368. package/generated/java/src/main/resources/io/gala/schema/generated/schemas/deployment-intent.schema.json +0 -2067
  369. package/generated/java/src/main/resources/io/gala/schema/generated/schemas/deployment-observation.schema.json +0 -1654
  370. package/generated/java/src/main/resources/io/gala/schema/generated/schemas/deployment-receipt.schema.json +0 -5546
  371. package/generated/java/src/main/resources/io/gala/schema/generated/schemas/event-envelope.schema.json +0 -195
  372. package/generated/java/src/main/resources/io/gala/schema/generated/schemas/lock.schema.json +0 -326
  373. package/generated/java/src/main/resources/io/gala/schema/generated/schemas/navigation.schema.json +0 -229
  374. package/generated/java/src/main/resources/io/gala/schema/generated/schemas/problem.schema.json +0 -194
  375. package/generated/java/src/main/resources/io/gala/schema/generated/schemas/public-generation-marker.schema.json +0 -142
  376. package/generated/java/src/main/resources/io/gala/schema/generated/schemas/public-runtime-origins.schema.json +0 -183
  377. package/generated/java/src/main/resources/io/gala/schema/generated/schemas/publication.schema.json +0 -248
  378. package/generated/java/src/main/resources/io/gala/schema/generated/schemas/repository.schema.json +0 -219
  379. package/generated/java/src/main/resources/io/gala/schema/generated/schemas/template-composition.schema.json +0 -133
  380. package/generated/java/src/main/resources/io/gala/schema/generated/schemas/theme-contract.schema.json +0 -850
  381. package/generated/typescript/validator-core.cjs +0 -17
  382. package/openapi/generator/spring.json +0 -22
  383. package/openapi/generator/typescript-fetch.json +0 -19
  384. package/openapi/source/authentication.yaml +0 -557
  385. package/openapi/source/callbacks.yaml +0 -332
  386. package/openapi/source/components.yaml +0 -5670
  387. package/openapi/source/github.yaml +0 -351
  388. package/openapi/source/internal.yaml +0 -71
  389. package/openapi/source/membership-invitations.yaml +0 -203
  390. package/openapi/source/organizations.yaml +0 -11144
  391. package/openapi/source/root.yaml +0 -20
  392. package/openapi/source/self.yaml +0 -1940
  393. package/openapi/source/session.yaml +0 -308
  394. package/openapi/source/workloads.yaml +0 -744
  395. package/src/internal/build-artifact-semantics.js +0 -4391
  396. package/src/internal/deployment-record-semantics.js +0 -7567
  397. package/src/internal/deployment-stage-semantics.js +0 -1207
  398. package/src/internal/http-problem-contract.js +0 -35
  399. package/src/internal/managed-evidence-journal.js +0 -160
  400. package/src/internal/public-runtime-origins.js +0 -143
  401. package/src/internal/theme-composition-semantics.js +0 -2441
  402. package/types/internal/build-artifact-semantics.d.ts +0 -77
  403. package/types/internal/deployment-record-semantics.d.ts +0 -313
  404. package/types/internal/deployment-stage-semantics.d.ts +0 -108
  405. package/types/internal/http-problem-contract.d.ts +0 -4
  406. package/types/internal/managed-evidence-journal.d.ts +0 -26
  407. package/types/internal/public-runtime-origins.d.ts +0 -22
  408. package/types/internal/theme-composition-semantics.d.ts +0 -143
@@ -1,17 +1,39 @@
1
1
  import Ajv2020Module from 'ajv/dist/2020.js';
2
2
  import formatsPlugin from 'ajv-formats';
3
3
 
4
- import { canonicalizeJcsBytes } from './canonical-jcs.js';
5
- import { utf8Bytes } from './bytes.js';
6
- import { assertUnicodeScalarString, graphemeLength17 } from './unicode17.js';
4
+ import {
5
+ galaAsciiByteLength,
6
+ galaDecisionPhase,
7
+ galaGraphemeLength,
8
+ galaMaxCanonicalBytes,
9
+ galaMaximum,
10
+ galaUtf8ByteLength,
11
+ } from './gala-keywords.js';
12
+ import { assertUnicodeScalarString } from './unicode17.js';
7
13
 
8
14
  const Ajv2020 = /** @type {typeof import('ajv/dist/2020.js').default} */ (
9
15
  /** @type {unknown} */ (Ajv2020Module)
10
16
  );
11
17
 
12
- const SCHEMA_ID_PREFIX = 'urn:gala:schema:';
13
- const METADATA_ID_PREFIX = 'urn:gala:metadata:';
14
- const SCHEMA_ID_SUFFIX = ':2.0.0';
18
+ // Every S0 root's `$id` is immutable at `2.0.0`: contract *content* moves
19
+ // forward in the npm package version (2.0.0 -> 2.12.0 and beyond), never in
20
+ // the `$id`, so the same schema identity keeps resolving across releases.
21
+ // This constant is that policy made explicit and enforced -- see
22
+ // docs/COMPATIBILITY.md.
23
+ const IMMUTABLE_SCHEMA_VERSION = '2.0.0';
24
+
25
+ const SCHEMA_ID_PATTERN = /^urn:gala:(schema|metadata):([a-z0-9-]+):([^:]+)$/u;
26
+
27
+ /**
28
+ * Stable fallback diagnostic code for a rule/keyword pair the committed
29
+ * diagnostic map has no entry for. `validateGalaDocument` is on the request
30
+ * path in both the api and the App; if the compiled schemas and the
31
+ * diagnostic map ever fall out of step (a stale published tarball, a partial
32
+ * upgrade, a schema patch applied without `npm run diagnostics:generate`),
33
+ * an ordinary invalid input must still come back as a rejected result, not
34
+ * an exception thrown out of the consumer's validation call (SCH-H14).
35
+ */
36
+ const UNMAPPED_RULE_CODE = 'SCHEMA_RULE_UNMAPPED';
15
37
 
16
38
  /**
17
39
  * Recover a contract's kebab-case name from its exact immutable schema
@@ -24,10 +46,22 @@ const SCHEMA_ID_SUFFIX = ':2.0.0';
24
46
  * @returns {string} contract name
25
47
  */
26
48
  function contractFromSchemaId(schemaId) {
27
- const prefix = schemaId.startsWith(METADATA_ID_PREFIX)
28
- ? METADATA_ID_PREFIX
29
- : SCHEMA_ID_PREFIX;
30
- return schemaId.slice(prefix.length, -SCHEMA_ID_SUFFIX.length);
49
+ const match = SCHEMA_ID_PATTERN.exec(schemaId);
50
+ if (match === null) {
51
+ throw new Error(
52
+ `Schema identity "${schemaId}" does not match urn:gala:(schema|metadata):<contract>:<version>`,
53
+ );
54
+ }
55
+ const contract = match[2] ?? '';
56
+ const version = match[3] ?? '';
57
+ if (version !== IMMUTABLE_SCHEMA_VERSION) {
58
+ throw new Error(
59
+ `Schema identity "${schemaId}" has version "${version}"; every root's $id is pinned at ` +
60
+ `"${IMMUTABLE_SCHEMA_VERSION}" and never bumps (see docs/COMPATIBILITY.md) -- contract ` +
61
+ `content changes go in the package version instead.`,
62
+ );
63
+ }
64
+ return contract;
31
65
  }
32
66
 
33
67
  /**
@@ -47,10 +81,34 @@ function contractFromSchemaId(schemaId) {
47
81
  * @typedef {{
48
82
  * schemasById: ReadonlyMap<string, Record<string, unknown>>,
49
83
  * validatorsById: ReadonlyMap<string, import('ajv').ValidateFunction>,
50
- * ajv: import('ajv/dist/2020.js').default
84
+ * strictAjv: import('ajv/dist/2020.js').default,
85
+ * legacyAjv: import('ajv/dist/2020.js').default,
86
+ * fragmentAjv: import('ajv/dist/2020.js').default,
87
+ * cardinalityValidators: Map<string, import('ajv').ValidateFunction>
51
88
  * }} Registry
52
89
  */
53
90
 
91
+ /**
92
+ * The callable shape both an `ajv.compile()`-produced validate function and
93
+ * a precompiled standalone one share: callable, with `.errors` populated
94
+ * (Ajv error objects) on rejection. `ajv.compile()`'s richer
95
+ * `import('ajv').ValidateFunction` additionally carries `.schema`/
96
+ * `.schemaEnv`, which a standalone-generated function does not.
97
+ *
98
+ * @typedef {((value: unknown) => boolean) & {errors?: AjvError[] | null}} MinimalValidateFunction
99
+ */
100
+
101
+ /**
102
+ * The subset of `Registry` document-level validation actually needs: just a
103
+ * schema-identity-keyed map of validate functions, precompiled or
104
+ * `ajv.compile()`-produced alike (SCH-C2's `createPrecompiledValidatorSuite`
105
+ * constructs one of these without ever building a real `Registry`).
106
+ *
107
+ * @typedef {{
108
+ * validatorsById: ReadonlyMap<string, MinimalValidateFunction>
109
+ * }} DocumentValidatorRegistry
110
+ */
111
+
54
112
  /** @typedef {import('ajv').ErrorObject} AjvError */
55
113
 
56
114
  /**
@@ -73,108 +131,46 @@ function contractFromSchemaId(schemaId) {
73
131
  */
74
132
 
75
133
  /**
76
- * Test inclusive bounds.
77
- *
78
- * @param {number} value measured value
79
- * @param {{minimum?: number, maximum?: number}} bounds inclusive bounds
80
- * @returns {boolean} whether the value is in range
81
- */
82
- function withinBounds(value, bounds) {
83
- return (
84
- (bounds.minimum === undefined || value >= bounds.minimum) &&
85
- (bounds.maximum === undefined || value <= bounds.maximum)
86
- );
87
- }
88
-
89
- /**
90
- * Register Gala's assertion keywords.
134
+ * Register Gala's assertion keywords, wiring each of `gala-keywords.js`'s
135
+ * pure implementations into a closure-based `ajv.addKeyword` definition.
136
+ * `strict: true` would otherwise refuse to compile a schema using any of
137
+ * these as an unknown keyword (SCH-H1).
91
138
  *
92
139
  * @param {import('ajv/dist/2020.js').default} ajv registry
93
140
  * @returns {void}
94
141
  */
95
142
  function addGalaKeywords(ajv) {
143
+ ajv.addKeyword({
144
+ keyword: 'x-gala-decision-phase',
145
+ validate: galaDecisionPhase,
146
+ });
96
147
  ajv.addKeyword({
97
148
  keyword: 'x-gala-asciiByteLength',
98
149
  schemaType: 'object',
99
150
  type: 'string',
100
- validate: (
101
- /** @type {{minimum?: number, maximum?: number}} */ bounds,
102
- /** @type {string} */ value,
103
- ) =>
104
- [...value].every((character) => character.charCodeAt(0) <= 0x7f) &&
105
- withinBounds(value.length, bounds),
151
+ validate: galaAsciiByteLength,
106
152
  });
107
153
  ajv.addKeyword({
108
154
  keyword: 'x-gala-utf8ByteLength',
109
155
  schemaType: 'object',
110
156
  type: 'string',
111
- validate: (
112
- /** @type {{minimum?: number, maximum?: number}} */ bounds,
113
- /** @type {string} */ value,
114
- ) => {
115
- try {
116
- assertUnicodeScalarString(value);
117
- return withinBounds(utf8Bytes(value).length, bounds);
118
- } catch (error) {
119
- if (
120
- error instanceof TypeError &&
121
- error.message === 'UNICODE_SCALAR_INVALID'
122
- ) {
123
- return false;
124
- }
125
- throw error;
126
- }
127
- },
157
+ validate: galaUtf8ByteLength,
128
158
  });
129
159
  ajv.addKeyword({
130
160
  keyword: 'x-gala-graphemeLength',
131
161
  schemaType: 'object',
132
162
  type: 'string',
133
- validate: (
134
- /** @type {{minimum?: number, maximum?: number}} */ bounds,
135
- /** @type {string} */ value,
136
- ) => {
137
- try {
138
- return withinBounds(graphemeLength17(value), bounds);
139
- } catch (error) {
140
- if (
141
- error instanceof TypeError &&
142
- error.message === 'UNICODE_SCALAR_INVALID'
143
- ) {
144
- return false;
145
- }
146
- throw error;
147
- }
148
- },
163
+ validate: galaGraphemeLength,
149
164
  });
150
165
  ajv.addKeyword({
151
166
  keyword: 'x-gala-maxCanonicalBytes',
152
167
  schemaType: 'number',
153
- validate: (/** @type {number} */ maximum, /** @type {unknown} */ value) => {
154
- try {
155
- return canonicalizeJcsBytes(value).byteLength <= maximum;
156
- } catch {
157
- return false;
158
- }
159
- },
168
+ validate: galaMaxCanonicalBytes,
160
169
  });
161
170
  ajv.addKeyword({
162
171
  keyword: 'x-gala-maximum',
163
172
  schemaType: ['number', 'string'],
164
- validate: (
165
- /** @type {number | string} */ maximum,
166
- /** @type {unknown} */ value,
167
- ) => {
168
- if (typeof value !== 'string' && typeof value !== 'number') return true;
169
- if (typeof value === 'string' && !/^(?:0|[1-9][0-9]*)$/u.test(value)) {
170
- return true;
171
- }
172
- try {
173
- return BigInt(value) <= BigInt(maximum);
174
- } catch {
175
- return true;
176
- }
177
- },
173
+ validate: galaMaximum,
178
174
  });
179
175
  }
180
176
 
@@ -197,17 +193,63 @@ function collectFormats(value, formats) {
197
193
  }
198
194
 
199
195
  /**
200
- * Create the immutable schema and validator registries.
196
+ * Roots whose `allOf`/`if`/`then`/`else` composition Ajv's `strictTypes`/
197
+ * `strictRequired` cannot see across: a conditional branch's `properties`/
198
+ * `required` describes a value or a required member declared by a
199
+ * *sibling* branch in the same `allOf`, not locally, and strict mode flags
200
+ * that as if it were a typo (SCH-H1).
201
+ *
202
+ * This is a **shrinking-only** allowlist: `test/t15-strict-allowlist.test.js`
203
+ * asserts it is a subset of the set recorded there when the allowlist was
204
+ * introduced, so a new root or a reconciled `$defs` shape can be added to
205
+ * this file only by removing an existing entry, never by adding one net
206
+ * new. Every root *not* listed here already compiles clean under full
207
+ * `strictTypes`/`strictRequired` and must stay that way.
208
+ *
209
+ * As of this allowlist's introduction, the 14 listed roots account for 756
210
+ * strict-mode diagnostics (`strictTypes` + `strictRequired` combined); the
211
+ * remaining 6 roots (`appearance`, `event-envelope`,
212
+ * `public-generation-marker`, `public-runtime-origins`, `repository`,
213
+ * `template-composition`) have zero.
214
+ *
215
+ * @type {ReadonlySet<string>}
216
+ */
217
+ export const LEGACY_STRICT_TYPES_ALLOWLIST = new Set([
218
+ 'adapter-capability',
219
+ 'artifact-manifest',
220
+ 'author',
221
+ 'build-input',
222
+ 'build-provenance',
223
+ 'content-frontmatter',
224
+ 'deployment-intent',
225
+ 'deployment-observation',
226
+ 'deployment-receipt',
227
+ 'lock',
228
+ 'navigation',
229
+ 'problem',
230
+ 'publication',
231
+ 'theme-contract',
232
+ ]);
233
+
234
+ /**
235
+ * Build one Ajv instance with Gala's formats and keywords registered.
201
236
  *
202
237
  * @param {readonly Record<string, unknown>[]} schemas schema documents, in registration order
203
238
  * @param {(formatName: string, value: string) => boolean} validateFormat Gala format dispatcher
204
- * @returns {Registry} registries
239
+ * @param {boolean} strictComposition whether `strictTypes`/`strictRequired`
240
+ * are enabled (see `LEGACY_STRICT_TYPES_ALLOWLIST`)
241
+ * @returns {import('ajv/dist/2020.js').default} configured Ajv instance
205
242
  */
206
- function createRegistry(schemas, validateFormat) {
243
+ function buildAjv(schemas, validateFormat, strictComposition) {
207
244
  const formats = new Set();
208
245
  for (const schema of schemas) collectFormats(schema, formats);
209
246
 
210
- const ajv = new Ajv2020({ allErrors: true, strict: false });
247
+ const ajv = new Ajv2020({
248
+ allErrors: true,
249
+ strict: true,
250
+ strictTypes: strictComposition,
251
+ strictRequired: strictComposition,
252
+ });
211
253
  /** @type {import('ajv-formats').default} */ (
212
254
  /** @type {unknown} */ (formatsPlugin)
213
255
  )(ajv);
@@ -221,14 +263,60 @@ function createRegistry(schemas, validateFormat) {
221
263
  });
222
264
  }
223
265
  }
266
+ return ajv;
267
+ }
268
+
269
+ /**
270
+ * Create the immutable schema and validator registries. Every root compiles
271
+ * under full `strict: true` (unknown keywords, unknown formats, tuple and
272
+ * number strictness); roots on `LEGACY_STRICT_TYPES_ALLOWLIST` compile with
273
+ * `strictTypes`/`strictRequired` relaxed, every other root compiles with
274
+ * both enabled (SCH-H1).
275
+ *
276
+ * @param {readonly Record<string, unknown>[]} schemas schema documents, in registration order
277
+ * @param {(formatName: string, value: string) => boolean} validateFormat Gala format dispatcher
278
+ * @returns {Registry} registries
279
+ */
280
+ function createRegistry(schemas, validateFormat) {
281
+ const strictAjv = buildAjv(schemas, validateFormat, true);
282
+ const legacyAjv = buildAjv(schemas, validateFormat, false);
283
+ // Fragment-level lookups (validateFragment's getSchema by $id + JSON
284
+ // Pointer, and validateArrayCardinality's ad-hoc schemas) are internal,
285
+ // Node-only parity/fixture tooling, never the public document-validation
286
+ // path SCH-H1 targets. Compiling an arbitrary JSON-pointer fragment in
287
+ // isolation loses the ancestor `type` context it had inside its parent
288
+ // schema (Ajv's strict "missing type" check only looks at the current
289
+ // schema object's own siblings), so a perfectly fine nested
290
+ // `allOf`/`if`/`then` fragment -- the *same* shape that motivated
291
+ // LEGACY_STRICT_TYPES_ALLOWLIST, and reachable from shared `$defs` used by
292
+ // roots outside that allowlist too (`colorMode`'s `if` branches, for one)
293
+ // -- throws when fragment-compiled even though the whole-document compile
294
+ // never does. This instance is always relaxed, independent of which
295
+ // document-level Ajv a root's real validator was compiled on.
296
+ const fragmentAjv = buildAjv(schemas, validateFormat, false);
297
+ for (const schema of schemas) {
298
+ fragmentAjv.addSchema(schema, String(schema.$id));
299
+ }
300
+
224
301
  const schemasById = new Map();
225
302
  const validatorsById = new Map();
226
303
  for (const schema of schemas) {
227
304
  const schemaId = String(schema.$id);
305
+ const contract = contractFromSchemaId(schemaId);
306
+ const ajv = LEGACY_STRICT_TYPES_ALLOWLIST.has(contract)
307
+ ? legacyAjv
308
+ : strictAjv;
228
309
  schemasById.set(schemaId, schema);
229
310
  validatorsById.set(schemaId, ajv.compile(schema));
230
311
  }
231
- return { schemasById, validatorsById, ajv };
312
+ return {
313
+ schemasById,
314
+ validatorsById,
315
+ strictAjv,
316
+ legacyAjv,
317
+ fragmentAjv,
318
+ cardinalityValidators: new Map(),
319
+ };
232
320
  }
233
321
 
234
322
  /**
@@ -389,12 +477,8 @@ function normalizeError(diagnosticMap, contract, basePointer, value, error) {
389
477
  const rule = ruleIdentity(contract, basePointer, error);
390
478
  const mapping = diagnosticMap.rules[rule];
391
479
  const keyword = normalizedKeyword(error.keyword);
392
- const code = mapping?.code ?? diagnosticMap.keywords[keyword];
393
- if (code === undefined) {
394
- throw new Error(
395
- `Diagnostic rule ${rule} and keyword ${keyword} are unmapped`,
396
- );
397
- }
480
+ const code =
481
+ mapping?.code ?? diagnosticMap.keywords[keyword] ?? UNMAPPED_RULE_CODE;
398
482
  const catalog = diagnosticMap.codes[code];
399
483
  if (!catalog) throw new Error(`Diagnostic code ${code} is not cataloged`);
400
484
  const property =
@@ -526,7 +610,7 @@ function unicodeScalarDiagnostic(diagnosticMap, value, instancePointer) {
526
610
  /**
527
611
  * Validate one complete Gala document against an exact registered schema identity.
528
612
  *
529
- * @param {Registry} registry compiled schema registry
613
+ * @param {DocumentValidatorRegistry} registry validators by schema identity
530
614
  * @param {DiagnosticMap} diagnosticMap shared diagnostic normalization map
531
615
  * @param {string} schemaId exact immutable schema identity
532
616
  * @param {unknown} value document value
@@ -588,7 +672,9 @@ function validateFragment(
588
672
  schemaPointer,
589
673
  value,
590
674
  ) {
591
- const validator = registry.ajv.getSchema(`${schemaId}${schemaPointer}`);
675
+ const validator = registry.fragmentAjv.getSchema(
676
+ `${schemaId}${schemaPointer}`,
677
+ );
592
678
  if (!validator) {
593
679
  throw new Error(
594
680
  `Registered schema fragment is absent: ${schemaId}${schemaPointer}`,
@@ -611,14 +697,11 @@ function validateFragment(
611
697
  errors.map((error) => {
612
698
  const rule = ruleIdentity(contract, schemaPointer, error);
613
699
  const keyword = normalizedKeyword(error.keyword);
614
- const code =
615
- diagnosticMap.rules[rule]?.code ?? diagnosticMap.keywords[keyword];
616
- if (code === undefined) {
617
- throw new Error(
618
- `Diagnostic rule ${rule} and keyword ${keyword} are unmapped`,
619
- );
620
- }
621
- return code;
700
+ return (
701
+ diagnosticMap.rules[rule]?.code ??
702
+ diagnosticMap.keywords[keyword] ??
703
+ UNMAPPED_RULE_CODE
704
+ );
622
705
  }),
623
706
  ),
624
707
  ].sort(),
@@ -651,6 +734,11 @@ function normalizedInlineResult(diagnosticMap, keywords) {
651
734
  *
652
735
  * Item schemas are validated separately by the parity harness so compact
653
736
  * recipes never allocate hundreds of thousands of complex object witnesses.
737
+ * The compiled validator for a given {minItems, maxItems, uniqueItems} shape
738
+ * is cached on the registry (SCH-M7): only a handful of distinct shapes
739
+ * exist across the fixture corpus, but this runs once per cardinality
740
+ * fixture case, so compiling on every call would recompile the same handful
741
+ * of schemas thousands of times over one parity run.
654
742
  *
655
743
  * @param {Registry} registry compiled schema registry
656
744
  * @param {DiagnosticMap} diagnosticMap shared diagnostic normalization map
@@ -666,7 +754,19 @@ function validateArrayCardinality(registry, diagnosticMap, schema, length) {
666
754
  ...(schema.maxItems === undefined ? {} : { maxItems: schema.maxItems }),
667
755
  ...(schema.uniqueItems === true ? { uniqueItems: true } : {}),
668
756
  };
669
- const validator = registry.ajv.compile(cardinalitySchema);
757
+ // Only a handful of distinct {minItems, maxItems, uniqueItems} shapes
758
+ // exist across the whole fixture corpus, but this is called once per
759
+ // cardinality fixture case (thousands, across a full parity run).
760
+ // Compiling once per distinct shape and reusing the compiled validator
761
+ // (rather than ajv.compile()-ing the same shape repeatedly) is what
762
+ // SCH-M7 asks for; the cache lives on the registry so it is scoped to
763
+ // one createValidatorSuite call, not process-global.
764
+ const cacheKey = JSON.stringify(cardinalitySchema);
765
+ let validator = registry.cardinalityValidators.get(cacheKey);
766
+ if (validator === undefined) {
767
+ validator = registry.fragmentAjv.compile(cardinalitySchema);
768
+ registry.cardinalityValidators.set(cacheKey, validator);
769
+ }
670
770
  const values = schema.uniqueItems
671
771
  ? Array.from({ length }, (_, index) => index)
672
772
  : Array.from({ length }, () => null);
@@ -726,3 +826,39 @@ export function createValidatorSuite({
726
826
  validateArrayCardinality(registry, diagnosticMap, schema, length),
727
827
  });
728
828
  }
829
+
830
+ /**
831
+ * Bind a document validator surface to an already-compiled set of Ajv
832
+ * validate functions instead of raw schemas -- no `ajv.compile` and
833
+ * therefore no `new Function` in this path.
834
+ *
835
+ * This is what `.` and `./runtime-origins` use (SCH-C2): their compiled
836
+ * validators come from `codegen/generate-contracts.ts`'s browser standalone
837
+ * core, generated ahead of time with real Gala format and `x-gala-*`
838
+ * keyword semantics baked into the compiled source. Every Ajv validate
839
+ * function -- precompiled or `ajv.compile()`-produced -- has the same
840
+ * callable shape (`fn(value)` returning a boolean, `fn.errors` populated on
841
+ * rejection in the same shape), so the exact same diagnostic normalization
842
+ * (`validateDocument`) applies unchanged; only fragment- and cardinality-
843
+ * level validation are unavailable here, because they runtime-compile
844
+ * schema fragments the precompiled core does not carry -- Node-only fixture
845
+ * and parity tooling keeps using `createValidatorSuite` for those.
846
+ *
847
+ * @param {{
848
+ * validators: Record<string, MinimalValidateFunction>,
849
+ * diagnosticMap: DiagnosticMap
850
+ * }} dependencies precompiled validators by schema identity, and the shared
851
+ * diagnostic map
852
+ * @returns {{
853
+ * schemaIds: readonly string[],
854
+ * validateDocument: (schemaId: string, value: unknown) => GalaValidationResult
855
+ * }} bound validator surface
856
+ */
857
+ export function createPrecompiledValidatorSuite({ validators, diagnosticMap }) {
858
+ const registry = { validatorsById: new Map(Object.entries(validators)) };
859
+ return Object.freeze({
860
+ schemaIds: Object.freeze([...registry.validatorsById.keys()].sort()),
861
+ validateDocument: (schemaId, value) =>
862
+ validateDocument(registry, diagnosticMap, schemaId, value),
863
+ });
864
+ }
@@ -1,16 +1,20 @@
1
1
  /**
2
2
  * Narrow browser entry point for the public runtime-origins contract.
3
3
  *
4
- * The package root (`.`) binds all 19 contracts, which transitively pins the
5
- * SPDX licence list, the Unicode 17 tables, the IANA language subtag registry
6
- * and the complete 7,804-rule diagnostic map — around 5.3 MB of source data
7
- * that a browser bundle pays for in full. A client that only reads and writes
8
- * `urn:gala:schema:public-runtime-origins:2.0.0` needs none of the SPDX
9
- * material and none of the other eighteen contracts' rules, so this entry
10
- * point binds exactly that one schema and exactly that one contract's slice of
11
- * the diagnostic map, through the same validator core and the same format
12
- * semantics as the root export. Identical inputs therefore produce identical
13
- * diagnostics; the only difference is what is absent.
4
+ * The package root (`.`) binds all twenty contracts, which transitively
5
+ * pins the SPDX licence list, the Unicode 17 tables, the IANA language
6
+ * subtag registry and the complete 7,804-rule diagnostic map — around 5.3 MB
7
+ * of source data that a browser bundle pays for in full. A client that only
8
+ * reads and writes `urn:gala:schema:public-runtime-origins:2.0.0` needs none
9
+ * of the SPDX material and none of the other nineteen contracts' rules, so
10
+ * this entry point binds exactly that one schema and exactly that one
11
+ * contract's slice of the diagnostic map, through the same validator core
12
+ * and the same format semantics as the root export. Identical inputs
13
+ * therefore produce identical diagnostics; the only difference is what is
14
+ * absent.
15
+ *
16
+ * Like the `.` export, this binds a precompiled standalone validator
17
+ * (SCH-C2): no runtime `ajv.compile()` happens at import.
14
18
  *
15
19
  * The `.` export is unchanged and remains the general-purpose surface.
16
20
  *
@@ -18,19 +22,15 @@
18
22
  */
19
23
 
20
24
  import diagnosticMap from '../diagnostics/diagnostic-map.public-runtime-origins.json' with { type: 'json' };
21
- import publicRuntimeOriginsSchema from '../schemas/public-runtime-origins.schema.json' with { type: 'json' };
22
- import { validateGalaFormatCore } from './internal/format-validators-core.js';
23
- import { createValidatorSuite } from './internal/validator-core.js';
25
+ import { SCHEMA_VALIDATORS } from '../generated/browser/runtime-origins-validator-core.mjs';
26
+ import { createPrecompiledValidatorSuite } from './internal/validator-core.js';
24
27
 
25
- const SUITE = createValidatorSuite({
26
- schemas: [
27
- /** @type {Record<string, unknown>} */ (publicRuntimeOriginsSchema),
28
- ],
28
+ const SUITE = createPrecompiledValidatorSuite({
29
+ validators: SCHEMA_VALIDATORS,
29
30
  diagnosticMap:
30
31
  /** @type {import('./internal/validator-core.js').DiagnosticMap} */ (
31
32
  diagnosticMap
32
33
  ),
33
- validateFormat: validateGalaFormatCore,
34
34
  });
35
35
 
36
36
  /** The one schema identity this narrow entry point accepts. */
package/types/index.d.ts CHANGED
@@ -3,8 +3,8 @@
3
3
  *
4
4
  * @param {string} schemaId exact immutable schema identity
5
5
  * @param {unknown} value document value
6
- * @returns {import('./internal/schema-validator.js').GalaValidationResult} validation result
6
+ * @returns {import('./internal/browser-schema-validator.js').GalaValidationResult} validation result
7
7
  */
8
- export function validateGalaDocument(schemaId: string, value: unknown): import("./internal/schema-validator.js").GalaValidationResult;
8
+ export function validateGalaDocument(schemaId: string, value: unknown): import("./internal/browser-schema-validator.js").GalaValidationResult;
9
9
  /** Exact immutable identities accepted by the validator registry. */
10
10
  export const GALA_SCHEMA_IDS: readonly string[];
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Validate one complete Gala document and return stable diagnostics.
3
+ *
4
+ * @param {string} schemaId exact immutable schema identity
5
+ * @param {unknown} value document value
6
+ * @returns {GalaValidationResult} validation result
7
+ */
8
+ export function validateRegisteredDocument(schemaId: string, value: unknown): GalaValidationResult;
9
+ /**
10
+ * @typedef {import('./validator-core.js').GalaDiagnostic} GalaDiagnostic
11
+ * @typedef {import('./validator-core.js').GalaValidationResult} GalaValidationResult
12
+ */
13
+ /** Exact immutable identities accepted by the public registry. */
14
+ export const REGISTERED_SCHEMA_IDS: readonly string[];
15
+ export type GalaDiagnostic = import("./validator-core.js").GalaDiagnostic;
16
+ export type GalaValidationResult = import("./validator-core.js").GalaValidationResult;
@@ -2,7 +2,7 @@
2
2
  * Validate one custom Gala string format for fixture generation and audits.
3
3
  * Unknown format names fail closed.
4
4
  *
5
- * The complete 19-contract surface needs `gala-spdx-expression`, so this
5
+ * The complete 20-contract surface needs `gala-spdx-expression`, so this
6
6
  * module adds that one branch on top of the browser-light core dispatcher and
7
7
  * delegates everything else unchanged. Importing this module pulls in the
8
8
  * pinned SPDX licence list; importing the core does not.
@@ -0,0 +1,68 @@
1
+ /**
2
+ * `x-gala-asciiByteLength`: every scalar is ASCII and the byte (== code
3
+ * unit, for ASCII) length is within bounds.
4
+ *
5
+ * @param {{minimum?: number, maximum?: number}} bounds declared bounds
6
+ * @param {string} value candidate string
7
+ * @returns {boolean} whether the value satisfies the keyword
8
+ */
9
+ export function galaAsciiByteLength(bounds: {
10
+ minimum?: number;
11
+ maximum?: number;
12
+ }, value: string): boolean;
13
+ /**
14
+ * `x-gala-utf8ByteLength`: the value is Unicode-scalar-clean and its UTF-8
15
+ * byte length is within bounds.
16
+ *
17
+ * @param {{minimum?: number, maximum?: number}} bounds declared bounds
18
+ * @param {string} value candidate string
19
+ * @returns {boolean} whether the value satisfies the keyword
20
+ */
21
+ export function galaUtf8ByteLength(bounds: {
22
+ minimum?: number;
23
+ maximum?: number;
24
+ }, value: string): boolean;
25
+ /**
26
+ * `x-gala-graphemeLength`: the UAX #29 extended grapheme cluster count is
27
+ * within bounds.
28
+ *
29
+ * @param {{minimum?: number, maximum?: number}} bounds declared bounds
30
+ * @param {string} value candidate string
31
+ * @returns {boolean} whether the value satisfies the keyword
32
+ */
33
+ export function galaGraphemeLength(bounds: {
34
+ minimum?: number;
35
+ maximum?: number;
36
+ }, value: string): boolean;
37
+ /**
38
+ * `x-gala-maxCanonicalBytes`: the RFC 8785 JCS-canonicalized byte length of
39
+ * the whole value does not exceed the declared maximum.
40
+ *
41
+ * @param {number} maximum declared inclusive maximum
42
+ * @param {unknown} value candidate value
43
+ * @returns {boolean} whether the value satisfies the keyword
44
+ */
45
+ export function galaMaxCanonicalBytes(maximum: number, value: unknown): boolean;
46
+ /**
47
+ * `x-gala-maximum`: the value, read as a non-negative decimal integer, does
48
+ * not exceed the declared maximum.
49
+ *
50
+ * Fails closed (SCH-H13): a range assertion in a package whose README
51
+ * describes it as fail-closed must reject what it cannot evaluate rather
52
+ * than defer to a pattern/format keyword that may not be present on every
53
+ * `$def` using this keyword (see SCH-C3).
54
+ *
55
+ * @param {number | string} maximum declared inclusive maximum
56
+ * @param {unknown} value candidate value
57
+ * @returns {boolean} whether the value satisfies the keyword
58
+ */
59
+ export function galaMaximum(maximum: number | string, value: unknown): boolean;
60
+ /**
61
+ * `x-gala-decision-phase`: pure annotation, not an assertion. It marks
62
+ * which DEC-097 lifecycle phase (issuance vs. deploy) a property belongs to
63
+ * for digest scoping (see LOCAL-62 in README.md) and carries no independent
64
+ * validation rule of its own.
65
+ *
66
+ * @returns {true} always valid
67
+ */
68
+ export function galaDecisionPhase(): true;