diff --git a/public/_headers b/public/_headers index c6bfa1430..49ba0cc8d 100644 --- a/public/_headers +++ b/public/_headers @@ -179,6 +179,11 @@ Access-Control-Allow-Origin: * Cache-Control: public, max-age=86400 +/schemas/evidence/oid4vp-runtime/oid4vp-runtime.v1alpha1.schema.json + Content-Type: application/schema+json; charset=utf-8 + Access-Control-Allow-Origin: * + Cache-Control: public, max-age=86400 + /schemas/evidence/project/project.v1alpha1.schema.json Content-Type: application/schema+json; charset=utf-8 Access-Control-Allow-Origin: * diff --git a/public/artifacts/sha256/05ca00c30b9126084ea5d52e17db5002f7afb46e9aceac121fe42489afc5caa1.json b/public/artifacts/sha256/05ca00c30b9126084ea5d52e17db5002f7afb46e9aceac121fe42489afc5caa1.json new file mode 100644 index 000000000..d4bd65dbf --- /dev/null +++ b/public/artifacts/sha256/05ca00c30b9126084ea5d52e17db5002f7afb46e9aceac121fe42489afc5caa1.json @@ -0,0 +1,83 @@ +{ + "$defs": { + "ExternalId": { + "description": "An identifier another system issues, written exactly as its issuer gives it.", + "maxLength": 512, + "minLength": 1, + "pattern": "^[^\\u0000-\\u001F\\u007F-\\u009F]+$", + "type": "string" + }, + "SampleExpectation": { + "description": "What one sample is meant to give.", + "oneOf": [ + { + "additionalProperties": false, + "description": "The mapping accepts the sample.", + "properties": { + "type": { + "const": "accepted", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "The mapping refuses the sample. With a `target`, a refusal must name\nthat target field, in the mapping's target syntax; without one, any\nrefusal of the mapping will do.", + "properties": { + "target": { + "description": "An assignment's `target`, written in the mapping's target\nsyntax (dotted names or quoted keys).", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "type": { + "const": "refused", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + } + ] + } + }, + "$id": "https://id.registrystack.org/schemas/adapter/preview-expectations/preview-expectations.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "description": "The authored preview expectations.", + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/adapter/preview-expectations/v1alpha1", + "description": "The format envelope version.", + "type": "string" + }, + "kind": { + "const": "AdapterPreviewExpectations", + "description": "The format kind: `AdapterPreviewExpectations`.", + "type": "string" + }, + "samples": { + "additionalProperties": { + "$ref": "#/$defs/SampleExpectation" + }, + "description": "The expected result of each sample, keyed by the sample's file name\nwithout its extension.", + "propertyNames": { + "$ref": "#/$defs/ExternalId" + }, + "type": "object" + } + }, + "required": [ + "apiVersion", + "kind", + "samples" + ], + "title": "Registry Adapter preview expectations", + "type": "object" +} diff --git a/public/artifacts/sha256/0f8f2332533c8577677e7a53f62a0ac400c08233f13ced03e168331d8058c2c8.json b/public/artifacts/sha256/0f8f2332533c8577677e7a53f62a0ac400c08233f13ced03e168331d8058c2c8.json new file mode 100644 index 000000000..69519be93 --- /dev/null +++ b/public/artifacts/sha256/0f8f2332533c8577677e7a53f62a0ac400c08233f13ced03e168331d8058c2c8.json @@ -0,0 +1,470 @@ +{ + "$defs": { + "CoequalCase": { + "additionalProperties": false, + "properties": { + "audience": { + "type": "string" + }, + "companionBundle": { + "type": "string" + }, + "derivationRuns": { + "type": "boolean" + }, + "derivationSelectorInputs": { + "x-registry-foreign": "json" + }, + "expected": { + "type": "string" + }, + "expectedFacts": { + "description": "Exact final facts from the selected pack route, before derivation.", + "x-registry-foreign": "json" + }, + "expectedLookup": { + "type": "string" + }, + "expectedPublicProblem": { + "type": "string" + }, + "expectedSubjectRoles": { + "items": { + "type": "string" + }, + "type": "array" + }, + "expectedValue": { + "x-registry-foreign": "json" + }, + "expectedValues": { + "x-registry-foreign": "json" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "injectedDerivation": { + "x-registry-foreign": "json" + }, + "legalLocalDate": { + "type": "string" + }, + "observedAt": { + "type": "string" + }, + "purpose": { + "type": "string" + }, + "selectorOverrides": { + "x-registry-foreign": "json" + }, + "selectors": { + "x-registry-foreign": "json" + }, + "signedSuccess": { + "type": "boolean" + }, + "source": { + "x-registry-foreign": "json" + }, + "sourceFailure": { + "type": "string" + }, + "sources": { + "x-registry-foreign": "json" + }, + "subjects": { + "x-registry-foreign": "json" + }, + "verifiedTokenClaims": { + "x-registry-foreign": "json" + } + }, + "required": [ + "id" + ], + "type": "object" + }, + "CoequalCommon": { + "additionalProperties": false, + "properties": { + "audience": { + "type": "string" + }, + "derivationSelectorInputs": { + "x-registry-foreign": "json" + }, + "expectedRequestParts": { + "x-registry-foreign": "json" + }, + "expectedTransport": { + "x-registry-foreign": "json" + }, + "legalLocalDate": { + "type": "string" + }, + "observedAt": { + "type": "string" + }, + "purpose": { + "type": "string" + }, + "selector": { + "x-registry-foreign": "json" + }, + "selectors": { + "x-registry-foreign": "json" + }, + "subjects": { + "x-registry-foreign": "json" + }, + "verifiedTokenClaims": { + "x-registry-foreign": "json" + } + }, + "type": "object" + }, + "CoequalFixture": { + "additionalProperties": false, + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/evidence/fixture/v1alpha1" + }, + "cases": { + "items": { + "$ref": "#/$defs/CoequalCase" + }, + "maxItems": 256, + "minItems": 1, + "type": "array" + }, + "coequalAcceptanceDefinition": { + "const": true, + "type": "boolean" + }, + "common": { + "$ref": "#/$defs/CoequalCommon" + }, + "kind": { + "const": "EvidenceFixture" + }, + "privacyExpectation": { + "$ref": "#/$defs/CoequalPrivacy" + }, + "providerContract": { + "x-registry-foreign": "json" + }, + "syntheticOnly": { + "const": true, + "type": "boolean" + } + }, + "required": [ + "syntheticOnly", + "coequalAcceptanceDefinition", + "cases", + "privacyExpectation", + "apiVersion", + "kind" + ], + "type": "object" + }, + "CoequalPrivacy": { + "additionalProperties": false, + "properties": { + "diagnosticsExclude": { + "items": { + "type": "string" + }, + "type": "array" + }, + "evidenceContains": { + "items": { + "type": "string" + }, + "type": "array" + }, + "evidenceExcludes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "memberInputs": { + "type": "string" + }, + "minimizationClaim": { + "type": "string" + }, + "subjectBindings": { + "type": "string" + } + }, + "type": "object" + }, + "LocalId": { + "description": "A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.", + "pattern": "^[a-z][a-z0-9_-]{0,63}$", + "type": "string" + }, + "ReferenceCase": { + "additionalProperties": false, + "properties": { + "acquisition": { + "description": "Exact recorded sends and responses, checked by the pack replay host.", + "x-registry-foreign": "json" + }, + "audience": { + "type": "string" + }, + "bundleMutation": { + "type": "string" + }, + "declaredUnresolved": { + "const": true, + "type": "boolean" + }, + "derivationMutation": { + "type": "string" + }, + "derivationParameterMutation": { + "x-registry-foreign": "json" + }, + "expected": { + "$ref": "#/$defs/ReferenceExpected" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "observedAt": { + "type": "string" + }, + "purpose": { + "type": "string" + }, + "requestMutation": { + "type": "string" + }, + "response": { + "x-registry-foreign": "json" + }, + "responses": { + "x-registry-foreign": "json" + }, + "selectorOverrides": { + "x-registry-foreign": "json" + }, + "selectors": { + "x-registry-foreign": "json" + }, + "sourceFailure": { + "type": "string" + }, + "statementMutation": { + "type": "string" + } + }, + "required": [ + "id" + ], + "type": "object" + }, + "ReferenceCommon": { + "additionalProperties": false, + "properties": { + "audience": { + "type": "string" + }, + "derivationSelectorInputs": { + "x-registry-foreign": "json" + }, + "expectedFetchRequestParts": { + "x-registry-foreign": "json" + }, + "expectedFetchTransport": { + "x-registry-foreign": "json" + }, + "expectedRequestParts": { + "x-registry-foreign": "json" + }, + "expectedTransport": { + "x-registry-foreign": "json" + }, + "extract": { + "type": "string" + }, + "observedAt": { + "type": "string" + }, + "purpose": { + "type": "string" + }, + "selectors": { + "x-registry-foreign": "json" + }, + "verifiedTokenClaims": { + "x-registry-foreign": "json" + } + }, + "type": "object" + }, + "ReferenceExpected": { + "additionalProperties": false, + "properties": { + "bundle": { + "type": "string" + }, + "derivationRuns": { + "type": "boolean" + }, + "entityReferenceCount": { + "format": "uint64", + "maximum": 64, + "minimum": 0, + "type": "integer" + }, + "error": { + "type": "string" + }, + "expectedTransport": { + "x-registry-foreign": "json" + }, + "facts": { + "x-registry-foreign": "json" + }, + "lookup": { + "type": "string" + }, + "outputGate": { + "type": "string" + }, + "publicProblem": { + "type": "string" + }, + "rawReferencesDisclosed": { + "type": "boolean" + }, + "rejectedBefore": { + "type": "string" + }, + "signed": { + "type": "boolean" + }, + "sourceRequestCount": { + "description": "Expected data sends exclude OAuth work and cannot exceed the offline budget.", + "format": "uint64", + "maximum": 5, + "minimum": 0, + "type": "integer" + }, + "value": { + "x-registry-foreign": "json" + }, + "values": { + "x-registry-foreign": "json" + } + }, + "type": "object" + }, + "ReferenceFixture": { + "additionalProperties": false, + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/evidence/fixture/v1alpha1" + }, + "cases": { + "items": { + "$ref": "#/$defs/ReferenceCase" + }, + "maxItems": 256, + "minItems": 1, + "type": "array" + }, + "common": { + "$ref": "#/$defs/ReferenceCommon" + }, + "kind": { + "const": "EvidenceFixture" + }, + "privacyExpectation": { + "$ref": "#/$defs/ReferencePrivacy" + }, + "syntheticOnly": { + "const": true, + "type": "boolean" + } + }, + "required": [ + "syntheticOnly", + "cases", + "common", + "privacyExpectation", + "apiVersion", + "kind" + ], + "type": "object" + }, + "ReferencePrivacy": { + "additionalProperties": false, + "properties": { + "diagnosticsExclude": { + "items": { + "type": "string" + }, + "type": "array" + }, + "evidenceContains": { + "items": { + "type": "string" + }, + "type": "array" + }, + "evidenceExcludes": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "$id": "https://id.registrystack.org/schemas/evidence/fixture/fixture.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "else": { + "$ref": "#/$defs/ReferenceFixture" + }, + "if": { + "properties": { + "coequalAcceptanceDefinition": { + "const": true + } + }, + "required": [ + "coequalAcceptanceDefinition" + ] + }, + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/evidence/fixture/v1alpha1" + }, + "cases": { + "maxItems": 256, + "minItems": 1, + "type": "array" + }, + "kind": { + "const": "EvidenceFixture" + } + }, + "required": [ + "apiVersion", + "kind" + ], + "then": { + "$ref": "#/$defs/CoequalFixture" + }, + "title": "Evidence fixture set", + "type": "object", + "unevaluatedProperties": false +} diff --git a/public/artifacts/sha256/1a713af021f69a27c5c7f58b22464cd227972173f9935b2fc3a0a48eda51e6f5.json b/public/artifacts/sha256/1a713af021f69a27c5c7f58b22464cd227972173f9935b2fc3a0a48eda51e6f5.json new file mode 100644 index 000000000..47724b041 --- /dev/null +++ b/public/artifacts/sha256/1a713af021f69a27c5c7f58b22464cd227972173f9935b2fc3a0a48eda51e6f5.json @@ -0,0 +1,209 @@ +{ + "$defs": { + "Assignment": { + "additionalProperties": false, + "description": "One target property and where its value comes from: exactly one of\n`from` and `constant`.", + "properties": { + "constant": { + "$ref": "#/$defs/MappingConstant", + "description": "A constant value instead of a selector." + }, + "convert": { + "$ref": "#/$defs/Conversion", + "description": "The conversion applied to a read value." + }, + "from": { + "description": "The selector read from the source root: dotted names or \"quoted\"\nkeys, each optionally filtered with `[key = \"value\"]`. A key that\nholds a dot is quoted, for example `'\"household.household_size\"'`.\nA quoted key or value takes any character except a control\ncharacter, a text-direction control or a line or paragraph separator;\n`\\\"` and `\\\\` are its only escapes. Keys compare byte for\nbyte, with no Unicode normalisation.", + "type": "string" + }, + "target": { + "description": "The dotted path of the target property.", + "type": "string" + }, + "whenMissing": { + "$ref": "#/$defs/WhenMissing", + "description": "Whether an absent value fails or leaves the property out." + } + }, + "required": [ + "target" + ], + "type": "object" + }, + "Conversion": { + "description": "The value conversion applied after a value is read.", + "oneOf": [ + { + "const": "none", + "description": "The value is copied as read.", + "type": "string" + }, + { + "const": "integer", + "description": "An integer, or a string of digits, becomes an integer.", + "type": "string" + }, + { + "const": "text", + "description": "A string, or an integer, becomes a string.", + "type": "string" + }, + { + "const": "date", + "description": "A real calendar date written `YYYY-MM-DD` passes unchanged.", + "type": "string" + } + ] + }, + "IngestionMode": { + "description": "How an ingestion mapping hands its item to the destination.", + "oneOf": [ + { + "const": "proposal", + "description": "A Proposal Action start input plus an empty submit body.", + "type": "string" + }, + { + "const": "immediate", + "description": "The bare item.", + "type": "string" + } + ] + }, + "LocalId": { + "description": "A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.", + "pattern": "^[a-z][a-z0-9_-]{0,63}$", + "type": "string" + }, + "MappingConstant": { + "anyOf": [ + { + "type": "boolean" + }, + { + "format": "int64", + "maximum": 9223372036854775807, + "minimum": -9223372036854775808, + "type": "integer" + }, + { + "type": "string" + } + ], + "description": "A closed scalar constant. It is read by node kind (boolean, integer,\ntext) through a hand-written visitor, never a derived untagged union." + }, + "MappingHeader": { + "additionalProperties": false, + "description": "The mapping's identity, target, and generated-script location. Every path\nresolves against the model file's directory.", + "properties": { + "entrypoint": { + "description": "The generated entrypoint's Rhai identifier; it must not start with\n`mapping_`.", + "type": "string" + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The mapping identifier." + }, + "ingestionMode": { + "$ref": "#/$defs/IngestionMode", + "description": "Required exactly when `target` is `ingestion`." + }, + "script": { + "description": "A clean relative path to the generated Rhai script.", + "type": "string" + }, + "target": { + "$ref": "#/$defs/MappingTarget", + "description": "The kind of value the generated script produces." + }, + "targetSchema": { + "description": "A clean relative path to the target JSON Schema.", + "type": "string" + } + }, + "required": [ + "id", + "target", + "targetSchema", + "script", + "entrypoint" + ], + "type": "object" + }, + "MappingTarget": { + "description": "What a mapping produces, which fixes the entrypoint signature.", + "oneOf": [ + { + "const": "consultation", + "description": "A Consultation public view: `fn (source)`.", + "type": "string" + }, + { + "const": "evidence", + "description": "An Evidence projection: `fn (source)`.", + "type": "string" + }, + { + "const": "ingestion", + "description": "A governed-ingestion item: `fn _input(source)` plus the\n`fn (exchange)` wrapper.", + "type": "string" + }, + { + "const": "source-request", + "description": "An upstream request body: `fn (exchange)`.", + "type": "string" + } + ] + }, + "WhenMissing": { + "description": "What happens when the source value is absent.", + "oneOf": [ + { + "const": "fail", + "description": "The script refuses with `mapping.missing`.", + "type": "string" + }, + { + "const": "omit", + "description": "The target property is left out; only for non-required targets.", + "type": "string" + } + ] + } + }, + "$id": "https://id.registrystack.org/schemas/adapter/mapping/mapping.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "description": "The authored mapping model.", + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/adapter/mapping/v1alpha1", + "description": "The format envelope version.", + "type": "string" + }, + "assignments": { + "description": "The ordered field assignments.", + "items": { + "$ref": "#/$defs/Assignment" + }, + "type": "array" + }, + "kind": { + "const": "AdapterMapping", + "description": "The format kind: `AdapterMapping`.", + "type": "string" + }, + "mapping": { + "$ref": "#/$defs/MappingHeader", + "description": "What the mapping targets and where its generated script lives." + } + }, + "required": [ + "apiVersion", + "kind", + "mapping", + "assignments" + ], + "title": "Registry Adapter mapping model", + "type": "object" +} diff --git a/public/artifacts/sha256/20b5224ee58a88324552ba4eef77132273ac2b6609e178db001dc57dd1d63077.json b/public/artifacts/sha256/20b5224ee58a88324552ba4eef77132273ac2b6609e178db001dc57dd1d63077.json new file mode 100644 index 000000000..bd24d1e2f --- /dev/null +++ b/public/artifacts/sha256/20b5224ee58a88324552ba4eef77132273ac2b6609e178db001dc57dd1d63077.json @@ -0,0 +1,344 @@ +{ + "$defs": { + "BrowserApp": { + "additionalProperties": false, + "description": "A browser application: an authorization-code client with PKCE.", + "properties": { + "clientSecretRef": { + "$ref": "#/$defs/SecretReference", + "allOf": [ + { + "pattern": "^secret:env/[A-Z][A-Z0-9_]{0,127}$" + } + ] + }, + "grants": { + "items": { + "$ref": "#/$defs/Grant" + }, + "maxItems": 16, + "minItems": 1, + "type": "array" + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The OAuth client id." + }, + "logoUrl": { + "anyOf": [ + { + "$ref": "#/$defs/Url" + }, + { + "type": "null" + } + ], + "description": "A public logo URL, shown on the sign-in page; omitted shows none." + }, + "origin": { + "type": "string" + }, + "product": { + "description": "The `product` whose audience the application's tokens carry.", + "type": "string" + }, + "redirectUris": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "tokenAttributes": { + "description": "Claims the application's tokens carry from the signed-in user.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "userTypes": { + "description": "Extension user types (ids of `userTypes`) that may sign in, beside\nthe generated `RegistryPerson`.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "id", + "clientSecretRef", + "origin", + "redirectUris", + "product", + "tokenAttributes", + "grants" + ], + "type": "object" + }, + "ClaimValue": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "A static claim value." + }, + "Client": { + "additionalProperties": false, + "description": "A machine client: authenticates with `private_key_jwt` against its own\npublic key set.", + "properties": { + "claims": { + "additionalProperties": { + "$ref": "#/$defs/ClaimValue" + }, + "description": "Static claims the issuer puts in the client's tokens; each name and\ntype must be one a product declares.", + "propertyNames": { + "$ref": "#/$defs/ExternalId", + "allOf": [ + { + "pattern": "^[A-Za-z0-9_]{1,128}$" + } + ] + }, + "type": "object" + }, + "grants": { + "items": { + "$ref": "#/$defs/Grant" + }, + "maxItems": 16, + "minItems": 1, + "type": "array" + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The OAuth client id." + }, + "publicJwksFile": { + "description": "A JWKS file holding public keys only, relative to this file.", + "type": "string" + } + }, + "required": [ + "id", + "publicJwksFile", + "grants" + ], + "type": "object" + }, + "ExternalId": { + "description": "An identifier another system issues, written exactly as its issuer gives it.", + "maxLength": 512, + "minLength": 1, + "pattern": "^[^\\u0000-\\u001F\\u007F-\\u009F]+$", + "type": "string" + }, + "Grant": { + "additionalProperties": false, + "description": "Access profiles of one product, granted to one principal.", + "properties": { + "accessProfiles": { + "description": "Ids of that product's access profiles.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "product": { + "description": "The `product` of a facts document.", + "type": "string" + } + }, + "required": [ + "product", + "accessProfiles" + ], + "type": "object" + }, + "LocalId": { + "description": "A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.", + "pattern": "^[a-z][a-z0-9_-]{0,63}$", + "type": "string" + }, + "OrganizationUnit": { + "additionalProperties": false, + "description": "The organization unit every generated resource belongs to. The handle\n`default` builds on the unit the bootstrap bundle creates.", + "properties": { + "description": { + "type": [ + "string", + "null" + ] + }, + "handle": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "required": [ + "handle", + "name" + ], + "type": "object" + }, + "SecretReference": { + "description": "An exact secret reference: secret:file/name, resolved under secretProviders.file.root, or secret:env/NAME, resolved only when secretProviders.environment is declared.", + "pattern": "^(?:secret:env/[A-Z][A-Z0-9_]{0,127}|secret:file/[a-z][a-z0-9._-]{0,127})$", + "type": "string" + }, + "Url": { + "description": "An absolute http or https URL with a host preserved as written, no user information, and no backslash, whitespace or control character. DNS case and equivalent IPv6 literals are permitted.", + "format": "uri", + "maxLength": 2048, + "pattern": "^[Hh][Tt][Tt][Pp][Ss]?://[^/?#@\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]+([/?#][^\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]*)?$", + "type": "string" + }, + "User": { + "additionalProperties": false, + "description": "A user, with the claims their tokens carry stated explicitly.", + "properties": { + "claims": { + "additionalProperties": { + "type": "string" + }, + "propertyNames": { + "$ref": "#/$defs/ExternalId", + "allOf": [ + { + "pattern": "^[A-Za-z0-9_]{1,128}$" + } + ] + }, + "type": "object" + }, + "email": { + "type": "string" + }, + "grants": { + "items": { + "$ref": "#/$defs/Grant" + }, + "maxItems": 16, + "minItems": 1, + "type": "array" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "passwordRef": { + "$ref": "#/$defs/SecretReference", + "allOf": [ + { + "pattern": "^secret:env/[A-Z][A-Z0-9_]{0,127}$" + } + ] + }, + "userType": { + "description": "An extension user type (id of `userTypes`); omitted is `RegistryPerson`.", + "type": [ + "string", + "null" + ] + }, + "username": { + "type": "string" + } + }, + "required": [ + "id", + "username", + "email", + "passwordRef", + "grants" + ], + "type": "object" + }, + "UserType": { + "additionalProperties": false, + "description": "An extension user type: an additional ThunderID user schema.", + "properties": { + "attributes": { + "description": "Optional string attributes beyond username, email and password.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "name": { + "description": "The ThunderID type name users of this type carry.", + "type": "string" + } + }, + "required": [ + "id", + "name" + ], + "type": "object" + } + }, + "$id": "https://id.registrystack.org/schemas/platform/identity-deployment/identity-deployment.v1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/platform/identity-deployment/v1", + "type": "string" + }, + "browserApps": { + "items": { + "$ref": "#/$defs/BrowserApp" + }, + "maxItems": 256, + "type": "array" + }, + "clients": { + "items": { + "$ref": "#/$defs/Client" + }, + "maxItems": 256, + "type": "array" + }, + "kind": { + "const": "PlatformIdentityDeployment", + "type": "string" + }, + "organizationUnit": { + "$ref": "#/$defs/OrganizationUnit" + }, + "userTypes": { + "items": { + "$ref": "#/$defs/UserType" + }, + "type": "array" + }, + "users": { + "items": { + "$ref": "#/$defs/User" + }, + "maxItems": 256, + "type": "array" + } + }, + "required": [ + "apiVersion", + "kind", + "organizationUnit" + ], + "title": "Registry Stack identity deployment", + "type": "object" +} diff --git a/public/artifacts/sha256/225b0d03402f422442432fd5195ccf3483ef79cf744d883bbfb9e96ba89e6465.json b/public/artifacts/sha256/225b0d03402f422442432fd5195ccf3483ef79cf744d883bbfb9e96ba89e6465.json new file mode 100644 index 000000000..feb429121 --- /dev/null +++ b/public/artifacts/sha256/225b0d03402f422442432fd5195ccf3483ef79cf744d883bbfb9e96ba89e6465.json @@ -0,0 +1,859 @@ +{ + "$defs": { + "AccessTokenAlgorithm": { + "enum": [ + "EdDSA", + "ES256", + "ES384", + "RS256", + "RS384" + ], + "type": "string" + }, + "ApplicantTokensDocument": { + "additionalProperties": false, + "description": "The issuer of applicant tokens.", + "properties": { + "algorithms": { + "default": [ + "ES256" + ], + "description": "The signature algorithms a token may use; one family only.", + "items": { + "$ref": "#/$defs/AccessTokenAlgorithm" + }, + "maxItems": 5, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "allowInsecureHttp": { + "default": false, + "description": "Permit plain HTTP beyond loopback to the configured issuer and to a\nJWKS URI declared in configuration. TLS remains required unless the\noperator explicitly accepts this transport risk.", + "type": "boolean" + }, + "audience": { + "description": "The audience every accepted access token must carry in `aud`.", + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "issuer": { + "$ref": "#/$defs/Url", + "description": "Exact issuer accepted in access-token `iss` claims, an absolute\n`https` URL, or a plain `http` URL when `allowInsecureHttp` is set." + }, + "jwksSource": { + "$ref": "#/$defs/JwksSource", + "default": { + "type": "discovery" + }, + "description": "Where the issuer's signing keys come from. Absent reads the issuer's\nOpenID Connect discovery document." + }, + "maximumTokenLifetimeSeconds": { + "default": 900, + "description": "The longest lifetime a token may carry, in seconds.", + "format": "uint64", + "maximum": 3600, + "minimum": 60, + "type": "integer" + }, + "requiredScope": { + "$ref": "#/$defs/ExternalId", + "description": "The scope every token must carry to create a session. The creating\nprincipal is the token's issuer, subject, and client." + } + }, + "required": [ + "issuer", + "audience", + "requiredScope" + ], + "type": "object" + }, + "AuditDestinationKind": { + "description": "The configured audit destination kind, as written in product configuration.", + "oneOf": [ + { + "const": "file", + "description": "Durable, rotated JSON Lines file.", + "type": "string" + }, + { + "const": "stdout", + "description": "One JSON line per entry on standard output, flushed per entry.", + "type": "string" + } + ] + }, + "AuditDocument": { + "additionalProperties": false, + "description": "The process-local audit destination and keyed-pseudonym secret.", + "properties": { + "destination": { + "$ref": "#/$defs/AuditDestinationKind", + "default": "file" + }, + "hashKeyRef": { + "$ref": "#/$defs/SecretReference", + "description": "Secret reference to the audit hash key." + }, + "path": { + "pattern": "^/", + "type": "string" + }, + "retentionDays": { + "format": "uint32", + "maximum": 36500, + "minimum": 1, + "type": "integer" + }, + "rotateBytes": { + "format": "uint64", + "maximum": 4294967295, + "minimum": 1048576, + "type": "integer" + } + }, + "required": [ + "hashKeyRef" + ], + "type": "object" + }, + "ClaimQueryDocument": { + "additionalProperties": false, + "description": "One claim a credential query asks for.", + "properties": { + "path": { + "description": "The claims path: object member names from the credential root, 1 to 8.\nA name may repeat along a path (`address`, `address`), so this is an\nordered list, not a set.", + "items": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "maxItems": 8, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "path" + ], + "type": "object" + }, + "ClientIdentifierDocument": { + "description": "One client identifier. The `type` member names the choice.", + "oneOf": [ + { + "additionalProperties": false, + "description": "`x509_san_dns`: the leaf certificate's DNS subject alternative name is\nthe public host. Requests are signed with the certificate's key (ES256).", + "properties": { + "certificateChainRef": { + "$ref": "#/$defs/SecretReference", + "description": "The PEM certificate chain, leaf first, as a secret reference." + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The identifier policies name in `clientIdentifier`." + }, + "signingKeyRef": { + "$ref": "#/$defs/SecretReference", + "description": "The private JWK that signs request objects, as a secret reference.\nIt must be the leaf certificate's key." + }, + "type": { + "const": "x509-san-dns", + "type": "string" + } + }, + "required": [ + "type", + "id", + "certificateChainRef", + "signingKeyRef" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "`x509_hash`: the client identifier is the SHA-256 hash of the leaf\ncertificate. Requests are signed with the certificate's key (ES256).", + "properties": { + "certificateChainRef": { + "$ref": "#/$defs/SecretReference", + "description": "The PEM certificate chain, leaf first, as a secret reference." + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The identifier policies name in `clientIdentifier`." + }, + "signingKeyRef": { + "$ref": "#/$defs/SecretReference", + "description": "The private JWK that signs request objects, as a secret reference.\nIt must be the leaf certificate's key." + }, + "type": { + "const": "x509-hash", + "type": "string" + } + }, + "required": [ + "type", + "id", + "certificateChainRef", + "signingKeyRef" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "`decentralized_identifier` with a `did:web` DID. The service serves the\nDID document at `/.well-known/did.json`. Requests are signed with an\nEd25519 key (EdDSA).", + "properties": { + "did": { + "$ref": "#/$defs/ExternalId", + "description": "`did:web:` and the host of `publicBaseUrl`, with no port and no\npath." + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The identifier policies name in `clientIdentifier`." + }, + "signingKeyRef": { + "$ref": "#/$defs/SecretReference", + "description": "The private Ed25519 JWK (`kty` OKP, `alg` EdDSA) that signs request\nobjects, as a secret reference." + }, + "type": { + "const": "decentralized-identifier", + "type": "string" + } + }, + "required": [ + "type", + "id", + "did", + "signingKeyRef" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "`pre-registered`: the client identifier is the bare `clientId` a wallet\noperator registers, with this service's `/v1/jwks` as the key set.\nRequests are signed with an Ed25519 key (EdDSA).", + "properties": { + "clientId": { + "$ref": "#/$defs/ExternalId", + "description": "The client identifier as registered with the wallet operator. It\nholds no `:`, which is what marks it as pre-registered." + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The identifier policies name in `clientIdentifier`." + }, + "signingKeyRef": { + "$ref": "#/$defs/SecretReference", + "description": "The private Ed25519 JWK (`kty` OKP, `alg` EdDSA) that signs request\nobjects, as a secret reference." + }, + "type": { + "const": "pre-registered", + "type": "string" + } + }, + "required": [ + "type", + "id", + "clientId", + "signingKeyRef" + ], + "type": "object" + } + ] + }, + "CredentialFormat": { + "description": "The only credential format the service requests.", + "enum": [ + "dc+sd-jwt" + ], + "type": "string" + }, + "CredentialQueryDocument": { + "additionalProperties": false, + "description": "One DCQL credential query.", + "properties": { + "claims": { + "description": "The claims asked for, 1 to 64. Ask only for what the policy needs.\nAbsent, the query requests no selectively disclosable claim and the\nwallet presents the credential with none (OpenID4VP 1.0 section 6.4.1);\nan empty list is refused.", + "items": { + "$ref": "#/$defs/ClaimQueryDocument" + }, + "maxItems": 64, + "minItems": 1, + "type": "array" + }, + "format": { + "$ref": "#/$defs/CredentialFormat", + "description": "The credential format, `dc+sd-jwt`." + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The query identifier the wallet keys its `vp_token` by." + }, + "vctValues": { + "description": "The credential types (`vct`) the wallet may present for this query, 1\nto 16.", + "items": { + "$ref": "#/$defs/ExternalId" + }, + "maxItems": 16, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "id", + "format", + "vctValues" + ], + "type": "object" + }, + "EnvironmentSecretProviderConfig": { + "additionalProperties": false, + "description": "The environment secret provider. It takes no settings.", + "type": "object" + }, + "EvidenceCredentialsDocument": { + "additionalProperties": false, + "description": "The issuer of the Evidence service credential.", + "properties": { + "algorithms": { + "default": [ + "ES256" + ], + "description": "The signature algorithms a token may use; one family only.", + "items": { + "$ref": "#/$defs/AccessTokenAlgorithm" + }, + "maxItems": 5, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "allowInsecureHttp": { + "default": false, + "description": "Permit plain HTTP beyond loopback to the configured issuer and to a\nJWKS URI declared in configuration. TLS remains required unless the\noperator explicitly accepts this transport risk.", + "type": "boolean" + }, + "allowedClient": { + "$ref": "#/$defs/ExternalId", + "description": "The one client allowed to read results: Evidence's service client." + }, + "audience": { + "description": "The audience every accepted access token must carry in `aud`.", + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "issuer": { + "$ref": "#/$defs/Url", + "description": "Exact issuer accepted in access-token `iss` claims, an absolute\n`https` URL, or a plain `http` URL when `allowInsecureHttp` is set." + }, + "jwksSource": { + "$ref": "#/$defs/JwksSource", + "default": { + "type": "discovery" + }, + "description": "Where the issuer's signing keys come from. Absent reads the issuer's\nOpenID Connect discovery document." + }, + "maximumTokenLifetimeSeconds": { + "default": 900, + "description": "The longest lifetime a token may carry, in seconds.", + "format": "uint64", + "maximum": 3600, + "minimum": 60, + "type": "integer" + }, + "requiredScope": { + "$ref": "#/$defs/ExternalId", + "description": "The scope the Evidence token must carry to read a result." + } + }, + "required": [ + "issuer", + "audience", + "allowedClient", + "requiredScope" + ], + "type": "object" + }, + "ExternalId": { + "description": "An identifier another system issues, written exactly as its issuer gives it.", + "maxLength": 512, + "minLength": 1, + "pattern": "^[^\\u0000-\\u001F\\u007F-\\u009F]+$", + "type": "string" + }, + "FileSecretProviderConfig": { + "additionalProperties": false, + "description": "The file secret provider.", + "properties": { + "root": { + "description": "Absolute directory holding one file per secret. Each file must be a\nregular file owned by the runtime user, mode 0400 or 0600, with exactly\none hard link.", + "pattern": "^/", + "type": "string" + } + }, + "required": [ + "root" + ], + "type": "object" + }, + "JwksSource": { + "description": "Where a runtime obtains the OIDC issuer's signing keys.", + "oneOf": [ + { + "additionalProperties": false, + "description": "Read `jwks_uri` from the issuer's OpenID Connect discovery document.", + "properties": { + "type": { + "const": "discovery", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Fetch the key set from this absolute `https` URI, skipping discovery.\nA plain `http` URI is accepted on loopback for supervised local\ndevelopment, and beyond loopback only when the issuer block sets\n`allowInsecureHttp`.", + "properties": { + "type": { + "const": "uri", + "type": "string" + }, + "uri": { + "$ref": "#/$defs/Url" + } + }, + "required": [ + "type", + "uri" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Read the key set from a secret, for deployments without network access\nto the issuer.", + "properties": { + "documentRef": { + "$ref": "#/$defs/SecretReference" + }, + "type": { + "const": "static", + "type": "string" + } + }, + "required": [ + "type", + "documentRef" + ], + "type": "object" + } + ] + }, + "ListenerBind": { + "description": "Socket address the runtime listens on, written host:port with an IP address host ([addr]:port for IPv6).", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "ListenerConfig": { + "additionalProperties": false, + "description": "The listener of a runtime that declares no TLS or exposure settings.", + "properties": { + "bind": { + "$ref": "#/$defs/ListenerBind" + } + }, + "required": [ + "bind" + ], + "type": "object" + }, + "ListenerDocument": { + "additionalProperties": false, + "description": "The listener a wallet and a portal reach.", + "properties": { + "bind": { + "$ref": "#/$defs/ListenerBind" + }, + "maximumRequestBytes": { + "default": 16384, + "description": "The largest request body accepted, in bytes.", + "format": "uint32", + "maximum": 1048576, + "minimum": 1024, + "type": "integer" + }, + "requestTimeoutMilliseconds": { + "default": 5000, + "description": "How long one request may take, in milliseconds.", + "format": "uint64", + "maximum": 30000, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "bind" + ], + "type": "object" + }, + "LocalId": { + "description": "A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.", + "pattern": "^[a-z][a-z0-9_-]{0,63}$", + "type": "string" + }, + "PolicyDocument": { + "additionalProperties": false, + "description": "A presentation policy.", + "properties": { + "acceptedResponseEncryption": { + "default": [ + "A128GCM", + "A256GCM" + ], + "description": "The `enc` values of an encrypted authorization response the service\naccepts and advertises.", + "items": { + "$ref": "#/$defs/ResponseEncryption" + }, + "maxItems": 2, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "clientIdentifier": { + "$ref": "#/$defs/LocalId", + "description": "The client identifier requests under this policy use: the `id` of an\nentry in `clientIdentifiers`." + }, + "credentials": { + "description": "The credential queries, 1 to 8.", + "items": { + "$ref": "#/$defs/CredentialQueryDocument" + }, + "maxItems": 8, + "minItems": 1, + "type": "array" + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The policy identifier a portal names when it creates a session." + }, + "trustedAuthorities": { + "description": "Trusted authority hints applied to every credential query. Omit for a\nwallet that does not support them.", + "items": { + "$ref": "#/$defs/TrustedAuthorityDocument" + }, + "maxItems": 4, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "id", + "clientIdentifier", + "credentials" + ], + "type": "object" + }, + "RateLimitsDocument": { + "additionalProperties": false, + "description": "Request-rate limits.", + "properties": { + "evidenceReadBurst": { + "default": 100, + "description": "The most result reads one Evidence client may make in a burst.", + "format": "uint32", + "maximum": 100000, + "minimum": 1, + "type": "integer" + }, + "evidenceReadsPerMinute": { + "default": 600, + "description": "Result reads per minute for one Evidence client.", + "format": "uint32", + "maximum": 1000000, + "minimum": 1, + "type": "integer" + }, + "responseBurstPerRequest": { + "default": 6, + "description": "The most response attempts against one session in a burst.", + "format": "uint32", + "maximum": 1000, + "minimum": 1, + "type": "integer" + }, + "responsesPerRequestPerMinute": { + "default": 12, + "description": "Response attempts per minute against one session.", + "format": "uint32", + "maximum": 6000, + "minimum": 1, + "type": "integer" + }, + "sessionCreationBurst": { + "default": 10, + "description": "The most sessions one principal may create in a burst.", + "format": "uint32", + "maximum": 100000, + "minimum": 1, + "type": "integer" + }, + "sessionCreationsPerPrincipalPerMinute": { + "default": 30, + "description": "Sessions one principal may create per minute.", + "format": "uint32", + "maximum": 100000, + "minimum": 1, + "type": "integer" + }, + "walletRequestBurst": { + "default": 100, + "description": "The most wallet requests admitted in a burst.", + "format": "uint32", + "maximum": 100000, + "minimum": 1, + "type": "integer" + }, + "walletRequestsPerMinute": { + "default": 600, + "description": "Request object fetches per minute, across all wallets.", + "format": "uint32", + "maximum": 1000000, + "minimum": 1, + "type": "integer" + }, + "walletResponseBurst": { + "default": 100, + "description": "The most wallet responses admitted in a burst.", + "format": "uint32", + "maximum": 100000, + "minimum": 1, + "type": "integer" + }, + "walletResponsesPerMinute": { + "default": 600, + "description": "Wallet responses per minute across all sessions. Every attempt counts,\nincluding those for unknown request identifiers.", + "format": "uint32", + "maximum": 1000000, + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + }, + "ResponseEncryption": { + "description": "The accepted `enc` values of an encrypted authorization response.", + "enum": [ + "A128GCM", + "A256GCM" + ], + "type": "string" + }, + "SecretProvidersConfig": { + "additionalProperties": false, + "anyOf": [ + { + "properties": { + "file": { + "$ref": "#/$defs/FileSecretProviderConfig" + } + }, + "required": [ + "file" + ] + }, + { + "properties": { + "environment": { + "$ref": "#/$defs/EnvironmentSecretProviderConfig" + } + }, + "required": [ + "environment" + ] + } + ], + "description": "The secret providers a runtime enables. A reference is resolved only by a\nprovider declared here: `secret:file/name` under `file.root`, and\n`secret:env/NAME` only when `environment: {}` is present.", + "properties": { + "environment": { + "$ref": "#/$defs/EnvironmentSecretProviderConfig", + "description": "Enables `secret:env/NAME` references, read from the process\nenvironment. Declared as an empty mapping: `environment: {}`." + }, + "file": { + "$ref": "#/$defs/FileSecretProviderConfig", + "description": "Enables `secret:file/name` references, read from files under `root`." + } + }, + "type": "object" + }, + "SecretReference": { + "description": "An exact secret reference: secret:file/name, resolved under secretProviders.file.root, or secret:env/NAME, resolved only when secretProviders.environment is declared.", + "pattern": "^(?:secret:env/[A-Z][A-Z0-9_]{0,127}|secret:file/[a-z][a-z0-9._-]{0,127})$", + "type": "string" + }, + "SessionsDocument": { + "additionalProperties": false, + "description": "The bounds of the in-memory session store.", + "properties": { + "maximumHeldPresentationBytes": { + "default": 268435456, + "description": "The most presentation bytes the store holds across all sessions, from\nthe moment a response is accepted until its session ends or its result\nexpires. A response that would exceed it is refused with a retryable\n503; the sessions already holding results are unaffected.", + "format": "uint64", + "maximum": 17179869184, + "minimum": 1048576, + "type": "integer" + }, + "maximumLiveSessions": { + "default": 4096, + "description": "How many sessions the store holds. A full store refuses new sessions\nrather than forgetting live ones.", + "format": "uint32", + "maximum": 1048576, + "minimum": 1, + "type": "integer" + }, + "resultTtlSeconds": { + "default": 1800, + "description": "How long an accepted presentation is held for Evidence to read, in\nseconds.", + "format": "uint64", + "maximum": 3600, + "minimum": 30, + "type": "integer" + }, + "sessionTtlSeconds": { + "default": 300, + "description": "How long a session waits for the wallet's response, in seconds. The\nrequest object expires with it.", + "format": "uint64", + "maximum": 900, + "minimum": 30, + "type": "integer" + } + }, + "type": "object" + }, + "TrustedAuthorityDocument": { + "additionalProperties": false, + "description": "A trusted authority hint passed to the wallet for minimisation. The service\nstill decides trust itself.", + "properties": { + "type": { + "$ref": "#/$defs/TrustedAuthorityType", + "description": "The authority type." + }, + "values": { + "description": "Authority Key Identifiers, base64url, 1 to 16.", + "items": { + "$ref": "#/$defs/ExternalId" + }, + "maxItems": 16, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "type", + "values" + ], + "type": "object" + }, + "TrustedAuthorityType": { + "description": "The trusted authority type; only `aki` is offered.", + "enum": [ + "aki" + ], + "type": "string" + }, + "Url": { + "description": "An absolute http or https URL with a host preserved as written, no user information, and no backslash, whitespace or control character. DNS case and equivalent IPv6 literals are permitted.", + "format": "uri", + "maxLength": 2048, + "pattern": "^[Hh][Tt][Tt][Pp][Ss]?://[^/?#@\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]+([/?#][^\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]*)?$", + "type": "string" + } + }, + "$id": "https://id.registrystack.org/schemas/evidence/oid4vp-runtime/oid4vp-runtime.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "description": "The wallet protocol service runtime file: one deployment of the OpenID4VP\nverifier front end for Evidence.", + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/evidence/oid4vp-runtime/v1alpha1", + "description": "The format version of this file.", + "type": "string" + }, + "applicantTokens": { + "$ref": "#/$defs/ApplicantTokensDocument", + "description": "The issuer of the applicant tokens a portal presents to create a\nsession." + }, + "audit": { + "$ref": "#/$defs/AuditDocument", + "description": "The required durable audit journal." + }, + "clientIdentifiers": { + "description": "How the service identifies itself to a wallet: one or more client\nidentifiers, each named by a local id. Every policy names the one it\nuses, and every identifier is used by at least one policy.", + "items": { + "$ref": "#/$defs/ClientIdentifierDocument" + }, + "maxItems": 8, + "minItems": 1, + "type": "array" + }, + "evidenceCredentials": { + "$ref": "#/$defs/EvidenceCredentialsDocument", + "description": "The issuer of the Evidence service credential that reads a result." + }, + "kind": { + "const": "EvidenceOid4vpRuntimeConfig", + "description": "The document kind.", + "type": "string" + }, + "listener": { + "$ref": "#/$defs/ListenerDocument", + "description": "The listener a wallet and a portal reach." + }, + "metricsListener": { + "$ref": "#/$defs/ListenerConfig", + "description": "The optional operator-only metrics listener: a loopback or private\naddress the service listener does not use. Absent means no metrics\nendpoint exists." + }, + "policies": { + "description": "What a portal may ask a wallet to present. At least one.", + "items": { + "$ref": "#/$defs/PolicyDocument" + }, + "minItems": 1, + "type": "array" + }, + "publicBaseUrl": { + "$ref": "#/$defs/Url", + "description": "The public origin wallets reach this service at: a bare https origin\nwith no path, query, or fragment. The response URI and the request URI\nare built from it. A trailing slash is removed." + }, + "rateLimits": { + "$ref": "#/$defs/RateLimitsDocument", + "description": "Request-rate limits." + }, + "secretProviders": { + "$ref": "#/$defs/SecretProvidersConfig", + "description": "The secret providers the `*Ref` members may name." + }, + "sessions": { + "$ref": "#/$defs/SessionsDocument", + "description": "The bounds of the in-memory session store." + } + }, + "required": [ + "apiVersion", + "kind", + "publicBaseUrl", + "listener", + "secretProviders", + "audit", + "applicantTokens", + "evidenceCredentials", + "clientIdentifiers", + "policies" + ], + "title": "Evidence OpenID4VP verifier runtime configuration", + "type": "object" +} diff --git a/public/artifacts/sha256/24b19bc056dd4048d1f02b3270743d3c30c052cb5875b240e8d9b5d06029ecfb.yaml b/public/artifacts/sha256/24b19bc056dd4048d1f02b3270743d3c30c052cb5875b240e8d9b5d06029ecfb.yaml new file mode 100644 index 000000000..90d9ceb92 --- /dev/null +++ b/public/artifacts/sha256/24b19bc056dd4048d1f02b3270743d3c30c052cb5875b240e8d9b5d06029ecfb.yaml @@ -0,0 +1,607 @@ +$schema: https://json-schema.org/draft/2020-12/schema +$id: https://id.registrystack.org/schemas/evidence/runtime/runtime.v1alpha1.schema.json +title: Evidence closed operator runtime configuration Version 1 +type: object +additionalProperties: false +required: + - apiVersion + - kind + - package + - listener + - secretProviders + - signer + - audit + - outboundTls +properties: + apiVersion: + description: >- + Names the grammar this runtime document is written in; the loader refuses any other + value, so a future incompatible runtime shape is never read as if it were this one. + const: id.registrystack.org/formats/evidence/runtime/v1alpha1 + kind: + description: >- + Names the document type; together with `apiVersion` it tells an Evidence runtime file + apart from any other product's runtime configuration. + const: EvidenceRuntimeConfig + acquisitionCapabilities: + description: >- + Retired. An empty list is accepted, and ignored, for one release so a file written for + 0.44 still loads; any capability is refused. Delete the member: a Source binds a reviewed + Adapter pack route, and the pack declares how it reads. + deprecated: true + type: array + maxItems: 0 + package: + description: >- + Selects the one governed package this process verifies and loads at startup; no alternate, + overlay, or fallback package path exists for a running deployment. + type: object + additionalProperties: false + required: + - root + properties: + root: + description: >- + Absolute path of the governed package directory this process verifies and loads. + $ref: '#/$defs/absolute-path' + expectedDigest: + description: >- + Optional `sha256:` digest of the package's `SHA256SUMS` file. When set, startup is + refused unless the verified package found at `package.root` has exactly this digest. + $ref: '#/$defs/Digest' + authority: + description: >- + Selects the separately governed target authority store captured at startup. Required + for a normalized project package and forbidden as an authority override of a legacy + package. Activation commits one validated snapshot and durable history atomically; + the running process keeps its captured authority until a controlled restart. + type: object + additionalProperties: false + required: [root, target] + properties: + root: + description: Absolute owned directory containing the committed authority-state.json. + $ref: '#/$defs/absolute-path' + target: + description: Exact governed target identifier matched by the activated authority document. + $ref: '#/$defs/LocalId' + listener: + description: >- + Groups the network binding and per-request admission limits for the process's evidence + endpoint; `metricsListener`, when present, is an entirely separate binding with its + own limits. + type: object + additionalProperties: false + required: + - bind + - tlsTermination + - trustProxyIdentityHeaders + - maximumRequestBytes + - maximumConcurrentRequests + - requestTimeoutMilliseconds + - shutdownGraceMilliseconds + properties: + bind: + description: >- + Numeric socket address the evidence API listens on, written `host:port`, with an + IPv6 host in brackets (`[addr]:port`). The default `private-address` exposure accepts + a loopback, RFC 1918 private IPv4, or RFC 4193 unique-local IPv6 host. The explicit + `container-private` exposure additionally accepts the unspecified IPv4 or IPv6 + wildcard for a container network confined by the operator. Multicast, public, and + hostname values are prohibited in both modes, and port `0`, which would ask the + kernel for an arbitrary ephemeral port instead of naming one, is refused. + $ref: '#/$defs/socket-address' + x-runtime-validation: >- + Parsed as a socket address and its host checked together with + listener.networkExposure. Wildcards require the explicit container-private value; + public addresses remain prohibited. + networkExposure: + description: >- + Declares the operator-owned network boundary around the listener. Absent preserves + the private-address contract used by existing runtime files. container-private permits + a wildcard bind only for a container network whose ingress and TLS termination are + controlled by the operator; it does not enable public or direct-TLS serving. + type: string + enum: + - private-address + - container-private + default: private-address + tlsTermination: + description: >- + Declares that TLS terminates at an operator-controlled upstream in front of this + listener; the runtime accepts no other value and exposes no direct-TLS or `insecure` + mode of its own. + const: operator-controlled-upstream + trustProxyIdentityHeaders: + description: >- + Fixes the listener to ignore proxy-supplied identity headers; authenticated identity + and authority always come from the verified access token, never from a header a + network intermediary can set. + const: false + maximumRequestBytes: + description: >- + Caps accepted request body size; a request whose declared or actual length exceeds + this bound is rejected as malformed before evidence evaluation begins. + type: integer + minimum: 1024 + maximum: 1048576 + maximumConcurrentRequests: + description: >- + Sizes the fixed admission semaphore for concurrent evidence requests; a request + that cannot acquire a slot within `listener.requestTimeoutMilliseconds` receives + a service-unavailable response instead of queuing without bound. + type: integer + minimum: 1 + maximum: 4096 + requestTimeoutMilliseconds: + description: >- + Bounds admission-slot acquisition and request-body collection; once protected evaluation + starts, this timer no longer cancels it, and source and OIDC boundaries carry their + own separate limits. + type: integer + minimum: 1 + maximum: 30000 + shutdownGraceMilliseconds: + description: >- + Operational target for graceful shutdown to finish within; it does not cancel a + request already inside protected evaluation, so audit and signing invariants complete + even if shutdown outlives this grace period. + type: integer + minimum: 1 + maximum: 120000 + metricsListener: + description: >- + Optional operator-only telemetry listener serving GET /metrics. Absent means the deployment + serves no metrics endpoint, which is the default. This listener is a separate binding from + the evidence listener and is not described by the public evidence contract. + type: object + additionalProperties: false + required: + - bind + properties: + bind: + description: >- + Numeric socket address for the optional metrics listener, written `host:port`. The + host must be a loopback, RFC 1918 private IPv4, or RFC 4193 unique-local IPv6 + address; unspecified, multicast, public, and hostname values are prohibited, port + `0` is refused, and the address must not repeat the evidence listener's binding. + $ref: '#/$defs/socket-address' + x-runtime-validation: >- + Parsed as a socket address and accepted only when Rust classifies its host as + loopback, private IPv4, or unique-local IPv6. + x-runtime-validation: >- + Rejected at startup when the bind address repeats the evidence listener binding. + secretProviders: + description: >- + Enables the providers a secret reference may resolve through; it supplies storage + locations only, and which secret each governed field names is fixed by the bundle, not + by this section. At least one provider is declared, and a bundle reference naming a + provider this section does not enable is refused at startup. + type: object + additionalProperties: false + minProperties: 1 + properties: + file: + description: >- + Enables the file-based secret provider and names its root directory; every + `secret:file/name` reference resolves beneath this one path. + type: object + additionalProperties: false + required: + - root + properties: + root: + description: >- + Absolute base directory every `secret:file/name` reference resolves beneath; + each name is one bounded path component opened relative to this root, and the + opened file is checked for type, ownership, mode, and link count before its + bytes are read. + $ref: '#/$defs/absolute-path' + environment: + description: >- + Enables `secret:env/NAME` references, read from the process environment when a + request needs them. It takes no settings and is written `environment: {}`; absent + means no reference may name the environment. + type: object + additionalProperties: false + maxProperties: 0 + signer: + description: >- + Binds the process to the private-key transport that produces every signature over the + bundle's governed active public key; it can select and configure that transport but + cannot change the governed key set or signing algorithm. + oneOf: + - type: object + additionalProperties: false + required: + - type + - privateKeyRef + properties: + type: + description: >- + Selects the signer transport for this deployment: `local-jwk` resolves a file-provider + secret directly, `transit` calls a workload-local signing proxy over a Unix + socket; only the kind matching the bundle's assurance profile is accepted at + startup. + const: local-jwk + privateKeyRef: + description: >- + Names the file-provider secret holding the local signing private key material, + read only when `signer.type` is `local-jwk`; the value is a reference, and configuration + never carries the key bytes themselves. + $ref: '#/$defs/SecretReference' + - type: object + additionalProperties: false + required: + - type + - unixSocketPath + - mount + - keyName + - keyVersion + - attemptTimeoutMilliseconds + properties: + type: + const: transit + unixSocketPath: + description: >- + Absolute Unix socket path used to reach the workload-local Transit signing proxy; + the runtime supplies no provider token over this connection, because token custody + and renewal stay with the proxy. + $ref: '#/$defs/absolute-path' + mount: + description: >- + Names the Transit secrets-engine mount this signer calls; it is a path segment + in the local Transit-proxy request URL, not a filesystem location. + $ref: '#/$defs/local-id' + keyName: + description: >- + Names the specific key within `signer.mount` this signer calls; combined with + `signer.mount` and `signer.keyVersion`, it reaches exactly one pinned Transit + key. + $ref: '#/$defs/local-id' + keyVersion: + description: >- + Pins signing to one exact Transit key version rather than a `latest` alias, + so a provider-side rotation cannot silently replace the key bytes behind an + unchanged `kid`. + type: integer + minimum: 1 + maximum: 4294967295 + attemptTimeoutMilliseconds: + description: >- + Bounds how long the runtime waits on each call to the Transit signing proxy; + because a `transit` signer keeps no local fallback key, a call that exceeds + this bound fails the request rather than blocking it indefinitely. + type: integer + minimum: 1 + maximum: 30000 + audit: + description: >- + Chooses where this process writes its audit entries through the shared platform audit + writer; the pseudonymization key and its version are governed by the bundle's `audit` + section, not by this one. Every audit gate is fail closed on either destination. + type: object + additionalProperties: false + properties: + destination: + description: >- + `file`, the default, appends each entry durably to `path` under a single-writer lock + and rotates the active file and prunes rotated files; `stdout` writes each entry as one line on + standard output for a collector that owns durability, rotation, and retention. + enum: + - file + - stdout + path: + description: >- + Absolute path to the active append-only JSON Lines audit file on durable, + operator-owned storage; required for the `file` destination and refused for + `stdout`. This physical destination is process-local and is not chosen by the + bundle. + $ref: '#/$defs/absolute-path' + rotateBytes: + description: >- + Size at which the active file is rotated and a fresh one opened; defaults to + 104857600 (100 MiB). File destination only. + type: integer + minimum: 1048576 + maximum: 4294967295 + retentionDays: + description: >- + Age in days after which a rotated file is deleted when the writer opens or rotates; + defaults to 90. The active file is never deleted. File destination only. + type: integer + minimum: 1 + maximum: 36500 + if: + required: + - destination + properties: + destination: + const: stdout + then: + not: + anyOf: + - required: + - path + - required: + - rotateBytes + - required: + - retentionDays + else: + required: + - path + outboundTls: + description: >- + Groups outbound TLS trust for calls to configured sources; it can add private certificate + authorities through named trust profiles but carries no setting to weaken hostname verification + or skip TLS. + type: object + additionalProperties: false + required: + - systemRoots + - trustProfiles + properties: + systemRoots: + description: >- + Fixes the system certificate authority store as always trusted for outbound calls; + because Version 1 has no way to disable it, a source's or the access-token issuer's + public certificate must still chain to a trusted root even when a private trust + profile also applies. + const: true + trustProfiles: + description: >- + Closed map of private certificate-authority bundles a source or the access-token + issuer may reference by logical id; the set of ids present here must exactly match + the `tlsTrustProfile` names the bundle's sources and `authentication` declare, with + no extra or missing profile. + type: object + maxProperties: 64 + propertyNames: + $ref: '#/$defs/LocalId' + additionalProperties: + description: >- + One named private trust profile, binding a logical id a `tlsTrustProfile` + reference names to the certificate-authority bundle used only for the outbound + connections of the source or access-token issuer that names it. + type: object + additionalProperties: false + required: + - caBundleFile + properties: + caBundleFile: + description: >- + Absolute path to one bounded PEM file of trust anchors, loaded and validated + at startup; changing its bytes requires a restart before the new trust anchors + can be used. + $ref: '#/$defs/absolute-path' + sourceConnections: + description: >- + Process-local endpoint, credential and private-network material for each governed + source connection. Each mapping key must equal the value's `id`; startup requires + the selected endpoint values to match the governed connection policy exactly. + type: object + propertyNames: {$ref: '#/$defs/LocalId'} + additionalProperties: {$ref: '#/$defs/source-connection-bindings'} + sourceAcquisition: + description: >- + Finite operational budget shared by every pack-route call in one acquisition. + Omission uses 5 data operations, 30000 milliseconds and 1048576 response bytes. + type: object + additionalProperties: false + required: [maximumDataOperations, acquisitionDeadlineMilliseconds, maximumResponseBytes] + properties: + maximumDataOperations: {type: integer, minimum: 1, maximum: 18446744073709551615} + acquisitionDeadlineMilliseconds: {type: integer, minimum: 1, maximum: 18446744073709551615} + maximumResponseBytes: {type: integer, minimum: 1, maximum: 18446744073709551615} + sourceExtracts: + description: >- + Closed map of process-local extract files a source may read by logical name; the set of + names present here must exactly match the `extractProfile` names the bundle's extract + sources declare, with no extra or missing name. Omission binds none, which is what a + runtime file for a bundle with no extract source says. + type: object + maxProperties: 64 + propertyNames: + $ref: '#/$defs/LocalId' + additionalProperties: + description: >- + One named extract binding, joining a logical name a source's `extractProfile` reference + declares to the process-local file that holds it, so the reviewed bundle names what it + reads and the operator decides where that file sits. + type: object + additionalProperties: false + required: + - path + properties: + path: + description: >- + Absolute path to one read-only regular file, validated at startup and digested + without being read into memory; it must be neither a symbolic link nor writable, + because the statement executor opens it as immutable. Startup binds the exact file + identity and content digest for the process lifetime. + $ref: '#/$defs/absolute-path' +$defs: + Digest: + type: string + pattern: ^sha256:[0-9a-f]{64}$ + description: 'A SHA-256 digest: `sha256:` followed by 64 lowercase hex digits.' + ExternalId: + type: string + minLength: 1 + maxLength: 512 + pattern: "^[^\\u0000-\\u001F\\u007F-\\u009F]+$" + description: An identifier another system issues, written exactly as its issuer gives it. + Url: + type: string + format: uri + maxLength: 2048 + pattern: '^[Hh][Tt][Tt][Pp][Ss]?://[^/?#@\u005C\u0000-\u0020\u007F-\u00A0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]+([/?#][^\u005C\u0000-\u0020\u007F-\u00A0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]*)?$' + description: An absolute http or https URL with a host preserved as written, no user information, and no backslash, whitespace or control character. DNS case and equivalent IPv6 literals are permitted. + LocalId: + type: string + pattern: ^[a-z][a-z0-9_-]{0,63}$ + description: 'A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.' + local-id: + type: string + pattern: ^[a-z][a-z0-9._-]{0,127}$ + SecretReference: + type: string + pattern: ^(?:secret:env/[A-Z][A-Z0-9_]{0,127}|secret:file/[a-z][a-z0-9._-]{0,127})$ + description: 'An exact secret reference: secret:file/name, resolved under secretProviders.file.root, or secret:env/NAME, resolved only when secretProviders.environment is declared.' + socket-address: + description: >- + A numeric `host:port` socket address with a non-zero port, the host in brackets when + it is IPv6. + type: string + minLength: 1 + maxLength: 128 + pattern: ^(?:[0-9]{1,3}(?:\.[0-9]{1,3}){3}|\[[0-9A-Fa-f:.]+\]):(?!0+$)[0-9]{1,5}$ + absolute-path: + type: string + minLength: 2 + maxLength: 512 + pattern: ^/(?!/)(?!.*(?:^|/)\.\.?(?:/|$))[^\\\u0000]+$ + source-connection-bindings: + type: object + additionalProperties: false + required: [id, endpoints] + properties: + id: {$ref: '#/$defs/LocalId'} + endpoints: + description: One binding per distinct endpoint name. + type: array + items: {$ref: '#/$defs/source-endpoint-binding'} + outboundTls: + type: object + additionalProperties: false + properties: + trustProfiles: + type: object + propertyNames: {$ref: '#/$defs/LocalId'} + additionalProperties: + type: object + additionalProperties: false + required: [caBundleFile] + properties: + caBundleFile: {$ref: '#/$defs/absolute-path'} + allowedPrivateCidrs: + type: array + uniqueItems: true + items: + type: string + pattern: '^[0-9a-fA-F.:]+/[0-9]{1,3}$' + source-endpoint-binding: + type: object + additionalProperties: false + required: [endpoint, baseUrl] + properties: + endpoint: {$ref: '#/$defs/ExternalId'} + baseUrl: {$ref: '#/$defs/Url'} + credential: {$ref: '#/$defs/source-runtime-credential'} + anonymousHttps: {const: operator-approved} + attemptTimeoutMilliseconds: {type: integer, minimum: 1, maximum: 18446744073709551615} + maximumResponseBytes: {type: integer, minimum: 1, maximum: 16777216} + maximumConcurrency: {type: integer, minimum: 1, maximum: 256, default: 8} + tlsTrustProfile: {$ref: '#/$defs/LocalId'} + mtlsIdentity: + type: object + additionalProperties: false + required: [certificateRef, keyRef] + properties: + certificateRef: {$ref: '#/$defs/SecretReference'} + keyRef: {$ref: '#/$defs/SecretReference'} + source-runtime-credential: + oneOf: + - type: object + additionalProperties: false + required: [type] + properties: + type: {const: none} + - type: object + additionalProperties: false + required: [type, usernameRef, passwordRef] + properties: + type: {const: basic} + usernameRef: {$ref: '#/$defs/SecretReference'} + passwordRef: {$ref: '#/$defs/SecretReference'} + - type: object + additionalProperties: false + required: [type, tokenRef] + properties: + type: {const: static-authorization} + tokenRef: {$ref: '#/$defs/SecretReference'} + - type: object + additionalProperties: false + required: [type, valueRef] + properties: + type: {const: static-api-key} + valueRef: {$ref: '#/$defs/SecretReference'} + - type: object + additionalProperties: false + required: [type, tokenEndpoint, clientIdRef, clientSecretRef, credentialPlacement, maximumCacheSeconds] + properties: + type: {const: oauth2-client-credentials} + tokenEndpoint: {$ref: '#/$defs/Url'} + clientIdRef: {$ref: '#/$defs/SecretReference'} + clientSecretRef: {$ref: '#/$defs/SecretReference'} + scope: {type: string, minLength: 1, maxLength: 512} + audience: {type: string, minLength: 1, maxLength: 512} + resource: {type: string, minLength: 1, maxLength: 512, format: uri} + credentialPlacement: {enum: [basic-header, form-body]} + maximumCacheSeconds: {type: integer, minimum: 0, maximum: 86400} + assumedLifetimeSeconds: {type: integer, minimum: 1, maximum: 86400} + - type: object + additionalProperties: false + required: [type, tokenEndpoint, clientIdRef, clientAssertionKeyRef, maximumCacheSeconds] + properties: + type: {const: oauth2-private-key-jwt} + tokenEndpoint: {$ref: '#/$defs/Url'} + clientIdRef: {$ref: '#/$defs/SecretReference'} + clientAssertionKeyRef: {$ref: '#/$defs/SecretReference'} + clientAssertionAudience: {type: string, minLength: 1, maxLength: 512} + scope: {type: string, minLength: 1, maxLength: 512} + audience: {type: string, minLength: 1, maxLength: 512} + resource: {type: string, minLength: 1, maxLength: 512, format: uri} + maximumCacheSeconds: {type: integer, minimum: 0, maximum: 86400} + assumedLifetimeSeconds: {type: integer, minimum: 1, maximum: 86400} +ownership: + governed_fields: prohibited + allowed: + - bundle package root and optional expected revision + - listener binding and process limits + - optional operator metrics listener binding + - enabled secret providers and the file-secret root + - signer binding to a local private JWK or workload-local Transit proxy + - audit destination, path, rotation size, and retention + - logical private-CA file bindings + - named Adapter endpoint bindings, credential references, and private-network allowlists + - finite per-acquisition operation, deadline, and aggregate response-byte budgets + - logical source-extract file bindings + overrides: prohibited +startup: + unknown_keys: rejected at every level + mutability: >- + runtime.yaml and bound CA files are captured read-only once; reload, merge, fallback, + and partial serving are prohibited + substitution: >- + `${NAME}` and `${NAME:-default}` expressions in string values are substituted from the + process environment after parsing; they are refused inside secret references and inside + secretProviders + trust_profiles: >- + top-level names serve inbound authentication; each named source connection separately + captures the private trust profiles selected by its reviewed endpoint policies + secrets: >- + values and provider tokens are never parsed into or included in the runtime document + signer: >- + local assurance requires local-jwk; production and evidence-grade require Transit through + an absolute Unix socket. Transit key version is pinned and no provider token is supplied + to Evidence. + proxy: >- + HTTP_PROXY, HTTPS_PROXY, ALL_PROXY, and NO_PROXY are ignored; no application-level proxy + field exists +platform: + supported: Unix + reason: >- + Version 1 requires Unix owner, mode, no-follow, link-count, and file-identity guarantees + for the runtime file, the package directory and its artifacts, named CA bundle files, the + secret root, source extracts, individual secrets, and the audit file destination. diff --git a/public/artifacts/sha256/26884cc061cde1b1e5f6eb60d59b738c4522d9451c3ebef0f0e0ac007f17a7e9.json b/public/artifacts/sha256/26884cc061cde1b1e5f6eb60d59b738c4522d9451c3ebef0f0e0ac007f17a7e9.json new file mode 100644 index 000000000..c3aad7401 --- /dev/null +++ b/public/artifacts/sha256/26884cc061cde1b1e5f6eb60d59b738c4522d9451c3ebef0f0e0ac007f17a7e9.json @@ -0,0 +1,408 @@ +{ + "$defs": { + "AccessProfile": { + "additionalProperties": false, + "description": "One declared caller profile.", + "properties": { + "actorKind": { + "$ref": "#/$defs/ActorKind", + "description": "The actor kind the token must claim." + }, + "actsAs": { + "$ref": "#/$defs/ActsAs", + "description": "What a caller resolved to this profile is to a document." + }, + "description": { + "$ref": "#/$defs/DisplayText", + "description": "What the profile is for, accepted for authoring and tooling; never matched against a caller." + }, + "institution": { + "$ref": "#/$defs/ExternalId", + "description": "The institution this profile acts for. The Document Store records it\nas the issuing institution of every document version a caller under\nthis profile reserves; a profile that names none records none." + }, + "label": { + "$ref": "#/$defs/DisplayText", + "description": "A name for the profile, accepted for authoring and tooling; never matched against a caller." + }, + "principalClaim": { + "$ref": "#/$defs/ExternalId", + "description": "`sub`, or the name of another string claim identifying the principal.\nEvery profile of one actor kind names the same claim." + }, + "requesterClients": { + "description": "The OAuth clients whose tokens resolve to this profile; at least one.", + "items": { + "$ref": "#/$defs/ExternalId" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "requiredScopes": { + "description": "The scopes a token must carry; at least one.", + "items": { + "$ref": "#/$defs/ExternalId" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "principalClaim", + "requiredScopes", + "requesterClients", + "actorKind", + "actsAs" + ], + "type": "object" + }, + "ActorKind": { + "description": "An actor kind: a service, or a human person.", + "enum": [ + "service", + "human" + ], + "type": "string" + }, + "ActsAs": { + "description": "What a caller resolved to an access profile is to a document.", + "oneOf": [ + { + "const": "custodian", + "description": "Places documents in custody and issues document grants.", + "type": "string" + }, + { + "const": "represented-principal", + "description": "The person on whose behalf custody is held.", + "type": "string" + }, + { + "const": "recipient", + "description": "Reads exactly the document version a document grant names.", + "type": "string" + } + ] + }, + "ContentType": { + "description": "A lowercase concrete media type `type/subtype` without parameters or wildcards, matched exactly.", + "pattern": "^[a-z0-9][a-z0-9!#$&^_.+-]{0,126}/[a-z0-9][a-z0-9!#$&^_.+-]{0,126}$", + "type": "string" + }, + "CustodianRule": { + "description": "Who holds a document a service places for a named person.", + "oneOf": [ + { + "const": "institution", + "description": "Custody stays with the reserving system, acting for its\ninstitution. The named person is recorded as the represented\nprincipal and has no standing on the document; only a document\ngrant releases it to them.", + "type": "string" + }, + { + "const": "represented-principal", + "description": "The named person is the custodian. The reserving system sees the\ndocument's metadata and status but is neither released its content\nnor allowed to grant on it.", + "type": "string" + } + ] + }, + "DisplayText": { + "description": "Human-readable display text. Bidirectional embedding, override, and isolate controls, byte-order marks, line and paragraph separators, and Unicode noncharacters are refused; multilingual joiners and direction marks remain valid.", + "not": { + "pattern": "[

‪-‮⁦-⁩﷐-﷯￾￿]|🿾|🿿|𯿾|𯿿|𿿾|𿿿|񏿾|񏿿|񟿾|񟿿|񯿾|񯿿|񿿾|񿿿|򏿾|򏿿|򟿾|򟿿|򯿾|򯿿|򿿾|򿿿|󏿾|󏿿|󟿾|󟿿|󯿾|󯿿|󿿾|󿿿|􏿾|􏿿" + }, + "type": "string" + }, + "DocumentPolicy": { + "additionalProperties": false, + "description": "One document policy: who may hold, grant, and receive a document held\nunder it, and the restrictions every such document carries.", + "properties": { + "custodian": { + "$ref": "#/$defs/CustodianRule", + "description": "Who holds a document a service places for a named person: the\nreserving system for its institution, or that person." + }, + "custodyProfiles": { + "description": "Profiles that may place a document in custody under this policy.", + "items": { + "$ref": "#/$defs/LocalId" + }, + "type": "array", + "uniqueItems": true + }, + "grantingProfiles": { + "description": "Profiles that may issue a document grant on a document they hold in\ncustody under this policy. A system that only reserved a document for\nanother custodian never grants on it.", + "items": { + "$ref": "#/$defs/LocalId" + }, + "type": "array", + "uniqueItems": true + }, + "label": { + "$ref": "#/$defs/DisplayText" + }, + "mandatoryRestrictions": { + "$ref": "#/$defs/MandatoryRestrictions" + }, + "recipientProfiles": { + "description": "Profiles a document grant may name as its recipient.", + "items": { + "$ref": "#/$defs/LocalId" + }, + "type": "array", + "uniqueItems": true + }, + "representedPrincipalGrants": { + "$ref": "#/$defs/RepresentedPrincipalGrants", + "description": "Whether the represented principal may issue document grants itself." + }, + "representedPrincipalProfile": { + "$ref": "#/$defs/LocalId", + "description": "The profile a represented principal authenticates under." + }, + "version": { + "type": "string" + } + }, + "required": [ + "version", + "label", + "custodyProfiles", + "grantingProfiles", + "representedPrincipalProfile", + "representedPrincipalGrants", + "custodian", + "recipientProfiles", + "mandatoryRestrictions" + ], + "type": "object" + }, + "ExternalId": { + "description": "An identifier another system issues, written exactly as its issuer gives it.", + "maxLength": 512, + "minLength": 1, + "pattern": "^[^\\u0000-\\u001F\\u007F-\\u009F]+$", + "type": "string" + }, + "HookHandler": { + "description": "Where an observer hook delivers, chosen by its `type` member: a URL\ndestination the runtime configuration binds under `destinations.hooks`.", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "destinationId": { + "$ref": "#/$defs/LocalId" + }, + "type": { + "const": "url", + "type": "string" + } + }, + "required": [ + "type", + "destinationId" + ], + "type": "object" + } + ] + }, + "HookPhase": { + "description": "When an observer hook runs relative to the triggering transaction.", + "enum": [ + "after" + ], + "type": "string" + }, + "HookPolicy": { + "additionalProperties": false, + "description": "One after-commit observer hook.", + "properties": { + "handler": { + "$ref": "#/$defs/HookHandler" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "phase": { + "$ref": "#/$defs/HookPhase" + }, + "policies": { + "description": "The document policies whose documents the observer hears about: a\nchange to a document held under any other policy captures nothing\nfor it. Listing them is the operator's declaration of who may\nreceive which documents' events.", + "items": { + "$ref": "#/$defs/LocalId" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "projection": { + "description": "The fields of the trigger's projection the observer receives.", + "items": { + "$ref": "#/$defs/ExternalId" + }, + "type": "array", + "uniqueItems": true + }, + "trigger": { + "$ref": "#/$defs/HookTrigger" + } + }, + "required": [ + "id", + "phase", + "trigger", + "policies", + "projection", + "handler" + ], + "type": "object" + }, + "HookTrigger": { + "description": "The committed change an observer hook follows.", + "enum": [ + "document-version.ready", + "document-version.rejected", + "document-grant.changed" + ], + "type": "string" + }, + "LocalId": { + "description": "A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.", + "pattern": "^[a-z][a-z0-9_-]{0,63}$", + "type": "string" + }, + "MandatoryRestrictions": { + "additionalProperties": false, + "description": "The restrictions every document held under a policy carries.", + "properties": { + "allowedContentTypes": { + "description": "The media types a document may be declared as, matched exactly.", + "items": { + "$ref": "#/$defs/ContentType" + }, + "maxItems": 16, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "cleanupGraceHours": { + "description": "Time between the custodian's removal request, or a rejection, and\nerasure of the bytes, and the length of a reservation's upload\nwindow. At least one hour, so an operator always has a window to\nrestore from a mistaken request. Grant expiry and revocation erase\nnothing: they only stop a grant releasing.", + "format": "uint32", + "maximum": 8760, + "minimum": 1, + "type": "integer" + }, + "grantExpiryHours": { + "format": "uint32", + "maximum": 8760, + "minimum": 1, + "type": "integer" + }, + "maximumCustodianBytes": { + "description": "The bytes one custodian may hold under this policy, counted over\nevery reserved or stored version not yet erased and checked at\nreservation.", + "format": "uint64", + "maximum": 1099511627776, + "minimum": 1, + "type": "integer" + }, + "maximumDocumentBytes": { + "description": "The largest document a reservation may declare. It may not exceed\nthe deployment ceiling `storage.maximumDocumentBytes`; the runtime\nrefuses to start otherwise.", + "format": "uint64", + "maximum": 1073741824, + "minimum": 1, + "type": "integer" + }, + "maximumGrantExpiryHours": { + "format": "uint32", + "maximum": 8760, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "maximumDocumentBytes", + "maximumCustodianBytes", + "allowedContentTypes", + "grantExpiryHours", + "maximumGrantExpiryHours", + "cleanupGraceHours" + ], + "type": "object" + }, + "ProjectIdentity": { + "additionalProperties": false, + "description": "The members that name a project (CFG-ENV-6): a project's `project` block\nholds these, and may add project-wide members of the product's own.\nSchema name `ProjectIdentity`.", + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "version": { + "type": "string" + } + }, + "required": [ + "id", + "version" + ], + "type": "object" + }, + "RepresentedPrincipalGrants": { + "description": "Whether a represented principal may issue document grants itself.", + "enum": [ + "refused", + "permitted" + ], + "type": "string" + } + }, + "$id": "https://id.registrystack.org/schemas/documents/project/project.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "description": "The authored project document, `documents.yaml`.", + "properties": { + "accessProfiles": { + "additionalProperties": { + "$ref": "#/$defs/AccessProfile" + }, + "description": "The caller profiles a document policy names, by id.", + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "apiVersion": { + "const": "id.registrystack.org/formats/documents/project/v1alpha1", + "type": "string" + }, + "documentPolicies": { + "additionalProperties": { + "$ref": "#/$defs/DocumentPolicy" + }, + "description": "The policies a document is held under, by id.", + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "hooks": { + "description": "After-commit observer hooks. A project with none omits the member.", + "items": { + "$ref": "#/$defs/HookPolicy" + }, + "type": "array" + }, + "kind": { + "const": "DocumentsProject", + "type": "string" + }, + "project": { + "$ref": "#/$defs/ProjectIdentity" + } + }, + "required": [ + "apiVersion", + "kind", + "project", + "accessProfiles", + "documentPolicies" + ], + "title": "Registry Stack Document Store project", + "type": "object" +} diff --git a/public/artifacts/sha256/2948465f69e8dd8856e245826adb47addbb0b0b3ae5a4a3eece660dfa77ba060.json b/public/artifacts/sha256/2948465f69e8dd8856e245826adb47addbb0b0b3ae5a4a3eece660dfa77ba060.json new file mode 100644 index 000000000..dc99c488b --- /dev/null +++ b/public/artifacts/sha256/2948465f69e8dd8856e245826adb47addbb0b0b3ae5a4a3eece660dfa77ba060.json @@ -0,0 +1,4486 @@ +{ + "$defs": { + "AccessLogExemptionSource": { + "additionalProperties": false, + "description": "Delayed subject disclosure for reads under one access profile.", + "properties": { + "delayDays": { + "description": "Days after the read when the entry becomes visible to the subject.", + "format": "uint16", + "maximum": 3649, + "minimum": 1, + "type": "integer" + }, + "reason": { + "allOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + ], + "description": "Bounded policy reason retained and audited with each delayed entry." + }, + "sourceRecordType": { + "description": "Record type whose access profile authorizes the read. Omitted for direct reads of the logged record type.", + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-z][a-z0-9_-]*$", + "type": "string" + } + }, + "required": [ + "reason", + "delayDays" + ], + "type": "object" + }, + "AccessLogSource": { + "additionalProperties": false, + "description": "Governed subject-facing access-log policy for an entity.", + "properties": { + "exemptions": { + "additionalProperties": { + "$ref": "#/$defs/AccessLogExemptionSource" + }, + "description": "Access profiles whose entries become subject-visible only after a policy delay.", + "maxProperties": 64, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "retentionDays": { + "default": 90, + "description": "Days each entry remains available before bounded background erasure.", + "format": "uint16", + "maximum": 3650, + "minimum": 1, + "type": "integer" + }, + "subjectField": { + "description": "Required plaintext string or text field matched to the subject's verified principal.", + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-z][a-z0-9_-]*$", + "type": "string" + }, + "trustedIntermediaries": { + "description": "Verified intermediary client IDs allowed to forward original requester attribution.", + "items": { + "type": "string" + }, + "maxItems": 64, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "subjectField" + ], + "type": "object" + }, + "AccessProfileSource": { + "additionalProperties": false, + "properties": { + "actorKind": { + "$ref": "#/$defs/ActorKindSource" + }, + "allowCount": { + "type": "boolean" + }, + "allowDataExport": { + "default": false, + "type": "boolean" + }, + "default": { + "default": false, + "type": "boolean" + }, + "display": { + "$ref": "#/$defs/PresentationSource" + }, + "filterableFields": { + "default": [], + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "lookups": { + "items": { + "$ref": "#/$defs/LookupPermissionSource" + }, + "type": "array" + }, + "membershipBoundaries": { + "items": { + "$ref": "#/$defs/MembershipBoundarySource" + }, + "type": "array" + }, + "operations": { + "items": { + "$ref": "#/$defs/Operation" + }, + "type": "array", + "uniqueItems": true + }, + "principalClaim": { + "description": "The token claim that names the caller. Every profile serves authenticated callers, so every profile names one.", + "type": "string" + }, + "provenanceFields": { + "items": { + "$ref": "#/$defs/ProvenanceFieldSource" + }, + "type": "array", + "uniqueItems": true + }, + "readPaths": { + "items": { + "$ref": "#/$defs/ReadPathPermissionSource" + }, + "type": "array" + }, + "readableFields": { + "default": [], + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "requesterClients": { + "description": "The OAuth clients whose tokens may select this profile. Omit to accept every client.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "requireConsent": { + "items": { + "$ref": "#/$defs/ConsentRequirementSource" + }, + "type": "array" + }, + "requiredPurposes": { + "description": "The verified token's purpose must match one listed value. Omit to accept every purpose.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "requiredScopes": { + "$ref": "#/$defs/RequiredScopes", + "description": "The scopes the verified token must carry: `unrestricted`, or a list of at least one scope, all of which must be present." + }, + "revisionAccess": { + "default": false, + "type": "boolean" + }, + "rowBoundaries": { + "$ref": "#/$defs/RowBoundaries", + "description": "Row reach: `unrestricted`, or a list of at least one row boundary." + }, + "sortableFields": { + "default": [], + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "spatialQueries": { + "$ref": "#/$defs/SpatialQueryPermissionSource" + }, + "taskGrant": { + "$ref": "#/$defs/CompiledTaskGrantSource" + }, + "writableFields": { + "default": [], + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "id", + "principalClaim", + "requiredScopes", + "operations", + "rowBoundaries" + ], + "type": "object" + }, + "AccessRequirementsSource": { + "additionalProperties": false, + "description": "Compile-time requirements, not grants. Profiles must explicitly satisfy them.", + "properties": { + "allowedPurposes": { + "description": "Every profile must restrict purpose to a subset of these values. Omit to demand no purpose.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "requiredScopes": { + "description": "Every profile must require all these scopes. Requirements never grant access. Omit to demand no scope.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "rowBoundaries": { + "description": "Every profile must include these exact field, verified-claim, and operator bindings. Omit to demand no row boundary.", + "items": { + "$ref": "#/$defs/RowBoundarySource" + }, + "minItems": 1, + "type": "array" + } + }, + "type": "object" + }, + "ActionEffectSource": { + "additionalProperties": false, + "properties": { + "clear": { + "default": [], + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "operation": { + "$ref": "#/$defs/Operation" + }, + "set": { + "additionalProperties": { + "$ref": "#/$defs/ActionValueSource" + }, + "default": {}, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "target": { + "$ref": "#/$defs/ActionTargetSource" + } + }, + "required": [ + "target", + "operation" + ], + "type": "object" + }, + "ActionEvidenceSource": { + "additionalProperties": false, + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "maximumObservationAgeSeconds": { + "format": "uint64", + "maximum": 300, + "minimum": 1, + "type": "integer" + }, + "outputs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "provider": { + "type": "string" + }, + "requirement": { + "type": "string" + }, + "subjects": { + "additionalProperties": { + "$ref": "#/$defs/EvidenceSubjectSource" + }, + "propertyNames": { + "$ref": "#/$defs/ExternalId" + }, + "type": "object" + } + }, + "required": [ + "id", + "provider", + "requirement", + "subjects", + "outputs", + "maximumObservationAgeSeconds" + ], + "type": "object" + }, + "ActionExecutionSource": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "mode": { + "const": "immediate", + "type": "string" + } + }, + "required": [ + "mode" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "mode": { + "const": "proposal", + "type": "string" + }, + "proposal": { + "$ref": "#/$defs/ProposalPolicySource" + } + }, + "required": [ + "mode", + "proposal" + ], + "type": "object" + } + ] + }, + "ActionHandlerKindSource": { + "description": "The authored action-handler backend. The wasm backend is admitted when\nthis build of the compiler carries the `wasm` cargo feature, which\nvalidates a declared WASM handler module against the platform guest\nABI at compile time; without that feature a declared WASM handler is\nrefused with the pinned `breg.action.handler-wasm-build-unsupported`\ndiagnostic.", + "enum": [ + "rhai", + "wasm" + ], + "type": "string" + }, + "ActionHandlerRefusalSource": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "label": { + "$ref": "#/$defs/DisplayText" + } + }, + "required": [ + "code", + "label" + ], + "type": "object" + }, + "ActionHandlerWriteSource": { + "additionalProperties": false, + "properties": { + "fields": { + "items": { + "type": "string" + }, + "type": "array" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "operation": { + "$ref": "#/$defs/Operation" + }, + "target": { + "$ref": "#/$defs/ActionTargetSource" + } + }, + "required": [ + "id", + "target", + "operation", + "fields" + ], + "type": "object" + }, + "ActionInputSource": { + "anyOf": [ + { + "oneOf": [ + { + "properties": { + "type": { + "const": "boolean", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "properties": { + "maximumLength": { + "format": "uint32", + "maximum": 1000000, + "minimum": 1, + "type": "integer" + }, + "minimumLength": { + "default": 0, + "format": "uint32", + "maximum": 1000000, + "minimum": 0, + "type": "integer" + }, + "type": { + "const": "string", + "type": "string" + } + }, + "required": [ + "type", + "maximumLength" + ], + "type": "object" + }, + { + "properties": { + "maximumLength": { + "format": "uint32", + "maximum": 10000000, + "minimum": 1, + "type": "integer" + }, + "type": { + "const": "text", + "type": "string" + } + }, + "required": [ + "type", + "maximumLength" + ], + "type": "object" + }, + { + "properties": { + "type": { + "const": "int64", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "properties": { + "maximum": { + "type": "string" + }, + "minimum": { + "type": "string" + }, + "precision": { + "format": "uint32", + "maximum": 38, + "minimum": 1, + "type": "integer" + }, + "scale": { + "format": "uint32", + "maximum": 38, + "minimum": 0, + "type": "integer" + }, + "type": { + "const": "decimal", + "type": "string" + } + }, + "required": [ + "type", + "precision", + "scale" + ], + "type": "object" + }, + { + "properties": { + "type": { + "const": "date", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "properties": { + "type": { + "const": "timestamp", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "properties": { + "type": { + "const": "uuid", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "properties": { + "type": { + "const": "vocabulary-code", + "type": "string" + }, + "values": { + "default": [], + "items": { + "type": "string" + }, + "type": "array" + }, + "vocabulary": { + "type": "string" + } + }, + "required": [ + "type", + "vocabulary" + ], + "type": "object" + }, + { + "properties": { + "onDelete": { + "$ref": "#/$defs/ReferenceDelete", + "default": "restrict" + }, + "target": { + "type": "string" + }, + "type": { + "const": "reference", + "type": "string" + } + }, + "required": [ + "type", + "target" + ], + "type": "object" + }, + { + "properties": { + "bbox": { + "$ref": "#/$defs/Crs84BboxSource" + }, + "precision": { + "format": "uint32", + "maximum": 9, + "minimum": 0, + "type": "integer" + }, + "type": { + "const": "crs84-point", + "type": "string" + } + }, + "required": [ + "type", + "precision" + ], + "type": "object" + }, + { + "properties": { + "maximumBytes": { + "format": "uint32", + "maximum": 1048576, + "minimum": 1, + "type": "integer" + }, + "schema": { + "x-registry-foreign": "json-schema-2020-12" + }, + "type": { + "const": "structured", + "type": "string" + } + }, + "required": [ + "type", + "maximumBytes", + "schema" + ], + "type": "object" + } + ], + "properties": { + "apiName": { + "type": "string" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource", + "default": {} + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "pattern": { + "description": "Native PostgreSQL ARE expression the submitted string must match, in the\ndialect and with the bounds of a Record field `pattern`.", + "type": "string" + }, + "required": { + "default": false, + "type": "boolean" + } + }, + "required": [ + "id", + "classification" + ], + "type": "object", + "unevaluatedProperties": false + }, + { + "additionalProperties": false, + "properties": { + "apiName": { + "type": "string" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "pattern": { + "type": "string" + }, + "required": { + "default": false, + "type": "boolean" + }, + "typeRef": { + "$ref": "#/$defs/LocalId" + } + }, + "required": [ + "id", + "typeRef", + "classification" + ], + "type": "object" + } + ] + }, + "ActionPlanSource": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "effects": { + "items": { + "$ref": "#/$defs/ActionEffectSource" + }, + "type": "array" + }, + "type": { + "const": "fixed", + "type": "string" + } + }, + "required": [ + "type", + "effects" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "function": { + "type": "string" + }, + "inputs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "refusals": { + "default": [], + "items": { + "$ref": "#/$defs/ActionHandlerRefusalSource" + }, + "type": "array" + }, + "type": { + "const": "function", + "type": "string" + }, + "writes": { + "items": { + "$ref": "#/$defs/ActionHandlerWriteSource" + }, + "type": "array" + } + }, + "required": [ + "type", + "function", + "inputs", + "writes" + ], + "type": "object" + } + ] + }, + "ActionRequirementSource": { + "additionalProperties": false, + "properties": { + "atLeast": { + "format": "int64", + "maximum": 9223372036854775807, + "minimum": -9223372036854775808, + "type": "integer" + }, + "atLeastFromInput": { + "description": "Requires the stored value to be at or above the named required action\ninput of the same date, instant, or integer type.", + "type": "string" + }, + "atMost": { + "format": "int64", + "maximum": 9223372036854775807, + "minimum": -9223372036854775808, + "type": "integer" + }, + "atMostFromInput": { + "description": "Requires the stored value to be at or below the named required action\ninput of the same date, instant, or integer type.", + "type": "string" + }, + "currentDate": { + "$ref": "#/$defs/CurrentDatePredicateSource" + }, + "equals": { + "$ref": "#/$defs/ScalarLiteral" + }, + "equalsFromInput": { + "type": "string" + }, + "field": { + "default": "", + "type": "string" + }, + "input": { + "type": "string" + }, + "isNull": { + "const": true, + "description": "Requires the stored value to be unset. Only `true` is read.", + "type": "boolean" + }, + "reason": { + "$ref": "#/$defs/LocalId", + "description": "Stable application copy key; disclosure still requires readable guard facts." + }, + "revision": { + "$ref": "#/$defs/GuardRevisionSource" + } + }, + "required": [ + "input" + ], + "type": "object" + }, + "ActionSource": { + "additionalProperties": false, + "properties": { + "apiName": { + "type": "string" + }, + "commitGuards": { + "$ref": "#/$defs/CommitGuardsSource", + "default": { + "evidence": [], + "targets": [] + } + }, + "consentIssuer": { + "$ref": "#/$defs/ConsentIssuerSource" + }, + "display": { + "$ref": "#/$defs/ModelDisplaySource", + "default": {} + }, + "evidence": { + "items": { + "$ref": "#/$defs/ActionEvidenceSource" + }, + "type": "array" + }, + "execution": { + "$ref": "#/$defs/ActionExecutionSource" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "inputs": { + "default": [], + "items": { + "$ref": "#/$defs/ActionInputSource" + }, + "type": "array" + }, + "plan": { + "$ref": "#/$defs/ActionPlanSource" + } + }, + "required": [ + "id", + "execution", + "plan" + ], + "type": "object" + }, + "ActionTargetSource": { + "additionalProperties": false, + "properties": { + "fromInput": { + "type": "string" + }, + "recordType": { + "type": "string" + } + }, + "type": "object" + }, + "ActionValueSource": { + "additionalProperties": false, + "properties": { + "fromEffect": { + "type": "string" + }, + "fromInput": { + "type": "string" + }, + "value": true + }, + "type": "object" + }, + "ActorKindSource": { + "enum": [ + "human", + "agent", + "service" + ], + "type": "string" + }, + "AttachmentSlotSource": { + "additionalProperties": false, + "properties": { + "classification": { + "$ref": "#/$defs/Classification" + }, + "contentTypes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "maximumBytes": { + "format": "uint32", + "maximum": 16777216, + "minimum": 1, + "type": "integer" + }, + "required": { + "type": "boolean" + } + }, + "required": [ + "id", + "required", + "maximumBytes", + "contentTypes", + "classification" + ], + "type": "object" + }, + "BatchSource": { + "additionalProperties": false, + "properties": { + "maximumBytes": { + "format": "uint32", + "maximum": 2097152, + "minimum": 1, + "type": "integer" + }, + "maximumItems": { + "format": "uint32", + "maximum": 100, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "maximumItems", + "maximumBytes" + ], + "type": "object" + }, + "BooleanFieldSourceSchema": { + "additionalProperties": false, + "properties": { + "apiName": { + "type": "string" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "required": { + "default": false, + "type": "boolean" + }, + "type": { + "enum": [ + "boolean" + ], + "type": "string" + }, + "validTimeRole": { + "$ref": "#/$defs/ValidTimeRole" + } + }, + "required": [ + "id", + "type", + "classification" + ], + "type": "object" + }, + "BoundaryOperator": { + "enum": [ + "equals", + "in" + ], + "type": "string" + }, + "Classification": { + "enum": [ + "public", + "internal", + "restricted" + ], + "type": "string" + }, + "CommitEvidenceRequirementSource": { + "additionalProperties": false, + "properties": { + "atLeast": { + "format": "int64", + "maximum": 9223372036854775807, + "minimum": -9223372036854775808, + "type": "integer" + }, + "atMost": { + "format": "int64", + "maximum": 9223372036854775807, + "minimum": -9223372036854775808, + "type": "integer" + }, + "equals": true, + "equalsFromInput": { + "type": "string" + }, + "output": { + "type": "string" + } + }, + "required": [ + "output" + ], + "type": "object" + }, + "CommitEvidenceSelectorSource": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "input": { + "type": "string" + }, + "type": { + "const": "input", + "type": "string" + } + }, + "required": [ + "type", + "input" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "field": { + "type": "string" + }, + "input": { + "type": "string" + }, + "type": { + "const": "target-field", + "type": "string" + } + }, + "required": [ + "type", + "input", + "field" + ], + "type": "object" + } + ] + }, + "CommitEvidenceSource": { + "additionalProperties": false, + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "maximumObservationAgeSeconds": { + "format": "uint64", + "maximum": 300, + "minimum": 1, + "type": "integer" + }, + "provider": { + "type": "string" + }, + "requirement": { + "type": "string" + }, + "requires": { + "default": [], + "items": { + "$ref": "#/$defs/CommitEvidenceRequirementSource" + }, + "type": "array" + }, + "subjects": { + "additionalProperties": { + "$ref": "#/$defs/CommitEvidenceSubjectSource" + }, + "propertyNames": { + "$ref": "#/$defs/ExternalId" + }, + "type": "object" + } + }, + "required": [ + "id", + "provider", + "requirement", + "subjects", + "maximumObservationAgeSeconds" + ], + "type": "object" + }, + "CommitEvidenceSubjectSource": { + "additionalProperties": false, + "properties": { + "profile": { + "type": "string" + }, + "selectors": { + "additionalProperties": { + "$ref": "#/$defs/CommitEvidenceSelectorSource" + }, + "description": "Exact governed selector-profile field map. Every profile field must be\npresent exactly once and no undeclared field is admitted.", + "propertyNames": { + "$ref": "#/$defs/ExternalId" + }, + "type": "object" + } + }, + "required": [ + "profile", + "selectors" + ], + "type": "object" + }, + "CommitGuardsSource": { + "additionalProperties": false, + "properties": { + "evidence": { + "default": [], + "items": { + "$ref": "#/$defs/CommitEvidenceSource" + }, + "type": "array" + }, + "targets": { + "default": [], + "items": { + "$ref": "#/$defs/ActionRequirementSource" + }, + "type": "array" + } + }, + "type": "object" + }, + "ComparisonOperator": { + "enum": [ + "less-than", + "less-than-or-equal", + "greater-than", + "greater-than-or-equal" + ], + "type": "string" + }, + "CompiledTaskGrantPermissionSource": { + "additionalProperties": false, + "properties": { + "collection": { + "type": "string" + }, + "operations": { + "items": { + "$ref": "#/$defs/Operation" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "collection", + "operations" + ], + "type": "object" + }, + "CompiledTaskGrantSource": { + "additionalProperties": false, + "properties": { + "permissions": { + "items": { + "$ref": "#/$defs/CompiledTaskGrantPermissionSource" + }, + "type": "array" + }, + "sourceIssuer": { + "$ref": "#/$defs/Url" + } + }, + "required": [ + "sourceIssuer", + "permissions" + ], + "type": "object" + }, + "ConsentDecisionSource": { + "additionalProperties": false, + "description": "Maps the adopter's decision codes onto the engine's decision sets.", + "properties": { + "field": { + "type": "string" + }, + "gives": { + "description": "Codes that give consent.", + "items": { + "type": "string" + }, + "type": "array" + }, + "refusals": { + "description": "Revoke codes never shown to recipients.", + "items": { + "type": "string" + }, + "type": "array" + }, + "revokes": { + "description": "Codes that supersede every give on the same key ordered no later.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "field", + "gives", + "revokes" + ], + "type": "object" + }, + "ConsentIssuerSource": { + "description": "Who an action creates consent rows for.", + "oneOf": [ + { + "const": "self", + "description": "The subject, bound through a principal link entity.", + "type": "string" + }, + { + "const": "steward", + "description": "A reviewed steward act on the subject's behalf.", + "type": "string" + } + ] + }, + "ConsentRecordSource": { + "additionalProperties": false, + "description": "The fields of a consent-record entity the engine reads. Other fields are\nignored by consent enforcement.", + "properties": { + "decision": { + "$ref": "#/$defs/ConsentDecisionSource" + }, + "purpose": { + "description": "A vocabulary-code field compared with the verified request purpose.", + "type": "string" + }, + "recipient": { + "description": "A vocabulary-code field bound to `registry-recipients`.", + "type": "string" + }, + "scope": { + "description": "A vocabulary-code field bound to `registry-consent-scopes`.", + "type": "string" + }, + "subject": { + "description": "A reference field naming the protected subject row.", + "type": "string" + }, + "validity": { + "$ref": "#/$defs/ConsentValiditySource" + } + }, + "required": [ + "subject", + "recipient", + "purpose", + "scope", + "decision", + "validity" + ], + "type": "object" + }, + "ConsentRequirementSource": { + "additionalProperties": false, + "description": "A consent check ANDed into one read permission.", + "properties": { + "on": { + "description": "The permission entity's field the consent subject references; `id` is\nthe row's own identity.", + "type": "string" + }, + "record": { + "description": "The consent-record entity checked.", + "type": "string" + } + }, + "required": [ + "record", + "on" + ], + "type": "object" + }, + "ConsentValiditySource": { + "additionalProperties": false, + "description": "Validity of a consent decision. Every give expires within\n`maximumDurationDays`.", + "properties": { + "from": { + "description": "A required timestamp field; a give is active only from this time.", + "type": "string" + }, + "maximumDurationDays": { + "description": "The longest a give lasts, in whole days of 24 hours: at most 3652,\nten years.", + "format": "uint32", + "maximum": 3652, + "minimum": 1, + "type": "integer" + }, + "until": { + "description": "An optional timestamp field ending the give earlier than\n`maximumDurationDays`.", + "type": "string" + } + }, + "required": [ + "from", + "maximumDurationDays" + ], + "type": "object" + }, + "ConstraintSource": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "fields": { + "items": { + "type": "string" + }, + "type": "array" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "type": { + "const": "unique", + "type": "string" + }, + "when": { + "items": { + "$ref": "#/$defs/UniqueWhenPredicate" + }, + "type": "array" + } + }, + "required": [ + "type", + "fields" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "left": { + "type": "string" + }, + "operator": { + "$ref": "#/$defs/ComparisonOperator" + }, + "right": { + "type": "string" + }, + "type": { + "const": "compare", + "type": "string" + } + }, + "required": [ + "type", + "left", + "operator", + "right" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "field": { + "type": "string" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "maximum": { + "format": "int64", + "maximum": 9223372036854775807, + "minimum": -9223372036854775808, + "type": "integer" + }, + "minimum": { + "format": "int64", + "maximum": 9223372036854775807, + "minimum": -9223372036854775808, + "type": "integer" + }, + "type": { + "const": "int-range", + "type": "string" + } + }, + "required": [ + "type", + "field" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "field": { + "type": "string" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "type": { + "const": "vocabulary", + "type": "string" + }, + "values": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "type", + "field", + "values" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "endField": { + "type": "string" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "lastDayField": { + "description": "The inclusive last day, named in place of `endField` when the\nRecord type's interval declares `lastDayField`.", + "type": "string" + }, + "scopeFields": { + "items": { + "type": "string" + }, + "type": "array" + }, + "startField": { + "type": "string" + }, + "type": { + "const": "temporal-non-overlap", + "type": "string" + } + }, + "required": [ + "type", + "scopeFields" + ], + "type": "object" + } + ] + }, + "CorrectionRelation": { + "description": "How a later event record relates to the one it names.", + "oneOf": [ + { + "const": "corrects", + "description": "Amends an error in the named event record.", + "type": "string" + }, + { + "const": "supersedes", + "description": "Replaces the named event record as the current interpretation.", + "type": "string" + } + ] + }, + "Crs84BboxSource": { + "additionalProperties": false, + "properties": { + "east": { + "type": "string" + }, + "north": { + "type": "string" + }, + "south": { + "type": "string" + }, + "west": { + "type": "string" + } + }, + "required": [ + "west", + "south", + "east", + "north" + ], + "type": "object" + }, + "Crs84PointFieldSourceSchema": { + "additionalProperties": false, + "properties": { + "apiName": { + "type": "string" + }, + "bbox": { + "$ref": "#/$defs/Crs84BboxSource" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "precision": { + "format": "uint32", + "maximum": 9, + "minimum": 0, + "type": "integer" + }, + "required": { + "default": false, + "type": "boolean" + }, + "type": { + "enum": [ + "crs84-point" + ], + "type": "string" + }, + "validTimeRole": { + "$ref": "#/$defs/ValidTimeRole" + } + }, + "required": [ + "id", + "type", + "classification", + "precision" + ], + "type": "object" + }, + "CurrentDatePredicateSource": { + "enum": [ + "on-or-after", + "on-or-before" + ], + "type": "string" + }, + "DateFieldSourceSchema": { + "additionalProperties": false, + "properties": { + "apiName": { + "type": "string" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource" + }, + "encrypted": { + "default": false, + "type": "boolean" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "lookup": { + "$ref": "#/$defs/FieldLookupSource" + }, + "required": { + "default": false, + "type": "boolean" + }, + "type": { + "enum": [ + "date" + ], + "type": "string" + }, + "validTimeRole": { + "$ref": "#/$defs/ValidTimeRole" + } + }, + "required": [ + "id", + "type", + "classification" + ], + "type": "object" + }, + "DecimalFieldSourceSchema": { + "additionalProperties": false, + "properties": { + "apiName": { + "type": "string" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource" + }, + "encrypted": { + "default": false, + "type": "boolean" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "lookup": { + "$ref": "#/$defs/FieldLookupSource" + }, + "maximum": { + "type": "string" + }, + "minimum": { + "type": "string" + }, + "precision": { + "format": "uint32", + "maximum": 38, + "minimum": 1, + "type": "integer" + }, + "required": { + "default": false, + "type": "boolean" + }, + "scale": { + "format": "uint32", + "maximum": 38, + "minimum": 0, + "type": "integer" + }, + "type": { + "enum": [ + "decimal" + ], + "type": "string" + }, + "validTimeRole": { + "$ref": "#/$defs/ValidTimeRole" + } + }, + "required": [ + "id", + "type", + "classification", + "precision", + "scale" + ], + "type": "object" + }, + "DerivedExecutionSource": { + "enum": [ + "live" + ], + "type": "string" + }, + "DerivedFieldSource": { + "oneOf": [ + { + "properties": { + "type": { + "const": "boolean", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "properties": { + "maximumLength": { + "format": "uint32", + "maximum": 1000000, + "minimum": 1, + "type": "integer" + }, + "minimumLength": { + "default": 0, + "format": "uint32", + "maximum": 1000000, + "minimum": 0, + "type": "integer" + }, + "type": { + "const": "string", + "type": "string" + } + }, + "required": [ + "type", + "maximumLength" + ], + "type": "object" + }, + { + "properties": { + "maximumLength": { + "format": "uint32", + "maximum": 10000000, + "minimum": 1, + "type": "integer" + }, + "type": { + "const": "text", + "type": "string" + } + }, + "required": [ + "type", + "maximumLength" + ], + "type": "object" + }, + { + "properties": { + "type": { + "const": "int64", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "properties": { + "maximum": { + "type": "string" + }, + "minimum": { + "type": "string" + }, + "precision": { + "format": "uint32", + "maximum": 38, + "minimum": 1, + "type": "integer" + }, + "scale": { + "format": "uint32", + "maximum": 38, + "minimum": 0, + "type": "integer" + }, + "type": { + "const": "decimal", + "type": "string" + } + }, + "required": [ + "type", + "precision", + "scale" + ], + "type": "object" + }, + { + "properties": { + "type": { + "const": "date", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "properties": { + "type": { + "const": "timestamp", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "properties": { + "type": { + "const": "uuid", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "properties": { + "type": { + "const": "vocabulary-code", + "type": "string" + }, + "values": { + "default": [], + "items": { + "type": "string" + }, + "type": "array" + }, + "vocabulary": { + "type": "string" + } + }, + "required": [ + "type", + "vocabulary" + ], + "type": "object" + }, + { + "properties": { + "onDelete": { + "$ref": "#/$defs/ReferenceDelete", + "default": "restrict" + }, + "target": { + "type": "string" + }, + "type": { + "const": "reference", + "type": "string" + } + }, + "required": [ + "type", + "target" + ], + "type": "object" + }, + { + "properties": { + "bbox": { + "$ref": "#/$defs/Crs84BboxSource" + }, + "precision": { + "format": "uint32", + "maximum": 9, + "minimum": 0, + "type": "integer" + }, + "type": { + "const": "crs84-point", + "type": "string" + } + }, + "required": [ + "type", + "precision" + ], + "type": "object" + }, + { + "properties": { + "maximumBytes": { + "format": "uint32", + "maximum": 1048576, + "minimum": 1, + "type": "integer" + }, + "schema": { + "x-registry-foreign": "json-schema-2020-12" + }, + "type": { + "const": "structured", + "type": "string" + } + }, + "required": [ + "type", + "maximumBytes", + "schema" + ], + "type": "object" + } + ], + "properties": { + "apiName": { + "type": "string" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource" + }, + "id": { + "$ref": "#/$defs/LocalId" + } + }, + "required": [ + "id", + "classification" + ], + "type": "object", + "unevaluatedProperties": false + }, + "DerivedSource": { + "additionalProperties": false, + "properties": { + "execution": { + "$ref": "#/$defs/DerivedExecutionSource", + "default": "live" + }, + "fields": { + "default": [], + "items": { + "$ref": "#/$defs/DerivedFieldSource" + }, + "type": "array" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "key": { + "type": "string" + }, + "sql": { + "type": "string" + } + }, + "required": [ + "id", + "sql", + "key" + ], + "type": "object" + }, + "Digest": { + "description": "A SHA-256 digest: `sha256:` followed by 64 lowercase hex digits.", + "pattern": "^sha256:[0-9a-f]{64}$", + "type": "string" + }, + "DisplayPurpose": { + "description": "The purpose a Record or Action declares for itself.", + "enum": [ + "domain", + "processing", + "technical", + "synthetic-seed" + ], + "type": "string" + }, + "DisplaySource": { + "additionalProperties": false, + "properties": { + "description": { + "$ref": "#/$defs/DisplayText" + }, + "label": { + "$ref": "#/$defs/DisplayText" + }, + "titleField": { + "type": "string" + } + }, + "type": "object" + }, + "DisplayText": { + "description": "Human-readable display text. Bidirectional embedding, override, and isolate controls, byte-order marks, line and paragraph separators, and Unicode noncharacters are refused; multilingual joiners and direction marks remain valid.", + "not": { + "pattern": "[

‪-‮⁦-⁩﷐-﷯￾￿]|🿾|🿿|𯿾|𯿿|𿿾|𿿿|񏿾|񏿿|񟿾|񟿿|񯿾|񯿿|񿿾|񿿿|򏿾|򏿿|򟿾|򟿿|򯿾|򯿿|򿿾|򿿿|󏿾|󏿿|󟿾|󟿿|󯿾|󯿿|󿿾|󿿿|􏿾|􏿿" + }, + "type": "string" + }, + "DuplicatePolicy": { + "description": "What the author says about the same source event arriving twice.", + "enum": [ + "reject", + "allow" + ], + "type": "string" + }, + "EffectiveTimeSource": { + "additionalProperties": false, + "description": "A point or a span of effect. An open end means the effect has no end.", + "properties": { + "at": { + "type": "string" + }, + "end": { + "type": "string" + }, + "start": { + "type": "string" + } + }, + "type": "object" + }, + "EntityExtensionSource": { + "additionalProperties": false, + "properties": { + "accessProfiles": { + "default": [], + "description": "Module profile contributions, read through the sentinels a project profile uses.", + "items": { + "$ref": "#/$defs/AccessProfileSource" + }, + "type": "array" + }, + "accessRequirements": { + "$ref": "#/$defs/AccessRequirementsSource", + "description": "Add mandatory requirements only when the entity has none; replacing them is refused." + }, + "constraints": { + "default": [], + "items": { + "$ref": "#/$defs/ConstraintSource" + }, + "type": "array" + }, + "derived": { + "items": { + "$ref": "#/$defs/DerivedSource" + }, + "type": "array" + }, + "fields": { + "default": [], + "items": { + "$ref": "#/$defs/FieldSource" + }, + "type": "array" + }, + "geojson": { + "$ref": "#/$defs/GeoJsonSource" + }, + "hooks": { + "default": [], + "items": { + "$ref": "#/$defs/HookSource" + }, + "type": "array" + }, + "indexes": { + "default": [], + "items": { + "$ref": "#/$defs/IndexSource" + }, + "type": "array" + }, + "mutationPolicy": { + "$ref": "#/$defs/MutationPolicySource" + }, + "readPaths": { + "items": { + "$ref": "#/$defs/ReadPathSource" + }, + "type": "array" + }, + "recordType": { + "type": "string" + }, + "selectorProfiles": { + "items": { + "$ref": "#/$defs/SelectorProfileSource" + }, + "type": "array" + }, + "timers": { + "description": "Additive timer definitions. Only a root-project `timerGrants` entry can\nenable a contributed timer.", + "items": { + "$ref": "#/$defs/TimerSource" + }, + "type": "array" + } + }, + "required": [ + "recordType" + ], + "type": "object" + }, + "EntitySource": { + "additionalProperties": false, + "properties": { + "accessLog": { + "$ref": "#/$defs/AccessLogSource", + "description": "Subject-facing record access history, separate from the operational audit." + }, + "accessProfiles": { + "default": [], + "description": "Module profile contributions, read through the sentinels a project profile uses.", + "items": { + "$ref": "#/$defs/AccessProfileSource" + }, + "type": "array" + }, + "accessRequirements": { + "$ref": "#/$defs/AccessRequirementsSource", + "description": "Mandatory request-access requirements checked against every profile, including module contributions." + }, + "apiName": { + "type": "string" + }, + "batch": { + "$ref": "#/$defs/BatchSource" + }, + "classification": { + "$ref": "#/$defs/Classification", + "default": "internal" + }, + "consentRecord": { + "$ref": "#/$defs/ConsentRecordSource", + "description": "Declares this entity's rows as subject-issued consent decisions that\n`requireConsent` permissions check before returning a subject's row." + }, + "constraints": { + "default": [], + "items": { + "$ref": "#/$defs/ConstraintSource" + }, + "type": "array" + }, + "derived": { + "items": { + "$ref": "#/$defs/DerivedSource" + }, + "type": "array" + }, + "display": { + "$ref": "#/$defs/ModelDisplaySource", + "default": {} + }, + "eventRecord": { + "$ref": "#/$defs/EventRecordSource", + "description": "Declares this record type's rows as event records: which fields\nsay what the row is about, when it happened, when it takes effect, what\nit was recorded from and what it corrects. It adds no storage, endpoint\nor authority." + }, + "fields": { + "default": [], + "items": { + "$ref": "#/$defs/FieldSource" + }, + "type": "array" + }, + "geojson": { + "$ref": "#/$defs/GeoJsonSource" + }, + "hooks": { + "default": [], + "items": { + "$ref": "#/$defs/HookSource" + }, + "type": "array" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "indexes": { + "default": [], + "items": { + "$ref": "#/$defs/IndexSource" + }, + "type": "array" + }, + "mutationMode": { + "$ref": "#/$defs/MutationMode" + }, + "mutationPolicy": { + "$ref": "#/$defs/MutationPolicySource" + }, + "primaryDataset": { + "type": "string" + }, + "readPaths": { + "items": { + "$ref": "#/$defs/ReadPathSource" + }, + "type": "array" + }, + "route": { + "type": "string" + }, + "selectorProfiles": { + "items": { + "$ref": "#/$defs/SelectorProfileSource" + }, + "type": "array" + }, + "temporal": { + "$ref": "#/$defs/TemporalSource" + }, + "timers": { + "items": { + "$ref": "#/$defs/TimerSource" + }, + "type": "array" + }, + "tombstone": { + "default": false, + "type": "boolean" + } + }, + "required": [ + "id", + "primaryDataset", + "route", + "mutationMode" + ], + "type": "object" + }, + "EventConditionSource": { + "additionalProperties": false, + "description": "Closed Version 1 event selection language.\n\nA tagged shape leaves room for a later, separately governed rule ABI\nwithout turning fields into an ad hoc expression language. The shared\nreader's union helper decodes it, so an error inside a variant keeps its\nposition (CFG-SCHEMA-8). An unset value is named in `beforeIsNull` or\n`afterIsNull`; `null` is never a comparison literal (CFG-EMPTY-1).", + "properties": { + "afterEquals": { + "additionalProperties": { + "$ref": "#/$defs/ScalarLiteral" + }, + "default": {}, + "description": "Required values after the change. Valid with created and patched triggers.", + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "afterIsNull": { + "default": [], + "description": "Fields that must be unset after the change. Valid with created and patched triggers.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "beforeEquals": { + "additionalProperties": { + "$ref": "#/$defs/ScalarLiteral" + }, + "default": {}, + "description": "Required values before the change. Valid with patched and tombstoned triggers.", + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "beforeIsNull": { + "default": [], + "description": "Fields that must be unset before the change. Valid with patched and tombstoned triggers.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "changed": { + "default": [], + "description": "Fields whose values must change. Only valid with the patched trigger.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "type": { + "const": "fields", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + "EventRecordCorrectionSource": { + "additionalProperties": false, + "properties": { + "field": { + "description": "A reference to a record type that also declares an event record.", + "type": "string" + }, + "relation": { + "$ref": "#/$defs/CorrectionRelation" + } + }, + "required": [ + "field", + "relation" + ], + "type": "object" + }, + "EventRecordRoleSource": { + "additionalProperties": false, + "description": "One named role played by a stored field.", + "properties": { + "external": { + "$ref": "#/$defs/ExternalReferenceSource", + "description": "Marks the field as an opaque identifier owned by another system." + }, + "field": { + "type": "string" + }, + "label": { + "$ref": "#/$defs/DisplayText" + }, + "role": { + "type": "string" + }, + "target": { + "description": "Asserts the record type a native reference field points at.", + "type": "string" + } + }, + "required": [ + "role", + "field" + ], + "type": "object" + }, + "EventRecordSource": { + "additionalProperties": false, + "description": "The record-level mapping of stored fields onto event record roles.", + "properties": { + "correction": { + "$ref": "#/$defs/EventRecordCorrectionSource" + }, + "effective": { + "$ref": "#/$defs/EffectiveTimeSource" + }, + "label": { + "$ref": "#/$defs/DisplayText" + }, + "occurredAt": { + "$ref": "#/$defs/EventRecordTimeSource" + }, + "sourceEventId": { + "$ref": "#/$defs/SourceEventIdSource" + }, + "sources": { + "description": "What the event record was recorded from. Recording a reference is not\nverifying it.", + "items": { + "$ref": "#/$defs/EventRecordRoleSource" + }, + "type": "array" + }, + "subjects": { + "description": "What the event record is about. At least one, at most 16. The serde\ndefault only lets compilation report the stable emptiness diagnostic.", + "items": { + "$ref": "#/$defs/EventRecordRoleSource" + }, + "type": "array" + }, + "summary": { + "description": "A `string` or `text` field holding a human summary.", + "type": "string" + } + }, + "required": [ + "subjects" + ], + "type": "object" + }, + "EventRecordTimeSource": { + "additionalProperties": false, + "description": "A point (`at`) or an interval (`start`, `end`, `meaning`). Flat optional\nmembers let the compiler address each shape error at its authored path.", + "properties": { + "at": { + "type": "string" + }, + "end": { + "type": "string" + }, + "meaning": { + "$ref": "#/$defs/IntervalMeaning" + }, + "start": { + "type": "string" + } + }, + "type": "object" + }, + "EventTrigger": { + "enum": [ + "created", + "patched", + "tombstoned" + ], + "type": "string" + }, + "EvidenceSubjectSource": { + "additionalProperties": false, + "properties": { + "profile": { + "type": "string" + } + }, + "required": [ + "profile" + ], + "type": "object" + }, + "ExternalId": { + "description": "An identifier another system issues, written exactly as its issuer gives it.", + "maxLength": 512, + "minLength": 1, + "pattern": "^[^\\u0000-\\u001F\\u007F-\\u009F]+$", + "type": "string" + }, + "ExternalReferenceSource": { + "additionalProperties": false, + "properties": { + "namespace": { + "description": "Absolute URI naming the system that owns the identifier.", + "type": "string" + } + }, + "required": [ + "namespace" + ], + "type": "object" + }, + "FieldGenerationSource": { + "description": "Server-side generation requested for a persisted business identifier.\n\nThe canonical record UUID remains independent. On a sequence, `scope`\nnames required, immutable stored fields whose values partition the\nnumbering. A random code has one namespace per field.", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "minimumDigits": { + "format": "uint32", + "maximum": 128, + "minimum": 1, + "type": "integer" + }, + "prefix": { + "default": "", + "maxLength": 128, + "pattern": "^[!-~]*$", + "type": "string" + }, + "scope": { + "default": [], + "items": { + "type": "string" + }, + "maxItems": 8, + "type": "array", + "uniqueItems": true + }, + "type": { + "const": "sequence", + "type": "string" + } + }, + "required": [ + "type", + "minimumDigits" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "length": { + "format": "uint32", + "maximum": 128, + "minimum": 1, + "type": "integer" + }, + "prefix": { + "default": "", + "maxLength": 128, + "pattern": "^[!-~]*$", + "type": "string" + }, + "type": { + "const": "random", + "type": "string" + } + }, + "required": [ + "type", + "length" + ], + "type": "object" + } + ] + }, + "FieldLookupSource": { + "additionalProperties": false, + "description": "The authored blind-index declaration for an encrypted field. Normalization\ncomposes in declared order over the canonical string form of the value;\n`unique` requests a unique index over the derived blind-index column.", + "properties": { + "normalization": { + "default": [], + "items": { + "$ref": "#/$defs/NormalizationStep" + }, + "maxItems": 8, + "type": "array" + }, + "unique": { + "default": false, + "type": "boolean" + } + }, + "type": "object" + }, + "FieldSource": { + "anyOf": [ + { + "$ref": "#/$defs/BooleanFieldSourceSchema" + }, + { + "$ref": "#/$defs/StringFieldSourceSchema" + }, + { + "$ref": "#/$defs/TextFieldSourceSchema" + }, + { + "$ref": "#/$defs/Int64FieldSourceSchema" + }, + { + "$ref": "#/$defs/DecimalFieldSourceSchema" + }, + { + "$ref": "#/$defs/DateFieldSourceSchema" + }, + { + "$ref": "#/$defs/TimestampFieldSourceSchema" + }, + { + "$ref": "#/$defs/UuidFieldSourceSchema" + }, + { + "$ref": "#/$defs/VocabularyCodeFieldSourceSchema" + }, + { + "$ref": "#/$defs/ReferenceFieldSourceSchema" + }, + { + "$ref": "#/$defs/Crs84PointFieldSourceSchema" + }, + { + "$ref": "#/$defs/StructuredFieldSourceSchema" + }, + { + "additionalProperties": false, + "properties": { + "apiName": { + "type": "string" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource" + }, + "encrypted": { + "default": false, + "type": "boolean" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "lookup": { + "$ref": "#/$defs/FieldLookupSource" + }, + "pattern": { + "type": "string" + }, + "relationship": { + "additionalProperties": false, + "properties": { + "inverseName": { + "pattern": "^[a-z][A-Za-z0-9]*$", + "type": "string" + } + }, + "type": "object" + }, + "required": { + "default": false, + "type": "boolean" + }, + "typeRef": { + "$ref": "#/$defs/LocalId" + }, + "validTimeRole": { + "$ref": "#/$defs/ValidTimeRole" + } + }, + "required": [ + "id", + "typeRef", + "classification" + ], + "type": "object" + } + ] + }, + "FunctionCapabilitySource": { + "enum": [ + "evidence" + ], + "type": "string" + }, + "FunctionLimitsSource": { + "additionalProperties": false, + "properties": { + "maximumOperations": { + "default": 10000, + "format": "uint64", + "maximum": 100000, + "minimum": 1, + "type": "integer" + }, + "maximumOutputBytes": { + "default": 8192, + "format": "uint32", + "maximum": 2097152, + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + }, + "FunctionSource": { + "additionalProperties": false, + "properties": { + "abi": { + "const": "registry.action-plan/v1", + "type": "string" + }, + "capabilities": { + "default": [], + "items": { + "$ref": "#/$defs/FunctionCapabilitySource" + }, + "type": "array", + "uniqueItems": true + }, + "entrypoint": { + "type": "string" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "limits": { + "$ref": "#/$defs/FunctionLimitsSource", + "default": { + "maximumOperations": 10000, + "maximumOutputBytes": 8192 + } + }, + "runtime": { + "$ref": "#/$defs/ActionHandlerKindSource" + }, + "source": { + "type": "string" + } + }, + "required": [ + "id", + "runtime", + "source", + "entrypoint", + "abi" + ], + "type": "object" + }, + "GeoJsonSource": { + "additionalProperties": false, + "properties": { + "geometryField": { + "type": "string" + } + }, + "required": [ + "geometryField" + ], + "type": "object" + }, + "GuardRevisionSource": { + "enum": [ + "unchanged" + ], + "type": "string" + }, + "HookHandlerSource": { + "description": "Where a hook's handler runs.\n\nThe pairing rule: `rhai` requires `script`, `wasm` requires `module`,\n`url` requires `destinationId`, and each\nkind requires exactly its own fields and nothing else. `abi` is required on\n`rhai` and `wasm` and forbidden on `url`; its value is closed and checked at\ncompile time in [`crate::validate_hooks`].", + "oneOf": [ + { + "additionalProperties": false, + "description": "A reviewed Rhai script in the project.", + "properties": { + "abi": { + "description": "The handler ABI the script speaks.", + "type": "string" + }, + "script": { + "description": "Script path in the project.", + "type": "string" + }, + "type": { + "const": "rhai", + "type": "string" + } + }, + "required": [ + "type", + "script" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "A reviewed WASM module in the project.", + "properties": { + "abi": { + "description": "The handler ABI the module speaks.", + "type": "string" + }, + "module": { + "description": "Module path in the project.", + "type": "string" + }, + "type": { + "const": "wasm", + "type": "string" + } + }, + "required": [ + "type", + "module" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "A logical destination bound to a URL and a secret at runtime. The\nruntime names the binding it looks the key up in; the project carries\nno URL or secret.", + "properties": { + "destinationId": { + "description": "Key in the runtime destination binding.", + "type": "string" + }, + "type": { + "const": "url", + "type": "string" + } + }, + "required": [ + "type", + "destinationId" + ], + "type": "object" + } + ] + }, + "HookPhase": { + "description": "When the hook runs relative to the triggering transaction.", + "oneOf": [ + { + "const": "before", + "description": "Runs inside the triggering transaction and may refuse or shape the\nchange. Local handler kinds only.", + "type": "string" + }, + { + "const": "after", + "description": "Runs after commit in the post-commit worker and cannot affect the\ntriggering transaction.", + "type": "string" + } + ] + }, + "HookSource": { + "additionalProperties": false, + "description": "One declared hook on an entity.\n\nThe shape is [`registry_platform_hooks::HookDeclaration`] with `trigger`\nand `when` closed to the vocabulary this compiler validates, and with\n`handler` optional. A hook that declares no handler is still recorded in\nthe outbox and delivered nowhere; production compilation refuses that.\n\nEntity hooks run after the triggering transaction commits, so `phase` is\nwritten and the compiler refuses any value it cannot run.", + "properties": { + "display": { + "$ref": "#/$defs/PresentationSource", + "description": "Authored presentation only; labels never establish identity or authority." + }, + "handler": { + "$ref": "#/$defs/HookHandlerSource", + "description": "Governed, destination-neutral delivery. `destinationId` is a key in\nruntime `destinations.hooks`; the project carries no URL or secret, and\ndeployment configuration may tighten the bounds it binds but cannot\nsupply or widen this authority. Production compilation requires it." + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "Stable hook contract identifier, sent as `ce-type`. Use a new identifier for a breaking payload change." + }, + "phase": { + "$ref": "#/$defs/HookPhase", + "description": "When the hook runs relative to the triggering transaction." + }, + "principal": { + "description": "The access profile a proposal from this hook is applied under.\nOptional: a hook that declares none is a non-proposing hook, and a\nproposal from one is refused and dead-lettered at delivery time.\nDeclaring none is not an authoring error.", + "type": "string" + }, + "projection": { + "description": "Declared field identifiers to include in `values`. System event metadata is included separately.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "trigger": { + "$ref": "#/$defs/EventTrigger", + "description": "Committed record change that can produce this hook." + }, + "when": { + "$ref": "#/$defs/EventConditionSource", + "description": "Optional field tests, combined with AND. Omit to run on every matching trigger." + } + }, + "required": [ + "id", + "phase", + "trigger", + "projection" + ], + "type": "object" + }, + "IndexSource": { + "additionalProperties": false, + "properties": { + "fields": { + "items": { + "type": "string" + }, + "maxItems": 31, + "type": "array" + }, + "id": { + "$ref": "#/$defs/LocalId" + } + }, + "required": [ + "id", + "fields" + ], + "type": "object" + }, + "Int64FieldSourceSchema": { + "additionalProperties": false, + "properties": { + "apiName": { + "type": "string" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "required": { + "default": false, + "type": "boolean" + }, + "type": { + "enum": [ + "int64" + ], + "type": "string" + }, + "validTimeRole": { + "$ref": "#/$defs/ValidTimeRole" + } + }, + "required": [ + "id", + "type", + "classification" + ], + "type": "object" + }, + "IntervalMeaning": { + "description": "What an event record's interval says about the event.", + "oneOf": [ + { + "const": "span", + "description": "The event lasted from start to end.", + "type": "string" + }, + { + "const": "within", + "description": "The event happened at an unknown instant between start and end.", + "type": "string" + } + ] + }, + "LocalId": { + "description": "A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.", + "pattern": "^[a-z][a-z0-9_-]{0,63}$", + "type": "string" + }, + "LookupPermissionSource": { + "additionalProperties": false, + "properties": { + "claimMapping": { + "additionalProperties": { + "type": "string" + }, + "default": {}, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "selector": { + "type": "string" + }, + "valueOrigin": { + "$ref": "#/$defs/LookupValueOrigin" + } + }, + "required": [ + "selector", + "valueOrigin" + ], + "type": "object" + }, + "LookupValueOrigin": { + "enum": [ + "request", + "verified-claim" + ], + "type": "string" + }, + "MembershipBoundarySource": { + "additionalProperties": false, + "description": "A one-hop current membership requirement, combined with every other row boundary.\nThe root field and membership key must reference the same entity. The active\nfield is Boolean, and principalField matches the profile's verified principal.", + "properties": { + "activeField": { + "type": "string" + }, + "field": { + "type": "string" + }, + "membershipKeyField": { + "type": "string" + }, + "membershipRecordType": { + "type": "string" + }, + "principalField": { + "type": "string" + } + }, + "required": [ + "field", + "membershipRecordType", + "membershipKeyField", + "principalField", + "activeField" + ], + "type": "object" + }, + "ModelDisplaySource": { + "additionalProperties": false, + "description": "How a Record or Action is presented in the declared-model view. It adds\npresentation-only grouping, which no runtime surface reads, to the plain\ndisplay text members.", + "properties": { + "description": { + "$ref": "#/$defs/DisplayText" + }, + "group": { + "$ref": "#/$defs/DisplayText", + "description": "Display group; objects sharing the exact string are listed together." + }, + "label": { + "$ref": "#/$defs/DisplayText" + }, + "purpose": { + "$ref": "#/$defs/DisplayPurpose", + "description": "What the object is for. Presentation only." + }, + "titleField": { + "type": "string" + } + }, + "type": "object" + }, + "MutationMode": { + "enum": [ + "mutable", + "create-only" + ], + "type": "string" + }, + "MutationPolicyMode": { + "enum": [ + "direct", + "proposal-required" + ], + "type": "string" + }, + "MutationPolicySource": { + "additionalProperties": false, + "properties": { + "create": { + "$ref": "#/$defs/MutationPolicyMode" + }, + "patch": { + "$ref": "#/$defs/MutationPolicyMode" + }, + "tombstone": { + "$ref": "#/$defs/MutationPolicyMode" + } + }, + "type": "object" + }, + "NormalizationStep": { + "description": "A normalization step applied to the canonical string form of an encrypted\nvalue before its blind index is derived. The vocabulary is closed.", + "oneOf": [ + { + "enum": [ + "trim", + "uppercase", + "lowercase", + "collapse-whitespace" + ], + "type": "string" + }, + { + "const": "remove-separators", + "description": "Strips spaces, hyphens, slashes, and dots from the canonical form.", + "type": "string" + }, + { + "const": "nfc", + "description": "Canonical composition (Unicode NFC), so a precomposed letter and its\nbase letter plus combining mark give the same value. Compatibility\nforms such as ligatures are not mapped.", + "type": "string" + }, + { + "const": "case-fold", + "description": "NFC, then full Unicode case folding with no locale tailoring, then NFC\nagain: `ß` and `ẞ` fold to `ss`, `ς` folds to `σ`, canonically\nequivalent spellings fold alike whatever the order of their combining\nmarks, and a capital that folds to a decomposed sequence is composed\nagain. Unlike `lowercase` it is meant for matching, so it is the case\nstep to pair with `nfc`.", + "type": "string" + } + ] + }, + "Operation": { + "oneOf": [ + { + "enum": [ + "create", + "get", + "lookup", + "list", + "patch", + "tombstone", + "batch", + "revisions", + "snapshot", + "invoke", + "start" + ], + "type": "string" + }, + { + "const": "import", + "description": "Create records through a durable ingestion run, and nothing else. The\ngrant is enabled only while an operator-opened import authority is open\nfor the entity and profile. It declares no item route and no raw batch\nroute, and change control does not count it as a direct write.", + "type": "string" + } + ] + }, + "PolicySelectionSource": { + "additionalProperties": false, + "dependentRequired": { + "digest": [ + "version" + ], + "version": [ + "digest" + ] + }, + "properties": { + "digest": { + "$ref": "#/$defs/Digest" + }, + "id": { + "$comment": "The review protocol also bounds UTF-8 bytes, which the reader checks without restricting externally issued identifiers to ASCII.", + "allOf": [ + { + "$ref": "#/$defs/ExternalId" + } + ], + "maxLength": 128 + }, + "version": { + "type": "string" + } + }, + "required": [ + "id" + ], + "type": "object" + }, + "PresentationSource": { + "additionalProperties": false, + "description": "Authored words for an object without a Record's title-field selection.", + "properties": { + "description": { + "$ref": "#/$defs/DisplayText" + }, + "label": { + "$ref": "#/$defs/DisplayText" + } + }, + "type": "object" + }, + "ProposalApplicationSource": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "mode": { + "const": "manual", + "type": "string" + } + }, + "required": [ + "mode" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "maximumAttempts": { + "default": 3, + "format": "uint32", + "maximum": 32, + "minimum": 1, + "type": "integer" + }, + "mode": { + "const": "automatic", + "type": "string" + } + }, + "required": [ + "mode" + ], + "type": "object" + } + ] + }, + "ProposalContextValueSource": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "slot": { + "$ref": "#/$defs/LocalId" + }, + "type": { + "const": "document", + "type": "string" + } + }, + "required": [ + "type", + "slot" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "input": { + "$ref": "#/$defs/LocalId" + }, + "type": { + "const": "input", + "type": "string" + } + }, + "required": [ + "type", + "input" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "field": { + "$ref": "#/$defs/LocalId" + }, + "input": { + "$ref": "#/$defs/LocalId" + }, + "type": { + "const": "record", + "type": "string" + } + }, + "required": [ + "type", + "input", + "field" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "fields": { + "items": { + "type": "string" + }, + "type": "array" + }, + "recordType": { + "$ref": "#/$defs/LocalId" + }, + "type": { + "const": "changes", + "type": "string" + } + }, + "required": [ + "type", + "recordType", + "fields" + ], + "type": "object" + } + ] + }, + "ProposalEventTransition": { + "enum": [ + "started", + "edited", + "submitted", + "revised", + "rebased", + "retried", + "cancelled", + "applied", + "rejected", + "review-returned" + ], + "type": "string" + }, + "ProposalHookSource": { + "additionalProperties": false, + "properties": { + "display": { + "$ref": "#/$defs/PresentationSource", + "description": "Authored presentation only; labels never establish identity or authority." + }, + "handler": { + "$ref": "#/$defs/HookHandlerSource" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "transitions": { + "description": "Omit to observe every committed lifecycle transition.", + "items": { + "$ref": "#/$defs/ProposalEventTransition" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "id", + "handler" + ], + "type": "object" + }, + "ProposalPolicySource": { + "additionalProperties": false, + "properties": { + "application": { + "$ref": "#/$defs/ProposalApplicationSource", + "default": { + "maximumAttempts": 3, + "mode": "automatic" + } + }, + "attachments": { + "default": [], + "items": { + "$ref": "#/$defs/AttachmentSlotSource" + }, + "type": "array" + }, + "hooks": { + "description": "Post-commit observers of the fixed, value-free Proposal lifecycle event.", + "items": { + "$ref": "#/$defs/ProposalHookSource" + }, + "type": "array" + }, + "retention": { + "$ref": "#/$defs/ProposalRetentionSource" + }, + "review": { + "$ref": "#/$defs/ProposalReviewSource" + }, + "reviewContext": { + "$ref": "#/$defs/ProposalReviewContextSource" + } + }, + "required": [ + "review", + "retention" + ], + "type": "object" + }, + "ProposalRetentionMode": { + "enum": [ + "retain", + "operator-erase" + ], + "type": "string" + }, + "ProposalRetentionSource": { + "additionalProperties": false, + "properties": { + "mode": { + "$ref": "#/$defs/ProposalRetentionMode" + } + }, + "required": [ + "mode" + ], + "type": "object" + }, + "ProposalReviewContextSource": { + "additionalProperties": false, + "properties": { + "fields": { + "additionalProperties": { + "$ref": "#/$defs/ProposalContextValueSource" + }, + "maxProperties": 64, + "propertyNames": { + "maxLength": 64, + "minLength": 1, + "not": { + "enum": [ + "id", + "recordId", + "revision", + "createdAt", + "updatedAt", + "deletedAt" + ], + "x-registry-member-names": true + }, + "pattern": "^[a-z][A-Za-z0-9]{0,63}$", + "type": "string" + }, + "type": "object", + "x-registry-member-names": true + }, + "id": { + "$ref": "#/$defs/LocalId" + } + }, + "required": [ + "id", + "fields" + ], + "type": "object" + }, + "ProposalReviewSource": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "type": { + "const": "none", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "authority": { + "type": "string" + }, + "policy": { + "$ref": "#/$defs/PolicySelectionSource" + }, + "source": { + "type": "string" + }, + "type": { + "const": "required", + "type": "string" + } + }, + "required": [ + "type", + "authority", + "source", + "policy" + ], + "type": "object" + } + ] + }, + "ProvenanceFieldSource": { + "description": "A member of a revision's `changeContext` a profile may read. Each value\nis spelled as the member it names is (CFG-NAME-2).", + "enum": [ + "kind", + "reasonCode", + "reasonText", + "sourceReferences" + ], + "type": "string", + "x-registry-member-names": true + }, + "ReadPathPermissionSource": { + "additionalProperties": false, + "properties": { + "allowCount": { + "default": false, + "type": "boolean" + }, + "filterableFields": { + "default": [], + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "path": { + "type": "string" + }, + "readableFields": { + "default": [], + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "sortableFields": { + "default": [], + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "path" + ], + "type": "object" + }, + "ReadPathSource": { + "additionalProperties": false, + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "route": { + "type": "string" + }, + "through": { + "type": "string" + }, + "to": { + "type": "string" + } + }, + "required": [ + "id", + "through", + "to", + "route" + ], + "type": "object" + }, + "ReferenceDelete": { + "enum": [ + "restrict" + ], + "type": "string" + }, + "ReferenceFieldSourceSchema": { + "additionalProperties": false, + "properties": { + "apiName": { + "type": "string" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "onDelete": { + "$ref": "#/$defs/ReferenceDelete", + "default": "restrict" + }, + "relationship": { + "additionalProperties": false, + "properties": { + "inverseName": { + "pattern": "^[a-z][A-Za-z0-9]*$", + "type": "string" + } + }, + "type": "object" + }, + "required": { + "default": false, + "type": "boolean" + }, + "target": { + "type": "string" + }, + "type": { + "enum": [ + "reference" + ], + "type": "string" + }, + "validTimeRole": { + "$ref": "#/$defs/ValidTimeRole" + } + }, + "required": [ + "id", + "type", + "classification", + "target" + ], + "type": "object" + }, + "RequiredScopes": { + "anyOf": [ + { + "const": "unrestricted", + "description": "Require no scope.", + "type": "string" + }, + { + "description": "Require every listed scope.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + ], + "description": "The scopes a token must carry to select a profile: the keyword\n`unrestricted`, or a list of at least one scope." + }, + "ReusableValueTypeSource": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "type": { + "const": "boolean", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "maximumLength": { + "format": "uint32", + "maximum": 1000000, + "minimum": 1, + "type": "integer" + }, + "minimumLength": { + "default": 0, + "format": "uint32", + "maximum": 1000000, + "minimum": 0, + "type": "integer" + }, + "type": { + "const": "string", + "type": "string" + } + }, + "required": [ + "type", + "maximumLength" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "maximumLength": { + "format": "uint32", + "maximum": 10000000, + "minimum": 1, + "type": "integer" + }, + "type": { + "const": "text", + "type": "string" + } + }, + "required": [ + "type", + "maximumLength" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "type": { + "const": "int64", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "maximum": { + "type": "string" + }, + "minimum": { + "type": "string" + }, + "precision": { + "format": "uint32", + "maximum": 38, + "minimum": 1, + "type": "integer" + }, + "scale": { + "format": "uint32", + "maximum": 38, + "minimum": 0, + "type": "integer" + }, + "type": { + "const": "decimal", + "type": "string" + } + }, + "required": [ + "type", + "precision", + "scale" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "type": { + "const": "date", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "type": { + "const": "timestamp", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "type": { + "const": "uuid", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "type": { + "const": "vocabulary-code", + "type": "string" + }, + "values": { + "default": [], + "items": { + "type": "string" + }, + "type": "array" + }, + "vocabulary": { + "type": "string" + } + }, + "required": [ + "type", + "vocabulary" + ], + "type": "object" + } + ] + }, + "RowBoundaries": { + "anyOf": [ + { + "const": "unrestricted", + "description": "Reach every row.", + "type": "string" + }, + { + "description": "Reach the rows every listed boundary binds to the caller's claims.", + "items": { + "$ref": "#/$defs/RowBoundarySource" + }, + "minItems": 1, + "type": "array" + } + ], + "description": "The rows a permission reaches: the keyword `unrestricted`, or a list of at\nleast one row boundary." + }, + "RowBoundarySource": { + "additionalProperties": false, + "properties": { + "claim": { + "type": "string" + }, + "field": { + "type": "string" + }, + "operator": { + "$ref": "#/$defs/BoundaryOperator" + } + }, + "required": [ + "field", + "claim", + "operator" + ], + "type": "object" + }, + "ScalarLiteral": { + "description": "A comparison literal: a boolean, a number, or text.", + "type": [ + "boolean", + "number", + "string" + ] + }, + "SelectorProfileSource": { + "additionalProperties": false, + "properties": { + "fields": { + "items": { + "type": "string" + }, + "type": "array" + }, + "id": { + "$ref": "#/$defs/LocalId" + } + }, + "required": [ + "id", + "fields" + ], + "type": "object" + }, + "SourceEventIdSource": { + "additionalProperties": false, + "description": "The identifier an event record carries from the system it was recorded from.", + "properties": { + "constraint": { + "description": "The authored unique constraint that enforces `duplicates: reject`.", + "type": "string" + }, + "duplicates": { + "$ref": "#/$defs/DuplicatePolicy" + }, + "field": { + "type": "string" + }, + "namespace": { + "description": "Absolute URI naming the identifier's namespace. Exactly one of\n`namespace` and `namespaceField` is declared.", + "type": "string" + }, + "namespaceField": { + "type": "string" + } + }, + "required": [ + "field", + "duplicates" + ], + "type": "object" + }, + "SpatialBboxPermissionSource": { + "additionalProperties": false, + "properties": { + "maximumLatitudeSpanDegrees": { + "type": "number" + }, + "maximumLongitudeSpanDegrees": { + "type": "number" + } + }, + "required": [ + "maximumLongitudeSpanDegrees", + "maximumLatitudeSpanDegrees" + ], + "type": "object" + }, + "SpatialQueryPermissionSource": { + "additionalProperties": false, + "properties": { + "bbox": { + "$ref": "#/$defs/SpatialBboxPermissionSource" + } + }, + "type": "object" + }, + "StringFieldSourceSchema": { + "additionalProperties": false, + "properties": { + "apiName": { + "type": "string" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource" + }, + "encrypted": { + "default": false, + "type": "boolean" + }, + "generate": { + "$ref": "#/$defs/FieldGenerationSource" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "lookup": { + "$ref": "#/$defs/FieldLookupSource" + }, + "maximumLength": { + "format": "uint32", + "maximum": 1000000, + "minimum": 1, + "type": "integer" + }, + "minimumLength": { + "default": 0, + "format": "uint32", + "maximum": 1000000, + "minimum": 0, + "type": "integer" + }, + "pattern": { + "type": "string" + }, + "required": { + "default": false, + "type": "boolean" + }, + "type": { + "enum": [ + "string" + ], + "type": "string" + }, + "validTimeRole": { + "$ref": "#/$defs/ValidTimeRole" + } + }, + "required": [ + "id", + "type", + "classification", + "maximumLength" + ], + "type": "object" + }, + "StructuredFieldSourceSchema": { + "additionalProperties": false, + "properties": { + "apiName": { + "type": "string" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource" + }, + "encrypted": { + "default": false, + "type": "boolean" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "lookup": { + "$ref": "#/$defs/FieldLookupSource" + }, + "maximumBytes": { + "format": "uint32", + "maximum": 1048576, + "minimum": 1, + "type": "integer" + }, + "required": { + "default": false, + "type": "boolean" + }, + "schema": { + "x-registry-foreign": "json-schema-2020-12" + }, + "type": { + "enum": [ + "structured" + ], + "type": "string" + }, + "validTimeRole": { + "$ref": "#/$defs/ValidTimeRole" + } + }, + "required": [ + "id", + "type", + "classification", + "maximumBytes", + "schema" + ], + "type": "object" + }, + "TemporalSource": { + "additionalProperties": false, + "properties": { + "endField": { + "description": "The exclusive end: the interval stops just before this value.", + "type": "string" + }, + "lastDayField": { + "description": "The inclusive last day of a date interval, named in place of\n`endField` when the source records the last day in force.", + "type": "string" + }, + "startField": { + "type": "string" + } + }, + "required": [ + "startField" + ], + "type": "object" + }, + "TextFieldSourceSchema": { + "additionalProperties": false, + "properties": { + "apiName": { + "type": "string" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource" + }, + "encrypted": { + "default": false, + "type": "boolean" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "lookup": { + "$ref": "#/$defs/FieldLookupSource" + }, + "maximumLength": { + "format": "uint32", + "maximum": 10000000, + "minimum": 1, + "type": "integer" + }, + "pattern": { + "type": "string" + }, + "required": { + "default": false, + "type": "boolean" + }, + "type": { + "enum": [ + "text" + ], + "type": "string" + }, + "validTimeRole": { + "$ref": "#/$defs/ValidTimeRole" + } + }, + "required": [ + "id", + "type", + "classification", + "maximumLength" + ], + "type": "object" + }, + "TimerInputSource": { + "additionalProperties": false, + "description": "One complete mapping into one ordinary Action input. Exactly one member is\nselected by compilation; the flat shape preserves authored source positions.", + "properties": { + "fromField": { + "type": "string" + }, + "fromRecordId": { + "const": true, + "type": "boolean" + }, + "fromTimer": { + "$ref": "#/$defs/TimerValueSource" + }, + "value": true + }, + "type": "object" + }, + "TimerPredicateSource": { + "additionalProperties": false, + "description": "A bounded conjunction of equality checks over current stored fields.", + "properties": { + "equals": { + "additionalProperties": { + "$ref": "#/$defs/ScalarLiteral" + }, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "type": { + "const": "fields", + "type": "string" + } + }, + "required": [ + "type", + "equals" + ], + "type": "object" + }, + "TimerSource": { + "additionalProperties": false, + "description": "One timer attached to a governed Record type.", + "properties": { + "at": { + "type": "string" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "input": { + "additionalProperties": { + "$ref": "#/$defs/TimerInputSource" + }, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "invoke": { + "type": "string" + }, + "notAfter": { + "type": "string" + }, + "rearmOn": { + "type": "string" + }, + "when": { + "$ref": "#/$defs/TimerPredicateSource" + } + }, + "required": [ + "id", + "at", + "invoke", + "input" + ], + "type": "object" + }, + "TimerValueSource": { + "description": "Runtime-owned timer facts that may be mapped into Action inputs.", + "enum": [ + "occurrence-id", + "due-at" + ], + "type": "string" + }, + "TimestampFieldSourceSchema": { + "additionalProperties": false, + "properties": { + "apiName": { + "type": "string" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "required": { + "default": false, + "type": "boolean" + }, + "type": { + "enum": [ + "timestamp" + ], + "type": "string" + }, + "validTimeRole": { + "$ref": "#/$defs/ValidTimeRole" + } + }, + "required": [ + "id", + "type", + "classification" + ], + "type": "object" + }, + "UniqueWhenPredicate": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "field": { + "type": "string" + }, + "type": { + "const": "field-equals", + "type": "string" + }, + "value": true + }, + "required": [ + "type", + "field", + "value" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "field": { + "type": "string" + }, + "type": { + "const": "field-is-null", + "type": "string" + } + }, + "required": [ + "type", + "field" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "field": { + "type": "string" + }, + "type": { + "const": "field-is-not-null", + "type": "string" + } + }, + "required": [ + "type", + "field" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "type": { + "const": "active-lifecycle", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + } + ] + }, + "Url": { + "description": "An absolute http or https URL with a host preserved as written, no user information, and no backslash, whitespace or control character. DNS case and equivalent IPv6 literals are permitted.", + "format": "uri", + "maxLength": 2048, + "pattern": "^[Hh][Tt][Tt][Pp][Ss]?://[^/?#@\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]+([/?#][^\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]*)?$", + "type": "string" + }, + "UuidFieldSourceSchema": { + "additionalProperties": false, + "properties": { + "apiName": { + "type": "string" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "required": { + "default": false, + "type": "boolean" + }, + "type": { + "enum": [ + "uuid" + ], + "type": "string" + }, + "validTimeRole": { + "$ref": "#/$defs/ValidTimeRole" + } + }, + "required": [ + "id", + "type", + "classification" + ], + "type": "object" + }, + "ValidTimeRole": { + "enum": [ + "valid-from", + "valid-to" + ], + "type": "string" + }, + "VocabularyCodeFieldSourceSchema": { + "additionalProperties": false, + "properties": { + "apiName": { + "type": "string" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "required": { + "default": false, + "type": "boolean" + }, + "type": { + "enum": [ + "vocabulary-code" + ], + "type": "string" + }, + "validTimeRole": { + "$ref": "#/$defs/ValidTimeRole" + }, + "values": { + "default": [], + "items": { + "type": "string" + }, + "type": "array" + }, + "vocabulary": { + "type": "string" + } + }, + "required": [ + "id", + "type", + "classification", + "vocabulary" + ], + "type": "object" + } + }, + "$id": "https://id.registrystack.org/schemas/breg/module/module.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "actions": { + "description": "Named Actions introduced by this module.", + "items": { + "$ref": "#/$defs/ActionSource" + }, + "type": "array" + }, + "apiVersion": { + "const": "id.registrystack.org/formats/breg/module/v1alpha1", + "type": "string" + }, + "dependencies": { + "default": [], + "description": "Identifiers of modules that must be applied before this module.", + "items": { + "type": "string" + }, + "type": "array" + }, + "extendRecordTypes": { + "default": [], + "description": "Additive contributions to entities already declared by the project or another module.", + "items": { + "$ref": "#/$defs/EntityExtensionSource" + }, + "type": "array" + }, + "functions": { + "default": [], + "items": { + "$ref": "#/$defs/FunctionSource" + }, + "type": "array" + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "Stable module identifier, referenced by the project's module lock." + }, + "kind": { + "const": "BRegModule", + "type": "string" + }, + "recordTypes": { + "default": [], + "description": "Record types introduced by this module.", + "items": { + "$ref": "#/$defs/EntitySource" + }, + "type": "array" + }, + "valueTypes": { + "additionalProperties": { + "$ref": "#/$defs/ReusableValueTypeSource" + }, + "default": {}, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "version": { + "description": "Module version recorded alongside its content digest in the project.", + "type": "string" + } + }, + "required": [ + "id", + "version", + "apiVersion", + "kind" + ], + "title": "Base Registry Engine authored module", + "type": "object" +} diff --git a/public/artifacts/sha256/2a6983bc79d8bf3bae405d3428189c364e643460bcce5930f60e21fde9c31865.json b/public/artifacts/sha256/2a6983bc79d8bf3bae405d3428189c364e643460bcce5930f60e21fde9c31865.json new file mode 100644 index 000000000..253bed08c --- /dev/null +++ b/public/artifacts/sha256/2a6983bc79d8bf3bae405d3428189c364e643460bcce5930f60e21fde9c31865.json @@ -0,0 +1,384 @@ +{ + "$defs": { + "AccessProfile": { + "additionalProperties": false, + "description": "One declared caller profile.", + "properties": { + "actorKind": { + "$ref": "#/$defs/ActorKind", + "description": "The actor kind the token must claim. Absent means any kind." + }, + "actsAs": { + "$ref": "#/$defs/ActsAs" + }, + "allowDirectContent": { + "default": false, + "type": "boolean" + }, + "burst": { + "format": "uint32", + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "description": { + "$ref": "#/$defs/DisplayText", + "description": "What the profile is for, accepted for authoring and tooling; never matched against a caller." + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "label": { + "$ref": "#/$defs/DisplayText", + "description": "A name for the profile, accepted for authoring and tooling; never matched against a caller." + }, + "maximumMessagesPerDay": { + "description": "The most messages the profile may submit in any 24 hours. Absent\nmeans no daily bound beyond the rate.", + "format": "uint32", + "maximum": 10000000, + "minimum": 1, + "type": "integer" + }, + "principalClaim": { + "$ref": "#/$defs/ExternalId", + "description": "`sub`, or the name of another string claim identifying the principal." + }, + "requesterClients": { + "description": "The OAuth clients whose tokens resolve to this profile, at least one.", + "items": { + "$ref": "#/$defs/ExternalId" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "requestsPerMinute": { + "format": "uint32", + "maximum": 60000, + "minimum": 1, + "type": "integer" + }, + "requiredScopes": { + "$ref": "#/$defs/RequiredScopes", + "description": "The scopes a token must carry: `unrestricted`, or a list of at least\none scope. Held as the listed scopes, so `unrestricted` is the empty\nlist." + }, + "senderProfiles": { + "default": [], + "description": "The sender profiles a sender may select; an operator lists none.", + "items": { + "$ref": "#/$defs/LocalId" + }, + "type": "array", + "uniqueItems": true + }, + "templates": { + "default": [], + "description": "The templates a sender may use, by id, every declared version; an\noperator lists none.", + "items": { + "$ref": "#/$defs/LocalId" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "id", + "principalClaim", + "requiredScopes", + "requesterClients", + "actsAs", + "requestsPerMinute", + "burst" + ], + "type": "object" + }, + "ActorKind": { + "description": "The closed actor-kind vocabulary, spelled exactly as the Registry Stack\ncontextual-claim profile spells it.", + "enum": [ + "human", + "agent", + "service" + ], + "type": "string" + }, + "ActsAs": { + "description": "What a profile is for. A sender submits and reads its own messages; an\noperator reads and acts on every message but submits none.", + "enum": [ + "sender", + "operator" + ], + "type": "string" + }, + "Channel": { + "description": "A delivery channel.", + "enum": [ + "email", + "sms" + ], + "type": "string" + }, + "DisplayText": { + "description": "Human-readable display text. Bidirectional embedding, override, and isolate controls, byte-order marks, line and paragraph separators, and Unicode noncharacters are refused; multilingual joiners and direction marks remain valid.", + "not": { + "pattern": "[

‪-‮⁦-⁩﷐-﷯￾￿]|🿾|🿿|𯿾|𯿿|𿿾|𿿿|񏿾|񏿿|񟿾|񟿿|񯿾|񯿿|񿿾|񿿿|򏿾|򏿿|򟿾|򟿿|򯿾|򯿿|򿿾|򿿿|󏿾|󏿿|󟿾|󟿿|󯿾|󯿿|󿿾|󿿿|􏿾|􏿿" + }, + "type": "string" + }, + "ExternalId": { + "description": "An identifier another system issues, written exactly as its issuer gives it.", + "maxLength": 512, + "minLength": 1, + "pattern": "^[^\\u0000-\\u001F\\u007F-\\u009F]+$", + "type": "string" + }, + "LocalId": { + "description": "A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.", + "pattern": "^[a-z][a-z0-9_-]{0,63}$", + "type": "string" + }, + "ProjectIdentity": { + "additionalProperties": false, + "description": "The members that name a project (CFG-ENV-6): a project's `project` block\nholds these, and may add project-wide members of the product's own.\nSchema name `ProjectIdentity`.", + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "version": { + "type": "string" + } + }, + "required": [ + "id", + "version" + ], + "type": "object" + }, + "ProviderDeclaration": { + "additionalProperties": false, + "description": "One declared provider, referenced by sender profiles through `id`.", + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "idempotentSubmit": { + "default": false, + "description": "The provider deduplicates submissions on the idempotency key the\nruntime sends, so sending one message twice delivers it once. This is\nthe one declaration of that capability: an HTTP provider's scripts\nsee the key only when it is set, and an `smtp` provider may not set\nit.", + "type": "boolean" + }, + "type": { + "$ref": "#/$defs/ProviderKind" + } + }, + "required": [ + "id", + "type" + ], + "type": "object" + }, + "ProviderKind": { + "description": "The transport a provider speaks. Its endpoint and credentials are runtime\nconfiguration; only the type is project.", + "enum": [ + "smtp", + "http" + ], + "type": "string" + }, + "RequiredScopes": { + "anyOf": [ + { + "const": "unrestricted", + "description": "Require no scope.", + "type": "string" + }, + { + "items": { + "$ref": "#/$defs/ExternalId" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + ], + "description": "The scopes a token must carry: the keyword `unrestricted`, or a list of\nat least one scope. An empty list is refused, because it reads as both\n\"none\" and \"any\" (CFG-EMPTY-2)." + }, + "RetryPolicy": { + "additionalProperties": false, + "description": "How a send that definitely failed is retried: exponential backoff that\ndoubles from `initialDelaySeconds` up to `maximumDelaySeconds`, with\njitter, until `maximumAttempts` attempts were made.", + "properties": { + "initialDelaySeconds": { + "format": "uint32", + "maximum": 86400, + "minimum": 1, + "type": "integer" + }, + "maximumAttempts": { + "format": "uint8", + "maximum": 20, + "minimum": 1, + "type": "integer" + }, + "maximumDelaySeconds": { + "description": "At least `initialDelaySeconds`.", + "format": "uint32", + "maximum": 86400, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "maximumAttempts", + "initialDelaySeconds", + "maximumDelaySeconds" + ], + "type": "object" + }, + "SenderProfile": { + "additionalProperties": false, + "description": "What a caller selects: a channel, the provider carrying it, the sender\nidentity, for SMS the most segments one message may use, and how the\nworker retries, holds, and expires its messages.", + "properties": { + "acceptDuplicates": { + "default": false, + "description": "The operator's explicit choice that a duplicate message is better\nthan a missed one, which permits `onUncertain: retry` through a\nprovider that does not deduplicate.", + "type": "boolean" + }, + "channel": { + "$ref": "#/$defs/Channel" + }, + "defaultExpirySeconds": { + "description": "How long an accepted message may wait to be sent when its request\nnames no `expiresAt`. Absent means [`DEFAULT_EXPIRY_SECONDS`].", + "format": "uint32", + "maximum": 2592000, + "minimum": 60, + "type": "integer" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "maximumSegments": { + "description": "For SMS, and only for SMS, the most segments one message may use.", + "format": "uint8", + "maximum": 10, + "minimum": 1, + "type": "integer" + }, + "onUncertain": { + "$ref": "#/$defs/UncertainPolicy", + "default": "hold", + "description": "What happens when a send may have reached the provider." + }, + "provider": { + "$ref": "#/$defs/LocalId" + }, + "retry": { + "$ref": "#/$defs/RetryPolicy", + "description": "How a send that definitely failed is retried. Absent means the\ndefaults [`SenderProfile::retry_policy`] reports." + }, + "sender": { + "description": "The from address for email, the sender identifier for SMS.", + "maxLength": 254, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "id", + "channel", + "provider", + "sender" + ], + "type": "object" + }, + "TemplateDeclaration": { + "additionalProperties": false, + "description": "One template version the project declares.", + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "version": { + "description": "A version label: 1 to 32 lowercase letters, digits, dots, or hyphens,\nstarting with a letter or digit. Quote a numeric one.", + "maxLength": 32, + "minLength": 1, + "pattern": "^[a-z0-9][a-z0-9-]*(\\.[a-z0-9-]+)*$", + "type": "string" + } + }, + "required": [ + "id", + "version" + ], + "type": "object" + }, + "UncertainPolicy": { + "description": "What the worker does with a send that may have reached the provider.", + "oneOf": [ + { + "const": "hold", + "description": "Stop the message as `unknown` until an operator settles it.", + "type": "string" + }, + { + "const": "retry", + "description": "Send it again with the same provider idempotency key.", + "type": "string" + } + ] + } + }, + "$id": "https://id.registrystack.org/schemas/messaging/project/project.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "description": "The project file as authored.", + "properties": { + "accessProfiles": { + "description": "Who may call the deployment, at least one profile: a project that\nnames no caller serves none.", + "items": { + "$ref": "#/$defs/AccessProfile" + }, + "maxItems": 256, + "minItems": 1, + "type": "array" + }, + "apiVersion": { + "const": "id.registrystack.org/formats/messaging/project/v1alpha1", + "type": "string" + }, + "kind": { + "const": "MessagingProject", + "type": "string" + }, + "project": { + "$ref": "#/$defs/ProjectIdentity" + }, + "providers": { + "items": { + "$ref": "#/$defs/ProviderDeclaration" + }, + "maxItems": 256, + "type": "array" + }, + "senderProfiles": { + "items": { + "$ref": "#/$defs/SenderProfile" + }, + "maxItems": 256, + "type": "array" + }, + "templates": { + "items": { + "$ref": "#/$defs/TemplateDeclaration" + }, + "maxItems": 256, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "apiVersion", + "kind", + "project", + "accessProfiles" + ], + "title": "Registry Messaging project", + "type": "object" +} diff --git a/public/artifacts/sha256/2cbf5e3d2fd943abfa3777b63f204feac0dc0f5c02241a121aa3a135f3d420c7.json b/public/artifacts/sha256/2cbf5e3d2fd943abfa3777b63f204feac0dc0f5c02241a121aa3a135f3d420c7.json new file mode 100644 index 000000000..59cb9cca9 --- /dev/null +++ b/public/artifacts/sha256/2cbf5e3d2fd943abfa3777b63f204feac0dc0f5c02241a121aa3a135f3d420c7.json @@ -0,0 +1,4907 @@ +{ + "$defs": { + "AccessProfile": { + "additionalProperties": false, + "properties": { + "actsAs": { + "$ref": "#/$defs/CaseworkActsAs" + }, + "description": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "type": "null" + } + ], + "description": "What the profile is for, accepted for authoring and tooling; never matched against a caller. Part of the review policy description, which any caller who may read that description can see." + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "label": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "type": "null" + } + ], + "description": "A name for the profile, accepted for authoring and tooling; never matched against a caller. Part of the review policy description, which any caller who may read that description can see." + }, + "principalClaim": { + "type": "string" + }, + "requiredScopes": { + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "id", + "principalClaim", + "requiredScopes", + "actsAs" + ], + "type": "object" + }, + "Activation": { + "additionalProperties": false, + "description": "One append-only package activation ledger row.", + "properties": { + "activationId": { + "format": "uuid", + "type": "string" + }, + "appliedAt": { + "format": "date-time", + "type": "string" + }, + "applyOrder": { + "format": "int64", + "maximum": 9223372036854775807, + "minimum": -9223372036854775808, + "type": "integer" + }, + "backupReferences": { + "items": { + "type": "string" + }, + "type": "array" + }, + "databaseId": { + "type": "string" + }, + "operatorReferenceHash": { + "type": [ + "string", + "null" + ] + }, + "packageDigest": { + "$ref": "#/$defs/Digest" + }, + "planKind": { + "$ref": "#/$defs/PlanKind" + }, + "predecessorPackageDigest": { + "anyOf": [ + { + "$ref": "#/$defs/Digest" + }, + { + "type": "null" + } + ] + }, + "roleMode": { + "$ref": "#/$defs/RoleMode" + }, + "runtimeRole": { + "description": "Present for ledgers that retain the PostgreSQL runtime user.", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "activationId", + "applyOrder", + "packageDigest", + "predecessorPackageDigest", + "databaseId", + "planKind", + "appliedAt", + "operatorReferenceHash", + "backupReferences", + "roleMode" + ], + "type": "object" + }, + "ActivationEffects": { + "additionalProperties": false, + "description": "The Casework-specific effects of an activation.", + "properties": { + "pinnedWork": { + "$ref": "#/$defs/PinnedWorkEffect" + }, + "taskTemplates": { + "items": { + "$ref": "#/$defs/TaskTemplateEffect" + }, + "type": "array" + } + }, + "required": [ + "pinnedWork", + "taskTemplates" + ], + "type": "object" + }, + "ActivationPlan": { + "additionalProperties": false, + "description": "What `caseworkctl plan` reports. It is read in a read-only transaction.", + "properties": { + "active": { + "anyOf": [ + { + "$ref": "#/$defs/Activation" + }, + { + "type": "null" + } + ] + }, + "candidatePackageDigest": { + "$ref": "#/$defs/Digest" + }, + "changesPending": { + "description": "Whether apply would record an activation.", + "type": "boolean" + }, + "databaseIdCheck": { + "$ref": "#/$defs/DatabaseIdCheck" + }, + "effects": { + "anyOf": [ + { + "$ref": "#/$defs/ActivationEffects" + }, + { + "type": "null" + } + ], + "description": "Absent when the schema is too old to read before migrating, or when\nthe runtime role lacks SELECT on a Casework table until apply\nreissues its grants." + }, + "pendingSchemaVersions": { + "items": { + "format": "int64", + "maximum": 9223372036854775807, + "minimum": -9223372036854775808, + "type": "integer" + }, + "type": "array" + }, + "planKind": { + "$ref": "#/$defs/PlanKind" + }, + "refusals": { + "items": { + "$ref": "#/$defs/ActivationRefusal" + }, + "type": "array" + }, + "runtimeRoleMode": { + "anyOf": [ + { + "$ref": "#/$defs/RoleMode" + }, + { + "type": "null" + } + ], + "description": "The role mode the planning connection's authority gives it, absent\nwhen it cannot see the ledger yet. `caseworkctl plan` connects with\nthe runtime credential, so this is the runtime role's mode." + }, + "schemaVersion": { + "description": "The newest applied schema version, or none on an empty database.", + "format": "int64", + "maximum": 9223372036854775807, + "minimum": -9223372036854775808, + "type": [ + "integer", + "null" + ] + }, + "supportedSchemaVersion": { + "format": "int64", + "maximum": 9223372036854775807, + "minimum": -9223372036854775808, + "type": "integer" + } + }, + "required": [ + "active", + "candidatePackageDigest", + "databaseIdCheck", + "planKind", + "schemaVersion", + "supportedSchemaVersion", + "pendingSchemaVersions", + "effects", + "refusals", + "runtimeRoleMode", + "changesPending" + ], + "type": "object" + }, + "ActivationRefusal": { + "additionalProperties": false, + "description": "One reason an activation is refused, with the location the operator\ncorrects and the next command.", + "properties": { + "code": { + "type": "string" + }, + "message": { + "type": "string" + }, + "path": { + "type": "string" + } + }, + "required": [ + "code", + "path", + "message" + ], + "type": "object" + }, + "ActivationStatus": { + "additionalProperties": false, + "description": "What `caseworkctl status` reports.", + "properties": { + "active": { + "anyOf": [ + { + "$ref": "#/$defs/Activation" + }, + { + "type": "null" + } + ] + }, + "history": { + "description": "Every ledger row, oldest first.", + "items": { + "$ref": "#/$defs/Activation" + }, + "type": "array" + }, + "roleMode": { + "anyOf": [ + { + "$ref": "#/$defs/RoleMode" + }, + { + "type": "null" + } + ], + "description": "The role mode this connection has, absent before the first apply." + }, + "schemaVersion": { + "format": "int64", + "maximum": 9223372036854775807, + "minimum": -9223372036854775808, + "type": [ + "integer", + "null" + ] + }, + "supportedSchemaVersion": { + "format": "int64", + "maximum": 9223372036854775807, + "minimum": -9223372036854775808, + "type": "integer" + } + }, + "required": [ + "active", + "history", + "schemaVersion", + "supportedSchemaVersion", + "roleMode" + ], + "type": "object" + }, + "CalendarPolicy": { + "additionalProperties": false, + "properties": { + "holidaySet": { + "type": "string" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "timezone": { + "type": "string" + }, + "workingWeekdays": { + "items": { + "$ref": "#/$defs/WorkingWeekday" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "id", + "timezone", + "workingWeekdays", + "holidaySet" + ], + "type": "object" + }, + "CaseworkActsAs": { + "enum": [ + "staff", + "supervisor", + "administrator", + "requester" + ], + "type": "string" + }, + "CheckScope": { + "additionalProperties": false, + "description": "A source file relative to the project and the resource path a check reports.", + "properties": { + "file": { + "minLength": 1, + "type": "string" + }, + "path": { + "description": "A pointer whose list positions use existing unique identifiers when available.", + "type": "string" + } + }, + "required": [ + "file", + "path" + ], + "type": "object" + }, + "ClockPolicy": { + "description": "The serialized form of [`ClockPolicy`]: the shape the serializer emits.", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "after": { + "$ref": "#/$defs/ElapsedDuration" + }, + "anchor": { + "$ref": "#/$defs/SubjectClockAnchor" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "type": { + "const": "subject", + "type": "string" + } + }, + "required": [ + "type", + "id", + "anchor", + "after" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "after": { + "$ref": "#/$defs/WorkingDays" + }, + "anchor": { + "$ref": "#/$defs/StageClockAnchor" + }, + "atRisk": { + "$ref": "#/$defs/WorkingDaysBefore" + }, + "calendar": { + "type": "string" + }, + "dueTime": { + "type": "string" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "reminders": { + "items": { + "$ref": "#/$defs/ClockReminder" + }, + "type": "array" + }, + "steps": { + "items": { + "$ref": "#/$defs/ClockStep" + }, + "type": "array" + }, + "type": { + "const": "stage", + "type": "string" + } + }, + "required": [ + "type", + "id", + "anchor", + "calendar", + "after", + "dueTime" + ], + "type": "object" + } + ] + }, + "ClockReassignment": { + "additionalProperties": false, + "properties": { + "queue": { + "type": "string" + } + }, + "required": [ + "queue" + ], + "type": "object" + }, + "ClockReminder": { + "additionalProperties": false, + "description": "A named reminder, written `reminders: {ID: {before: {workingDays: N}}}`.", + "properties": { + "before": { + "$ref": "#/$defs/WorkingDays" + }, + "id": { + "$ref": "#/$defs/LocalId" + } + }, + "required": [ + "id", + "before" + ], + "type": "object" + }, + "ClockStep": { + "additionalProperties": false, + "properties": { + "action": { + "$ref": "#/$defs/ClockStepAction" + }, + "at": { + "$ref": "#/$defs/ClockStepInstant" + }, + "because": { + "$ref": "#/$defs/DisplayText" + }, + "id": { + "$ref": "#/$defs/LocalId" + } + }, + "required": [ + "id", + "because", + "at", + "action" + ], + "type": "object" + }, + "ClockStepAction": { + "additionalProperties": false, + "properties": { + "reassign": { + "$ref": "#/$defs/ClockReassignment" + } + }, + "required": [ + "reassign" + ], + "type": "object" + }, + "ClockStepInstant": { + "enum": [ + "due" + ], + "type": "string" + }, + "ContentDigest": { + "maxLength": 71, + "minLength": 71, + "pattern": "^sha256:[0-9a-f]{64}$", + "type": "string" + }, + "DatabaseIdCheck": { + "description": "How a configured deployment identity compares with the ledger.", + "enum": [ + "not-recorded", + "matches", + "differs" + ], + "type": "string" + }, + "DevClient": { + "additionalProperties": false, + "properties": { + "actsAs": { + "$ref": "#/$defs/CaseworkActsAs" + }, + "assertionKeyFile": { + "type": "string" + }, + "clientIdFile": { + "type": "string" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "profile": { + "type": "string" + }, + "subject": { + "type": "string" + } + }, + "required": [ + "id", + "profile", + "actsAs", + "subject", + "clientIdFile", + "assertionKeyFile" + ], + "type": "object" + }, + "DevDirectory": { + "additionalProperties": false, + "properties": { + "revision": { + "format": "int64", + "maximum": 9223372036854775807, + "minimum": -9223372036854775808, + "type": "integer" + }, + "teams": { + "format": "uint", + "maximum": 18446744073709551615, + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "revision", + "teams" + ], + "type": "object" + }, + "DevState": { + "enum": [ + "starting", + "ready", + "stopping", + "stopped", + "failed" + ], + "type": "string" + }, + "Diagnostic": { + "additionalProperties": false, + "description": "One problem, in the shape every checking command reports (CFG-DIAG-1).\n\nMessages name keys, paths, accepted values, bounds, and the expected\nenvelope without repeating rejected scalar values (CFG-SEC-3). Warning\nacceptance metadata separately identifies the resource and carries the\nproject's deliberately authored reason.", + "properties": { + "acceptedReason": { + "description": "The project's reason for accepting this advisory warning.", + "type": [ + "string", + "null" + ] + }, + "artifact": { + "description": "The document's `kind`, or the expected kind when the document's own is\nabsent or wrong and the reader expected exactly one.", + "type": [ + "string", + "null" + ] + }, + "code": { + "type": "string" + }, + "message": { + "type": "string" + }, + "path": { + "description": "RFC 6901 JSON pointer into the document as written; `\"\"` is the root.", + "type": "string" + }, + "related": { + "items": { + "$ref": "#/$defs/Related" + }, + "type": "array" + }, + "scope": { + "anyOf": [ + { + "$ref": "#/$defs/CheckScope" + }, + { + "type": "null" + } + ], + "description": "Project-relative identity copied into a check acceptance." + }, + "severity": { + "$ref": "#/$defs/Severity" + }, + "source": { + "anyOf": [ + { + "$ref": "#/$defs/Source" + }, + { + "type": "null" + } + ] + }, + "suggestedAction": { + "type": "string" + } + }, + "required": [ + "severity", + "code", + "path", + "message", + "suggestedAction" + ], + "type": "object" + }, + "Digest": { + "description": "A SHA-256 digest: `sha256:` followed by 64 lowercase hex digits.", + "pattern": "^sha256:[0-9a-f]{64}$", + "type": "string" + }, + "DisplayText": { + "description": "Human-readable display text. Bidirectional embedding, override, and isolate controls, byte-order marks, line and paragraph separators, and Unicode noncharacters are refused; multilingual joiners and direction marks remain valid.", + "not": { + "pattern": "[

‪-‮⁦-⁩﷐-﷯￾￿]|🿾|🿿|𯿾|𯿿|𿿾|𿿿|񏿾|񏿿|񟿾|񟿿|񯿾|񯿿|񿿾|񿿿|򏿾|򏿿|򟿾|򟿿|򯿾|򯿿|򿿾|򿿿|󏿾|󏿿|󟿾|󟿿|󯿾|󯿿|󿿾|󿿿|􏿾|􏿿" + }, + "type": "string" + }, + "DoctorChecks": { + "additionalProperties": false, + "properties": { + "audit": { + "type": "string" + }, + "configuration": { + "type": "string" + }, + "database": { + "type": "string" + }, + "package": { + "type": "string" + } + }, + "required": [ + "configuration", + "package", + "database", + "audit" + ], + "type": "object" + }, + "ElapsedDuration": { + "description": "An elapsed budget in exactly one unit; a day is 24 elapsed hours.", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "minutes": { + "format": "uint32", + "maximum": 5256000, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "minutes" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "hours": { + "format": "uint32", + "maximum": 87600, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "hours" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "days": { + "format": "uint32", + "maximum": 3650, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "days" + ], + "type": "object" + } + ] + }, + "EnforcementLayer": { + "additionalProperties": false, + "description": "One place the runtime can refuse an event, in execution order within\n`LifecycleDescription::enforcement`. `events` names every event the layer\nruns for; an event absent from the list passes the layer without being\nchecked there. Where an event is raised on more than one path and the layer\ngates only some of them, the description says which. One list can report one\norder, so where a layer's position is not the one a particular event meets,\nthat layer's description names the event and where it really runs.", + "properties": { + "description": { + "type": "string" + }, + "events": { + "items": { + "type": "string" + }, + "type": "array" + }, + "id": { + "$ref": "#/$defs/LocalId" + } + }, + "required": [ + "id", + "description", + "events" + ], + "type": "object" + }, + "EvidenceRequesterContext": { + "additionalProperties": false, + "properties": { + "audience": { + "type": "string" + }, + "requesterTags": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "requesterTags", + "audience" + ], + "type": "object" + }, + "ExplainPolicy": { + "additionalProperties": false, + "properties": { + "binding": { + "$ref": "#/$defs/ReviewPolicyIdentity" + }, + "clocks": { + "items": { + "type": "string" + }, + "type": "array" + }, + "context": { + "$ref": "#/$defs/ReviewContextPolicy" + }, + "contextCustody": { + "type": "string" + }, + "decidingProfiles": { + "items": { + "type": "string" + }, + "type": "array" + }, + "dependencies": { + "$ref": "#/$defs/ReviewPolicyDependencies" + }, + "dependencyScope": { + "type": "string" + }, + "displaySchema": { + "x-registry-foreign": "json-schema-2020-12" + }, + "eligibleDecidingProfiles": { + "items": { + "type": "string" + }, + "type": "array" + }, + "label": { + "type": [ + "string", + "null" + ] + }, + "outcomes": { + "items": { + "$ref": "#/$defs/ReviewOutcomePolicy" + }, + "type": "array" + }, + "purpose": { + "$ref": "#/$defs/ReviewPurpose" + }, + "recovery": { + "items": { + "type": "string" + }, + "type": "array" + }, + "refusals": { + "items": { + "type": "string" + }, + "type": "array" + }, + "resultSchema": { + "x-registry-foreign": "json-schema-2020-12" + }, + "retention": { + "$ref": "#/$defs/ReviewRetentionPolicy" + }, + "routing": { + "items": { + "$ref": "#/$defs/RoutingRule" + }, + "type": "array" + }, + "routingFields": { + "items": { + "type": "string" + }, + "type": "array" + }, + "stages": { + "items": { + "$ref": "#/$defs/ExplainStage" + }, + "type": "array" + }, + "usedQueues": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "binding", + "purpose", + "displaySchema", + "resultSchema", + "clocks", + "context", + "contextCustody", + "stages", + "outcomes", + "routing", + "routingFields", + "usedQueues", + "decidingProfiles", + "eligibleDecidingProfiles", + "dependencyScope", + "dependencies", + "retention", + "recovery", + "refusals" + ], + "type": "object" + }, + "ExplainStaffing": { + "additionalProperties": false, + "properties": { + "caseload": { + "type": "string" + }, + "clockRecompute": { + "type": "string" + }, + "holdings": { + "type": "string" + }, + "next": { + "type": "string" + }, + "routing": { + "type": "string" + } + }, + "required": [ + "next", + "holdings", + "caseload", + "routing", + "clockRecompute" + ], + "type": "object" + }, + "ExplainStage": { + "additionalProperties": false, + "properties": { + "decidingProfiles": { + "items": { + "type": "string" + }, + "type": "array" + }, + "excludeInitiator": { + "type": "boolean" + }, + "excludePreviousStageReviewers": { + "type": "boolean" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "label": { + "type": [ + "string", + "null" + ] + }, + "negativeDecisions": { + "$ref": "#/$defs/ReviewNegativeDecisionMode" + }, + "queue": { + "type": "string" + }, + "requiredApprovals": { + "format": "uint32", + "maximum": 32, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "id", + "queue", + "decidingProfiles", + "requiredApprovals", + "negativeDecisions", + "excludeInitiator", + "excludePreviousStageReviewers" + ], + "type": "object" + }, + "ExternalId": { + "description": "An identifier another system issues, written exactly as its issuer gives it.", + "maxLength": 512, + "minLength": 1, + "pattern": "^[^\\u0000-\\u001F\\u007F-\\u009F]+$", + "type": "string" + }, + "InboxPolicy": { + "additionalProperties": false, + "properties": { + "defaultPageSize": { + "default": 25, + "format": "uint32", + "maximum": 100, + "minimum": 1, + "type": "integer" + }, + "maximumCandidateScan": { + "default": 100, + "format": "uint32", + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "maximumConcurrentSourceReads": { + "default": 4, + "format": "uint32", + "maximum": 32, + "minimum": 1, + "type": "integer" + }, + "maximumSourceReads": { + "default": 25, + "format": "uint32", + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "pageDeadlineMilliseconds": { + "default": 2000, + "format": "uint64", + "maximum": 30000, + "minimum": 100, + "type": "integer" + } + }, + "required": [ + "defaultPageSize", + "maximumCandidateScan", + "maximumSourceReads", + "maximumConcurrentSourceReads", + "pageDeadlineMilliseconds" + ], + "type": "object" + }, + "LifecycleDescription": { + "additionalProperties": false, + "properties": { + "enforcement": { + "items": { + "$ref": "#/$defs/EnforcementLayer" + }, + "type": "array" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "label": { + "type": "string" + }, + "states": { + "items": { + "$ref": "#/$defs/LifecycleState" + }, + "type": "array" + }, + "transitions": { + "items": { + "$ref": "#/$defs/LifecycleTransition" + }, + "type": "array" + } + }, + "required": [ + "id", + "label", + "states", + "transitions", + "enforcement" + ], + "type": "object" + }, + "LifecycleState": { + "additionalProperties": false, + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "incomingTransitions": { + "format": "uint", + "maximum": 18446744073709551615, + "minimum": 0, + "type": "integer" + }, + "initial": { + "type": "boolean" + }, + "outgoingTransitions": { + "format": "uint", + "maximum": 18446744073709551615, + "minimum": 0, + "type": "integer" + }, + "terminal": { + "type": "boolean" + }, + "unreachable": { + "type": "boolean" + } + }, + "required": [ + "id", + "initial", + "terminal", + "unreachable", + "incomingTransitions", + "outgoingTransitions" + ], + "type": "object" + }, + "LifecycleTransition": { + "additionalProperties": false, + "properties": { + "event": { + "type": "string" + }, + "from": { + "type": "string" + }, + "guard": { + "description": "What the state machine itself checks before it moves the state. Nothing\nthe runtime checks around it appears here; that is `enforcement`.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "required": [ + "from", + "event", + "to", + "guard" + ], + "type": "object" + }, + "LocalId": { + "description": "A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.", + "pattern": "^[a-z][a-z0-9_-]{0,63}$", + "type": "string" + }, + "PinnedWorkEffect": { + "additionalProperties": false, + "description": "The pinned-work verdict an activation reaches.", + "properties": { + "stranded": { + "items": { + "$ref": "#/$defs/StrandedWork" + }, + "type": "array" + }, + "verdict": { + "description": "`clear`, `acknowledged`, or `refused`.", + "type": "string" + } + }, + "required": [ + "verdict", + "stranded" + ], + "type": "object" + }, + "PlanKind": { + "description": "Whether an activation is the database's first or follows another.", + "enum": [ + "initial", + "successor" + ], + "type": "string" + }, + "ProducerAgreement": { + "additionalProperties": false, + "properties": { + "contextContract": { + "$ref": "#/$defs/ReviewContextContract" + }, + "providerId": { + "type": "string" + }, + "registryRevision": { + "type": "string" + }, + "schemaDigest": { + "$ref": "#/$defs/Digest" + } + }, + "required": [ + "providerId", + "contextContract", + "registryRevision", + "schemaDigest" + ], + "type": "object" + }, + "ProducerAgreementData": { + "additionalProperties": false, + "properties": { + "agreements": { + "items": { + "$ref": "#/$defs/ProducerAgreement" + }, + "type": "array" + }, + "databaseAccess": { + "type": "boolean" + }, + "networkAccess": { + "type": "boolean" + }, + "package": { + "type": "string" + }, + "packageDigest": { + "$ref": "#/$defs/Digest" + } + }, + "required": [ + "package", + "packageDigest", + "agreements", + "networkAccess", + "databaseAccess" + ], + "type": "object" + }, + "ProducerRetention": { + "additionalProperties": false, + "description": "How long Casework keeps what a producer needs to recover a submission.", + "properties": { + "receiptRetentionDays": { + "description": "Days a submission receipt stays readable for recovery, at most 365.", + "format": "uint32", + "maximum": 365, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "receiptRetentionDays" + ], + "type": "object" + }, + "ProjectIdentity": { + "additionalProperties": false, + "description": "The members that name a project (CFG-ENV-6): a project's `project` block\nholds these, and may add project-wide members of the product's own.\nSchema name `ProjectIdentity`.", + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "version": { + "type": "string" + } + }, + "required": [ + "id", + "version" + ], + "type": "object" + }, + "ProviderAddBypass": { + "additionalProperties": false, + "properties": { + "fields": { + "items": { + "type": "string" + }, + "type": "array" + }, + "mutationPolicy": { + "x-registry-passthrough": "A bounded mutationPolicy fragment from the closed BReg project format; bregctl remains its format owner." + }, + "operation": { + "type": "string" + }, + "profile": { + "type": "string" + }, + "recordType": { + "type": "string" + } + }, + "required": [ + "recordType", + "operation", + "profile", + "fields", + "mutationPolicy" + ], + "type": "object" + }, + "ProviderAddChange": { + "additionalProperties": false, + "properties": { + "explanation": { + "type": "string" + }, + "path": { + "type": "string" + }, + "yaml": { + "x-registry-passthrough": "A bounded YAML fragment from the closed BReg authoring format; bregctl remains its format owner." + } + }, + "required": [ + "path", + "explanation", + "yaml" + ], + "type": "object" + }, + "ProviderAddNotice": { + "additionalProperties": false, + "properties": { + "explanation": { + "type": "string" + }, + "yaml": { + "x-registry-passthrough": "A bounded YAML fragment from the closed BReg authoring format; bregctl remains its format owner." + } + }, + "required": [ + "explanation", + "yaml" + ], + "type": "object" + }, + "ProviderAddState": { + "enum": [ + "changes-needed", + "created", + "in-agreement" + ], + "type": "string" + }, + "QueuePolicy": { + "additionalProperties": false, + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "label": { + "$ref": "#/$defs/DisplayText" + } + }, + "required": [ + "id", + "label" + ], + "type": "object" + }, + "ReaderAuthority": { + "additionalProperties": false, + "properties": { + "operation": { + "type": "string" + }, + "profile": { + "type": [ + "string", + "null" + ] + }, + "sourceWrites": { + "type": "boolean" + } + }, + "required": [ + "profile", + "operation", + "sourceWrites" + ], + "type": "object" + }, + "Related": { + "additionalProperties": false, + "description": "A second place that explains a diagnostic, such as the first occurrence\nof a duplicate. Human output prints it as a `note:` line.", + "properties": { + "column": { + "format": "uint", + "maximum": 18446744073709551615, + "minimum": 0, + "type": [ + "integer", + "null" + ] + }, + "file": { + "type": "string" + }, + "line": { + "format": "uint", + "maximum": 18446744073709551615, + "minimum": 0, + "type": [ + "integer", + "null" + ] + }, + "message": { + "type": "string" + }, + "path": { + "type": "string" + } + }, + "required": [ + "file", + "path", + "message" + ], + "type": "object" + }, + "ReportStatus": { + "enum": [ + "complete", + "domain-refusal", + "usage-error", + "operational-failure" + ], + "type": "string" + }, + "ReviewCompletionDestinationPolicy": { + "additionalProperties": false, + "properties": { + "destinationId": { + "type": "string" + }, + "recipientBinding": { + "type": "string" + } + }, + "required": [ + "destinationId", + "recipientBinding" + ], + "type": "object" + }, + "ReviewContextCapability": { + "enum": [ + "human-display", + "service-status", + "task-grant-context", + "routing-context" + ], + "type": "string" + }, + "ReviewContextContract": { + "additionalProperties": false, + "properties": { + "id": { + "$ref": "#/$defs/ExternalId", + "description": "The producer-issued contract id, kept exactly as written: nonblank, no control characters, and at most 256 UTF-8 bytes. The byte ceiling is enforced by the Casework reader.", + "maxLength": 256, + "pattern": "\\S", + "x-registry-maxBytes": 256 + }, + "revision": { + "$ref": "#/$defs/ContentDigest" + }, + "schemaDigest": { + "$ref": "#/$defs/Digest" + } + }, + "required": [ + "id", + "revision", + "schemaDigest" + ], + "type": "object" + }, + "ReviewContextPolicy": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "mode": { + "const": "submitted", + "type": "string" + } + }, + "required": [ + "mode" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "contract": { + "$ref": "#/$defs/ReviewContextContract" + }, + "mode": { + "const": "current-source", + "type": "string" + }, + "provider": { + "type": "string" + } + }, + "required": [ + "mode", + "provider", + "contract" + ], + "type": "object" + } + ] + }, + "ReviewContextProviderPolicy": { + "additionalProperties": false, + "properties": { + "capabilities": { + "items": { + "$ref": "#/$defs/ReviewContextCapability" + }, + "type": "array", + "uniqueItems": true + }, + "deploymentRef": { + "type": "string" + }, + "description": { + "type": [ + "string", + "null" + ] + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "serviceProfiles": { + "additionalProperties": false, + "default": {}, + "properties": { + "human-display": { + "type": "string" + }, + "routing-context": { + "type": "string" + }, + "service-status": { + "type": "string" + }, + "task-grant-context": { + "type": "string" + } + }, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "sourceNamespace": { + "type": "string" + } + }, + "required": [ + "id", + "capabilities", + "sourceNamespace", + "deploymentRef", + "serviceProfiles" + ], + "type": "object" + }, + "ReviewNegativeDecisionMode": { + "oneOf": [ + { + "const": "settle", + "description": "A rejection or change request settles the whole review immediately.", + "type": "string" + }, + { + "const": "advise", + "description": "A negative decision counts toward this stage and the review continues.", + "type": "string" + } + ] + }, + "ReviewOutcomePolicy": { + "additionalProperties": false, + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "label": { + "$ref": "#/$defs/DisplayText" + }, + "publicReason": { + "$ref": "#/$defs/ReviewPublicReasonRule", + "description": "Whether a decision with this outcome gives text for release to the\nsubject's owner. There is no default: the policy author decides what\nan applicant is told." + }, + "reasonRequired": { + "type": "boolean" + }, + "resultRequired": { + "type": "boolean" + }, + "settlement": { + "$ref": "#/$defs/ReviewOutcomeSettlement" + } + }, + "required": [ + "id", + "label", + "settlement", + "reasonRequired", + "publicReason" + ], + "type": "object" + }, + "ReviewOutcomeSettlement": { + "enum": [ + "approved", + "rejected", + "changes-requested", + "answered" + ], + "type": "string" + }, + "ReviewPolicyDependencies": { + "additionalProperties": false, + "description": "Complete behavioral inputs retained beside an admitted request. Live Directory\nmembership and absence facts remain current authority, not policy inputs.", + "properties": { + "accessProfiles": { + "items": { + "$ref": "#/$defs/AccessProfile" + }, + "type": "array" + }, + "calendars": { + "items": { + "$ref": "#/$defs/CalendarPolicy" + }, + "type": "array" + }, + "clocks": { + "items": { + "$ref": "#/$defs/ClockPolicy" + }, + "type": "array" + }, + "contextProvider": { + "anyOf": [ + { + "$ref": "#/$defs/ReviewContextProviderPolicy" + }, + { + "type": "null" + } + ] + }, + "inbox": { + "$ref": "#/$defs/InboxPolicy" + }, + "queues": { + "items": { + "$ref": "#/$defs/QueuePolicy" + }, + "type": "array" + }, + "taskTemplates": { + "items": { + "$ref": "#/$defs/TaskTemplate" + }, + "type": "array" + }, + "teams": { + "items": { + "$ref": "#/$defs/TeamPolicy" + }, + "type": "array" + }, + "trustedProducers": { + "items": { + "$ref": "#/$defs/ReviewProducerPolicy" + }, + "type": "array" + } + }, + "required": [ + "accessProfiles", + "queues", + "teams", + "clocks", + "calendars", + "contextProvider", + "taskTemplates", + "trustedProducers", + "inbox" + ], + "type": "object" + }, + "ReviewPolicyIdentity": { + "additionalProperties": false, + "properties": { + "digest": { + "$ref": "#/$defs/Digest" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "version": { + "type": "string" + } + }, + "required": [ + "id", + "version", + "digest" + ], + "type": "object" + }, + "ReviewProducerPolicy": { + "additionalProperties": false, + "properties": { + "completion": { + "anyOf": [ + { + "$ref": "#/$defs/ReviewCompletionDestinationPolicy" + }, + { + "type": "null" + } + ] + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "initiatorProfile": { + "description": "The requester profile a person named as this producer's initiator\nauthenticates with to read the requester-visible history of their own\nrequests. Absent, no initiator reads anything.", + "type": [ + "string", + "null" + ] + }, + "issuer": { + "$ref": "#/$defs/Url" + }, + "profile": { + "type": "string" + }, + "retention": { + "$ref": "#/$defs/ProducerRetention" + }, + "reviewPolicies": { + "items": { + "type": "string" + }, + "type": "array" + }, + "sourceNamespaces": { + "items": { + "type": "string" + }, + "type": "array" + }, + "subject": { + "type": "string" + }, + "trustedInitiatorIssuer": { + "$ref": "#/$defs/Url" + } + }, + "required": [ + "id", + "profile", + "issuer", + "subject", + "sourceNamespaces", + "reviewPolicies", + "retention" + ], + "type": "object" + }, + "ReviewPublicReasonRule": { + "description": "Whether a decision gives a public reason with an outcome.", + "enum": [ + "required", + "optional", + "none" + ], + "type": "string" + }, + "ReviewPurpose": { + "enum": [ + "approval", + "answer" + ], + "type": "string" + }, + "ReviewRetentionPolicy": { + "additionalProperties": false, + "properties": { + "accountabilityRetentionDays": { + "format": "uint32", + "maximum": 3650, + "minimum": 1, + "type": "integer" + }, + "terminalRetentionDays": { + "format": "uint32", + "maximum": 3650, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "terminalRetentionDays", + "accountabilityRetentionDays" + ], + "type": "object" + }, + "RoleMode": { + "description": "Whether the runtime credential can write the activation ledger.", + "enum": [ + "single", + "split" + ], + "type": "string" + }, + "RoutingCondition": { + "additionalProperties": false, + "properties": { + "fields": { + "additionalProperties": { + "$ref": "#/$defs/RoutingPredicate" + }, + "propertyNames": { + "$ref": "#/$defs/ExternalId" + }, + "type": "object" + }, + "stage": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "RoutingPredicate": { + "description": "The written form of [`RoutingPredicate`], an externally tagged union the\nshared reader decodes with positions.", + "oneOf": [ + { + "additionalProperties": false, + "description": "The projected field equals this value.", + "properties": { + "equals": true + }, + "required": [ + "equals" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "The projected field equals one of these values.", + "properties": { + "oneOf": { + "items": true, + "type": "array" + } + }, + "required": [ + "oneOf" + ], + "type": "object" + } + ] + }, + "RoutingRule": { + "additionalProperties": false, + "properties": { + "because": { + "$ref": "#/$defs/DisplayText" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "label": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "type": "null" + } + ], + "description": "Optional presentation label. Stable references use `id`." + }, + "queue": { + "type": "string" + }, + "when": { + "$ref": "#/$defs/RoutingCondition" + } + }, + "required": [ + "id", + "because", + "when", + "queue" + ], + "type": "object" + }, + "SchedulingTaskPermission": { + "additionalProperties": false, + "description": "Exact Scheduling commitment authority copied into a task grant.\n\nThis duplicates the public wire shape deliberately: Casework is an\nauthority for governed templates, not a dependency on Scheduling's runtime\nor model crate.", + "properties": { + "actions": { + "items": { + "type": "string" + }, + "type": "array" + }, + "location": { + "type": "string" + }, + "service": { + "type": "string" + } + }, + "required": [ + "service", + "location", + "actions" + ], + "type": "object" + }, + "Severity": { + "description": "Whether a diagnostic refuses the input.", + "enum": [ + "error", + "warning" + ], + "type": "string" + }, + "Source": { + "additionalProperties": false, + "description": "Where a diagnostic points. `file` is the path exactly as the caller gave\nit; `line` and `column` are 1-based and absent when the problem concerns\nthe file as a whole.", + "properties": { + "column": { + "format": "uint", + "maximum": 18446744073709551615, + "minimum": 0, + "type": [ + "integer", + "null" + ] + }, + "file": { + "type": "string" + }, + "line": { + "format": "uint", + "maximum": 18446744073709551615, + "minimum": 0, + "type": [ + "integer", + "null" + ] + } + }, + "required": [ + "file" + ], + "type": "object" + }, + "StageClockAnchor": { + "additionalProperties": false, + "description": "The instant a stage clock counts from: `anchor: {type: stage-entered}`.", + "properties": { + "type": { + "$ref": "#/$defs/StageClockAnchorType" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + "StageClockAnchorType": { + "enum": [ + "stage-entered" + ], + "type": "string" + }, + "StrandedWork": { + "additionalProperties": false, + "properties": { + "policy": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "reviews": { + "format": "uint64", + "maximum": 18446744073709551615, + "minimum": 0, + "type": "integer" + }, + "version": { + "type": "string" + } + }, + "required": [ + "policy", + "version", + "reviews", + "reason" + ], + "type": "object" + }, + "SubjectClockAnchor": { + "additionalProperties": false, + "description": "The instant a subject clock counts from: `anchor: {type: request-accepted}`.", + "properties": { + "type": { + "$ref": "#/$defs/SubjectClockAnchorType" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + "SubjectClockAnchorType": { + "enum": [ + "request-accepted" + ], + "type": "string" + }, + "TaskAuthorizationMode": { + "enum": [ + "immediate", + "deferred" + ], + "type": "string" + }, + "TaskGrantBounds": { + "description": "The product-specific authority a task grant carries, chosen by its `type`\nmember. The shared reader's union helper decodes it so every error inside\na variant keeps its position (CFG-SCHEMA-8); the wire form is unchanged.", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "requirement": { + "type": "string" + }, + "type": { + "const": "evidence", + "type": "string" + } + }, + "required": [ + "type", + "requirement" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "permissions": { + "items": { + "$ref": "#/$defs/TaskPermission" + }, + "type": "array" + }, + "type": { + "const": "breg", + "type": "string" + } + }, + "required": [ + "type", + "permissions" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "permissions": { + "items": { + "$ref": "#/$defs/SchedulingTaskPermission" + }, + "type": "array" + }, + "type": { + "const": "scheduling", + "type": "string" + } + }, + "required": [ + "type", + "permissions" + ], + "type": "object" + } + ] + }, + "TaskPermission": { + "additionalProperties": false, + "properties": { + "collection": { + "type": "string" + }, + "operations": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "collection", + "operations" + ], + "type": "object" + }, + "TaskTemplate": { + "additionalProperties": false, + "allOf": [ + { + "else": { + "properties": { + "lifetimeSeconds": { + "maximum": 900 + } + } + }, + "if": { + "properties": { + "authorizationMode": { + "const": "deferred" + } + }, + "required": [ + "authorizationMode" + ] + }, + "then": { + "properties": { + "lifetimeSeconds": { + "maximum": 604800 + } + } + } + }, + { + "if": { + "properties": { + "authorizationMode": { + "const": "deferred" + } + }, + "required": [ + "authorizationMode" + ] + }, + "then": { + "properties": { + "bounds": { + "properties": { + "type": { + "not": { + "const": "evidence" + } + } + } + } + } + } + } + ], + "properties": { + "agent": { + "$ref": "#/$defs/TemplateAgent" + }, + "authorizationMode": { + "$ref": "#/$defs/TaskAuthorizationMode", + "description": "Immediate authorizations last at most fifteen minutes. Deferred is an\nexplicit governed window of at most seven days; assertion TTL stays sixty seconds." + }, + "bounds": { + "$ref": "#/$defs/TaskGrantBounds" + }, + "client": { + "type": "string" + }, + "eligibleProfiles": { + "items": { + "type": "string" + }, + "type": "array" + }, + "eligibleTeams": { + "items": { + "type": "string" + }, + "type": "array" + }, + "evidenceContext": { + "anyOf": [ + { + "$ref": "#/$defs/EvidenceRequesterContext" + }, + { + "type": "null" + } + ], + "description": "Evidence-only requester context signed into the authority assertion.\nOther products derive neither requester admission nor relying-party\naudience from these fields and therefore forbid the block entirely." + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "label": { + "$ref": "#/$defs/DisplayText" + }, + "lifetimeSeconds": { + "format": "uint64", + "maximum": 604800, + "minimum": 1, + "type": "integer" + }, + "purpose": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "reviewPolicies": { + "description": "Policies whose currently held ReviewTasks may issue this grant.", + "items": { + "type": "string" + }, + "type": "array" + }, + "scopes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "source": { + "type": "string" + }, + "subjects": { + "additionalProperties": { + "type": "string" + }, + "description": "Exact token identity keys mapped to governed source logical fields.\nValues are extracted from the approving caller's disclosed source read.", + "propertyNames": { + "$ref": "#/$defs/ExternalId" + }, + "type": "object" + }, + "version": { + "type": "string" + } + }, + "required": [ + "id", + "version", + "label", + "eligibleTeams", + "eligibleProfiles", + "source", + "agent", + "client", + "resource", + "scopes", + "purpose", + "bounds", + "subjects", + "lifetimeSeconds" + ], + "type": "object" + }, + "TaskTemplateEffect": { + "additionalProperties": false, + "properties": { + "change": { + "$ref": "#/$defs/TemplateChange" + }, + "templateId": { + "type": "string" + }, + "templateVersion": { + "type": "string" + } + }, + "required": [ + "templateId", + "templateVersion", + "change" + ], + "type": "object" + }, + "TeamPolicy": { + "additionalProperties": false, + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "label": { + "$ref": "#/$defs/DisplayText" + }, + "memberProfiles": { + "items": { + "type": "string" + }, + "type": "array" + }, + "serves": { + "items": { + "type": "string" + }, + "type": "array" + }, + "supervisorProfiles": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "id", + "label", + "serves", + "memberProfiles", + "supervisorProfiles" + ], + "type": "object" + }, + "TemplateAgent": { + "additionalProperties": false, + "description": "The agent a template names, as `casework.yaml` writes it: the issuer is\nthe URL of the token issuer that authenticates the agent (CFG-VAL-7).", + "properties": { + "issuer": { + "$ref": "#/$defs/Url" + }, + "subject": { + "type": "string" + } + }, + "required": [ + "issuer", + "subject" + ], + "type": "object" + }, + "TemplateChange": { + "description": "What an activation does to one task template version.", + "oneOf": [ + { + "const": "added", + "description": "The version is stored for the first time and becomes active.", + "type": "string" + }, + { + "const": "activated", + "description": "A stored inactive version becomes active again.", + "type": "string" + }, + { + "const": "retained", + "description": "The version stays active.", + "type": "string" + }, + { + "const": "deactivated", + "description": "An active version the package no longer declares is deactivated and\nits live grants are invalidated.", + "type": "string" + } + ] + }, + "Url": { + "description": "An absolute http or https URL with a host preserved as written, no user information, and no backslash, whitespace or control character. DNS case and equivalent IPv6 literals are permitted.", + "format": "uri", + "maxLength": 2048, + "pattern": "^[Hh][Tt][Tt][Pp][Ss]?://[^/?#@\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]+([/?#][^\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]*)?$", + "type": "string" + }, + "WorkingDays": { + "additionalProperties": false, + "description": "A number of working days: `after: {workingDays: N}`, and the lead time\ninside `before`.", + "properties": { + "workingDays": { + "format": "uint32", + "maximum": 3650, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "workingDays" + ], + "type": "object" + }, + "WorkingDaysBefore": { + "additionalProperties": false, + "description": "A lead time before a stage clock is due: `{before: {workingDays: N}}`.", + "properties": { + "before": { + "$ref": "#/$defs/WorkingDays" + } + }, + "required": [ + "before" + ], + "type": "object" + }, + "WorkingWeekday": { + "enum": [ + "monday", + "tuesday", + "wednesday", + "thursday", + "friday", + "saturday", + "sunday" + ], + "type": "string" + } + }, + "$id": "https://id.registrystack.org/schemas/casework/report/report.v1alpha2.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "allOf": [ + { + "oneOf": [ + { + "properties": { + "ok": { + "const": true + }, + "status": { + "const": "complete" + } + } + }, + { + "properties": { + "diagnostics": { + "minItems": 1 + }, + "ok": { + "const": false + }, + "status": { + "enum": [ + "domain-refusal", + "usage-error", + "operational-failure" + ] + } + } + } + ] + } + ], + "oneOf": [ + { + "additionalProperties": false, + "allOf": [ + { + "if": { + "anyOf": [ + { + "properties": { + "ok": { + "const": true + } + }, + "required": [ + "ok" + ] + }, + { + "required": [ + "created" + ] + }, + { + "required": [ + "next" + ] + }, + { + "required": [ + "template" + ] + } + ] + }, + "then": { + "required": [ + "created", + "template", + "next" + ] + } + } + ], + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/casework/report/v1alpha2", + "type": "string" + }, + "command": { + "const": "init", + "type": "string" + }, + "created": { + "type": "string" + }, + "diagnostics": { + "items": { + "$ref": "#/$defs/Diagnostic" + }, + "type": "array" + }, + "kind": { + "const": "CaseworkReport", + "type": "string" + }, + "next": { + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "status": { + "$ref": "#/$defs/ReportStatus" + }, + "template": { + "type": "string" + }, + "version": { + "type": "string" + } + }, + "required": [ + "command", + "ok", + "status", + "apiVersion", + "kind", + "version", + "diagnostics" + ], + "type": "object" + }, + { + "additionalProperties": false, + "allOf": [ + { + "if": { + "anyOf": [ + { + "properties": { + "ok": { + "const": true + } + }, + "required": [ + "ok" + ] + }, + { + "required": [ + "bregPackage" + ] + }, + { + "required": [ + "databaseAccess" + ] + }, + { + "required": [ + "filesChecked" + ] + }, + { + "required": [ + "networkAccess" + ] + }, + { + "required": [ + "policyBindings" + ] + }, + { + "required": [ + "project" + ] + }, + { + "required": [ + "runtimeConfig" + ] + } + ] + }, + "then": { + "required": [ + "project", + "policyBindings", + "filesChecked", + "networkAccess", + "databaseAccess" + ] + } + } + ], + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/casework/report/v1alpha2", + "type": "string" + }, + "bregPackage": { + "anyOf": [ + { + "$ref": "#/$defs/ProducerAgreementData" + }, + { + "type": "null" + } + ] + }, + "command": { + "const": "check", + "type": "string" + }, + "databaseAccess": { + "type": "boolean" + }, + "diagnostics": { + "items": { + "$ref": "#/$defs/Diagnostic" + }, + "type": "array" + }, + "filesChecked": { + "format": "uint", + "maximum": 18446744073709551615, + "minimum": 0, + "type": "integer" + }, + "kind": { + "const": "CaseworkReport", + "type": "string" + }, + "networkAccess": { + "type": "boolean" + }, + "ok": { + "type": "boolean" + }, + "policyBindings": { + "items": { + "$ref": "#/$defs/ReviewPolicyIdentity" + }, + "type": "array" + }, + "project": { + "type": "string" + }, + "runtimeConfig": { + "type": [ + "string", + "null" + ] + }, + "status": { + "$ref": "#/$defs/ReportStatus" + }, + "version": { + "type": "string" + } + }, + "required": [ + "command", + "ok", + "status", + "apiVersion", + "kind", + "version", + "diagnostics" + ], + "type": "object" + }, + { + "additionalProperties": false, + "allOf": [ + { + "if": { + "anyOf": [ + { + "properties": { + "ok": { + "const": true + } + }, + "required": [ + "ok" + ] + }, + { + "required": [ + "authority" + ] + }, + { + "required": [ + "calendars" + ] + }, + { + "required": [ + "clocks" + ] + }, + { + "required": [ + "contextProviders" + ] + }, + { + "required": [ + "project" + ] + }, + { + "required": [ + "reviewPolicies" + ] + }, + { + "required": [ + "staffing" + ] + }, + { + "required": [ + "trustedProducers" + ] + } + ] + }, + "then": { + "required": [ + "project", + "reviewPolicies", + "contextProviders", + "clocks", + "calendars", + "trustedProducers", + "staffing", + "authority" + ] + } + } + ], + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/casework/report/v1alpha2", + "type": "string" + }, + "authority": { + "type": "string" + }, + "calendars": { + "items": { + "$ref": "#/$defs/CalendarPolicy" + }, + "type": "array" + }, + "clocks": { + "items": { + "$ref": "#/$defs/ClockPolicy" + }, + "type": "array" + }, + "command": { + "const": "explain", + "type": "string" + }, + "contextProviders": { + "items": { + "$ref": "#/$defs/ReviewContextProviderPolicy" + }, + "type": "array" + }, + "diagnostics": { + "items": { + "$ref": "#/$defs/Diagnostic" + }, + "type": "array" + }, + "kind": { + "const": "CaseworkReport", + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "project": { + "$ref": "#/$defs/ProjectIdentity" + }, + "reviewPolicies": { + "items": { + "$ref": "#/$defs/ExplainPolicy" + }, + "type": "array" + }, + "staffing": { + "$ref": "#/$defs/ExplainStaffing" + }, + "status": { + "$ref": "#/$defs/ReportStatus" + }, + "trustedProducers": { + "items": { + "$ref": "#/$defs/ReviewProducerPolicy" + }, + "type": "array" + }, + "version": { + "type": "string" + } + }, + "required": [ + "command", + "ok", + "status", + "apiVersion", + "kind", + "version", + "diagnostics" + ], + "type": "object" + }, + { + "additionalProperties": false, + "allOf": [ + { + "if": { + "anyOf": [ + { + "properties": { + "ok": { + "const": true + } + }, + "required": [ + "ok" + ] + }, + { + "required": [ + "databaseAccess" + ] + }, + { + "required": [ + "fixtures" + ] + }, + { + "required": [ + "networkAccess" + ] + }, + { + "required": [ + "productionClosure" + ] + }, + { + "required": [ + "proofBoundary" + ] + } + ] + }, + "then": { + "required": [ + "fixtures", + "proofBoundary", + "productionClosure", + "networkAccess", + "databaseAccess" + ] + } + } + ], + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/casework/report/v1alpha2", + "type": "string" + }, + "command": { + "const": "test", + "type": "string" + }, + "databaseAccess": { + "type": "boolean" + }, + "diagnostics": { + "items": { + "$ref": "#/$defs/Diagnostic" + }, + "type": "array" + }, + "fixtures": { + "items": { + "type": "string" + }, + "type": "array" + }, + "kind": { + "const": "CaseworkReport", + "type": "string" + }, + "networkAccess": { + "type": "boolean" + }, + "ok": { + "type": "boolean" + }, + "productionClosure": { + "type": "boolean" + }, + "proofBoundary": { + "type": "string" + }, + "status": { + "$ref": "#/$defs/ReportStatus" + }, + "version": { + "type": "string" + } + }, + "required": [ + "command", + "ok", + "status", + "apiVersion", + "kind", + "version", + "diagnostics" + ], + "type": "object" + }, + { + "additionalProperties": false, + "allOf": [ + { + "if": { + "anyOf": [ + { + "properties": { + "ok": { + "const": true + } + }, + "required": [ + "ok" + ] + }, + { + "required": [ + "files" + ] + }, + { + "required": [ + "output" + ] + } + ] + }, + "then": { + "required": [ + "output", + "files" + ] + } + } + ], + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/casework/report/v1alpha2", + "type": "string" + }, + "command": { + "const": "types", + "type": "string" + }, + "diagnostics": { + "items": { + "$ref": "#/$defs/Diagnostic" + }, + "type": "array" + }, + "files": { + "items": { + "type": "string" + }, + "type": "array" + }, + "kind": { + "const": "CaseworkReport", + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "output": { + "type": "string" + }, + "status": { + "$ref": "#/$defs/ReportStatus" + }, + "version": { + "type": "string" + } + }, + "required": [ + "command", + "ok", + "status", + "apiVersion", + "kind", + "version", + "diagnostics" + ], + "type": "object" + }, + { + "additionalProperties": false, + "allOf": [ + { + "if": { + "anyOf": [ + { + "properties": { + "ok": { + "const": true + } + }, + "required": [ + "ok" + ] + }, + { + "required": [ + "accessProfiles" + ] + }, + { + "required": [ + "assertionIssuers" + ] + }, + { + "required": [ + "claims" + ] + }, + { + "required": [ + "output" + ] + }, + { + "required": [ + "product" + ] + } + ] + }, + "then": { + "required": [ + "output", + "product", + "claims", + "accessProfiles", + "assertionIssuers" + ] + } + } + ], + "properties": { + "accessProfiles": { + "format": "uint32", + "maximum": 4294967295, + "minimum": 0, + "type": "integer" + }, + "apiVersion": { + "const": "id.registrystack.org/formats/casework/report/v1alpha2", + "type": "string" + }, + "assertionIssuers": { + "format": "uint32", + "maximum": 4294967295, + "minimum": 0, + "type": "integer" + }, + "claims": { + "format": "uint32", + "maximum": 4294967295, + "minimum": 0, + "type": "integer" + }, + "command": { + "const": "generate-identity-facts", + "type": "string" + }, + "diagnostics": { + "items": { + "$ref": "#/$defs/Diagnostic" + }, + "type": "array" + }, + "kind": { + "const": "CaseworkReport", + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "output": { + "type": "string" + }, + "product": { + "type": "string" + }, + "status": { + "$ref": "#/$defs/ReportStatus" + }, + "version": { + "type": "string" + } + }, + "required": [ + "command", + "ok", + "status", + "apiVersion", + "kind", + "version", + "diagnostics" + ], + "type": "object" + }, + { + "additionalProperties": false, + "allOf": [ + { + "if": { + "anyOf": [ + { + "properties": { + "ok": { + "const": true + } + }, + "required": [ + "ok" + ] + }, + { + "required": [ + "actionId" + ] + }, + { + "required": [ + "authorityId" + ] + }, + { + "required": [ + "bypassPaths" + ] + }, + { + "required": [ + "changes" + ] + }, + { + "required": [ + "check" + ] + }, + { + "required": [ + "contextFields" + ] + }, + { + "required": [ + "deployment" + ] + }, + { + "required": [ + "inputsOnlyAlternative" + ] + }, + { + "required": [ + "next" + ] + }, + { + "required": [ + "outcome" + ] + }, + { + "required": [ + "package" + ] + }, + { + "required": [ + "pairing" + ] + }, + { + "required": [ + "pattern" + ] + }, + { + "required": [ + "policyId" + ] + }, + { + "required": [ + "project" + ] + }, + { + "required": [ + "providerId" + ] + }, + { + "required": [ + "readGrant" + ] + }, + { + "required": [ + "sourceNamespace" + ] + }, + { + "required": [ + "sourceWrites" + ] + } + ] + }, + "then": { + "required": [ + "project", + "actionId", + "pattern", + "outcome", + "sourceNamespace", + "policyId", + "authorityId", + "providerId", + "contextFields", + "changes", + "deployment", + "bypassPaths", + "sourceWrites", + "next" + ] + } + } + ], + "properties": { + "actionId": { + "type": "string" + }, + "apiVersion": { + "const": "id.registrystack.org/formats/casework/report/v1alpha2", + "type": "string" + }, + "authorityId": { + "type": "string" + }, + "bypassPaths": { + "items": { + "$ref": "#/$defs/ProviderAddBypass" + }, + "type": "array" + }, + "changes": { + "items": { + "$ref": "#/$defs/ProviderAddChange" + }, + "type": "array" + }, + "check": { + "x-registry-passthrough": "The existing typed caseworkctl check payload is embedded unchanged." + }, + "command": { + "const": "provider-add", + "type": "string" + }, + "contextFields": { + "items": { + "type": "string" + }, + "type": "array" + }, + "deployment": { + "items": { + "$ref": "#/$defs/ProviderAddChange" + }, + "type": "array" + }, + "diagnostics": { + "items": { + "$ref": "#/$defs/Diagnostic" + }, + "type": "array" + }, + "inputsOnlyAlternative": { + "anyOf": [ + { + "$ref": "#/$defs/ProviderAddNotice" + }, + { + "type": "null" + } + ] + }, + "kind": { + "const": "CaseworkReport", + "type": "string" + }, + "next": { + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "outcome": { + "$ref": "#/$defs/ProviderAddState" + }, + "package": { + "x-registry-passthrough": "The existing typed caseworkctl package payload is embedded unchanged." + }, + "pairing": { + "x-registry-passthrough": "The existing typed caseworkctl provider-pair agreement payload is embedded unchanged." + }, + "pattern": { + "type": "string" + }, + "policyId": { + "type": "string" + }, + "project": { + "type": "string" + }, + "providerId": { + "type": "string" + }, + "readGrant": { + "anyOf": [ + { + "$ref": "#/$defs/ProviderAddNotice" + }, + { + "type": "null" + } + ] + }, + "sourceNamespace": { + "type": "string" + }, + "sourceWrites": { + "type": "boolean" + }, + "status": { + "$ref": "#/$defs/ReportStatus" + }, + "version": { + "type": "string" + } + }, + "required": [ + "command", + "ok", + "status", + "apiVersion", + "kind", + "version", + "diagnostics" + ], + "type": "object" + }, + { + "additionalProperties": false, + "allOf": [ + { + "if": { + "anyOf": [ + { + "properties": { + "ok": { + "const": true + } + }, + "required": [ + "ok" + ] + }, + { + "required": [ + "applied" + ] + }, + { + "required": [ + "contract" + ] + }, + { + "required": [ + "description" + ] + }, + { + "required": [ + "next" + ] + }, + { + "required": [ + "providerId" + ] + }, + { + "required": [ + "readerAuthority" + ] + }, + { + "required": [ + "registryRevision" + ] + }, + { + "required": [ + "taskGrantAuthority" + ] + } + ] + }, + "then": { + "required": [ + "applied", + "providerId", + "description", + "contract", + "registryRevision", + "readerAuthority", + "next" + ] + } + } + ], + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/casework/report/v1alpha2", + "type": "string" + }, + "applied": { + "type": "boolean" + }, + "command": { + "const": "provider-pair", + "type": "string" + }, + "contract": { + "$ref": "#/$defs/ReviewContextContract" + }, + "description": { + "type": "string" + }, + "diagnostics": { + "items": { + "$ref": "#/$defs/Diagnostic" + }, + "type": "array" + }, + "kind": { + "const": "CaseworkReport", + "type": "string" + }, + "next": { + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "providerId": { + "type": "string" + }, + "readerAuthority": { + "$ref": "#/$defs/ReaderAuthority" + }, + "registryRevision": { + "type": "string" + }, + "status": { + "$ref": "#/$defs/ReportStatus" + }, + "taskGrantAuthority": { + "anyOf": [ + { + "$ref": "#/$defs/ReaderAuthority" + }, + { + "type": "null" + } + ] + }, + "version": { + "type": "string" + } + }, + "required": [ + "command", + "ok", + "status", + "apiVersion", + "kind", + "version", + "diagnostics" + ], + "type": "object" + }, + { + "additionalProperties": false, + "allOf": [ + { + "if": { + "anyOf": [ + { + "properties": { + "ok": { + "const": true + } + }, + "required": [ + "ok" + ] + }, + { + "required": [ + "lifecycles" + ] + } + ] + }, + "then": { + "required": [ + "lifecycles" + ] + } + } + ], + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/casework/report/v1alpha2", + "type": "string" + }, + "command": { + "const": "lifecycle", + "type": "string" + }, + "diagnostics": { + "items": { + "$ref": "#/$defs/Diagnostic" + }, + "type": "array" + }, + "kind": { + "const": "CaseworkReport", + "type": "string" + }, + "lifecycles": { + "items": { + "$ref": "#/$defs/LifecycleDescription" + }, + "type": "array" + }, + "ok": { + "type": "boolean" + }, + "status": { + "$ref": "#/$defs/ReportStatus" + }, + "version": { + "type": "string" + } + }, + "required": [ + "command", + "ok", + "status", + "apiVersion", + "kind", + "version", + "diagnostics" + ], + "type": "object" + }, + { + "additionalProperties": false, + "allOf": [ + { + "if": { + "anyOf": [ + { + "properties": { + "ok": { + "const": true + } + }, + "required": [ + "ok" + ] + }, + { + "required": [ + "dryRun" + ] + }, + { + "required": [ + "files" + ] + }, + { + "required": [ + "output" + ] + }, + { + "required": [ + "packageDigest" + ] + }, + { + "required": [ + "revision" + ] + }, + { + "required": [ + "secretsIncluded" + ] + } + ] + }, + "then": { + "required": [ + "packageDigest" + ] + } + } + ], + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/casework/report/v1alpha2", + "type": "string" + }, + "command": { + "const": "package", + "type": "string" + }, + "diagnostics": { + "items": { + "$ref": "#/$defs/Diagnostic" + }, + "type": "array" + }, + "dryRun": { + "type": [ + "boolean", + "null" + ] + }, + "files": { + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "kind": { + "const": "CaseworkReport", + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "output": { + "type": [ + "string", + "null" + ] + }, + "packageDigest": { + "$ref": "#/$defs/Digest" + }, + "revision": { + "type": [ + "string", + "null" + ] + }, + "secretsIncluded": { + "type": [ + "boolean", + "null" + ] + }, + "status": { + "$ref": "#/$defs/ReportStatus" + }, + "version": { + "type": "string" + } + }, + "required": [ + "command", + "ok", + "status", + "apiVersion", + "kind", + "version", + "diagnostics" + ], + "type": "object" + }, + { + "additionalProperties": false, + "allOf": [ + { + "if": { + "anyOf": [ + { + "properties": { + "ok": { + "const": true + } + }, + "required": [ + "ok" + ] + }, + { + "required": [ + "activation" + ] + }, + { + "required": [ + "checks" + ] + }, + { + "required": [ + "packageDigest" + ] + }, + { + "required": [ + "runtimeConfig" + ] + } + ] + }, + "then": { + "required": [ + "runtimeConfig", + "packageDigest", + "activation", + "checks" + ] + } + } + ], + "properties": { + "activation": { + "$ref": "#/$defs/ActivationPlan" + }, + "apiVersion": { + "const": "id.registrystack.org/formats/casework/report/v1alpha2", + "type": "string" + }, + "checks": { + "$ref": "#/$defs/DoctorChecks" + }, + "command": { + "const": "doctor", + "type": "string" + }, + "diagnostics": { + "items": { + "$ref": "#/$defs/Diagnostic" + }, + "type": "array" + }, + "kind": { + "const": "CaseworkReport", + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "packageDigest": { + "$ref": "#/$defs/Digest" + }, + "runtimeConfig": { + "type": "string" + }, + "status": { + "$ref": "#/$defs/ReportStatus" + }, + "version": { + "type": "string" + } + }, + "required": [ + "command", + "ok", + "status", + "apiVersion", + "kind", + "version", + "diagnostics" + ], + "type": "object" + }, + { + "additionalProperties": false, + "allOf": [ + { + "if": { + "anyOf": [ + { + "properties": { + "ok": { + "const": true + } + }, + "required": [ + "ok" + ] + }, + { + "required": [ + "plan" + ] + }, + { + "required": [ + "runtimeConfig" + ] + } + ] + }, + "then": { + "required": [ + "runtimeConfig", + "plan" + ] + } + } + ], + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/casework/report/v1alpha2", + "type": "string" + }, + "command": { + "const": "plan", + "type": "string" + }, + "diagnostics": { + "items": { + "$ref": "#/$defs/Diagnostic" + }, + "type": "array" + }, + "kind": { + "const": "CaseworkReport", + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "plan": { + "$ref": "#/$defs/ActivationPlan" + }, + "runtimeConfig": { + "type": "string" + }, + "status": { + "$ref": "#/$defs/ReportStatus" + }, + "version": { + "type": "string" + } + }, + "required": [ + "command", + "ok", + "status", + "apiVersion", + "kind", + "version", + "diagnostics" + ], + "type": "object" + }, + { + "additionalProperties": false, + "allOf": [ + { + "if": { + "anyOf": [ + { + "properties": { + "ok": { + "const": true + } + }, + "required": [ + "ok" + ] + }, + { + "required": [ + "activation" + ] + }, + { + "required": [ + "effects" + ] + }, + { + "required": [ + "runtimeConfig" + ] + }, + { + "required": [ + "schemaVersionsApplied" + ] + }, + { + "required": [ + "singleRoleStatement" + ] + } + ] + }, + "then": { + "required": [ + "runtimeConfig", + "activation", + "schemaVersionsApplied", + "effects", + "singleRoleStatement" + ] + } + } + ], + "properties": { + "activation": { + "$ref": "#/$defs/Activation" + }, + "apiVersion": { + "const": "id.registrystack.org/formats/casework/report/v1alpha2", + "type": "string" + }, + "command": { + "const": "apply", + "type": "string" + }, + "diagnostics": { + "items": { + "$ref": "#/$defs/Diagnostic" + }, + "type": "array" + }, + "effects": { + "$ref": "#/$defs/ActivationEffects" + }, + "kind": { + "const": "CaseworkReport", + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "runtimeConfig": { + "type": "string" + }, + "schemaVersionsApplied": { + "items": { + "format": "int64", + "maximum": 9223372036854775807, + "minimum": -9223372036854775808, + "type": "integer" + }, + "type": "array" + }, + "singleRoleStatement": { + "type": [ + "string", + "null" + ] + }, + "status": { + "$ref": "#/$defs/ReportStatus" + }, + "version": { + "type": "string" + } + }, + "required": [ + "command", + "ok", + "status", + "apiVersion", + "kind", + "version", + "diagnostics" + ], + "type": "object" + }, + { + "additionalProperties": false, + "allOf": [ + { + "if": { + "anyOf": [ + { + "properties": { + "ok": { + "const": true + } + }, + "required": [ + "ok" + ] + }, + { + "required": [ + "activation" + ] + }, + { + "required": [ + "runtimeConfig" + ] + }, + { + "required": [ + "singleRoleStatement" + ] + } + ] + }, + "then": { + "required": [ + "runtimeConfig", + "activation", + "singleRoleStatement" + ] + } + } + ], + "properties": { + "activation": { + "$ref": "#/$defs/ActivationStatus" + }, + "apiVersion": { + "const": "id.registrystack.org/formats/casework/report/v1alpha2", + "type": "string" + }, + "command": { + "const": "status", + "type": "string" + }, + "diagnostics": { + "items": { + "$ref": "#/$defs/Diagnostic" + }, + "type": "array" + }, + "kind": { + "const": "CaseworkReport", + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "runtimeConfig": { + "type": "string" + }, + "singleRoleStatement": { + "type": [ + "string", + "null" + ] + }, + "status": { + "$ref": "#/$defs/ReportStatus" + }, + "version": { + "type": "string" + } + }, + "required": [ + "command", + "ok", + "status", + "apiVersion", + "kind", + "version", + "diagnostics" + ], + "type": "object" + }, + { + "additionalProperties": false, + "allOf": [ + { + "if": { + "anyOf": [ + { + "properties": { + "ok": { + "const": true + } + }, + "required": [ + "ok" + ] + }, + { + "required": [ + "audience" + ] + }, + { + "required": [ + "caseworkUrl" + ] + }, + { + "required": [ + "clientAssertionAudience" + ] + }, + { + "required": [ + "clients" + ] + }, + { + "required": [ + "contextProviders" + ] + }, + { + "required": [ + "directory" + ] + }, + { + "required": [ + "issuer" + ] + }, + { + "required": [ + "issuerProject" + ] + }, + { + "required": [ + "journal" + ] + }, + { + "required": [ + "operatorConfig" + ] + }, + { + "required": [ + "outcome" + ] + }, + { + "required": [ + "project" + ] + }, + { + "required": [ + "resource" + ] + }, + { + "required": [ + "stateFile" + ] + }, + { + "required": [ + "tokenEndpoint" + ] + } + ] + }, + "then": { + "required": [ + "outcome", + "project", + "stateFile", + "operatorConfig", + "caseworkUrl", + "tokenEndpoint", + "issuer", + "clientAssertionAudience", + "resource", + "audience", + "journal", + "contextProviders", + "clients", + "directory" + ] + } + } + ], + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/casework/report/v1alpha2", + "type": "string" + }, + "audience": { + "type": "string" + }, + "caseworkUrl": { + "$ref": "#/$defs/Url" + }, + "clientAssertionAudience": { + "type": "string" + }, + "clients": { + "items": { + "$ref": "#/$defs/DevClient" + }, + "type": "array" + }, + "command": { + "const": "dev", + "type": "string" + }, + "contextProviders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "diagnostics": { + "items": { + "$ref": "#/$defs/Diagnostic" + }, + "type": "array" + }, + "directory": { + "$ref": "#/$defs/DevDirectory" + }, + "issuer": { + "$ref": "#/$defs/Url" + }, + "issuerProject": { + "type": [ + "string", + "null" + ] + }, + "journal": { + "type": "string" + }, + "kind": { + "const": "CaseworkReport", + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "operatorConfig": { + "type": "string" + }, + "outcome": { + "$ref": "#/$defs/DevState" + }, + "project": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "stateFile": { + "type": "string" + }, + "status": { + "$ref": "#/$defs/ReportStatus" + }, + "tokenEndpoint": { + "type": "string" + }, + "version": { + "type": "string" + } + }, + "required": [ + "command", + "ok", + "status", + "apiVersion", + "kind", + "version", + "diagnostics" + ], + "type": "object" + }, + { + "additionalProperties": false, + "allOf": [ + { + "if": { + "anyOf": [ + { + "properties": { + "ok": { + "const": true + } + }, + "required": [ + "ok" + ] + }, + { + "required": [ + "events" + ] + }, + { + "required": [ + "journal" + ] + }, + { + "required": [ + "project" + ] + }, + { + "required": [ + "truncated" + ] + } + ] + }, + "then": { + "required": [ + "project", + "journal", + "events", + "truncated" + ] + } + } + ], + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/casework/report/v1alpha2", + "type": "string" + }, + "command": { + "const": "dev-events", + "type": "string" + }, + "diagnostics": { + "items": { + "$ref": "#/$defs/Diagnostic" + }, + "type": "array" + }, + "events": { + "items": { + "type": "string" + }, + "type": "array" + }, + "journal": { + "type": "string" + }, + "kind": { + "const": "CaseworkReport", + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "project": { + "type": "string" + }, + "status": { + "$ref": "#/$defs/ReportStatus" + }, + "truncated": { + "type": "boolean" + }, + "version": { + "type": "string" + } + }, + "required": [ + "command", + "ok", + "status", + "apiVersion", + "kind", + "version", + "diagnostics" + ], + "type": "object" + }, + { + "additionalProperties": false, + "allOf": [ + { + "if": { + "anyOf": [ + { + "properties": { + "ok": { + "const": true + } + }, + "required": [ + "ok" + ] + }, + { + "required": [ + "headerFile" + ] + } + ] + }, + "then": { + "required": [ + "headerFile" + ] + } + } + ], + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/casework/report/v1alpha2", + "type": "string" + }, + "command": { + "const": "dev-token", + "type": "string" + }, + "diagnostics": { + "items": { + "$ref": "#/$defs/Diagnostic" + }, + "type": "array" + }, + "headerFile": { + "type": "string" + }, + "kind": { + "const": "CaseworkReport", + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "status": { + "$ref": "#/$defs/ReportStatus" + }, + "version": { + "type": "string" + } + }, + "required": [ + "command", + "ok", + "status", + "apiVersion", + "kind", + "version", + "diagnostics" + ], + "type": "object" + }, + { + "additionalProperties": false, + "allOf": [ + { + "if": { + "anyOf": [ + { + "properties": { + "ok": { + "const": true + } + }, + "required": [ + "ok" + ] + }, + { + "required": [ + "grantExpiresAt" + ] + }, + { + "required": [ + "headerFile" + ] + } + ] + }, + "then": { + "required": [ + "headerFile", + "grantExpiresAt" + ] + } + } + ], + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/casework/report/v1alpha2", + "type": "string" + }, + "command": { + "const": "dev-grant", + "type": "string" + }, + "diagnostics": { + "items": { + "$ref": "#/$defs/Diagnostic" + }, + "type": "array" + }, + "grantExpiresAt": { + "format": "uint64", + "maximum": 18446744073709551615, + "minimum": 0, + "type": "integer" + }, + "headerFile": { + "type": "string" + }, + "kind": { + "const": "CaseworkReport", + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "status": { + "$ref": "#/$defs/ReportStatus" + }, + "version": { + "type": "string" + } + }, + "required": [ + "command", + "ok", + "status", + "apiVersion", + "kind", + "version", + "diagnostics" + ], + "type": "object" + }, + { + "additionalProperties": false, + "allOf": [ + { + "if": { + "anyOf": [ + { + "properties": { + "ok": { + "const": true + } + }, + "required": [ + "ok" + ] + }, + { + "required": [ + "clientId" + ] + }, + { + "required": [ + "subject" + ] + } + ] + }, + "then": { + "required": [ + "clientId", + "subject" + ] + } + } + ], + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/casework/report/v1alpha2", + "type": "string" + }, + "clientId": { + "type": "string" + }, + "command": { + "const": "dev-identity", + "type": "string" + }, + "diagnostics": { + "items": { + "$ref": "#/$defs/Diagnostic" + }, + "type": "array" + }, + "kind": { + "const": "CaseworkReport", + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "status": { + "$ref": "#/$defs/ReportStatus" + }, + "subject": { + "type": "string" + }, + "version": { + "type": "string" + } + }, + "required": [ + "command", + "ok", + "status", + "apiVersion", + "kind", + "version", + "diagnostics" + ], + "type": "object" + }, + { + "additionalProperties": false, + "allOf": [ + { + "if": { + "anyOf": [ + { + "properties": { + "ok": { + "const": true + } + }, + "required": [ + "ok" + ] + } + ] + }, + "then": { + "required": [] + } + }, + { + "properties": { + "ok": { + "const": false + }, + "status": { + "const": "usage-error" + } + }, + "required": [ + "ok", + "status" + ] + } + ], + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/casework/report/v1alpha2", + "type": "string" + }, + "command": { + "const": "usage", + "type": "string" + }, + "diagnostics": { + "items": { + "$ref": "#/$defs/Diagnostic" + }, + "type": "array" + }, + "kind": { + "const": "CaseworkReport", + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "status": { + "$ref": "#/$defs/ReportStatus" + }, + "version": { + "type": "string" + } + }, + "required": [ + "command", + "ok", + "status", + "apiVersion", + "kind", + "version", + "diagnostics" + ], + "type": "object" + }, + { + "additionalProperties": false, + "allOf": [ + { + "if": { + "anyOf": [ + { + "properties": { + "ok": { + "const": true + } + }, + "required": [ + "ok" + ] + } + ] + }, + "then": { + "required": [] + } + }, + { + "properties": { + "ok": { + "const": false + }, + "status": { + "const": "operational-failure" + } + }, + "required": [ + "ok", + "status" + ] + } + ], + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/casework/report/v1alpha2", + "type": "string" + }, + "command": { + "const": "internal", + "type": "string" + }, + "diagnostics": { + "items": { + "$ref": "#/$defs/Diagnostic" + }, + "type": "array" + }, + "kind": { + "const": "CaseworkReport", + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "status": { + "$ref": "#/$defs/ReportStatus" + }, + "version": { + "type": "string" + } + }, + "required": [ + "command", + "ok", + "status", + "apiVersion", + "kind", + "version", + "diagnostics" + ], + "type": "object" + } + ], + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/casework/report/v1alpha2" + }, + "kind": { + "const": "CaseworkReport" + } + }, + "required": [ + "ok", + "command", + "status", + "apiVersion", + "kind", + "version", + "diagnostics" + ], + "title": "Casework command report", + "unevaluatedProperties": false +} diff --git a/public/artifacts/sha256/3fef758cd53950ea9cef953dca6c2364188eddff2978695c70fd88237d451ece.json b/public/artifacts/sha256/3fef758cd53950ea9cef953dca6c2364188eddff2978695c70fd88237d451ece.json new file mode 100644 index 000000000..97fe8f59a --- /dev/null +++ b/public/artifacts/sha256/3fef758cd53950ea9cef953dca6c2364188eddff2978695c70fd88237d451ece.json @@ -0,0 +1,66 @@ +{ + "$defs": { + "CalendarDate": { + "format": "date", + "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$", + "type": "string" + }, + "DisplayText": { + "description": "Human-readable display text. Bidirectional embedding, override, and isolate controls, byte-order marks, line and paragraph separators, and Unicode noncharacters are refused; multilingual joiners and direction marks remain valid.", + "not": { + "pattern": "[

‪-‮⁦-⁩﷐-﷯￾￿]|🿾|🿿|𯿾|𯿿|𿿾|𿿿|񏿾|񏿿|񟿾|񟿿|񯿾|񯿿|񿿾|񿿿|򏿾|򏿿|򟿾|򟿿|򯿾|򯿿|򿿾|򿿿|󏿾|󏿿|󟿾|󟿿|󯿾|󯿿|󿿾|󿿿|􏿾|􏿿" + }, + "type": "string" + }, + "LocalId": { + "description": "A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.", + "pattern": "^[a-z][a-z0-9_-]{0,63}$", + "type": "string" + } + }, + "$id": "https://id.registrystack.org/schemas/casework/holiday-set/holiday-set.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/casework/holiday-set/v1alpha1", + "type": "string" + }, + "dates": { + "description": "The dates that are not working days, at most 3660.", + "items": { + "$ref": "#/$defs/CalendarDate" + }, + "maxItems": 3660, + "type": "array", + "uniqueItems": true + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The holiday set a calendar names in `holidaySet`." + }, + "kind": { + "const": "CaseworkHolidaySet", + "type": "string" + }, + "label": { + "$ref": "#/$defs/DisplayText", + "description": "An optional human label for the set." + }, + "revision": { + "format": "uint64", + "maximum": 9223372036854775807, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "apiVersion", + "kind", + "id", + "revision", + "dates" + ], + "title": "Registry Casework holiday set", + "type": "object" +} diff --git a/public/artifacts/sha256/4a4b93a4cca9568c089166b2d7f2ee13306b4abcba7289f4b5290d55ef44d644.json b/public/artifacts/sha256/4a4b93a4cca9568c089166b2d7f2ee13306b4abcba7289f4b5290d55ef44d644.json new file mode 100644 index 000000000..802ec895f --- /dev/null +++ b/public/artifacts/sha256/4a4b93a4cca9568c089166b2d7f2ee13306b4abcba7289f4b5290d55ef44d644.json @@ -0,0 +1,292 @@ +{ + "$defs": { + "AccessGrant": { + "additionalProperties": false, + "properties": { + "audienceFrom": { + "$ref": "#/$defs/AudienceFrom" + }, + "definition": { + "$ref": "#/$defs/LocalId" + }, + "purpose": { + "type": "string" + }, + "representations": { + "items": { + "$ref": "#/$defs/Representation" + }, + "maxItems": 4, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "subjectBinding": { + "$ref": "#/$defs/BindingMode" + }, + "subjects": { + "items": { + "$ref": "#/$defs/GrantedSubject" + }, + "maxItems": 8, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "definition", + "purpose", + "audienceFrom", + "representations", + "subjectBinding", + "subjects" + ], + "type": "object" + }, + "AccessProfile": { + "additionalProperties": false, + "properties": { + "actorKind": { + "anyOf": [ + { + "$ref": "#/$defs/ActorKind" + }, + { + "type": "null" + } + ] + }, + "authority": { + "$ref": "#/$defs/AuthorityKind" + }, + "description": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "type": "null" + } + ], + "description": "What the profile is for, accepted for authoring and tooling; never matched against a caller." + }, + "grantSourceIssuer": { + "anyOf": [ + { + "$ref": "#/$defs/Url" + }, + { + "type": "null" + } + ] + }, + "grants": { + "items": { + "$ref": "#/$defs/AccessGrant" + }, + "maxItems": 128, + "minItems": 1, + "type": "array" + }, + "label": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "type": "null" + } + ], + "description": "A name for the profile, accepted for authoring and tooling; never matched against a caller." + }, + "requesterClients": { + "items": { + "type": "string" + }, + "maxItems": 32, + "minItems": 1, + "type": [ + "array", + "null" + ], + "uniqueItems": true + }, + "requesterTags": { + "items": { + "type": "string" + }, + "maxItems": 32, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "authority", + "requesterTags", + "grants" + ], + "type": "object" + }, + "ActorKind": { + "enum": [ + "human", + "agent", + "service" + ], + "type": "string" + }, + "AudienceFrom": { + "enum": [ + "authenticated-requester" + ], + "type": "string" + }, + "AuthorityKind": { + "enum": [ + "statutory", + "organizational", + "consent", + "delegated", + "explicit-request" + ], + "type": "string" + }, + "BindingMode": { + "enum": [ + "audience-scoped", + "holder-bound" + ], + "type": "string" + }, + "DisplayText": { + "description": "Human-readable display text. Bidirectional embedding, override, and isolate controls, byte-order marks, line and paragraph separators, and Unicode noncharacters are refused; multilingual joiners and direction marks remain valid.", + "not": { + "pattern": "[

‪-‮⁦-⁩﷐-﷯￾￿]|🿾|🿿|𯿾|𯿿|𿿾|𿿿|񏿾|񏿿|񟿾|񟿿|񯿾|񯿿|񿿾|񿿿|򏿾|򏿿|򟿾|򟿿|򯿾|򯿿|򿿾|򿿿|󏿾|󏿿|󟿾|󟿿|󯿾|󯿿|󿿾|󿿿|􏿾|􏿿" + }, + "type": "string" + }, + "GrantedSubject": { + "additionalProperties": false, + "properties": { + "role": { + "$ref": "#/$defs/LocalId" + }, + "selectorProfile": { + "$ref": "#/$defs/LocalId" + }, + "valueClaims": { + "additionalProperties": { + "type": "string" + }, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": [ + "object", + "null" + ] + }, + "valueOrigin": { + "$ref": "#/$defs/ValueOrigin" + } + }, + "required": [ + "role", + "selectorProfile", + "valueOrigin" + ], + "type": "object" + }, + "LocalId": { + "description": "A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.", + "pattern": "^[a-z][a-z0-9_-]{0,63}$", + "type": "string" + }, + "PublicCheckActivation": { + "additionalProperties": false, + "properties": { + "definition": { + "$ref": "#/$defs/LocalId", + "description": "The definition whose `publicCheck` declaration this target serves." + } + }, + "required": [ + "definition" + ], + "type": "object" + }, + "Representation": { + "enum": [ + "signed-jws", + "sd-jwt-vc", + "unsigned-json", + "sd-jwt-vc-batch" + ], + "type": "string" + }, + "Url": { + "description": "An absolute http or https URL with a host preserved as written, no user information, and no backslash, whitespace or control character. DNS case and equivalent IPv6 literals are permitted.", + "format": "uri", + "maxLength": 2048, + "pattern": "^[Hh][Tt][Tt][Pp][Ss]?://[^/?#@\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]+([/?#][^\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]*)?$", + "type": "string" + }, + "ValueOrigin": { + "enum": [ + "request", + "authenticated-context", + "authenticated-grant" + ], + "type": "string" + } + }, + "$id": "https://id.registrystack.org/schemas/evidence/target-authority/target-authority.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "accessProfiles": { + "additionalProperties": { + "$ref": "#/$defs/AccessProfile" + }, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "apiVersion": { + "const": "id.registrystack.org/formats/evidence/target-authority/v1alpha1", + "type": "string" + }, + "kind": { + "const": "EvidenceTargetAuthority", + "type": "string" + }, + "project": { + "$ref": "#/$defs/LocalId" + }, + "publicCheck": { + "anyOf": [ + { + "$ref": "#/$defs/PublicCheckActivation" + }, + { + "type": "null" + } + ], + "description": "Experimental (`v1alpha1`). Activates the unauthenticated public\ncertificate check for one definition that declares `publicCheck`. A\ncheck-only instance leaves `accessProfiles` empty." + }, + "target": { + "$ref": "#/$defs/LocalId" + } + }, + "required": [ + "apiVersion", + "kind", + "target", + "project", + "accessProfiles" + ], + "title": "Evidence target authority", + "type": "object" +} diff --git a/public/artifacts/sha256/4a62c7dd8399bd3a5991efb203a34310918bad17a95b8a74c7784e6486ae6f21.json b/public/artifacts/sha256/4a62c7dd8399bd3a5991efb203a34310918bad17a95b8a74c7784e6486ae6f21.json new file mode 100644 index 000000000..f9ef61c40 --- /dev/null +++ b/public/artifacts/sha256/4a62c7dd8399bd3a5991efb203a34310918bad17a95b8a74c7784e6486ae6f21.json @@ -0,0 +1,689 @@ +{ + "$defs": { + "AnonymousHttpsAcknowledgement": { + "description": "The one named acknowledgement that admits a credential-free HTTPS\nsource. This is a security-sensitive operator decision, not a boolean\nwhose meaning can be lost in a rendered configuration.", + "oneOf": [ + { + "const": "operator-approved", + "description": "The operator reviewed and approved this fixed anonymous source.", + "type": "string" + } + ] + }, + "AuditRetention": { + "additionalProperties": false, + "description": "The audit journal's retention (`products/adapter/CONCEPT.md` section\n11), bounded by the platform access-log window.", + "properties": { + "retentionDays": { + "description": "Days a journal row is retained.", + "format": "uint32", + "maximum": 3650, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "retentionDays" + ], + "type": "object" + }, + "Cidr": { + "description": "A private network range in `addr/prefix` form, for example 10.0.0.0/8.", + "pattern": "^[0-9a-fA-F.:]+/[0-9]{1,3}$", + "type": "string" + }, + "CredentialPlacement": { + "description": "Where a shared client secret travels, Evidence's `CredentialPlacement`\nspelling.", + "oneOf": [ + { + "const": "basic-header", + "description": "`Authorization: Basic` on the token request.", + "type": "string" + }, + { + "const": "form-body", + "description": "A form parameter on the token request.", + "type": "string" + } + ] + }, + "DatabaseConfig": { + "additionalProperties": false, + "description": "The PostgreSQL connection a stateful runtime uses. Both URLs are secret\nreferences and may name the same secret.", + "properties": { + "migrationUrlRef": { + "$ref": "#/$defs/SecretReference", + "description": "Secret reference to the migration connection URL." + }, + "runtimeUrlRef": { + "$ref": "#/$defs/SecretReference", + "description": "Secret reference to the least-privileged runtime connection URL." + }, + "testOnlyPlaintext": { + "default": false, + "description": "Allow a plaintext connection. Refused outside test builds.", + "type": "boolean" + }, + "trustedRootCertificateRef": { + "$ref": "#/$defs/SecretReference", + "description": "Secret reference to a PEM root certificate the connection trusts.\nAbsent, the connection trusts the platform's root certificates." + } + }, + "required": [ + "runtimeUrlRef", + "migrationUrlRef" + ], + "type": "object" + }, + "EndpointBinding": { + "additionalProperties": false, + "description": "The environment binding of one pack endpoint: its base URL, its\ncredentials matching the endpoint's declared kind, and the optional TLS\nadditions (`products/adapter/CONCEPT.md` section 10.2).", + "properties": { + "anonymousHttps": { + "$ref": "#/$defs/AnonymousHttpsAcknowledgement", + "description": "The operator's explicit acknowledgement that a credential-free\nsource is intentionally served over verified HTTPS. Omission keeps\nthe credential-free policy closed outside numeric loopback and mTLS." + }, + "attemptTimeoutMilliseconds": { + "description": "A finite attempt-timeout override in milliseconds. Evidence may raise\nor lower its pack default under the acquisition's remaining deadline;\nfacade and job admit only a lower value within their ten-second policy.", + "format": "uint64", + "maximum": 18446744073709551615, + "minimum": 1, + "type": "integer" + }, + "baseUrl": { + "$ref": "#/$defs/Url", + "description": "The upstream origin; a fixed destination the engine never derives\nfrom a response." + }, + "credential": { + "$ref": "#/$defs/RuntimeCredential", + "description": "The credential; its kind must match the endpoint's declared kind." + }, + "endpoint": { + "$ref": "#/$defs/ExternalId", + "description": "The pack endpoint this binding configures." + }, + "maximumConcurrency": { + "default": 8, + "description": "The maximum simultaneous physical data operations admitted for this\nendpoint. Evidence programs selecting the same named connection share\none permit pool; token acquisition retains its own cache/single-flight\ncontrols.", + "format": "uint64", + "maximum": 256, + "minimum": 1, + "type": "integer" + }, + "maximumResponseBytes": { + "description": "A lower response bound than the pack declares, in bytes (1 to\n16777216, the largest bound a pack endpoint may declare); absent, the\ndeclared one applies. A value above the declared one is refused when\nthe deployment loads.", + "format": "uint64", + "maximum": 16777216, + "minimum": 1, + "type": "integer" + }, + "mtlsIdentity": { + "$ref": "#/$defs/MtlsIdentity", + "description": "The mTLS client identity, combinable with any authentication kind." + }, + "tlsTrustProfile": { + "$ref": "#/$defs/LocalId", + "description": "A trust profile under `outboundTls.trustProfiles` whose CA bundle\nthe endpoint trusts beside the system roots; absent, the endpoint\ntrusts the system roots alone." + } + }, + "required": [ + "endpoint", + "baseUrl" + ], + "type": "object" + }, + "EnvironmentSecretProviderConfig": { + "additionalProperties": false, + "description": "The environment secret provider. It takes no settings.", + "type": "object" + }, + "ExternalId": { + "description": "An identifier another system issues, written exactly as its issuer gives it.", + "maxLength": 512, + "minLength": 1, + "pattern": "^[^\\u0000-\\u001F\\u007F-\\u009F]+$", + "type": "string" + }, + "FileSecretProviderConfig": { + "additionalProperties": false, + "description": "The file secret provider.", + "properties": { + "root": { + "description": "Absolute directory holding one file per secret. Each file must be a\nregular file owned by the runtime user, mode 0400 or 0600, with exactly\none hard link.", + "pattern": "^/", + "type": "string" + } + }, + "required": [ + "root" + ], + "type": "object" + }, + "IdempotencyRetention": { + "additionalProperties": false, + "description": "Exact write-response custody in the idempotency store\n(`products/adapter/CONCEPT.md` section 9).", + "properties": { + "responseRetentionSeconds": { + "description": "Seconds an exact facade response remains available for replay. The\nspent-key tombstone remains after its response body is erased.", + "format": "uint64", + "maximum": 31536000, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "responseRetentionSeconds" + ], + "type": "object" + }, + "JwksSource": { + "description": "Where a runtime obtains the OIDC issuer's signing keys.", + "oneOf": [ + { + "additionalProperties": false, + "description": "Read `jwks_uri` from the issuer's OpenID Connect discovery document.", + "properties": { + "type": { + "const": "discovery", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Fetch the key set from this absolute `https` URI, skipping discovery.\nA plain `http` URI is accepted on loopback for supervised local\ndevelopment, and beyond loopback only when the issuer block sets\n`allowInsecureHttp`.", + "properties": { + "type": { + "const": "uri", + "type": "string" + }, + "uri": { + "$ref": "#/$defs/Url" + } + }, + "required": [ + "type", + "uri" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Read the key set from a secret, for deployments without network access\nto the issuer.", + "properties": { + "documentRef": { + "$ref": "#/$defs/SecretReference" + }, + "type": { + "const": "static", + "type": "string" + } + }, + "required": [ + "type", + "documentRef" + ], + "type": "object" + } + ] + }, + "ListenerBind": { + "description": "Socket address the runtime listens on, written host:port with an IP address host ([addr]:port for IPv6).", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "ListenerConfig": { + "additionalProperties": false, + "description": "The listener of a runtime that declares no TLS or exposure settings.", + "properties": { + "bind": { + "$ref": "#/$defs/ListenerBind" + } + }, + "required": [ + "bind" + ], + "type": "object" + }, + "LocalId": { + "description": "A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.", + "pattern": "^[a-z][a-z0-9_-]{0,63}$", + "type": "string" + }, + "MtlsIdentity": { + "additionalProperties": false, + "description": "The mTLS client identity of an endpoint, orthogonal to the\nauthentication kind (`products/adapter/CONCEPT.md` section 10.2). It is\none way a `none` endpoint reaches a non-loopback source. An operator may\ninstead acknowledge a credential-free HTTPS source on its fixed runtime\nbinding.", + "properties": { + "certificateRef": { + "$ref": "#/$defs/SecretReference", + "description": "The client certificate secret reference." + }, + "keyRef": { + "$ref": "#/$defs/SecretReference", + "description": "The client private key secret reference." + } + }, + "required": [ + "certificateRef", + "keyRef" + ], + "type": "object" + }, + "OidcIssuerConfig": { + "additionalProperties": false, + "description": "The OIDC issuer a runtime accepts access tokens from: the exact `iss`\nvalue, the `aud` value a token must carry, and where the issuer's signing\nkeys come from, written under `authentication.oidc` beside the product's\nown token rules.", + "properties": { + "allowInsecureHttp": { + "default": false, + "description": "Permit plain HTTP beyond loopback to the configured issuer and to a\nJWKS URI declared in configuration. TLS remains required unless the\noperator explicitly accepts this transport risk.", + "type": "boolean" + }, + "audience": { + "description": "The audience every accepted access token must carry in `aud`.", + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "issuer": { + "$ref": "#/$defs/Url", + "description": "Exact issuer accepted in access-token `iss` claims, an absolute\n`https` URL, or a plain `http` URL when `allowInsecureHttp` is set." + }, + "jwksSource": { + "$ref": "#/$defs/JwksSource", + "default": { + "type": "discovery" + }, + "description": "Where the issuer's signing keys come from. Absent reads the issuer's\nOpenID Connect discovery document." + } + }, + "required": [ + "issuer", + "audience" + ], + "type": "object" + }, + "OutboundTls": { + "additionalProperties": false, + "description": "The private certificate authorities endpoints may trust beside the\nsystem roots (`products/adapter/CONCEPT.md` section 10.2), in the shape\nEvidence ships: a named profile is a process-local PEM file. A CA\nbundle is not a secret, so the profile names a file, never a secret\nreference.", + "properties": { + "trustProfiles": { + "additionalProperties": { + "$ref": "#/$defs/TrustProfile" + }, + "default": {}, + "description": "The named private CA bundles.", + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + } + }, + "type": "object" + }, + "RuntimeCredential": { + "description": "The credential binding of one endpoint in the runtime config\n(`products/adapter/CONCEPT.md` section 10.2): Evidence's\n`SourceAuthentication` variant field for field, minus the pack-side\n`headerName` and `scheme`. The kind must match the endpoint's declared\nkind; the checks refuse a mismatch.", + "oneOf": [ + { + "additionalProperties": false, + "description": "No credential; matches a `none` endpoint.", + "properties": { + "type": { + "const": "none", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "The Basic credential pair.", + "properties": { + "passwordRef": { + "$ref": "#/$defs/SecretReference", + "description": "The password secret reference." + }, + "type": { + "const": "basic", + "type": "string" + }, + "usernameRef": { + "$ref": "#/$defs/SecretReference", + "description": "The username secret reference." + } + }, + "required": [ + "passwordRef", + "type", + "usernameRef" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "The static token, presented under the endpoint's declared `scheme`.", + "properties": { + "tokenRef": { + "$ref": "#/$defs/SecretReference", + "description": "The token secret reference." + }, + "type": { + "const": "static-authorization", + "type": "string" + } + }, + "required": [ + "tokenRef", + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "The static API key, sent in the endpoint's declared header.", + "properties": { + "type": { + "const": "static-api-key", + "type": "string" + }, + "valueRef": { + "$ref": "#/$defs/SecretReference", + "description": "The key secret reference." + } + }, + "required": [ + "type", + "valueRef" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "The client-credentials binding, Evidence's fields: the token\nendpoint, the client id, and the shared secret, all as references\nor fixed strings.", + "properties": { + "assumedLifetimeSeconds": { + "description": "Lifetime assumed when the provider omits `expires_in`.", + "format": "uint64", + "maximum": 86400, + "minimum": 1, + "type": "integer" + }, + "audience": { + "description": "Fixed `audience` form parameter.", + "type": "string" + }, + "clientIdRef": { + "$ref": "#/$defs/SecretReference", + "description": "The client id secret reference." + }, + "clientSecretRef": { + "$ref": "#/$defs/SecretReference", + "description": "The shared client secret reference." + }, + "credentialPlacement": { + "$ref": "#/$defs/CredentialPlacement", + "description": "Where the shared client secret travels." + }, + "maximumCacheSeconds": { + "description": "The token cache ceiling, Evidence's bound.", + "format": "uint64", + "maximum": 86400, + "minimum": 0, + "type": "integer" + }, + "resource": { + "description": "RFC 8707 resource indicator sent as a token-request form\nparameter.", + "type": "string" + }, + "scope": { + "description": "The token-request scope parameter.", + "type": "string" + }, + "tokenEndpoint": { + "$ref": "#/$defs/Url", + "description": "The token endpoint, a fixed destination never derived from a\nresponse; an absolute `http`/`https` URL the origin check\nconfines like any other destination." + }, + "type": { + "const": "oauth2-client-credentials", + "type": "string" + } + }, + "required": [ + "clientIdRef", + "clientSecretRef", + "credentialPlacement", + "maximumCacheSeconds", + "tokenEndpoint", + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "The private-key-jwt binding, Evidence's fields. The signed\nassertion always travels in the form body; there is no placement\nparameter.", + "properties": { + "assumedLifetimeSeconds": { + "format": "uint64", + "maximum": 86400, + "minimum": 1, + "type": "integer" + }, + "audience": { + "type": "string" + }, + "clientAssertionAudience": { + "description": "Audience claim of the signed assertion, defaulting to the\ntoken endpoint.", + "type": "string" + }, + "clientAssertionKeyRef": { + "$ref": "#/$defs/SecretReference", + "description": "The private JWK the client assertion is signed with." + }, + "clientIdRef": { + "$ref": "#/$defs/SecretReference", + "description": "The client id secret reference." + }, + "maximumCacheSeconds": { + "format": "uint64", + "maximum": 86400, + "minimum": 0, + "type": "integer" + }, + "resource": { + "type": "string" + }, + "scope": { + "type": "string" + }, + "tokenEndpoint": { + "$ref": "#/$defs/Url", + "description": "The token endpoint, a fixed destination never derived from a\nresponse; an absolute `http`/`https` URL the origin check\nconfines like any other destination." + }, + "type": { + "const": "oauth2-private-key-jwt", + "type": "string" + } + }, + "required": [ + "clientAssertionKeyRef", + "clientIdRef", + "maximumCacheSeconds", + "tokenEndpoint", + "type" + ], + "type": "object" + } + ] + }, + "SecretProvidersConfig": { + "additionalProperties": false, + "anyOf": [ + { + "properties": { + "file": { + "$ref": "#/$defs/FileSecretProviderConfig" + } + }, + "required": [ + "file" + ] + }, + { + "properties": { + "environment": { + "$ref": "#/$defs/EnvironmentSecretProviderConfig" + } + }, + "required": [ + "environment" + ] + } + ], + "description": "The secret providers a runtime enables. A reference is resolved only by a\nprovider declared here: `secret:file/name` under `file.root`, and\n`secret:env/NAME` only when `environment: {}` is present.", + "properties": { + "environment": { + "$ref": "#/$defs/EnvironmentSecretProviderConfig", + "description": "Enables `secret:env/NAME` references, read from the process\nenvironment. Declared as an empty mapping: `environment: {}`." + }, + "file": { + "$ref": "#/$defs/FileSecretProviderConfig", + "description": "Enables `secret:file/name` references, read from files under `root`." + } + }, + "type": "object" + }, + "SecretReference": { + "description": "An exact secret reference: secret:file/name, resolved under secretProviders.file.root, or secret:env/NAME, resolved only when secretProviders.environment is declared.", + "pattern": "^(?:secret:env/[A-Z][A-Z0-9_]{0,127}|secret:file/[a-z][a-z0-9._-]{0,127})$", + "type": "string" + }, + "TrustProfile": { + "additionalProperties": false, + "description": "One named private CA bundle: the absolute path of the process-local PEM\nfile the runtime reads.", + "properties": { + "caBundleFile": { + "description": "The absolute path of the PEM file holding the bundle's certificates.", + "type": "string" + } + }, + "required": [ + "caBundleFile" + ], + "type": "object" + }, + "Url": { + "description": "An absolute http or https URL with a host preserved as written, no user information, and no backslash, whitespace or control character. DNS case and equivalent IPv6 literals are permitted.", + "format": "uri", + "maxLength": 2048, + "pattern": "^[Hh][Tt][Tt][Pp][Ss]?://[^/?#@\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]+([/?#][^\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]*)?$", + "type": "string" + } + }, + "$id": "https://id.registrystack.org/schemas/adapter/runtime/runtime.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "description": "The operator runtime configuration artifact (`AdapterRuntimeConfig`).", + "properties": { + "allowedClients": { + "description": "The OAuth clients whose access tokens the facade admits, matched\nagainst the token's client claim. At least one: a list that admits\nevery client the issuer verifies is an omission, not a policy.", + "items": { + "$ref": "#/$defs/ExternalId" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "allowedPrivateCidrs": { + "description": "The private ranges egress may reach, at least one and at most the\nplatform bound (CFG-EMPTY-2).", + "items": { + "$ref": "#/$defs/Cidr" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "apiVersion": { + "const": "id.registrystack.org/formats/adapter/runtime/v1alpha1", + "type": "string" + }, + "audit": { + "$ref": "#/$defs/AuditRetention", + "description": "The journal retention." + }, + "cursorKeyRef": { + "$ref": "#/$defs/SecretReference", + "description": "The 32-byte secret for pagination cursors and opaque fixed Write\nguards, with separate cryptographic domains. Paginated reads and\nfixed Write require it; identifier-only reads may omit it." + }, + "cursorTtlSeconds": { + "description": "How long a cursor stays valid, in seconds (60 to 86400); absent,\n900.", + "format": "uint64", + "maximum": 86400, + "minimum": 60, + "type": "integer" + }, + "database": { + "$ref": "#/$defs/DatabaseConfig", + "description": "The PostgreSQL connections, from the platform shared block." + }, + "endpoints": { + "description": "One binding per configured endpoint.", + "items": { + "$ref": "#/$defs/EndpointBinding" + }, + "type": "array" + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The deployment this config binds." + }, + "idempotency": { + "$ref": "#/$defs/IdempotencyRetention", + "description": "Exact write-response custody. A read-only deployment may omit this;\nstartup refuses a served write without an explicit operator choice." + }, + "kind": { + "const": "AdapterRuntimeConfig", + "type": "string" + }, + "listener": { + "$ref": "#/$defs/ListenerConfig", + "description": "The facade listener, from the platform shared block." + }, + "oidc": { + "$ref": "#/$defs/OidcIssuerConfig", + "description": "The OIDC issuer that authenticates facade callers, from the\nplatform shared block (`products/adapter/CONCEPT.md` section 6)." + }, + "outboundTls": { + "$ref": "#/$defs/OutboundTls", + "description": "The private CAs endpoints may trust beside the system roots;\nabsent, every endpoint trusts the system roots alone." + }, + "previousCursorKeyRef": { + "$ref": "#/$defs/SecretReference", + "description": "The retiring key, still accepted when opening a cursor or fixed\nWrite guard so one key rotation does not strand active clients." + }, + "secretProviders": { + "$ref": "#/$defs/SecretProvidersConfig", + "description": "The secret providers this facade enables. Omission enables environment\nsecrets only; file secrets require an explicit\nabsolute `file.root`." + } + }, + "required": [ + "allowedClients", + "allowedPrivateCidrs", + "apiVersion", + "audit", + "database", + "endpoints", + "id", + "kind", + "listener", + "oidc" + ], + "title": "Registry Adapter runtime configuration", + "type": "object" +} diff --git a/public/artifacts/sha256/5660a447be61398747639c2e0ecde3b0e355c29d4ff454209d3041cd02f5d1a5.json b/public/artifacts/sha256/5660a447be61398747639c2e0ecde3b0e355c29d4ff454209d3041cd02f5d1a5.json new file mode 100644 index 000000000..25c4dbd41 --- /dev/null +++ b/public/artifacts/sha256/5660a447be61398747639c2e0ecde3b0e355c29d4ff454209d3041cd02f5d1a5.json @@ -0,0 +1,664 @@ +{ + "$defs": { + "AccessProfile": { + "additionalProperties": false, + "description": "One access profile: a named binding of scopes to concrete facade\noperations and record types, reviewed deployment policy\n(`products/adapter/CONCEPT.md` section 10.1).", + "properties": { + "id": { + "$ref": "#/$defs/LocalId", + "description": "The access profile name a caller identity is granted." + }, + "operations": { + "description": "The profile operation ids the profile may call, unique (CFG-ID-6).", + "items": { + "$ref": "#/$defs/ExternalId" + }, + "type": "array", + "uniqueItems": true + }, + "recordTypes": { + "description": "The record types the profile may touch, unique (CFG-ID-6).", + "items": { + "$ref": "#/$defs/LocalId" + }, + "type": "array", + "uniqueItems": true + }, + "scopes": { + "description": "The OIDC scopes the profile admits, unique (CFG-ID-6).", + "items": { + "$ref": "#/$defs/ExternalId" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "id", + "scopes", + "operations", + "recordTypes" + ], + "type": "object" + }, + "Binding": { + "additionalProperties": false, + "description": "One binding of a concrete contract operation to a route\n(`products/adapter/CONCEPT.md` section 7): one concrete operation per\n(profile operation, record type) pair, with the static worst-case\nupstream-call budget the checks hold the route to.", + "properties": { + "asyncCompletion": { + "$ref": "#/$defs/BindingAsyncCompletion", + "description": "The asynchronous response policy, absent for every synchronous\nbinding." + }, + "filters": { + "description": "The declared fields of the bound record type a search binding\nfilters on (`products/adapter/CONCEPT.md` section 8.11.1); the\nfacade offers exactly these as typed equality query parameters.\nEvery declared filter is required: a call that leaves one out is\nrefused as an invalid field before any script runs or source is\ncalled.\nEvery entry must name a declared field, checked at the project\nchecks; the list is unique (CFG-ID-6).", + "items": { + "$ref": "#/$defs/LocalId" + }, + "type": "array", + "uniqueItems": true + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The binding identifier." + }, + "maximumUpstreamCalls": { + "default": 4, + "description": "The declared budget of upstream sends per exchange; the static\nworst-case count must stay within it. Defaults to 4.", + "format": "uint64", + "maximum": 100000, + "minimum": 1, + "type": "integer" + }, + "operation": { + "$ref": "#/$defs/ExternalId", + "description": "The profile operation this binding serves." + }, + "recordType": { + "$ref": "#/$defs/LocalId", + "description": "The record type the concrete operation serves." + }, + "route": { + "$ref": "#/$defs/ExternalId", + "description": "The route the operation dispatches to." + } + }, + "required": [ + "id", + "operation", + "recordType", + "route" + ], + "type": "object" + }, + "BindingAsyncCompletion": { + "description": "How one asynchronous binding answers while the source operation remains\npending. Both modes use the same profile-owned status link; bounded wait\nspends only the declared finite interval and poll count first.", + "oneOf": [ + { + "additionalProperties": false, + "description": "Return the committed accepted response immediately.", + "properties": { + "type": { + "const": "status-link", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Poll within all three authored bounds, then return either a proven\nterminal response or the same committed accepted response.", + "properties": { + "maximumPolls": { + "format": "uint64", + "maximum": 100, + "minimum": 1, + "type": "integer" + }, + "pollIntervalMilliseconds": { + "format": "uint64", + "maximum": 10000, + "minimum": 10, + "type": "integer" + }, + "type": { + "const": "bounded-wait", + "type": "string" + }, + "waitTimeoutMilliseconds": { + "format": "uint64", + "maximum": 30000, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "type", + "waitTimeoutMilliseconds", + "pollIntervalMilliseconds", + "maximumPolls" + ], + "type": "object" + } + ] + }, + "BindingTransform": { + "additionalProperties": false, + "description": "One binding's project-owned transformation. Its output schema is not\nrepeated here: the binding's record type selects one Consultation\ncollection/view, and that collection owns the single `dataSchema`\nreference.", + "properties": { + "entrypoint": { + "description": "The one-argument Rhai function invoked as `entrypoint(source)`.", + "type": "string" + }, + "script": { + "$ref": "#/$defs/LocalId", + "description": "A [`ProjectScript`] id." + } + }, + "required": [ + "script", + "entrypoint" + ], + "type": "object" + }, + "ConsultationCollection": { + "additionalProperties": false, + "description": "Deployment metadata for one project record type and public view.", + "properties": { + "dataSchema": { + "$ref": "#/$defs/LocalId", + "description": "Pinned project schema for the public `data` member of this view." + }, + "lookup": { + "$ref": "#/$defs/ConsultationLookup", + "description": "Exact-selector metadata, required only when Lookup is bound." + }, + "recordType": { + "$ref": "#/$defs/LocalId", + "description": "Project record type and literal Consultation collection identifier." + }, + "registry": { + "description": "Stable identifier of the Registry that owns the Records.", + "type": "string" + }, + "search": { + "$ref": "#/$defs/ConsultationSearch", + "description": "Named-search metadata, required only when Search is bound." + }, + "transform": { + "$ref": "#/$defs/BindingTransform", + "description": "The transformation every `retrieve`, `lookup`, `list`, and `search`\nbinding of this record type follows unless `bindingTransforms` names\none for that binding." + }, + "view": { + "$ref": "#/$defs/LocalId", + "description": "Public view named by the concrete OpenAPI operation metadata. When\nomitted, the view is named after `dataSchema`." + } + }, + "required": [ + "recordType", + "registry", + "dataSchema" + ], + "type": "object" + }, + "ConsultationFacade": { + "additionalProperties": false, + "description": "One deployment of the built-in Consultation facade.", + "properties": { + "collections": { + "description": "Collection metadata, unique by the record type that also supplies the\ncollection identifier on the wire.", + "items": { + "$ref": "#/$defs/ConsultationCollection" + }, + "type": "array" + }, + "contract": { + "description": "Version-specific HTTPS OpenAPI contract published for this deployment.", + "type": "string" + } + }, + "required": [ + "contract", + "collections" + ], + "type": "object" + }, + "ConsultationLookup": { + "additionalProperties": false, + "description": "One exact selector and the project schema of its `values` member.", + "properties": { + "inputSchema": { + "$ref": "#/$defs/LocalId" + }, + "selector": { + "$ref": "#/$defs/LocalId", + "description": "Exact, at-most-one selector promised by the selected source route." + } + }, + "required": [ + "selector", + "inputSchema" + ], + "type": "object" + }, + "ConsultationSearch": { + "additionalProperties": false, + "description": "One named Search and the project schema of its `criteria` member.", + "properties": { + "inputSchema": { + "$ref": "#/$defs/LocalId" + }, + "search": { + "$ref": "#/$defs/LocalId" + } + }, + "required": [ + "search", + "inputSchema" + ], + "type": "object" + }, + "Digest": { + "description": "A SHA-256 digest: `sha256:` followed by 64 lowercase hex digits.", + "pattern": "^sha256:[0-9a-f]{64}$", + "type": "string" + }, + "ExternalId": { + "description": "An identifier another system issues, written exactly as its issuer gives it.", + "maxLength": 512, + "minLength": 1, + "pattern": "^[^\\u0000-\\u001F\\u007F-\\u009F]+$", + "type": "string" + }, + "LocalId": { + "description": "A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.", + "pattern": "^[a-z][a-z0-9_-]{0,63}$", + "type": "string" + }, + "PinnedRef": { + "additionalProperties": false, + "description": "A pinned reference to a profile or pack: plain identifier plus the\nversion and digest `adapterctl check` verifies (CFG-ID-4,\n`products/adapter/CONCEPT.md` section 6).", + "properties": { + "digest": { + "$ref": "#/$defs/Digest", + "description": "The digest the artifact's bytes must hash to." + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The referenced artifact's identifier." + }, + "version": { + "description": "The referenced artifact's version.", + "type": "string" + } + }, + "required": [ + "id", + "version", + "digest" + ], + "type": "object" + }, + "ProjectArtifacts": { + "additionalProperties": false, + "description": "The project-owned artifact inventory. Empty inventories preserve existing\ngeneric profile deployments, which keep all route behavior in their pack.", + "properties": { + "schemas": { + "default": [], + "description": "Versioned public JSON Schemas.", + "items": { + "$ref": "#/$defs/ProjectSchema" + }, + "type": "array" + }, + "scripts": { + "default": [], + "description": "Programme and public-view transformation scripts.", + "items": { + "$ref": "#/$defs/ProjectScript" + }, + "type": "array" + } + }, + "type": "object" + }, + "ProjectIdentity": { + "additionalProperties": false, + "description": "The project identity block: the deployment's own name and version\n(`products/adapter/CONCEPT.md` section 10.1). The id is a local\nidentifier (CFG-ID-1); the version is text, the same version-as-text\nrule as profiles and packs.", + "properties": { + "id": { + "$ref": "#/$defs/LocalId", + "description": "The project identifier." + }, + "version": { + "description": "The project version.", + "type": "string" + } + }, + "required": [ + "id", + "version" + ], + "type": "object" + }, + "ProjectSchema": { + "additionalProperties": false, + "description": "One project-owned public data schema. The schema bytes carry their stable,\nversioned HTTPS `$id`; this inventory binds those bytes into the project\nclosure without duplicating that public identity in YAML.", + "properties": { + "digest": { + "$ref": "#/$defs/Digest", + "description": "The exact sha256 digest of the JSON Schema bytes." + }, + "file": { + "description": "A clean path relative to the project document.", + "type": "string" + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The local name a Consultation collection uses as `dataSchema`." + } + }, + "required": [ + "id", + "file", + "digest" + ], + "type": "object" + }, + "ProjectScript": { + "additionalProperties": false, + "description": "One project-owned Rhai source. The deployment project, rather than the\nreusable source pack, owns programme and public-view transformations.", + "properties": { + "digest": { + "$ref": "#/$defs/Digest", + "description": "The exact sha256 digest of the Rhai source bytes." + }, + "file": { + "description": "A clean path relative to the project document.", + "type": "string" + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The local name transformations use." + } + }, + "required": [ + "id", + "file", + "digest" + ], + "type": "object" + }, + "RecordField": { + "additionalProperties": false, + "description": "One declared record field, typed under CFG-VAL-9 so fixture values and\nroute outputs are checked against it.", + "properties": { + "name": { + "$ref": "#/$defs/LocalId", + "description": "The field name." + }, + "required": { + "description": "Whether every record of the type carries the field.", + "type": "boolean" + }, + "type": { + "$ref": "#/$defs/RecordFieldType", + "description": "The field's value type." + } + }, + "required": [ + "name", + "type" + ], + "type": "object" + }, + "RecordFieldType": { + "description": "A record field's value type (CFG-VAL-9).", + "enum": [ + "string", + "integer", + "decimal", + "boolean", + "date", + "date-time" + ], + "type": "string" + }, + "RecordType": { + "additionalProperties": false, + "description": "One declared record type and its fields\n(`products/adapter/CONCEPT.md` section 6).", + "properties": { + "fields": { + "description": "The declared fields, unique by whole item.", + "items": { + "$ref": "#/$defs/RecordField" + }, + "type": "array", + "uniqueItems": true + }, + "name": { + "$ref": "#/$defs/LocalId", + "description": "The record type name, the `{type}` of concrete operations." + } + }, + "required": [ + "name", + "fields" + ], + "type": "object" + }, + "TemplatedRoute": { + "additionalProperties": false, + "description": "A template instantiation in a project, Camel's `templatedRoute`\n(`manual/route-template.html`). Placeholders resolve at instantiation,\nduring `adapterctl check` and at startup, never per request.", + "properties": { + "parameters": { + "additionalProperties": true, + "description": "Parameter value by parameter name; each key is a local identifier,\nthe template parameter it instantiates (CFG-ID-1).", + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "routeId": { + "$ref": "#/$defs/ExternalId", + "description": "The instantiated route id; its `from` becomes `direct:`." + }, + "routeTemplate": { + "$ref": "#/$defs/ExternalId", + "description": "The pack template this instantiation references." + } + }, + "required": [ + "routeTemplate", + "routeId" + ], + "type": "object" + }, + "WriteCollection": { + "additionalProperties": false, + "description": "Direct-write selection for one project record type. At least one of\nCreate and Update is required. Registry, view, and readable data-schema\nmetadata may be inherited from a matching Consultation collection; a\nWrite-only Update supplies them explicitly.", + "properties": { + "create": { + "$ref": "#/$defs/WriteCreate" + }, + "readDataSchema": { + "$ref": "#/$defs/LocalId", + "description": "Project schema for the companion read's public `data`, required for a\nWrite-only Update and separate by selection from each input schema." + }, + "recordType": { + "$ref": "#/$defs/LocalId", + "description": "Project record type and literal Write collection identifier." + }, + "registry": { + "description": "Stable identifier of the Registry that owns the Records.", + "type": "string" + }, + "update": { + "$ref": "#/$defs/WriteUpdate" + }, + "view": { + "$ref": "#/$defs/LocalId", + "description": "Public writable view, required for a Write-only Update." + } + }, + "required": [ + "recordType" + ], + "type": "object" + }, + "WriteCreate": { + "additionalProperties": false, + "description": "Deployment metadata for direct Create of one record.", + "properties": { + "inputSchema": { + "$ref": "#/$defs/LocalId", + "description": "Project-owned domain schema for `CreateInput.data`." + } + }, + "required": [ + "inputSchema" + ], + "type": "object" + }, + "WriteFacade": { + "additionalProperties": false, + "description": "One deployment of the built-in GovStack direct Write target. Protocol\npaths, envelopes, error shapes, and Create/Update wrappers remain\nmaintained Rust; the project selects collections and domain schemas.", + "properties": { + "collections": { + "description": "Collection metadata, unique by the record type that also supplies the\npublic collection identifier.", + "items": { + "$ref": "#/$defs/WriteCollection" + }, + "type": "array" + }, + "contract": { + "description": "Version-specific HTTPS OpenAPI contract published for this deployment.", + "type": "string" + } + }, + "required": [ + "contract", + "collections" + ], + "type": "object" + }, + "WriteUpdate": { + "additionalProperties": false, + "description": "Deployment metadata for conditional Update of one record.", + "properties": { + "companionRead": { + "$ref": "#/$defs/LocalId", + "description": "Existing same-collection read binding used by the one supporting GET.\nWhen omitted, the one `retrieve` or `writable-read` binding of the\nrecord type fills it; a record type with more than one such binding\nmust name it." + }, + "inputSchema": { + "$ref": "#/$defs/LocalId", + "description": "Project-owned domain merge-patch schema for `UpdateInput.data`." + } + }, + "required": [ + "inputSchema" + ], + "type": "object" + } + }, + "$id": "https://id.registrystack.org/schemas/adapter/project/project.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "description": "The adapter project artifact (`AdapterProject`): the declared record\nmodel, the pinned profile and pack references, the template\ninstantiations, the bindings, and the access profiles. Reading a project\nderives the members its short form leaves out; an explicit member always\nwins.", + "properties": { + "accessProfiles": { + "default": [], + "description": "The access profiles.", + "items": { + "$ref": "#/$defs/AccessProfile" + }, + "type": "array" + }, + "apiVersion": { + "const": "id.registrystack.org/formats/adapter/project/v1alpha1", + "type": "string" + }, + "artifacts": { + "$ref": "#/$defs/ProjectArtifacts", + "description": "Digest-pinned deployment-owned scripts and public schemas." + }, + "bindingTransforms": { + "additionalProperties": { + "$ref": "#/$defs/BindingTransform" + }, + "description": "Project-owned transformations keyed by the binding id they follow.\nThe map form avoids duplicating the binding or source-route identity.", + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "bindings": { + "default": [], + "description": "The bindings of contract operations to routes.", + "items": { + "$ref": "#/$defs/Binding" + }, + "type": "array" + }, + "consultation": { + "$ref": "#/$defs/ConsultationFacade", + "description": "The project metadata for the built-in Consultation facade. Its paths,\nenvelopes, problems, and protocol schemas remain maintained Rust." + }, + "kind": { + "const": "AdapterProject", + "type": "string" + }, + "pack": { + "$ref": "#/$defs/PinnedRef", + "description": "The pinned adapter pack." + }, + "parameterizedParts": { + "additionalProperties": { + "type": "string" + }, + "description": "The deployment's value for each of the profile's parameterized\nparts, keyed by part name. The engine writes each value over the\nresponse-envelope members of that name; every declared part needs\na value and no value names an undeclared part.", + "propertyNames": { + "$ref": "#/$defs/ExternalId" + }, + "type": "object" + }, + "profile": { + "$ref": "#/$defs/PinnedRef", + "description": "The pinned authored facade profile. Exactly one of this member and\n`consultation` selects the deployment's caller-facing protocol." + }, + "project": { + "$ref": "#/$defs/ProjectIdentity", + "description": "The deployment's identity." + }, + "recordTypes": { + "default": [], + "description": "The declared record types and fields. A Consultation or Write\nrecord type left out is declared with no fields.", + "items": { + "$ref": "#/$defs/RecordType" + }, + "type": "array" + }, + "templatedRoutes": { + "default": [], + "description": "The pack template instantiations, Camel's `templatedRoute`.", + "items": { + "$ref": "#/$defs/TemplatedRoute" + }, + "type": "array" + }, + "write": { + "$ref": "#/$defs/WriteFacade", + "description": "The project metadata for the built-in synchronous GovStack direct\nWrite target. It may coexist with Consultation, but never with an\nauthored generic profile." + } + }, + "required": [ + "apiVersion", + "kind", + "pack", + "project" + ], + "title": "Registry Adapter project", + "type": "object" +} diff --git a/public/artifacts/sha256/56b15b5ec2c5a799f9debd7d034cf8f7a490c76c71458720b6469c98b3a469b5.json b/public/artifacts/sha256/56b15b5ec2c5a799f9debd7d034cf8f7a490c76c71458720b6469c98b3a469b5.json new file mode 100644 index 000000000..aba53e237 --- /dev/null +++ b/public/artifacts/sha256/56b15b5ec2c5a799f9debd7d034cf8f7a490c76c71458720b6469c98b3a469b5.json @@ -0,0 +1,1079 @@ +{ + "$defs": { + "AuditConfig": { + "additionalProperties": false, + "description": "Where the audit journal is written and the key its hashes are made with.", + "properties": { + "destination": { + "$ref": "#/$defs/AuditDestinationKind", + "default": "file", + "description": "Where audit entries go: a rotated `file` (the default) or `stdout`." + }, + "hashKeyRef": { + "$ref": "#/$defs/SecretReference", + "description": "Secret reference to the audit hash key." + }, + "path": { + "description": "The absolute path of the active audit file, for `destination: file`.", + "pattern": "^/", + "type": "string" + }, + "retentionDays": { + "description": "How many days a rotated audit file is kept.", + "format": "uint32", + "maximum": 36500, + "minimum": 1, + "type": "integer" + }, + "rotateBytes": { + "description": "The size at which the active file is rotated and a new one begun.", + "format": "uint64", + "maximum": 4294967295, + "minimum": 1048576, + "type": "integer" + } + }, + "required": [ + "hashKeyRef" + ], + "type": "object" + }, + "AuditDestinationKind": { + "description": "The configured audit destination kind, as written in product configuration.", + "oneOf": [ + { + "const": "file", + "description": "Durable, rotated JSON Lines file.", + "type": "string" + }, + { + "const": "stdout", + "description": "One JSON line per entry on standard output, flushed per entry.", + "type": "string" + } + ] + }, + "AuthenticationConfig": { + "additionalProperties": false, + "properties": { + "oidc": { + "$ref": "#/$defs/OidcConfig" + } + }, + "required": [ + "oidc" + ], + "type": "object" + }, + "CallbackBodyEncoding": { + "description": "How an `hmac-sha256-body` tag is encoded in its header.", + "enum": [ + "hex", + "base64" + ], + "type": "string" + }, + "CallbackVerifierConfig": { + "description": "How the runtime authenticates one provider's inbound delivery callbacks,\nclosed and tagged by `type` in kebab-case.", + "oneOf": [ + { + "additionalProperties": false, + "description": "HMAC-SHA1 over the full external callback URL with the request's form\nparameters sorted by key and appended as `key` then `value` with no\ndelimiter, base64 in `header`. The `form-sms-gateway` example provider\npackage documents the provider scheme this matches.", + "properties": { + "header": { + "description": "The header carrying the signature.", + "maxLength": 128, + "minLength": 1, + "pattern": "^[!#$%&'*+.^_`|~0-9A-Za-z-]+$", + "type": "string" + }, + "secretRef": { + "$ref": "#/$defs/SecretReference" + }, + "type": { + "const": "hmac-sha1-url-form", + "type": "string" + }, + "url": { + "$ref": "#/$defs/Url", + "description": "The external callback URL the provider was given and signs, as it\nwas given: scheme, host, any port, and path, without a query or\nfragment. The route appends the request's own query string. A\nproxy may rewrite what the runtime receives, so the runtime never\nreconstructs this URL from the request.", + "pattern": "^https?://[^/?#]+/[^?#]*$" + } + }, + "required": [ + "type", + "url", + "header", + "secretRef" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "HMAC-SHA256 over the raw request body, encoded in `header` as\n`encoding`.", + "properties": { + "encoding": { + "$ref": "#/$defs/CallbackBodyEncoding" + }, + "header": { + "description": "The header carrying the signature.", + "maxLength": 128, + "minLength": 1, + "pattern": "^[!#$%&'*+.^_`|~0-9A-Za-z-]+$", + "type": "string" + }, + "secretRef": { + "$ref": "#/$defs/SecretReference" + }, + "type": { + "const": "hmac-sha256-body", + "type": "string" + } + }, + "required": [ + "type", + "header", + "encoding", + "secretRef" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "A secret random token carried in the callback path, for gateways that\ncan only be given a URL.", + "properties": { + "tokenRef": { + "$ref": "#/$defs/SecretReference" + }, + "type": { + "const": "path-token", + "type": "string" + } + }, + "required": [ + "type", + "tokenRef" + ], + "type": "object" + } + ] + }, + "CredentialPlacement": { + "description": "Where an OAuth client secret travels in the token request.", + "enum": [ + "basic-header", + "form-body" + ], + "type": "string" + }, + "DatabaseConfig": { + "additionalProperties": false, + "description": "The PostgreSQL connection a stateful runtime uses. Both URLs are secret\nreferences and may name the same secret.", + "properties": { + "migrationUrlRef": { + "$ref": "#/$defs/SecretReference", + "description": "Secret reference to the migration connection URL." + }, + "runtimeUrlRef": { + "$ref": "#/$defs/SecretReference", + "description": "Secret reference to the least-privileged runtime connection URL." + }, + "testOnlyPlaintext": { + "default": false, + "description": "Allow a plaintext connection. Refused outside test builds.", + "type": "boolean" + }, + "trustedRootCertificateRef": { + "$ref": "#/$defs/SecretReference", + "description": "Secret reference to a PEM root certificate the connection trusts.\nAbsent, the connection trusts the platform's root certificates." + } + }, + "required": [ + "runtimeUrlRef", + "migrationUrlRef" + ], + "type": "object" + }, + "Digest": { + "description": "A SHA-256 digest: `sha256:` followed by 64 lowercase hex digits.", + "pattern": "^sha256:[0-9a-f]{64}$", + "type": "string" + }, + "EnvironmentSecretProviderConfig": { + "additionalProperties": false, + "description": "The environment secret provider. It takes no settings.", + "type": "object" + }, + "ExternalId": { + "description": "An identifier another system issues, written exactly as its issuer gives it.", + "maxLength": 512, + "minLength": 1, + "pattern": "^[^\\u0000-\\u001F\\u007F-\\u009F]+$", + "type": "string" + }, + "FileSecretProviderConfig": { + "additionalProperties": false, + "description": "The file secret provider.", + "properties": { + "root": { + "description": "Absolute directory holding one file per secret. Each file must be a\nregular file owned by the runtime user, mode 0400 or 0600, with exactly\none hard link.", + "pattern": "^/", + "type": "string" + } + }, + "required": [ + "root" + ], + "type": "object" + }, + "HttpProviderAuthentication": { + "description": "How a send authenticates to the provider, chosen by `type`. The\ncredential is added by Rust after the prepare script returns; no script\never sees it.", + "oneOf": [ + { + "additionalProperties": false, + "description": "No credential. Only for a loopback development provider.", + "properties": { + "type": { + "const": "none", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "`Authorization: Basic` over the two resolved values.", + "properties": { + "passwordRef": { + "$ref": "#/$defs/SecretReference" + }, + "type": { + "const": "basic", + "type": "string" + }, + "usernameRef": { + "$ref": "#/$defs/SecretReference" + } + }, + "required": [ + "type", + "usernameRef", + "passwordRef" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "`Authorization: `. Absent, the scheme is `Bearer`,\nthe only one the destination substrate presents today.", + "properties": { + "scheme": { + "type": "string" + }, + "tokenRef": { + "$ref": "#/$defs/SecretReference" + }, + "type": { + "const": "static-authorization", + "type": "string" + } + }, + "required": [ + "type", + "tokenRef" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "The resolved value in the named request header.", + "properties": { + "headerName": { + "type": "string" + }, + "type": { + "const": "static-api-key", + "type": "string" + }, + "valueRef": { + "$ref": "#/$defs/SecretReference" + } + }, + "required": [ + "type", + "headerName", + "valueRef" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "The resolved value in the named query parameter, appended after the\nscript's own target.", + "properties": { + "parameterName": { + "type": "string" + }, + "type": { + "const": "static-api-key-query", + "type": "string" + }, + "valueRef": { + "$ref": "#/$defs/SecretReference" + } + }, + "required": [ + "type", + "parameterName", + "valueRef" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "AWS Signature Version 4 for a JSON API. Rust signs the final request;\ncredentials are never exposed to provider scripts.", + "properties": { + "accessKeyIdRef": { + "$ref": "#/$defs/SecretReference" + }, + "region": { + "type": "string" + }, + "secretAccessKeyRef": { + "$ref": "#/$defs/SecretReference" + }, + "service": { + "type": "string" + }, + "sessionTokenRef": { + "$ref": "#/$defs/SecretReference", + "description": "The session token for temporary credentials. Omitted, the request\nis signed without one." + }, + "type": { + "const": "aws-sigv4", + "type": "string" + } + }, + "required": [ + "type", + "region", + "service", + "accessKeyIdRef", + "secretAccessKeyRef" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "An OAuth 2.0 client-credentials bearer token, fetched from\n`tokenEndpoint` and cached.", + "properties": { + "assumedLifetimeSeconds": { + "description": "The lifetime assumed, in seconds, when the token response carries\nno `expires_in`. Omitted, `expires_in` is required.", + "format": "uint64", + "maximum": 86400, + "minimum": 10, + "type": "integer" + }, + "audience": { + "type": "string" + }, + "clientIdRef": { + "$ref": "#/$defs/SecretReference" + }, + "clientSecretRef": { + "$ref": "#/$defs/SecretReference" + }, + "credentialPlacement": { + "$ref": "#/$defs/CredentialPlacement", + "description": "Where the client secret travels. The token request carries it in\nthe form body; `basic-header` is refused until the substrate can\nplace it there." + }, + "maximumCacheSeconds": { + "description": "The longest a fetched token is reused, in seconds.", + "format": "uint64", + "maximum": 86400, + "minimum": 10, + "type": "integer" + }, + "resource": { + "type": "string" + }, + "scope": { + "type": "string" + }, + "tokenEndpoint": { + "$ref": "#/$defs/Url" + }, + "type": { + "const": "oauth2-client-credentials", + "type": "string" + } + }, + "required": [ + "type", + "tokenEndpoint", + "clientIdRef", + "clientSecretRef", + "maximumCacheSeconds" + ], + "type": "object" + } + ] + }, + "JwksSource": { + "description": "Where a runtime obtains the OIDC issuer's signing keys.", + "oneOf": [ + { + "additionalProperties": false, + "description": "Read `jwks_uri` from the issuer's OpenID Connect discovery document.", + "properties": { + "type": { + "const": "discovery", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Fetch the key set from this absolute `https` URI, skipping discovery.\nA plain `http` URI is accepted on loopback for supervised local\ndevelopment, and beyond loopback only when the issuer block sets\n`allowInsecureHttp`.", + "properties": { + "type": { + "const": "uri", + "type": "string" + }, + "uri": { + "$ref": "#/$defs/Url" + } + }, + "required": [ + "type", + "uri" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Read the key set from a secret, for deployments without network access\nto the issuer.", + "properties": { + "documentRef": { + "$ref": "#/$defs/SecretReference" + }, + "type": { + "const": "static", + "type": "string" + } + }, + "required": [ + "type", + "documentRef" + ], + "type": "object" + } + ] + }, + "ListenerBind": { + "description": "Socket address the runtime listens on, written host:port with an IP address host ([addr]:port for IPv6).", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "ListenerConfig": { + "additionalProperties": false, + "description": "The listener of a runtime that declares no TLS or exposure settings.", + "properties": { + "bind": { + "$ref": "#/$defs/ListenerBind" + } + }, + "required": [ + "bind" + ], + "type": "object" + }, + "ListenerNetworkExposure": { + "description": "The operator-declared private network placement of an HTTP listener.", + "enum": [ + "private-address", + "container-private" + ], + "type": "string" + }, + "LocalId": { + "description": "A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.", + "pattern": "^[a-z][a-z0-9_-]{0,63}$", + "type": "string" + }, + "OidcConfig": { + "additionalProperties": false, + "description": "The OIDC issuer whose access tokens this runtime accepts, the clients it\nadmits, and the claim carrying their scopes.", + "properties": { + "allowInsecureHttp": { + "default": false, + "description": "Permit plain HTTP beyond loopback to the configured issuer and to a\nJWKS URI declared in configuration. TLS remains required unless the\noperator explicitly accepts this transport risk.", + "type": "boolean" + }, + "allowedClients": { + "description": "Client identifiers whose access tokens are admitted. Required in every\nfile; an omitted or empty list, an empty or repeated client, and\n`unrestricted` are refused.", + "items": { + "minLength": 1, + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "assertionIssuers": { + "additionalProperties": { + "items": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "maxItems": 16, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "description": "Assertion authorities each client may exchange a subject token from,\nkeyed by client identifier. Omitted, no assertion-issuer rule applies;\nwritten, it lists at least one client, each with at least one\nauthority. Once a client is listed, a token it exchanged is accepted\nonly for one of that client's declared authorities, and a client that\nis not listed may exchange from no authority.", + "maxProperties": 64, + "minProperties": 1, + "propertyNames": { + "$ref": "#/$defs/ExternalId", + "maxLength": 128 + }, + "type": "object" + }, + "audience": { + "description": "The audience every accepted access token must carry in `aud`.", + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "issuer": { + "$ref": "#/$defs/Url", + "description": "Exact issuer accepted in access-token `iss` claims, an absolute\n`https` URL, or a plain `http` URL when `allowInsecureHttp` is set." + }, + "jwksSource": { + "$ref": "#/$defs/JwksSource", + "default": { + "type": "discovery" + }, + "description": "Where the issuer's signing keys come from. Absent reads the issuer's\nOpenID Connect discovery document." + }, + "scopeClaim": { + "default": "scope", + "type": "string" + } + }, + "required": [ + "issuer", + "audience", + "allowedClients" + ], + "type": "object" + }, + "PackageConfig": { + "additionalProperties": false, + "description": "The package a runtime serves: `root` is the absolute package directory,\nand `expectedDigest`, when set, pins the package digest the runtime must\nfind there. The package digest is the digest of the package's\n`SHA256SUMS` file; see [`crate::package`].", + "properties": { + "expectedDigest": { + "$ref": "#/$defs/Digest", + "description": "`sha256:` label of the package digest, the digest of the package's\n`SHA256SUMS` file. When set, the runtime refuses to start on any other\npackage." + }, + "root": { + "description": "Absolute path of the package directory.", + "pattern": "^/", + "type": "string" + } + }, + "required": [ + "root" + ], + "type": "object" + }, + "PrivateListenerConfig": { + "additionalProperties": false, + "description": "The listener of a runtime that declares its TLS termination and network\nexposure.", + "properties": { + "bind": { + "$ref": "#/$defs/ListenerBind" + }, + "networkExposure": { + "$ref": "#/$defs/ListenerNetworkExposure", + "default": "private-address" + }, + "tlsTermination": { + "$ref": "#/$defs/TlsTermination" + } + }, + "required": [ + "bind", + "tlsTermination" + ], + "type": "object" + }, + "ProviderConnection": { + "description": "One provider's runtime half. The package declares the provider's type,\nand for an `http` provider its scripts; the two halves must name the same\ntype.", + "oneOf": [ + { + "additionalProperties": false, + "description": "One SMTP provider's runtime settings, as the operator writes them.", + "properties": { + "allowedPrivateCidrs": { + "description": "Exact RFC 1918, CGNAT, or unique-local networks the relay may resolve\ninto. Every other non-public address is refused.", + "items": { + "type": "string" + }, + "maxItems": 16, + "type": "array" + }, + "attemptTimeoutMilliseconds": { + "default": 30000, + "description": "How long one attempt may take, from 1000 to 60000 milliseconds;\nomitted, 30000.", + "format": "uint64", + "maximum": 60000, + "minimum": 1000, + "type": "integer" + }, + "authentication": { + "$ref": "#/$defs/SmtpAuthentication" + }, + "host": { + "description": "The relay's DNS name or IP literal. It is resolved once per attempt and\nis the name TLS verifies the relay's certificate against.", + "type": "string" + }, + "port": { + "description": "Defaults to 587 for `starttls` and 465 for `implicit`; required for\n`development-loopback`.", + "format": "uint16", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "tls": { + "$ref": "#/$defs/SmtpTlsMode" + }, + "trustedRootCertificateRef": { + "$ref": "#/$defs/SecretReference", + "description": "A PEM root certificate trusted in addition to the public web roots,\nfor a relay behind a private certificate authority." + }, + "type": { + "const": "smtp", + "type": "string" + } + }, + "required": [ + "type", + "host", + "tls" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Runtime settings for one HTTP provider.", + "properties": { + "acknowledgeQueryStringContent": { + "default": false, + "description": "Required, and only allowed, when the package sends with `get`: the\nmessage content travels in the query string, where provider access\nlogs keep it.", + "type": "boolean" + }, + "allowedPrivateCidrs": { + "default": [], + "description": "Exact RFC 1918, CGNAT, or unique-local networks an `https` provider may\nresolve into, for an in-country gateway on a private network. Every\nother non-public address is refused. Omitted, the provider may resolve\nonly to public addresses.", + "items": { + "type": "string" + }, + "maxItems": 16, + "type": "array" + }, + "attemptTimeoutMilliseconds": { + "description": "One send's whole budget in milliseconds: resolution, connection,\nrequest, and response.", + "format": "uint64", + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "authentication": { + "$ref": "#/$defs/HttpProviderAuthentication" + }, + "baseUrl": { + "$ref": "#/$defs/Url", + "description": "The provider's origin and path prefix, ending in `/`. Every request\ntarget a script returns is relative to it and stays under it.\n`https` in production; `http` only to a loopback host." + }, + "callbackVerifier": { + "$ref": "#/$defs/CallbackVerifierConfig", + "description": "How the provider's delivery callbacks are authenticated. Required\nexactly when the package declares `receipts: callback`." + }, + "maximumConcurrentRequests": { + "description": "The most sends this deployment has in flight to the provider, at most\nthe package's declared `capabilities.maximumConcurrentRequests`.", + "format": "uint16", + "maximum": 64, + "minimum": 1, + "type": "integer" + }, + "maximumResponseBytes": { + "description": "The largest response body read, at most 1 MiB.", + "format": "uint64", + "maximum": 1048576, + "minimum": 1, + "type": "integer" + }, + "redirects": { + "$ref": "#/$defs/RedirectPolicy" + }, + "tlsTrustProfile": { + "$ref": "#/$defs/LocalId", + "description": "The operator-declared trust bundle the provider's certificate may\nchain to, by its name under `tlsTrustProfiles`. Its roots are trusted\nin addition to the system roots, not instead of them. The runtime\nresolves the name to PEM and passes it to\n[`HttpProviderSettings::activate`]." + }, + "type": { + "const": "http", + "type": "string" + } + }, + "required": [ + "type", + "baseUrl", + "attemptTimeoutMilliseconds", + "maximumResponseBytes", + "maximumConcurrentRequests", + "redirects", + "authentication" + ], + "type": "object" + } + ] + }, + "RedirectPolicy": { + "description": "Redirect handling. A provider redirect is never followed.", + "enum": [ + "deny" + ], + "type": "string" + }, + "RetentionConfig": { + "additionalProperties": false, + "description": "Retention periods the retention sweep enforces. Every value is deployment\nconfiguration: a jurisdiction's retention schedule approves the deployed\nnumbers, and the audit journal records them at startup.", + "properties": { + "payloadRetentionDays": { + "default": 7, + "description": "How long a message's rendered payload and recipient contact are kept,\nfrom 1 to 30 days.", + "format": "uint16", + "maximum": 30, + "minimum": 1, + "type": "integer" + }, + "receiptRetentionDays": { + "default": 7, + "description": "How long a submission receipt stays replayable under its idempotency\nkey, from one day to the record period and at most 365 days.", + "format": "uint16", + "maximum": 365, + "minimum": 1, + "type": "integer" + }, + "recordRetentionDays": { + "default": 90, + "description": "How long the content-free message record is kept, at least as long as\nthe payload and at most ten years.", + "format": "uint16", + "maximum": 3650, + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + }, + "SecretProvidersConfig": { + "additionalProperties": false, + "anyOf": [ + { + "properties": { + "file": { + "$ref": "#/$defs/FileSecretProviderConfig" + } + }, + "required": [ + "file" + ] + }, + { + "properties": { + "environment": { + "$ref": "#/$defs/EnvironmentSecretProviderConfig" + } + }, + "required": [ + "environment" + ] + } + ], + "description": "The secret providers a runtime enables. A reference is resolved only by a\nprovider declared here: `secret:file/name` under `file.root`, and\n`secret:env/NAME` only when `environment: {}` is present.", + "properties": { + "environment": { + "$ref": "#/$defs/EnvironmentSecretProviderConfig", + "description": "Enables `secret:env/NAME` references, read from the process\nenvironment. Declared as an empty mapping: `environment: {}`." + }, + "file": { + "$ref": "#/$defs/FileSecretProviderConfig", + "description": "Enables `secret:file/name` references, read from files under `root`." + } + }, + "type": "object" + }, + "SecretReference": { + "description": "An exact secret reference: secret:file/name, resolved under secretProviders.file.root, or secret:env/NAME, resolved only when secretProviders.environment is declared.", + "pattern": "^(?:secret:env/[A-Z][A-Z0-9_]{0,127}|secret:file/[a-z][a-z0-9._-]{0,127})$", + "type": "string" + }, + "SmtpAuthentication": { + "additionalProperties": false, + "description": "The credential pair the relay authenticates, as `secret:` references.", + "properties": { + "passwordRef": { + "$ref": "#/$defs/SecretReference" + }, + "usernameRef": { + "$ref": "#/$defs/SecretReference" + } + }, + "required": [ + "usernameRef", + "passwordRef" + ], + "type": "object" + }, + "SmtpTlsMode": { + "description": "How the connection to the relay is protected.", + "oneOf": [ + { + "const": "starttls", + "description": "Connect in plaintext and upgrade with `STARTTLS` before anything else\nis sent. The relay must offer it. Defaults to port 587.", + "type": "string" + }, + { + "const": "implicit", + "description": "TLS from the first byte. Defaults to port 465.", + "type": "string" + }, + { + "const": "development-loopback", + "description": "Plaintext to a loopback relay, for a local development server only.\nThe host must be a loopback literal or `localhost`, every resolved\naddress must be loopback, and the port must be explicit. Accepted\nonly by a test build or behind a `development-loopback` listener.", + "type": "string" + } + ] + }, + "TlsTermination": { + "description": "Declares the trusted transport boundary for a runtime's plaintext HTTP\nlistener. Production listeners require operator-controlled upstream TLS\ntermination; direct plaintext is limited to the explicit loopback-only\ndevelopment mode.", + "enum": [ + "operator-controlled-upstream", + "development-loopback" + ], + "type": "string" + }, + "TlsTrustProfileConfig": { + "additionalProperties": false, + "description": "A PEM bundle of one or more certificate authorities, held in the secret\nprovider so it is read under the same file checks as every credential.", + "properties": { + "bundleRef": { + "$ref": "#/$defs/SecretReference" + } + }, + "required": [ + "bundleRef" + ], + "type": "object" + }, + "Url": { + "description": "An absolute http or https URL with a host preserved as written, no user information, and no backslash, whitespace or control character. DNS case and equivalent IPv6 literals are permitted.", + "format": "uri", + "maxLength": 2048, + "pattern": "^[Hh][Tt][Tt][Pp][Ss]?://[^/?#@\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]+([/?#][^\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]*)?$", + "type": "string" + } + }, + "$id": "https://id.registrystack.org/schemas/messaging/runtime/runtime.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "allOf": [ + { + "if": { + "properties": { + "authentication": { + "properties": { + "oidc": { + "properties": { + "jwksSource": { + "properties": { + "documentRef": { + "pattern": "^secret:env/" + } + }, + "required": [ + "documentRef" + ] + } + }, + "required": [ + "jwksSource" + ] + } + }, + "required": [ + "oidc" + ] + } + }, + "required": [ + "authentication" + ] + }, + "then": { + "properties": { + "secretProviders": { + "properties": { + "environment": { + "$ref": "#/$defs/EnvironmentSecretProviderConfig" + } + }, + "required": [ + "environment" + ] + } + } + } + }, + { + "if": { + "properties": { + "authentication": { + "properties": { + "oidc": { + "properties": { + "jwksSource": { + "properties": { + "documentRef": { + "pattern": "^secret:file/" + } + }, + "required": [ + "documentRef" + ] + } + }, + "required": [ + "jwksSource" + ] + } + }, + "required": [ + "oidc" + ] + } + }, + "required": [ + "authentication" + ] + }, + "then": { + "properties": { + "secretProviders": { + "properties": { + "file": { + "$ref": "#/$defs/FileSecretProviderConfig" + } + }, + "required": [ + "file" + ] + } + } + } + } + ], + "description": "The operator runtime configuration document.", + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/messaging/runtime/v1alpha1", + "type": "string" + }, + "audit": { + "$ref": "#/$defs/AuditConfig" + }, + "authentication": { + "$ref": "#/$defs/AuthenticationConfig" + }, + "database": { + "$ref": "#/$defs/DatabaseConfig" + }, + "identity": { + "additionalProperties": false, + "description": "The logical database identity this deployment owns. It is independent of\nthe connection URL and PostgreSQL database name.", + "properties": { + "databaseId": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "databaseId" + ], + "type": "object" + }, + "kind": { + "const": "MessagingRuntimeConfig", + "type": "string" + }, + "listener": { + "$ref": "#/$defs/PrivateListenerConfig" + }, + "metricsListener": { + "$ref": "#/$defs/ListenerConfig" + }, + "package": { + "$ref": "#/$defs/PackageConfig" + }, + "providers": { + "additionalProperties": { + "$ref": "#/$defs/ProviderConnection" + }, + "description": "The runtime half of each package provider, by provider id: where the\nprovider is and how the runtime authenticates to it. A package\nprovider with no entry has no transport, and its messages fail with\n`provider-unconfigured`.", + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "retention": { + "$ref": "#/$defs/RetentionConfig" + }, + "secretProviders": { + "$ref": "#/$defs/SecretProvidersConfig" + }, + "tlsTrustProfiles": { + "additionalProperties": { + "$ref": "#/$defs/TlsTrustProfileConfig" + }, + "description": "Named PEM bundles an `http` provider's `tlsTrustProfile` trusts in\naddition to the system roots, at most 64.", + "maxProperties": 64, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + } + }, + "required": [ + "apiVersion", + "kind", + "package", + "listener", + "secretProviders", + "database", + "authentication", + "audit", + "identity" + ], + "title": "Registry Messaging runtime configuration", + "type": "object" +} diff --git a/public/artifacts/sha256/785867b4f14c78862010b53406f62a420e53c4b17d5c8b9f7f95636130b75bd4.json b/public/artifacts/sha256/785867b4f14c78862010b53406f62a420e53c4b17d5c8b9f7f95636130b75bd4.json new file mode 100644 index 000000000..b460d4aec --- /dev/null +++ b/public/artifacts/sha256/785867b4f14c78862010b53406f62a420e53c4b17d5c8b9f7f95636130b75bd4.json @@ -0,0 +1,1620 @@ +{ + "$defs": { + "AccessTokenAlgorithm": { + "enum": [ + "EdDSA", + "ES256", + "ES384", + "RS256", + "RS384" + ], + "type": "string" + }, + "AllowedClients": { + "anyOf": [ + { + "const": "unrestricted", + "description": "Accept a token from every client.", + "type": "string" + }, + { + "description": "Accept a token only from a listed client.", + "items": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[^\\x00-\\x20\\x7F]+$", + "type": "string" + }, + "maxItems": 128, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + ], + "description": "The OAuth clients whose tokens a runtime accepts: the keyword\n`unrestricted`, or a list of at least one client." + }, + "AuditDestinationKind": { + "description": "The configured audit destination kind, as written in product configuration.", + "oneOf": [ + { + "const": "file", + "description": "Durable, rotated JSON Lines file.", + "type": "string" + }, + { + "const": "stdout", + "description": "One JSON line per entry on standard output, flushed per entry.", + "type": "string" + } + ] + }, + "ClaimName": { + "description": "The name of one top-level claim of an access token. The reader accepts any\ntext; the runtime then refuses a name that is not a valid claim name, one\nthat repeats another contextual name, and one that is a registered or\nauthentication claim.", + "type": "string" + }, + "Classification": { + "enum": [ + "public", + "internal", + "restricted" + ], + "type": "string" + }, + "Digest": { + "description": "A SHA-256 digest: `sha256:` followed by 64 lowercase hex digits.", + "pattern": "^sha256:[0-9a-f]{64}$", + "type": "string" + }, + "EnvironmentSecretProviderConfig": { + "additionalProperties": false, + "description": "The environment secret provider. It takes no settings.", + "type": "object" + }, + "EventDestinationDnsFamily": { + "enum": [ + "dual-stack-strict", + "ipv4-only" + ], + "type": "string" + }, + "EventDestinationNetworkProfile": { + "enum": [ + "production-https", + "loopback-development-http" + ], + "type": "string" + }, + "EvidencePrivateKeyJwtConfig": { + "additionalProperties": false, + "properties": { + "assertionAudience": { + "type": "string" + }, + "clientId": { + "type": "string" + }, + "privateKeyRef": { + "$ref": "#/$defs/SecretReference" + }, + "resource": { + "type": "string" + }, + "scopes": { + "default": [], + "items": { + "type": "string" + }, + "type": "array" + }, + "tokenEndpoint": { + "type": "string" + } + }, + "required": [ + "tokenEndpoint", + "clientId", + "privateKeyRef" + ], + "type": "object" + }, + "EvidenceProviderConfig": { + "additionalProperties": false, + "oneOf": [ + { + "required": [ + "tokenRef" + ] + }, + { + "required": [ + "privateKeyJwt" + ] + } + ], + "properties": { + "baseUrl": { + "$ref": "#/$defs/Url", + "description": "The Evidence service's base URL. It is `https`; `http` is accepted\nonly for a loopback host, for local development." + }, + "caBundleRef": { + "$ref": "#/$defs/SecretReference", + "description": "PEM CA bundle for the Evidence service and its token endpoint.\nOmitted, the platform's trusted roots verify them." + }, + "privateKeyJwt": { + "$ref": "#/$defs/EvidencePrivateKeyJwtConfig", + "description": "The refreshing credential: a private-key JWT client exchange.\nExactly one of `tokenRef` and `privateKeyJwt` is written." + }, + "revokedKeyIds": { + "default": [], + "items": { + "type": "string" + }, + "type": "array" + }, + "tokenRef": { + "$ref": "#/$defs/SecretReference", + "description": "Compatibility path for a pre-issued token. Long-running providers\nshould configure `privateKeyJwt` so expiry triggers a fresh exchange.\nExactly one of `tokenRef` and `privateKeyJwt` is written." + }, + "trustBindingId": { + "type": "string" + }, + "trustedJwksRef": { + "$ref": "#/$defs/SecretReference" + } + }, + "required": [ + "baseUrl", + "trustBindingId", + "trustedJwksRef" + ], + "type": "object" + }, + "ExternalId": { + "description": "An identifier another system issues, written exactly as its issuer gives it.", + "maxLength": 512, + "minLength": 1, + "pattern": "^[^\\u0000-\\u001F\\u007F-\\u009F]+$", + "type": "string" + }, + "FileSecretProviderConfig": { + "additionalProperties": false, + "description": "The file secret provider.", + "properties": { + "root": { + "description": "Absolute directory holding one file per secret. Each file must be a\nregular file owned by the runtime user, mode 0400 or 0600, with exactly\none hard link.", + "pattern": "^/", + "type": "string" + } + }, + "required": [ + "root" + ], + "type": "object" + }, + "JwksSource": { + "description": "Where a runtime obtains the OIDC issuer's signing keys.", + "oneOf": [ + { + "additionalProperties": false, + "description": "Read `jwks_uri` from the issuer's OpenID Connect discovery document.", + "properties": { + "type": { + "const": "discovery", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Fetch the key set from this absolute `https` URI, skipping discovery.\nA plain `http` URI is accepted on loopback for supervised local\ndevelopment, and beyond loopback only when the issuer block sets\n`allowInsecureHttp`.", + "properties": { + "type": { + "const": "uri", + "type": "string" + }, + "uri": { + "$ref": "#/$defs/Url" + } + }, + "required": [ + "type", + "uri" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Read the key set from a secret, for deployments without network access\nto the issuer.", + "properties": { + "documentRef": { + "$ref": "#/$defs/SecretReference" + }, + "type": { + "const": "static", + "type": "string" + } + }, + "required": [ + "type", + "documentRef" + ], + "type": "object" + } + ] + }, + "ListenerBind": { + "description": "Socket address the runtime listens on, written host:port with an IP address host ([addr]:port for IPv6).", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "LocalId": { + "description": "A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.", + "pattern": "^[a-z][a-z0-9_-]{0,63}$", + "type": "string" + }, + "LogLevel": { + "description": "The operational log level selected by the runtime file when `BREG_LOG`\nis not set. The closed vocabulary prevents configuration from enabling\ndebug output or dependency logging.", + "enum": [ + "error", + "warn", + "info" + ], + "type": "string" + }, + "RawAttachmentStorageConfig": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "type": { + "const": "database", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "One S3-compatible bucket a runtime keeps content bytes in, and the\nruntime's credentials for it. The decode checks only the shape; the\nobject-store transport refuses a non-loopback `http` URL, a URL carrying a\npath, query, or fragment, and a malformed bucket or region name before it\nsends anything.", + "properties": { + "accessKeyIdRef": { + "$ref": "#/$defs/SecretReference" + }, + "attemptTimeoutMilliseconds": { + "default": 10000, + "description": "The longest one request may run, body included. Omitted, 10000.", + "format": "uint64", + "maximum": 60000, + "minimum": 100, + "type": "integer" + }, + "bucket": { + "description": "The bucket name: lowercase letters, digits, `-` and `.`.", + "maxLength": 63, + "minLength": 3, + "type": "string" + }, + "caBundleRef": { + "$ref": "#/$defs/SecretReference", + "description": "PEM CA bundle for the service. Omitted, the platform's trusted roots\nverify it." + }, + "pathStyle": { + "default": true, + "description": "Address the bucket as a path under `url` rather than as a host name.\nOmitted, `true`.", + "type": "boolean" + }, + "region": { + "description": "The signing region: lowercase letters, digits and `-`.", + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "secretAccessKeyRef": { + "$ref": "#/$defs/SecretReference" + }, + "sessionTokenRef": { + "$ref": "#/$defs/SecretReference" + }, + "type": { + "const": "s3", + "type": "string" + }, + "url": { + "$ref": "#/$defs/Url", + "description": "The service's base URL, with no path. It is `https`; `http` is\naccepted only for a loopback host, for local development." + } + }, + "required": [ + "type", + "url", + "bucket", + "region", + "accessKeyIdRef", + "secretAccessKeyRef" + ], + "type": "object" + } + ] + }, + "RawAttachmentVerificationConfig": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "type": { + "const": "disabled", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "One external HTTP verifier a runtime submits content bytes to for an\n`approved` or `rejected` verdict, and the runtime's bearer credential for\nit. The block carries no default: a runtime that makes verification\noptional states its own disabled form beside it.", + "properties": { + "attemptTimeoutMilliseconds": { + "default": 10000, + "description": "The longest one verification attempt may run, body included.\nOmitted, 10000.", + "format": "uint64", + "maximum": 60000, + "minimum": 100, + "type": "integer" + }, + "authorizationRef": { + "$ref": "#/$defs/SecretReference" + }, + "policyId": { + "description": "Non-secret identity of the external scanner and its rules generation.", + "maxLength": 128, + "minLength": 1, + "pattern": "^[\\x21-\\x7E]+$", + "type": "string" + }, + "type": { + "const": "http", + "type": "string" + }, + "url": { + "$ref": "#/$defs/Url", + "description": "The URL the content is posted to. It is `https`; `http` is accepted\nonly for a loopback host, for local development." + } + }, + "required": [ + "type", + "url", + "authorizationRef", + "policyId" + ], + "type": "object" + } + ] + }, + "RawAuditConfig": { + "additionalProperties": false, + "description": "The key for the keyed references an audit record carries in place of raw\nidentifiers, written `audit.hashKeyRef` beside the product's own audit\nsettings.", + "else": { + "properties": { + "path": { + "pattern": "^/+(?:(?:[^/.][^/]*|\\.(?:[^/.][^/]*|\\.[^/]+)?)/+)*(?:[^/.][^/]*|\\.(?:[^/.][^/]*|\\.[^/]+))$", + "type": "string" + } + }, + "required": [ + "path" + ] + }, + "if": { + "properties": { + "destination": { + "const": "stdout" + } + }, + "required": [ + "destination" + ] + }, + "properties": { + "destination": { + "$ref": "#/$defs/AuditDestinationKind", + "default": "file", + "description": "`file` (the default) writes a durable, rotated JSON Lines file at\n`path`; `stdout` writes one JSON line per entry to standard output." + }, + "hashKeyRef": { + "$ref": "#/$defs/SecretReference", + "description": "Secret reference to the audit hash key." + }, + "path": { + "description": "Absolute path of the active audit file. Required for, and accepted\nonly with, the `file` destination; omitted with `stdout`.", + "type": "string" + }, + "retentionDays": { + "description": "Days a rotated file is retained, accepted only with the `file`\ndestination. Omitted, a rotated file is retained for 90 days.", + "format": "uint32", + "maximum": 36500, + "minimum": 1, + "type": "integer" + }, + "rotateBytes": { + "description": "Size in bytes at which the active file rotates, accepted only with the\n`file` destination. Omitted, the file rotates at 100 MiB.", + "format": "uint64", + "maximum": 4294967295, + "minimum": 1048576, + "type": "integer" + } + }, + "required": [ + "hashKeyRef" + ], + "then": { + "not": { + "anyOf": [ + { + "required": [ + "path" + ] + }, + { + "required": [ + "rotateBytes" + ] + }, + { + "required": [ + "retentionDays" + ] + } + ] + } + }, + "type": "object" + }, + "RawAuthenticationConfig": { + "additionalProperties": false, + "properties": { + "authorityClaims": { + "$ref": "#/$defs/RawAuthorityClaimsConfig" + }, + "oidc": { + "$ref": "#/$defs/RawOidcVerifierConfig" + } + }, + "required": [ + "oidc", + "authorityClaims" + ], + "type": "object" + }, + "RawAuthorityClaimsConfig": { + "additionalProperties": false, + "properties": { + "contextual": { + "$ref": "#/$defs/RawContextualClaimNames", + "default": { + "actorKind": "registry_actor_kind", + "approver": "registry_approver", + "grantBounds": "registry_grant_bounds", + "grantClient": "registry_grant_client", + "grantExp": "registry_grant_exp", + "grantId": "registry_grant_id", + "grantResource": "registry_grant_resource", + "grantSourceIssuer": "registry_grant_source_issuer", + "purpose": "registry_purpose" + }, + "description": "The claim names that carry delegated-authority context. Each name\ndefaults to its `registry_` claim; written, every name is given." + }, + "principal": { + "maxLength": 128, + "minLength": 1, + "not": { + "enum": [ + "iss", + "aud", + "exp", + "iat", + "nbf", + "client_id", + "azp", + "jti", + "cnf" + ] + }, + "pattern": "^[\\x21-\\x7E]+$", + "type": "string" + }, + "purpose": { + "maxLength": 128, + "minLength": 1, + "not": { + "enum": [ + "iss", + "aud", + "exp", + "iat", + "nbf", + "sub", + "client_id", + "azp", + "jti", + "cnf" + ] + }, + "pattern": "^[\\x21-\\x7E]+$", + "type": "string" + }, + "trustedActors": { + "additionalProperties": { + "type": "string" + }, + "default": {}, + "propertyNames": { + "$ref": "#/$defs/ExternalId" + }, + "type": "object" + } + }, + "required": [ + "principal" + ], + "type": "object" + }, + "RawContextualClaimNames": { + "additionalProperties": false, + "properties": { + "actorKind": { + "$ref": "#/$defs/ClaimName" + }, + "approver": { + "$ref": "#/$defs/ClaimName" + }, + "grantBounds": { + "$ref": "#/$defs/ClaimName" + }, + "grantClient": { + "$ref": "#/$defs/ClaimName" + }, + "grantExp": { + "$ref": "#/$defs/ClaimName" + }, + "grantId": { + "$ref": "#/$defs/ClaimName" + }, + "grantResource": { + "$ref": "#/$defs/ClaimName" + }, + "grantSourceIssuer": { + "$ref": "#/$defs/ClaimName" + }, + "purpose": { + "$ref": "#/$defs/ClaimName" + } + }, + "required": [ + "actorKind", + "purpose", + "grantId", + "grantSourceIssuer", + "grantClient", + "grantResource", + "grantExp", + "grantBounds", + "approver" + ], + "type": "object" + }, + "RawCursorConfig": { + "additionalProperties": false, + "properties": { + "maximumAgeSeconds": { + "default": 300, + "description": "Defaults to the bounded cursor validity lifetime.", + "format": "uint64", + "maximum": 86400, + "minimum": 1, + "type": "integer" + }, + "secretRef": { + "$ref": "#/$defs/SecretReference" + } + }, + "required": [ + "secretRef" + ], + "type": "object" + }, + "RawDeploymentIdentity": { + "additionalProperties": false, + "properties": { + "databaseId": { + "maxLength": 256, + "minLength": 1, + "pattern": "^[^\\s\\x00-\\x1F\\x7F](?:[^\\x00-\\x1F\\x7F]*[^\\s\\x00-\\x1F\\x7F])?$", + "type": "string" + }, + "databaseInitializationEnvironment": { + "maxLength": 256, + "minLength": 1, + "pattern": "^[^\\s\\x00-\\x1F\\x7F](?:[^\\x00-\\x1F\\x7F]*[^\\s\\x00-\\x1F\\x7F])?$", + "type": "string" + }, + "environment": { + "maxLength": 256, + "minLength": 1, + "pattern": "^[^\\s\\x00-\\x1F\\x7F](?:[^\\x00-\\x1F\\x7F]*[^\\s\\x00-\\x1F\\x7F])?$", + "type": "string" + }, + "instanceId": { + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-z][a-z0-9_-]{0,63}$", + "type": "string" + } + }, + "required": [ + "environment", + "instanceId", + "databaseId", + "databaseInitializationEnvironment" + ], + "type": "object" + }, + "RawDestinationsConfig": { + "additionalProperties": false, + "description": "Outbound destination bindings, grouped by what sends to them.", + "properties": { + "hooks": { + "additionalProperties": { + "$ref": "#/$defs/RawEventDestinationConfig" + }, + "description": "URL hook destinations, keyed by the identifier a reviewed hook names.", + "maxProperties": 128, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + } + }, + "type": "object" + }, + "RawEventDestinationConfig": { + "additionalProperties": false, + "properties": { + "allowedPrivateCidrs": { + "description": "Explicitly allowed private network ranges in canonical CIDR notation.", + "items": { + "type": "string" + }, + "maxItems": 16, + "type": "array", + "uniqueItems": true + }, + "classificationCeiling": { + "$ref": "#/$defs/Classification", + "description": "Highest permitted classification, including fields used only in event conditions." + }, + "deliveryCeilings": { + "$ref": "#/$defs/RawEventDestinationDeliveryCeilings", + "description": "Per-destination limits that may tighten, but never increase, the compiled delivery limits." + }, + "dnsFamily": { + "$ref": "#/$defs/EventDestinationDnsFamily", + "description": "Address families to validate when resolving the destination." + }, + "hmacSha256KeyRef": { + "$ref": "#/$defs/SecretReference", + "description": "Runtime secret reference for the receiver's shared HMAC-SHA-256 key." + }, + "networkProfile": { + "$ref": "#/$defs/EventDestinationNetworkProfile", + "description": "HTTPS for production, or explicit loopback-only HTTP for local development." + }, + "origin": { + "description": "Receiver origin without a path or query, such as `https://receiver.example.com`.", + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "path": { + "description": "Absolute request path on the configured origin, such as `/events`.", + "maxLength": 4096, + "minLength": 1, + "pattern": "^/[\\x20-\\x22\\x24\\x26-\\x3E\\x40-\\x5B\\x5D-\\x7E]*$", + "type": "string" + }, + "tls": { + "$ref": "#/$defs/RawEventDestinationTlsConfig", + "description": "Optional private CA and client identity secret references for HTTPS." + } + }, + "required": [ + "origin", + "path", + "networkProfile", + "dnsFamily", + "allowedPrivateCidrs", + "hmacSha256KeyRef", + "classificationCeiling", + "deliveryCeilings" + ], + "type": "object" + }, + "RawEventDestinationDeliveryCeilings": { + "additionalProperties": false, + "properties": { + "attemptTimeoutMilliseconds": { + "description": "Maximum time allowed for one attempt, in milliseconds.", + "format": "uint32", + "maximum": 5000, + "minimum": 100, + "type": "integer" + }, + "maximumAttempts": { + "description": "Maximum total attempts in one delivery generation, including the first attempt.", + "format": "uint32", + "maximum": 5, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "attemptTimeoutMilliseconds", + "maximumAttempts" + ], + "type": "object" + }, + "RawEventDestinationTlsConfig": { + "additionalProperties": false, + "anyOf": [ + { + "required": [ + "caBundleRef" + ] + }, + { + "required": [ + "clientIdentityRef" + ] + } + ], + "properties": { + "caBundleRef": { + "$ref": "#/$defs/SecretReference", + "description": "PEM CA bundle secret reference, when the receiver uses a private\ncertificate authority. Omitted, the platform's trusted roots verify\nthe receiver. At least one of `caBundleRef` and `clientIdentityRef`\nis written." + }, + "clientIdentityRef": { + "$ref": "#/$defs/SecretReference", + "description": "PEM client identity secret reference for mutual TLS. Omitted, the\nregistry presents no client certificate." + } + }, + "type": "object" + }, + "RawFieldEncryptionConfig": { + "additionalProperties": false, + "description": "Raw `fieldEncryption` deployment block, absent by default.", + "properties": { + "provider": { + "$ref": "#/$defs/RawFieldEncryptionProvider" + } + }, + "type": "object" + }, + "RawFieldEncryptionProvider": { + "description": "Raw provider binding; the `type` member selects the custodian.", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "attemptTimeoutMilliseconds": { + "default": 5000, + "format": "uint64", + "maximum": 30000, + "minimum": 1, + "type": "integer" + }, + "keyName": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "mount": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "type": { + "const": "transit", + "type": "string" + }, + "unixSocketPath": { + "maxLength": 4096, + "minLength": 2, + "type": "string" + } + }, + "required": [ + "type", + "unixSocketPath", + "mount", + "keyName" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "dekRef": { + "$ref": "#/$defs/SecretReference", + "description": "The data encryption key, named by a `secret:file/NAME` reference;\nan environment reference is refused." + }, + "type": { + "const": "local-file", + "type": "string" + } + }, + "required": [ + "type", + "dekRef" + ], + "type": "object" + } + ] + }, + "RawJwksCacheConfig": { + "additionalProperties": false, + "properties": { + "attemptTimeoutMilliseconds": { + "default": 5000, + "description": "Defaults to the bounded JWKS fetch timeout.", + "format": "uint64", + "maximum": 30000, + "minimum": 1, + "type": "integer" + }, + "cacheTtlSeconds": { + "default": 600, + "description": "Defaults to the bounded JWKS cache time-to-live.", + "format": "uint64", + "maximum": 86400, + "minimum": 1, + "type": "integer" + }, + "maximumDocumentBytes": { + "default": 65536, + "description": "Defaults to the bounded maximum JWKS document size.", + "format": "uint64", + "maximum": 1048576, + "minimum": 1, + "type": "integer" + }, + "negativeCacheTtlSeconds": { + "default": 60, + "description": "Defaults to the bounded JWKS negative-cache time-to-live.", + "format": "uint64", + "maximum": 3600, + "minimum": 1, + "type": "integer" + }, + "outageToleranceSeconds": { + "default": 900, + "description": "Defaults to the bounded cached-key outage tolerance.", + "format": "uint64", + "maximum": 86400, + "minimum": 0, + "type": "integer" + }, + "refreshCooldownSeconds": { + "default": 30, + "description": "Defaults to the bounded JWKS refresh cooldown.", + "format": "uint64", + "maximum": 3600, + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + }, + "RawMetricsListenerConfig": { + "additionalProperties": false, + "properties": { + "bind": { + "$ref": "#/$defs/ListenerBind", + "description": "Operator-private loopback or private numeric address and named port,\nfor example `127.0.0.1:9100`." + } + }, + "required": [ + "bind" + ], + "type": "object" + }, + "RawOidcVerifierConfig": { + "additionalProperties": false, + "description": "The OIDC issuer a runtime accepts access tokens from: the exact `iss`\nvalue, the `aud` value a token must carry, and where the issuer's signing\nkeys come from, written under `authentication.oidc` beside the product's\nown token rules.", + "properties": { + "accessTokenType": { + "description": "The one admitted access-token `typ` semantics. Configuring the\nRFC 9068 access-token media type as `at+jwt` or\n`application/at+jwt` admits both spellings of that one type; any\nother value (for example `JWT`) admits only that token type, matched\ncase-insensitively.", + "maxLength": 2048, + "minLength": 1, + "pattern": "^[^\\s\\x00-\\x1F\\x7F](?:[^\\x00-\\x1F\\x7F]*[^\\s\\x00-\\x1F\\x7F])?$", + "type": "string" + }, + "allowInsecureHttp": { + "default": false, + "description": "Permit plain HTTP beyond loopback to the configured issuer and to a\nJWKS URI declared in configuration. TLS remains required unless the\noperator explicitly accepts this transport risk.", + "type": "boolean" + }, + "allowedAlgorithm": { + "$ref": "#/$defs/AccessTokenAlgorithm" + }, + "allowedClients": { + "$ref": "#/$defs/AllowedClients", + "description": "The OAuth clients whose tokens this registry accepts: `unrestricted`\nto accept a token from every client, or a list of at least one\nclient." + }, + "assertionIssuers": { + "additionalProperties": { + "items": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[^\\x00-\\x20\\x7F]+$", + "type": "string" + }, + "maxItems": 128, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "description": "The assertion authorities each client may exchange a subject token\nfrom, keyed by client identifier. Omitted, no assertion-issuer rule\napplies; written, it lists at least one client, each with at least one\nauthority, and a client not listed may exchange from no authority.", + "maxProperties": 128, + "minProperties": 1, + "propertyNames": { + "$ref": "#/$defs/ExternalId", + "maxLength": 512, + "minLength": 1, + "pattern": "^[^\\x00-\\x20\\x7F]+$" + }, + "type": "object" + }, + "audience": { + "description": "The audience every accepted access token must carry in `aud`.", + "maxLength": 512, + "minLength": 1, + "pattern": "^[^\\s\\x00-\\x1F\\x7F](?:[^\\x00-\\x1F\\x7F]*[^\\s\\x00-\\x1F\\x7F])?$", + "type": "string" + }, + "issuer": { + "$ref": "#/$defs/Url", + "description": "Exact issuer accepted in access-token `iss` claims, an absolute\n`https` URL, or a plain `http` URL when `allowInsecureHttp` is set.", + "maxLength": 2048, + "minLength": 1 + }, + "jwksCache": { + "$ref": "#/$defs/RawJwksCacheConfig", + "default": { + "attemptTimeoutMilliseconds": 5000, + "cacheTtlSeconds": 600, + "maximumDocumentBytes": 65536, + "negativeCacheTtlSeconds": 60, + "outageToleranceSeconds": 900, + "refreshCooldownSeconds": 30 + }, + "description": "Optional JWKS fetch and cache tuning. Defaults to bounded cache behavior." + }, + "jwksSource": { + "$ref": "#/$defs/JwksSource", + "description": "Where the issuer's signing keys come from. Absent reads the issuer's\nOpenID Connect discovery document." + }, + "leewayMilliseconds": { + "format": "uint64", + "maximum": 300000, + "minimum": 0, + "type": "integer" + }, + "maximumTokenLifetimeSeconds": { + "format": "uint64", + "maximum": 7200, + "minimum": 1, + "type": "integer" + }, + "revokedKeyIds": { + "description": "The signing key identifiers this registry refuses locally even while\nthe issuer publishes them. Omitted, no key is refused; written, it\nnames at least one key and does not revoke it at the issuer.", + "items": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[^\\x00-\\x20\\x7F]+$", + "type": "string" + }, + "maxItems": 128, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "scopeClaim": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[\\x21-\\x7E]+$", + "type": "string" + }, + "scopeSeparator": { + "maxLength": 1, + "minLength": 1, + "pattern": "^[^A-Za-z0-9\\x00-\\x1F\\x7F]$", + "type": "string" + } + }, + "required": [ + "issuer", + "audience", + "allowedAlgorithm", + "accessTokenType", + "scopeClaim", + "scopeSeparator", + "allowedClients", + "maximumTokenLifetimeSeconds", + "leewayMilliseconds" + ], + "type": "object" + }, + "RawOperationalTimeouts": { + "additionalProperties": false, + "properties": { + "httpRequestMilliseconds": { + "default": 10000, + "description": "Defaults to the bounded per-request HTTP timeout.", + "format": "uint64", + "maximum": 60000, + "minimum": 1, + "type": "integer" + }, + "migrationLockMilliseconds": { + "default": 30000, + "description": "Defaults to the bounded migration lock timeout.", + "format": "uint64", + "maximum": 300000, + "minimum": 1, + "type": "integer" + }, + "migrationStatementMilliseconds": { + "default": 60000, + "description": "Defaults to the bounded migration statement timeout.", + "format": "uint64", + "maximum": 3600000, + "minimum": 1, + "type": "integer" + }, + "recordLockMilliseconds": { + "default": 5000, + "description": "Defaults to the bounded record lock timeout.", + "format": "uint64", + "maximum": 30000, + "minimum": 1, + "type": "integer" + }, + "shutdownGraceMilliseconds": { + "default": 30000, + "description": "Defaults to the bounded graceful-shutdown timeout.", + "format": "uint64", + "maximum": 300000, + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + }, + "RawPackageConfig": { + "additionalProperties": false, + "description": "The package a runtime serves: `root` is the absolute package directory,\nand `expectedDigest`, when set, pins the package digest the runtime must\nfind there. The package digest is the digest of the package's\n`SHA256SUMS` file; see [`crate::package`].", + "properties": { + "expectedDigest": { + "$ref": "#/$defs/Digest", + "description": "`sha256:` label of the package digest, the digest of the package's\n`SHA256SUMS` file. When set, the runtime refuses to start on any other\npackage." + }, + "root": { + "description": "Absolute path of the package directory.", + "maxLength": 512, + "minLength": 1, + "pattern": "^/", + "type": "string" + } + }, + "required": [ + "root" + ], + "type": "object" + }, + "RawPoolBounds": { + "additionalProperties": false, + "properties": { + "createTimeoutMilliseconds": { + "default": 2000, + "description": "Defaults to the bounded PostgreSQL pool connection-creation timeout.", + "format": "uint64", + "maximum": 60000, + "minimum": 1, + "type": "integer" + }, + "maximumConnections": { + "format": "uint32", + "maximum": 128, + "minimum": 1, + "type": "integer" + }, + "recycleTimeoutMilliseconds": { + "default": 2000, + "description": "Defaults to the bounded PostgreSQL pool connection-recycle timeout.", + "format": "uint64", + "maximum": 60000, + "minimum": 1, + "type": "integer" + }, + "waitTimeoutMilliseconds": { + "default": 1000, + "description": "Defaults to the bounded PostgreSQL pool wait timeout.", + "format": "uint64", + "maximum": 60000, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "maximumConnections" + ], + "type": "object" + }, + "RawRegistryDatabase": { + "additionalProperties": false, + "description": "The registry's database: the shared database block and the connection\npool and SQL roles the registry adds.", + "properties": { + "migrationUrlRef": { + "$ref": "#/$defs/SecretReference", + "description": "Secret reference to the migration connection URL." + }, + "pool": { + "$ref": "#/$defs/RawPoolBounds" + }, + "roles": { + "$ref": "#/$defs/RawSqlRoles" + }, + "runtimeUrlRef": { + "$ref": "#/$defs/SecretReference", + "description": "Secret reference to the least-privileged runtime connection URL." + }, + "testOnlyPlaintext": { + "default": false, + "description": "Allow a plaintext connection. Refused outside test builds.", + "type": "boolean" + }, + "trustedRootCertificateRef": { + "$ref": "#/$defs/SecretReference", + "description": "Secret reference to a PEM root certificate the connection trusts.\nAbsent, the connection trusts the platform's root certificates." + } + }, + "required": [ + "runtimeUrlRef", + "migrationUrlRef", + "pool", + "roles" + ], + "type": "object" + }, + "RawRegistryListener": { + "additionalProperties": false, + "description": "The registry's listener: the shared listener block and an optional public\norigin.", + "properties": { + "bind": { + "$ref": "#/$defs/ListenerBind" + }, + "publicOrigin": { + "$ref": "#/$defs/Url", + "description": "Canonical public origin for QGIS discovery and pagination links, with\nan optional deployment path prefix such as\n`https://registry.example.org/breg`. It is `https`; `http` is accepted\nonly for a loopback host, for local development. Required when the\nregistry exposes GIS collections; omitted, the registry builds no\nabsolute discovery or paging links." + } + }, + "required": [ + "bind" + ], + "type": "object" + }, + "RawRetentionConfig": { + "additionalProperties": false, + "properties": { + "hookPayloadRetentionDays": { + "default": 7, + "description": "Defaults to the bounded retained payload lifetime for pending or dead-letter hook work.", + "format": "uint32", + "maximum": 30, + "minimum": 1, + "type": "integer" + }, + "receiptRetentionDays": { + "default": 7, + "description": "Days a held response is kept after its commit. A retry after it is\nrefused as expired and never executed; the key stays spent.", + "format": "uint32", + "maximum": 365, + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + }, + "RawReviewAuthorityConfig": { + "additionalProperties": false, + "properties": { + "completionRecipient": { + "description": "The logical recipient the review authority names in each completion\nnotification. Written together with `completionTokenRef`; omitted, no\ncompletion notification is accepted and the registry polls for\nresults.", + "type": "string" + }, + "completionTokenRef": { + "$ref": "#/$defs/SecretReference", + "description": "The bearer token the review authority presents when it notifies this\nregistry that a review completed. Written together with\n`completionRecipient`; omitted, no completion notification is\naccepted and the registry polls for results." + }, + "endpoint": { + "type": "string" + }, + "privateKeyJwt": { + "$ref": "#/$defs/RawReviewPrivateKeyJwtConfig", + "description": "A refreshing client-assertion credential for the review service.\nExactly one of `tokenRef` and `privateKeyJwt` is written." + }, + "producerId": { + "type": "string" + }, + "profile": { + "type": "string" + }, + "recoveryDays": { + "format": "uint32", + "maximum": 3650, + "minimum": 1, + "type": "integer" + }, + "tokenRef": { + "$ref": "#/$defs/SecretReference", + "description": "A static bearer token for the review service. Exactly one of\n`tokenRef` and `privateKeyJwt` is written." + } + }, + "required": [ + "endpoint", + "profile", + "producerId", + "recoveryDays" + ], + "type": "object" + }, + "RawReviewPrivateKeyJwtConfig": { + "additionalProperties": false, + "properties": { + "assertionAudience": { + "type": "string" + }, + "caBundleRef": { + "$ref": "#/$defs/SecretReference", + "description": "A PEM bundle of the roots that sign the token endpoint's certificate.\nOmitted, the platform's trusted roots verify it." + }, + "clientAssertionKeyRef": { + "$ref": "#/$defs/SecretReference" + }, + "clientIdRef": { + "$ref": "#/$defs/SecretReference" + }, + "resource": { + "type": "string" + }, + "scopes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "tokenEndpoint": { + "type": "string" + } + }, + "required": [ + "tokenEndpoint", + "clientIdRef", + "clientAssertionKeyRef", + "assertionAudience", + "resource", + "scopes" + ], + "type": "object" + }, + "RawSqlRoles": { + "additionalProperties": false, + "properties": { + "migration": { + "maxLength": 63, + "minLength": 1, + "pattern": "^[_a-z][_a-z0-9]{0,62}$", + "type": "string" + }, + "runtime": { + "maxLength": 63, + "minLength": 1, + "pattern": "^[_a-z][_a-z0-9]{0,62}$", + "type": "string" + } + }, + "required": [ + "migration", + "runtime" + ], + "type": "object" + }, + "RawWasmExecutionConfig": { + "additionalProperties": false, + "properties": { + "backend": { + "default": "pulley", + "description": "The backend handler modules are compiled and executed for: `pulley`\n(default, the portable interpreter target) or `native`. Any other\nvalue is refused as an invalid `wasmExecution` section.", + "type": "string" + }, + "maximumGuestMemoryBytes": { + "default": 33554432, + "description": "Defaults to the platform guest-memory ceiling (32 MiB).", + "format": "uint64", + "maximum": 1073741824, + "minimum": 1048576, + "type": "integer" + }, + "maximumModuleBytes": { + "default": 2097152, + "description": "Defaults to the default execution-time module ceiling (2 MiB); the\nstructural admission ceiling (5 MiB) is operator-reachable here.", + "format": "uint64", + "maximum": 5242880, + "minimum": 1024, + "type": "integer" + } + }, + "type": "object" + }, + "SecretProvidersConfig": { + "additionalProperties": false, + "anyOf": [ + { + "properties": { + "file": { + "$ref": "#/$defs/FileSecretProviderConfig" + } + }, + "required": [ + "file" + ] + }, + { + "properties": { + "environment": { + "$ref": "#/$defs/EnvironmentSecretProviderConfig" + } + }, + "required": [ + "environment" + ] + } + ], + "description": "The secret providers a runtime enables. A reference is resolved only by a\nprovider declared here: `secret:file/name` under `file.root`, and\n`secret:env/NAME` only when `environment: {}` is present.", + "properties": { + "environment": { + "$ref": "#/$defs/EnvironmentSecretProviderConfig", + "description": "Enables `secret:env/NAME` references, read from the process\nenvironment. Declared as an empty mapping: `environment: {}`." + }, + "file": { + "$ref": "#/$defs/FileSecretProviderConfig", + "description": "Enables `secret:file/name` references, read from files under `root`." + } + }, + "type": "object" + }, + "SecretReference": { + "description": "An exact secret reference: secret:file/name, resolved under secretProviders.file.root, or secret:env/NAME, resolved only when secretProviders.environment is declared.", + "pattern": "^(?:secret:env/[A-Z][A-Z0-9_]{0,127}|secret:file/[a-z][a-z0-9._-]{0,127})$", + "type": "string" + }, + "TaskGrantStatusConfig": { + "additionalProperties": false, + "description": "One task authority whose grants a runtime checks for fresh status, and the\nruntime's own credentials for that check, written as one entry of\n`taskGrantStatus`. The status route and scope default to Casework's.", + "properties": { + "baseUrl": { + "$ref": "#/$defs/Url", + "description": "The authority's base URL the status check calls. It is `https`;\n`http` is accepted only for a loopback host, for local development." + }, + "caBundleRef": { + "$ref": "#/$defs/SecretReference", + "description": "PEM CA bundle for the authority and its token endpoint. Omitted, the\nplatform's trusted roots verify them." + }, + "clientAssertionAudience": { + "$ref": "#/$defs/ExternalId" + }, + "clientId": { + "$ref": "#/$defs/ExternalId" + }, + "privateKeyRef": { + "$ref": "#/$defs/SecretReference" + }, + "sourceIssuer": { + "$ref": "#/$defs/ExternalId", + "description": "The task authority's issuer, exactly as the authority states it,\nincluding an absolute URN issuer. It is compared rather than fetched\nand must be an absolute resource URI." + }, + "statusPath": { + "default": "/v1/task-grants/{grantId}/status", + "description": "The status route appended to `baseUrl`'s path. It starts with `/` and\nhas exactly one whole `{grantId}` segment; every other segment uses\nonly letters, digits, `-`, `.`, `_`, and `~`. Omitted,\n`/v1/task-grants/{grantId}/status`.", + "type": "string" + }, + "statusResource": { + "$ref": "#/$defs/ExternalId", + "description": "The audience the runtime requests its status credential for, an\nabsolute resource URI." + }, + "statusScope": { + "$ref": "#/$defs/ExternalId", + "default": "casework:grants:status", + "description": "The one scope the runtime requests its status credential with.\nOmitted, `casework:grants:status`." + }, + "tokenEndpoint": { + "$ref": "#/$defs/Url" + } + }, + "required": [ + "sourceIssuer", + "baseUrl", + "tokenEndpoint", + "clientAssertionAudience", + "clientId", + "privateKeyRef", + "statusResource" + ], + "type": "object" + }, + "Url": { + "description": "An absolute http or https URL with a host preserved as written, no user information, and no backslash, whitespace or control character. DNS case and equivalent IPv6 literals are permitted.", + "format": "uri", + "maxLength": 2048, + "pattern": "^[Hh][Tt][Tt][Pp][Ss]?://[^/?#@\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]+([/?#][^\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]*)?$", + "type": "string" + } + }, + "$id": "https://id.registrystack.org/schemas/breg/runtime/runtime.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/breg/runtime/v1alpha1", + "type": "string" + }, + "attachmentStorage": { + "$ref": "#/$defs/RawAttachmentStorageConfig", + "default": { + "type": "database" + }, + "description": "Defaults to PostgreSQL; S3 requires a bucket with versioning never enabled." + }, + "attachmentVerification": { + "$ref": "#/$defs/RawAttachmentVerificationConfig", + "default": { + "type": "disabled" + }, + "description": "Optional external verdict hook. Disabled by default." + }, + "audit": { + "$ref": "#/$defs/RawAuditConfig" + }, + "authentication": { + "$ref": "#/$defs/RawAuthenticationConfig" + }, + "cursor": { + "$ref": "#/$defs/RawCursorConfig" + }, + "database": { + "$ref": "#/$defs/RawRegistryDatabase" + }, + "destinations": { + "$ref": "#/$defs/RawDestinationsConfig", + "description": "Outbound destination bindings. Absent by default, which binds no\ndestination." + }, + "evidenceProviders": { + "additionalProperties": { + "$ref": "#/$defs/EvidenceProviderConfig" + }, + "default": {}, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "fieldEncryption": { + "$ref": "#/$defs/RawFieldEncryptionConfig", + "default": {}, + "description": "Optional field-encryption data-key provider. Absent by default, which\nserves unencrypted entities only." + }, + "identity": { + "$ref": "#/$defs/RawDeploymentIdentity" + }, + "kind": { + "const": "BRegRuntimeConfig", + "type": "string" + }, + "listener": { + "$ref": "#/$defs/RawRegistryListener" + }, + "logLevel": { + "$ref": "#/$defs/LogLevel", + "default": "info", + "description": "Operational log level when `BREG_LOG` is not set. Defaults to `info`;\naccepted values are `error`, `warn`, and `info`." + }, + "metricsListener": { + "$ref": "#/$defs/RawMetricsListenerConfig", + "description": "Optional operator-private metrics listener. Absent by default, which\nserves no metrics surface at all." + }, + "operationalTimeouts": { + "$ref": "#/$defs/RawOperationalTimeouts", + "default": { + "httpRequestMilliseconds": 10000, + "migrationLockMilliseconds": 30000, + "migrationStatementMilliseconds": 60000, + "recordLockMilliseconds": 5000, + "shutdownGraceMilliseconds": 30000 + }, + "description": "Optional operational request, shutdown, locking, and migration timeout tuning." + }, + "package": { + "$ref": "#/$defs/RawPackageConfig" + }, + "retention": { + "$ref": "#/$defs/RawRetentionConfig", + "default": { + "hookPayloadRetentionDays": 7, + "receiptRetentionDays": 7 + }, + "description": "Optional retention windows for idempotency receipts and retained\nevent payloads. Defaults to a seven-day receipt horizon and the\nserver's bounded payload retention policy." + }, + "reviewAuthorities": { + "additionalProperties": { + "$ref": "#/$defs/RawReviewAuthorityConfig" + }, + "default": {}, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "secretProviders": { + "$ref": "#/$defs/SecretProvidersConfig" + }, + "taskGrantStatus": { + "default": [], + "items": { + "$ref": "#/$defs/TaskGrantStatusConfig" + }, + "type": "array" + }, + "wasmExecution": { + "$ref": "#/$defs/RawWasmExecutionConfig", + "default": { + "backend": "pulley", + "maximumGuestMemoryBytes": 33554432, + "maximumModuleBytes": 2097152 + }, + "description": "Optional WASM handler execution budgets. Parsed in every build;\nexecuted only in builds with the `wasm` cargo feature, on by default." + } + }, + "required": [ + "apiVersion", + "kind", + "listener", + "identity", + "secretProviders", + "database", + "package", + "authentication", + "audit", + "cursor" + ], + "title": "Base Registry Engine runtime configuration", + "type": "object" +} diff --git a/public/artifacts/sha256/87a1a61127de6eb20c130f17b2d804c8b209c7343e7e4275f480f37833b83fcf.json b/public/artifacts/sha256/87a1a61127de6eb20c130f17b2d804c8b209c7343e7e4275f480f37833b83fcf.json new file mode 100644 index 000000000..a301f6f72 --- /dev/null +++ b/public/artifacts/sha256/87a1a61127de6eb20c130f17b2d804c8b209c7343e7e4275f480f37833b83fcf.json @@ -0,0 +1,1341 @@ +{ + "$defs": { + "CaseworkActsAs": { + "enum": [ + "staff", + "supervisor", + "administrator", + "requester" + ], + "type": "string" + }, + "ClockReassignment": { + "additionalProperties": false, + "properties": { + "queue": { + "type": "string" + } + }, + "required": [ + "queue" + ], + "type": "object" + }, + "ClockStep": { + "additionalProperties": false, + "properties": { + "action": { + "$ref": "#/$defs/ClockStepAction" + }, + "at": { + "$ref": "#/$defs/ClockStepInstant" + }, + "because": { + "$ref": "#/$defs/DisplayText" + }, + "id": { + "$ref": "#/$defs/LocalId" + } + }, + "required": [ + "id", + "because", + "at", + "action" + ], + "type": "object" + }, + "ClockStepAction": { + "additionalProperties": false, + "properties": { + "reassign": { + "$ref": "#/$defs/ClockReassignment" + } + }, + "required": [ + "reassign" + ], + "type": "object" + }, + "ClockStepInstant": { + "enum": [ + "due" + ], + "type": "string" + }, + "ContentDigest": { + "maxLength": 71, + "minLength": 71, + "pattern": "^sha256:[0-9a-f]{64}$", + "type": "string" + }, + "Digest": { + "description": "A SHA-256 digest: `sha256:` followed by 64 lowercase hex digits.", + "pattern": "^sha256:[0-9a-f]{64}$", + "type": "string" + }, + "DisplayText": { + "description": "Human-readable display text. Bidirectional embedding, override, and isolate controls, byte-order marks, line and paragraph separators, and Unicode noncharacters are refused; multilingual joiners and direction marks remain valid.", + "not": { + "pattern": "[

‪-‮⁦-⁩﷐-﷯￾￿]|🿾|🿿|𯿾|𯿿|𿿾|𿿿|񏿾|񏿿|񟿾|񟿿|񯿾|񯿿|񿿾|񿿿|򏿾|򏿿|򟿾|򟿿|򯿾|򯿿|򿿾|򿿿|󏿾|󏿿|󟿾|󟿿|󯿾|󯿿|󿿾|󿿿|􏿾|􏿿" + }, + "type": "string" + }, + "ElapsedDuration": { + "description": "An elapsed budget in exactly one unit; a day is 24 elapsed hours.", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "minutes": { + "format": "uint32", + "maximum": 5256000, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "minutes" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "hours": { + "format": "uint32", + "maximum": 87600, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "hours" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "days": { + "format": "uint32", + "maximum": 3650, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "days" + ], + "type": "object" + } + ] + }, + "EvidenceRequesterContext": { + "additionalProperties": false, + "properties": { + "audience": { + "type": "string" + }, + "requesterTags": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "requesterTags", + "audience" + ], + "type": "object" + }, + "ExternalId": { + "description": "An identifier another system issues, written exactly as its issuer gives it.", + "maxLength": 512, + "minLength": 1, + "pattern": "^[^\\u0000-\\u001F\\u007F-\\u009F]+$", + "type": "string" + }, + "InboxPolicy": { + "additionalProperties": false, + "properties": { + "defaultPageSize": { + "default": 25, + "format": "uint32", + "maximum": 100, + "minimum": 1, + "type": "integer" + }, + "maximumCandidateScan": { + "default": 100, + "format": "uint32", + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "maximumConcurrentSourceReads": { + "default": 4, + "format": "uint32", + "maximum": 32, + "minimum": 1, + "type": "integer" + }, + "maximumSourceReads": { + "default": 25, + "format": "uint32", + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "pageDeadlineMilliseconds": { + "default": 2000, + "format": "uint64", + "maximum": 30000, + "minimum": 100, + "type": "integer" + } + }, + "type": "object" + }, + "LocalId": { + "description": "A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.", + "pattern": "^[a-z][a-z0-9_-]{0,63}$", + "type": "string" + }, + "ProducerRetention": { + "additionalProperties": false, + "description": "How long Casework keeps what a producer needs to recover a submission.", + "properties": { + "receiptRetentionDays": { + "description": "Days a submission receipt stays readable for recovery, at most 365.", + "format": "uint32", + "maximum": 365, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "receiptRetentionDays" + ], + "type": "object" + }, + "ProjectIdentity": { + "additionalProperties": false, + "description": "The members that name a project (CFG-ENV-6): a project's `project` block\nholds these, and may add project-wide members of the product's own.\nSchema name `ProjectIdentity`.", + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "version": { + "type": "string" + } + }, + "required": [ + "id", + "version" + ], + "type": "object" + }, + "ReviewCompletionDestinationPolicy": { + "additionalProperties": false, + "properties": { + "destinationId": { + "type": "string" + }, + "recipientBinding": { + "type": "string" + } + }, + "required": [ + "destinationId", + "recipientBinding" + ], + "type": "object" + }, + "ReviewContextCapability": { + "enum": [ + "human-display", + "service-status", + "task-grant-context", + "routing-context" + ], + "type": "string" + }, + "ReviewContextContract": { + "additionalProperties": false, + "properties": { + "id": { + "$ref": "#/$defs/ExternalId", + "description": "The producer-issued contract id, kept exactly as written: nonblank, no control characters, and at most 256 UTF-8 bytes. The byte ceiling is enforced by the Casework reader.", + "maxLength": 256, + "pattern": "\\S", + "x-registry-maxBytes": 256 + }, + "revision": { + "$ref": "#/$defs/ContentDigest" + }, + "schemaDigest": { + "$ref": "#/$defs/Digest" + } + }, + "required": [ + "id", + "revision", + "schemaDigest" + ], + "type": "object" + }, + "ReviewContextPolicy": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "mode": { + "const": "submitted", + "type": "string" + } + }, + "required": [ + "mode" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "contract": { + "$ref": "#/$defs/ReviewContextContract" + }, + "mode": { + "const": "current-source", + "type": "string" + }, + "provider": { + "type": "string" + } + }, + "required": [ + "mode", + "provider", + "contract" + ], + "type": "object" + } + ] + }, + "ReviewNegativeDecisionMode": { + "oneOf": [ + { + "const": "settle", + "description": "A rejection or change request settles the whole review immediately.", + "type": "string" + }, + { + "const": "advise", + "description": "A negative decision counts toward this stage and the review continues.", + "type": "string" + } + ] + }, + "ReviewOutcomeSettlement": { + "enum": [ + "approved", + "rejected", + "changes-requested", + "answered" + ], + "type": "string" + }, + "ReviewPublicReasonRule": { + "description": "Whether a decision gives a public reason with an outcome.", + "enum": [ + "required", + "optional", + "none" + ], + "type": "string" + }, + "ReviewPurpose": { + "enum": [ + "approval", + "answer" + ], + "type": "string" + }, + "ReviewRetentionPolicy": { + "additionalProperties": false, + "properties": { + "accountabilityRetentionDays": { + "format": "uint32", + "maximum": 3650, + "minimum": 1, + "type": "integer" + }, + "terminalRetentionDays": { + "format": "uint32", + "maximum": 3650, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "terminalRetentionDays", + "accountabilityRetentionDays" + ], + "type": "object" + }, + "ReviewStagePolicy": { + "additionalProperties": false, + "properties": { + "decidingProfiles": { + "items": { + "type": "string" + }, + "type": "array" + }, + "excludeInitiator": { + "default": false, + "type": "boolean" + }, + "excludePreviousStageReviewers": { + "default": false, + "type": "boolean" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "label": { + "$ref": "#/$defs/DisplayText", + "description": "Optional presentation label. Stable references use `id`." + }, + "negativeDecisions": { + "$ref": "#/$defs/ReviewNegativeDecisionMode", + "default": "settle", + "description": "Controls whether a rejection or change request settles the whole review.\n`settle` is the default; `advise` records and counts the decision toward\nthis non-final stage without settling the review." + }, + "queue": { + "type": "string" + }, + "requiredApprovals": { + "format": "uint32", + "maximum": 32, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "id", + "queue", + "decidingProfiles", + "requiredApprovals" + ], + "type": "object" + }, + "RoutingCondition": { + "additionalProperties": false, + "properties": { + "fields": { + "additionalProperties": { + "$ref": "#/$defs/RoutingPredicate" + }, + "propertyNames": { + "$ref": "#/$defs/ExternalId" + }, + "type": "object" + }, + "stage": { + "type": "string" + } + }, + "type": "object" + }, + "RoutingPredicate": { + "description": "The written form of [`RoutingPredicate`], an externally tagged union the\nshared reader decodes with positions.", + "oneOf": [ + { + "additionalProperties": false, + "description": "The projected field equals this value.", + "properties": { + "equals": true + }, + "required": [ + "equals" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "The projected field equals one of these values.", + "properties": { + "oneOf": { + "items": true, + "type": "array" + } + }, + "required": [ + "oneOf" + ], + "type": "object" + } + ] + }, + "RoutingRule": { + "additionalProperties": false, + "properties": { + "because": { + "$ref": "#/$defs/DisplayText" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "label": { + "$ref": "#/$defs/DisplayText", + "description": "Optional presentation label. Stable references use `id`." + }, + "queue": { + "type": "string" + }, + "when": { + "$ref": "#/$defs/RoutingCondition" + } + }, + "required": [ + "id", + "because", + "when", + "queue" + ], + "type": "object" + }, + "SchedulingTaskPermission": { + "additionalProperties": false, + "description": "Exact Scheduling commitment authority copied into a task grant.\n\nThis duplicates the public wire shape deliberately: Casework is an\nauthority for governed templates, not a dependency on Scheduling's runtime\nor model crate.", + "properties": { + "actions": { + "items": { + "type": "string" + }, + "type": "array" + }, + "location": { + "type": "string" + }, + "service": { + "type": "string" + } + }, + "required": [ + "service", + "location", + "actions" + ], + "type": "object" + }, + "StageClockAnchor": { + "additionalProperties": false, + "description": "The instant a stage clock counts from: `anchor: {type: stage-entered}`.", + "properties": { + "type": { + "$ref": "#/$defs/StageClockAnchorType" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + "StageClockAnchorType": { + "enum": [ + "stage-entered" + ], + "type": "string" + }, + "SubjectClockAnchor": { + "additionalProperties": false, + "description": "The instant a subject clock counts from: `anchor: {type: request-accepted}`.", + "properties": { + "type": { + "$ref": "#/$defs/SubjectClockAnchorType" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + "SubjectClockAnchorType": { + "enum": [ + "request-accepted" + ], + "type": "string" + }, + "TaskAuthorizationMode": { + "enum": [ + "immediate", + "deferred" + ], + "type": "string" + }, + "TaskGrantBounds": { + "description": "The product-specific authority a task grant carries, chosen by its `type`\nmember. The shared reader's union helper decodes it so every error inside\na variant keeps its position (CFG-SCHEMA-8); the wire form is unchanged.", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "requirement": { + "type": "string" + }, + "type": { + "const": "evidence", + "type": "string" + } + }, + "required": [ + "type", + "requirement" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "permissions": { + "items": { + "$ref": "#/$defs/TaskPermission" + }, + "type": "array" + }, + "type": { + "const": "breg", + "type": "string" + } + }, + "required": [ + "type", + "permissions" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "permissions": { + "items": { + "$ref": "#/$defs/SchedulingTaskPermission" + }, + "type": "array" + }, + "type": { + "const": "scheduling", + "type": "string" + } + }, + "required": [ + "type", + "permissions" + ], + "type": "object" + } + ] + }, + "TaskPermission": { + "additionalProperties": false, + "properties": { + "collection": { + "type": "string" + }, + "operations": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "collection", + "operations" + ], + "type": "object" + }, + "TemplateAgent": { + "additionalProperties": false, + "description": "The agent a template names, as `casework.yaml` writes it: the issuer is\nthe URL of the token issuer that authenticates the agent (CFG-VAL-7).", + "properties": { + "issuer": { + "$ref": "#/$defs/Url" + }, + "subject": { + "type": "string" + } + }, + "required": [ + "issuer", + "subject" + ], + "type": "object" + }, + "Url": { + "description": "An absolute http or https URL with a host preserved as written, no user information, and no backslash, whitespace or control character. DNS case and equivalent IPv6 literals are permitted.", + "format": "uri", + "maxLength": 2048, + "pattern": "^[Hh][Tt][Tt][Pp][Ss]?://[^/?#@\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]+([/?#][^\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]*)?$", + "type": "string" + }, + "WorkingDays": { + "additionalProperties": false, + "description": "A number of working days: `after: {workingDays: N}`, and the lead time\ninside `before`.", + "properties": { + "workingDays": { + "format": "uint32", + "maximum": 3650, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "workingDays" + ], + "type": "object" + }, + "WorkingDaysBefore": { + "additionalProperties": false, + "description": "A lead time before a stage clock is due: `{before: {workingDays: N}}`.", + "properties": { + "before": { + "$ref": "#/$defs/WorkingDays" + } + }, + "required": [ + "before" + ], + "type": "object" + }, + "WorkingWeekday": { + "enum": [ + "monday", + "tuesday", + "wednesday", + "thursday", + "friday", + "saturday", + "sunday" + ], + "type": "string" + } + }, + "$id": "https://id.registrystack.org/schemas/casework/project/project.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "accessProfiles": { + "additionalProperties": { + "additionalProperties": false, + "properties": { + "actsAs": { + "$ref": "#/$defs/CaseworkActsAs" + }, + "description": { + "$ref": "#/$defs/DisplayText", + "description": "What the profile is for, accepted for authoring and tooling; never matched against a caller. Part of the review policy description, which any caller who may read that description can see." + }, + "label": { + "$ref": "#/$defs/DisplayText", + "description": "A name for the profile, accepted for authoring and tooling; never matched against a caller. Part of the review policy description, which any caller who may read that description can see." + }, + "principalClaim": { + "type": "string" + }, + "requiredScopes": { + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "principalClaim", + "requiredScopes", + "actsAs" + ], + "type": "object" + }, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "apiVersion": { + "const": "id.registrystack.org/formats/casework/project/v1alpha1", + "type": "string" + }, + "calendars": { + "additionalProperties": { + "additionalProperties": false, + "properties": { + "holidaySet": { + "type": "string" + }, + "timezone": { + "type": "string" + }, + "workingWeekdays": { + "items": { + "$ref": "#/$defs/WorkingWeekday" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "timezone", + "workingWeekdays", + "holidaySet" + ], + "type": "object" + }, + "default": {}, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "clocks": { + "additionalProperties": { + "description": "The serialized form of [`ClockPolicy`]: the shape the serializer emits.", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "after": { + "$ref": "#/$defs/ElapsedDuration" + }, + "anchor": { + "$ref": "#/$defs/SubjectClockAnchor" + }, + "type": { + "const": "subject", + "type": "string" + } + }, + "required": [ + "type", + "anchor", + "after" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "after": { + "$ref": "#/$defs/WorkingDays" + }, + "anchor": { + "$ref": "#/$defs/StageClockAnchor" + }, + "atRisk": { + "$ref": "#/$defs/WorkingDaysBefore" + }, + "calendar": { + "type": "string" + }, + "dueTime": { + "type": "string" + }, + "reminders": { + "additionalProperties": { + "additionalProperties": false, + "description": "A named reminder, written `reminders: {ID: {before: {workingDays: N}}}`.", + "properties": { + "before": { + "$ref": "#/$defs/WorkingDays" + } + }, + "required": [ + "before" + ], + "type": "object" + }, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "steps": { + "items": { + "$ref": "#/$defs/ClockStep" + }, + "type": "array" + }, + "type": { + "const": "stage", + "type": "string" + } + }, + "required": [ + "type", + "anchor", + "calendar", + "after", + "dueTime" + ], + "type": "object" + } + ] + }, + "default": {}, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "contextProviders": { + "additionalProperties": { + "additionalProperties": false, + "properties": { + "capabilities": { + "items": { + "$ref": "#/$defs/ReviewContextCapability" + }, + "type": "array", + "uniqueItems": true + }, + "deploymentRef": { + "type": "string" + }, + "description": { + "type": "string" + }, + "serviceProfiles": { + "additionalProperties": false, + "default": {}, + "properties": { + "human-display": { + "type": "string" + }, + "routing-context": { + "type": "string" + }, + "service-status": { + "type": "string" + }, + "task-grant-context": { + "type": "string" + } + }, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "sourceNamespace": { + "type": "string" + } + }, + "required": [ + "capabilities", + "sourceNamespace", + "deploymentRef" + ], + "type": "object" + }, + "default": {}, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "inbox": { + "$ref": "#/$defs/InboxPolicy", + "default": { + "defaultPageSize": 25, + "maximumCandidateScan": 100, + "maximumConcurrentSourceReads": 4, + "maximumSourceReads": 25, + "pageDeadlineMilliseconds": 2000 + } + }, + "kind": { + "const": "CaseworkProject", + "type": "string" + }, + "project": { + "$ref": "#/$defs/ProjectIdentity" + }, + "queues": { + "additionalProperties": { + "additionalProperties": false, + "properties": { + "label": { + "$ref": "#/$defs/DisplayText" + } + }, + "required": [ + "label" + ], + "type": "object" + }, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "reviewPolicies": { + "additionalProperties": { + "additionalProperties": false, + "properties": { + "clocks": { + "items": { + "type": "string" + }, + "type": "array" + }, + "context": { + "$ref": "#/$defs/ReviewContextPolicy" + }, + "displaySchema": { + "x-registry-foreign": "json-schema-2020-12" + }, + "label": { + "$ref": "#/$defs/DisplayText", + "description": "Optional presentation label. Stable references use `id`." + }, + "outcomes": { + "additionalProperties": { + "additionalProperties": false, + "properties": { + "label": { + "$ref": "#/$defs/DisplayText" + }, + "publicReason": { + "$ref": "#/$defs/ReviewPublicReasonRule", + "description": "Whether a decision with this outcome gives text for release to the\nsubject's owner. There is no default: the policy author decides what\nan applicant is told." + }, + "reasonRequired": { + "type": "boolean" + }, + "resultRequired": { + "type": "boolean" + }, + "settlement": { + "$ref": "#/$defs/ReviewOutcomeSettlement" + } + }, + "required": [ + "label", + "settlement", + "reasonRequired", + "publicReason" + ], + "type": "object" + }, + "description": "Written in configuration as a mapping from each outcome id; served\nas a list by id.", + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "purpose": { + "$ref": "#/$defs/ReviewPurpose" + }, + "resultSchema": { + "x-registry-foreign": "json-schema-2020-12" + }, + "retention": { + "$ref": "#/$defs/ReviewRetentionPolicy" + }, + "routing": { + "items": { + "$ref": "#/$defs/RoutingRule" + }, + "type": "array" + }, + "stages": { + "items": { + "$ref": "#/$defs/ReviewStagePolicy" + }, + "type": "array" + }, + "version": { + "type": "string" + } + }, + "required": [ + "version", + "purpose", + "context", + "stages", + "retention", + "displaySchema" + ], + "type": "object" + }, + "default": {}, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "taskTemplates": { + "additionalProperties": { + "additionalProperties": false, + "allOf": [ + { + "else": { + "properties": { + "lifetimeSeconds": { + "maximum": 900 + } + } + }, + "if": { + "properties": { + "authorizationMode": { + "const": "deferred" + } + }, + "required": [ + "authorizationMode" + ] + }, + "then": { + "properties": { + "lifetimeSeconds": { + "maximum": 604800 + } + } + } + }, + { + "if": { + "properties": { + "authorizationMode": { + "const": "deferred" + } + }, + "required": [ + "authorizationMode" + ] + }, + "then": { + "properties": { + "bounds": { + "properties": { + "type": { + "not": { + "const": "evidence" + } + } + } + } + } + } + } + ], + "properties": { + "agent": { + "$ref": "#/$defs/TemplateAgent" + }, + "authorizationMode": { + "$ref": "#/$defs/TaskAuthorizationMode", + "description": "Immediate authorizations last at most fifteen minutes. Deferred is an\nexplicit governed window of at most seven days; assertion TTL stays sixty seconds." + }, + "bounds": { + "$ref": "#/$defs/TaskGrantBounds" + }, + "client": { + "type": "string" + }, + "eligibleProfiles": { + "items": { + "type": "string" + }, + "type": "array" + }, + "eligibleTeams": { + "items": { + "type": "string" + }, + "type": "array" + }, + "evidenceContext": { + "$ref": "#/$defs/EvidenceRequesterContext", + "description": "Evidence-only requester context signed into the authority assertion.\nOther products derive neither requester admission nor relying-party\naudience from these fields and therefore forbid the block entirely." + }, + "label": { + "$ref": "#/$defs/DisplayText" + }, + "lifetimeSeconds": { + "format": "uint64", + "maximum": 604800, + "minimum": 1, + "type": "integer" + }, + "purpose": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "reviewPolicies": { + "description": "Policies whose currently held ReviewTasks may issue this grant.", + "items": { + "type": "string" + }, + "type": "array" + }, + "scopes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "source": { + "type": "string" + }, + "subjects": { + "additionalProperties": { + "type": "string" + }, + "description": "Exact token identity keys mapped to governed source logical fields.\nValues are extracted from the approving caller's disclosed source read.", + "propertyNames": { + "$ref": "#/$defs/ExternalId" + }, + "type": "object" + }, + "version": { + "type": "string" + } + }, + "required": [ + "version", + "label", + "eligibleTeams", + "eligibleProfiles", + "source", + "agent", + "client", + "resource", + "scopes", + "purpose", + "bounds", + "subjects", + "lifetimeSeconds" + ], + "type": "object" + }, + "default": {}, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "teams": { + "additionalProperties": { + "additionalProperties": false, + "properties": { + "label": { + "$ref": "#/$defs/DisplayText" + }, + "memberProfiles": { + "items": { + "type": "string" + }, + "type": "array" + }, + "serves": { + "items": { + "type": "string" + }, + "type": "array" + }, + "supervisorProfiles": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "label", + "serves", + "memberProfiles", + "supervisorProfiles" + ], + "type": "object" + }, + "default": {}, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "trustedProducers": { + "additionalProperties": { + "additionalProperties": false, + "properties": { + "completion": { + "$ref": "#/$defs/ReviewCompletionDestinationPolicy" + }, + "initiatorProfile": { + "description": "The requester profile a person named as this producer's initiator\nauthenticates with to read the requester-visible history of their own\nrequests. Absent, no initiator reads anything.", + "type": "string" + }, + "issuer": { + "$ref": "#/$defs/Url" + }, + "profile": { + "type": "string" + }, + "retention": { + "$ref": "#/$defs/ProducerRetention" + }, + "reviewPolicies": { + "items": { + "type": "string" + }, + "type": "array" + }, + "sourceNamespaces": { + "items": { + "type": "string" + }, + "type": "array" + }, + "subject": { + "type": "string" + }, + "trustedInitiatorIssuer": { + "$ref": "#/$defs/Url" + } + }, + "required": [ + "profile", + "issuer", + "subject", + "sourceNamespaces", + "reviewPolicies", + "retention" + ], + "type": "object" + }, + "default": {}, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + } + }, + "required": [ + "apiVersion", + "kind", + "project", + "accessProfiles", + "queues" + ], + "title": "Registry Casework project", + "type": "object" +} diff --git a/public/artifacts/sha256/89428c7c4d08555b71f3d7476a45e2439fd0d2ba4b97eae6ee18be78fcbf8e3e.yaml b/public/artifacts/sha256/89428c7c4d08555b71f3d7476a45e2439fd0d2ba4b97eae6ee18be78fcbf8e3e.yaml new file mode 100644 index 000000000..6617b114b --- /dev/null +++ b/public/artifacts/sha256/89428c7c4d08555b71f3d7476a45e2439fd0d2ba4b97eae6ee18be78fcbf8e3e.yaml @@ -0,0 +1,2294 @@ +$schema: https://json-schema.org/draft/2020-12/schema +$id: https://id.registrystack.org/schemas/evidence/bundle/bundle.v1.schema.json +title: Evidence governed package configuration Version 1 +type: object +additionalProperties: false +required: + - apiVersion + - kind + - assuranceProfile + - service + - issuer + - authentication + - audit + - subjectBinding + - rateLimits + - signing + - selectorProfiles + - sourceConnections + - sources + - authorityProfiles + - requirements +properties: + apiVersion: + description: >- + Names the package configuration grammar the rest of this document is read against; the + runtime refuses any other value at startup, so a future incompatible grammar is never read + as if it were this one. + const: id.registrystack.org/formats/evidence/bundle/v1 + kind: + description: >- + Names the document type; together with `apiVersion` it tells a governed package + configuration apart from every other Registry Stack file. + const: EvidenceBundle + acquisitionCapabilities: + description: >- + Retired. An empty list is accepted, and ignored, for one release so a file written for + 0.44 still loads; any capability is refused. Delete the member: a Source binds a reviewed + Adapter pack route, and the pack declares how it reads. + deprecated: true + type: array + maxItems: 0 + project: + description: >- + Stable normalized EvidenceProject identifier. A package carrying this identifier + contains no authority profiles; startup captures a separately activated target + authority for this project and exact package digest. Each definition declares all + grant-ceiling dimensions and its representation ceiling. + $ref: '#/$defs/LocalId' + assuranceProfile: + description: >- + Declares the governed assurance boundary of the whole package, and the value is visible + in every assertion, so an authentic `local` assertion never satisfies a relying procedure + expecting a deployable profile. `local` is an authoring profile that lets a requirement + omit `fixtures` and disables no other runtime boundary; the deployable profiles require + every requirement to reference a fixture suite with complete coverage before the package + loads. + enum: + - local + - production + - evidence-grade + service: + description: >- + Carries the identity this deployment asserts under: the technical Evidence provider + identity placed in evidence and the operator-controlled trust domain of the process. + type: object + additionalProperties: false + required: + - providerId + - publicOrigin + - trustDomain + properties: + providerId: + description: >- + Technical provider URI placed in every assertion as `providedBy`. Enabling `sd-jwt-vc` + outside local assurance requires this value to be the stable HTTPS origin of the + deployment, because issuer metadata and the published JWKS URI are derived from + that origin. + type: string + format: uri + maxLength: 512 + publicOrigin: + description: >- + Exact public origin of this Evidence protected resource. Production and + evidence-grade deployments require a canonical HTTPS origin. The local + assurance profile also permits canonical HTTP on numeric 127.0.0.1 with + an explicit non-zero port for supervised tutorials. + $ref: '#/$defs/Url' + maxLength: 512 + trustDomain: + description: >- + Scopes the process to one operator-controlled trust domain, whose URI is bound into + subject bindings and into requester pseudonym scope, so the same subject yields + different pseudonyms under a different trust domain. + type: string + format: uri + maxLength: 512 + issuer: + description: >- + Carries the legal issuer identity placed in every assertion, kept separate from the + technical provider that operates the process and signs. + type: object + additionalProperties: false + required: + - uri + properties: + uri: + description: >- + Legal issuer URI placed in every assertion as `issuedBy`, and governance must authorize + the provider named in `service.providerId` to act for that issuer. + $ref: '#/$defs/uri' + publication: + description: >- + Optional provider-authored public facts that cannot be derived from the governed service, + issuer, response-format, binding-mode, and Evidence Type inventory. When present, the + runtime publishes one deterministic closed Registry Discovery description. + type: object + additionalProperties: false + required: + - serviceId + - title + - description + - endpointUrl + - jurisdictions + properties: + serviceId: {type: string, format: uri, maxLength: 512} + title: {type: string, minLength: 1, maxLength: 4096, pattern: '^[^\s\u0000-\u001F\u007F-\u009F](?:[^\u0000-\u001F\u007F-\u009F]*[^\s\u0000-\u001F\u007F-\u009F])?$', not: {pattern: '[\u2028\u2029\u202a-\u202e\u2066-\u2069\ufeff\ufdd0-\ufdef\ufffe\uffff]|🿾|🿿|𯿾|𯿿|𿿾|𿿿|񏿾|񏿿|񟿾|񟿿|񯿾|񯿿|񿿾|񿿿|򏿾|򏿿|򟿾|򟿿|򯿾|򯿿|򿿾|򿿿|󏿾|󏿿|󟿾|󟿿|󯿾|󯿿|󿿾|󿿿|􏿾|􏿿'}} + description: {type: string, minLength: 1, maxLength: 4096, pattern: '^[^\s\u0000-\u001F\u007F-\u009F](?:[^\u0000-\u001F\u007F-\u009F]*[^\s\u0000-\u001F\u007F-\u009F])?$', not: {pattern: '[\u2028\u2029\u202a-\u202e\u2066-\u2069\ufeff\ufdd0-\ufdef\ufffe\uffff]|🿾|🿿|𯿾|𯿿|𿿾|𿿿|񏿾|񏿿|񟿾|񟿿|񯿾|񯿿|񿿾|񿿿|򏿾|򏿿|򟿾|򟿿|򯿾|򯿿|򿿾|򿿿|󏿾|󏿿|󟿾|󟿿|󯿾|󯿿|󿿾|󿿿|􏿾|􏿿'}} + endpointUrl: + description: >- + Public URL Registry Discovery advertises for this Evidence service, with no query or + fragment. It requires HTTPS; the local assurance profile also permits HTTP on + localhost, 127.0.0.1, or [::1]. + $ref: '#/$defs/Url' + maxLength: 512 + jurisdictions: + type: array + minItems: 1 + maxItems: 128 + uniqueItems: true + items: {type: string, format: uri, maxLength: 512} + publisherId: {type: string, format: uri, maxLength: 512} + operatorId: {type: string, format: uri, maxLength: 512} + authentication: + description: >- + Verification policy for inbound bearer tokens: the runtime validates each token against + these values itself and ignores upstream identity headers. + $ref: '#/$defs/authentication' + audit: + description: >- + Governs audit pseudonymization for the whole deployment; `runtime.yaml` contributes only + the audit destination. + $ref: '#/$defs/audit' + subjectBinding: + description: >- + Keys the audience- and purpose-scoped subject bindings an assertion carries in place + of selector values, derived over the complete canonical role, profile, and value set + rather than as per-field hashes. + $ref: '#/$defs/subject-binding' + rateLimits: + description: >- + Governs the anti-enumeration budget for authenticated callers, counted against scoped + pseudonyms of the principal and the authority rather than against any raw selector value. + $ref: '#/$defs/rate-limits' + signing: + description: >- + Governs signature format, active and published key selection, key retirement, and assertion + validity; missing signing material fails readiness and no unsigned fallback exists. + type: object + additionalProperties: false + required: + - format + - algorithm + - activePublicJwkFile + - publishedPublicJwkFiles + - revokedKeyIds + - jwksPath + - maximumAssertionValiditySeconds + - verifierClockSkewSeconds + properties: + format: + description: >- + Fixes the wire serialization of a signed assertion to flattened JWS JSON, returned + as `application/jose+json`. + const: flattened-jws-json + algorithm: + description: >- + Binds assertion signatures to ES256 over P-256, and a verifier rejects any protected + header `alg` that differs from the algorithm bound to the trusted key. + const: ES256 + activePublicJwkFile: + description: >- + Names the bundle-held public JWK the runtime signer's key must equal exactly, proven + by one sign-and-verify test before readiness. + $ref: '#/$defs/public-jwk-path' + certificateChainFile: + description: >- + Optional PEM certificate chain, leaf first, certifying the active signing key; omission + means credentials and the served key set carry no `x5c`. The file is public material + named `public-keys/.chain.pem` for the active key's thumbprint, so a rotated or + revoked key's chain is never reused. Startup refuses a chain that does not parse, is + longer than the platform chain policy allows, has a leaf for a different key, or has + a certificate that is not valid at startup. Relying parties validate the chain to + their own trust anchors; Evidence's verifier only compares the leaf with a pinned key. + $ref: '#/$defs/certificate-chain-path' + publishedPublicJwkFiles: + description: >- + Retains predecessor public keys in the served key set so assertions signed before + a rollover still verify, for at least the maximum assertion validity plus the verifier + clock skew. + type: array + maxItems: 32 + uniqueItems: true + items: + description: >- + One retained public key served beside the active key; an entry that repeats the + active key or names a revoked identifier is rejected at startup. + $ref: '#/$defs/public-jwk-path' + revokedKeyIds: + description: >- + Emergency denylist: a listed identifier is excluded from the active set, the published + set, and the served key set, and a verifier rejects that identifier before selecting + a pinned public key. + type: array + maxItems: 33 + uniqueItems: true + items: + description: >- + One denied service key, named by its RFC 7638 thumbprint rather than by a provider-assigned + key name. + $ref: '#/$defs/service-key-id' + jwksPath: + description: >- + Route where the deployment serves its public key set; that route is not a trust + anchor, because a verifier pins the provider identity and key location through its + own governed configuration. + const: /.well-known/evidence/jwks.json + maximumAssertionValiditySeconds: + description: >- + Ceiling every `requirements[].validitySeconds` must stay within, and the base of + the window a retired public key stays published. + type: integer + minimum: 1 + maximum: 31536000 + verifierClockSkewSeconds: + description: >- + Skew a relying party applies when checking current validity, and the margin added + to the maximum assertion validity before a retired public key may be removed. + type: integer + minimum: 0 + maximum: 300 + responseFormats: + description: >- + Sets the deployment-wide ceiling of response serializations, and omission means `[signed-jws]`. + A bundle that drops signed JWS is rejected at startup, and every other listed format + additionally requires the one matched grant's `authorityProfiles.*.grants[].responseFormats` + to permit that format. + $ref: '#/$defs/response-formats' + selectorProfiles: + description: >- + Named registry of selector profiles that requirement subject roles and authority-grant + subjects reference by id; an id absent from the map fails validation before startup. + type: object + minProperties: 1 + maxProperties: 128 + propertyNames: + $ref: '#/$defs/LocalId' + additionalProperties: + description: >- + One named, closed profile of deployment-defined fields and their combined byte bound; + a profile is not an identity type, and possession of its field values does not by + itself grant authority. + $ref: '#/$defs/selector-profile' + sourceConnections: + description: >- + Reviewed non-secret destination, authentication-authority and trust policy for each + named source connection. Runtime material supplies matching credentials, endpoint + bindings and trust-anchor files without changing this governed authority. + type: object + minProperties: 1 + maxProperties: 128 + propertyNames: + $ref: '#/$defs/LocalId' + additionalProperties: + $ref: '#/$defs/source-connection' + sources: + description: >- + Complete map of pack-route bindings a requirement can reference by id in its + `acquisition` field, fixed at startup and immune to override by `runtime.yaml`. + type: object + minProperties: 1 + maxProperties: 128 + propertyNames: + $ref: '#/$defs/LocalId' + additionalProperties: + description: >- + One digest-pinned Adapter pack and route, the reviewed named connection it uses, + and the exact authorized selector fields projected into the route's named inputs. + $ref: '#/$defs/source' + authorityProfiles: + description: >- + Complete authority profiles for a legacy compiled bundle. A normalized project package + carries an empty map, and the runtime installs only the separately activated target + snapshot after package validation. Exactly one complete authority path may match; + overlapping paths deny rather than combining their permissions. + type: object + minProperties: 0 + maxProperties: 128 + propertyNames: + $ref: '#/$defs/LocalId' + additionalProperties: + description: >- + Everything one requester class may ask for. Access is per requester class rather than + per client identity, so two clients carrying the same tags have identical access. + $ref: '#/$defs/authority-profile' + maximumHolderBoundBatchSize: + description: >- + Ceiling on how many assertions one holder-bound release may carry. Omission means one, + so a bundle written before batch release cannot serve a batch; declaring a ceiling this + deployment never reaches enables nothing on its own, because each requirement still + needs its own holder-bound declaration and a grant that permits the mode. + type: integer + minimum: 1 + maximum: 16 + requirements: + description: >- + Requirement identifiers and Evidence Type URIs must each be unique across every entry; + a repeat of either rejects the whole bundle at startup. + type: array + minItems: 1 + maxItems: 128 + items: + description: >- + One independently versioned evidence definition; its configuration revision spans + only this requirement's own configuration and artifact closure, letting a relying + party pin this requirement without depending on the rest of the deployment. + $ref: '#/$defs/requirement' +allOf: + - if: + required: [project] + then: + properties: + authorityProfiles: {maxProperties: 0} + requirements: + items: + required: [grantCeiling, representations] + else: + properties: + authorityProfiles: {minProperties: 1} + - if: + properties: + assuranceProfile: + const: local + then: + properties: + authentication: + properties: + oidc: + properties: + issuer: + pattern: ^(?:https://.*|http://127\.0\.0\.1:[1-9][0-9]{0,4})$ + jwksSource: + properties: + uri: + # Local development permits a supervised issuer on the exact + # canonical loopback origin, serving its JWKS from that origin at + # any absolute path without query or fragment. The route is the + # issuer's to choose; the origin is not. + pattern: ^(?:https://.*|http://127\.0\.0\.1:[1-9][0-9]{0,4}/[^\s?#]*)$ + - if: + properties: + assuranceProfile: + enum: + - production + - evidence-grade + then: + properties: + authentication: + properties: + oidc: + properties: + issuer: + pattern: ^https:// + jwksSource: + properties: + uri: + pattern: ^https:// + sourceConnections: + additionalProperties: + properties: + endpoints: + items: + properties: + baseUrl: + pattern: '^[Hh][Tt][Tt][Pp][Ss]://' + requirements: + items: + required: + - fixtures + - if: + properties: + assuranceProfile: + enum: + - production + - evidence-grade + responseFormats: + contains: + enum: + - sd-jwt-vc + - sd-jwt-vc-batch + required: + - assuranceProfile + - responseFormats + then: + properties: + service: + properties: + providerId: + type: string + pattern: ^https://(?:[A-Za-z0-9.-]+|\[[0-9A-Fa-f:]+\])(?::[1-9][0-9]{0,4})?$ +$defs: + Digest: + type: string + pattern: ^sha256:[0-9a-f]{64}$ + description: 'A SHA-256 digest: `sha256:` followed by 64 lowercase hex digits.' + Url: + type: string + format: uri + maxLength: 2048 + pattern: '^[Hh][Tt][Tt][Pp][Ss]?://[^/?#@\u005C\u0000-\u0020\u007F-\u00A0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]+([/?#][^\u005C\u0000-\u0020\u007F-\u00A0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]*)?$' + description: An absolute http or https URL with a host preserved as written, no user information, and no backslash, whitespace or control character. DNS case and equivalent IPv6 literals are permitted. + ExternalId: + type: string + minLength: 1 + maxLength: 512 + pattern: "^[^\\u0000-\\u001F\\u007F-\\u009F]+$" + description: An identifier another system issues, written exactly as its issuer gives it. + LocalId: + type: string + pattern: ^[a-z][a-z0-9_-]{0,63}$ + description: 'A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.' + local-id: + type: string + pattern: ^[a-z][a-z0-9._-]{0,127}$ + uri: + type: string + format: uri + maxLength: 512 + response-formats: + # Closed enabled response formats. Signed flattened JWS is mandatory and + # remains the default; the unsigned and SD-JWT VC formats must each be + # enabled by the bundle and permitted by the complete matched grant. + # Omission means signed only. + type: array + minItems: 1 + maxItems: 4 + uniqueItems: true + contains: + const: signed-jws + items: + description: >- + One permitted serialization of the same assertion, which introduces no separate issuance + protocol and no credential state; a format reaches a response only when the bundle + and the one matched grant both permit that format. + enum: + - signed-jws + - unsigned-json + - sd-jwt-vc + - sd-jwt-vc-batch + subject-binding-mode: + # What the subject bindings in an assertion are derived under. Closed, with + # no default: absence at every point that references this is what means + # audience-scoped, so an existing document's meaning is unchanged and its + # projected configuration does not move. + enum: + - audience-scoped + - holder-bound + SecretReference: + type: string + pattern: ^(?:secret:env/[A-Z][A-Z0-9_]{0,127}|secret:file/[a-z][a-z0-9._-]{0,127})$ + description: 'An exact secret reference: secret:file/name, resolved under secretProviders.file.root, or secret:env/NAME, resolved only when secretProviders.environment is declared.' + relative-path: + type: string + pattern: ^(adapter-packs|adapters|derivations|schemas|codelists|fixtures|queries)/[A-Za-z0-9._/-]+$ + public-jwk-path: + type: string + pattern: ^public-keys/[A-Za-z0-9._-]+\.jwk\.json$ + certificate-chain-path: + type: string + pattern: ^public-keys/[A-Za-z0-9._-]+\.chain\.pem$ + service-key-id: + type: string + pattern: ^[A-Za-z0-9_-]{42}[AEIMQUYcgkosw048]$ + authentication: + type: object + additionalProperties: false + required: + - oidc + properties: + oidc: + description: >- + The one OpenID Connect issuer whose access tokens this deployment accepts, and the + rules a token from it must satisfy. + $ref: '#/$defs/oidc-authentication' + oidc-authentication: + type: object + additionalProperties: false + required: + - issuer + - audience + - tokenTypes + - algorithms + - jwksSource + - principalClaim + - requesterTagsClaim + - evidenceAudienceClaim + - maximumTokenLifetimeSeconds + - revokedKeyIds + - allowedClients + - requiredScopes + properties: + issuer: + description: >- + Exact token issuer an inbound access token must declare, with path-based issuers + supported; deployable bundles require HTTPS. + $ref: '#/$defs/Url' + pattern: ^https?:// + maxLength: 512 + allowInsecureHttp: + description: >- + Permits plain HTTP to the issuer and JWKS URI beyond loopback under the local assurance + profile only. Deployable bundles require HTTPS for both even when it is set, and a + production or evidence-grade bundle that sets it to true is refused. Omission is false. + type: boolean + default: false + audience: + description: >- + The one exact audience value an inbound access token must carry to be accepted; it is + also the resource this deployment advertises in its protected-resource metadata. + type: string + minLength: 1 + maxLength: 512 + tokenTypes: + description: >- + Allowlist of the exact `typ` value an inbound token's protected JWT header must + declare. + type: array + minItems: 1 + maxItems: 4 + uniqueItems: true + items: + description: >- + One exact protected-header `typ` value accepted on an inbound access token. + enum: + - at+jwt + - application/at+jwt + algorithms: + description: >- + Closes the set of signature algorithms accepted on an inbound access token, and + no algorithm fallback outside the set is permitted. + type: array + minItems: 1 + maxItems: 3 + uniqueItems: true + items: + description: >- + One signature algorithm the token verifier accepts on an inbound access token. + enum: + - EdDSA + - ES256 + - RS256 + jwksSource: + description: >- + Where the verifier fetches issuer signing keys. Evidence accepts only `type: uri`, a + fixed endpoint named in the governed bundle; discovery and static key sets are + refused. + type: object + additionalProperties: false + required: + - type + - uri + properties: + type: + description: >- + Selects the fixed-endpoint key source, the only one Evidence accepts. + const: uri + uri: + description: >- + Fixed endpoint the verifier fetches issuer signing keys from. As an endpoint the + operator declares, it inherits the declared issuer's allowance on any origin: it + may resolve to a public, private, or loopback address, while cloud-metadata and + link-local destinations remain prohibited, DNS is pinned for each fetch, and + ambient proxies and redirects are disabled. It requires HTTPS; the local assurance + profile also permits HTTP on the exact numeric 127.0.0.1 loopback origin with an + explicit port, or elsewhere under allowInsecureHttp. + $ref: '#/$defs/Url' + pattern: ^https?:// + maxLength: 512 + tlsTrustProfile: + description: >- + Logical name resolved to an exact private certificate authority file bound in + `runtime.yaml`, trusted beside the system roots for the `jwksSource.uri` connection + alone. Omission trusts only the system roots, and the profile is rejected outright + when `jwksSource.uri` is a local HTTP origin. + $ref: '#/$defs/local-id' + principalClaim: + description: >- + The only claim read as the principal, whose absence denies the request; `client_id`, + `azp`, request data, and proxy headers are not fallbacks. + $ref: '#/$defs/claim-name' + requesterTagsClaim: + description: >- + Names the verified claim whose tag list selects which authority profile can match + the request. + $ref: '#/$defs/claim-name' + evidenceAudienceClaim: + description: >- + Names the verified claim that fixes the audience an assertion is issued to, and + the public request cannot choose another audience. + $ref: '#/$defs/claim-name' + claims: + description: >- + Optional direct claim-name mapping for the shared contextual-authorization profile. + Omission uses the registry_* names defined by the profile. Names remain direct JWT + members even when they contain a dot. + $ref: '#/$defs/contextual-claim-names' + maximumTokenLifetimeSeconds: + description: >- + Caps the accepted `exp - iat` interval, and its presence requires `iat` and an `exp` + greater than `iat`. + type: integer + minimum: 1 + maximum: 86400 + revokedKeyIds: + description: >- + Emergency denylist of issuer key identifiers, checked before cached JWKS key selection + so a compromised key is refused even while the cache still holds the key. + type: array + maxItems: 32 + uniqueItems: true + items: + description: >- + One issuer key identifier the verifier refuses, whatever the cached JWKS still + holds. + type: string + minLength: 1 + maxLength: 256 + pattern: ^[^\u0000-\u001F\u007F-\u009F]+$ + actorClaim: + description: >- + Names the verified claim read as the actor alongside the principal, and omitting + the key enables no fallback actor source. + $ref: '#/$defs/claim-name' + allowedClients: + description: >- + Machine-client admission every bundle decides, matched against the verified token's + `client_id`/`azp`; never `sub`. The keyword `unrestricted` admits every client the + issuer vouched for; a list admits exactly the clients it names. An omitted key and + an empty list are refused. Audience plus static issuer-governed attributes alone + cannot establish that a client was granted this resource's permission, which is + what `requiredScopes` closes. + oneOf: + - description: Admit every client the issuer vouched for. + const: unrestricted + - description: Admit exactly the listed clients. + type: array + minItems: 1 + maxItems: 32 + uniqueItems: true + items: + description: One client identifier admitted to call this deployment. + type: string + minLength: 1 + maxLength: 128 + assertionIssuers: + description: >- + Per-client assertion-authority admission for a token that carries the + platform verifier's `registry_assertion_issuer` claim, keyed by the + client identifier the token's `client_id`/`azp` names and naming the + issuers that client may present the claim as. Omitting the key + applies no rule, so every exchanged token is admitted regardless of + the claim. A token that carries no such claim is never affected by + this admission. + type: object + minProperties: 1 + maxProperties: 32 + propertyNames: + $ref: '#/$defs/ExternalId' + maxLength: 128 + additionalProperties: + description: >- + The issuers one client may present the `registry_assertion_issuer` + claim as. + type: array + minItems: 1 + maxItems: 8 + uniqueItems: true + items: + description: One issuer URL the client may present the claim as. + type: string + minLength: 1 + maxLength: 512 + requiredScopes: + description: >- + Scope gate every bundle decides, read from the verified token's scope set after + signature verification and before any authority claim is read. The keyword + `unrestricted` applies no scope gate; a list names the scopes every inbound token + must carry. An omitted key and an empty list are refused; a missing scope is never + inferred from tags, principal, roles, `sub`, or request fields. + oneOf: + - description: Apply no scope gate. + const: unrestricted + - description: Require every listed scope. + type: array + minItems: 1 + maxItems: 32 + uniqueItems: true + items: + description: One RFC 6749 scope-token every inbound token must carry. + type: string + minLength: 1 + maxLength: 256 + pattern: ^[\x21\x23-\x5B\x5D-\x7E]+$ + if: + required: + - jwksSource + properties: + jwksSource: + properties: + uri: + pattern: ^http:// + then: + not: + required: + - tlsTrustProfile + audit: + type: object + additionalProperties: false + required: + - hashKeyRef + - hashKeyVersion + properties: + hashKeyRef: + description: >- + Points at the secret Rust derives the audit pseudonym key from; the same reference + cannot also serve `subjectBinding.secretRef`. Every audit gate is fail + closed whatever this section says, so an authorization refusal, access attempt, or + disclosure release whose entry cannot be written stops the response instead of being + served unaudited. + $ref: '#/$defs/SecretReference' + hashKeyVersion: + description: >- + Stamped into every audit pseudonym as its version prefix, so pseudonyms produced + under different audit key material stay distinguishable within one audit log. + type: integer + minimum: 1 + maximum: 2147483647 + subject-binding: + type: object + additionalProperties: false + required: + - secretRef + - keyVersion + properties: + secretRef: + description: >- + Points at the secret keying every subject binding; that reference and its resolved + bytes must both differ from the audit master, and a match fails startup. + $ref: '#/$defs/SecretReference' + keyVersion: + description: >- + Scopes each derived binding and appears in the binding value, so a new version changes + every binding a relying party already retains as an expectation. + type: integer + minimum: 1 + maximum: 2147483647 + rate-limits: + type: object + additionalProperties: false + required: + - requestsPerPrincipalPerMinute + - burstPerPrincipal + - failedSelectorAttemptsPerPrincipalAuthorityPerMinute + properties: + requestsPerPrincipalPerMinute: + description: >- + Rate at which one principal's request budget refills, spread continuously across + the minute rather than granted in full at its start. + type: integer + minimum: 1 + maximum: 1000000 + burstPerPrincipal: + description: >- + Capacity of one principal's request bucket, bounding how many requests may arrive + back to back before `requestsPerPrincipalPerMinute` governs the pace. + type: integer + minimum: 1 + maximum: 100000 + failedSelectorAttemptsPerPrincipalAuthorityPerMinute: + description: >- + Budget for selector-resolution failures, checked before source access and consumed + only when selector validation itself fails, so repeated probing is refused before + it reaches a source. + type: integer + minimum: 1 + maximum: 100000 + claim-name: + type: string + pattern: ^[A-Za-z_][A-Za-z0-9_.-]{0,127}$ + contextual-claim-names: + type: object + additionalProperties: false + properties: + actorKind: {$ref: '#/$defs/claim-name', default: registry_actor_kind} + purpose: {$ref: '#/$defs/claim-name', default: registry_purpose} + grantId: {$ref: '#/$defs/claim-name', default: registry_grant_id} + grantSourceIssuer: {$ref: '#/$defs/claim-name', default: registry_grant_source_issuer} + grantClient: {$ref: '#/$defs/claim-name', default: registry_grant_client} + grantResource: {$ref: '#/$defs/claim-name', default: registry_grant_resource} + grantExp: {$ref: '#/$defs/claim-name', default: registry_grant_exp} + grantBounds: {$ref: '#/$defs/claim-name', default: registry_grant_bounds} + approver: {$ref: '#/$defs/claim-name', default: registry_approver} + claim-path: + type: string + pattern: ^[A-Za-z_][A-Za-z0-9_-]*(\.[A-Za-z_][A-Za-z0-9_-]*)*$ + selector-profile: + type: object + additionalProperties: false + required: + - maximumAggregateBytes + - fields + properties: + maximumAggregateBytes: + description: >- + Caps the summed canonical byte size of every field value resolved for one authorized + use of the profile; exceeding it denies the request. + type: integer + minimum: 1 + maximum: 8192 + fields: + description: >- + Closed map of the profile's field declarations, keyed by adopter-chosen names that + are opaque to Rust and carry no meaning of their own. + type: object + minProperties: 1 + maxProperties: 16 + propertyNames: + $ref: '#/$defs/LocalId' + additionalProperties: + description: >- + One field's exact declaration: Rust matches a supplied value against it verbatim, + performing no case folding, normalization, transliteration, tokenization, partial-date + matching, or fuzzy scoring. + $ref: '#/$defs/selector-field' + selector-field: + oneOf: + - type: object + additionalProperties: false + required: + - type + - minimumBytes + - maximumBytes + properties: + type: + description: >- + Selects the field's scalar kind, fixing which other declaration keys are required; + a supplied value of a different kind is rejected. + const: string + minimumBytes: + description: >- + Inclusive lower bound, in UTF-8 bytes, on this field's accepted string value; + it cannot exceed the field's own `maximumBytes`. + type: integer + minimum: 1 + maximum: 8192 + maximumBytes: + description: >- + Inclusive upper bound, in UTF-8 bytes, on this field's accepted string or `controlled-code` + value; it cannot exceed the profile's `maximumAggregateBytes`. + type: integer + minimum: 1 + maximum: 8192 + - type: object + additionalProperties: false + required: + - type + properties: + type: + const: date + - type: object + additionalProperties: false + required: + - type + properties: + type: + const: uuid + - type: object + additionalProperties: false + required: + - type + - minimum + - maximum + properties: + type: + const: integer + minimum: + description: >- + Inclusive lower bound on this field's accepted integer selector value; a submitted + value less than this bound is rejected rather than clamped. + type: integer + minimum: -9007199254740991 + maximum: 9007199254740991 + maximum: + description: >- + Inclusive upper bound on this field's accepted integer selector value; a submitted + value greater than this bound is rejected rather than clamped. + type: integer + minimum: -9007199254740991 + maximum: 9007199254740991 + - type: object + additionalProperties: false + required: + - type + properties: + type: + const: boolean + - type: object + additionalProperties: false + required: + - type + - codelist + - codelistVersion + - maximumBytes + properties: + type: + const: controlled-code + codelist: + description: >- + Path to the bundled codelist artifact a `controlled-code` value must belong + to; a missing referenced artifact fails bundle loading. + $ref: '#/$defs/relative-path' + codelistVersion: + description: >- + Version this field's `controlled-code` values are pinned to; it must equal the + referenced codelist artifact's own version or bundle loading fails. + type: string + minLength: 1 + maxLength: 128 + maximumBytes: + type: integer + minimum: 1 + maximum: 8192 + source: + type: object + additionalProperties: false + required: [pack, route, connection, posture, factSchema] + properties: + pack: + description: Exact Adapter pack identity and package-relative captured closure. + type: object + additionalProperties: false + required: [id, version, digest, artifactPrefix] + properties: + id: {$ref: '#/$defs/LocalId'} + version: {type: string, minLength: 1, maxLength: 128, pattern: '^\S+$'} + digest: {$ref: '#/$defs/Digest'} + artifactPrefix: + allOf: + - {$ref: '#/$defs/relative-path'} + - {pattern: '^adapter-packs/[a-z][a-z0-9_-]{0,63}/[0-9a-f]{64}$'} + route: + description: Named Evidence source route compiled from the pinned pack. + $ref: '#/$defs/LocalId' + connection: + description: Named governed policy and matching runtime resource owner. + $ref: '#/$defs/LocalId' + inputs: + description: Named route inputs projected only from authorized selectors. + type: object + propertyNames: {$ref: '#/$defs/ExternalId'} + additionalProperties: + type: object + additionalProperties: false + required: [selector] + properties: + selector: + type: object + additionalProperties: false + required: [role, profile, field] + properties: + role: {$ref: '#/$defs/LocalId'} + profile: {$ref: '#/$defs/LocalId'} + field: {$ref: '#/$defs/LocalId'} + posture: + description: Reviewed minimization posture, equal to the pinned route contract. + enum: [source-derived, field-projected, record-transformed] + factSchema: + description: Final facts schema, equal to the pinned source schema unless a governed projection is selected. + allOf: + - {$ref: '#/$defs/relative-path'} + - {pattern: '^schemas/'} + projection: + description: Package-owned projection of matched native facts under the acquisition deadline. + type: object + additionalProperties: false + required: [script, entrypoint, digest] + properties: + script: + allOf: + - {$ref: '#/$defs/relative-path'} + - {pattern: '^derivations/.*\.rhai$'} + entrypoint: {type: string, minLength: 1, maxLength: 128, pattern: '^[A-Za-z_][A-Za-z0-9_]*$'} + digest: {$ref: '#/$defs/Digest'} + allOf: + - if: {required: [projection]} + then: + properties: + posture: {const: record-transformed} + source-connection: + type: object + additionalProperties: false + required: [endpoints] + properties: + endpoints: + description: Reviewed endpoint policies, one per distinct endpoint name; empty grants no network authority. + type: array + items: {$ref: '#/$defs/source-endpoint-policy'} + source-endpoint-policy: + type: object + additionalProperties: false + required: [endpoint, baseUrl, clientIdentity, authentication] + properties: + endpoint: {$ref: '#/$defs/LocalId'} + baseUrl: + description: >- + Exact reviewed origin and base path, without a query or fragment. The shared engine + additionally checks canonical path segments at startup. Deployable assurance + profiles require HTTPS. + Only local fixtures may use canonical numeric-loopback HTTP; unauthenticated + local sources additionally require an origin with an explicit non-zero port. + allOf: + - {$ref: '#/$defs/Url'} + - oneOf: + - {pattern: '^[Hh][Tt][Tt][Pp][Ss]://[^?#]+$'} + - pattern: >- + ^http://(?:127\.(?:0|[1-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.(?:0|[1-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.(?:0|[1-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])|\[::1\])(?::(?:[1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]))?(?:/[^?#]*)?$ + tlsTrustProfile: {$ref: '#/$defs/LocalId'} + clientIdentity: {enum: [forbidden, required]} + authentication: {$ref: '#/$defs/source-authentication-policy'} + allOf: + - if: + required: [authentication, clientIdentity] + properties: + authentication: + required: [type] + properties: + type: {const: none} + clientIdentity: {const: forbidden} + then: + properties: + baseUrl: + pattern: >- + ^http://(?:127\.(?:0|[1-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.(?:0|[1-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.(?:0|[1-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])|\[::1\]):(?:[1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$ + source-authentication-policy: + oneOf: + - type: object + additionalProperties: false + required: [type] + properties: + type: {const: none} + - type: object + additionalProperties: false + required: [type] + properties: + type: {const: basic} + - type: object + additionalProperties: false + required: [type] + properties: + type: {const: static-authorization} + - type: object + additionalProperties: false + required: [type] + properties: + type: {const: static-api-key} + - type: object + additionalProperties: false + required: [type, tokenEndpoint, credentialPlacement] + properties: + type: {const: oauth2-client-credentials} + tokenEndpoint: {$ref: '#/$defs/Url'} + scope: {type: string, minLength: 1, maxLength: 512} + audience: {type: string, minLength: 1, maxLength: 512} + resource: {type: string, minLength: 1, maxLength: 512, format: uri} + credentialPlacement: {enum: [basic-header, form-body]} + - type: object + additionalProperties: false + required: [type, tokenEndpoint] + properties: + type: {const: oauth2-private-key-jwt} + tokenEndpoint: {$ref: '#/$defs/Url'} + clientAssertionAudience: {type: string, minLength: 1, maxLength: 512} + scope: {type: string, minLength: 1, maxLength: 512} + audience: {type: string, minLength: 1, maxLength: 512} + resource: {type: string, minLength: 1, maxLength: 512, format: uri} + selector-input: + type: object + additionalProperties: false + required: + - role + - alternatives + properties: + role: + description: >- + Subject role this selector input covers, unique across the declaration; the runtime + resolves request subjects by role rather than by array position. + $ref: '#/$defs/local-id' + alternatives: + description: >- + Closed set of profile and field combinations permitted for the role; the runtime + materializes only the combination the matched authority grant carries, never the + union of every alternative declared. + type: array + minItems: 1 + maxItems: 16 + items: + description: >- + One permitted selector profile paired with the exact field subset that alternative + exposes. + type: object + additionalProperties: false + required: + - profile + - fields + properties: + profile: + description: >- + Selector profile this alternative admits for the role; a profile absent from + `selectorProfiles` is rejected at startup. + $ref: '#/$defs/local-id' + fields: + description: >- + Exact subset of the named profile's declared fields this alternative exposes, + which is how a consumer is handed less than the authorized selector carries. + type: array + minItems: 1 + maxItems: 16 + uniqueItems: true + items: + description: >- + One selector field name, which the named profile must declare or the bundle + is rejected at startup. + type: string + pattern: ^[a-z][a-z0-9._-]{0,63}$ + authority-profile: + type: object + additionalProperties: false + required: + - kind + - requesterTags + - grants + properties: + kind: + description: >- + Declared basis of authority for this profile's grants; a request whose verified + token carries an actor claim matches only a `delegated` profile. + enum: + - statutory + - organizational + - consent + - delegated + - explicit-request + actorKind: + description: >- + Restrict this authority profile to the verified actor kind. An agent without + a task grant must use a profile explicitly bound to agent. Normalized target + authority must explicitly name a kind inside the definition's actor ceiling; + omission cannot turn that ceiling into wildcard authority. + enum: [human, agent, service] + requesterTags: + description: >- + Complete tag set the claim named by `authentication.requesterTagsClaim` must contain + for this profile to match, so adding a tag narrows the profile rather than widening + it. + type: array + minItems: 1 + maxItems: 32 + uniqueItems: true + items: + description: >- + One tag that must be present in the verified claim; differentiated requirements, + purposes, or `valueClaims` are expressed by issuing different tags rather than + by naming individual clients. + $ref: '#/$defs/local-id' + requesterClients: + description: >- + Exact verified OAuth clients allowed to exercise this profile's authenticated-grant + paths. Required and nonempty when any subject uses authenticated-grant. + type: array + minItems: 1 + maxItems: 32 + uniqueItems: true + items: {type: string, minLength: 1, maxLength: 128} + grantSourceIssuer: + description: >- + Exact trusted issuer that supplied the immutable task-grant context before token + exchange. Required when any subject uses authenticated-grant. + $ref: '#/$defs/uri' + grants: + description: >- + Complete set of authorized paths this requester class has. Permissions are never + unioned across grants, so one grant must cover an entire request on its own. + type: array + minItems: 1 + maxItems: 128 + items: + description: >- + One authorized path, binding a single requirement, a single purpose, the audience + origin, and the referenced requirement's complete subject-role set. + type: object + additionalProperties: false + required: + - requirement + - purpose + - audienceFrom + - subjects + properties: + requirement: + description: >- + The one requirement this path authorizes, named by its exact requirement URI; + a requirement no bundle entry declares fails startup. + $ref: '#/$defs/uri' + purpose: + description: >- + The one purpose this path authorizes, matched exactly against the request + purpose; a purpose the referenced requirement does not declare fails startup. + type: string + pattern: ^[a-z][a-z0-9._:-]{0,127}$ + audienceFrom: + description: >- + Binds the assertion audience to the requester's verified evidence audience + claim, so the public request cannot name another audience. For a normalized + definition the resolved audience must also fit its authored audience ceiling + before selector values, credentials or sources are accessed. + const: authenticated-requester + responseFormats: + description: >- + Serializations this path permits, defaulting to signed JWS alone when omitted. + Unsigned and SD-JWT VC output each require both the bundle-level `responseFormats` + and the one matched grant to permit them. Holder-bound grants may name only + SD-JWT forms; the mandatory signed-JWS package format does not widen this grant. + type: array + minItems: 1 + maxItems: 4 + uniqueItems: true + items: {enum: [signed-jws, unsigned-json, sd-jwt-vc, sd-jwt-vc-batch]} + subjectBindingModes: + description: >- + Subject-binding modes this path permits, defaulting to audience-scoped alone when + omitted or empty. Permitting a serialization is not permitting a binding mode: + a path widened to `sd-jwt-vc` gains no right to issue holder-bound assertions + until that mode is named here. A path may name `holder-bound` alone, which + permits nothing else. + type: array + maxItems: 2 + uniqueItems: true + items: + description: >- + One binding mode this path permits, which is the operator half of a two-sided + gate; a requirement declaring a mode no grant for it permits is unreachable + and is rejected at startup. + $ref: '#/$defs/subject-binding-mode' + subjects: + description: >- + Authorization for the referenced requirement's complete subject-role set; + a grant that omits a declared role, or repeats one, fails startup. + type: array + minItems: 1 + maxItems: 8 + items: + description: >- + Authorization for one subject role, fixing which selector profile identifies + the subject and where that subject's selector values may originate. + type: object + additionalProperties: false + required: + - role + - selectorProfile + - valueOrigin + properties: + role: + description: >- + Names the requirement subject role this authorization covers; a role + the requirement's `subjectRoles` does not declare fails startup, and + no role may appear twice in one grant. + $ref: '#/$defs/local-id' + selectorProfile: + description: >- + The selector profile whose field set identifies this role's subject; + a profile the requirement's `subjectRoles` entry does not permit for + the role fails startup. + $ref: '#/$defs/local-id' + valueOrigin: + description: >- + Fixes where this role's selector values originate. A `request` origin + takes values from the closed public request and prohibits `valueClaims`; + `authenticated-context` rejects caller values and reads the exact `valueClaims` + map; `authenticated-grant` reads that same map and additionally requires a + verified grant whose trusted source issuer, requester client, purpose, and + Evidence requirement bound match exactly one authority profile. + enum: + - authenticated-context + - authenticated-grant + - request + valueClaims: + description: >- + Maps every field of the named selector profile to the claim path in + the verified access token that supplies that field's value. Missing, + extra, duplicate-target, or invalid claim paths fail startup. + type: object + minProperties: 1 + maxProperties: 16 + propertyNames: + $ref: '#/$defs/LocalId' + additionalProperties: + description: >- + Claim path resolved only from the strictly verified access token, + so a caller-supplied selector, grant reference, or approval value + cannot supply the field. + $ref: '#/$defs/claim-path' + allOf: + - if: + required: + - valueOrigin + properties: + valueOrigin: + enum: + - authenticated-context + - authenticated-grant + then: + required: + - valueClaims + - if: + required: + - valueOrigin + properties: + valueOrigin: + const: request + then: + not: + required: + - valueClaims + acquisition: + description: >- + Selects the configured source of each acquisition channel. The pinned pack route owns + every preparation, extraction, branching and bounded data operation in that + acquisition. `source` is the source channel's Source. The optional `holderPresented` + block is the holder-presented channel: a Source whose pack route reaches an endpoint + with the `wallet-presentation-v1` host protocol, and the selector profiles whose + requests acquire through it. A request's selector profile selects exactly one + channel, so a profile listed under `holderPresented` never reaches `source`, and a + `source` Source never uses the wallet presentation protocol. `source` may be omitted + only beside `holderPresented`, and then `holderPresented.selectorProfiles` lists + every selector profile the definition's subject roles allow. + type: object + additionalProperties: false + anyOf: + - required: [source] + - required: [holderPresented] + properties: + source: {$ref: '#/$defs/local-id'} + holderPresented: + description: >- + The holder-presented channel. The definition offers only the signed JWS representation, + because a holder-presented assertion answers as a signed flattened JWS. + type: object + additionalProperties: false + required: [source, selectorProfiles] + properties: + source: {$ref: '#/$defs/local-id'} + selectorProfiles: + description: >- + Selector profiles that select this channel. Each is a profile one of the + definition's subject roles allows. + type: array + minItems: 1 + maxItems: 16 + uniqueItems: true + items: {$ref: '#/$defs/local-id'} + requirement: + type: object + additionalProperties: false + required: + - handle + - uri + - kind + - acquisition + - purposes + - subjectRoles + - referenceFrameworks + - evidenceType + - validitySeconds + - derivation + - concepts + - disclosureGuard + - existenceDisclosure + properties: + question: + description: Human-facing presentation; excluded from the definition behavior revision. + type: string + minLength: 1 + maxLength: 2048 + not: + pattern: '[\u2028\u2029\u202a-\u202e\u2066-\u2069\ufeff\ufdd0-\ufdef\ufffe\uffff]|🿾|🿿|𯿾|𯿿|𿿾|𿿿|񏿾|񏿿|񟿾|񟿿|񯿾|񯿿|񿿾|񿿿|򏿾|򏿿|򟿾|򟿿|򯿾|򯿿|򿿾|򿿿|󏿾|󏿿|󟿾|󟿿|󯿾|󯿿|󿿾|󿿿|􏿾|􏿿' + grantCeiling: + description: >- + Package-owned authority, actor, value-origin and audience ceilings. The definition's + purposes, subject-role selector profiles, representations and subjectBinding supply + the remaining dimensions. A target grant can narrow the complete tuple only. + type: object + additionalProperties: false + required: [authorities, actorKinds, valueOrigins, audiences] + properties: + authorities: + type: array + minItems: 1 + maxItems: 5 + uniqueItems: true + items: {enum: [statutory, organizational, consent, delegated, explicit-request]} + actorKinds: + type: array + minItems: 1 + maxItems: 3 + uniqueItems: true + items: {enum: [human, agent, service]} + valueOrigins: + type: array + minItems: 1 + maxItems: 3 + uniqueItems: true + items: {enum: [request, authenticated-context, authenticated-grant]} + audiences: + type: array + minItems: 1 + maxItems: 32 + uniqueItems: true + items: {$ref: '#/$defs/uri'} + representations: + description: >- + Definition-specific serialization ceiling inside the package responseFormats. + The one complete target grant and binding mode must also permit the selected format. + type: array + minItems: 1 + maxItems: 4 + uniqueItems: true + items: {enum: [signed-jws, unsigned-json, sd-jwt-vc, sd-jwt-vc-batch]} + x-runtime-validation: Each format must be permitted by the definition binding mode. + handle: + description: >- + Stable local authoring, inspection and generated-code identifier for this definition. + Public requests select its exact Requirement URI; this handle is not a substitute + wire identity and is never inferred from that URI. + $ref: '#/$defs/local-id' + uri: + description: >- + Stable requirement URI a public request names to select this requirement; the runtime + looks up requirements by this exact value and no other. + $ref: '#/$defs/uri' + kind: + description: >- + Requirement classification carried unchanged into every assertion issued for this + requirement. + enum: + - criterion + - information-requirement + - constraint + subjectBinding: + description: >- + What this requirement's subject bindings are derived under; omission means + `audience-scoped`, which is what every requirement written before this key existed + did. A `holder-bound` requirement is rejected at startup unless the bundle and at + least one grant for it both permit a serialization the mode allows, which is + `sd-jwt-vc` or `sd-jwt-vc-batch`, and unless none of its concepts uses an + entity-reference value form, whose pointer only the audience it was scoped to + could resolve. + $ref: '#/$defs/subject-binding-mode' + acquisition: + description: >- + Fixes this requirement's complete source-request shape to one call over a single + source, or to a fixed sequence of calls named here; no response content chooses + a different source or an additional call. + $ref: '#/$defs/acquisition' + purposes: + description: >- + Closed set of purpose codes this definition can be requested under. One complete + target grant must bind an allowed purpose with every declared subject role, selector + profile and value origin. Package validity does not itself create target authority. + type: array + minItems: 1 + maxItems: 32 + uniqueItems: true + items: + description: >- + One purpose code eligible for this requirement; an authority-profile grant must + name this exact code before a request under it is authorized. + type: string + pattern: ^[a-z][a-z0-9._:-]{0,127}$ + subjectRoles: + description: >- + Complete set of subject positions this requirement resolves; incoming request array + order carries no meaning, and resolved subjects are always canonicalized to this + array's declaration order before signing. + type: array + minItems: 1 + maxItems: 8 + items: + description: >- + One subject position this requirement resolves; a request supplying a different + number of subjects, a duplicate role, or a role this requirement does not declare + is unauthorized. + type: object + additionalProperties: false + required: + - role + - cardinality + - selectorProfiles + properties: + role: + description: >- + Deployment-chosen identifier distinguishing this subject position from the + requirement's others; requests, grants, and derivation inputs all address + the position by this exact value, never by array position. + type: string + pattern: '^[a-z][a-z0-9._-]{0,63}$' + cardinality: + description: >- + Fixes this subject position to a single resolved value; Evidence Version 1 + defines no plural or list-valued role. + const: one + selectorProfiles: + description: >- + Selector profiles permitted for this subject position; every one of them must + be reachable by some authority-profile grant for every code in `purposes`, + or the bundle fails to load. + type: array + minItems: 1 + maxItems: 16 + uniqueItems: true + items: + description: >- + One selector profile id permitted for this position; it must name an entry + in the bundle's `selectorProfiles` map, or the bundle fails to load. + $ref: '#/$defs/local-id' + referenceFrameworks: + description: >- + Governed legal or procedural framework URIs carried as a whole into every assertion + issued for this requirement. + type: array + minItems: 1 + maxItems: 16 + uniqueItems: true + items: + description: >- + One governed framework URI in that set, copied unchanged into the assertion alongside + its siblings; the runtime does not select or rank among them. + $ref: '#/$defs/uri' + evidenceType: + description: >- + Exact Evidence Type URI placed in every assertion issued for this requirement; it + must be unique across the bundle, and a duplicate rejects the bundle at startup. + $ref: '#/$defs/uri' + observationTimezone: + description: >- + IANA timezone resolving `legal_local_date` and `legal_local_time` from the runtime-supplied + `observed_at` instant; an unrecognized name fails validation, and omitting the field + resolves both values in UTC instead. + type: string + minLength: 1 + maxLength: 128 + validitySeconds: + description: >- + Sets the assertion's validity window measured from `issuedAt`; the bundle fails + to load if this exceeds `signing.maximumAssertionValiditySeconds`. + type: integer + minimum: 1 + maximum: 31536000 + derivation: + description: >- + Determines which Rhai script computes the requirement's concept values as `derive/3`, + and what minimized selector inputs and closed typed parameters that script is allowed + to see. + type: object + additionalProperties: false + required: + - script + - parameters + properties: + script: + description: >- + Bundle-relative Rhai script compiled at startup to expose the requirement's + `derive/3` entry point before the runtime reaches readiness. + $ref: '#/$defs/relative-path' + selectorInputs: + description: >- + Optional closed set of authorized selector roles the derivation may read; omission + means `derive/3` receives an empty selector map. + type: array + maxItems: 8 + items: + description: >- + Declares one subject role the derivation may read, together with the closed + profile alternatives permitted for that role; only the alternative matching + the authorized request subject reaches `derive/3`. + $ref: '#/$defs/selector-input' + parameters: + description: >- + Closed set of adopter-named parameter values available to the requirement's + derivation; the map cannot carry secrets or runtime authority. + type: object + maxProperties: 32 + propertyNames: + $ref: '#/$defs/LocalId' + additionalProperties: + description: >- + One named parameter's value, closed to a bounded string, a safe integer, a + boolean, one typed canonical decimal, or a bounded array of decimal bucket + boundaries whose own bounds reuse that same typed-decimal shape. + $ref: '#/$defs/parameter-value' + concepts: + description: >- + Declares the complete, closed set of values this requirement's assertion may disclose; + a value the derivation produces under an identifier absent from this list fails + evaluation instead of being disclosed. + type: array + minItems: 1 + maxItems: 16 + items: + description: >- + One value the requirement may disclose, corresponding to exactly one `cccev:InformationConcept`, + and becoming one entry of the assertion's supported values when the derivation + produces that value. + type: object + additionalProperties: false + required: + - handle + - uri + - type + - required + properties: + handle: + description: >- + Stable application-facing key for this output in typed client + result maps. It is governed explicitly and is never inferred + from the concept URI. + $ref: '#/$defs/local-id' + uri: + description: >- + Stable identifier that names this concept as `providesValueFor` in the assertion + and, unless an `sdJwtVc.claim` override is declared, is also the concept's + claim name in the SD-JWT VC serialization. + $ref: '#/$defs/uri' + type: + enum: + - boolean + - controlled-code + - controlled-category + - bounded-identifier + - bounded-integer + - bounded-decimal + - date-bucket + - time-bucket + - audience-scoped-entity-reference + - controlled-code-list + - entity-reference-list + - reviewed-structured-value + required: + description: >- + Whether the derivation must produce a value for this concept; a missing required + concept fails the whole evaluation, and a missing optional concept is left + out of the disclosed supported values. + type: boolean + constraints: + description: >- + Closed bounds a derived value must satisfy before it is accepted into evidence; + the `allOf` branch below that matches the concept's `type` fixes their exact shape. + sdJwtVc: + description: >- + Optional per-concept projection that the concept declaration may set only + for `reviewed-structured-value` concepts, selecting how that structured value's + fields are exposed as SD-JWT VC disclosures. + $ref: '#/$defs/sd-jwt-vc-concept-projection' + allOf: + - oneOf: + - properties: + type: + description: >- + Selects the concept's closed value shape, which fixes the exact set + of keys `constraints` must declare and no others. + const: boolean + constraints: + description: >- + Closed, form-specific bounds a derived value must satisfy before it + is accepted into evidence; which keys apply is fixed entirely by the + concept's `type`. + $ref: '#/$defs/boolean-constraints' + - required: + - constraints + properties: + type: + const: controlled-code + constraints: + $ref: '#/$defs/controlled-code-constraints' + - required: + - constraints + properties: + type: + const: controlled-category + constraints: + $ref: '#/$defs/controlled-category-constraints' + - required: + - constraints + properties: + type: + const: bounded-identifier + constraints: + $ref: '#/$defs/bounded-identifier-constraints' + - required: + - constraints + properties: + type: + const: bounded-integer + constraints: + $ref: '#/$defs/bounded-integer-constraints' + - required: + - constraints + properties: + type: + const: bounded-decimal + constraints: + $ref: '#/$defs/bounded-decimal-constraints' + - required: + - constraints + properties: + type: + const: date-bucket + constraints: + $ref: '#/$defs/bucket-constraints' + - required: + - constraints + properties: + type: + const: time-bucket + constraints: + $ref: '#/$defs/bucket-constraints' + - required: + - constraints + properties: + type: + const: audience-scoped-entity-reference + constraints: + $ref: '#/$defs/entity-reference-constraints' + - required: + - constraints + properties: + type: + const: controlled-code-list + constraints: + $ref: '#/$defs/controlled-code-list-constraints' + - required: + - constraints + properties: + type: + const: entity-reference-list + constraints: + $ref: '#/$defs/entity-reference-list-constraints' + - required: + - constraints + properties: + type: + const: reviewed-structured-value + constraints: + $ref: '#/$defs/reviewed-structured-value-constraints' + - if: + required: + - sdJwtVc + then: + properties: + type: + const: reviewed-structured-value + fixtures: + description: >- + Bundle-relative path to this requirement's sanitized fixture suite; omitting it + is accepted only under `assuranceProfile: local`, and `production` or `evidence-grade` + refuse to load without it and its complete case coverage. + $ref: '#/$defs/relative-path' + disclosureGuard: + description: >- + Binds this requirement's release to the reviewed disclosure families a human combined-disclosure + review has already assessed. + type: object + additionalProperties: false + required: + - families + properties: + families: + description: >- + Non-empty set of those reviewed family URIs; sharing even one family with another + enabled requirement rejects the whole bundle at startup. + type: array + minItems: 1 + maxItems: 16 + uniqueItems: true + items: + description: >- + One reviewed disclosure-family URI; this exact value, not what it represents, + is what the startup check compares for reuse across requirements. + $ref: '#/$defs/uri' + existenceDisclosure: + description: >- + Governs the outward shape of an unresolved outcome: the runtime returns one identical + public problem whether the subject was absent, ambiguous, or found with inconsistent + derivation inputs, so a caller cannot distinguish the cause from the response. + enum: + - collapse-unresolved + publicCheck: + description: >- + Experimental (`v1alpha1`). Declares that this requirement can answer an + unauthenticated certificate check once a target authority activates it. Names the + Source fact that carries the check code and the two concepts that form the public + answer; the status concept is a controlled category and the fields concept is a + reviewed structured value, and they are different concepts. The requirement has one + subject role with one selector profile of one field, acquires through one Source, + and declares no holder-presented channel. Omitted when the requirement declares no + public check, so existing configuration revisions do not change. + type: object + additionalProperties: false + required: + - checkCodeFact + - statusOutput + - fieldsOutput + properties: + checkCodeFact: + description: Name of the Source fact that carries the check code the caller must present. + type: string + minLength: 1 + maxLength: 128 + statusOutput: + description: Handle of the controlled-category concept that carries the public status. + type: string + fieldsOutput: + description: Handle of the reviewed-structured-value concept that carries the public fields. + type: string + boolean-constraints: + type: object + additionalProperties: false + maxProperties: 0 + controlled-code-constraints: + type: object + additionalProperties: false + required: + - codelist + - codelistVersion + - maximumBytes + properties: + codelist: + description: >- + Bundle-relative path to the closed codelist artifact whose entries fix exact membership + for `controlled-code`, `controlled-category`, and `controlled-code-list` concepts, + validated at startup. + $ref: '#/$defs/relative-path' + codelistVersion: + description: >- + Version tag paired with `codelist` for `controlled-code` and `controlled-code-list` + concepts that must exactly equal the referenced codelist artifact's own declared + version, or the bundle fails to load. + type: string + minLength: 1 + maxLength: 128 + maximumBytes: + description: >- + Caps the disclosed byte length of a `controlled-code`, `controlled-category`, or + `audience-scoped-entity-reference` concept's value; a value or projected reference + longer than the cap fails validation instead of being truncated. + type: integer + minimum: 1 + maximum: 8192 + bounded-identifier-constraints: + description: >- + A source-owned immutable identifier is disclosed as an exact JSON string. Its ASCII + prefix is fixed by the governed bundle; the nonempty suffix begins with an ASCII + letter or digit and then contains only ASCII letters, digits, dots, underscores, or + hyphens. The full string must fit the declared UTF-8 byte bounds. + type: object + additionalProperties: false + required: [prefix, minimumBytes, maximumBytes] + properties: + prefix: + description: >- + Exact ASCII prefix ending in a dot, underscore, hyphen, colon, slash, or hash. + It may contain only ASCII letters, digits, and those six separators. + type: string + minLength: 1 + maxLength: 512 + pattern: '^[A-Za-z0-9._:/#-]*[._:/#-]$' + minimumBytes: + type: integer + minimum: 1 + maximum: 1024 + maximumBytes: + type: integer + minimum: 1 + maximum: 1024 + controlled-category-constraints: + type: object + additionalProperties: false + required: + - categoryScheme + - schemeVersion + - codelist + - maximumBytes + properties: + categoryScheme: + description: >- + URI naming the reviewed category vocabulary a `controlled-category` concept's value + must belong to; matched against `schemeVersion` and `codelist` at startup, it enforces + exact category membership and rejects any unreviewed category. + $ref: '#/$defs/uri' + schemeVersion: + description: >- + Version tag that must exactly equal a referenced codelist artifact's own declared + version at startup; pairs with `categoryScheme` for `controlled-category` concepts + and with `bucketScheme` for `date-bucket` and `time-bucket` concepts. + type: string + minLength: 1 + maxLength: 128 + codelist: + $ref: '#/$defs/relative-path' + maximumBytes: + type: integer + minimum: 1 + maximum: 8192 + bounded-integer-constraints: + type: object + additionalProperties: false + required: + - minimum + - maximum + properties: + minimum: + description: >- + Inclusive lower bound paired with `maximum` for `bounded-integer` and `bounded-decimal` + concepts; a derived value under it fails evaluation instead of being disclosed. + type: integer + minimum: -9007199254740991 + maximum: 9007199254740991 + maximum: + description: >- + Inclusive upper bound paired with `minimum` for `bounded-integer` and `bounded-decimal` + concepts; a derived value over it fails evaluation instead of being disclosed. + type: integer + minimum: -9007199254740991 + maximum: 9007199254740991 + bounded-decimal-constraints: + type: object + additionalProperties: false + required: + - minimum + - maximum + - maximumScale + properties: + minimum: + $ref: '#/$defs/canonical-decimal-text' + maximum: + $ref: '#/$defs/canonical-decimal-text' + maximumScale: + description: >- + Upper bound on the number of fractional digits accepted for a `bounded-decimal` + concept's derived value; a finer scale fails validation instead of being rounded. + type: integer + minimum: 0 + maximum: 9 + canonical-decimal-text: + type: string + pattern: ^-?(0|[1-9][0-9]*)(\.[0-9]*[1-9])?$ + bucket-constraints: + type: object + additionalProperties: false + required: + - bucketScheme + - schemeVersion + properties: + bucketScheme: + description: >- + URI naming the reviewed bucket scheme for a `date-bucket` or `time-bucket` concept; + paired with `schemeVersion`, `bucketScheme` resolves to exactly one codelist artifact, + so only the matched bucket code is disclosed and the underlying date, instant, or + duration never appears in the assertion. + $ref: '#/$defs/uri' + schemeVersion: + type: string + minLength: 1 + maxLength: 128 + entity-reference-constraints: + type: object + additionalProperties: false + required: + - maximumBytes + properties: + maximumBytes: + type: integer + minimum: 1 + maximum: 8192 + controlled-code-list-constraints: + type: object + additionalProperties: false + required: + - codelist + - codelistVersion + - minimumItems + - maximumItems + - unique + properties: + codelist: + $ref: '#/$defs/relative-path' + codelistVersion: + type: string + minLength: 1 + maxLength: 128 + minimumItems: + description: >- + Inclusive lower bound paired with `maximumItems` on how many items a `controlled-code-list` + or `entity-reference-list` concept discloses; a shorter derived list fails validation. + type: integer + minimum: 1 + maximum: 64 + maximumItems: + description: >- + Inclusive upper bound paired with `minimumItems` on how many items a `controlled-code-list` + or `entity-reference-list` concept discloses; a longer derived list fails validation. + type: integer + minimum: 1 + maximum: 64 + unique: + description: >- + Requires every item in a `controlled-code-list` or `entity-reference-list` concept's + disclosed list to be pairwise distinct; a duplicate item fails validation instead + of being deduplicated or disclosed twice. + const: true + entity-reference-list-constraints: + type: object + additionalProperties: false + required: + - minimumItems + - maximumItems + - unique + properties: + minimumItems: + type: integer + minimum: 1 + maximum: 64 + maximumItems: + type: integer + minimum: 1 + maximum: 64 + unique: + const: true + reviewed-structured-value-constraints: + type: object + additionalProperties: false + required: + - schema + - maximumSerializedBytes + properties: + schema: + description: >- + URI resolving to exactly one closed JSON Schema artifact in the immutable bundle + that a `reviewed-structured-value` concept's fields are validated against; the schema + closes every property, so unexpected or additional JSON in the derived value fails + validation. + $ref: '#/$defs/uri' + maximumSerializedBytes: + description: >- + Caps the serialized JSON byte length of a `reviewed-structured-value` concept's + entire disclosed object; an oversized derived value fails validation before signing. + type: integer + minimum: 1 + maximum: 65536 + sd-jwt-vc-concept-projection: + type: object + additionalProperties: false + required: + - claim + - disclosure + properties: + claim: + description: >- + Public claim name substituted for the concept identifier in the SD-JWT VC response; + it must be unique within the requirement and cannot collide with a profile-owned + claim. + type: string + pattern: ^[A-Za-z][A-Za-z0-9_]{0,63}$ + disclosure: + description: >- + Fixes where the structured value's field-level disclosures are exposed in the SD-JWT + VC claim set: as an always-visible top-level object under `sdJwtVc.claim`. + const: top-level + parameter-value: + oneOf: + - type: string + maxLength: 1024 + - type: integer + minimum: -9007199254740991 + maximum: 9007199254740991 + - type: boolean + - $ref: '#/$defs/decimal-value' + - type: array + minItems: 1 + maxItems: 64 + items: + description: >- + One decimal bucket boundary in an ordered array parameter, evaluated by the `bucket_number` + primitive to classify a derived decimal into the matching boundary's code; each + lower bound must equal the previous boundary's upper bound, and a gap fails validation + at startup. + $ref: '#/$defs/bucket-boundary' + decimal-value: + type: object + additionalProperties: false + required: + - type + - value + properties: + type: + description: >- + Literal `decimal` discriminator marking the typed-decimal form, required wherever + that form appears and present only alongside `value`. + const: decimal + value: + description: >- + Canonical decimal text of the typed-decimal form, restricted to exact finite decimal + text with no exponent, no leading zero, and no trailing fractional zero. + type: string + pattern: ^-?(0|[1-9][0-9]*)(\.[0-9]*[1-9])?$ + bucket-boundary: + type: object + additionalProperties: false + required: + - minimumInclusive + - maximumExclusive + - code + properties: + minimumInclusive: + description: >- + Inclusive lower bound of this boundary's half-open interval, expressed with the + same typed-decimal shape as a scalar parameter value. + $ref: '#/$defs/decimal-value' + maximumExclusive: + description: >- + Exclusive upper bound of this boundary's half-open interval, expressed with the + same typed-decimal shape as a scalar parameter value. + $ref: '#/$defs/decimal-value' + code: + description: >- + Output code returned when a derived decimal falls inside this boundary's interval; + duplicate codes across the array fail validation at startup. + type: string + pattern: ^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$ +bundle_layout: + root: evidence.yaml + allowed_directories: + - adapter-packs + - adapters + - derivations + - schemas + - codelists + - fixtures + - public-keys + - queries + symlinks: prohibited + path_escape: prohibited + unknown_files: prohibited +atomic_revision: + digest: sha256 over a canonical sorted path manifest plus exact file bytes + trust: Established by operator deployment controls, not by the digest itself. + lifetime: >- + Mounted read-only and loaded once; reload, merge, mutation, fallback, and partial serving + are prohibited. +startup_checks: + - Unique stable identifiers and no dangling references. + - Complete role/profile/origin/authority/source bindings. + - >- + Secret references resolve without expanding values into YAML or diagnostics. + - >- + Scripts compile and use only the Version 1 ABI and primitive allowlist. + - Schemas and codelists are closed, versioned, bounded, and referenced. + - >- + Each reviewed structured-value schema URI resolves to exactly one schema artifact by its + `$id`; missing, duplicate, unreferenced, or open schemas fail startup. + - >- + Each date- or time-bucket scheme URI and version resolves to exactly one reviewed codelist + artifact; missing, duplicate, or unreferenced schemes fail startup. + - >- + Fixtures cover positive, negative, boundary, missing, no-match, ambiguous, source failure, + and anti-reconstruction cases. When an initial HTTP source declares unresolvedProblem, one + data-free declaredUnresolved case may satisfy both no-match and ambiguous coverage because + the upstream contract has already collapsed those states; the fixture carries no lookup + label or Problem Details members. + - >- + The complete simultaneously enabled requirement set passes disclosure-combination review. + - >- + No two enabled requirements share a disclosureGuard family; a shared family rejects the + bundle regardless of purposes, audiences, requester entitlements, or rate limits. + - >- + Each context-derived or grant-derived subject has valueClaims whose keys exactly equal + the named selector profile field set; missing, extra, duplicate-target, or invalid claim + paths fail startup. + - Request-derived subjects have no valueClaims. + - >- + Each source route input maps to exactly one authorized selector role, profile and field; + pack route logic receives only those named minimized values. + - >- + Configured authority claim names are distinct and none names a registered JWT claim; `sub` + is permitted for principalClaim alone, because it already carries the principal. A repeated + or shadowing name would read one verified token member as something the issuer wrote for + another purpose. + - >- + For authenticated-grant origin, the complete shared task-grant claim set must be present and + unexpired. The signed principal, client, resource, source issuer, purpose, authority, and + Evidence requirement bound must exactly match verified request context and the selected + profile before selector resolution. A present malformed grant cannot fall back to a standing + profile. + - >- + Required signing, audit, credential, and source dependencies are ready. + - >- + The active and published public JWK files are public-only exact ES256 P-256 JWKs whose + 43-character kid equals their RFC 7638 thumbprint; paths, kids, and key material are unique + and no revoked identifier is active, published, or served. + - >- + The active plus published set contains at most 33 keys. A published predecessor remains + available for the maximum assertion validity plus clock skew, unless emergency revocation + requires immediate removal and denylisting. + - >- + The runtime signer matches the governed active public JWK exactly and passes a startup + sign-and-verify test; local assurance uses local-jwk and production or evidence-grade + uses Transit. + - >- + Every secret reference uses the closed file-secret grammar and is resolved beneath runtime.yaml + secretProviders.file.root. + - >- + Every selected pack route, endpoint, script, query, host-protocol configuration and Evidence + schema is present in the digest-pinned captured pack closure before startup succeeds. + - >- + Every source and derivation selector-input contract is closed and cross-referenced to the + exact authorized role/profile/field set. +secret_policy: + permitted: >- + Secret references matching the exact secret-reference grammar only: `secret:file/name` + logical names, and `secret:env/NAME` variable names, which resolve only when the runtime + enables secretProviders.environment. + prohibited: >- + private key, password, bearer token, client secret, or expanded environment value in any + bundle file + oauth_placement_rule: >- + Client credentials travel in the Authorization header or the token request body only. + There is no query-string placement, so no credential can reach a token URL, and the token + URL, body, response, and debug output are still fully redacted. + file_provider_rule: >- + Resolve secret:file logical names beneath the configured owner-controlled file root, reject + symlinks and path traversal, require regular owner-only files, and parse values as data. + environment_provider_rule: >- + Resolve secret:env names from the process environment only when the runtime declares + secretProviders.environment; a bundle reference naming the environment is refused at + startup otherwise, and values are parsed as data. + environment_expression_rule: >- + The bundle is parsed as written. A `${...}` environment expression in any bundle key or + string value is refused at startup, naming the field and never the expression; + substitution applies to runtime.yaml only. +deployment_rules: + authentication: >- + Evidence independently validates the bearer token against exact configured issuer, audience, + token type, algorithm, and JWKS; upstream identity headers are ignored and rejected if + mapped + audit: >- + keyed pseudonymization remains governed and every audit gate is fail closed; the audit + destination, path, rotation size, and retention come only from runtime.yaml + rate_limit_labels: >- + principal and authority use scoped pseudonyms; raw selector values are never labels or + keys + source_urls: >- + Each reachable pack endpoint must match exactly one reviewed connection policy and one runtime + binding for destination, authentication, trust and client identity. Plain HTTP remains limited + to the engine's explicit development/private-service profiles. + runtime_split: >- + runtime.yaml cannot override any field in this schema; the two closed documents have independent + digests and immutable startup lifetimes diff --git a/public/artifacts/sha256/9d68a7c21821319603e16c3fb1a381e206a4f488a3eae95c9544180004ae2ea3.json b/public/artifacts/sha256/9d68a7c21821319603e16c3fb1a381e206a4f488a3eae95c9544180004ae2ea3.json new file mode 100644 index 000000000..36236290a --- /dev/null +++ b/public/artifacts/sha256/9d68a7c21821319603e16c3fb1a381e206a4f488a3eae95c9544180004ae2ea3.json @@ -0,0 +1,1052 @@ +{ + "$defs": { + "AccessConfig": { + "additionalProperties": false, + "description": "The OIDC issuer a runtime accepts access tokens from: the exact `iss`\nvalue, the `aud` value a token must carry, and where the issuer's signing\nkeys come from, written under `authentication.oidc` beside the product's\nown token rules.", + "properties": { + "allowInsecureHttp": { + "default": false, + "description": "Permit plain HTTP beyond loopback to the configured issuer and to a\nJWKS URI declared in configuration. TLS remains required unless the\noperator explicitly accepts this transport risk.", + "type": "boolean" + }, + "assertionIssuers": { + "additionalProperties": { + "items": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "maxItems": 16, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "description": "Assertion authorities each client may exchange a subject token from,\nkeyed by client identifier. Omitted, no assertion-issuer rule applies;\nwritten, it lists at least one client, each with at least one\nauthority. Once a client is listed, a token it exchanged is accepted\nonly for one of that client's declared authorities, and a client that\nis not listed may exchange from no authority.", + "maxProperties": 64, + "minProperties": 1, + "propertyNames": { + "$ref": "#/$defs/ExternalId", + "maxLength": 128 + }, + "type": "object" + }, + "audience": { + "description": "The audience every accepted access token must carry in `aud`.", + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "issuer": { + "$ref": "#/$defs/Url", + "description": "Exact issuer accepted in access-token `iss` claims, an absolute\n`https` URL, or a plain `http` URL when `allowInsecureHttp` is set." + }, + "jwksSource": { + "$ref": "#/$defs/JwksSource", + "default": { + "type": "discovery" + }, + "description": "Where the issuer's signing keys come from. Absent reads the issuer's\nOpenID Connect discovery document." + }, + "policies": { + "additionalProperties": { + "$ref": "#/$defs/ClientPolicy" + }, + "maxProperties": 64, + "minProperties": 1, + "propertyNames": { + "$ref": "#/$defs/ExternalId", + "maxLength": 128 + }, + "type": "object" + }, + "scopeClaim": { + "$ref": "#/$defs/ExternalId", + "default": "registry_scopes", + "maxLength": 128 + } + }, + "required": [ + "issuer", + "audience", + "policies" + ], + "type": "object" + }, + "Action": { + "enum": [ + "start", + "status", + "inspect", + "retry-same", + "cancel", + "reconcile", + "doctor", + "restore-hold", + "release-restore-hold", + "release-admission-hold", + "complete-execution-recovery", + "retain" + ], + "type": "string" + }, + "AuthorizationConfig": { + "additionalProperties": false, + "properties": { + "clientAssertionAudience": { + "$ref": "#/$defs/ExternalId" + }, + "clientId": { + "$ref": "#/$defs/ExternalId", + "maxLength": 256 + }, + "resource": { + "$ref": "#/$defs/ExternalId" + }, + "scopes": { + "items": { + "$ref": "#/$defs/ExternalId" + }, + "maxItems": 32, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "signingKeyRef": { + "$ref": "#/$defs/SecretReference" + }, + "taskAuthority": { + "$ref": "#/$defs/TaskAuthorityConfig" + }, + "tokenEndpoint": { + "$ref": "#/$defs/Url" + } + }, + "required": [ + "tokenEndpoint", + "clientId", + "signingKeyRef", + "resource", + "scopes" + ], + "type": "object" + }, + "ClientPolicy": { + "additionalProperties": false, + "allOf": [ + { + "else": { + "required": [ + "workflows" + ] + }, + "if": { + "properties": { + "actions": { + "items": { + "enum": [ + "doctor", + "restore-hold", + "release-restore-hold", + "release-admission-hold", + "complete-execution-recovery", + "retain" + ] + } + } + } + }, + "then": { + "not": { + "required": [ + "workflows" + ] + } + } + } + ], + "properties": { + "actions": { + "items": { + "$ref": "#/$defs/Action" + }, + "maxItems": 15, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "operator": { + "default": false, + "type": "boolean" + }, + "requiredScopes": { + "items": { + "$ref": "#/$defs/ExternalId" + }, + "maxItems": 64, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "subjects": { + "description": "The exact token `sub` values this policy admits, compared byte for\nbyte as the issuer writes them: the client's own service-account\nsubject, or the named operators an operator policy serves. Each is at\nmost 512 bytes. A verified token from this client whose subject is not\nlisted is refused, and the list has no unrestricted form.", + "items": { + "$ref": "#/$defs/ExternalId" + }, + "maxItems": 64, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "workflows": { + "description": "The workflows this policy's run actions reach: start, status, inspect,\nretry-same, cancel and reconcile. Required when the policy lists a run\naction and refused when it lists none.", + "items": { + "$ref": "#/$defs/ExternalId", + "maxLength": 64, + "pattern": "^[A-Za-z0-9_-]+$" + }, + "maxItems": 64, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "subjects", + "requiredScopes", + "actions" + ], + "type": "object" + }, + "ConnectionConfig": { + "description": "One logical connection namespace. The discriminator selects its complete\ndeployment contract; a connection cannot borrow another variant's authority.", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "authorization": { + "$ref": "#/$defs/AuthorizationConfig" + }, + "baseUrl": { + "$ref": "#/$defs/Url" + }, + "profile": { + "$ref": "#/$defs/ExternalId" + }, + "requestLink": { + "description": "An `https` URL template, or `http` on a loopback address, with exactly\none `{proposalId}` placeholder after the host. Inspection offers it as\n\"Open the request\".", + "maxLength": 2048, + "pattern": "^(https://[^{}]+|http://(127(\\.[0-9]{1,3}){3}|\\[::1\\])(:[0-9]{1,5})?)/[^{}]*\\{proposalId\\}[^{}]*$", + "type": "string" + }, + "resultCheckSeconds": { + "default": 900, + "description": "Spaces scheduled reads of a followed Proposal. It decides only how a\nwaiting run is read, so it stays outside the binding digest.", + "format": "uint32", + "maximum": 86400, + "minimum": 60, + "type": "integer" + }, + "type": { + "const": "breg", + "type": "string" + } + }, + "required": [ + "type", + "baseUrl", + "authorization", + "profile" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "authorization": { + "$ref": "#/$defs/AuthorizationConfig" + }, + "baseUrl": { + "$ref": "#/$defs/Url" + }, + "completion": { + "$ref": "#/$defs/ReviewCompletionConfig", + "description": "Authenticated minimized wake-ups; omission uses polling only." + }, + "producer": { + "$ref": "#/$defs/LocalId" + }, + "profile": { + "$ref": "#/$defs/ExternalId" + }, + "resultCheckSeconds": { + "default": 900, + "format": "uint32", + "maximum": 86400, + "minimum": 60, + "type": "integer" + }, + "type": { + "const": "casework-review-producer", + "type": "string" + } + }, + "required": [ + "type", + "baseUrl", + "authorization", + "profile", + "producer" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "authorization": { + "$ref": "#/$defs/AuthorizationConfig" + }, + "baseUrl": { + "$ref": "#/$defs/Url" + }, + "type": { + "const": "messaging", + "type": "string" + } + }, + "required": [ + "type", + "baseUrl", + "authorization" + ], + "type": "object" + }, + { + "additionalProperties": false, + "allOf": [ + { + "else": { + "not": { + "required": [ + "observationAuthorization" + ] + } + }, + "if": { + "properties": { + "authorization": { + "properties": { + "taskAuthority": { + "type": "object" + } + }, + "required": [ + "taskAuthority" + ] + } + } + }, + "then": { + "required": [ + "observationAuthorization" + ] + } + } + ], + "properties": { + "authorization": { + "$ref": "#/$defs/AuthorizationConfig" + }, + "baseUrl": { + "$ref": "#/$defs/Url" + }, + "observationAuthorization": { + "$ref": "#/$defs/AuthorizationConfig", + "description": "Ordinary receipt reads under the original owner, without taskAuthority." + }, + "type": { + "const": "scheduling", + "type": "string" + } + }, + "required": [ + "type", + "baseUrl", + "authorization" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "The reviewed directory contract and environment-specific destination.", + "properties": { + "attemptTimeoutMilliseconds": { + "default": 2000, + "format": "uint64", + "maximum": 2000, + "minimum": 1, + "type": "integer" + }, + "authorization": { + "$ref": "#/$defs/AuthorizationConfig", + "description": "Omission makes the configured read public; it never inherits a caller token.", + "not": { + "required": [ + "taskAuthority" + ] + } + }, + "baseUrl": { + "$ref": "#/$defs/Url", + "pattern": "^[^\\s\\\\]+$" + }, + "commandPath": { + "$ref": "#/$defs/ExternalId", + "description": "The one exact relative path that `external.command/v1` may POST to.\nOmission keeps the connection read-only." + }, + "maximumResponseBytes": { + "default": 65536, + "format": "uint64", + "maximum": 65536, + "minimum": 1, + "type": "integer" + }, + "paths": { + "items": { + "$ref": "#/$defs/ExternalId" + }, + "maxItems": 16, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "queryParameters": { + "description": "Omission permits no query parameters.", + "items": { + "$ref": "#/$defs/ExternalId" + }, + "maxItems": 16, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "responseSchema": { + "description": "Local JSON Schema for the complete {status, body} response.", + "x-registry-foreign": "json-schema-2020-12" + }, + "type": { + "const": "external-http", + "type": "string" + } + }, + "required": [ + "type", + "baseUrl", + "paths", + "responseSchema" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "attemptTimeoutMilliseconds": { + "default": 8000, + "format": "uint64", + "maximum": 8000, + "minimum": 1, + "type": "integer" + }, + "authorization": { + "$ref": "#/$defs/DecisionAuthorization" + }, + "baseUrl": { + "$ref": "#/$defs/Url", + "pattern": "^[^\\s\\\\]+$" + }, + "maximumRequestBytes": { + "default": 65536, + "format": "uint64", + "maximum": 65536, + "minimum": 1, + "type": "integer" + }, + "maximumResponseBytes": { + "default": 65536, + "format": "uint64", + "maximum": 65536, + "minimum": 1, + "type": "integer" + }, + "model": { + "$ref": "#/$defs/ExternalId" + }, + "protocol": { + "$ref": "#/$defs/DecisionProtocol" + }, + "type": { + "const": "evaluation", + "type": "string" + } + }, + "required": [ + "type", + "protocol", + "baseUrl", + "model", + "authorization" + ], + "type": "object" + } + ] + }, + "DatabaseConfig": { + "additionalProperties": false, + "description": "The PostgreSQL connection a stateful runtime uses. Both URLs are secret\nreferences and may name the same secret.", + "properties": { + "migrationUrlRef": { + "$ref": "#/$defs/SecretReference", + "description": "Secret reference to the migration connection URL." + }, + "runtimeUrlRef": { + "$ref": "#/$defs/SecretReference", + "description": "Secret reference to the least-privileged runtime connection URL." + }, + "testOnlyPlaintext": { + "default": false, + "description": "Allow a plaintext connection. Refused outside test builds.", + "type": "boolean" + }, + "trustedRootCertificateRef": { + "$ref": "#/$defs/SecretReference", + "description": "Secret reference to a PEM root certificate the connection trusts.\nAbsent, the connection trusts the platform's root certificates." + } + }, + "required": [ + "runtimeUrlRef", + "migrationUrlRef" + ], + "type": "object" + }, + "DecisionAuthorization": { + "description": "Explicit service identity. Local authorization is limited to numeric loopback.", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "bearer": { + "additionalProperties": false, + "properties": { + "principal": { + "$ref": "#/$defs/ExternalId" + }, + "tokenRef": { + "$ref": "#/$defs/SecretReference" + } + }, + "required": [ + "tokenRef", + "principal" + ], + "type": "object" + } + }, + "required": [ + "bearer" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "local": { + "additionalProperties": false, + "type": "object" + } + }, + "required": [ + "local" + ], + "type": "object" + } + ] + }, + "DecisionProtocol": { + "enum": [ + "system-one", + "openai-decisions" + ], + "type": "string" + }, + "DeploymentConfig": { + "additionalProperties": false, + "properties": { + "activeStateKey": { + "format": "uint32", + "maximum": 4294967295, + "minimum": 1, + "type": "integer" + }, + "admissionKeyRef": { + "$ref": "#/$defs/SecretReference" + }, + "auditFile": { + "pattern": "^/+(?:(?:[^/.][^/]*|\\.(?:[^/.][^/]*|\\.[^/]+)?)/+)*(?:[^/.][^/]*|\\.(?:[^/.][^/]*|\\.[^/]+))$", + "type": "string" + }, + "auditKeyRef": { + "$ref": "#/$defs/SecretReference" + }, + "authentication": { + "$ref": "#/$defs/AccessConfig" + }, + "databaseId": { + "$ref": "#/$defs/ExternalId", + "maxLength": 128 + }, + "listener": { + "$ref": "#/$defs/PrivateListenerConfig" + }, + "metricsListener": { + "$ref": "#/$defs/ListenerConfig", + "description": "The operator-private socket `/metrics` is served on. When it is\nomitted, no metrics are served." + }, + "packages": { + "description": "One pinned package per workflow. List each package root and digest once.", + "items": { + "allOf": [ + { + "$ref": "#/$defs/PackageConfig" + }, + { + "properties": { + "expectedDigest": { + "$ref": "#/$defs/Digest" + } + }, + "required": [ + "expectedDigest" + ] + } + ], + "unevaluatedProperties": false + }, + "maxItems": 16, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "runtimeRole": { + "maxLength": 63, + "pattern": "^[a-z_][a-z0-9_]{0,62}$", + "type": "string" + }, + "stateKeys": { + "additionalProperties": false, + "maxProperties": 16, + "minProperties": 1, + "patternProperties": { + "^[^\\u0000-\\u001F\\u007F-\\u009F]+$": { + "$ref": "#/$defs/StateKeyConfig" + } + }, + "propertyNames": { + "$ref": "#/$defs/ExternalId", + "maxLength": 10, + "pattern": "^[1-9][0-9]*$" + }, + "type": "object" + } + }, + "required": [ + "databaseId", + "runtimeRole", + "packages", + "listener", + "authentication", + "auditFile", + "auditKeyRef", + "activeStateKey", + "stateKeys", + "admissionKeyRef" + ], + "type": "object" + }, + "Digest": { + "description": "A SHA-256 digest: `sha256:` followed by 64 lowercase hex digits.", + "pattern": "^sha256:[0-9a-f]{64}$", + "type": "string" + }, + "EnvironmentSecretProviderConfig": { + "additionalProperties": false, + "description": "The environment secret provider. It takes no settings.", + "type": "object" + }, + "EventSourceConfig": { + "additionalProperties": false, + "description": "Trusted producer binding. Event vocabulary and mapping stay in the package.", + "properties": { + "signingKeyRef": { + "$ref": "#/$defs/SecretReference", + "description": "Protected reference to the raw HMAC-SHA-256 key, at least 32 bytes." + }, + "source": { + "$ref": "#/$defs/ExternalId", + "description": "Exact absolute producer URI that signed event envelopes must declare." + } + }, + "required": [ + "source", + "signingKeyRef" + ], + "type": "object" + }, + "ExternalId": { + "description": "An identifier another system issues, written exactly as its issuer gives it.", + "maxLength": 512, + "minLength": 1, + "pattern": "^[^\\u0000-\\u001F\\u007F-\\u009F]+$", + "type": "string" + }, + "FileSecretProviderConfig": { + "additionalProperties": false, + "description": "The file secret provider.", + "properties": { + "root": { + "description": "Absolute directory holding one file per secret. Each file must be a\nregular file owned by the runtime user, mode 0400 or 0600, with exactly\none hard link.", + "pattern": "^/", + "type": "string" + } + }, + "required": [ + "root" + ], + "type": "object" + }, + "JwksSource": { + "description": "Where a runtime obtains the OIDC issuer's signing keys.", + "oneOf": [ + { + "additionalProperties": false, + "description": "Read `jwks_uri` from the issuer's OpenID Connect discovery document.", + "properties": { + "type": { + "const": "discovery", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Fetch the key set from this absolute `https` URI, skipping discovery.\nA plain `http` URI is accepted on loopback for supervised local\ndevelopment, and beyond loopback only when the issuer block sets\n`allowInsecureHttp`.", + "properties": { + "type": { + "const": "uri", + "type": "string" + }, + "uri": { + "$ref": "#/$defs/Url" + } + }, + "required": [ + "type", + "uri" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Read the key set from a secret, for deployments without network access\nto the issuer.", + "properties": { + "documentRef": { + "$ref": "#/$defs/SecretReference" + }, + "type": { + "const": "static", + "type": "string" + } + }, + "required": [ + "type", + "documentRef" + ], + "type": "object" + } + ] + }, + "ListenerBind": { + "description": "Socket address the runtime listens on, written host:port with an IP address host ([addr]:port for IPv6).", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "ListenerConfig": { + "additionalProperties": false, + "description": "The listener of a runtime that declares no TLS or exposure settings.", + "properties": { + "bind": { + "$ref": "#/$defs/ListenerBind" + } + }, + "required": [ + "bind" + ], + "type": "object" + }, + "ListenerNetworkExposure": { + "description": "The operator-declared private network placement of an HTTP listener.", + "enum": [ + "private-address", + "container-private" + ], + "type": "string" + }, + "LocalId": { + "description": "A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.", + "pattern": "^[a-z][a-z0-9_-]{0,63}$", + "type": "string" + }, + "PackageConfig": { + "additionalProperties": false, + "description": "The package a runtime serves: `root` is the absolute package directory,\nand `expectedDigest`, when set, pins the package digest the runtime must\nfind there. The package digest is the digest of the package's\n`SHA256SUMS` file; see [`crate::package`].", + "properties": { + "expectedDigest": { + "$ref": "#/$defs/Digest", + "description": "`sha256:` label of the package digest, the digest of the package's\n`SHA256SUMS` file. When set, the runtime refuses to start on any other\npackage." + }, + "root": { + "description": "Absolute path of the package directory.", + "pattern": "^/", + "type": "string" + } + }, + "required": [ + "root" + ], + "type": "object" + }, + "PrivateListenerConfig": { + "additionalProperties": false, + "description": "The listener of a runtime that declares its TLS termination and network\nexposure.", + "properties": { + "bind": { + "$ref": "#/$defs/ListenerBind" + }, + "networkExposure": { + "$ref": "#/$defs/ListenerNetworkExposure", + "default": "private-address" + }, + "tlsTermination": { + "$ref": "#/$defs/TlsTermination" + } + }, + "required": [ + "bind", + "tlsTermination" + ], + "type": "object" + }, + "ReviewCompletionConfig": { + "additionalProperties": false, + "description": "How Casework's completion event for this connection's review requests is\nauthenticated. The event only wakes a waiting run: the run reads the result\nitself with its own producer authorization.", + "properties": { + "bearerTokenRef": { + "$ref": "#/$defs/SecretReference", + "description": "The bearer token Casework's completion destination sends." + }, + "recipientBinding": { + "description": "The recipientBinding the Casework project names for this producer's\ncompletion destination: 1 to 256 printable ASCII characters without\nspaces. Casework sends it in the registry-recipient-binding header.", + "maxLength": 256, + "minLength": 1, + "pattern": "^[!-~]{1,256}$", + "type": "string" + } + }, + "required": [ + "recipientBinding", + "bearerTokenRef" + ], + "type": "object" + }, + "SecretProvidersConfig": { + "additionalProperties": false, + "anyOf": [ + { + "properties": { + "file": { + "$ref": "#/$defs/FileSecretProviderConfig" + } + }, + "required": [ + "file" + ] + }, + { + "properties": { + "environment": { + "$ref": "#/$defs/EnvironmentSecretProviderConfig" + } + }, + "required": [ + "environment" + ] + } + ], + "description": "The secret providers a runtime enables. A reference is resolved only by a\nprovider declared here: `secret:file/name` under `file.root`, and\n`secret:env/NAME` only when `environment: {}` is present.", + "properties": { + "environment": { + "$ref": "#/$defs/EnvironmentSecretProviderConfig", + "description": "Enables `secret:env/NAME` references, read from the process\nenvironment. Declared as an empty mapping: `environment: {}`." + }, + "file": { + "$ref": "#/$defs/FileSecretProviderConfig", + "description": "Enables `secret:file/name` references, read from files under `root`." + } + }, + "type": "object" + }, + "SecretReference": { + "description": "An exact secret reference: secret:file/name, resolved under secretProviders.file.root, or secret:env/NAME, resolved only when secretProviders.environment is declared.", + "pattern": "^(?:secret:env/[A-Z][A-Z0-9_]{0,127}|secret:file/[a-z][a-z0-9._-]{0,127})$", + "type": "string" + }, + "StateKeyConfig": { + "additionalProperties": false, + "properties": { + "keyRef": { + "$ref": "#/$defs/SecretReference" + } + }, + "required": [ + "keyRef" + ], + "type": "object" + }, + "TaskAuthorityConfig": { + "additionalProperties": false, + "properties": { + "baseUrl": { + "$ref": "#/$defs/Url" + }, + "bootstrapResource": { + "$ref": "#/$defs/ExternalId" + }, + "exchangeAudience": { + "$ref": "#/$defs/ExternalId" + }, + "issuer": { + "$ref": "#/$defs/ExternalId" + }, + "subject": { + "$ref": "#/$defs/ExternalId" + } + }, + "required": [ + "baseUrl", + "issuer", + "subject", + "exchangeAudience", + "bootstrapResource" + ], + "type": "object" + }, + "TlsTermination": { + "description": "Declares the trusted transport boundary for a runtime's plaintext HTTP\nlistener. Production listeners require operator-controlled upstream TLS\ntermination; direct plaintext is limited to the explicit loopback-only\ndevelopment mode.", + "enum": [ + "operator-controlled-upstream", + "development-loopback" + ], + "type": "string" + }, + "Url": { + "description": "An absolute http or https URL with a host preserved as written, no user information, and no backslash, whitespace or control character. DNS case and equivalent IPv6 literals are permitted.", + "format": "uri", + "maxLength": 2048, + "pattern": "^[Hh][Tt][Tt][Pp][Ss]?://[^/?#@\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]+([/?#][^\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]*)?$", + "type": "string" + } + }, + "$id": "https://id.registrystack.org/schemas/coordinator/runtime/runtime.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/coordinator/runtime/v1alpha1", + "type": "string" + }, + "connections": { + "additionalProperties": { + "$ref": "#/$defs/ConnectionConfig" + }, + "description": "Named deployment bindings with one explicit type per connection.", + "maxProperties": 16, + "minProperties": 1, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "database": { + "allOf": [ + { + "$ref": "#/$defs/DatabaseConfig" + }, + { + "properties": { + "testOnlyPlaintext": { + "const": false + } + } + } + ], + "unevaluatedProperties": false + }, + "deployment": { + "$ref": "#/$defs/DeploymentConfig" + }, + "eventSources": { + "additionalProperties": { + "$ref": "#/$defs/EventSourceConfig" + }, + "description": "Optional trusted event producers keyed by the logical IDs used in Workflow triggers.", + "maxProperties": 16, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "kind": { + "const": "CoordinatorRuntimeConfig", + "type": "string" + }, + "minimumObservationIntervalSeconds": { + "default": 30, + "description": "Stricter deployment spacing for every product completion observation.", + "format": "uint32", + "maximum": 86400, + "minimum": 30, + "type": "integer" + }, + "namespace": { + "maxLength": 60, + "pattern": "^coordinator_[a-z0-9_]*$", + "type": "string" + }, + "secretProviders": { + "$ref": "#/$defs/SecretProvidersConfig" + } + }, + "required": [ + "secretProviders", + "database", + "namespace", + "connections", + "apiVersion", + "kind" + ], + "title": "RuntimeConfig", + "type": "object" +} diff --git a/public/artifacts/sha256/a21e02c4ca6980e0eb4dc733b99b1fdb465aec8fa1c661ec70e86d71d4146e06.json b/public/artifacts/sha256/a21e02c4ca6980e0eb4dc733b99b1fdb465aec8fa1c661ec70e86d71d4146e06.json new file mode 100644 index 000000000..d6f5060b4 --- /dev/null +++ b/public/artifacts/sha256/a21e02c4ca6980e0eb4dc733b99b1fdb465aec8fa1c661ec70e86d71d4146e06.json @@ -0,0 +1,506 @@ +{ + "$defs": { + "AffectedRowBounds": { + "additionalProperties": false, + "properties": { + "maximum": { + "description": "The document member `maximum`.", + "format": "uint64", + "maximum": 100000000, + "minimum": 0, + "type": "integer" + }, + "minimum": { + "description": "The document member `minimum`.", + "format": "uint64", + "maximum": 100000000, + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "minimum", + "maximum" + ], + "type": "object" + }, + "ChunkCursorProtocol": { + "enum": [ + "record-id-uuid-array" + ], + "type": "string" + }, + "CompiledRegistryChangeCode": { + "enum": [ + "registry-identity-changed", + "registry-version-changed", + "record-timer-store-added", + "entity-added", + "entity-removed", + "entity-physical-name-changed", + "entity-route-changed", + "entity-mutation-mode-changed", + "entity-classification-changed", + "entity-access-requirements-changed", + "entity-access-log-changed", + "entity-geo-json-changed", + "entity-temporal-changed", + "field-added-optional", + "field-added-required", + "field-removed", + "field-type-changed", + "field-vocabulary-codes-added", + "field-length-widened", + "field-physical-name-changed", + "field-requiredness-changed", + "field-generation-changed", + "field-pattern-added", + "field-pattern-changed", + "field-pattern-removed", + "field-encryption-changed", + "field-lookup-changed", + "field-classification-changed", + "field-temporal-role-changed", + "derived-relation-added", + "derived-relation-removed", + "derived-relation-changed", + "reference-target-changed", + "constraint-added", + "constraint-removed", + "constraint-changed", + "index-added", + "index-removed", + "index-changed", + "access-profile-added", + "access-profile-removed", + "access-profile-changed", + "route-added", + "route-removed", + "route-changed", + "query-inventory-changed", + "event-added", + "event-removed", + "event-changed", + "timer-added", + "timer-removed", + "timer-changed", + "action-added", + "action-removed", + "action-changed", + "consent-record-changed", + "recipient-organization-added", + "recipient-organization-removed", + "recipient-organization-changed", + "recipient-group-added", + "recipient-group-removed", + "recipient-group-changed", + "statistical-dataset-added", + "statistical-dataset-removed", + "statistical-dataset-changed" + ], + "type": "string" + }, + "CompiledRegistryChangeTarget": { + "additionalProperties": false, + "properties": { + "kind": { + "$ref": "#/$defs/CompiledRegistryChangeTargetKind" + }, + "memberId": { + "type": "string" + }, + "recordTypeId": { + "type": "string" + } + }, + "required": [ + "kind" + ], + "type": "object" + }, + "CompiledRegistryChangeTargetKind": { + "enum": [ + "registry", + "record-type", + "field", + "derived-relation", + "constraint", + "index", + "access-profile", + "route", + "query-inventory", + "event", + "timer", + "action", + "recipient", + "statistical-dataset" + ], + "type": "string" + }, + "LocalId": { + "description": "A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.", + "pattern": "^[a-z][a-z0-9_-]{0,63}$", + "type": "string" + }, + "ReviewedChangeCover": { + "additionalProperties": false, + "properties": { + "code": { + "$ref": "#/$defs/CompiledRegistryChangeCode" + }, + "target": { + "$ref": "#/$defs/CompiledRegistryChangeTarget" + } + }, + "required": [ + "code", + "target" + ], + "type": "object" + }, + "ReviewedFieldEncryptionHistory": { + "description": "What the reviewed plan does with the plaintext history that exists before\na field-encryption flip activates. `EraseAndRebaseline` destroys the full\nper-record history after activation through the operator lifecycle;\n`RetainPlaintextHistory` keeps serving pre-flip revisions as they were\nwritten, scoped by the flip boundary.", + "enum": [ + "erase-and-rebaseline", + "retain-plaintext-history" + ], + "type": "string" + }, + "ReviewedMigrationAssertionDescriptor": { + "additionalProperties": false, + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "sqlPath": { + "type": "string" + } + }, + "required": [ + "id", + "sqlPath" + ], + "type": "object" + }, + "ReviewedMigrationChangeClass": { + "description": "The descriptor's schema vocabulary mirrors `descriptor_problems`, while\ncompiled package changes retain their broader internal classification.", + "enum": [ + "data-backfill-required", + "access-or-disclosure-change", + "destructive-or-irreversible" + ], + "type": "string" + }, + "ReviewedMigrationObject": { + "additionalProperties": false, + "properties": { + "kind": { + "$ref": "#/$defs/ReviewedMigrationObjectKind" + }, + "member": { + "description": "The document member `member`.", + "type": "string" + }, + "physicalName": { + "type": "string" + }, + "recordType": { + "description": "The document member `recordType`.", + "type": "string" + }, + "schema": { + "type": "string" + }, + "table": { + "type": "string" + } + }, + "required": [ + "schema", + "table", + "recordType", + "kind", + "physicalName" + ], + "type": "object" + }, + "ReviewedMigrationObjectKind": { + "enum": [ + "record-type", + "field", + "constraint", + "index" + ], + "type": "string" + }, + "ReviewedMigrationRecovery": { + "description": "How an interrupted activation of the reviewed plan is recovered.\n`bregctl plan --format json` prints the same word.", + "enum": [ + "exact-target-resume" + ], + "type": "string" + }, + "ReviewedMigrationStepDescriptor": { + "description": "One reviewed step, tagged by `type` (CFG-ID-7). Rust field names keep\ntheir engine spelling; each serde rename names the document member.", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "affectedRows": { + "$ref": "#/$defs/AffectedRowBounds" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "objects": { + "items": { + "$ref": "#/$defs/ReviewedMigrationObject" + }, + "type": "array" + }, + "sqlPath": { + "type": "string" + }, + "type": { + "const": "transactional-sql", + "type": "string" + } + }, + "required": [ + "type", + "id", + "sqlPath", + "objects" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "chunkSize": { + "format": "uint32", + "maximum": 1000, + "minimum": 1, + "type": "integer" + }, + "cursor": { + "$ref": "#/$defs/ChunkCursorProtocol" + }, + "exactAffectedRows": { + "type": "boolean" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "lockTimeoutMilliseconds": { + "description": "The document member `lockTimeoutMilliseconds`.", + "format": "uint64", + "maximum": 300000, + "minimum": 1, + "type": "integer" + }, + "maximumTotalRows": { + "description": "The document member `maximumTotalRows`.", + "format": "uint64", + "maximum": 100000000, + "minimum": 1, + "type": "integer" + }, + "objects": { + "items": { + "$ref": "#/$defs/ReviewedMigrationObject" + }, + "type": "array" + }, + "recordType": { + "description": "The document member `recordType`.", + "type": "string" + }, + "sqlPath": { + "type": "string" + }, + "statementTimeoutMilliseconds": { + "description": "The document member `statementTimeoutMilliseconds`.", + "format": "uint64", + "maximum": 3600000, + "minimum": 1, + "type": "integer" + }, + "type": { + "const": "chunked-backfill", + "type": "string" + } + }, + "required": [ + "type", + "id", + "recordType", + "sqlPath", + "objects", + "cursor", + "chunkSize", + "maximumTotalRows", + "lockTimeoutMilliseconds", + "statementTimeoutMilliseconds", + "exactAffectedRows" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "The engine-executed field-encryption backfill: it seals the plaintext\ncolumn of every covered field into envelopes and blind indexes, chunk\nby chunk, with the journal and cursor effects each chunk commits. It\ncarries no authored SQL; its bound statement content is the canonical\nJSON of this descriptor step, so the ledger checksum pins it without a\nSQL artifact. A step whose objects name only blind-index columns is\ninstead the re-index of a changed normalization list: it re-derives\neach digest from the stored envelope and touches nothing else.", + "properties": { + "chunkSize": { + "format": "uint32", + "maximum": 1000, + "minimum": 1, + "type": "integer" + }, + "cursor": { + "$ref": "#/$defs/ChunkCursorProtocol" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "lockTimeoutMilliseconds": { + "description": "The document member `lockTimeoutMilliseconds`.", + "format": "uint64", + "maximum": 300000, + "minimum": 1, + "type": "integer" + }, + "maximumTotalRows": { + "description": "The document member `maximumTotalRows`.", + "format": "uint64", + "maximum": 100000000, + "minimum": 1, + "type": "integer" + }, + "objects": { + "items": { + "$ref": "#/$defs/ReviewedMigrationObject" + }, + "type": "array" + }, + "recordType": { + "description": "The document member `recordType`.", + "type": "string" + }, + "statementTimeoutMilliseconds": { + "description": "The document member `statementTimeoutMilliseconds`.", + "format": "uint64", + "maximum": 3600000, + "minimum": 1, + "type": "integer" + }, + "type": { + "const": "field-encryption-backfill", + "type": "string" + } + }, + "required": [ + "type", + "id", + "recordType", + "objects", + "cursor", + "chunkSize", + "maximumTotalRows", + "lockTimeoutMilliseconds", + "statementTimeoutMilliseconds" + ], + "type": "object" + } + ] + } + }, + "$id": "https://id.registrystack.org/schemas/breg/migration-descriptor/migration-descriptor.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "description": "A reviewed migration's `descriptor.json`. Rust field names keep their\nengine spelling; each serde rename names the document member.", + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/breg/migration-descriptor/v1alpha1", + "description": "The format and version this file is written in.", + "type": "string" + }, + "backupBindingPath": { + "type": "string" + }, + "changeClass": { + "$ref": "#/$defs/ReviewedMigrationChangeClass" + }, + "covers": { + "items": { + "$ref": "#/$defs/ReviewedChangeCover" + }, + "type": "array" + }, + "history": { + "$ref": "#/$defs/ReviewedFieldEncryptionHistory", + "description": "The reviewed choice for pre-flip plaintext history. Required exactly\nwhen a cover turns field encryption on; carried with no default so a\nmissing or silently assumed choice can never reach a plan." + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "kind": { + "const": "BRegMigrationDescriptor", + "description": "The kind of document this file is.", + "type": "string" + }, + "lockTimeoutMilliseconds": { + "description": "The document member `lockTimeoutMilliseconds`.", + "format": "uint64", + "maximum": 300000, + "minimum": 1, + "type": "integer" + }, + "postAssertions": { + "items": { + "$ref": "#/$defs/ReviewedMigrationAssertionDescriptor" + }, + "type": "array" + }, + "preAssertions": { + "items": { + "$ref": "#/$defs/ReviewedMigrationAssertionDescriptor" + }, + "type": "array" + }, + "recovery": { + "$ref": "#/$defs/ReviewedMigrationRecovery" + }, + "rehearsalReceiptPath": { + "type": "string" + }, + "statementTimeoutMilliseconds": { + "description": "The document member `statementTimeoutMilliseconds`.", + "format": "uint64", + "maximum": 3600000, + "minimum": 1, + "type": "integer" + }, + "steps": { + "items": { + "$ref": "#/$defs/ReviewedMigrationStepDescriptor" + }, + "type": "array" + } + }, + "required": [ + "apiVersion", + "kind", + "id", + "changeClass", + "covers", + "recovery", + "lockTimeoutMilliseconds", + "statementTimeoutMilliseconds", + "steps", + "preAssertions", + "postAssertions", + "rehearsalReceiptPath" + ], + "title": "Base Registry Engine reviewed migration descriptor", + "type": "object" +} diff --git a/public/artifacts/sha256/a8d908e534dffcbeee5b1e3352007a4205e0a4614c64a24fd22130f59f0ff264.json b/public/artifacts/sha256/a8d908e534dffcbeee5b1e3352007a4205e0a4614c64a24fd22130f59f0ff264.json new file mode 100644 index 000000000..677c71e35 --- /dev/null +++ b/public/artifacts/sha256/a8d908e534dffcbeee5b1e3352007a4205e0a4614c64a24fd22130f59f0ff264.json @@ -0,0 +1,2641 @@ +{ + "$defs": { + "AggregationStrategy": { + "description": "An aggregation strategy, compiled in and named after Camel's built-ins,\nplus two JSON additions marked as such in\n`products/adapter/CONCEPT.md` section 8.6. Tagged by `type` on the\nwire; every variant is a struct variant, the shape\n`registry-platform-yaml`'s `tagged_union!` reads.", + "oneOf": [ + { + "additionalProperties": false, + "description": "Keep the newest exchange: the default for `enrich`, which replaces\nthe body with the resource reply.", + "properties": { + "type": { + "const": "use-latest", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Keep the original exchange: the default for `split`. With\n`propagateException` false, the split's item failures are\nswallowed and the original message returns\n(manual/split-eip.html, `UseOriginalAggregationStrategy`).", + "properties": { + "propagateException": { + "description": "Whether an item failure is raised after the split completes;\nCamel's default is true.", + "type": "boolean" + }, + "type": { + "const": "use-original", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Concatenate the split results into one list, Camel's `groupedBody`.", + "properties": { + "type": { + "const": "grouped-body", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Append one array's elements into another, refusing a duplicate\n`uniqueBy` value with the `aggregation.duplicate` class.", + "properties": { + "from": { + "description": "The array property the elements are appended into.", + "type": "string" + }, + "into": { + "description": "The message body member the array lands in.", + "type": "string" + }, + "properties": { + "additionalProperties": { + "type": "string" + }, + "description": "Property names carried out of each reply, each naming a\nsingular `jsonpath` on the reply body; an absent selection\nremoves the property (section 8.11.7).", + "type": "object" + }, + "type": { + "const": "json-array-append", + "type": "string" + }, + "uniqueBy": { + "description": "Member whose value must stay unique across appended elements.", + "type": "string" + } + }, + "required": [ + "from", + "into", + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Merge one JSON object into another. No duplicate refusal.", + "properties": { + "from": { + "description": "The object property merged into the body.", + "type": "string" + }, + "into": { + "description": "The message body member the object lands in.", + "type": "string" + }, + "properties": { + "additionalProperties": { + "type": "string" + }, + "description": "Property names carried out of each reply, each naming a\nsingular `jsonpath` on the reply body; an absent selection\nremoves the property (section 8.11.7).", + "type": "object" + }, + "type": { + "const": "json-merge", + "type": "string" + } + }, + "required": [ + "from", + "into", + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "A custom strategy: a Rhai entrypoint over the old and new bodies,\nnamed `oldExchange` and `newExchange` after Camel's own\n`AggregationStrategy.aggregate`.", + "properties": { + "expression": { + "$ref": "#/$defs/RhaiExpression", + "description": "The script file and entrypoint, resolved against the pack's\nscript inventory." + }, + "type": { + "const": "rhai", + "type": "string" + } + }, + "required": [ + "expression", + "type" + ], + "type": "object" + } + ] + }, + "AsyncAcceptedId": { + "additionalProperties": false, + "description": "One JSONPath selector extracting the bounded source operation id from a\ndeclared 202 response. The closed object deliberately admits no other\nexpression language.", + "properties": { + "jsonpath": { + "type": "string" + } + }, + "required": [ + "jsonpath" + ], + "type": "object" + }, + "AsyncUncertaintyRecovery": { + "additionalProperties": false, + "description": "A source-native lookup that can prove the disposition of a host-supplied\ncorrelation id after the initial non-safe send became uncertain.", + "properties": { + "requestHeader": { + "$ref": "#/$defs/ExternalId", + "description": "The one reviewed source-owned request header carrying the id." + }, + "statusRoute": { + "$ref": "#/$defs/ExternalId", + "description": "The safe internal route resolving that correlation id." + } + }, + "required": [ + "requestHeader", + "statusRoute" + ], + "type": "object" + }, + "Capabilities": { + "additionalProperties": false, + "description": "The engine capabilities a pack requires: the components, languages, and\nEIPs its routes use. The ctl refuses a pack the binary cannot run\n(`products/adapter/CONCEPT.md` section 6).", + "properties": { + "components": { + "default": [], + "description": "The components the pack's routes reach.", + "items": { + "$ref": "#/$defs/ComponentKind" + }, + "type": "array", + "uniqueItems": true + }, + "eips": { + "default": [], + "description": "The EIPs the pack's routes use.", + "items": { + "$ref": "#/$defs/Eip" + }, + "type": "array", + "uniqueItems": true + }, + "languages": { + "default": [], + "description": "The expression languages the pack's routes use.", + "items": { + "$ref": "#/$defs/Language" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "ChoiceStep": { + "additionalProperties": false, + "description": "A `choice` step: first matching predicate wins, as Camel's Content-Based\nRouter.", + "properties": { + "otherwise": { + "$ref": "#/$defs/Otherwise", + "description": "The fallback clause." + }, + "when": { + "description": "The clauses, in declaration order.", + "items": { + "$ref": "#/$defs/When" + }, + "type": "array" + } + }, + "required": [ + "when" + ], + "type": "object" + }, + "CircuitBreakerStep": { + "additionalProperties": false, + "description": "A `circuitBreaker` step: resilience4j semantics and defaults\n(`products/adapter/CONCEPT.md` section 8.7), per EIP node,\nprocess-local. Divergence: a rejected call always raises\n`breaker.open`, and `onFallback` runs on failure and on rejection.", + "properties": { + "automaticTransitionFromOpenToHalfOpenEnabled": { + "description": "Automatic open-to-half-open transition (default false).", + "type": "boolean" + }, + "failureRateThreshold": { + "description": "Failure-rate percentage that opens the breaker (resilience4j\ndefault 50).", + "format": "uint32", + "maximum": 100, + "minimum": 1, + "type": "integer" + }, + "ignoreException": { + "description": "Closed classes that count as neither success nor failure. This filter\ntakes precedence over `recordException`, as resilience4j specifies.", + "items": { + "$ref": "#/$defs/ErrorClass" + }, + "maxItems": 37, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "maximumHalfOpenCalls": { + "description": "Permitted half-open calls (default 10).", + "format": "uint32", + "maximum": 4294967295, + "minimum": 1, + "type": "integer" + }, + "minimumNumberOfCalls": { + "description": "Calls recorded before the breaker judges (default 100).", + "format": "uint32", + "maximum": 4294967295, + "minimum": 1, + "type": "integer" + }, + "onFallback": { + "$ref": "#/$defs/OnFallback", + "description": "The fallback, run on a recorded failure and on rejection; its output\nis validated like any route output." + }, + "openStateWaitSeconds": { + "description": "Seconds the breaker stays open (resilience4j\n`waitDurationInOpenState`, default 60).", + "format": "uint32", + "maximum": 4294967295, + "minimum": 1, + "type": "integer" + }, + "recordException": { + "description": "Closed classes that count as breaker failures. When omitted, every\ncatchable failure counts. A named parent covers its descendants, as\nCamel's Java exception predicate covers inheriting exceptions.", + "items": { + "$ref": "#/$defs/ErrorClass" + }, + "maxItems": 37, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "slidingWindowCalls": { + "description": "The count-based window size in calls (default 100); the window type\nis fixed count-based and not configurable.", + "format": "uint32", + "maximum": 4294967295, + "minimum": 1, + "type": "integer" + }, + "slowCallDurationThresholdSeconds": { + "description": "Seconds over which a call counts as slow (default 60).", + "format": "uint32", + "maximum": 4294967295, + "minimum": 1, + "type": "integer" + }, + "slowCallRateThreshold": { + "description": "Slow-call-rate percentage that opens the breaker (default 100).", + "format": "uint32", + "maximum": 100, + "minimum": 1, + "type": "integer" + }, + "steps": { + "description": "The guarded steps.", + "items": { + "$ref": "#/$defs/Step" + }, + "type": "array" + } + }, + "type": "object" + }, + "CodeMap": { + "additionalProperties": false, + "description": "One code map: an explicit conversion table, the port of Camel's type\nconverter (`products/adapter/CONCEPT.md` sections 8.6 and 8.10). No\nconverter chains; a key with no entry raises `conversion.unmapped`.\nThe member stays small enough for CFG-YAML-6 so its content can move to\na digest-pinned data file without a format change.", + "properties": { + "entries": { + "additionalProperties": true, + "description": "The conversion entries; each key is the upstream's own code value,\nthe wire name the source system documents (CFG-ID-2).", + "propertyNames": { + "$ref": "#/$defs/ExternalId" + }, + "type": "object" + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The map identifier." + } + }, + "required": [ + "id", + "entries" + ], + "type": "object" + }, + "ComponentKind": { + "description": "A component kind, the ported subset of Camel's component library\n(`products/adapter/CONCEPT.md` sections 8.8 and 17.2). `rest` is the\nfacade consumer; `direct` calls routes in process; `http`, `graphql`,\n`postgres` and `sqlite-extract` are read-only producers; `file`, `rabbitmq`,\nand `sftp` are job-only sources a facade route may never reach (section\n17.1).", + "enum": [ + "direct", + "file", + "graphql", + "http", + "postgres", + "rabbitmq", + "rest", + "sftp", + "sqlite-extract" + ], + "type": "string" + }, + "ConvertStep": { + "additionalProperties": false, + "description": "One conversion step: `convertBodyTo`, `convertHeaderTo`, and the\n`convertPropertyTo` addition (`products/adapter/CONCEPT.md`\nsection 8.6). Camel's `charset` option is not ported, and `type`\nnames a code map, never a Java type.", + "properties": { + "mandatory": { + "description": "Whether a miss fails the exchange; Camel's default true.", + "type": "boolean" + }, + "name": { + "description": "The header or property name the named forms convert; absent on\n`convertBodyTo`.", + "type": "string" + }, + "toName": { + "description": "The name the converted value lands under, beside the original;\nmeaningful only with `name`.", + "type": "string" + }, + "type": { + "description": "The conversion source, spelled `codeMap:` for a code map the\npack declares.", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + "CsvDecoder": { + "additionalProperties": false, + "description": "The CSV decoder options, the port of Camel's `CsvDataFormat` at\ncamel-4.23.0 restricted to a bounded row decoder\n(`products/adapter/CONCEPT.md` section 8.10, the CSV row). Every kept\noption cites the Java field it ports, and every default is that\nfield's effective default: the reference `DEFAULT` format's comma\ndelimiter, double quote, no comment marker, header record on, and no\ntrimming. The dropped options and the reason each is dropped are\nrecorded in `products/adapter/scratch/core/port-record.md`. Our rows\nare maps keyed by the header record, so `useMaps` has no false form\nhere; type inference is refused, so a field decodes as the text the\nfile carries.", + "properties": { + "commentMarker": { + "description": "The comment marker; absent, comments are off, the reference\nformat's default. Ports `commentMarker`\n(camel-4.23.0:core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/CsvDataFormat.java#commentMarker);\nthe separate `commentMarkerDisabled` flag is folded into absence.", + "maxLength": 1, + "minLength": 1, + "type": "string" + }, + "delimiter": { + "description": "The field delimiter. Ports `delimiter`\n(camel-4.23.0:core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/CsvDataFormat.java#delimiter,\n\"The default value is , (comma)\"; the component-side field the\nengine reads is a `Character`), typed as one character so the\nreader refuses a multi-character delimiter.", + "maxLength": 1, + "minLength": 1, + "type": "string" + }, + "encoding": { + "$ref": "#/$defs/DecoderEncoding", + "description": "The encoding the bytes are decoded with; UTF-8 only." + }, + "header": { + "description": "Whether the file's first record is the column header the row maps\nare keyed by. Ports `headerDisabled`, complemented: Camel's\ndefault keeps headers enabled, so the default here is true\n(camel-4.23.0:core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/CsvDataFormat.java#headerDisabled).\nThe comma-separated header rename list of Camel's `header` field\nis not ported: renaming columns is mapping work, and the row map\nkeys are the file's own header names.", + "type": "boolean" + }, + "quote": { + "description": "The quote character. Ports `quote`\n(camel-4.23.0:core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/CsvDataFormat.java#quote,\n\"The quote character to use. The default is double-quote\ncharacter.\").", + "maxLength": 1, + "minLength": 1, + "type": "string" + }, + "quoteDisabled": { + "description": "Whether quoting is off. Ports `quoteDisabled`\n(camel-4.23.0:core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/CsvDataFormat.java#quoteDisabled);\nfalse keeps Camel's default quoting on.", + "type": "boolean" + }, + "trim": { + "description": "Whether leading and trailing blanks are trimmed. Ports `trim`\n(camel-4.23.0:core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/CsvDataFormat.java#trim);\nfalse keeps the reference format's default.", + "type": "boolean" + } + }, + "type": "object" + }, + "DecoderEncoding": { + "description": "The character encoding a decoder reads. UTF-8 only: Camel carries a\ncharset per exchange where its CSV data format has no encoding option\nof its own; the bounded decoder pins one encoding instead\n(`products/adapter/CONCEPT.md` section 17.2).", + "oneOf": [ + { + "const": "utf-8", + "description": "UTF-8, the only encoding the decoders read.", + "type": "string" + } + ] + }, + "DefaultErrorHandler": { + "additionalProperties": false, + "description": "Camel's `defaultErrorHandler`: a redelivery policy nested under\n`redeliveryPolicy`, as Camel's YAML DSL writes it\n(`products/adapter/CONCEPT.md` section 8.7; CFG-NAME spelling inside).\n`delayPattern` is not ported. Redelivery is per failing endpoint send,\nas in Camel.", + "properties": { + "redeliveryPolicy": { + "$ref": "#/$defs/RedeliveryOptions", + "description": "The nested redelivery policy; the default carries no redelivery,\nso the error propagates after the first attempt." + }, + "retryWhile": { + "$ref": "#/$defs/Expression", + "description": "Stop redelivering early while this predicate holds (Camel\n`retryWhile`, an option of the default error handler as in\nCamel's `DefaultErrorHandlerDefinition`, not of the redelivery\npolicy; section 8.7). Divergence from Camel: the predicate only\nstops redelivery earlier and `maximumRedeliveries` remains the\nhard cap, where Camel lets `retryWhile` override it, so\n`maximumUpstreamCalls` stays a check-time guarantee. The checks\nrefuse the predicate when the handler's policy carries no\nredeliveries." + } + }, + "type": "object" + }, + "Digest": { + "description": "A SHA-256 digest: `sha256:` followed by 64 lowercase hex digits.", + "pattern": "^sha256:[0-9a-f]{64}$", + "type": "string" + }, + "DoCatch": { + "additionalProperties": false, + "description": "A `doCatch` clause of a `doTry`.", + "properties": { + "exception": { + "description": "The matched classes, unique (CFG-ID-6).", + "items": { + "$ref": "#/$defs/ErrorClass" + }, + "type": "array", + "uniqueItems": true + }, + "onWhen": { + "$ref": "#/$defs/Expression", + "description": "Narrow the clause with a predicate." + }, + "steps": { + "description": "The clause's steps.", + "items": { + "$ref": "#/$defs/Step" + }, + "type": "array" + } + }, + "required": [ + "exception" + ], + "type": "object" + }, + "DoFinally": { + "additionalProperties": false, + "description": "The `doFinally` clause of a `doTry`.", + "properties": { + "steps": { + "description": "The always-run steps.", + "items": { + "$ref": "#/$defs/Step" + }, + "type": "array" + } + }, + "type": "object" + }, + "DoTryStep": { + "additionalProperties": false, + "description": "A `doTry` step, ported as in Camel (`manual/try-catch-finally.html`).", + "properties": { + "doCatch": { + "description": "The catch clauses, in declaration order.", + "items": { + "$ref": "#/$defs/DoCatch" + }, + "type": "array" + }, + "doFinally": { + "$ref": "#/$defs/DoFinally", + "description": "The finally clause." + }, + "steps": { + "description": "The guarded steps.", + "items": { + "$ref": "#/$defs/Step" + }, + "type": "array" + } + }, + "type": "object" + }, + "Eip": { + "description": "An EIP a pack may require of the engine, named after the step union in\n`crate::route` (`products/adapter/CONCEPT.md` section 8.6).", + "enum": [ + "choice", + "circuitBreaker", + "convertBodyTo", + "convertHeaderTo", + "convertPropertyTo", + "doTry", + "enrich", + "errorHandler", + "filter", + "idempotentConsumer", + "loop", + "onException", + "pollEnrich", + "removeHeader", + "removeProperty", + "script", + "setBody", + "setHeader", + "setProperty", + "split", + "stop", + "throttle", + "throwException", + "to", + "transform", + "validate" + ], + "type": "string" + }, + "Endpoint": { + "additionalProperties": false, + "description": "One endpoint a route may send to: the component, the authentication\nkind, the declared response headers, the endpoint operations with their\n`idempotentUpstream` claims, and the tested upstream versions\n(`products/adapter/CONCEPT.md` sections 6, 8.8, and 10.2).", + "properties": { + "attemptTimeoutMilliseconds": { + "description": "The longest one attempt to this endpoint may take, in milliseconds.\nEvidence defaults an omission to 30 seconds; facade and job require an\nexplicit value within their ten-second policy. The profile compiler\nowns that policy rather than the shared wire shape.", + "format": "uint64", + "maximum": 18446744073709551615, + "minimum": 1, + "type": "integer" + }, + "authentication": { + "$ref": "#/$defs/EndpointAuthentication", + "description": "The upstream authentication kind, with its non-secret parameters." + }, + "component": { + "$ref": "#/$defs/ComponentKind", + "description": "The producer component: `http`, `graphql`, or the read-only\n`postgres` source; or the job-only `file` and `sftp` sources a\n`pollEnrich` step reads (section 17.1)." + }, + "hostProtocol": { + "$ref": "#/$defs/HostProtocol", + "description": "A host-implemented source protocol selected explicitly by this\nendpoint, with its reviewed, digest-pinned public configuration." + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The endpoint identifier `http:`, `graphql:`, `postgres:`, and the\n`pollEnrich` URIs name." + }, + "keyColumn": { + "$ref": "#/$defs/ExternalId", + "description": "The PostgreSQL result column whose scalar is the source item's\nstable identity. Required for a `postgres` endpoint and absent\nfrom every other component." + }, + "maximumResponseBytes": { + "description": "The largest response body one send to this endpoint may take in, in\nbytes. Required, no default; a value above the platform cap is\nrefused, never shortened. The runtime binding may lower it, never\nraise it. A facade-reachable endpoint stays within the facade\nceiling and a source-route-only endpoint may declare up to the\nplatform cap (`products/adapter/CONCEPT.md` section 8.8); the checks\nrefuse the facade-reachable excess\nunder `adapter.job.endpoint-response-bound`.", + "format": "uint64", + "maximum": 16777216, + "minimum": 1, + "type": "integer" + }, + "operationName": { + "description": "The GraphQL operation name.", + "type": "string" + }, + "operations": { + "description": "The operations this endpoint serves, each with its\n`idempotentUpstream` claim.", + "items": { + "$ref": "#/$defs/EndpointOperation" + }, + "type": "array" + }, + "parameterOrder": { + "description": "The reviewed names bound to the PostgreSQL query's contiguous\n`$1`-onward positions, in order. Omitted only when the query has\nno parameters, and absent from every non-PostgreSQL component.", + "items": { + "$ref": "#/$defs/ExternalId" + }, + "type": "array", + "uniqueItems": true + }, + "queryFile": { + "description": "The GraphQL query file, from the pack's query-file inventory.\nRequired for a `graphql` endpoint.", + "type": "string" + }, + "requestHeaders": { + "description": "The request headers the engine sends upstream on every send to\nthis endpoint, Camel's `HeaderFilterStrategy` as an allowlist,\nunique (CFG-ID-6). Never allowlistable: the reserved header names\nof `products/adapter/CONCEPT.md` section 8.11.4 and this\nendpoint's own api-key header name.", + "items": { + "$ref": "#/$defs/ExternalId" + }, + "type": "array", + "uniqueItems": true + }, + "responseHeaders": { + "description": "The response headers the engine copies onto the exchange, Camel's\n`HeaderFilterStrategy` as an allowlist, unique (CFG-ID-6).", + "items": { + "$ref": "#/$defs/ExternalId" + }, + "type": "array", + "uniqueItems": true + }, + "sqliteExtract": { + "$ref": "#/$defs/SqliteExtractDeclaration", + "description": "The reviewed statement and bounds of a SQLite extract producer.\nFilesystem locations are supplied by the host's logical extract binding." + }, + "testedVersions": { + "description": "The upstream versions this pack was tested against.", + "items": { + "type": "string" + }, + "type": "array" + }, + "variables": { + "$ref": "#/$defs/Expression", + "description": "The GraphQL variables expression." + } + }, + "required": [ + "id", + "component", + "authentication", + "maximumResponseBytes" + ], + "type": "object" + }, + "EndpointAsyncCompletion": { + "additionalProperties": false, + "description": "The source-native acceptance and status proof contract for one endpoint\noperation. Caller paths, envelopes, waiting policy, and custody remain\noutside the pack.", + "properties": { + "acceptedId": { + "$ref": "#/$defs/AsyncAcceptedId" + }, + "statusRoute": { + "$ref": "#/$defs/ExternalId" + }, + "uncertaintyRecovery": { + "$ref": "#/$defs/AsyncUncertaintyRecovery" + } + }, + "required": [ + "acceptedId", + "statusRoute" + ], + "type": "object" + }, + "EndpointAuthentication": { + "description": "The authentication kind a pack endpoint declares\n(`products/adapter/CONCEPT.md` section 10.2): the kind tag itself, plus\nonly the API-intrinsic parameters (`headerName` for `static-api-key`,\n`scheme` for `static-authorization`). Every credential value lives in\nthe runtime config, in [`RuntimeCredential`].", + "oneOf": [ + { + "additionalProperties": false, + "description": "Nothing is sent. The checks admit it only for numeric loopback, an\nendpoint with an mTLS client identity, or an explicitly acknowledged\ncredential-free HTTPS source.", + "properties": { + "type": { + "const": "none", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "`Authorization: Basic` from the runtime's `usernameRef` and\n`passwordRef`.", + "properties": { + "type": { + "const": "basic", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "`Authorization: ` from the runtime's `tokenRef`;\n`scheme` defaults to `Bearer`, Evidence's spelling.", + "properties": { + "scheme": { + "description": "The RFC 9110 scheme the resolved token is presented under.", + "type": "string" + }, + "type": { + "const": "static-authorization", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "One declared header from the runtime's `valueRef`; reserved header\nnames are refused.", + "properties": { + "headerName": { + "description": "The header the key travels under.", + "type": "string" + }, + "type": { + "const": "static-api-key", + "type": "string" + } + }, + "required": [ + "headerName", + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "The RFC 6749 client-credentials grant with a shared secret; the\nruntime binds `tokenEndpoint`, `clientIdRef`, and `clientSecretRef`.", + "properties": { + "type": { + "const": "oauth2-client-credentials", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "The RFC 7523 private-key-jwt grant; the runtime binds\n`tokenEndpoint`, `clientIdRef`, and `clientAssertionKeyRef`. The\nsigned assertion always travels in the form body, as in Evidence,\nso this kind carries no placement parameter.", + "properties": { + "type": { + "const": "oauth2-private-key-jwt", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + } + ] + }, + "EndpointOperation": { + "additionalProperties": false, + "description": "One operation of an endpoint, with the reviewed write claim\n(`products/adapter/CONCEPT.md` sections 8.7 and 9): redelivery over a\nnon-safe send is admitted only when the endpoint operation declares\n`idempotentUpstream: true`.", + "properties": { + "asyncCompletion": { + "$ref": "#/$defs/EndpointAsyncCompletion", + "description": "The source-native asynchronous acceptance and status proof contract." + }, + "graphql": { + "$ref": "#/$defs/GraphQlOperationKind", + "description": "The GraphQL operation kind the pinned query file declares, on a\n`graphql` endpoint; a send naming this operation is safe only for\na query (`products/adapter/CONCEPT.md` section 8.8)." + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The operation identifier a `to` step's `operation` member names." + }, + "idempotentUpstream": { + "description": "The reviewed claim that repeating this operation's send is safe,\nfor example an upstream create with client-supplied UIDs.", + "type": "boolean" + }, + "safeUpstream": { + "description": "The reviewed claim that the upstream serves this operation's POST\nas its safe search form, as FHIR servers serve `POST _search`\n(`products/adapter/CONCEPT.md` section 8.8): a route of a read\noperation may then reach the send. The claim names POST only; a\nPUT, PATCH, or graphql mutation send never reads it.", + "type": "boolean" + } + }, + "required": [ + "id" + ], + "type": "object" + }, + "EnrichStep": { + "additionalProperties": false, + "description": "An `enrich` step: call a static endpoint and merge the reply. Static URI\nonly; absent a strategy, the reply replaces the body (Camel's default).", + "properties": { + "aggregateOnException": { + "description": "Whether to aggregate the reply of a failed call (Camel default\nfalse; failure propagates to the error handler).", + "type": "boolean" + }, + "aggregationStrategy": { + "$ref": "#/$defs/AggregationStrategy", + "description": "The aggregation strategy." + }, + "parameters": { + "$ref": "#/$defs/ToParameters", + "description": "The request method, query, and operation, as a `to` send carries\nthem; the method's safety carries the write-safety rules of\n`crate::checks`." + }, + "uri": { + "$ref": "#/$defs/SendUri", + "description": "The static destination." + } + }, + "required": [ + "uri" + ], + "type": "object" + }, + "ErrorClass": { + "description": "A closed error class, the port of Camel's Java exception hierarchy (`products/adapter/CONCEPT.md` section 8.7).", + "enum": [ + "aggregation.duplicate", + "breaker.open", + "budget.exhausted", + "conversion.unmapped", + "credential.rejected", + "disclosure.violation", + "egress.refused", + "loop.maximum-iterations-reached", + "script", + "script.budget-exceeded", + "throttle.rejected", + "upstream", + "upstream.connection", + "upstream.http", + "upstream.malformed", + "upstream.redirect", + "upstream.timeout", + "upstream.too-large", + "validation", + "outcome", + "outcome.conflict", + "outcome.invalid-request", + "outcome.not-found", + "outcome.rejected", + "facade", + "facade.conflict", + "facade.forbidden", + "facade.idempotency-mismatch", + "facade.invalid-cursor", + "facade.invalid-field", + "facade.invalid-request", + "facade.method-not-allowed", + "facade.not-acceptable", + "facade.not-found", + "facade.payload-too-large", + "facade.unauthenticated", + "facade.unsupported-media-type" + ], + "type": "string" + }, + "ErrorHandlerStep": { + "additionalProperties": false, + "description": "The route `errorHandler` step: `defaultErrorHandler` (no redelivery,\nthe error propagates) or `noErrorHandler`. Exactly one member is set.", + "properties": { + "defaultErrorHandler": { + "$ref": "#/$defs/DefaultErrorHandler", + "description": "The default error handler with its redelivery policy." + }, + "noErrorHandler": { + "$ref": "#/$defs/NoErrorHandler", + "description": "The no-op error handler: failures propagate untouched." + } + }, + "type": "object" + }, + "EvidenceAcquisitionPosture": { + "description": "The closed input and final-fact schemas of an Evidence source route.\nBoth artifacts are supplied with the pack and digest-pinned, so a host\ncan compile the route without filesystem or network access.", + "enum": [ + "source-derived", + "field-projected", + "record-transformed" + ], + "type": "string" + }, + "EvidenceRouteContract": { + "additionalProperties": false, + "properties": { + "acquisitionPosture": { + "$ref": "#/$defs/EvidenceAcquisitionPosture", + "description": "The least-invasive acquisition posture the reviewed route satisfies.\nOmission is conservative for packs authored before this declaration." + }, + "factsSchema": { + "$ref": "#/$defs/ScriptReference", + "description": "The JSON Schema for the route's final facts value." + }, + "inputsSchema": { + "$ref": "#/$defs/ScriptReference", + "description": "The JSON Schema for the reviewed acquisition inputs." + } + }, + "required": [ + "inputsSchema", + "factsSchema" + ], + "type": "object" + }, + "Expression": { + "description": "An expression in one of the ported languages, externally tagged by\nlanguage name as in Camel's YAML DSL (`products/adapter/CONCEPT.md`\nsection 8.5). `rhai` replaces Simple, Groovy, JavaScript, and `bean`.\nA predicate is an expression whose result is a boolean; the runtime\nnever coerces.\n\nRound-trip forms are covered beside the steps that carry them, in\n`crate::route`.", + "oneOf": [ + { + "additionalProperties": false, + "description": "A literal JSON value, Camel's `constant` language.", + "properties": { + "constant": true + }, + "required": [ + "constant" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "A message header by name, Camel's `header` language.", + "properties": { + "header": { + "type": "string" + } + }, + "required": [ + "header" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "An exchange property by name, Camel's `exchangeProperty` language.", + "properties": { + "exchangeProperty": { + "type": "string" + } + }, + "required": [ + "exchangeProperty" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "An inline RFC 9535 JSONPath selector over the message body, as\nCamel's `jsonpath` language but on the IETF standard.", + "properties": { + "jsonpath": { + "type": "string" + } + }, + "required": [ + "jsonpath" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "A digest-pinned Rhai script and entrypoint.", + "properties": { + "rhai": { + "$ref": "#/$defs/RhaiExpression" + } + }, + "required": [ + "rhai" + ], + "type": "object" + } + ] + }, + "ExternalId": { + "description": "An identifier another system issues, written exactly as its issuer gives it.", + "maxLength": 512, + "minLength": 1, + "pattern": "^[^\\u0000-\\u001F\\u007F-\\u009F]+$", + "type": "string" + }, + "FilterStep": { + "additionalProperties": false, + "description": "A `filter` step: an inline predicate beside the guarded steps, as\nCamel's Message Filter writes it. `CamelFilterMatched` records the\noutcome; the route continues after the filter either way. Exactly one\nlanguage key must be present; `crate::checks` refuses zero or several\nunder an adapter code, and the reader refuses any unknown key\n(`config.unknown-key`, CFG-SCHEMA-8).", + "properties": { + "constant": { + "description": "The `constant` language member." + }, + "exchangeProperty": { + "description": "The `exchangeProperty` language member.", + "type": "string" + }, + "header": { + "description": "The `header` language member.", + "type": "string" + }, + "jsonpath": { + "description": "The `jsonpath` language member.", + "type": "string" + }, + "rhai": { + "$ref": "#/$defs/RhaiExpression", + "description": "The `rhai` language member." + }, + "statusPropertyName": { + "description": "The exchange property that records the boolean outcome, absent by\ndefault: Camel 4's `statusPropertyName`. Camel 4 sets no fixed\nfilter property, and neither does the port\n(`products/adapter/CONCEPT.md` section 8.6).", + "type": "string" + }, + "steps": { + "description": "The steps that run only on match.", + "items": { + "$ref": "#/$defs/Step" + }, + "type": "array" + } + }, + "type": "object" + }, + "GraphQlOperationKind": { + "description": "The GraphQL operation kind an endpoint operation declares, as the\npinned query file writes it (`products/adapter/CONCEPT.md` section\n8.8).", + "oneOf": [ + { + "const": "query", + "description": "A read; the only kind that keeps a graphql send safe.", + "type": "string" + }, + { + "const": "mutation", + "description": "A write; non-safe under every write-safety rule.", + "type": "string" + } + ] + }, + "HostProtocol": { + "additionalProperties": false, + "description": "One closed host protocol selection. The engine recognizes only protocols\na host registry installs; an unknown id fails closed at compilation.", + "properties": { + "config": { + "$ref": "#/$defs/ScriptReference", + "description": "The reviewed public protocol configuration." + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The protocol implementation id in the host registry." + } + }, + "required": [ + "id", + "config" + ], + "type": "object" + }, + "HttpMethod": { + "description": "An HTTP method a facade operation or an upstream send may declare. The\nmethod decides send safety: `GET` is safe, the write methods are not\n(`products/adapter/CONCEPT.md` sections 8.7 and 9).", + "enum": [ + "GET", + "POST", + "PUT", + "PATCH" + ], + "type": "string" + }, + "IdempotentConsumerStep": { + "additionalProperties": false, + "description": "An `idempotentConsumer` step (`products/adapter/CONCEPT.md` section 9).\nThe key is namespaced by caller identity and concrete operation and\nbound to the request digest; a duplicate replays the recorded facade\nresponse; `skipDuplicate` is not ported.", + "properties": { + "completionEager": { + "description": "Release the key on completion (Camel default false).", + "type": "boolean" + }, + "eager": { + "description": "Add the key before processing (Camel default true).", + "type": "boolean" + }, + "expression": { + "$ref": "#/$defs/Expression", + "description": "The key expression, conventionally the caller's `Idempotency-Key`\nheader." + }, + "removeOnFailure": { + "description": "Remove the key on failure before any upstream effect (Camel default\ntrue).", + "type": "boolean" + }, + "steps": { + "description": "The guarded steps.", + "items": { + "$ref": "#/$defs/Step" + }, + "type": "array" + } + }, + "required": [ + "expression" + ], + "type": "object" + }, + "Language": { + "description": "An expression language a pack may require of the engine\n(`products/adapter/CONCEPT.md` section 8.5).", + "enum": [ + "constant", + "header", + "exchangeProperty", + "jsonpath", + "rhai" + ], + "type": "string" + }, + "LocalId": { + "description": "A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.", + "pattern": "^[a-z][a-z0-9_-]{0,63}$", + "type": "string" + }, + "LoopStep": { + "additionalProperties": false, + "description": "A `loop` step (`products/adapter/CONCEPT.md` sections 8.6 and 5.5).\nCamel's shape with our bound: the count or predicate is the same flat\nsingle-language-key form as `filter` and `when`, and `doWhile: true`\nmakes the expression a predicate loop (Camel's boolean flag, default\nfalse). `maximumIterations` stays mandatory, a declared divergence:\nthe check refuses its absence and the runtime enforces it again.\nReaching the bound with a dynamic count above it, or a predicate\nstill holding, raises the catchable `loop.maximum-iterations-reached`\nclass, never a silent stop. Pagination is `loop` with `doWhile` over\nthe upstream cursor.", + "properties": { + "constant": { + "description": "The `constant` language member: the iteration count, or with\n`doWhile`, the predicate's constant form." + }, + "copy": { + "description": "Whether each iteration works on a copy of the message (Camel\ndefault false).", + "type": "boolean" + }, + "doWhile": { + "description": "Camel's `doWhile` flag: true makes the expression a predicate\nevaluated after each iteration; false makes it a count.", + "type": "boolean" + }, + "exchangeProperty": { + "description": "The `exchangeProperty` language member.", + "type": "string" + }, + "header": { + "description": "The `header` language member.", + "type": "string" + }, + "jsonpath": { + "description": "The `jsonpath` language member.", + "type": "string" + }, + "maximumIterations": { + "description": "The mandatory iteration bound; the check refuses its absence and\nthe runtime enforces it again.", + "format": "uint64", + "maximum": 100000, + "minimum": 1, + "type": "integer" + }, + "rhai": { + "$ref": "#/$defs/RhaiExpression", + "description": "The `rhai` language member." + }, + "steps": { + "description": "The repeated steps.", + "items": { + "$ref": "#/$defs/Step" + }, + "type": "array" + } + }, + "type": "object" + }, + "NoErrorHandler": { + "additionalProperties": false, + "description": "Camel's `noErrorHandler`. The empty mapping `{}` is the whole variant.", + "type": "object" + }, + "OnExceptionStep": { + "additionalProperties": false, + "description": "An `onException` clause over the closed error-class hierarchy\n(`products/adapter/CONCEPT.md` section 8.7). No clause may name an\nuncatchable class; `crate::checks` refuses one that does. Redelivery\nnests under `redeliveryPolicy`, as Camel's exception clause does in\nYAML (`manual/exception-clause.html`, `manual/exception-redelivery.html`).", + "properties": { + "continued": { + "description": "Whether the route resumes after the failure point (Camel\n`continued`).", + "type": "boolean" + }, + "exception": { + "description": "The matched classes, unique (CFG-ID-6).", + "items": { + "$ref": "#/$defs/ErrorClass" + }, + "type": "array", + "uniqueItems": true + }, + "handled": { + "description": "Whether the clause consumes the error (Camel `handled`). True ends\nthe exchange with the clause's result.", + "type": "boolean" + }, + "onWhen": { + "$ref": "#/$defs/Expression", + "description": "Narrow the clause with a predicate (Camel `onWhen`)." + }, + "redeliveryPolicy": { + "$ref": "#/$defs/RedeliveryOptions", + "description": "Redelivery options, as on the error handler, nested under\n`redeliveryPolicy`." + }, + "retryWhile": { + "$ref": "#/$defs/Expression", + "description": "Stop redelivering early while this predicate holds (Camel\n`retryWhile`, an option of the clause as in Camel's\n`OnExceptionDefinition`, not of the redelivery policy; section\n8.7). Divergence from Camel: the predicate only stops redelivery\nearlier and `maximumRedeliveries` remains the hard cap, where\nCamel lets `retryWhile` override it, so `maximumUpstreamCalls`\nstays a check-time guarantee. The redeliveries behind it are the\nclause's own policy, or the route handler's when the clause\ndeclares no policy and produces no output steps. An output-bearing\nclause instead has Camel's clause-local default of zero\nredeliveries. The checks refuse the predicate when its effective\npolicy carries none." + }, + "steps": { + "description": "The clause's steps.", + "items": { + "$ref": "#/$defs/Step" + }, + "type": "array" + } + }, + "required": [ + "exception" + ], + "type": "object" + }, + "OnFallback": { + "additionalProperties": false, + "description": "The `onFallback` of a `circuitBreaker`.", + "properties": { + "steps": { + "description": "The fallback steps.", + "items": { + "$ref": "#/$defs/Step" + }, + "type": "array" + } + }, + "type": "object" + }, + "Otherwise": { + "additionalProperties": false, + "description": "The `otherwise` clause of a `choice`.", + "properties": { + "steps": { + "description": "The steps the clause runs when no `when` matched.", + "items": { + "$ref": "#/$defs/Step" + }, + "type": "array" + } + }, + "type": "object" + }, + "PollDecoder": { + "anyOf": [ + { + "$ref": "#/$defs/CsvDecoder", + "description": "A `csv` declaration with its options; an empty mapping selects csv\nat Camel's defaults." + }, + { + "description": "A bare decoder name.", + "type": "string" + } + ], + "description": "The decoder a `pollEnrich` step selects. A mapping form is a `csv`\ndeclaration with its options, the only decoder that carries options; a\nbare string names one of `csv`, `jsonl`, `rabbitmq-json`, or `raw`. One member carries\nboth forms, so `decoder: csv` and `decoder: {\"delimiter\": \";\"}` read\nthe same way. The node kind chooses the form (CFG-SCHEMA-8), so a\nmisspelt CSV option is reported at its own key with its position." + }, + "PollEnrichStep": { + "additionalProperties": false, + "description": "A `pollEnrich` step, the bounded job-only port of Camel's Poll Enricher\n(`products/adapter/CONCEPT.md` sections 17.1 and 17.2). It reads one\nbounded page from a static `file:`, `rabbitmq:`, or `sftp:` endpoint the pack\ndeclares; no dynamic endpoint expression and no `consumerSendTo` are\nported. Absent a strategy, the page replaces the body, as `enrich`\nreplaces it. `timeoutMilliseconds` is mandatory: the checks refuse its\nabsence under `adapter.job.poll-timeout`, and the reader refuses a\nvalue outside 1 to 10000 (the platform-frozen per-attempt ceiling of\n`products/adapter/CONCEPT.md` section 8.8 holds for every endpoint). The step never appears in a\nfacade-reachable route (`adapter.job.poll-facade-refused`).", + "properties": { + "aggregationStrategy": { + "$ref": "#/$defs/AggregationStrategy", + "description": "The aggregation strategy, Camel's Poll Enricher aggregation;\nabsent, the page replaces the body, like `enrich` with no strategy." + }, + "decoder": { + "$ref": "#/$defs/PollDecoder", + "description": "The decoder the read applies: absent, `raw`, the file bytes' digest\npage; `csv` decodes rows with the options of [`CsvDecoder`], written\neither as the bare name `csv` or as a mapping of its options;\n`jsonl` decodes one bounded JSON value per line. `rabbitmq-json`\ndecodes exactly one bounded broker message and is valid only for a\n`rabbitmq:` source. The checks refuse any other name or a mismatched\nprofile under `adapter.job.decoder-unknown`." + }, + "keyPointer": { + "description": "RFC 6901 selector of the opaque business-key string in a decoded row.\nRequired for CSV and JSONL, forbidden for raw files and broker messages.\nAt most 512 bytes.", + "maxLength": 512, + "type": "string" + }, + "timeoutMilliseconds": { + "description": "The mandatory poll timeout in milliseconds, bounded 1 to 10000.", + "format": "uint64", + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "uri": { + "description": "The static job source URI: `file:`,\n`rabbitmq:`, or `sftp:`, naming a declared pack endpoint of the matching\ncomponent. The authoring checks refuse an unknown endpoint\n(`adapter.job.poll-endpoint-unknown`) and an endpoint whose\ncomponent does not match the scheme\n(`adapter.job.poll-endpoint-kind`).", + "type": "string" + } + }, + "required": [ + "uri" + ], + "type": "object" + }, + "RedeliveryOptions": { + "additionalProperties": false, + "description": "The redelivery option set, shared by the error handler and an\n`onException` clause (`products/adapter/CONCEPT.md` section 8.7; the\nnesting under `redeliveryPolicy` follows Camel's own YAML DSL,\n`manual/exception-clause.html` and `manual/exception-redelivery.html`).\nOption spellings stay ours (CFG-NAME); only the nesting is Camel's.\nOnly the non-default members serialize.", + "properties": { + "backOffMultiplier": { + "description": "The exponential multiplier (default 2); it grows delays, so the\nreader refuses a value below 1 (CFG-QTY-4).", + "format": "double", + "type": "number" + }, + "collisionAvoidanceFactor": { + "description": "The jitter fraction (default 0.15).", + "format": "double", + "type": "number" + }, + "maximumRedeliveries": { + "description": "Redeliveries after the first attempt (default 0; at most 100,\nCFG-QTY-4).", + "format": "uint32", + "maximum": 100, + "minimum": 0, + "type": "integer" + }, + "maximumRetryDelaySeconds": { + "description": "The delay ceiling in seconds (default 60); zero cannot bound a\ndelay.", + "format": "uint32", + "maximum": 4294967295, + "minimum": 1, + "type": "integer" + }, + "retryDelaySeconds": { + "description": "Delay between redeliveries in seconds (default 1); zero cannot\nbound a delay.", + "format": "uint32", + "maximum": 4294967295, + "minimum": 1, + "type": "integer" + }, + "useCollisionAvoidance": { + "description": "Add collision avoidance jitter (default false).", + "type": "boolean" + }, + "useExponentialBackOff": { + "description": "Grow the delay exponentially (default false).", + "type": "boolean" + } + }, + "type": "object" + }, + "ResumeBinding": { + "additionalProperties": false, + "description": "One resume binding of a non-safe send: the source-native identifier a\nlater step needs, read by an RFC 9535 selector and stored typed as an\nidentifier, never as an arbitrary value\n(`products/adapter/CONCEPT.md` section 9).", + "properties": { + "name": { + "$ref": "#/$defs/LocalId", + "description": "The binding name later steps reference." + }, + "path": { + "description": "The RFC 9535 selector that reads the identifier from the reply.", + "type": "string" + } + }, + "required": [ + "name", + "path" + ], + "type": "object" + }, + "RhaiExpression": { + "additionalProperties": false, + "description": "A Rhai expression reference: the digest-pinned file from the pack's\nscript inventory and the precompiled entrypoint to call\n(`products/adapter/CONCEPT.md` sections 5.6 and 8.5). Inline code is\nrefused (CFG-EMBED-1).", + "properties": { + "entrypoint": { + "description": "The precompiled entrypoint the engine calls.", + "type": "string" + }, + "file": { + "description": "The script file path, resolved against the pack's script inventory.", + "type": "string" + } + }, + "required": [ + "file", + "entrypoint" + ], + "type": "object" + }, + "RouteDefinition": { + "additionalProperties": false, + "description": "A route as Camel's YAML DSL writes it: one `from`, `direct:` only, and\nan ordered step list (`products/adapter/CONCEPT.md` section 8.3). Pack\ntemplates carry the same steps without the `from`; the instantiated\nroute's `from` is `direct:`.", + "properties": { + "from": { + "$ref": "#/$defs/RouteFrom", + "description": "The route consumer; `direct:` only." + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The route identifier `direct:` targets and bindings name." + }, + "steps": { + "description": "The ordered steps.", + "items": { + "$ref": "#/$defs/Step" + }, + "type": "array" + } + }, + "required": [ + "id", + "from" + ], + "type": "object" + }, + "RouteFrom": { + "additionalProperties": false, + "description": "The `from` of a route: Camel's route consumer, bounded to `direct:`\n(divergence: the `rest` consumer dispatches to `direct:` routes;\nsection 8.8).", + "properties": { + "uri": { + "$ref": "#/$defs/SendUri", + "description": "A `direct:` URI." + } + }, + "required": [ + "uri" + ], + "type": "object" + }, + "RouteTemplate": { + "additionalProperties": false, + "description": "A route template, Camel's `routeTemplate` without its `from`\n(`products/adapter/CONCEPT.md` section 8.4): the instantiated route's\n`from` is `direct:`, bound by the contract.", + "properties": { + "id": { + "$ref": "#/$defs/LocalId", + "description": "The template identifier `templatedRoutes` reference." + }, + "parameters": { + "description": "The typed parameters the template body references.", + "items": { + "$ref": "#/$defs/TemplateParameter" + }, + "type": "array" + }, + "readSupport": { + "$ref": "#/$defs/SourceReadSupport", + "description": "Source-neutral read semantics every instantiation of this template\npreserves. Public protocol and view names remain project-owned." + }, + "steps": { + "description": "The template body, with `{{name}}` and `{{?name}}` placeholders.", + "items": { + "$ref": "#/$defs/Step" + }, + "type": "array" + }, + "writeSupport": { + "$ref": "#/$defs/SourceWriteSupport", + "description": "Source-neutral direct-write guarantees every instantiation of this\ntemplate preserves. Public protocol and domain schemas remain\nproject-owned." + } + }, + "required": [ + "id" + ], + "type": "object" + }, + "ScriptReference": { + "additionalProperties": false, + "description": "A script seam: code in its own file beside the pack, referenced by a\nrelative path and pinned by digest (CFG-EMBED-1). Scripts never carry\ncredentials and never construct URLs; the `http` component builds every\nrequest from its declared template\n(`products/adapter/CONCEPT.md` section 5.6).", + "properties": { + "digest": { + "$ref": "#/$defs/Digest", + "description": "The `sha256:` digest the file must hash to." + }, + "path": { + "description": "The script file, relative to the pack document.", + "type": "string" + } + }, + "required": [ + "path", + "digest" + ], + "type": "object" + }, + "SendUri": { + "description": "The destination of a `to` or `enrich` send: a `direct:` route, an\n`http:`, `graphql:`, or `postgres:` endpoint declared in the pack\n(`products/adapter/CONCEPT.md` sections 8.3, 8.8, and 17.2). The URI is\nstatic; no `toD` is ported. A `file:` or `sftp:` URI parses so the\nauthoring checks can refuse it under its own code\n(`adapter.job.send-component-refused`): a job source is read through the\n`pollEnrich` step, never through a send.", + "pattern": "^(direct|http|graphql|postgres|file|rabbitmq|sftp|sqlite-extract):.+$", + "type": "string" + }, + "SetHeaderStep": { + "additionalProperties": false, + "description": "A `setHeader` step.", + "properties": { + "name": { + "description": "The header name; bounded and engine-validated.", + "type": "string" + }, + "value": { + "$ref": "#/$defs/Expression", + "description": "The value expression." + } + }, + "required": [ + "name", + "value" + ], + "type": "object" + }, + "SetPropertyStep": { + "additionalProperties": false, + "description": "A `setProperty` step.", + "properties": { + "name": { + "description": "The exchange property name.", + "type": "string" + }, + "value": { + "$ref": "#/$defs/Expression", + "description": "The value expression." + } + }, + "required": [ + "name", + "value" + ], + "type": "object" + }, + "SourceComparison": { + "description": "Closed reusable comparison semantics a source route can implement.", + "enum": [ + "equality" + ], + "type": "string" + }, + "SourceOrderDirection": { + "enum": [ + "ascending", + "descending" + ], + "type": "string" + }, + "SourceOrderTerm": { + "additionalProperties": false, + "description": "One deterministic source order term. Direction is explicit so a project\nand generated contract never infer it from a provider default.", + "properties": { + "direction": { + "$ref": "#/$defs/SourceOrderDirection" + }, + "name": { + "$ref": "#/$defs/ExternalId" + } + }, + "required": [ + "name", + "direction" + ], + "type": "object" + }, + "SourceReadInput": { + "additionalProperties": false, + "description": "One source-native page input and the comparisons the source route\nimplements for it. Names are pack-local, not public field names.", + "properties": { + "comparisons": { + "items": { + "$ref": "#/$defs/SourceComparison" + }, + "type": "array", + "uniqueItems": true + }, + "name": { + "$ref": "#/$defs/ExternalId" + } + }, + "required": [ + "name", + "comparisons" + ], + "type": "object" + }, + "SourceReadSupport": { + "description": "Source-neutral read semantics a pack explicitly promises for one route.\nPublic Consultation capability, selector, Search, schema, and view names\nbelong to the project and never enter this reusable source contract.\nThe host never infers guarantees from a route name or a successfully\ndecoded body.", + "oneOf": [ + { + "additionalProperties": false, + "description": "Exact resolution that returns at most one source item for the complete\nnative input key. A project can map this to Retrieve or Lookup.", + "properties": { + "inputs": { + "items": { + "$ref": "#/$defs/ExternalId" + }, + "type": "array", + "uniqueItems": true + }, + "type": { + "const": "read-one", + "type": "string" + } + }, + "required": [ + "type", + "inputs" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "A bounded page with explicit completion and a deterministic order.\nA project can map supported native inputs to List filters or a named\nSearch without changing this source-owned contract.", + "properties": { + "inputs": { + "default": [], + "items": { + "$ref": "#/$defs/SourceReadInput" + }, + "type": "array", + "uniqueItems": true + }, + "order": { + "items": { + "$ref": "#/$defs/SourceOrderTerm" + }, + "type": "array", + "uniqueItems": true + }, + "type": { + "const": "read-page", + "type": "string" + }, + "uniqueTieBreaker": { + "$ref": "#/$defs/ExternalId" + } + }, + "required": [ + "type", + "order", + "uniqueTieBreaker" + ], + "type": "object" + } + ] + }, + "SourceRecovery": { + "description": "The recovery semantics of a source route's `next` cursor, the closed\nset CONCEPT 17.2 pins.", + "oneOf": [ + { + "const": "exact-replay", + "description": "A replayed cursor re-reads the same bytes, such as a file digest\nand position.", + "type": "string" + }, + { + "const": "key-deduplicated", + "description": "Upstream pages may shift between reads; the consumer deduplicates\nby key.", + "type": "string" + } + ] + }, + "SourceRouteDecl": { + "additionalProperties": false, + "description": "One source route of the governed-ingestion mode\n(`products/adapter/CONCEPT.md` sections 17.1 and 17.2): a route\ndefinition's steps plus the item-contract declaration. A source route\nis an entry point of the job mode, never a subroutine: a facade\nbinding naming it, or a `direct:` send targeting it, refuses\n(`adapter.job.source-bound-refused`,\n`adapter.job.source-called-refused`). There is no `from`: the\n`from: file:` consumer form was rejected with the job's read step\n(section 17.2).", + "properties": { + "edits": { + "description": "How the source reports edits to items the scan has already read,\none of [`SOURCE_EDIT_VALUES`]: `ordered`, where an edit moves the\nitem past the read position or items never change so an ordinary\npass suffices, or `rescan`, where an edit can stay behind the\nposition and the declared `rescanDelaySeconds` starts an ordinary\npass from the first page. Mandatory; the checks refuse its absence\nunder `adapter.job.source-edits-required` and a value outside the\nclosed set under `adapter.job.source-edits-unknown`.", + "type": "string" + }, + "evidence": { + "$ref": "#/$defs/EvidenceRouteContract", + "description": "The Evidence acquisition contract when this source route is a\nlistener-free, read-only Evidence entry point." + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The source route identifier the job definition names." + }, + "nextRecovery": { + "$ref": "#/$defs/SourceRecovery", + "description": "The recovery semantics of `next`. Mandatory; the checks refuse its\nabsence under `adapter.job.source-recovery-required`." + }, + "readSupport": { + "$ref": "#/$defs/SourceReadSupport", + "description": "The source-neutral read semantics this route explicitly supports. A\nfacade host maps these native inputs and guarantees to its public\nprotocol; it never infers them from a route id or source brand." + }, + "rescanDelaySeconds": { + "description": "The seconds between a `rescan` source route's ordinary passes from\nthe first page, from\n[`MINIMUM_SOURCE_RESCAN_DELAY_SECONDS`] to\n[`MAXIMUM_SOURCE_RESCAN_DELAY_SECONDS`] (one minute to one day).\nMandatory beside `edits: rescan`, refused beside `edits: ordered`,\nand range-checked; the checks police all three under\n`adapter.job.source-rescan-delay`.", + "format": "uint64", + "maximum": 86400, + "minimum": 60, + "type": "integer" + }, + "scan": { + "$ref": "#/$defs/SourceScan", + "description": "Whether the scan ends. Mandatory; the checks refuse its absence\nunder `adapter.job.source-scan-required`." + }, + "steps": { + "description": "The ordered steps, as an internal route's body.", + "items": { + "$ref": "#/$defs/Step" + }, + "type": "array" + } + }, + "required": [ + "id" + ], + "type": "object" + }, + "SourceScan": { + "description": "Whether a source route's scan ends: the closed set CONCEPT 17.2 pins\nfor the item contract.", + "oneOf": [ + { + "const": "finite", + "description": "The scan ends: `next` is absent at the end.", + "type": "string" + }, + { + "const": "ongoing", + "description": "The scan continues: the job re-runs the route until stopped.", + "type": "string" + } + ] + }, + "SourceWriteSupport": { + "description": "Source-neutral direct-write semantics explicitly promised by one reusable\npack route template. A host never infers these guarantees from an HTTP\nmethod, provider brand, route id, or successful fixture.\n\nEach variant names one fixed guarantee set; the only value a pack chooses\nis the finite provider-owned window in which the source guarantees an\nexact same-key replay. The host keeps its own idempotency custody within,\nnever beyond, that declared window.", + "oneOf": [ + { + "additionalProperties": false, + "description": "Create exactly one source record, replay an exact same-key retry, and\nreturn the durable key the source assigns in [`SourceWriteReceipt`].", + "properties": { + "replayWindowSeconds": { + "description": "Seconds for which the source guarantees an exact same-key replay.", + "format": "uint64", + "maximum": 31536000, + "minimum": 1, + "type": "integer" + }, + "type": { + "const": "create-one", + "type": "string" + } + }, + "required": [ + "type", + "replayWindowSeconds" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Update exactly one source record, replay an exact same-key retry, and\ncompare and commit the supplied native validator in the same atomic\nmutation boundary.", + "properties": { + "replayWindowSeconds": { + "description": "Seconds for which the source guarantees an exact same-key replay.", + "format": "uint64", + "maximum": 31536000, + "minimum": 1, + "type": "integer" + }, + "type": { + "const": "conditional-update-one", + "type": "string" + } + }, + "required": [ + "type", + "replayWindowSeconds" + ], + "type": "object" + } + ] + }, + "SplitStep": { + "additionalProperties": false, + "description": "A `split` step (`products/adapter/CONCEPT.md` sections 8.6 and 5.5).\n`parallelProcessing`, `streaming`, and `timeout` are not ported.", + "properties": { + "aggregationStrategy": { + "$ref": "#/$defs/AggregationStrategy", + "description": "The aggregation strategy; absent, the original message is returned,\nCamel's default." + }, + "errorThreshold": { + "description": "Camel's failure accounting: the share of failed pieces (a ratio\nfrom 0 to 1) that stops the split.", + "format": "double", + "type": "number" + }, + "expression": { + "$ref": "#/$defs/Expression", + "description": "The expression that produces the pieces." + }, + "maximumFailedRecords": { + "description": "Camel's failure accounting: the maximum failed pieces.", + "format": "uint64", + "maximum": 100000, + "minimum": 1, + "type": "integer" + }, + "maximumItems": { + "description": "The mandatory piece bound; the check refuses its absence and the\nruntime enforces it again.", + "format": "uint64", + "maximum": 100000, + "minimum": 1, + "type": "integer" + }, + "steps": { + "description": "The steps applied to each piece.", + "items": { + "$ref": "#/$defs/Step" + }, + "type": "array" + }, + "stopOnException": { + "description": "Whether a failing piece stops the split (Camel default false). A\nnon-safe send inside a split requires true. Exclusive with the\nfailure accounting below; the checks refuse both.", + "type": "boolean" + } + }, + "required": [ + "expression" + ], + "type": "object" + }, + "SqliteExtractColumn": { + "additionalProperties": false, + "properties": { + "name": { + "$ref": "#/$defs/ExternalId" + }, + "type": { + "$ref": "#/$defs/SqliteExtractColumnType" + } + }, + "required": [ + "name", + "type" + ], + "type": "object" + }, + "SqliteExtractColumnType": { + "enum": [ + "string", + "integer", + "number", + "boolean" + ], + "type": "string" + }, + "SqliteExtractDeclaration": { + "additionalProperties": false, + "description": "A read-only statement over one host-captured SQLite extract. Its SQL is\npinned with the pack, while its parameters may receive only route values.", + "properties": { + "columns": { + "items": { + "$ref": "#/$defs/SqliteExtractColumn" + }, + "type": "array" + }, + "concurrency": { + "format": "uint64", + "maximum": 1024, + "minimum": 1, + "type": "integer" + }, + "extractProfile": { + "$ref": "#/$defs/LocalId" + }, + "maximumCellBytes": { + "format": "uint64", + "maximum": 8388608, + "minimum": 1, + "type": "integer" + }, + "maximumExtractAgeSeconds": { + "format": "uint64", + "maximum": 2592000, + "minimum": 1, + "type": "integer" + }, + "maximumRows": { + "format": "uint64", + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "maximumStatementSteps": { + "format": "uint64", + "maximum": 1000000000, + "minimum": 1, + "type": "integer" + }, + "parameters": { + "items": { + "$ref": "#/$defs/SqliteExtractParameter" + }, + "type": "array" + }, + "statement": { + "$ref": "#/$defs/ScriptReference" + } + }, + "required": [ + "extractProfile", + "statement", + "columns", + "parameters", + "maximumExtractAgeSeconds", + "maximumRows", + "maximumCellBytes", + "maximumStatementSteps", + "concurrency" + ], + "type": "object" + }, + "SqliteExtractParameter": { + "additionalProperties": false, + "properties": { + "name": { + "$ref": "#/$defs/ExternalId" + }, + "required": { + "default": true, + "type": "boolean" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "Step": { + "description": "One step of a route body, externally tagged by the Camel EIP name\n(CFG-ID-7). Every port-table row for Increments 0 to 3 has a variant,\nso the format does not change when a later increment lands\n(`products/adapter/CONCEPT.md` section 8.10).\n\nStep round-trip forms are pinned one per variant by the tests of this\nmodule; each test names the Camel 4.x page the variant's semantics port\nfrom.", + "oneOf": [ + { + "additionalProperties": false, + "description": "Send to a static endpoint or route. No `toD` is ported.", + "properties": { + "to": { + "$ref": "#/$defs/ToStep" + } + }, + "required": [ + "to" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Set the message body from an expression.", + "properties": { + "setBody": { + "$ref": "#/$defs/Expression" + } + }, + "required": [ + "setBody" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Set the message body from an expression (Camel's `transform`).", + "properties": { + "transform": { + "$ref": "#/$defs/Expression" + } + }, + "required": [ + "transform" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Set one message header.", + "properties": { + "setHeader": { + "$ref": "#/$defs/SetHeaderStep" + } + }, + "required": [ + "setHeader" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Set one exchange property.", + "properties": { + "setProperty": { + "$ref": "#/$defs/SetPropertyStep" + } + }, + "required": [ + "setProperty" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Remove one message header by name.", + "properties": { + "removeHeader": { + "type": "string" + } + }, + "required": [ + "removeHeader" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Remove one exchange property by name.", + "properties": { + "removeProperty": { + "type": "string" + } + }, + "required": [ + "removeProperty" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Run an expression for effect on properties without changing the\nbody, as Camel's `script` EIP.", + "properties": { + "script": { + "$ref": "#/$defs/Expression" + } + }, + "required": [ + "script" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Convert the message body through a code map\n(`products/adapter/CONCEPT.md` section 8.6).", + "properties": { + "convertBodyTo": { + "$ref": "#/$defs/ConvertStep" + } + }, + "required": [ + "convertBodyTo" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Convert one message header through a code map.", + "properties": { + "convertHeaderTo": { + "$ref": "#/$defs/ConvertStep" + } + }, + "required": [ + "convertHeaderTo" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Convert one exchange property through a code map.", + "properties": { + "convertPropertyTo": { + "$ref": "#/$defs/ConvertStep" + } + }, + "required": [ + "convertPropertyTo" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Content-based router: the first matching `when` wins.", + "properties": { + "choice": { + "$ref": "#/$defs/ChoiceStep" + } + }, + "required": [ + "choice" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Message filter: nested steps run only on match; the route continues\nafter the filter either way.", + "properties": { + "filter": { + "$ref": "#/$defs/FilterStep" + } + }, + "required": [ + "filter" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "A failing predicate raises the `validation` class.", + "properties": { + "validate": { + "$ref": "#/$defs/ValidateStep" + } + }, + "required": [ + "validate" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Validate the complete provider response body against one reviewed,\ndigest-pinned JSON Schema before extraction. A mismatch is a terminal\nsource-protocol refusal, not a catchable route validation outcome.", + "properties": { + "validateSchema": { + "$ref": "#/$defs/ScriptReference" + } + }, + "required": [ + "validateSchema" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Stop routing the exchange.", + "properties": { + "stop": { + "$ref": "#/$defs/StopStep" + } + }, + "required": [ + "stop" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Raise a closed error class now; the route's clauses handle it like\nany error (`products/adapter/CONCEPT.md` section 8.11.6).", + "properties": { + "throwException": { + "$ref": "#/$defs/ThrowExceptionStep" + } + }, + "required": [ + "throwException" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Split a message into pieces and aggregate them.", + "properties": { + "split": { + "$ref": "#/$defs/SplitStep" + } + }, + "required": [ + "split" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Repeat a block a bounded number of times.", + "properties": { + "loop": { + "$ref": "#/$defs/LoopStep" + } + }, + "required": [ + "loop" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Call a static endpoint and merge its reply.", + "properties": { + "enrich": { + "$ref": "#/$defs/EnrichStep" + } + }, + "required": [ + "enrich" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Poll a job source through a static `file:` or `sftp:` URI and merge\nor replace the body with one bounded page\n(`products/adapter/CONCEPT.md` sections 17.1 and 17.2). Job-only:\nthe authoring checks refuse the step in every facade-reachable\nroute.", + "properties": { + "pollEnrich": { + "$ref": "#/$defs/PollEnrichStep" + } + }, + "required": [ + "pollEnrich" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Wrap steps in a resilience4j circuit breaker with `onFallback`.", + "properties": { + "circuitBreaker": { + "$ref": "#/$defs/CircuitBreakerStep" + } + }, + "required": [ + "circuitBreaker" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Throttle sends; a waiting exchange waits at most until its\ndeadline, then raises `throttle.rejected`.", + "properties": { + "throttle": { + "$ref": "#/$defs/ThrottleStep" + } + }, + "required": [ + "throttle" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Wrap a write route in idempotent consumption\n(`products/adapter/CONCEPT.md` section 9).", + "properties": { + "idempotentConsumer": { + "$ref": "#/$defs/IdempotentConsumerStep" + } + }, + "required": [ + "idempotentConsumer" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "The route's error handler: `defaultErrorHandler` or\n`noErrorHandler`. The exhausted exchange is always journaled; the\njournal is the fixed dead letter.", + "properties": { + "errorHandler": { + "$ref": "#/$defs/ErrorHandlerStep" + } + }, + "required": [ + "errorHandler" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "An exception clause over the closed error-class hierarchy.", + "properties": { + "onException": { + "$ref": "#/$defs/OnExceptionStep" + } + }, + "required": [ + "onException" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "`doTry` with `doCatch` and `doFinally` clauses.", + "properties": { + "doTry": { + "$ref": "#/$defs/DoTryStep" + } + }, + "required": [ + "doTry" + ], + "type": "object" + } + ] + }, + "StopStep": { + "additionalProperties": false, + "description": "A `stop` step. The empty mapping `{}` is the whole variant.", + "type": "object" + }, + "TemplateParameter": { + "additionalProperties": false, + "description": "A route template parameter (`products/adapter/CONCEPT.md` section 8.4).\nDivergence from Camel: typed and checked under CFG-VAL-9, where Camel\nparameters are untyped strings.", + "properties": { + "defaultValue": { + "description": "The value used when the instantiation omits the parameter." + }, + "description": { + "description": "What the parameter means, for the reviewed pack.", + "type": "string" + }, + "name": { + "$ref": "#/$defs/LocalId", + "description": "The parameter name, referenced as `{{name}}` or `{{?name}}`; a\nlocal identifier, the same taxonomy an instantiation's binding\nkeys carry (CFG-ID-1)." + }, + "required": { + "description": "Whether instantiation without the parameter is refused.", + "type": "boolean" + }, + "type": { + "$ref": "#/$defs/TemplateParameterType", + "description": "The value type checked at instantiation." + } + }, + "required": [ + "name", + "type" + ], + "type": "object" + }, + "TemplateParameterType": { + "description": "A template parameter's value type (CFG-VAL-9).", + "oneOf": [ + { + "enum": [ + "string", + "integer", + "number", + "boolean" + ], + "type": "string" + }, + { + "const": "map", + "description": "A flat, bounded string-to-string map, whose only use in a template\nbody is a whole-value `constant` placeholder.", + "type": "string" + } + ] + }, + "ThrottleMode": { + "description": "Throttle mode, Camel 4's `mode` option.", + "oneOf": [ + { + "const": "total-requests", + "description": "Total requests per period (Camel default).", + "type": "string" + }, + { + "const": "concurrent-requests", + "description": "Concurrent requests.", + "type": "string" + } + ] + }, + "ThrottleStep": { + "additionalProperties": false, + "description": "A `throttle` step (`products/adapter/CONCEPT.md` section 8.6).\nDivergence: a waiting exchange waits at most until its deadline, then\nraises `throttle.rejected`.", + "properties": { + "limit": { + "$ref": "#/$defs/Expression", + "description": "The request limit per period, an expression as Camel 4 reads it." + }, + "mode": { + "$ref": "#/$defs/ThrottleMode", + "description": "Total or concurrent requests (Camel default total)." + }, + "rejectExecution": { + "description": "Whether to reject immediately instead of waiting (Camel default\nfalse).", + "type": "boolean" + }, + "steps": { + "description": "The throttled steps.", + "items": { + "$ref": "#/$defs/Step" + }, + "type": "array" + }, + "timePeriodMilliseconds": { + "description": "The period in milliseconds (Camel default 1000); zero cannot bound\na period.", + "format": "uint32", + "maximum": 4294967295, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "limit" + ], + "type": "object" + }, + "ThrowExceptionStep": { + "additionalProperties": false, + "description": "A `throwException` step: raise one closed error class, with an\noptional bounded constant message\n(`products/adapter/CONCEPT.md` section 8.11.6). The checks refuse a\nboundary or facade class, which never enters a route.", + "properties": { + "data": { + "$ref": "#/$defs/Expression", + "description": "The optional expression producing the selected problem's declared,\nclosed data object. The runtime validates it before disclosure." + }, + "exceptionType": { + "$ref": "#/$defs/ErrorClass", + "description": "The closed class to raise; a catchable class, typically an\n`outcome.*` class." + }, + "message": { + "description": "The optional constant message; no expression is ported.", + "type": "string" + } + }, + "required": [ + "exceptionType" + ], + "type": "object" + }, + "ToParameters": { + "additionalProperties": false, + "description": "The parameters of an upstream send, Camel's `http` component options\n(`products/adapter/CONCEPT.md` section 8.8). The path template's\n`{{name}}` segments are filled from `pathParameters` expressions and\npercent-encoded by the engine as single segments; query members are\nengine-encoded.", + "properties": { + "body": { + "$ref": "#/$defs/Expression", + "description": "The request body expression, marshalled to JSON." + }, + "httpMethod": { + "$ref": "#/$defs/HttpMethod", + "description": "The request method; an `http:` send declares it, a `graphql:` send\nomits it. Its safety carries the write-safety rules of\n`crate::checks`." + }, + "httpUri": { + "$ref": "#/$defs/Expression", + "description": "An origin-pinned link carried as an expression instead of `path`\n(`products/adapter/CONCEPT.md` section 8.11.5): at send time the\nengine parses the value as an absolute URL and refuses it with\n`egress.refused` unless it stays inside the endpoint's origin and\nbase path, carries no userinfo or fragment, and fits the URL\nlength bound. The checks refuse a send carrying both members, a\nquery beside this one, and this member on a non-http send." + }, + "okStatusCodeRange": { + "description": "The inclusive status range treated as success (Camel default\n`200-299`).", + "type": "string" + }, + "operation": { + "$ref": "#/$defs/ExternalId", + "description": "The endpoint operation this send invokes, when the pack declares\nendpoint operations; write-safety checks read its\n`idempotentUpstream` claim." + }, + "path": { + "description": "The path template, e.g. `/v2/cases/{{type}}`.", + "type": "string" + }, + "pathParameters": { + "additionalProperties": { + "$ref": "#/$defs/Expression" + }, + "description": "Path-template segment name to expression; each key is a local\nidentifier (CFG-ID-1).", + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "query": { + "additionalProperties": { + "$ref": "#/$defs/Expression" + }, + "description": "Query parameter name to expression; each key is the upstream's\nwire parameter name, an external identifier, because the key is\nwhat the source system documents, not a name the pack defines\n(CFG-ID-1).", + "propertyNames": { + "$ref": "#/$defs/ExternalId" + }, + "type": "object" + }, + "queryParameters": { + "additionalProperties": { + "$ref": "#/$defs/Expression" + }, + "description": "Named parameter name to expression of a `postgres:` send, each key\na parameter the endpoint's digest-pinned query file declares\n(`products/adapter/CONCEPT.md` section 8.10, the SQL row; CFG-ID-1\nkeys, engine-evaluated expressions). The checks refuse more than\nsixteen parameters (`adapter.job.postgres-parameters-unbounded`)\nand the member on any non-postgres send.", + "propertyNames": { + "$ref": "#/$defs/ExternalId" + }, + "type": "object" + }, + "resumeBindings": { + "description": "The source-native identifiers a later write-resume step needs\n(`products/adapter/CONCEPT.md` section 9).", + "items": { + "$ref": "#/$defs/ResumeBinding" + }, + "type": "array" + }, + "throwExceptionOnFailure": { + "description": "Whether a failure status raises an error (Camel default true).", + "type": "boolean" + } + }, + "type": "object" + }, + "ToStep": { + "additionalProperties": false, + "description": "A `to` send: the static destination and its parameters\n(`products/adapter/CONCEPT.md` section 8.8). The `http` component\nbuilds the request from the declared template; no expression can change\nthe origin or inject a path segment.", + "properties": { + "parameters": { + "$ref": "#/$defs/ToParameters", + "description": "The send parameters; `direct:` sends carry none." + }, + "uri": { + "$ref": "#/$defs/SendUri", + "description": "The static destination." + } + }, + "required": [ + "uri" + ], + "type": "object" + }, + "ValidateStep": { + "additionalProperties": false, + "description": "A `validate` step.", + "properties": { + "expression": { + "$ref": "#/$defs/Expression", + "description": "The predicate; failure raises the `validation` class." + } + }, + "required": [ + "expression" + ], + "type": "object" + }, + "When": { + "additionalProperties": false, + "description": "One `when` clause of a `choice`: an inline predicate expression (the\nlanguage key sits beside `steps`, as Camel's YAML DSL writes it) and\nthe steps it guards. Exactly one language key must be present;\n`crate::checks` refuses zero or several under an adapter code, and the\nreader refuses any unknown key (`config.unknown-key`, CFG-SCHEMA-8).", + "properties": { + "constant": { + "description": "The `constant` language member." + }, + "exchangeProperty": { + "description": "The `exchangeProperty` language member.", + "type": "string" + }, + "header": { + "description": "The `header` language member.", + "type": "string" + }, + "jsonpath": { + "description": "The `jsonpath` language member.", + "type": "string" + }, + "rhai": { + "$ref": "#/$defs/RhaiExpression", + "description": "The `rhai` language member." + }, + "steps": { + "description": "The steps the clause runs on match.", + "items": { + "$ref": "#/$defs/Step" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "$id": "https://id.registrystack.org/schemas/adapter/pack/pack.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "description": "The adapter pack artifact (`AdapterPack`), a per-source-system catalog:\nendpoint declarations, route templates with typed parameters, internal\n`direct:` routes, code maps, script references with digest pins, and\nthe required engine capabilities.", + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/adapter/pack/v1alpha1", + "type": "string" + }, + "capabilities": { + "$ref": "#/$defs/Capabilities", + "default": { + "components": [], + "eips": [], + "languages": [] + }, + "description": "The engine capabilities the pack requires." + }, + "codeMaps": { + "default": [], + "description": "The code maps routes convert values through.", + "items": { + "$ref": "#/$defs/CodeMap" + }, + "type": "array" + }, + "endpoints": { + "default": [], + "description": "The endpoints routes send to.", + "items": { + "$ref": "#/$defs/Endpoint" + }, + "type": "array" + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The pack identifier a project pins." + }, + "kind": { + "const": "AdapterPack", + "type": "string" + }, + "openApi": { + "$ref": "#/$defs/ScriptReference", + "description": "The provider OpenAPI document used by consumer tooling such as\nEvidence source mocks, captured and digest-pinned with the pack." + }, + "queryFiles": { + "default": [], + "description": "The GraphQL query-file inventory, each file digest-pinned.", + "items": { + "$ref": "#/$defs/ScriptReference" + }, + "type": "array", + "uniqueItems": true + }, + "routeTemplates": { + "default": [], + "description": "The route templates projects instantiate.", + "items": { + "$ref": "#/$defs/RouteTemplate" + }, + "type": "array" + }, + "routes": { + "default": [], + "description": "The internal `direct:` routes shared sub-flows call.", + "items": { + "$ref": "#/$defs/RouteDefinition" + }, + "type": "array" + }, + "scripts": { + "default": [], + "description": "The Rhai script inventory, each file digest-pinned (CFG-EMBED-1).", + "items": { + "$ref": "#/$defs/ScriptReference" + }, + "type": "array", + "uniqueItems": true + }, + "sourceRoutes": { + "default": [], + "description": "The governed-ingestion source routes the job mode runs\n(`products/adapter/CONCEPT.md` sections 17.1 and 17.2). Entry\npoints of the job mode; a facade route never reaches one.", + "items": { + "$ref": "#/$defs/SourceRouteDecl" + }, + "type": "array" + }, + "testedVersions": { + "description": "The upstream versions this pack was tested against, pack-wide.", + "items": { + "type": "string" + }, + "type": "array" + }, + "version": { + "description": "The pack's own version; a project pin names it next to the digest\n(CFG-ID-4).", + "type": "string" + } + }, + "required": [ + "apiVersion", + "id", + "kind", + "testedVersions", + "version" + ], + "title": "Registry Adapter pack", + "type": "object" +} diff --git a/public/artifacts/sha256/b22c06678f15e4a5aa028df61819cde8d37ce2311e1249a3a8fcc18d00aa3eab.json b/public/artifacts/sha256/b22c06678f15e4a5aa028df61819cde8d37ce2311e1249a3a8fcc18d00aa3eab.json new file mode 100644 index 000000000..86a87fba3 --- /dev/null +++ b/public/artifacts/sha256/b22c06678f15e4a5aa028df61819cde8d37ce2311e1249a3a8fcc18d00aa3eab.json @@ -0,0 +1,1142 @@ +{ + "$defs": { + "ActionReference": { + "additionalProperties": false, + "properties": { + "contract": { + "$ref": "#/$defs/LocalId", + "description": "The local generated contract import that owns this definition." + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The exact definition ID within that generated contract." + } + }, + "required": [ + "contract", + "id" + ], + "type": "object" + }, + "AuthoredCompletion": { + "oneOf": [ + { + "additionalProperties": false, + "description": "Repeats the accepted read under host-owned transport and credentials.", + "properties": { + "interpret": { + "$ref": "#/$defs/LocalId", + "description": "The typed pure Function that turns the saved command and response into an observation." + }, + "intervalSeconds": { + "description": "Seconds between pending observations; the host may impose a stricter minimum.", + "format": "uint32", + "maximum": 86400, + "minimum": 1, + "type": "integer" + }, + "type": { + "const": "bounded-poll", + "type": "string" + } + }, + "required": [ + "type", + "interpret", + "intervalSeconds" + ], + "type": "object" + } + ] + }, + "AuthoredCompletionReference": { + "additionalProperties": false, + "properties": { + "name": { + "$ref": "#/$defs/LocalId", + "description": "One named completion on the referenced call Operation." + }, + "step": { + "$ref": "#/$defs/LocalId", + "description": "The preceding accepted call or completed wait Step whose value is read." + } + }, + "required": [ + "step", + "name" + ], + "type": "object" + }, + "AuthoredCondition": { + "additionalProperties": false, + "description": "One reference and exactly one test of it.", + "properties": { + "equals": { + "default": null, + "description": "Holds when the value equals this string, number or boolean of the same kind.", + "x-registry-foreign": "json" + }, + "greater": { + "default": null, + "description": "Holds when the value is above this number, or after this calendar date such as `2026-01-31` when the reference declares `format: date`.", + "x-registry-foreign": "json" + }, + "less": { + "default": null, + "description": "Holds when the value is below this number, or before this calendar date such as `2026-01-31` when the reference declares `format: date`.", + "x-registry-foreign": "json" + }, + "oneOf": { + "description": "Holds when the value equals one of these strings, numbers or booleans, all of one kind.", + "items": { + "x-registry-foreign": "json" + }, + "type": "array" + }, + "present": { + "description": "`true` holds when the value exists and is not null; `false` holds when it is missing or null. Put `present: true` before a test on an optional value to guard it.", + "type": "boolean" + }, + "value": { + "$ref": "#/$defs/Reference", + "description": "The value tested. Only `present` accepts a value that is missing or null; every other test fails the run on one." + } + }, + "required": [ + "value" + ], + "type": "object" + }, + "AuthoredEventTrigger": { + "additionalProperties": false, + "properties": { + "dataSchema": { + "$ref": "#/$defs/ExternalId", + "description": "Exact producer data-schema identifier accepted by this trigger." + }, + "description": { + "$ref": "#/$defs/DisplayText", + "description": "An optional explanation of when this start fires; it has no execution or authorization effect." + }, + "event": { + "$ref": "#/$defs/Schema", + "description": "Schema for the complete authenticated event envelope before input mapping." + }, + "eventType": { + "$ref": "#/$defs/ExternalId", + "description": "Exact producer event type accepted by this trigger." + }, + "input": { + "$ref": "#/$defs/AuthoredMapping", + "description": "Ordinary typed Mapping from the event envelope to Workflow start input." + }, + "label": { + "$ref": "#/$defs/DisplayText", + "description": "An optional human label for this start; it changes neither stable identity nor behavior revision." + }, + "source": { + "$ref": "#/$defs/LocalId", + "description": "Logical producer binding declared in runtime eventSources." + } + }, + "required": [ + "source", + "eventType", + "dataSchema", + "event", + "input" + ], + "type": "object" + }, + "AuthoredFunction": { + "additionalProperties": false, + "properties": { + "description": { + "$ref": "#/$defs/DisplayText", + "description": "An optional explanation for readers; it has no execution or authorization effect." + }, + "entrypoint": { + "description": "One public source function taking exactly one named-input object.", + "type": "string" + }, + "inputs": { + "additionalProperties": { + "$ref": "#/$defs/Schema" + }, + "description": "Named input schemas or references; every declared input is required exactly once.", + "maxProperties": 16, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "label": { + "$ref": "#/$defs/DisplayText", + "description": "An optional human label; it changes neither stable identity nor behavior revision." + }, + "limits": { + "$ref": "#/$defs/NarrowedLimits", + "description": "Optional narrowing of the bounded pure profile; omitted limits retain the default ceiling." + }, + "output": { + "$ref": "#/$defs/Schema", + "description": "The declared result schema or mapping; Functions and the host enforce it." + }, + "runtime": { + "$ref": "#/$defs/FunctionRuntime", + "description": "The pinned pure runtime; rhai has no clock, network, database or credential capability." + }, + "source": { + "description": "A local reviewed source asset inside the project directory.", + "type": "string" + } + }, + "required": [ + "runtime", + "source", + "entrypoint", + "inputs", + "output" + ], + "type": "object" + }, + "AuthoredMapping": { + "oneOf": [ + { + "additionalProperties": false, + "description": "Computes a value with a declared typed pure Function.", + "properties": { + "function": { + "$ref": "#/$defs/LocalId", + "description": "A declared pure Function called with an object of named inputs." + }, + "inputs": { + "additionalProperties": { + "$ref": "#/$defs/Reference" + }, + "description": "Named input schemas or references; every declared input is required exactly once.", + "maxProperties": 16, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "type": { + "const": "function", + "type": "string" + } + }, + "required": [ + "type", + "function", + "inputs" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Builds an object from named references, literals and nested fields.", + "properties": { + "fields": { + "$ref": "#/$defs/Fields", + "description": "Object members built from typed references, literals or nested fields." + }, + "type": { + "const": "fields", + "type": "string" + } + }, + "required": [ + "type", + "fields" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Decides a choose step by comparing values: `matched` when the conditions hold, `unmatched` when they do not.", + "properties": { + "all": { + "description": "One to sixteen conditions that must all hold; give exactly one of `all` or `any`. Conditions run in order and stop at the first that does not hold.", + "items": { + "$ref": "#/$defs/AuthoredCondition" + }, + "maxItems": 16, + "minItems": 1, + "type": "array" + }, + "any": { + "description": "One to sixteen conditions of which one must hold; give exactly one of `all` or `any`. Conditions run in order and stop at the first that holds.", + "items": { + "$ref": "#/$defs/AuthoredCondition" + }, + "maxItems": 16, + "minItems": 1, + "type": "array" + }, + "type": { + "const": "compare", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Reads the Workflow input.", + "properties": { + "path": { + "$ref": "#/$defs/JsonPointer", + "description": "An optional RFC 6901 pointer; omit it to read the entire value." + }, + "type": { + "const": "input", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Reads an earlier accepted call or completed wait on every incoming route.", + "properties": { + "path": { + "$ref": "#/$defs/JsonPointer", + "description": "An optional RFC 6901 pointer; omit it to read the entire value." + }, + "step": { + "$ref": "#/$defs/LocalId", + "description": "The preceding accepted call or completed wait Step whose value is read." + }, + "type": { + "const": "step", + "type": "string" + } + }, + "required": [ + "type", + "step" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Supplies one bounded literal JSON value.", + "properties": { + "type": { + "const": "literal", + "type": "string" + }, + "value": { + "description": "A literal JSON value; it remains subject to bounded value checks.", + "x-registry-foreign": "json" + } + }, + "required": [ + "type", + "value" + ], + "type": "object" + } + ] + }, + "AuthoredOperation": { + "additionalProperties": false, + "properties": { + "action": { + "$ref": "#/$defs/ActionReference", + "description": "An exact BReg Action specialization from one generated contract import." + }, + "completions": { + "additionalProperties": { + "$ref": "#/$defs/AuthoredCompletion" + }, + "description": "Named bounded completion contracts; the host enforces their observation semantics.", + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "connection": { + "$ref": "#/$defs/LocalId", + "description": "The logical deployment connection. It grants no authority." + }, + "description": { + "$ref": "#/$defs/DisplayText", + "description": "An optional explanation for readers; it has no execution or authorization effect." + }, + "interpret": { + "$ref": "#/$defs/LocalId", + "description": "The typed pure Function that interprets an external command's provider\nresponse into an accepted result, a declared refusal or an uncertain\noutcome. Required on, and accepted only on, `external.command/v1`." + }, + "label": { + "$ref": "#/$defs/DisplayText", + "description": "An optional human label; it changes neither stable identity nor behavior revision." + }, + "record": { + "$ref": "#/$defs/RecordReference", + "description": "Limit BReg read replies to the imported record schema's API field names.\nFields may be hidden by access policy, and their value types remain open." + }, + "responseSchema": { + "$ref": "#/$defs/Schema", + "description": "An optional typed response specialization for the bounded external GET\nor external command Operation." + }, + "template": { + "$ref": "#/$defs/TemplateReference", + "description": "Fix a Messaging template version, its locales and its data schema." + }, + "uses": { + "$ref": "#/$defs/Operation", + "description": "One exact versioned host catalog contract." + } + }, + "required": [ + "uses", + "connection" + ], + "type": "object" + }, + "AuthoredStep": { + "oneOf": [ + { + "additionalProperties": false, + "description": "Waits until a computed RFC 3339 instant.", + "properties": { + "description": { + "$ref": "#/$defs/DisplayText", + "description": "An optional explanation for readers; it has no execution or authorization effect." + }, + "label": { + "$ref": "#/$defs/DisplayText", + "description": "An optional human label; it changes neither stable identity nor behavior revision." + }, + "next": { + "$ref": "#/$defs/LocalId", + "description": "The next Step on the successful completion route." + }, + "type": { + "const": "wait-until", + "type": "string" + }, + "waitUntil": { + "$ref": "#/$defs/AuthoredMapping", + "description": "A mapping producing an RFC 3339 instant with an offset." + } + }, + "required": [ + "type", + "waitUntil", + "next" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Observes one named completion of an earlier accepted call.", + "properties": { + "completion": { + "$ref": "#/$defs/AuthoredCompletionReference", + "description": "A preceding accepted call Step and one named Operation completion." + }, + "description": { + "$ref": "#/$defs/DisplayText", + "description": "An optional explanation for readers; it has no execution or authorization effect." + }, + "label": { + "$ref": "#/$defs/DisplayText", + "description": "An optional human label; it changes neither stable identity nor behavior revision." + }, + "next": { + "$ref": "#/$defs/LocalId", + "description": "The next Step on the successful completion route." + }, + "onCancel": { + "$ref": "#/$defs/LocalId", + "description": "An optional Step taken after authorized cancellation while waiting; no completion value is available there." + }, + "onTimeout": { + "$ref": "#/$defs/LocalId", + "description": "An optional Step taken when this wait expires; no completion value is available there." + }, + "timeoutSeconds": { + "description": "Maximum seconds to wait; it must be shorter than the Workflow deadline.", + "format": "uint32", + "maximum": 31536000, + "minimum": 1, + "type": "integer" + }, + "type": { + "const": "wait-for", + "type": "string" + } + }, + "required": [ + "type", + "completion", + "timeoutSeconds", + "next" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Calls one resolved Operation alias under the current connection authority.", + "properties": { + "description": { + "$ref": "#/$defs/DisplayText", + "description": "An optional explanation for readers; it has no execution or authorization effect." + }, + "input": { + "$ref": "#/$defs/AuthoredMapping", + "description": "The typed Workflow start input, or a mapping supplying the called Operation input." + }, + "label": { + "$ref": "#/$defs/DisplayText", + "description": "An optional human label; it changes neither stable identity nor behavior revision." + }, + "next": { + "$ref": "#/$defs/LocalId", + "description": "The next Step on the successful completion route." + }, + "onDeclaredRefusal": { + "$ref": "#/$defs/LocalId", + "description": "A separate Step taken only for a validated package-declared business refusal.\nOmit it to fail the run with `product-refused` on a declared refusal too." + }, + "operation": { + "$ref": "#/$defs/LocalId", + "description": "One local Operation alias declared under operations." + }, + "type": { + "const": "call", + "type": "string" + } + }, + "required": [ + "type", + "operation", + "input", + "next" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Selects one explicit graph edge by a typed case label.", + "properties": { + "cases": { + "additionalProperties": { + "$ref": "#/$defs/LocalId" + }, + "description": "Explicit label-to-Step edges; no implicit fall-through exists.", + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "choose": { + "$ref": "#/$defs/AuthoredMapping", + "description": "A typed mapping producing one of the declared case labels." + }, + "description": { + "$ref": "#/$defs/DisplayText", + "description": "An optional explanation for readers; it has no execution or authorization effect." + }, + "expected": { + "$ref": "#/$defs/LocalId", + "description": "The everyday case for readers and diagram tools; it has no execution or revision effect." + }, + "label": { + "$ref": "#/$defs/DisplayText", + "description": "An optional human label; it changes neither stable identity nor behavior revision." + }, + "type": { + "const": "choose", + "type": "string" + } + }, + "required": [ + "type", + "choose", + "cases" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Finishes with one declared typed outcome.", + "properties": { + "description": { + "$ref": "#/$defs/DisplayText", + "description": "An optional explanation for readers; it has no execution or authorization effect." + }, + "label": { + "$ref": "#/$defs/DisplayText", + "description": "An optional human label; it changes neither stable identity nor behavior revision." + }, + "outcome": { + "$ref": "#/$defs/LocalId", + "description": "One declared terminal outcome name." + }, + "output": { + "$ref": "#/$defs/AuthoredMapping", + "description": "The declared result schema or mapping; Functions and the host enforce it." + }, + "type": { + "const": "finish", + "type": "string" + } + }, + "required": [ + "type", + "outcome" + ], + "type": "object" + } + ] + }, + "AuthoredWorkflow": { + "additionalProperties": false, + "properties": { + "deadlineSeconds": { + "description": "Maximum seconds from Run admission to expiry, from 1 to 31536000.", + "format": "uint32", + "maximum": 31536000, + "minimum": 1, + "type": "integer" + }, + "eventTriggers": { + "additionalProperties": { + "$ref": "#/$defs/AuthoredEventTrigger" + }, + "description": "Optional authenticated product-event starts keyed by stable trigger ID.", + "maxProperties": 16, + "minProperties": 0, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "input": { + "$ref": "#/$defs/Schema", + "description": "The typed Workflow start input, or a mapping supplying the called Operation input." + }, + "outcomes": { + "additionalProperties": { + "$ref": "#/$defs/Schema" + }, + "description": "Named terminal result schemas used by finish Steps.", + "maxProperties": 64, + "minProperties": 1, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "start": { + "$ref": "#/$defs/LocalId", + "description": "The stable Step ID every Run begins at." + }, + "steps": { + "additionalProperties": { + "$ref": "#/$defs/AuthoredStep" + }, + "description": "Steps keyed by stable ID; map ordering has no execution meaning.", + "maxProperties": 64, + "minProperties": 1, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + } + }, + "required": [ + "input", + "deadlineSeconds", + "start", + "steps", + "outcomes" + ], + "type": "object" + }, + "ContractProduct": { + "enum": [ + "breg", + "messaging" + ], + "type": "string" + }, + "DisplayText": { + "description": "Human-readable display text. Bidirectional embedding, override, and isolate controls, byte-order marks, line and paragraph separators, and Unicode noncharacters are refused; multilingual joiners and direction marks remain valid.", + "not": { + "pattern": "[

‪-‮⁦-⁩﷐-﷯￾￿]|🿾|🿿|𯿾|𯿿|𿿾|𿿿|񏿾|񏿿|񟿾|񟿿|񯿾|񯿿|񿿾|񿿿|򏿾|򏿿|򟿾|򟿿|򯿾|򯿿|򿿾|򿿿|󏿾|󏿿|󟿾|󟿿|󯿾|󯿿|󿿾|󿿿|􏿾|􏿿" + }, + "type": "string" + }, + "ExternalId": { + "description": "An identifier another system issues, written exactly as its issuer gives it.", + "maxLength": 512, + "minLength": 1, + "pattern": "^[^\\u0000-\\u001F\\u007F-\\u009F]+$", + "type": "string" + }, + "FieldName": { + "description": "A member name a fields mapping writes.", + "pattern": "^[A-Za-z][A-Za-z0-9_-]{0,63}$", + "type": "string" + }, + "Fields": { + "additionalProperties": { + "$ref": "#/$defs/Member" + }, + "description": "Object members built from one typed reference, literal or nested fields mapping each. A mapping nests at most 4 levels deep and holds at most 64 members across its levels.", + "maxProperties": 64, + "propertyNames": { + "allOf": [ + { + "$ref": "#/$defs/ExternalId" + }, + { + "$ref": "#/$defs/FieldName" + } + ] + }, + "type": "object" + }, + "FunctionRuntime": { + "enum": [ + "rhai" + ], + "type": "string" + }, + "ImportedContract": { + "additionalProperties": false, + "properties": { + "source": { + "description": "A generated JSON artifact inside the project directory.", + "type": "string" + }, + "type": { + "$ref": "#/$defs/ContractProduct", + "description": "The producer of this generated public contract artifact." + } + }, + "required": [ + "type", + "source" + ], + "type": "object" + }, + "JsonPointer": { + "description": "An RFC 6901 JSON Pointer into the referenced value, such as /member/0. Omit path to use the whole value.", + "maxLength": 256, + "pattern": "^/([^~]|~[01])*$", + "type": "string" + }, + "LocalId": { + "description": "A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.", + "pattern": "^[a-z][a-z0-9_-]{0,63}$", + "type": "string" + }, + "Member": { + "oneOf": [ + { + "additionalProperties": false, + "description": "Reads the Workflow input.", + "properties": { + "path": { + "$ref": "#/$defs/JsonPointer", + "description": "An optional RFC 6901 pointer; omit it to read the entire value." + }, + "type": { + "const": "input", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Reads an earlier accepted call or completed wait on every incoming route.", + "properties": { + "path": { + "$ref": "#/$defs/JsonPointer", + "description": "An optional RFC 6901 pointer; omit it to read the entire value." + }, + "step": { + "$ref": "#/$defs/LocalId", + "description": "The preceding accepted call or completed wait Step whose value is read." + }, + "type": { + "const": "step", + "type": "string" + } + }, + "required": [ + "type", + "step" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Supplies one bounded literal JSON value.", + "properties": { + "type": { + "const": "literal", + "type": "string" + }, + "value": { + "description": "A literal JSON value; it remains subject to bounded value checks.", + "x-registry-foreign": "json" + } + }, + "required": [ + "type", + "value" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Builds a nested object member by member, never with a Function.", + "properties": { + "fields": { + "$ref": "#/$defs/Fields", + "description": "Object members built from typed references, literals or nested fields." + }, + "type": { + "const": "fields", + "type": "string" + } + }, + "required": [ + "type", + "fields" + ], + "type": "object" + } + ] + }, + "NarrowedLimits": { + "additionalProperties": false, + "description": "Omitted limits use the bounded pure default; explicit values only narrow it.", + "properties": { + "arrayItems": { + "description": "Maximum array entries, from 1 to the 256-entry profile ceiling.", + "format": "uint32", + "maximum": 256, + "minimum": 1, + "type": "integer" + }, + "callLevels": { + "description": "Maximum nested calls, from 1 to the 32-level profile ceiling.", + "format": "uint32", + "maximum": 32, + "minimum": 1, + "type": "integer" + }, + "expressionDepth": { + "description": "Maximum expression nesting, from 1 to the 64-level profile ceiling.", + "format": "uint32", + "maximum": 64, + "minimum": 1, + "type": "integer" + }, + "mapEntries": { + "description": "Maximum object entries, from 1 to the 256-entry profile ceiling.", + "format": "uint32", + "maximum": 256, + "minimum": 1, + "type": "integer" + }, + "operations": { + "description": "Maximum interpreter operations, from 1 to the 100000-operation profile ceiling.", + "format": "uint32", + "maximum": 100000, + "minimum": 1, + "type": "integer" + }, + "sourceBytes": { + "description": "Maximum source bytes, from 1 to the 65536-byte profile ceiling.", + "format": "uint32", + "maximum": 65536, + "minimum": 1, + "type": "integer" + }, + "stringBytes": { + "description": "Maximum string bytes, from 1 to the 16384-byte profile ceiling.", + "format": "uint32", + "maximum": 16384, + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + }, + "Operation": { + "enum": [ + "breg.read-record/v1", + "messaging.submit-message/v1", + "scheduling.read-service/v1", + "scheduling.read-availability/v1", + "scheduling.create-appointment/v1", + "scheduling.read-appointment/v1", + "scheduling.create-hold/v1", + "scheduling.release-hold/v1", + "scheduling.confirm-hold/v1", + "scheduling.reschedule-appointment/v1", + "scheduling.cancel-appointment/v1", + "breg.invoke-action/v1", + "external.get/v1", + "evaluation.evaluate/v1", + "casework.submit-review-request/v1", + "casework.cancel-review-request/v1", + "scheduling.preview-availability/v1", + "external.command/v1", + "breg.read-in-force/v1", + "breg.read-proposal/v1", + "breg.start-proposal/v1", + "breg.submit-proposal/v1", + "breg.cancel-proposal/v1", + "breg.lookup-record/v1", + "breg.read-record/v2" + ], + "type": "string" + }, + "ProjectIdentity": { + "additionalProperties": false, + "description": "The members that name a project (CFG-ENV-6): a project's `project` block\nholds these, and may add project-wide members of the product's own.\nSchema name `ProjectIdentity`.", + "properties": { + "id": { + "$ref": "#/$defs/LocalId", + "description": "The stable Workflow API name, also the enclosing Project ID." + }, + "version": { + "description": "The human release label; it is distinct from the computed Workflow revision.", + "type": "string" + } + }, + "required": [ + "id", + "version" + ], + "type": "object" + }, + "RecordReference": { + "additionalProperties": false, + "properties": { + "contract": { + "$ref": "#/$defs/LocalId", + "description": "The local generated BReg record schema import." + } + }, + "required": [ + "contract" + ], + "type": "object" + }, + "Reference": { + "oneOf": [ + { + "additionalProperties": false, + "description": "Reads the Workflow input.", + "properties": { + "path": { + "$ref": "#/$defs/JsonPointer", + "description": "An optional RFC 6901 pointer; omit it to read the entire value." + }, + "type": { + "const": "input", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Reads an earlier accepted call or completed wait on every incoming route.", + "properties": { + "path": { + "$ref": "#/$defs/JsonPointer", + "description": "An optional RFC 6901 pointer; omit it to read the entire value." + }, + "step": { + "$ref": "#/$defs/LocalId", + "description": "The preceding accepted call or completed wait Step whose value is read." + }, + "type": { + "const": "step", + "type": "string" + } + }, + "required": [ + "type", + "step" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Supplies one bounded literal JSON value.", + "properties": { + "type": { + "const": "literal", + "type": "string" + }, + "value": { + "description": "A literal JSON value; it remains subject to bounded value checks.", + "x-registry-foreign": "json" + } + }, + "required": [ + "type", + "value" + ], + "type": "object" + } + ] + }, + "Schema": { + "description": "A whole JSON Schema or one compile-time schema reference. Schema keywords\nretain their independently owned JSON Schema spelling.", + "x-registry-foreign": "json-schema-2020-12" + }, + "TemplateReference": { + "additionalProperties": false, + "properties": { + "contract": { + "$ref": "#/$defs/LocalId", + "description": "The local generated Messaging template contract import." + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The exact template ID in the imported contract." + }, + "version": { + "description": "The exact template version label, quoted when numeric.", + "type": "string" + } + }, + "required": [ + "contract", + "id", + "version" + ], + "type": "object" + } + }, + "$id": "https://id.registrystack.org/schemas/coordinator/project/project.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "description": "A project contains one finite Workflow and its reusable typed assets.", + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/coordinator/project/v1alpha1", + "description": "The format and version this document is written in.", + "type": "string" + }, + "contracts": { + "additionalProperties": { + "$ref": "#/$defs/ImportedContract" + }, + "description": "Generated local public product contracts imported at compile time; no runtime discovery occurs.", + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "description": { + "$ref": "#/$defs/DisplayText", + "description": "An optional explanation for readers; it has no execution or authorization effect." + }, + "functions": { + "additionalProperties": { + "$ref": "#/$defs/AuthoredFunction" + }, + "description": "Named typed bounded pure computations over one object of named inputs.", + "maxProperties": 128, + "minProperties": 0, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "kind": { + "const": "CoordinatorProject", + "description": "The kind of document this is.", + "type": "string" + }, + "label": { + "$ref": "#/$defs/DisplayText", + "description": "An optional human label; it changes neither stable identity nor behavior revision." + }, + "operations": { + "additionalProperties": { + "$ref": "#/$defs/AuthoredOperation" + }, + "description": "Local aliases for exact versioned host Operations and logical deployment connections.", + "maxProperties": 64, + "minProperties": 0, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "project": { + "allOf": [ + { + "$ref": "#/$defs/ProjectIdentity", + "description": "The shared identity: project.id identifies this Workflow and project.version is a human release label." + }, + { + "properties": { + "version": { + "description": "A bounded human release label; it does not replace the computed Workflow revision.", + "maxLength": 64, + "minLength": 1, + "pattern": "^[A-Za-z0-9_-]+$", + "type": "string" + } + } + } + ], + "description": "The shared Project identity; its version is a human release label, not the computed Workflow revision.", + "unevaluatedProperties": false + }, + "types": { + "additionalProperties": { + "$ref": "#/$defs/Schema" + }, + "description": "Reusable named JSON Schemas, referenced with typeRef in whole-schema positions.", + "maxProperties": 128, + "minProperties": 0, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "workflow": { + "$ref": "#/$defs/AuthoredWorkflow", + "description": "The one finite acyclic Workflow graph this project defines." + } + }, + "required": [ + "project", + "workflow", + "apiVersion", + "kind" + ], + "title": "CoordinatorProject", + "type": "object" +} diff --git a/public/artifacts/sha256/b5f7140e63c4307838e4b26286f0aad064577c7facc5e7423e1b63887d9afb95.json b/public/artifacts/sha256/b5f7140e63c4307838e4b26286f0aad064577c7facc5e7423e1b63887d9afb95.json new file mode 100644 index 000000000..7a291e07d --- /dev/null +++ b/public/artifacts/sha256/b5f7140e63c4307838e4b26286f0aad064577c7facc5e7423e1b63887d9afb95.json @@ -0,0 +1,846 @@ +{ + "$defs": { + "AssuranceProfile": { + "description": "The assurance boundary the runtime file declares for its seals. The\nmember and the values are Evidence's.", + "oneOf": [ + { + "const": "local", + "description": "Seals sign with a `local-jwk` key file and are test seals: documents\nprint them as test seals (`signing.testOnly` is true).", + "type": "string" + }, + { + "const": "production", + "description": "Seals sign through Transit: `signing.testOnly` is false.", + "type": "string" + } + ] + }, + "AuditDestinationKind": { + "description": "The configured audit destination kind, as written in product configuration.", + "oneOf": [ + { + "const": "file", + "description": "Durable, rotated JSON Lines file.", + "type": "string" + }, + { + "const": "stdout", + "description": "One JSON line per entry on standard output, flushed per entry.", + "type": "string" + } + ] + }, + "AuditRuntime": { + "additionalProperties": false, + "description": "The audit block every Registry Stack product shares: a `file` (the\ndefault) or `stdout` destination, with rotation and retention for a file.", + "else": { + "required": [ + "path" + ] + }, + "if": { + "properties": { + "destination": { + "const": "stdout" + } + }, + "required": [ + "destination" + ] + }, + "properties": { + "destination": { + "$ref": "#/$defs/AuditDestinationKind", + "default": "file", + "description": "Where audit lines go: `file` or `stdout`." + }, + "path": { + "description": "The absolute path of the active audit file, for a `file` destination.", + "pattern": "^/+(?:(?:[^/.][^/]*|\\.(?:[^/.][^/]*|\\.[^/]+)?)/+)*(?:[^/.][^/]*|\\.(?:[^/.][^/]*|\\.[^/]+))$", + "type": "string" + }, + "retentionDays": { + "description": "Days a rotated file is kept, for a `file` destination. Default: 90.", + "format": "uint32", + "maximum": 36500, + "minimum": 1, + "type": "integer" + }, + "rotateBytes": { + "description": "Size at which the active file rotates, in bytes, for a `file`\ndestination. Default: 100 MiB.", + "format": "uint64", + "maximum": 4294967295, + "minimum": 1048576, + "type": "integer" + } + }, + "then": { + "not": { + "anyOf": [ + { + "required": [ + "path" + ] + }, + { + "required": [ + "rotateBytes" + ] + }, + { + "required": [ + "retentionDays" + ] + } + ] + } + }, + "type": "object" + }, + "AuthenticationRuntime": { + "additionalProperties": false, + "oneOf": [ + { + "not": { + "required": [ + "apiKeyRef" + ] + }, + "required": [ + "oidc" + ] + }, + { + "not": { + "required": [ + "oidc" + ] + }, + "required": [ + "apiKeyRef" + ] + } + ], + "properties": { + "apiKeyRef": { + "$ref": "#/$defs/SecretReference", + "description": "Secret reference to the caller API key, under a declared provider.\nOmit when OIDC authentication is configured." + }, + "oidc": { + "$ref": "#/$defs/OidcRuntime" + } + }, + "type": "object" + }, + "Digest": { + "description": "A SHA-256 digest: `sha256:` followed by 64 lowercase hex digits.", + "pattern": "^sha256:[0-9a-f]{64}$", + "type": "string" + }, + "EnvironmentSecretProviderConfig": { + "additionalProperties": false, + "description": "The environment secret provider. It takes no settings.", + "type": "object" + }, + "ExternalId": { + "description": "An identifier another system issues, written exactly as its issuer gives it.", + "maxLength": 512, + "minLength": 1, + "pattern": "^[^\\u0000-\\u001F\\u007F-\\u009F]+$", + "type": "string" + }, + "FileSecretProviderConfig": { + "additionalProperties": false, + "description": "The file secret provider.", + "properties": { + "root": { + "description": "Absolute directory holding one file per secret. Each file must be a\nregular file owned by the runtime user, mode 0400 or 0600, with exactly\none hard link.", + "pattern": "^/", + "type": "string" + } + }, + "required": [ + "root" + ], + "type": "object" + }, + "JwksSource": { + "description": "Where a runtime obtains the OIDC issuer's signing keys.", + "oneOf": [ + { + "additionalProperties": false, + "description": "Read `jwks_uri` from the issuer's OpenID Connect discovery document.", + "properties": { + "type": { + "const": "discovery", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Fetch the key set from this absolute `https` URI, skipping discovery.\nA plain `http` URI is accepted on loopback for supervised local\ndevelopment, and beyond loopback only when the issuer block sets\n`allowInsecureHttp`.", + "properties": { + "type": { + "const": "uri", + "type": "string" + }, + "uri": { + "$ref": "#/$defs/Url" + } + }, + "required": [ + "type", + "uri" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Read the key set from a secret, for deployments without network access\nto the issuer.", + "properties": { + "documentRef": { + "$ref": "#/$defs/SecretReference" + }, + "type": { + "const": "static", + "type": "string" + } + }, + "required": [ + "type", + "documentRef" + ], + "type": "object" + } + ] + }, + "LimitsRuntime": { + "additionalProperties": false, + "properties": { + "maximumConcurrentRenders": { + "description": "Most renders in flight at once. Default: the CPU count, at most 8.", + "format": "uint64", + "maximum": 64, + "minimum": 1, + "type": "integer" + }, + "maximumOutputBytes": { + "default": 8388608, + "description": "Largest PDF a render may produce, in bytes.", + "format": "uint64", + "maximum": 8388608, + "minimum": 1, + "type": "integer" + }, + "maximumRequestBytes": { + "default": 8388608, + "description": "Largest request body (data and base64 assets), in bytes. The httpsec\ndefault is 1 MiB; renders with photos need a conscious, bounded raise.", + "format": "uint64", + "maximum": 67108864, + "minimum": 1, + "type": "integer" + }, + "renderTimeoutSeconds": { + "default": 20, + "description": "Wall-clock budget per render, in seconds; the worker is killed at\nthis bound.", + "format": "uint64", + "maximum": 3600, + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + }, + "ListenerBind": { + "description": "Socket address the runtime listens on, written host:port with an IP address host ([addr]:port for IPv6).", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "ListenerNetworkExposure": { + "description": "The operator-declared private network placement of an HTTP listener.", + "enum": [ + "private-address", + "container-private" + ], + "type": "string" + }, + "ListenerRuntime": { + "additionalProperties": false, + "properties": { + "bind": { + "$ref": "#/$defs/ListenerBind", + "allOf": [ + { + "$ref": "#/$defs/socketPort" + }, + { + "anyOf": [ + { + "$ref": "#/$defs/ipv4SocketHost" + }, + { + "$ref": "#/$defs/ipv6HexSocketHost" + }, + { + "$ref": "#/$defs/ipv6MixedSocketHost" + } + ] + } + ], + "description": "Loopback, private, or link-local address to listen on. A public or\nall-interfaces bind is refused when the file is read. TLS is the\nproxy's job, not Render's." + }, + "networkExposure": { + "$ref": "#/$defs/ListenerNetworkExposure", + "default": "private-address" + }, + "shutdownGraceMilliseconds": { + "default": 30000, + "description": "Time allowed for renders and seals in flight to finish at shutdown,\nin milliseconds. Open connections get the same again.", + "format": "uint64", + "maximum": 3600000, + "minimum": 1000, + "type": "integer" + } + }, + "required": [ + "bind" + ], + "type": "object" + }, + "LocalId": { + "description": "A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.", + "pattern": "^[a-z][a-z0-9_-]{0,63}$", + "type": "string" + }, + "OidcAllowedClients": { + "anyOf": [ + { + "const": "unrestricted", + "description": "Admit a token from every client the issuer verifies.", + "type": "string" + }, + { + "description": "Admit a token only from a listed client.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + ], + "description": "How `allowedClients` is written (CFG-EMPTY-2): the keyword `unrestricted`,\nor a list of at least one client. An empty list is refused, because it\nreads as both \"none\" and \"any\"." + }, + "OidcRuntime": { + "additionalProperties": false, + "description": "Serving-adapter OIDC configuration. The pure rendering library never reads it.", + "properties": { + "allowInsecureHttp": { + "default": false, + "description": "Permit plain HTTP beyond loopback to the configured issuer and to a\nJWKS URI declared in configuration. TLS remains required unless the\noperator explicitly accepts this transport risk.", + "type": "boolean" + }, + "allowedClients": { + "$ref": "#/$defs/OidcAllowedClients", + "description": "The OAuth clients whose access tokens are admitted: `unrestricted` to\nadmit a token from every client the issuer verifies, or a list of at\nleast one distinct client. A runtime decides whether `unrestricted`\nis acceptable in production." + }, + "assertionIssuers": { + "additionalProperties": { + "items": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "maxItems": 16, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "description": "Assertion authorities each client may exchange a subject token from,\nkeyed by client identifier. Omitted, no assertion-issuer rule applies;\nwritten, it lists at least one client, each with at least one\nauthority. Once a client is listed, a token it exchanged is accepted\nonly for one of that client's declared authorities, and a client that\nis not listed may exchange from no authority.", + "maxProperties": 64, + "minProperties": 1, + "propertyNames": { + "$ref": "#/$defs/ExternalId", + "maxLength": 128 + }, + "type": "object" + }, + "audience": { + "description": "The audience every accepted access token must carry in `aud`.", + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "issuer": { + "$ref": "#/$defs/Url", + "description": "Exact issuer accepted in access-token `iss` claims, an absolute\n`https` URL, or a plain `http` URL when `allowInsecureHttp` is set." + }, + "jwksSource": { + "$ref": "#/$defs/JwksSource", + "default": { + "type": "discovery" + }, + "description": "Where the issuer's signing keys come from. Absent reads the issuer's\nOpenID Connect discovery document." + } + }, + "required": [ + "issuer", + "audience", + "allowedClients" + ], + "type": "object" + }, + "PackageConfig": { + "additionalProperties": false, + "description": "The package a runtime serves: `root` is the absolute package directory,\nand `expectedDigest`, when set, pins the package digest the runtime must\nfind there. The package digest is the digest of the package's\n`SHA256SUMS` file; see [`crate::package`].", + "properties": { + "expectedDigest": { + "$ref": "#/$defs/Digest", + "description": "`sha256:` label of the package digest, the digest of the package's\n`SHA256SUMS` file. When set, the runtime refuses to start on any other\npackage." + }, + "root": { + "description": "Absolute path of the package directory.", + "pattern": "^/", + "type": "string" + } + }, + "required": [ + "root" + ], + "type": "object" + }, + "SealRuntime": { + "additionalProperties": false, + "description": "One seal: the signer, the certificate chain, the timestamp policy, and\nthe clients allowed to use it.", + "oneOf": [ + { + "not": { + "required": [ + "withoutTimestamp" + ] + }, + "required": [ + "timestampAuthority" + ] + }, + { + "not": { + "required": [ + "timestampAuthority" + ] + }, + "required": [ + "withoutTimestamp" + ] + } + ], + "properties": { + "allowedClients": { + "description": "The OIDC clients allowed to seal with this seal: a list of at least\none client, each also admitted by `authentication.oidc.allowedClients`. There is\nno `unrestricted` form and no wildcard: a seal issues documents in the\ninstitution's name, so every seal-capable client is named. Keep these\nclients separate from any citizen-facing client.", + "items": { + "$ref": "#/$defs/ExternalId", + "not": { + "anyOf": [ + { + "const": "unrestricted" + }, + { + "pattern": "\\*" + } + ] + } + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "certificateChainFile": { + "description": "Absolute path of the PEM certificate chain file, the seal's own\ncertificate first, then each issuer. It is absolute like Render's\nother runtime paths, so a runtime file names deployment locations,\nnot locations relative to wherever the file was copied.", + "not": { + "pattern": "(^|/)\\.{1,2}(/|$)" + }, + "pattern": "^/(?:[^/]+/)*[^/]+$", + "type": "string" + }, + "signer": { + "$ref": "#/$defs/SealSignerRuntime", + "description": "Binds the seal to the private-key transport that produces its\nsignature. Selects the signer transport for this seal: `local-jwk`\nresolves a file-provider secret directly, `transit` calls a\nworkload-local Transit signing proxy over a Unix socket. Under\n`assuranceProfile: production` a seal signs through `transit` only;\nunder `local` it signs with a `local-jwk` key file only." + }, + "timestampAuthority": { + "$ref": "#/$defs/TimestampAuthorityRuntime", + "description": "The RFC 3161 timestamp authority that timestamps each seal (PAdES\nB-T), so the seal keeps validating after its certificate expires.\nExactly one of `timestampAuthority` and `withoutTimestamp` is\nrequired." + }, + "withoutTimestamp": { + "$ref": "#/$defs/WithoutTimestamp", + "description": "Seal without a timestamp (PAdES B-B). The only value states the\nconsequence the operator accepts: a seal without a timestamp stops\nvalidating when its certificate expires, which is usually before the\ndocument stops mattering. Exactly one of `timestampAuthority` and\n`withoutTimestamp` is required." + } + }, + "required": [ + "signer", + "certificateChainFile", + "allowedClients" + ], + "type": "object" + }, + "SealSignerRuntime": { + "description": "The private-key transport a seal signs through. The `type` member names\nthe variant.", + "oneOf": [ + { + "additionalProperties": false, + "description": "Resolves a file-provider secret directly; for `assuranceProfile: local`.", + "properties": { + "privateKeyRef": { + "$ref": "#/$defs/SecretReference", + "description": "Names the file-provider secret holding the local signing private\nkey material, read only when `signer.type` is `local-jwk`; the\nvalue is a reference, and configuration never carries the key\nbytes themselves. The secret is one private JSON Web Key, the\nform `registry-render keygen` writes." + }, + "type": { + "const": "local-jwk", + "type": "string" + } + }, + "required": [ + "type", + "privateKeyRef" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Calls a workload-local Transit signing proxy over a Unix socket. The\nkey is an ECDSA P-256 Transit key, so the seal signs ES256, and it\nnever leaves Transit.", + "properties": { + "attemptTimeoutMilliseconds": { + "description": "Bounds how long the runtime waits on each call to the Transit\nsigning proxy; because a `transit` signer keeps no local fallback\nkey, a call that exceeds this bound fails the seal request rather\nthan blocking it indefinitely.", + "format": "uint64", + "maximum": 30000, + "minimum": 1, + "type": "integer" + }, + "keyName": { + "$ref": "#/$defs/LocalId", + "description": "Names the specific key within `signer.mount` this signer calls;\ncombined with `signer.mount` and `signer.keyVersion`, it reaches\nexactly one pinned Transit key." + }, + "keyVersion": { + "description": "Pins signing to one exact Transit key version rather than a\n`latest` alias, so a provider-side rotation cannot silently\nreplace the key bytes behind an unchanged seal certificate.", + "format": "uint32", + "maximum": 4294967295, + "minimum": 1, + "type": "integer" + }, + "mount": { + "$ref": "#/$defs/LocalId", + "description": "Names the Transit secrets-engine mount this signer calls; it is a\npath segment in the local Transit-proxy request URL, not a\nfilesystem location." + }, + "type": { + "const": "transit", + "type": "string" + }, + "unixSocketPath": { + "description": "Absolute Unix socket path used to reach the workload-local Transit\nsigning proxy; the runtime supplies no provider token over this\nconnection, because token custody and renewal stay with the proxy.", + "not": { + "pattern": "(^|/)\\.{1,2}(/|$)" + }, + "pattern": "^/(?:[^/]+/)*[^/]+$", + "type": "string" + } + }, + "required": [ + "type", + "unixSocketPath", + "mount", + "keyName", + "keyVersion", + "attemptTimeoutMilliseconds" + ], + "type": "object" + } + ] + }, + "SecretProvidersConfig": { + "additionalProperties": false, + "anyOf": [ + { + "properties": { + "file": { + "$ref": "#/$defs/FileSecretProviderConfig" + } + }, + "required": [ + "file" + ] + }, + { + "properties": { + "environment": { + "$ref": "#/$defs/EnvironmentSecretProviderConfig" + } + }, + "required": [ + "environment" + ] + } + ], + "description": "The secret providers a runtime enables. A reference is resolved only by a\nprovider declared here: `secret:file/name` under `file.root`, and\n`secret:env/NAME` only when `environment: {}` is present.", + "properties": { + "environment": { + "$ref": "#/$defs/EnvironmentSecretProviderConfig", + "description": "Enables `secret:env/NAME` references, read from the process\nenvironment. Declared as an empty mapping: `environment: {}`." + }, + "file": { + "$ref": "#/$defs/FileSecretProviderConfig", + "description": "Enables `secret:file/name` references, read from files under `root`." + } + }, + "type": "object" + }, + "SecretReference": { + "description": "An exact secret reference: secret:file/name, resolved under secretProviders.file.root, or secret:env/NAME, resolved only when secretProviders.environment is declared.", + "pattern": "^(?:secret:env/[A-Z][A-Z0-9_]{0,127}|secret:file/[a-z][a-z0-9._-]{0,127})$", + "type": "string" + }, + "SigningRuntime": { + "additionalProperties": false, + "description": "Document sealing: the seals this deployment can apply. A seal is a PAdES\nsignature made with the institution's own key. Which document types use\nwhich seal is decided in the bundle manifest (`seal` on a document type),\nnever by the caller.", + "properties": { + "seals": { + "additionalProperties": { + "$ref": "#/$defs/SealRuntime" + }, + "description": "The seals, keyed by the local identifier the bundle manifest's `seal`\nnames. At least one seal is required: omit `signing` to turn sealing\noff.", + "minProperties": 1, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + } + }, + "required": [ + "seals" + ], + "type": "object" + }, + "TimestampAuthorityRuntime": { + "additionalProperties": false, + "description": "The RFC 3161 timestamp authority a seal uses.", + "properties": { + "attemptTimeoutMilliseconds": { + "default": 10000, + "description": "Time allowed for one request to the authority, in milliseconds.", + "format": "uint64", + "maximum": 60000, + "minimum": 1000, + "type": "integer" + }, + "caBundleRef": { + "$ref": "#/$defs/SecretReference", + "description": "PEM CA bundle for the authority. Omitted, the platform's trusted\nroots verify it." + }, + "url": { + "$ref": "#/$defs/Url", + "allOf": [ + { + "pattern": "^(?:[Hh][Tt][Tt][Pp][Ss]://|[Hh][Tt][Tt][Pp]://(?:[Ll][Oo][Cc][Aa][Ll][Hh][Oo][Ss][Tt]|127(?:\\.[0-9]{1,3}){3}|\\[::1\\])(?:[:/?#]|$))" + } + ], + "description": "Absolute `https` URL of the authority. `http` is accepted only for a\nloopback host (`localhost`, `127.0.0.0/8`, `[::1]`), for a test\nauthority on the same machine." + } + }, + "required": [ + "url" + ], + "type": "object" + }, + "Url": { + "description": "An absolute http or https URL with a host preserved as written, no user information, and no backslash, whitespace or control character. DNS case and equivalent IPv6 literals are permitted.", + "format": "uri", + "maxLength": 2048, + "pattern": "^[Hh][Tt][Tt][Pp][Ss]?://[^/?#@\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]+([/?#][^\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]*)?$", + "type": "string" + }, + "WithoutTimestamp": { + "description": "The acknowledgement a seal needs to go without a timestamp.", + "oneOf": [ + { + "const": "seal-stops-validating-when-certificate-expires", + "description": "The seal carries no timestamp, so it stops validating when its\ncertificate expires.", + "type": "string" + } + ] + }, + "ipv4SocketHost": { + "description": "Four canonical decimal IPv4 octets followed by a decimal port.", + "pattern": "^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?|0)\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?|0):[0-9]+$" + }, + "ipv6HexSocketHost": { + "description": "A bracketed hexadecimal IPv6 literal, including every RFC 3986 compression position, followed by a decimal port.", + "pattern": "^\\[(?:(?:[0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4}|(?:[0-9A-Fa-f]{1,4}:){1,7}:|(?:[0-9A-Fa-f]{1,4}:){1,6}:[0-9A-Fa-f]{1,4}|(?:[0-9A-Fa-f]{1,4}:){1,5}(?::[0-9A-Fa-f]{1,4}){1,2}|(?:[0-9A-Fa-f]{1,4}:){1,4}(?::[0-9A-Fa-f]{1,4}){1,3}|(?:[0-9A-Fa-f]{1,4}:){1,3}(?::[0-9A-Fa-f]{1,4}){1,4}|(?:[0-9A-Fa-f]{1,4}:){1,2}(?::[0-9A-Fa-f]{1,4}){1,5}|[0-9A-Fa-f]{1,4}:(?:(?::[0-9A-Fa-f]{1,4}){1,6})|:(?:(?::[0-9A-Fa-f]{1,4}){1,7}|:))\\]:[0-9]+$" + }, + "ipv6MixedSocketHost": { + "description": "A bracketed IPv6 literal whose final 32 bits use canonical dotted-decimal IPv4 notation, followed by a decimal port.", + "pattern": "^\\[(?:(?:[0-9A-Fa-f]{1,4}:){6}|::(?:[0-9A-Fa-f]{1,4}:){5}|(?:[0-9A-Fa-f]{1,4})?::(?:[0-9A-Fa-f]{1,4}:){4}|(?:(?:[0-9A-Fa-f]{1,4}:){0,1}[0-9A-Fa-f]{1,4})?::(?:[0-9A-Fa-f]{1,4}:){3}|(?:(?:[0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})?::(?:[0-9A-Fa-f]{1,4}:){2}|(?:(?:[0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})?::[0-9A-Fa-f]{1,4}:|(?:(?:[0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})?::)(?:(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?|0)\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?|0)\\]:[0-9]+$" + }, + "socketPort": { + "description": "A decimal u16 port, including zero and Rust-compatible leading zeroes.", + "pattern": ":0*(?:[0-9]{1,4}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$" + } + }, + "$id": "https://id.registrystack.org/schemas/render/runtime/runtime.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "allOf": [ + { + "if": { + "properties": { + "signing": { + "properties": { + "seals": { + "minProperties": 1 + } + }, + "required": [ + "seals" + ] + } + }, + "required": [ + "signing" + ] + }, + "then": { + "required": [ + "assuranceProfile" + ] + } + }, + { + "if": { + "properties": { + "assuranceProfile": { + "const": "local" + } + }, + "required": [ + "assuranceProfile" + ] + }, + "then": { + "properties": { + "signing": { + "properties": { + "seals": { + "additionalProperties": { + "properties": { + "signer": { + "properties": { + "type": { + "const": "local-jwk" + } + } + } + } + } + } + } + } + } + } + }, + { + "if": { + "properties": { + "assuranceProfile": { + "const": "production" + } + }, + "required": [ + "assuranceProfile" + ] + }, + "then": { + "properties": { + "signing": { + "properties": { + "seals": { + "additionalProperties": { + "properties": { + "signer": { + "properties": { + "type": { + "const": "transit" + } + } + } + } + } + } + } + } + } + } + } + ], + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/render/runtime/v1alpha1", + "type": "string" + }, + "assuranceProfile": { + "$ref": "#/$defs/AssuranceProfile", + "description": "The assurance boundary of this deployment's seals, the same member\nand values Evidence declares. Required when `signing` declares a\nseal, and unused otherwise. `local` signs with a `local-jwk` key\nfile and marks every seal a test seal; `production` signs through\n`transit` only, so a production key never leaves Transit." + }, + "audit": { + "$ref": "#/$defs/AuditRuntime" + }, + "authentication": { + "$ref": "#/$defs/AuthenticationRuntime" + }, + "kind": { + "const": "RenderRuntimeConfig", + "type": "string" + }, + "limits": { + "$ref": "#/$defs/LimitsRuntime" + }, + "listener": { + "$ref": "#/$defs/ListenerRuntime" + }, + "package": { + "$ref": "#/$defs/PackageConfig", + "allOf": [ + { + "properties": { + "root": { + "not": { + "pattern": "(^|/)\\.{1,2}(/|$)" + } + } + } + } + ], + "description": "The verified bundle package Render serves." + }, + "secretProviders": { + "$ref": "#/$defs/SecretProvidersConfig", + "description": "Providers for secret references. Omit when the authentication mode uses\nno secret references." + }, + "signing": { + "$ref": "#/$defs/SigningRuntime", + "description": "Optional document sealing. Omit it and Render loads no signer, makes\nno timestamp call, and cannot seal any document." + } + }, + "required": [ + "apiVersion", + "kind", + "listener", + "package", + "authentication", + "audit" + ], + "title": "Registry Render runtime configuration", + "type": "object" +} diff --git a/public/artifacts/sha256/c347ed37907da3fbef25720354b8042c3ce8477437c4a38b81ce2aa718c0b96c.json b/public/artifacts/sha256/c347ed37907da3fbef25720354b8042c3ce8477437c4a38b81ce2aa718c0b96c.json new file mode 100644 index 000000000..1857229df --- /dev/null +++ b/public/artifacts/sha256/c347ed37907da3fbef25720354b8042c3ce8477437c4a38b81ce2aa718c0b96c.json @@ -0,0 +1,314 @@ +{ + "$defs": { + "AccessProfile": { + "additionalProperties": false, + "description": "One access profile: the scopes (and, where it is bound to them, the\npurposes) a client receives by being granted it.", + "properties": { + "actorKind": { + "anyOf": [ + { + "$ref": "#/$defs/ActorKind" + }, + { + "type": "null" + } + ], + "description": "The `registry_actor_kind` the product requires of every principal\nthat holds this profile, when it requires one without selecting the\nprofile by it. A product that selects by the claim states it in\n`selectedBy` instead. On an exchange profile it is the kind the\nproduct requires of the client's own bootstrap token, which the\nproduct checks before it issues the assertion. Omitted: the profile\nadmits any kind." + }, + "admittedActorKinds": { + "description": "The `registry_actor_kind` values the product admits for this profile\nwithout selecting it by them, when it admits only some kinds. A\nprofile that selects by the claim, or requires one kind, states that\nin `selectedBy` or `actorKind` instead. Omitted: the profile admits\nany kind.", + "items": { + "$ref": "#/$defs/ActorKind" + }, + "type": "array", + "uniqueItems": true + }, + "exchange": { + "anyOf": [ + { + "$ref": "#/$defs/ExchangeBinding" + }, + { + "type": "null" + } + ] + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "purposes": { + "items": { + "type": "string" + }, + "maxItems": 16, + "type": "array", + "uniqueItems": true + }, + "refusedClaims": { + "description": "Declared claims the product refuses a token for this profile with:\nit never selects the profile for a principal that carries any of\nthem. On an exchange profile the product applies it to the exchanged\ntoken, not to the client's own. Omitted: no claim refuses the\nprofile.", + "items": { + "pattern": "^[A-Za-z0-9_]{1,128}$", + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "requesterClients": { + "description": "Narrows `allowedClients` for this profile; omitted narrows nothing.", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ], + "uniqueItems": true + }, + "requiredClaims": { + "description": "Declared claims the product refuses a token for this profile without.\nThe token subject (`sub`) is always present and is never listed. A\nclaim the generator derives (`registry_actor_kind`,\n`registry_purpose`) counts as carried. Omitted: the profile requires\nno claim beyond those the other members state.", + "items": { + "pattern": "^[A-Za-z0-9_]{1,128}$", + "type": "string" + }, + "maxItems": 64, + "type": "array", + "uniqueItems": true + }, + "scopes": { + "items": { + "type": "string" + }, + "maxItems": 32, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "selectedBy": { + "additionalProperties": { + "items": { + "type": "string" + }, + "maxItems": 32, + "type": "array", + "uniqueItems": true + }, + "description": "The claim values by which the product selects this profile: for each\nclaim name, the values a principal's claim must carry. A `string`\nclaim names exactly one value; a `string-array` claim names at least\none, all of which the principal must carry. Omitted: the product\ndoes not select this profile by claim values, so no claim check\napplies to it.", + "maxProperties": 64, + "propertyNames": { + "$ref": "#/$defs/ExternalId", + "allOf": [ + { + "pattern": "^[A-Za-z0-9_]{1,128}$" + } + ] + }, + "type": "object" + } + }, + "required": [ + "id", + "scopes" + ], + "type": "object" + }, + "ActorKind": { + "description": "The kind of principal a token represents, as `registry_actor_kind`\ncarries it.", + "enum": [ + "human", + "agent", + "service" + ], + "type": "string" + }, + "Admission": { + "anyOf": [ + { + "const": "unrestricted" + }, + { + "items": { + "$ref": "#/$defs/ExternalId" + }, + "maxItems": 256, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + ], + "description": "`unrestricted`, or the exact client ids the product admits." + }, + "AssertionIssuer": { + "additionalProperties": false, + "description": "One external authority whose signed assertions a product accepts for\ntoken exchange.", + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "issuer": { + "$ref": "#/$defs/Url" + }, + "jwksUrl": { + "$ref": "#/$defs/Url" + }, + "mapping": { + "$ref": "#/$defs/AssertionMapping" + }, + "projectedClaims": { + "additionalProperties": { + "$ref": "#/$defs/ClaimType" + }, + "description": "The signed claims a first-party signer projects, by name.", + "propertyNames": { + "$ref": "#/$defs/ExternalId", + "allOf": [ + { + "pattern": "^[A-Za-z0-9_]{1,128}$" + } + ] + }, + "type": "object" + } + }, + "required": [ + "id", + "issuer", + "jwksUrl", + "mapping" + ], + "type": "object" + }, + "AssertionMapping": { + "description": "How an assertion authority's signed claims become token claims.", + "oneOf": [ + { + "const": "institutional-grant", + "description": "An institutional grant: the issuer derives grant provenance.", + "type": "string" + }, + { + "const": "first-party", + "description": "A first-party signer: only `projectedClaims` are copied.", + "type": "string" + } + ] + }, + "ClaimType": { + "description": "The type of a claim's value.", + "enum": [ + "string", + "string-array" + ], + "type": "string" + }, + "ExchangeBinding": { + "additionalProperties": false, + "description": "A profile that is reached by exchanging an assertion, not by presenting\nits scopes directly.", + "properties": { + "assertionIssuerId": { + "description": "The `id` of an entry of `assertionIssuers`.", + "type": "string" + }, + "bootstrapAudience": { + "description": "The audience of the resource that accepts the assertion.", + "type": "string" + }, + "bootstrapScope": { + "description": "The one scope a client holds to present an assertion.", + "type": "string" + } + }, + "required": [ + "assertionIssuerId", + "bootstrapAudience", + "bootstrapScope" + ], + "type": "object" + }, + "ExternalId": { + "description": "An identifier another system issues, written exactly as its issuer gives it.", + "maxLength": 512, + "minLength": 1, + "pattern": "^[^\\u0000-\\u001F\\u007F-\\u009F]+$", + "type": "string" + }, + "LocalId": { + "description": "A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.", + "pattern": "^[a-z][a-z0-9_-]{0,63}$", + "type": "string" + }, + "Url": { + "description": "An absolute http or https URL with a host preserved as written, no user information, and no backslash, whitespace or control character. DNS case and equivalent IPv6 literals are permitted.", + "format": "uri", + "maxLength": 2048, + "pattern": "^[Hh][Tt][Tt][Pp][Ss]?://[^/?#@\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]+([/?#][^\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]*)?$", + "type": "string" + } + }, + "$id": "https://id.registrystack.org/schemas/platform/identity-facts/identity-facts.v1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "description": "What one product expects of the issuer.", + "properties": { + "accessProfiles": { + "items": { + "$ref": "#/$defs/AccessProfile" + }, + "maxItems": 64, + "type": "array" + }, + "allowedClients": { + "$ref": "#/$defs/Admission" + }, + "apiVersion": { + "const": "id.registrystack.org/formats/platform/identity-facts/v1", + "type": "string" + }, + "assertionIssuers": { + "items": { + "$ref": "#/$defs/AssertionIssuer" + }, + "maxItems": 8, + "type": "array" + }, + "audience": { + "type": "string" + }, + "claims": { + "additionalProperties": { + "$ref": "#/$defs/ClaimType" + }, + "description": "The claims the product reads from a token, by name.", + "maxProperties": 64, + "propertyNames": { + "$ref": "#/$defs/ExternalId", + "allOf": [ + { + "pattern": "^[A-Za-z0-9_]{1,128}$" + } + ] + }, + "type": "object" + }, + "issuer": { + "$ref": "#/$defs/Url" + }, + "kind": { + "const": "PlatformIdentityFacts", + "type": "string" + }, + "product": { + "description": "The product that wrote these facts, as a local identifier.", + "type": "string" + } + }, + "required": [ + "apiVersion", + "kind", + "product", + "issuer", + "audience", + "allowedClients" + ], + "title": "Registry Stack identity facts", + "type": "object" +} diff --git a/public/artifacts/sha256/c731a74bea9e4d649dd2e0d074e20a10e617c6ef844ec6f8223fae78b3f0b28d.yaml b/public/artifacts/sha256/c731a74bea9e4d649dd2e0d074e20a10e617c6ef844ec6f8223fae78b3f0b28d.yaml new file mode 100644 index 000000000..6daae6fb3 --- /dev/null +++ b/public/artifacts/sha256/c731a74bea9e4d649dd2e0d074e20a10e617c6ef844ec6f8223fae78b3f0b28d.yaml @@ -0,0 +1,275 @@ +$schema: https://json-schema.org/draft/2020-12/schema +$id: https://id.registrystack.org/schemas/evidence/holder-bound-verification-policy/holder-bound-verification-policy.v1.schema.json +title: Evidence relying-procedure holder-bound presentation verification policy Version 1 +type: object +additionalProperties: false +required: + - apiVersion + - kind + - subjectBinding + - expectedAssuranceProfile + - issuedBy + - providedBy + - requirement + - evidenceType + - expectedIssuancePurpose + - configurationRevision + - expectedSubjects + - expectedOutputs + - maximumAssertionLifetimeSeconds + - revokedKeyIds + - keyBindingAudience + - keyBindingNonce + - maximumKeyBindingAgeSeconds +properties: + apiVersion: + const: id.registrystack.org/formats/evidence/holder-bound-verification-policy/v1 + kind: + const: EvidenceHolderBoundVerificationPolicy + subjectBinding: + const: holder-bound + description: >- + The binding mode this document governs. It is stated rather than + inferred, so a holder-bound presentation and an audience-scoped response + can never be verified under each other's expectations. + expectedAssuranceProfile: {enum: [local, production, evidence-grade]} + issuedBy: {type: string, format: uri, maxLength: 512} + providedBy: {type: string, format: uri, maxLength: 512} + requirement: {type: string, format: uri, maxLength: 512} + evidenceType: {type: string, format: uri, maxLength: 512} + expectedIssuancePurpose: + type: string + pattern: '^[a-z][a-z0-9._:-]{0,127}$' + description: >- + The purpose the credential was issued under, compared as signed issuance + provenance. It is named for what it is: a record of why the assertion was + produced, never a downstream use limit, licence, or authorization for + what the relying party may now do with it. + configurationRevision: + type: string + pattern: '^sha256:[a-f0-9]{64}$' + description: >- + The requirement-scoped revision the relying party pinned, as the + requirement's own definition published it. A deployment's unrelated edits + do not change it. + expectedSubjects: + type: array + minItems: 1 + maxItems: 8 + uniqueItems: true + description: >- + Unordered set of unique role-bound opaque bindings, pinned from + independent trusted state and never recomputed. A holder-bound binding is + an HMAC under a deployment secret, so a relying party cannot derive it + from the holder key and this document carries no expectation that could + be mistaken for a derivation input. Subject order alone is never + semantic. + items: {$ref: '#/$defs/expected-subject'} + expectedOutputs: + type: array + minItems: 1 + maxItems: 16 + uniqueItems: true + description: >- + Expected concept identifiers, value forms, and cardinalities, one per + disclosed Supported Value. A holder-bound requirement cannot declare an + entity-reference value form, so an expectation naming one can never be + satisfied. + items: {$ref: '#/$defs/expected-output'} + maximumAssertionLifetimeSeconds: + type: integer + minimum: 1 + maximum: 31536000 + description: Longest acceptable validUntil minus issuedAt interval. + revokedKeyIds: + type: array + maxItems: 33 + uniqueItems: true + items: {type: string, pattern: '^[A-Za-z0-9_-]{42}[AEIMQUYcgkosw048]$'} + description: Emergency denylist of Evidence service-key RFC 7638 thumbprints, checked before a pinned JWKS key is selected. An empty list is explicit. It denies service signing keys and never holder keys. + keyBindingAudience: + type: string + format: uri + maxLength: 512 + description: >- + The audience the relying party itself put in the challenge it issued. It + is verifier-asserted rather than issuer-signed, so it proves who the + presenter addressed and never who the issuer intended. + keyBindingNonce: + type: string + pattern: '^[A-Za-z0-9_-]{43}$' + description: >- + The exact nonce from the challenge the relying party issued and retained. + Comparing it is not consuming it: the same presentation verifies again + under the same document, and retiring a nonce belongs to the relying + party's own challenge lifecycle. + maximumKeyBindingAgeSeconds: + type: integer + minimum: 1 + maximum: 300 + description: >- + Longest accepted interval between the key-binding JWT's iat and the + verification instant. It bounds how stale a proof of possession may be + and is not a replay window, because no state records that a proof was + already accepted. + acceptedChannels: + type: array + minItems: 1 + maxItems: 2 + uniqueItems: true + items: {enum: [source, holder-presented]} + description: >- + The channels this procedure accepts, from the closed channel vocabulary. + Omitting it means source only, so a procedure written before the channel + member existed refuses an assertion that a holder presented. An empty + list is refused; an open choice is every channel listed. + maximumCredentialAgeSeconds: + type: integer + minimum: 1 + maximum: 315360000 + description: >- + Longest acceptable observedAt minus presentedCredential.issuedAt, applied + to holder-presented assertions only. Omitting it means no bound on the + credential's age. + clockSkewSeconds: + type: integer + minimum: 0 + maximum: 300 + default: 0 + description: >- + The only tolerance in this document, applied to assertion validity and to + how far ahead of the verification instant a key-binding iat may sit. + Omitting it means zero tolerance. There is no second skew knob. + expectedHolderKeyThumbprint: + type: string + pattern: '^[A-Za-z0-9_-]{42}[AEIMQUYcgkosw048]$' + description: >- + Optional RFC 7638 thumbprint of a pre-established holder key. Supply it + only when the relying party already knows which holder it is talking to, + to authenticate that specific key. It is not needed to prove possession: + the key-binding JWT signature over cnf establishes that on its own, and + requiring this field would force every relying party into an out-of-band + holder registration it may not have. +$defs: + expected-subject: + type: object + additionalProperties: false + required: [role, binding] + properties: + role: {type: string, pattern: '^[a-z][a-z0-9._-]{0,63}$'} + binding: {type: string, pattern: '^urn:evidence:subject:v[1-9][0-9]*_[A-Za-z0-9_-]{43}$'} + expected-output: + type: object + additionalProperties: false + required: [handle, concept, required, form] + properties: + handle: {type: string, pattern: '^[a-z][a-z0-9._-]{0,127}$'} + concept: {type: string, format: uri, maxLength: 512} + required: {type: boolean} + form: {$ref: '#/$defs/expected-form'} + expected-form: + oneOf: + - type: object + additionalProperties: false + required: [type] + properties: + type: {const: boolean} + - type: object + additionalProperties: false + required: [type] + properties: + type: {const: integer} + - type: object + additionalProperties: false + required: [type] + properties: + type: {const: string} + - type: object + additionalProperties: false + required: [type] + properties: + type: {const: date-bucket} + - type: object + additionalProperties: false + required: [type] + properties: + type: {const: time-bucket} + - type: object + additionalProperties: false + required: [type] + properties: + type: {const: entity-reference} + - type: object + additionalProperties: false + required: [type] + properties: + type: {const: structured} + - type: object + additionalProperties: false + required: [type, items, minimumItems, maximumItems, unique] + properties: + type: {const: list} + items: {enum: [string, entity-reference]} + minimumItems: {type: integer, minimum: 1, maximum: 64} + maximumItems: {type: integer, minimum: 1, maximum: 64} + unique: {const: true} +ownership: + document: relying party + producer: the relying procedure that issued the key-binding challenge and pinned the expected subject bindings from independent trusted state + consumer: offline re-verification by the `evidence verify-presentation` operator command +command: + surface: evidence verify-presentation --sd-jwt-vc-presentation --jwks --policy [--at ] + sd-jwt-vc-presentation: one stored SD-JWT VC presentation file, in the issued compact serialization with the holder's key-binding JWT appended after the last tilde + format_selection: naming the input states its shape; a stored credential ending in a trailing tilde carries no key-binding JWT and is refused rather than verified without possession + key_binding_input: the key-binding JWT is part of the compact presentation, so there is no separate input file for it + policy_scope: this document governs holder-bound presentations only, and the Version 1 document governs audience-scoped signed JWS and SD-JWT VC responses; neither command accepts the other's document + jwks: the pinned trusted key set, which is the complete trust set for the run + policy: one document accepted by this schema + at: strict RFC 3339 at zero offset; system time when omitted + network: prohibited; no socket is opened, no metadata is resolved, and no key is fetched + input_bound: every input file is refused above 1 MiB before it is read + replay: verifying the same presentation twice succeeds twice; the command compares the expected nonce without consuming it and retains no state between runs +output: + lines: + - 'verified-at: the chosen verification instant' + - 'authentic: yes or no, printed once verification ran' + - 'possession: what the run proved and what it did not, per possession_statement below, printed for an authentic presentation before its currency is known' + - 'currently-valid: yes or no, printed only for an authentic presentation' + inspection: on full success the verified Evidence JSON is also printed, for the operator who already holds the stored presentation + failure: only the closed class is reported, on standard error, with no field-level detail + classes: [malformed, protected-header, key, signature, payload, policy, time, disclosure, key-binding] + disclosure_class: reported only when the presented disclosures do not reconstruct the payload the issuer signature covers + key_binding_class: >- + Reported for every key-binding failure, including an absent key-binding + JWT, a signer other than the confirmation key, a rejected header member or + algorithm, a mismatched audience, nonce, or sd_hash, and an iat outside the + accepted window. A presentation whose issuer signature verifies and whose + key binding fails is rejected, never reported as an issuer-only success. + possession_statement: >- + Success proves the presenter held the confirmation key's private key when + the key-binding JWT was signed. It does not prove that the presentation is + fresh, single-use, or unreplayed. + exit_codes: + 0: authentic, possession proven, and currently valid + 3: authentic and possession proven, but not currently valid + 1: every other outcome, including a policy mismatch, a key-binding failure, an unusable input document, and an unreadable file +$comment: >- + Every expectation and revoked-key decision in this document must come from independent trusted state, + such as the challenge the relying party issued and retained and an accepted + original transaction. Copying values out of the presentation under + verification proves nothing, and a policy that omitted an expectation would + silently skip a comparison, so the document is closed and every field except + clockSkewSeconds, expectedHolderKeyThumbprint, acceptedChannels, and + maximumCredentialAgeSeconds is required. The optional + holder key thumbprint authenticates a pre-established holder and is not what + proves possession; the key-binding signature over the credential's own + confirmation key is. A failed comparison reports one generic class and never + which comparison failed: the expected role-bound subject set, the expected + output contract, and every other policy expectation report the one policy + class, and the expected key-binding audience, nonce, and proof age report the + one key-binding class, so re-verification is never an oracle. Because key + binding is verified before any policy comparison runs, a failed possession + proof also never reveals whether the policy would have matched. Authenticity, proven possession, + and current usability are separate answers: a presentation may be + cryptographically authentic and possession-proven without being current + evidence. diff --git a/public/artifacts/sha256/cab7ff0a619109662b006d87d211743af4a9cc64977c0f01b64889e691d24a84.json b/public/artifacts/sha256/cab7ff0a619109662b006d87d211743af4a9cc64977c0f01b64889e691d24a84.json new file mode 100644 index 000000000..91ee846a4 --- /dev/null +++ b/public/artifacts/sha256/cab7ff0a619109662b006d87d211743af4a9cc64977c0f01b64889e691d24a84.json @@ -0,0 +1,5775 @@ +{ + "$defs": { + "AccessLogExemptionSource": { + "additionalProperties": false, + "description": "Delayed subject disclosure for reads under one access profile.", + "properties": { + "delayDays": { + "description": "Days after the read when the entry becomes visible to the subject.", + "format": "uint16", + "maximum": 3649, + "minimum": 1, + "type": "integer" + }, + "reason": { + "allOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + ], + "description": "Bounded policy reason retained and audited with each delayed entry." + }, + "sourceRecordType": { + "description": "Record type whose access profile authorizes the read. Omitted for direct reads of the logged record type.", + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-z][a-z0-9_-]*$", + "type": "string" + } + }, + "required": [ + "reason", + "delayDays" + ], + "type": "object" + }, + "AccessLogSource": { + "additionalProperties": false, + "description": "Governed subject-facing access-log policy for an entity.", + "properties": { + "exemptions": { + "additionalProperties": { + "$ref": "#/$defs/AccessLogExemptionSource" + }, + "description": "Access profiles whose entries become subject-visible only after a policy delay.", + "maxProperties": 64, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "retentionDays": { + "default": 90, + "description": "Days each entry remains available before bounded background erasure.", + "format": "uint16", + "maximum": 3650, + "minimum": 1, + "type": "integer" + }, + "subjectField": { + "description": "Required plaintext string or text field matched to the subject's verified principal.", + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-z][a-z0-9_-]*$", + "type": "string" + }, + "trustedIntermediaries": { + "description": "Verified intermediary client IDs allowed to forward original requester attribution.", + "items": { + "type": "string" + }, + "maxItems": 64, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "subjectField" + ], + "type": "object" + }, + "AccessProfileSource": { + "additionalProperties": false, + "properties": { + "actorKind": { + "$ref": "#/$defs/ActorKindSource" + }, + "allowCount": { + "type": "boolean" + }, + "allowDataExport": { + "default": false, + "type": "boolean" + }, + "default": { + "default": false, + "type": "boolean" + }, + "display": { + "$ref": "#/$defs/PresentationSource" + }, + "filterableFields": { + "default": [], + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "lookups": { + "items": { + "$ref": "#/$defs/LookupPermissionSource" + }, + "type": "array" + }, + "membershipBoundaries": { + "items": { + "$ref": "#/$defs/MembershipBoundarySource" + }, + "type": "array" + }, + "operations": { + "items": { + "$ref": "#/$defs/Operation" + }, + "type": "array", + "uniqueItems": true + }, + "principalClaim": { + "description": "The token claim that names the caller. Every profile serves authenticated callers, so every profile names one.", + "type": "string" + }, + "provenanceFields": { + "items": { + "$ref": "#/$defs/ProvenanceFieldSource" + }, + "type": "array", + "uniqueItems": true + }, + "readPaths": { + "items": { + "$ref": "#/$defs/ReadPathPermissionSource" + }, + "type": "array" + }, + "readableFields": { + "default": [], + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "requesterClients": { + "description": "The OAuth clients whose tokens may select this profile. Omit to accept every client.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "requireConsent": { + "items": { + "$ref": "#/$defs/ConsentRequirementSource" + }, + "type": "array" + }, + "requiredPurposes": { + "description": "The verified token's purpose must match one listed value. Omit to accept every purpose.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "requiredScopes": { + "$ref": "#/$defs/RequiredScopes", + "description": "The scopes the verified token must carry: `unrestricted`, or a list of at least one scope, all of which must be present." + }, + "revisionAccess": { + "default": false, + "type": "boolean" + }, + "rowBoundaries": { + "$ref": "#/$defs/RowBoundaries", + "description": "Row reach: `unrestricted`, or a list of at least one row boundary." + }, + "sortableFields": { + "default": [], + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "spatialQueries": { + "$ref": "#/$defs/SpatialQueryPermissionSource" + }, + "taskGrant": { + "$ref": "#/$defs/CompiledTaskGrantSource" + }, + "writableFields": { + "default": [], + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "id", + "principalClaim", + "requiredScopes", + "operations", + "rowBoundaries" + ], + "type": "object" + }, + "AccessRequirementsSource": { + "additionalProperties": false, + "description": "Compile-time requirements, not grants. Profiles must explicitly satisfy them.", + "properties": { + "allowedPurposes": { + "description": "Every profile must restrict purpose to a subset of these values. Omit to demand no purpose.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "requiredScopes": { + "description": "Every profile must require all these scopes. Requirements never grant access. Omit to demand no scope.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "rowBoundaries": { + "description": "Every profile must include these exact field, verified-claim, and operator bindings. Omit to demand no row boundary.", + "items": { + "$ref": "#/$defs/RowBoundarySource" + }, + "minItems": 1, + "type": "array" + } + }, + "type": "object" + }, + "ActionEffectSource": { + "additionalProperties": false, + "properties": { + "clear": { + "default": [], + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "operation": { + "$ref": "#/$defs/Operation" + }, + "set": { + "additionalProperties": { + "$ref": "#/$defs/ActionValueSource" + }, + "default": {}, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "target": { + "$ref": "#/$defs/ActionTargetSource" + } + }, + "required": [ + "target", + "operation" + ], + "type": "object" + }, + "ActionEvidenceSource": { + "additionalProperties": false, + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "maximumObservationAgeSeconds": { + "format": "uint64", + "maximum": 300, + "minimum": 1, + "type": "integer" + }, + "outputs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "provider": { + "type": "string" + }, + "requirement": { + "type": "string" + }, + "subjects": { + "additionalProperties": { + "$ref": "#/$defs/EvidenceSubjectSource" + }, + "propertyNames": { + "$ref": "#/$defs/ExternalId" + }, + "type": "object" + } + }, + "required": [ + "id", + "provider", + "requirement", + "subjects", + "outputs", + "maximumObservationAgeSeconds" + ], + "type": "object" + }, + "ActionExecutionSource": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "mode": { + "const": "immediate", + "type": "string" + } + }, + "required": [ + "mode" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "mode": { + "const": "proposal", + "type": "string" + }, + "proposal": { + "$ref": "#/$defs/ProposalPolicySource" + } + }, + "required": [ + "mode", + "proposal" + ], + "type": "object" + } + ] + }, + "ActionHandlerKindSource": { + "description": "The authored action-handler backend. The wasm backend is admitted when\nthis build of the compiler carries the `wasm` cargo feature, which\nvalidates a declared WASM handler module against the platform guest\nABI at compile time; without that feature a declared WASM handler is\nrefused with the pinned `breg.action.handler-wasm-build-unsupported`\ndiagnostic.", + "enum": [ + "rhai", + "wasm" + ], + "type": "string" + }, + "ActionHandlerRefusalSource": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "label": { + "$ref": "#/$defs/DisplayText" + } + }, + "required": [ + "code", + "label" + ], + "type": "object" + }, + "ActionHandlerWriteSource": { + "additionalProperties": false, + "properties": { + "fields": { + "items": { + "type": "string" + }, + "type": "array" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "operation": { + "$ref": "#/$defs/Operation" + }, + "target": { + "$ref": "#/$defs/ActionTargetSource" + } + }, + "required": [ + "id", + "target", + "operation", + "fields" + ], + "type": "object" + }, + "ActionInputSource": { + "anyOf": [ + { + "oneOf": [ + { + "properties": { + "type": { + "const": "boolean", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "properties": { + "maximumLength": { + "format": "uint32", + "maximum": 1000000, + "minimum": 1, + "type": "integer" + }, + "minimumLength": { + "default": 0, + "format": "uint32", + "maximum": 1000000, + "minimum": 0, + "type": "integer" + }, + "type": { + "const": "string", + "type": "string" + } + }, + "required": [ + "type", + "maximumLength" + ], + "type": "object" + }, + { + "properties": { + "maximumLength": { + "format": "uint32", + "maximum": 10000000, + "minimum": 1, + "type": "integer" + }, + "type": { + "const": "text", + "type": "string" + } + }, + "required": [ + "type", + "maximumLength" + ], + "type": "object" + }, + { + "properties": { + "type": { + "const": "int64", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "properties": { + "maximum": { + "type": "string" + }, + "minimum": { + "type": "string" + }, + "precision": { + "format": "uint32", + "maximum": 38, + "minimum": 1, + "type": "integer" + }, + "scale": { + "format": "uint32", + "maximum": 38, + "minimum": 0, + "type": "integer" + }, + "type": { + "const": "decimal", + "type": "string" + } + }, + "required": [ + "type", + "precision", + "scale" + ], + "type": "object" + }, + { + "properties": { + "type": { + "const": "date", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "properties": { + "type": { + "const": "timestamp", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "properties": { + "type": { + "const": "uuid", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "properties": { + "type": { + "const": "vocabulary-code", + "type": "string" + }, + "values": { + "default": [], + "items": { + "type": "string" + }, + "type": "array" + }, + "vocabulary": { + "type": "string" + } + }, + "required": [ + "type", + "vocabulary" + ], + "type": "object" + }, + { + "properties": { + "onDelete": { + "$ref": "#/$defs/ReferenceDelete", + "default": "restrict" + }, + "target": { + "type": "string" + }, + "type": { + "const": "reference", + "type": "string" + } + }, + "required": [ + "type", + "target" + ], + "type": "object" + }, + { + "properties": { + "bbox": { + "$ref": "#/$defs/Crs84BboxSource" + }, + "precision": { + "format": "uint32", + "maximum": 9, + "minimum": 0, + "type": "integer" + }, + "type": { + "const": "crs84-point", + "type": "string" + } + }, + "required": [ + "type", + "precision" + ], + "type": "object" + }, + { + "properties": { + "maximumBytes": { + "format": "uint32", + "maximum": 1048576, + "minimum": 1, + "type": "integer" + }, + "schema": { + "x-registry-foreign": "json-schema-2020-12" + }, + "type": { + "const": "structured", + "type": "string" + } + }, + "required": [ + "type", + "maximumBytes", + "schema" + ], + "type": "object" + } + ], + "properties": { + "apiName": { + "type": "string" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource", + "default": {} + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "pattern": { + "description": "Native PostgreSQL ARE expression the submitted string must match, in the\ndialect and with the bounds of a Record field `pattern`.", + "type": "string" + }, + "required": { + "default": false, + "type": "boolean" + } + }, + "required": [ + "id", + "classification" + ], + "type": "object", + "unevaluatedProperties": false + }, + { + "additionalProperties": false, + "properties": { + "apiName": { + "type": "string" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "pattern": { + "type": "string" + }, + "required": { + "default": false, + "type": "boolean" + }, + "typeRef": { + "$ref": "#/$defs/LocalId" + } + }, + "required": [ + "id", + "typeRef", + "classification" + ], + "type": "object" + } + ] + }, + "ActionPermissionSource": { + "additionalProperties": false, + "description": "What a profile may do with one action. An action has no rows of its own:\nthe row reach of what it touches is written on each target.", + "properties": { + "action": { + "type": "string" + }, + "operations": { + "items": { + "$ref": "#/$defs/Operation" + }, + "type": "array", + "uniqueItems": true + }, + "results": { + "default": [], + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "targets": { + "default": [], + "items": { + "$ref": "#/$defs/ActionTargetPermissionSource" + }, + "type": "array" + } + }, + "required": [ + "action", + "operations" + ], + "type": "object" + }, + "ActionPlanSource": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "effects": { + "items": { + "$ref": "#/$defs/ActionEffectSource" + }, + "type": "array" + }, + "type": { + "const": "fixed", + "type": "string" + } + }, + "required": [ + "type", + "effects" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "function": { + "type": "string" + }, + "inputs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "refusals": { + "default": [], + "items": { + "$ref": "#/$defs/ActionHandlerRefusalSource" + }, + "type": "array" + }, + "type": { + "const": "function", + "type": "string" + }, + "writes": { + "items": { + "$ref": "#/$defs/ActionHandlerWriteSource" + }, + "type": "array" + } + }, + "required": [ + "type", + "function", + "inputs", + "writes" + ], + "type": "object" + } + ] + }, + "ActionRequirementSource": { + "additionalProperties": false, + "properties": { + "atLeast": { + "format": "int64", + "maximum": 9223372036854775807, + "minimum": -9223372036854775808, + "type": "integer" + }, + "atLeastFromInput": { + "description": "Requires the stored value to be at or above the named required action\ninput of the same date, instant, or integer type.", + "type": "string" + }, + "atMost": { + "format": "int64", + "maximum": 9223372036854775807, + "minimum": -9223372036854775808, + "type": "integer" + }, + "atMostFromInput": { + "description": "Requires the stored value to be at or below the named required action\ninput of the same date, instant, or integer type.", + "type": "string" + }, + "currentDate": { + "$ref": "#/$defs/CurrentDatePredicateSource" + }, + "equals": { + "$ref": "#/$defs/ScalarLiteral" + }, + "equalsFromInput": { + "type": "string" + }, + "field": { + "default": "", + "type": "string" + }, + "input": { + "type": "string" + }, + "isNull": { + "const": true, + "description": "Requires the stored value to be unset. Only `true` is read.", + "type": "boolean" + }, + "reason": { + "$ref": "#/$defs/LocalId", + "description": "Stable application copy key; disclosure still requires readable guard facts." + }, + "revision": { + "$ref": "#/$defs/GuardRevisionSource" + } + }, + "required": [ + "input" + ], + "type": "object" + }, + "ActionSource": { + "additionalProperties": false, + "properties": { + "apiName": { + "type": "string" + }, + "commitGuards": { + "$ref": "#/$defs/CommitGuardsSource", + "default": { + "evidence": [], + "targets": [] + } + }, + "consentIssuer": { + "$ref": "#/$defs/ConsentIssuerSource" + }, + "display": { + "$ref": "#/$defs/ModelDisplaySource", + "default": {} + }, + "evidence": { + "items": { + "$ref": "#/$defs/ActionEvidenceSource" + }, + "type": "array" + }, + "execution": { + "$ref": "#/$defs/ActionExecutionSource" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "inputs": { + "default": [], + "items": { + "$ref": "#/$defs/ActionInputSource" + }, + "type": "array" + }, + "plan": { + "$ref": "#/$defs/ActionPlanSource" + } + }, + "required": [ + "id", + "execution", + "plan" + ], + "type": "object" + }, + "ActionTargetPermissionSource": { + "additionalProperties": false, + "properties": { + "recordType": { + "type": "string" + }, + "rowBoundaries": { + "$ref": "#/$defs/RowBoundaries", + "description": "Row reach: `unrestricted`, or a list of at least one row boundary." + } + }, + "required": [ + "recordType", + "rowBoundaries" + ], + "type": "object" + }, + "ActionTargetSource": { + "additionalProperties": false, + "properties": { + "fromInput": { + "type": "string" + }, + "recordType": { + "type": "string" + } + }, + "type": "object" + }, + "ActionValueSource": { + "additionalProperties": false, + "properties": { + "fromEffect": { + "type": "string" + }, + "fromInput": { + "type": "string" + }, + "value": true + }, + "type": "object" + }, + "ActorKindSource": { + "enum": [ + "human", + "agent", + "service" + ], + "type": "string" + }, + "AttachmentSlotSource": { + "additionalProperties": false, + "properties": { + "classification": { + "$ref": "#/$defs/Classification" + }, + "contentTypes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "maximumBytes": { + "format": "uint32", + "maximum": 16777216, + "minimum": 1, + "type": "integer" + }, + "required": { + "type": "boolean" + } + }, + "required": [ + "id", + "required", + "maximumBytes", + "contentTypes", + "classification" + ], + "type": "object" + }, + "BatchSource": { + "additionalProperties": false, + "properties": { + "maximumBytes": { + "format": "uint32", + "maximum": 2097152, + "minimum": 1, + "type": "integer" + }, + "maximumItems": { + "format": "uint32", + "maximum": 100, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "maximumItems", + "maximumBytes" + ], + "type": "object" + }, + "BooleanFieldSourceSchema": { + "additionalProperties": false, + "properties": { + "apiName": { + "type": "string" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "required": { + "default": false, + "type": "boolean" + }, + "type": { + "enum": [ + "boolean" + ], + "type": "string" + }, + "validTimeRole": { + "$ref": "#/$defs/ValidTimeRole" + } + }, + "required": [ + "id", + "type", + "classification" + ], + "type": "object" + }, + "BoundaryOperator": { + "enum": [ + "equals", + "in" + ], + "type": "string" + }, + "Classification": { + "enum": [ + "public", + "internal", + "restricted" + ], + "type": "string" + }, + "CommitEvidenceRequirementSource": { + "additionalProperties": false, + "properties": { + "atLeast": { + "format": "int64", + "maximum": 9223372036854775807, + "minimum": -9223372036854775808, + "type": "integer" + }, + "atMost": { + "format": "int64", + "maximum": 9223372036854775807, + "minimum": -9223372036854775808, + "type": "integer" + }, + "equals": true, + "equalsFromInput": { + "type": "string" + }, + "output": { + "type": "string" + } + }, + "required": [ + "output" + ], + "type": "object" + }, + "CommitEvidenceSelectorSource": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "input": { + "type": "string" + }, + "type": { + "const": "input", + "type": "string" + } + }, + "required": [ + "type", + "input" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "field": { + "type": "string" + }, + "input": { + "type": "string" + }, + "type": { + "const": "target-field", + "type": "string" + } + }, + "required": [ + "type", + "input", + "field" + ], + "type": "object" + } + ] + }, + "CommitEvidenceSource": { + "additionalProperties": false, + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "maximumObservationAgeSeconds": { + "format": "uint64", + "maximum": 300, + "minimum": 1, + "type": "integer" + }, + "provider": { + "type": "string" + }, + "requirement": { + "type": "string" + }, + "requires": { + "default": [], + "items": { + "$ref": "#/$defs/CommitEvidenceRequirementSource" + }, + "type": "array" + }, + "subjects": { + "additionalProperties": { + "$ref": "#/$defs/CommitEvidenceSubjectSource" + }, + "propertyNames": { + "$ref": "#/$defs/ExternalId" + }, + "type": "object" + } + }, + "required": [ + "id", + "provider", + "requirement", + "subjects", + "maximumObservationAgeSeconds" + ], + "type": "object" + }, + "CommitEvidenceSubjectSource": { + "additionalProperties": false, + "properties": { + "profile": { + "type": "string" + }, + "selectors": { + "additionalProperties": { + "$ref": "#/$defs/CommitEvidenceSelectorSource" + }, + "description": "Exact governed selector-profile field map. Every profile field must be\npresent exactly once and no undeclared field is admitted.", + "propertyNames": { + "$ref": "#/$defs/ExternalId" + }, + "type": "object" + } + }, + "required": [ + "profile", + "selectors" + ], + "type": "object" + }, + "CommitGuardsSource": { + "additionalProperties": false, + "properties": { + "evidence": { + "default": [], + "items": { + "$ref": "#/$defs/CommitEvidenceSource" + }, + "type": "array" + }, + "targets": { + "default": [], + "items": { + "$ref": "#/$defs/ActionRequirementSource" + }, + "type": "array" + } + }, + "type": "object" + }, + "ComparisonOperator": { + "enum": [ + "less-than", + "less-than-or-equal", + "greater-than", + "greater-than-or-equal" + ], + "type": "string" + }, + "CompiledTaskGrantPermissionSource": { + "additionalProperties": false, + "properties": { + "collection": { + "type": "string" + }, + "operations": { + "items": { + "$ref": "#/$defs/Operation" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "collection", + "operations" + ], + "type": "object" + }, + "CompiledTaskGrantSource": { + "additionalProperties": false, + "properties": { + "permissions": { + "items": { + "$ref": "#/$defs/CompiledTaskGrantPermissionSource" + }, + "type": "array" + }, + "sourceIssuer": { + "$ref": "#/$defs/Url" + } + }, + "required": [ + "sourceIssuer", + "permissions" + ], + "type": "object" + }, + "ConsentDecisionSource": { + "additionalProperties": false, + "description": "Maps the adopter's decision codes onto the engine's decision sets.", + "properties": { + "field": { + "type": "string" + }, + "gives": { + "description": "Codes that give consent.", + "items": { + "type": "string" + }, + "type": "array" + }, + "refusals": { + "description": "Revoke codes never shown to recipients.", + "items": { + "type": "string" + }, + "type": "array" + }, + "revokes": { + "description": "Codes that supersede every give on the same key ordered no later.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "field", + "gives", + "revokes" + ], + "type": "object" + }, + "ConsentIssuerSource": { + "description": "Who an action creates consent rows for.", + "oneOf": [ + { + "const": "self", + "description": "The subject, bound through a principal link entity.", + "type": "string" + }, + { + "const": "steward", + "description": "A reviewed steward act on the subject's behalf.", + "type": "string" + } + ] + }, + "ConsentRecordSource": { + "additionalProperties": false, + "description": "The fields of a consent-record entity the engine reads. Other fields are\nignored by consent enforcement.", + "properties": { + "decision": { + "$ref": "#/$defs/ConsentDecisionSource" + }, + "purpose": { + "description": "A vocabulary-code field compared with the verified request purpose.", + "type": "string" + }, + "recipient": { + "description": "A vocabulary-code field bound to `registry-recipients`.", + "type": "string" + }, + "scope": { + "description": "A vocabulary-code field bound to `registry-consent-scopes`.", + "type": "string" + }, + "subject": { + "description": "A reference field naming the protected subject row.", + "type": "string" + }, + "validity": { + "$ref": "#/$defs/ConsentValiditySource" + } + }, + "required": [ + "subject", + "recipient", + "purpose", + "scope", + "decision", + "validity" + ], + "type": "object" + }, + "ConsentRequirementSource": { + "additionalProperties": false, + "description": "A consent check ANDed into one read permission.", + "properties": { + "on": { + "description": "The permission entity's field the consent subject references; `id` is\nthe row's own identity.", + "type": "string" + }, + "record": { + "description": "The consent-record entity checked.", + "type": "string" + } + }, + "required": [ + "record", + "on" + ], + "type": "object" + }, + "ConsentValiditySource": { + "additionalProperties": false, + "description": "Validity of a consent decision. Every give expires within\n`maximumDurationDays`.", + "properties": { + "from": { + "description": "A required timestamp field; a give is active only from this time.", + "type": "string" + }, + "maximumDurationDays": { + "description": "The longest a give lasts, in whole days of 24 hours: at most 3652,\nten years.", + "format": "uint32", + "maximum": 3652, + "minimum": 1, + "type": "integer" + }, + "until": { + "description": "An optional timestamp field ending the give earlier than\n`maximumDurationDays`.", + "type": "string" + } + }, + "required": [ + "from", + "maximumDurationDays" + ], + "type": "object" + }, + "ConstraintSource": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "fields": { + "items": { + "type": "string" + }, + "type": "array" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "type": { + "const": "unique", + "type": "string" + }, + "when": { + "items": { + "$ref": "#/$defs/UniqueWhenPredicate" + }, + "type": "array" + } + }, + "required": [ + "type", + "fields" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "left": { + "type": "string" + }, + "operator": { + "$ref": "#/$defs/ComparisonOperator" + }, + "right": { + "type": "string" + }, + "type": { + "const": "compare", + "type": "string" + } + }, + "required": [ + "type", + "left", + "operator", + "right" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "field": { + "type": "string" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "maximum": { + "format": "int64", + "maximum": 9223372036854775807, + "minimum": -9223372036854775808, + "type": "integer" + }, + "minimum": { + "format": "int64", + "maximum": 9223372036854775807, + "minimum": -9223372036854775808, + "type": "integer" + }, + "type": { + "const": "int-range", + "type": "string" + } + }, + "required": [ + "type", + "field" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "field": { + "type": "string" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "type": { + "const": "vocabulary", + "type": "string" + }, + "values": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "type", + "field", + "values" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "endField": { + "type": "string" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "lastDayField": { + "description": "The inclusive last day, named in place of `endField` when the\nRecord type's interval declares `lastDayField`.", + "type": "string" + }, + "scopeFields": { + "items": { + "type": "string" + }, + "type": "array" + }, + "startField": { + "type": "string" + }, + "type": { + "const": "temporal-non-overlap", + "type": "string" + } + }, + "required": [ + "type", + "scopeFields" + ], + "type": "object" + } + ] + }, + "CorrectionRelation": { + "description": "How a later event record relates to the one it names.", + "oneOf": [ + { + "const": "corrects", + "description": "Amends an error in the named event record.", + "type": "string" + }, + { + "const": "supersedes", + "description": "Replaces the named event record as the current interpretation.", + "type": "string" + } + ] + }, + "Crs84BboxSource": { + "additionalProperties": false, + "properties": { + "east": { + "type": "string" + }, + "north": { + "type": "string" + }, + "south": { + "type": "string" + }, + "west": { + "type": "string" + } + }, + "required": [ + "west", + "south", + "east", + "north" + ], + "type": "object" + }, + "Crs84PointFieldSourceSchema": { + "additionalProperties": false, + "properties": { + "apiName": { + "type": "string" + }, + "bbox": { + "$ref": "#/$defs/Crs84BboxSource" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "precision": { + "format": "uint32", + "maximum": 9, + "minimum": 0, + "type": "integer" + }, + "required": { + "default": false, + "type": "boolean" + }, + "type": { + "enum": [ + "crs84-point" + ], + "type": "string" + }, + "validTimeRole": { + "$ref": "#/$defs/ValidTimeRole" + } + }, + "required": [ + "id", + "type", + "classification", + "precision" + ], + "type": "object" + }, + "CurrentDatePredicateSource": { + "enum": [ + "on-or-after", + "on-or-before" + ], + "type": "string" + }, + "DatasetOperation": { + "description": "One thing a profile may do with a statistical dataset.", + "oneOf": [ + { + "const": "read-live", + "description": "Read the dataset's live counts.", + "type": "string" + }, + { + "const": "publish", + "description": "Publish and withdraw the dataset's releases. One profile holds it per dataset.", + "type": "string" + }, + { + "const": "read-releases", + "description": "Read the dataset's releases.", + "type": "string" + } + ] + }, + "DatasetPermissionSource": { + "additionalProperties": false, + "description": "What a profile may do with one statistical dataset.", + "properties": { + "dataset": { + "$ref": "#/$defs/LocalId", + "description": "The statistical dataset the permission names." + }, + "operations": { + "description": "What the profile may do with the dataset. A profile that holds `read-live` or `publish` on a dataset with a publisher also holds `read-releases`.", + "items": { + "$ref": "#/$defs/DatasetOperation" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "dataset", + "operations" + ], + "type": "object" + }, + "DatasetSource": { + "additionalProperties": false, + "properties": { + "display": { + "$ref": "#/$defs/DisplaySource", + "default": {} + }, + "id": { + "$ref": "#/$defs/LocalId" + } + }, + "required": [ + "id" + ], + "type": "object" + }, + "DateFieldSourceSchema": { + "additionalProperties": false, + "properties": { + "apiName": { + "type": "string" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource" + }, + "encrypted": { + "default": false, + "type": "boolean" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "lookup": { + "$ref": "#/$defs/FieldLookupSource" + }, + "required": { + "default": false, + "type": "boolean" + }, + "type": { + "enum": [ + "date" + ], + "type": "string" + }, + "validTimeRole": { + "$ref": "#/$defs/ValidTimeRole" + } + }, + "required": [ + "id", + "type", + "classification" + ], + "type": "object" + }, + "DecimalFieldSourceSchema": { + "additionalProperties": false, + "properties": { + "apiName": { + "type": "string" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource" + }, + "encrypted": { + "default": false, + "type": "boolean" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "lookup": { + "$ref": "#/$defs/FieldLookupSource" + }, + "maximum": { + "type": "string" + }, + "minimum": { + "type": "string" + }, + "precision": { + "format": "uint32", + "maximum": 38, + "minimum": 1, + "type": "integer" + }, + "required": { + "default": false, + "type": "boolean" + }, + "scale": { + "format": "uint32", + "maximum": 38, + "minimum": 0, + "type": "integer" + }, + "type": { + "enum": [ + "decimal" + ], + "type": "string" + }, + "validTimeRole": { + "$ref": "#/$defs/ValidTimeRole" + } + }, + "required": [ + "id", + "type", + "classification", + "precision", + "scale" + ], + "type": "object" + }, + "DerivedExecutionSource": { + "enum": [ + "live" + ], + "type": "string" + }, + "DerivedFieldSource": { + "oneOf": [ + { + "properties": { + "type": { + "const": "boolean", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "properties": { + "maximumLength": { + "format": "uint32", + "maximum": 1000000, + "minimum": 1, + "type": "integer" + }, + "minimumLength": { + "default": 0, + "format": "uint32", + "maximum": 1000000, + "minimum": 0, + "type": "integer" + }, + "type": { + "const": "string", + "type": "string" + } + }, + "required": [ + "type", + "maximumLength" + ], + "type": "object" + }, + { + "properties": { + "maximumLength": { + "format": "uint32", + "maximum": 10000000, + "minimum": 1, + "type": "integer" + }, + "type": { + "const": "text", + "type": "string" + } + }, + "required": [ + "type", + "maximumLength" + ], + "type": "object" + }, + { + "properties": { + "type": { + "const": "int64", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "properties": { + "maximum": { + "type": "string" + }, + "minimum": { + "type": "string" + }, + "precision": { + "format": "uint32", + "maximum": 38, + "minimum": 1, + "type": "integer" + }, + "scale": { + "format": "uint32", + "maximum": 38, + "minimum": 0, + "type": "integer" + }, + "type": { + "const": "decimal", + "type": "string" + } + }, + "required": [ + "type", + "precision", + "scale" + ], + "type": "object" + }, + { + "properties": { + "type": { + "const": "date", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "properties": { + "type": { + "const": "timestamp", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "properties": { + "type": { + "const": "uuid", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "properties": { + "type": { + "const": "vocabulary-code", + "type": "string" + }, + "values": { + "default": [], + "items": { + "type": "string" + }, + "type": "array" + }, + "vocabulary": { + "type": "string" + } + }, + "required": [ + "type", + "vocabulary" + ], + "type": "object" + }, + { + "properties": { + "onDelete": { + "$ref": "#/$defs/ReferenceDelete", + "default": "restrict" + }, + "target": { + "type": "string" + }, + "type": { + "const": "reference", + "type": "string" + } + }, + "required": [ + "type", + "target" + ], + "type": "object" + }, + { + "properties": { + "bbox": { + "$ref": "#/$defs/Crs84BboxSource" + }, + "precision": { + "format": "uint32", + "maximum": 9, + "minimum": 0, + "type": "integer" + }, + "type": { + "const": "crs84-point", + "type": "string" + } + }, + "required": [ + "type", + "precision" + ], + "type": "object" + }, + { + "properties": { + "maximumBytes": { + "format": "uint32", + "maximum": 1048576, + "minimum": 1, + "type": "integer" + }, + "schema": { + "x-registry-foreign": "json-schema-2020-12" + }, + "type": { + "const": "structured", + "type": "string" + } + }, + "required": [ + "type", + "maximumBytes", + "schema" + ], + "type": "object" + } + ], + "properties": { + "apiName": { + "type": "string" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource" + }, + "id": { + "$ref": "#/$defs/LocalId" + } + }, + "required": [ + "id", + "classification" + ], + "type": "object", + "unevaluatedProperties": false + }, + "DerivedSource": { + "additionalProperties": false, + "properties": { + "execution": { + "$ref": "#/$defs/DerivedExecutionSource", + "default": "live" + }, + "fields": { + "default": [], + "items": { + "$ref": "#/$defs/DerivedFieldSource" + }, + "type": "array" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "key": { + "type": "string" + }, + "sql": { + "type": "string" + } + }, + "required": [ + "id", + "sql", + "key" + ], + "type": "object" + }, + "Digest": { + "description": "A SHA-256 digest: `sha256:` followed by 64 lowercase hex digits.", + "pattern": "^sha256:[0-9a-f]{64}$", + "type": "string" + }, + "DisplayPurpose": { + "description": "The purpose a Record or Action declares for itself.", + "enum": [ + "domain", + "processing", + "technical", + "synthetic-seed" + ], + "type": "string" + }, + "DisplaySource": { + "additionalProperties": false, + "properties": { + "description": { + "$ref": "#/$defs/DisplayText" + }, + "label": { + "$ref": "#/$defs/DisplayText" + }, + "titleField": { + "type": "string" + } + }, + "type": "object" + }, + "DisplayText": { + "description": "Human-readable display text. Bidirectional embedding, override, and isolate controls, byte-order marks, line and paragraph separators, and Unicode noncharacters are refused; multilingual joiners and direction marks remain valid.", + "not": { + "pattern": "[

‪-‮⁦-⁩﷐-﷯￾￿]|🿾|🿿|𯿾|𯿿|𿿾|𿿿|񏿾|񏿿|񟿾|񟿿|񯿾|񯿿|񿿾|񿿿|򏿾|򏿿|򟿾|򟿿|򯿾|򯿿|򿿾|򿿿|󏿾|󏿿|󟿾|󟿿|󯿾|󯿿|󿿾|󿿿|􏿾|􏿿" + }, + "type": "string" + }, + "DuplicatePolicy": { + "description": "What the author says about the same source event arriving twice.", + "enum": [ + "reject", + "allow" + ], + "type": "string" + }, + "EffectiveTimeSource": { + "additionalProperties": false, + "description": "A point or a span of effect. An open end means the effect has no end.", + "properties": { + "at": { + "type": "string" + }, + "end": { + "type": "string" + }, + "start": { + "type": "string" + } + }, + "type": "object" + }, + "EntityPermissionSource": { + "additionalProperties": false, + "description": "What a profile may do with one entity.", + "properties": { + "allowCount": { + "default": false, + "type": "boolean" + }, + "allowDataExport": { + "default": false, + "type": "boolean" + }, + "filterableFields": { + "default": [], + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "lookups": { + "default": [], + "items": { + "$ref": "#/$defs/LookupPermissionSource" + }, + "type": "array" + }, + "membershipBoundaries": { + "default": [], + "description": "Current active membership required for each stored reference key.", + "items": { + "$ref": "#/$defs/MembershipBoundarySource" + }, + "type": "array" + }, + "operations": { + "items": { + "$ref": "#/$defs/Operation" + }, + "type": "array", + "uniqueItems": true + }, + "provenanceFields": { + "default": [], + "items": { + "$ref": "#/$defs/ProvenanceFieldSource" + }, + "type": "array", + "uniqueItems": true + }, + "readPaths": { + "default": [], + "items": { + "$ref": "#/$defs/ReadPathPermissionSource" + }, + "type": "array" + }, + "readableFields": { + "default": [], + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "recordType": { + "type": "string" + }, + "requireConsent": { + "default": [], + "description": "Current subject-issued consent required for each row, ANDed.", + "items": { + "$ref": "#/$defs/ConsentRequirementSource" + }, + "type": "array" + }, + "revisionAccess": { + "default": false, + "type": "boolean" + }, + "rowBoundaries": { + "$ref": "#/$defs/RowBoundaries", + "description": "Row reach: `unrestricted`, or a list of at least one row boundary." + }, + "sortableFields": { + "default": [], + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "spatialQueries": { + "$ref": "#/$defs/SpatialQueryPermissionSource" + }, + "writableFields": { + "default": [], + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "recordType", + "operations", + "rowBoundaries" + ], + "type": "object" + }, + "EntitySource": { + "additionalProperties": false, + "properties": { + "accessLog": { + "$ref": "#/$defs/AccessLogSource", + "description": "Subject-facing record access history, separate from the operational audit." + }, + "accessProfiles": { + "default": [], + "description": "Module profile contributions, read through the sentinels a project profile uses.", + "items": { + "$ref": "#/$defs/AccessProfileSource" + }, + "type": "array" + }, + "accessRequirements": { + "$ref": "#/$defs/AccessRequirementsSource", + "description": "Mandatory request-access requirements checked against every profile, including module contributions." + }, + "apiName": { + "type": "string" + }, + "batch": { + "$ref": "#/$defs/BatchSource" + }, + "classification": { + "$ref": "#/$defs/Classification", + "default": "internal" + }, + "consentRecord": { + "$ref": "#/$defs/ConsentRecordSource", + "description": "Declares this entity's rows as subject-issued consent decisions that\n`requireConsent` permissions check before returning a subject's row." + }, + "constraints": { + "default": [], + "items": { + "$ref": "#/$defs/ConstraintSource" + }, + "type": "array" + }, + "derived": { + "items": { + "$ref": "#/$defs/DerivedSource" + }, + "type": "array" + }, + "display": { + "$ref": "#/$defs/ModelDisplaySource", + "default": {} + }, + "eventRecord": { + "$ref": "#/$defs/EventRecordSource", + "description": "Declares this record type's rows as event records: which fields\nsay what the row is about, when it happened, when it takes effect, what\nit was recorded from and what it corrects. It adds no storage, endpoint\nor authority." + }, + "fields": { + "default": [], + "items": { + "$ref": "#/$defs/FieldSource" + }, + "type": "array" + }, + "geojson": { + "$ref": "#/$defs/GeoJsonSource" + }, + "hooks": { + "default": [], + "items": { + "$ref": "#/$defs/HookSource" + }, + "type": "array" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "indexes": { + "default": [], + "items": { + "$ref": "#/$defs/IndexSource" + }, + "type": "array" + }, + "mutationMode": { + "$ref": "#/$defs/MutationMode" + }, + "mutationPolicy": { + "$ref": "#/$defs/MutationPolicySource" + }, + "primaryDataset": { + "type": "string" + }, + "readPaths": { + "items": { + "$ref": "#/$defs/ReadPathSource" + }, + "type": "array" + }, + "route": { + "type": "string" + }, + "selectorProfiles": { + "items": { + "$ref": "#/$defs/SelectorProfileSource" + }, + "type": "array" + }, + "temporal": { + "$ref": "#/$defs/TemporalSource" + }, + "timers": { + "items": { + "$ref": "#/$defs/TimerSource" + }, + "type": "array" + }, + "tombstone": { + "default": false, + "type": "boolean" + } + }, + "required": [ + "id", + "primaryDataset", + "route", + "mutationMode" + ], + "type": "object" + }, + "EventConditionSource": { + "additionalProperties": false, + "description": "Closed Version 1 event selection language.\n\nA tagged shape leaves room for a later, separately governed rule ABI\nwithout turning fields into an ad hoc expression language. The shared\nreader's union helper decodes it, so an error inside a variant keeps its\nposition (CFG-SCHEMA-8). An unset value is named in `beforeIsNull` or\n`afterIsNull`; `null` is never a comparison literal (CFG-EMPTY-1).", + "properties": { + "afterEquals": { + "additionalProperties": { + "$ref": "#/$defs/ScalarLiteral" + }, + "default": {}, + "description": "Required values after the change. Valid with created and patched triggers.", + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "afterIsNull": { + "default": [], + "description": "Fields that must be unset after the change. Valid with created and patched triggers.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "beforeEquals": { + "additionalProperties": { + "$ref": "#/$defs/ScalarLiteral" + }, + "default": {}, + "description": "Required values before the change. Valid with patched and tombstoned triggers.", + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "beforeIsNull": { + "default": [], + "description": "Fields that must be unset before the change. Valid with patched and tombstoned triggers.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "changed": { + "default": [], + "description": "Fields whose values must change. Only valid with the patched trigger.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "type": { + "const": "fields", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + "EventRecordCorrectionSource": { + "additionalProperties": false, + "properties": { + "field": { + "description": "A reference to a record type that also declares an event record.", + "type": "string" + }, + "relation": { + "$ref": "#/$defs/CorrectionRelation" + } + }, + "required": [ + "field", + "relation" + ], + "type": "object" + }, + "EventRecordRoleSource": { + "additionalProperties": false, + "description": "One named role played by a stored field.", + "properties": { + "external": { + "$ref": "#/$defs/ExternalReferenceSource", + "description": "Marks the field as an opaque identifier owned by another system." + }, + "field": { + "type": "string" + }, + "label": { + "$ref": "#/$defs/DisplayText" + }, + "role": { + "type": "string" + }, + "target": { + "description": "Asserts the record type a native reference field points at.", + "type": "string" + } + }, + "required": [ + "role", + "field" + ], + "type": "object" + }, + "EventRecordSource": { + "additionalProperties": false, + "description": "The record-level mapping of stored fields onto event record roles.", + "properties": { + "correction": { + "$ref": "#/$defs/EventRecordCorrectionSource" + }, + "effective": { + "$ref": "#/$defs/EffectiveTimeSource" + }, + "label": { + "$ref": "#/$defs/DisplayText" + }, + "occurredAt": { + "$ref": "#/$defs/EventRecordTimeSource" + }, + "sourceEventId": { + "$ref": "#/$defs/SourceEventIdSource" + }, + "sources": { + "description": "What the event record was recorded from. Recording a reference is not\nverifying it.", + "items": { + "$ref": "#/$defs/EventRecordRoleSource" + }, + "type": "array" + }, + "subjects": { + "description": "What the event record is about. At least one, at most 16. The serde\ndefault only lets compilation report the stable emptiness diagnostic.", + "items": { + "$ref": "#/$defs/EventRecordRoleSource" + }, + "type": "array" + }, + "summary": { + "description": "A `string` or `text` field holding a human summary.", + "type": "string" + } + }, + "required": [ + "subjects" + ], + "type": "object" + }, + "EventRecordTimeSource": { + "additionalProperties": false, + "description": "A point (`at`) or an interval (`start`, `end`, `meaning`). Flat optional\nmembers let the compiler address each shape error at its authored path.", + "properties": { + "at": { + "type": "string" + }, + "end": { + "type": "string" + }, + "meaning": { + "$ref": "#/$defs/IntervalMeaning" + }, + "start": { + "type": "string" + } + }, + "type": "object" + }, + "EventTrigger": { + "enum": [ + "created", + "patched", + "tombstoned" + ], + "type": "string" + }, + "EvidenceProviderSource": { + "additionalProperties": false, + "properties": { + "contracts": { + "type": "string" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "subjectResolution": { + "$ref": "#/$defs/EvidenceSubjectResolution" + } + }, + "required": [ + "id", + "contracts", + "subjectResolution" + ], + "type": "object" + }, + "EvidenceSubjectResolution": { + "enum": [ + "trusted-provider-exact-selector" + ], + "type": "string" + }, + "EvidenceSubjectSource": { + "additionalProperties": false, + "properties": { + "profile": { + "type": "string" + } + }, + "required": [ + "profile" + ], + "type": "object" + }, + "ExternalId": { + "description": "An identifier another system issues, written exactly as its issuer gives it.", + "maxLength": 512, + "minLength": 1, + "pattern": "^[^\\u0000-\\u001F\\u007F-\\u009F]+$", + "type": "string" + }, + "ExternalReferenceSource": { + "additionalProperties": false, + "properties": { + "namespace": { + "description": "Absolute URI naming the system that owns the identifier.", + "type": "string" + } + }, + "required": [ + "namespace" + ], + "type": "object" + }, + "FieldGenerationSource": { + "description": "Server-side generation requested for a persisted business identifier.\n\nThe canonical record UUID remains independent. On a sequence, `scope`\nnames required, immutable stored fields whose values partition the\nnumbering. A random code has one namespace per field.", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "minimumDigits": { + "format": "uint32", + "maximum": 128, + "minimum": 1, + "type": "integer" + }, + "prefix": { + "default": "", + "maxLength": 128, + "pattern": "^[!-~]*$", + "type": "string" + }, + "scope": { + "default": [], + "items": { + "type": "string" + }, + "maxItems": 8, + "type": "array", + "uniqueItems": true + }, + "type": { + "const": "sequence", + "type": "string" + } + }, + "required": [ + "type", + "minimumDigits" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "length": { + "format": "uint32", + "maximum": 128, + "minimum": 1, + "type": "integer" + }, + "prefix": { + "default": "", + "maxLength": 128, + "pattern": "^[!-~]*$", + "type": "string" + }, + "type": { + "const": "random", + "type": "string" + } + }, + "required": [ + "type", + "length" + ], + "type": "object" + } + ] + }, + "FieldLookupSource": { + "additionalProperties": false, + "description": "The authored blind-index declaration for an encrypted field. Normalization\ncomposes in declared order over the canonical string form of the value;\n`unique` requests a unique index over the derived blind-index column.", + "properties": { + "normalization": { + "default": [], + "items": { + "$ref": "#/$defs/NormalizationStep" + }, + "maxItems": 8, + "type": "array" + }, + "unique": { + "default": false, + "type": "boolean" + } + }, + "type": "object" + }, + "FieldSource": { + "anyOf": [ + { + "$ref": "#/$defs/BooleanFieldSourceSchema" + }, + { + "$ref": "#/$defs/StringFieldSourceSchema" + }, + { + "$ref": "#/$defs/TextFieldSourceSchema" + }, + { + "$ref": "#/$defs/Int64FieldSourceSchema" + }, + { + "$ref": "#/$defs/DecimalFieldSourceSchema" + }, + { + "$ref": "#/$defs/DateFieldSourceSchema" + }, + { + "$ref": "#/$defs/TimestampFieldSourceSchema" + }, + { + "$ref": "#/$defs/UuidFieldSourceSchema" + }, + { + "$ref": "#/$defs/VocabularyCodeFieldSourceSchema" + }, + { + "$ref": "#/$defs/ReferenceFieldSourceSchema" + }, + { + "$ref": "#/$defs/Crs84PointFieldSourceSchema" + }, + { + "$ref": "#/$defs/StructuredFieldSourceSchema" + }, + { + "additionalProperties": false, + "properties": { + "apiName": { + "type": "string" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource" + }, + "encrypted": { + "default": false, + "type": "boolean" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "lookup": { + "$ref": "#/$defs/FieldLookupSource" + }, + "pattern": { + "type": "string" + }, + "relationship": { + "additionalProperties": false, + "properties": { + "inverseName": { + "pattern": "^[a-z][A-Za-z0-9]*$", + "type": "string" + } + }, + "type": "object" + }, + "required": { + "default": false, + "type": "boolean" + }, + "typeRef": { + "$ref": "#/$defs/LocalId" + }, + "validTimeRole": { + "$ref": "#/$defs/ValidTimeRole" + } + }, + "required": [ + "id", + "typeRef", + "classification" + ], + "type": "object" + } + ] + }, + "FunctionCapabilitySource": { + "enum": [ + "evidence" + ], + "type": "string" + }, + "FunctionLimitsSource": { + "additionalProperties": false, + "properties": { + "maximumOperations": { + "default": 10000, + "format": "uint64", + "maximum": 100000, + "minimum": 1, + "type": "integer" + }, + "maximumOutputBytes": { + "default": 8192, + "format": "uint32", + "maximum": 2097152, + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + }, + "FunctionSource": { + "additionalProperties": false, + "properties": { + "abi": { + "const": "registry.action-plan/v1", + "type": "string" + }, + "capabilities": { + "default": [], + "items": { + "$ref": "#/$defs/FunctionCapabilitySource" + }, + "type": "array", + "uniqueItems": true + }, + "entrypoint": { + "type": "string" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "limits": { + "$ref": "#/$defs/FunctionLimitsSource", + "default": { + "maximumOperations": 10000, + "maximumOutputBytes": 8192 + } + }, + "runtime": { + "$ref": "#/$defs/ActionHandlerKindSource" + }, + "source": { + "type": "string" + } + }, + "required": [ + "id", + "runtime", + "source", + "entrypoint", + "abi" + ], + "type": "object" + }, + "GeoJsonSource": { + "additionalProperties": false, + "properties": { + "geometryField": { + "type": "string" + } + }, + "required": [ + "geometryField" + ], + "type": "object" + }, + "GuardRevisionSource": { + "enum": [ + "unchanged" + ], + "type": "string" + }, + "HookHandlerSource": { + "description": "Where a hook's handler runs.\n\nThe pairing rule: `rhai` requires `script`, `wasm` requires `module`,\n`url` requires `destinationId`, and each\nkind requires exactly its own fields and nothing else. `abi` is required on\n`rhai` and `wasm` and forbidden on `url`; its value is closed and checked at\ncompile time in [`crate::validate_hooks`].", + "oneOf": [ + { + "additionalProperties": false, + "description": "A reviewed Rhai script in the project.", + "properties": { + "abi": { + "description": "The handler ABI the script speaks.", + "type": "string" + }, + "script": { + "description": "Script path in the project.", + "type": "string" + }, + "type": { + "const": "rhai", + "type": "string" + } + }, + "required": [ + "type", + "script" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "A reviewed WASM module in the project.", + "properties": { + "abi": { + "description": "The handler ABI the module speaks.", + "type": "string" + }, + "module": { + "description": "Module path in the project.", + "type": "string" + }, + "type": { + "const": "wasm", + "type": "string" + } + }, + "required": [ + "type", + "module" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "A logical destination bound to a URL and a secret at runtime. The\nruntime names the binding it looks the key up in; the project carries\nno URL or secret.", + "properties": { + "destinationId": { + "description": "Key in the runtime destination binding.", + "type": "string" + }, + "type": { + "const": "url", + "type": "string" + } + }, + "required": [ + "type", + "destinationId" + ], + "type": "object" + } + ] + }, + "HookPhase": { + "description": "When the hook runs relative to the triggering transaction.", + "oneOf": [ + { + "const": "before", + "description": "Runs inside the triggering transaction and may refuse or shape the\nchange. Local handler kinds only.", + "type": "string" + }, + { + "const": "after", + "description": "Runs after commit in the post-commit worker and cannot affect the\ntriggering transaction.", + "type": "string" + } + ] + }, + "HookSource": { + "additionalProperties": false, + "description": "One declared hook on an entity.\n\nThe shape is [`registry_platform_hooks::HookDeclaration`] with `trigger`\nand `when` closed to the vocabulary this compiler validates, and with\n`handler` optional. A hook that declares no handler is still recorded in\nthe outbox and delivered nowhere; production compilation refuses that.\n\nEntity hooks run after the triggering transaction commits, so `phase` is\nwritten and the compiler refuses any value it cannot run.", + "properties": { + "display": { + "$ref": "#/$defs/PresentationSource", + "description": "Authored presentation only; labels never establish identity or authority." + }, + "handler": { + "$ref": "#/$defs/HookHandlerSource", + "description": "Governed, destination-neutral delivery. `destinationId` is a key in\nruntime `destinations.hooks`; the project carries no URL or secret, and\ndeployment configuration may tighten the bounds it binds but cannot\nsupply or widen this authority. Production compilation requires it." + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "Stable hook contract identifier, sent as `ce-type`. Use a new identifier for a breaking payload change." + }, + "phase": { + "$ref": "#/$defs/HookPhase", + "description": "When the hook runs relative to the triggering transaction." + }, + "principal": { + "description": "The access profile a proposal from this hook is applied under.\nOptional: a hook that declares none is a non-proposing hook, and a\nproposal from one is refused and dead-lettered at delivery time.\nDeclaring none is not an authoring error.", + "type": "string" + }, + "projection": { + "description": "Declared field identifiers to include in `values`. System event metadata is included separately.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "trigger": { + "$ref": "#/$defs/EventTrigger", + "description": "Committed record change that can produce this hook." + }, + "when": { + "$ref": "#/$defs/EventConditionSource", + "description": "Optional field tests, combined with AND. Omit to run on every matching trigger." + } + }, + "required": [ + "id", + "phase", + "trigger", + "projection" + ], + "type": "object" + }, + "IndexSource": { + "additionalProperties": false, + "properties": { + "fields": { + "items": { + "type": "string" + }, + "maxItems": 31, + "type": "array" + }, + "id": { + "$ref": "#/$defs/LocalId" + } + }, + "required": [ + "id", + "fields" + ], + "type": "object" + }, + "Int64FieldSourceSchema": { + "additionalProperties": false, + "properties": { + "apiName": { + "type": "string" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "required": { + "default": false, + "type": "boolean" + }, + "type": { + "enum": [ + "int64" + ], + "type": "string" + }, + "validTimeRole": { + "$ref": "#/$defs/ValidTimeRole" + } + }, + "required": [ + "id", + "type", + "classification" + ], + "type": "object" + }, + "IntervalMeaning": { + "description": "What an event record's interval says about the event.", + "oneOf": [ + { + "const": "span", + "description": "The event lasted from start to end.", + "type": "string" + }, + { + "const": "within", + "description": "The event happened at an unknown instant between start and end.", + "type": "string" + } + ] + }, + "LocalId": { + "description": "A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.", + "pattern": "^[a-z][a-z0-9_-]{0,63}$", + "type": "string" + }, + "LookupPermissionSource": { + "additionalProperties": false, + "properties": { + "claimMapping": { + "additionalProperties": { + "type": "string" + }, + "default": {}, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "selector": { + "type": "string" + }, + "valueOrigin": { + "$ref": "#/$defs/LookupValueOrigin" + } + }, + "required": [ + "selector", + "valueOrigin" + ], + "type": "object" + }, + "LookupValueOrigin": { + "enum": [ + "request", + "verified-claim" + ], + "type": "string" + }, + "ManifestProjectionApplicationProfileSource": { + "additionalProperties": false, + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "version": { + "type": "string" + } + }, + "required": [ + "id", + "version" + ], + "type": "object" + }, + "ManifestProjectionAuthoritySource": { + "additionalProperties": false, + "description": "An identified public authority, shaped like the catalogue publisher.\nIt projects to a Registry Manifest `authorities[]` entry. Without an\n`iri`, the authority IRI is derived from the canonical base IRI.", + "properties": { + "authorityType": { + "type": "string" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "iri": { + "type": "string" + }, + "name": { + "$ref": "#/$defs/DisplayText" + } + }, + "required": [ + "id", + "name" + ], + "type": "object" + }, + "ManifestProjectionCatalogSource": { + "additionalProperties": false, + "properties": { + "applicationProfiles": { + "default": [], + "items": { + "$ref": "#/$defs/ManifestProjectionApplicationProfileSource" + }, + "type": "array" + }, + "baseUrl": { + "$ref": "#/$defs/Url" + }, + "conformsTo": { + "default": [], + "items": { + "type": "string" + }, + "type": "array" + }, + "description": { + "$ref": "#/$defs/ManifestProjectionTextSource" + }, + "participantId": { + "type": "string" + }, + "publisher": { + "$ref": "#/$defs/ManifestProjectionPublisherSource" + }, + "standards": { + "$ref": "#/$defs/ManifestProjectionStandardsSource", + "default": {} + }, + "title": { + "$ref": "#/$defs/ManifestProjectionTextSource" + } + }, + "required": [ + "baseUrl", + "title", + "publisher" + ], + "type": "object" + }, + "ManifestProjectionDataServiceSource": { + "additionalProperties": false, + "properties": { + "conformsTo": { + "type": "string" + }, + "description": { + "$ref": "#/$defs/ManifestProjectionTextSource" + }, + "endpointDescription": { + "type": "string" + }, + "endpointUrl": { + "$ref": "#/$defs/Url" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "iri": { + "type": "string" + }, + "servesDatasets": { + "items": { + "type": "string" + }, + "type": "array" + }, + "title": { + "$ref": "#/$defs/ManifestProjectionTextSource" + } + }, + "required": [ + "id", + "title", + "endpointUrl", + "servesDatasets" + ], + "type": "object" + }, + "ManifestProjectionDatasetSource": { + "additionalProperties": false, + "properties": { + "accessProfile": { + "type": "string" + }, + "applicableLegislation": { + "default": [], + "items": { + "type": "string" + }, + "type": "array" + }, + "classificationCeiling": { + "$ref": "#/$defs/Classification" + }, + "conformsTo": { + "default": [], + "items": { + "type": "string" + }, + "type": "array" + }, + "description": { + "$ref": "#/$defs/ManifestProjectionTextSource" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "iri": { + "type": "string" + }, + "owner": { + "$ref": "#/$defs/DisplayText" + }, + "spatialCoverage": { + "type": "string" + }, + "status": { + "$ref": "#/$defs/ManifestProjectionDatasetStatus" + }, + "title": { + "$ref": "#/$defs/ManifestProjectionTextSource" + }, + "version": { + "type": "string" + } + }, + "required": [ + "id", + "title" + ], + "type": "object" + }, + "ManifestProjectionDatasetStatus": { + "enum": [ + "under-development", + "active", + "completed", + "deprecated", + "withdrawn" + ], + "type": "string" + }, + "ManifestProjectionDistributionSource": { + "additionalProperties": false, + "properties": { + "accessService": { + "type": "string" + }, + "accessUrl": { + "$ref": "#/$defs/Url" + }, + "dataset": { + "type": "string" + }, + "description": { + "$ref": "#/$defs/ManifestProjectionTextSource" + }, + "downloadUrl": { + "$ref": "#/$defs/Url" + }, + "format": { + "type": "string" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "iri": { + "type": "string" + }, + "mediaType": { + "type": "string" + }, + "title": { + "$ref": "#/$defs/ManifestProjectionTextSource" + } + }, + "required": [ + "id", + "dataset" + ], + "type": "object" + }, + "ManifestProjectionEntitySource": { + "additionalProperties": false, + "properties": { + "conceptUri": { + "type": "string" + }, + "description": { + "$ref": "#/$defs/ManifestProjectionTextSource" + }, + "fields": { + "default": [], + "items": { + "$ref": "#/$defs/ManifestProjectionFieldSource" + }, + "type": "array" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "identifiers": { + "default": [], + "items": { + "$ref": "#/$defs/ManifestProjectionIdentifierSource" + }, + "type": "array" + }, + "title": { + "$ref": "#/$defs/ManifestProjectionTextSource" + } + }, + "required": [ + "id" + ], + "type": "object" + }, + "ManifestProjectionFieldSource": { + "additionalProperties": false, + "properties": { + "concepts": { + "default": [], + "items": { + "type": "string" + }, + "type": "array" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "language": { + "type": "string" + }, + "relationshipConceptUri": { + "type": "string" + }, + "relationshipRole": { + "type": "string" + }, + "unit": { + "type": "string" + } + }, + "required": [ + "id" + ], + "type": "object" + }, + "ManifestProjectionIdentifierSource": { + "additionalProperties": false, + "properties": { + "field": { + "type": "string" + }, + "kind": { + "type": "string" + } + }, + "required": [ + "field", + "kind" + ], + "type": "object" + }, + "ManifestProjectionPublicServiceSource": { + "additionalProperties": false, + "properties": { + "competentAuthority": { + "$ref": "#/$defs/LocalId", + "description": "The id of the `authorities[]` entry legally competent for this\nservice (CPSV-AP `hasCompetentAuthority`)." + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "title": { + "$ref": "#/$defs/ManifestProjectionTextSource" + } + }, + "required": [ + "id", + "title", + "competentAuthority" + ], + "type": "object" + }, + "ManifestProjectionPublisherSource": { + "additionalProperties": false, + "properties": { + "authorityType": { + "type": "string" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "iri": { + "type": "string" + }, + "name": { + "$ref": "#/$defs/DisplayText" + } + }, + "required": [ + "id", + "name" + ], + "type": "object" + }, + "ManifestProjectionSource": { + "additionalProperties": false, + "properties": { + "accessProfile": { + "type": "string" + }, + "authorities": { + "description": "The identified public authorities the Manifest names. The public\nservice names its competent authority from this list by id.", + "items": { + "$ref": "#/$defs/ManifestProjectionAuthoritySource" + }, + "type": "array" + }, + "catalog": { + "$ref": "#/$defs/ManifestProjectionCatalogSource" + }, + "classificationCeiling": { + "$ref": "#/$defs/Classification" + }, + "dataServices": { + "items": { + "$ref": "#/$defs/ManifestProjectionDataServiceSource" + }, + "type": "array" + }, + "datasets": { + "items": { + "$ref": "#/$defs/ManifestProjectionDatasetSource" + }, + "type": "array" + }, + "distributions": { + "items": { + "$ref": "#/$defs/ManifestProjectionDistributionSource" + }, + "type": "array" + }, + "entities": { + "default": [], + "items": { + "$ref": "#/$defs/ManifestProjectionEntitySource" + }, + "type": "array" + }, + "publicService": { + "$ref": "#/$defs/ManifestProjectionPublicServiceSource" + }, + "vocabularies": { + "default": [], + "items": { + "$ref": "#/$defs/ManifestProjectionVocabularySource" + }, + "type": "array" + } + }, + "required": [ + "accessProfile", + "classificationCeiling", + "catalog", + "authorities", + "publicService", + "datasets", + "dataServices" + ], + "type": "object" + }, + "ManifestProjectionStandardsSource": { + "additionalProperties": false, + "properties": { + "dcat": { + "type": "string" + }, + "jsonSchema": { + "type": "string" + }, + "shacl": { + "type": "string" + } + }, + "type": "object" + }, + "ManifestProjectionTextSource": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "additionalProperties": { + "$ref": "#/$defs/DisplayText" + }, + "propertyNames": { + "$ref": "#/$defs/ExternalId" + }, + "type": "object" + } + ], + "description": "One plain string, or a mapping from language tag to text." + }, + "ManifestProjectionVocabularyConceptSource": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "iri": { + "type": "string" + }, + "label": { + "$ref": "#/$defs/ManifestProjectionTextSource" + } + }, + "required": [ + "code" + ], + "type": "object" + }, + "ManifestProjectionVocabularySource": { + "additionalProperties": false, + "properties": { + "concepts": { + "default": [], + "items": { + "$ref": "#/$defs/ManifestProjectionVocabularyConceptSource" + }, + "type": "array" + }, + "externalReference": { + "type": "string" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "schemeIri": { + "type": "string" + }, + "version": { + "type": "string" + } + }, + "required": [ + "id", + "schemeIri" + ], + "type": "object" + }, + "MembershipBoundarySource": { + "additionalProperties": false, + "description": "A one-hop current membership requirement, combined with every other row boundary.\nThe root field and membership key must reference the same entity. The active\nfield is Boolean, and principalField matches the profile's verified principal.", + "properties": { + "activeField": { + "type": "string" + }, + "field": { + "type": "string" + }, + "membershipKeyField": { + "type": "string" + }, + "membershipRecordType": { + "type": "string" + }, + "principalField": { + "type": "string" + } + }, + "required": [ + "field", + "membershipRecordType", + "membershipKeyField", + "principalField", + "activeField" + ], + "type": "object" + }, + "ModelDisplaySource": { + "additionalProperties": false, + "description": "How a Record or Action is presented in the declared-model view. It adds\npresentation-only grouping, which no runtime surface reads, to the plain\ndisplay text members.", + "properties": { + "description": { + "$ref": "#/$defs/DisplayText" + }, + "group": { + "$ref": "#/$defs/DisplayText", + "description": "Display group; objects sharing the exact string are listed together." + }, + "label": { + "$ref": "#/$defs/DisplayText" + }, + "purpose": { + "$ref": "#/$defs/DisplayPurpose", + "description": "What the object is for. Presentation only." + }, + "titleField": { + "type": "string" + } + }, + "type": "object" + }, + "ModuleLockSource": { + "additionalProperties": false, + "properties": { + "digest": { + "$ref": "#/$defs/Digest" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "version": { + "type": "string" + } + }, + "required": [ + "id", + "version" + ], + "type": "object" + }, + "MutationMode": { + "enum": [ + "mutable", + "create-only" + ], + "type": "string" + }, + "MutationPolicyMode": { + "enum": [ + "direct", + "proposal-required" + ], + "type": "string" + }, + "MutationPolicySource": { + "additionalProperties": false, + "properties": { + "create": { + "$ref": "#/$defs/MutationPolicyMode" + }, + "patch": { + "$ref": "#/$defs/MutationPolicyMode" + }, + "tombstone": { + "$ref": "#/$defs/MutationPolicyMode" + } + }, + "type": "object" + }, + "NormalizationStep": { + "description": "A normalization step applied to the canonical string form of an encrypted\nvalue before its blind index is derived. The vocabulary is closed.", + "oneOf": [ + { + "enum": [ + "trim", + "uppercase", + "lowercase", + "collapse-whitespace" + ], + "type": "string" + }, + { + "const": "remove-separators", + "description": "Strips spaces, hyphens, slashes, and dots from the canonical form.", + "type": "string" + }, + { + "const": "nfc", + "description": "Canonical composition (Unicode NFC), so a precomposed letter and its\nbase letter plus combining mark give the same value. Compatibility\nforms such as ligatures are not mapped.", + "type": "string" + }, + { + "const": "case-fold", + "description": "NFC, then full Unicode case folding with no locale tailoring, then NFC\nagain: `ß` and `ẞ` fold to `ss`, `ς` folds to `σ`, canonically\nequivalent spellings fold alike whatever the order of their combining\nmarks, and a capital that folds to a decomposed sequence is composed\nagain. Unlike `lowercase` it is meant for matching, so it is the case\nstep to pair with `nfc`.", + "type": "string" + } + ] + }, + "Operation": { + "oneOf": [ + { + "enum": [ + "create", + "get", + "lookup", + "list", + "patch", + "tombstone", + "batch", + "revisions", + "snapshot", + "invoke", + "start" + ], + "type": "string" + }, + { + "const": "import", + "description": "Create records through a durable ingestion run, and nothing else. The\ngrant is enabled only while an operator-opened import authority is open\nfor the entity and profile. It declares no item route and no raw batch\nroute, and change control does not count it as a direct write.", + "type": "string" + } + ] + }, + "PackageIdentitySource": { + "additionalProperties": false, + "properties": { + "sourceRevision": { + "type": "string" + } + }, + "required": [ + "sourceRevision" + ], + "type": "object" + }, + "PermissionsSource": { + "additionalProperties": false, + "description": "What an access profile may do. Each member lists the permissions that name\none kind of subject, and a member that is omitted or empty grants nothing.", + "properties": { + "actions": { + "default": [], + "description": "The actions the profile may invoke: one permission for each action it names.", + "items": { + "$ref": "#/$defs/ActionPermissionSource" + }, + "type": "array" + }, + "datasets": { + "default": [], + "description": "What the profile may do with statistical datasets: one permission for each dataset it names.", + "items": { + "$ref": "#/$defs/DatasetPermissionSource" + }, + "type": "array" + }, + "proposals": { + "default": [], + "items": { + "$ref": "#/$defs/ProposalPermissionSource" + }, + "type": "array" + }, + "records": { + "default": [], + "description": "What the profile may do with entities: one permission for each entity it names.", + "items": { + "$ref": "#/$defs/EntityPermissionSource" + }, + "type": "array" + } + }, + "type": "object" + }, + "PolicySelectionSource": { + "additionalProperties": false, + "dependentRequired": { + "digest": [ + "version" + ], + "version": [ + "digest" + ] + }, + "properties": { + "digest": { + "$ref": "#/$defs/Digest" + }, + "id": { + "$comment": "The review protocol also bounds UTF-8 bytes, which the reader checks without restricting externally issued identifiers to ASCII.", + "allOf": [ + { + "$ref": "#/$defs/ExternalId" + } + ], + "maxLength": 128 + }, + "version": { + "type": "string" + } + }, + "required": [ + "id" + ], + "type": "object" + }, + "PresentationSource": { + "additionalProperties": false, + "description": "Authored words for an object without a Record's title-field selection.", + "properties": { + "description": { + "$ref": "#/$defs/DisplayText" + }, + "label": { + "$ref": "#/$defs/DisplayText" + } + }, + "type": "object" + }, + "ProjectAccessProfileSource": { + "additionalProperties": false, + "description": "One access profile as a project writes it.", + "properties": { + "actorKind": { + "$ref": "#/$defs/ActorKindSource" + }, + "default": { + "default": false, + "type": "boolean" + }, + "display": { + "$ref": "#/$defs/PresentationSource", + "description": "Authored presentation only; labels never establish identity or authority." + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "permissions": { + "$ref": "#/$defs/PermissionsSource", + "default": { + "actions": [], + "datasets": [], + "proposals": [], + "records": [] + }, + "description": "What the profile may do, grouped by what each permission names. Omit when the profile grants nothing." + }, + "principalClaim": { + "description": "The token claim that names the caller. Every profile serves authenticated callers, so every profile names one.", + "type": "string" + }, + "requesterClients": { + "description": "The OAuth clients whose tokens may select this profile. Omit to accept every client.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "requiredPurposes": { + "description": "The verified token's purpose must match one listed value. Omit to accept every purpose.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "requiredScopes": { + "$ref": "#/$defs/RequiredScopes", + "description": "The scopes the verified token must carry: `unrestricted`, or a list of at least one scope, all of which must be present." + }, + "taskGrant": { + "$ref": "#/$defs/TaskGrantSource" + } + }, + "required": [ + "id", + "principalClaim", + "requiredScopes" + ], + "type": "object" + }, + "ProposalApplicationSource": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "mode": { + "const": "manual", + "type": "string" + } + }, + "required": [ + "mode" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "maximumAttempts": { + "default": 3, + "format": "uint32", + "maximum": 32, + "minimum": 1, + "type": "integer" + }, + "mode": { + "const": "automatic", + "type": "string" + } + }, + "required": [ + "mode" + ], + "type": "object" + } + ] + }, + "ProposalContextValueSource": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "slot": { + "$ref": "#/$defs/LocalId" + }, + "type": { + "const": "document", + "type": "string" + } + }, + "required": [ + "type", + "slot" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "input": { + "$ref": "#/$defs/LocalId" + }, + "type": { + "const": "input", + "type": "string" + } + }, + "required": [ + "type", + "input" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "field": { + "$ref": "#/$defs/LocalId" + }, + "input": { + "$ref": "#/$defs/LocalId" + }, + "type": { + "const": "record", + "type": "string" + } + }, + "required": [ + "type", + "input", + "field" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "fields": { + "items": { + "type": "string" + }, + "type": "array" + }, + "recordType": { + "$ref": "#/$defs/LocalId" + }, + "type": { + "const": "changes", + "type": "string" + } + }, + "required": [ + "type", + "recordType", + "fields" + ], + "type": "object" + } + ] + }, + "ProposalEventTransition": { + "enum": [ + "started", + "edited", + "submitted", + "revised", + "rebased", + "retried", + "cancelled", + "applied", + "rejected", + "review-returned" + ], + "type": "string" + }, + "ProposalHookSource": { + "additionalProperties": false, + "properties": { + "display": { + "$ref": "#/$defs/PresentationSource", + "description": "Authored presentation only; labels never establish identity or authority." + }, + "handler": { + "$ref": "#/$defs/HookHandlerSource" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "transitions": { + "description": "Omit to observe every committed lifecycle transition.", + "items": { + "$ref": "#/$defs/ProposalEventTransition" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "id", + "handler" + ], + "type": "object" + }, + "ProposalOperation": { + "enum": [ + "get", + "list", + "edit", + "submit", + "revise", + "cancel", + "apply", + "rebase", + "retry", + "get-review-status", + "get-review-context", + "get-task-grant-context", + "get-application-actor" + ], + "type": "string" + }, + "ProposalOwnership": { + "enum": [ + "caller" + ], + "type": "string" + }, + "ProposalPermissionSource": { + "additionalProperties": false, + "properties": { + "action": { + "type": "string" + }, + "operations": { + "items": { + "$ref": "#/$defs/ProposalOperation" + }, + "type": "array", + "uniqueItems": true + }, + "ownership": { + "$ref": "#/$defs/ProposalOwnership" + }, + "readableAttachments": { + "default": [], + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "readableContextFields": { + "default": [], + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "readableInputs": { + "default": [], + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "reviewAuthority": { + "type": "string" + }, + "targets": { + "default": [], + "items": { + "$ref": "#/$defs/ProposalTargetPermissionSource" + }, + "type": "array" + }, + "writableAttachments": { + "default": [], + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "writableInputs": { + "description": "Action inputs this grant may set. Absent leaves every declared input writable.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "action", + "operations" + ], + "type": "object" + }, + "ProposalPolicySource": { + "additionalProperties": false, + "properties": { + "application": { + "$ref": "#/$defs/ProposalApplicationSource", + "default": { + "maximumAttempts": 3, + "mode": "automatic" + } + }, + "attachments": { + "default": [], + "items": { + "$ref": "#/$defs/AttachmentSlotSource" + }, + "type": "array" + }, + "hooks": { + "description": "Post-commit observers of the fixed, value-free Proposal lifecycle event.", + "items": { + "$ref": "#/$defs/ProposalHookSource" + }, + "type": "array" + }, + "retention": { + "$ref": "#/$defs/ProposalRetentionSource" + }, + "review": { + "$ref": "#/$defs/ProposalReviewSource" + }, + "reviewContext": { + "$ref": "#/$defs/ProposalReviewContextSource" + } + }, + "required": [ + "review", + "retention" + ], + "type": "object" + }, + "ProposalRetentionMode": { + "enum": [ + "retain", + "operator-erase" + ], + "type": "string" + }, + "ProposalRetentionSource": { + "additionalProperties": false, + "properties": { + "mode": { + "$ref": "#/$defs/ProposalRetentionMode" + } + }, + "required": [ + "mode" + ], + "type": "object" + }, + "ProposalReviewContextSource": { + "additionalProperties": false, + "properties": { + "fields": { + "additionalProperties": { + "$ref": "#/$defs/ProposalContextValueSource" + }, + "maxProperties": 64, + "propertyNames": { + "maxLength": 64, + "minLength": 1, + "not": { + "enum": [ + "id", + "recordId", + "revision", + "createdAt", + "updatedAt", + "deletedAt" + ], + "x-registry-member-names": true + }, + "pattern": "^[a-z][A-Za-z0-9]{0,63}$", + "type": "string" + }, + "type": "object", + "x-registry-member-names": true + }, + "id": { + "$ref": "#/$defs/LocalId" + } + }, + "required": [ + "id", + "fields" + ], + "type": "object" + }, + "ProposalReviewSource": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "type": { + "const": "none", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "authority": { + "type": "string" + }, + "policy": { + "$ref": "#/$defs/PolicySelectionSource" + }, + "source": { + "type": "string" + }, + "type": { + "const": "required", + "type": "string" + } + }, + "required": [ + "type", + "authority", + "source", + "policy" + ], + "type": "object" + } + ] + }, + "ProposalTargetPermissionSource": { + "additionalProperties": false, + "properties": { + "recordType": { + "type": "string" + }, + "rowBoundaries": { + "$ref": "#/$defs/RowBoundaries" + } + }, + "required": [ + "recordType", + "rowBoundaries" + ], + "type": "object" + }, + "ProvenanceFieldSource": { + "description": "A member of a revision's `changeContext` a profile may read. Each value\nis spelled as the member it names is (CFG-NAME-2).", + "enum": [ + "kind", + "reasonCode", + "reasonText", + "sourceReferences" + ], + "type": "string", + "x-registry-member-names": true + }, + "ReadPathPermissionSource": { + "additionalProperties": false, + "properties": { + "allowCount": { + "default": false, + "type": "boolean" + }, + "filterableFields": { + "default": [], + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "path": { + "type": "string" + }, + "readableFields": { + "default": [], + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "sortableFields": { + "default": [], + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "path" + ], + "type": "object" + }, + "ReadPathSource": { + "additionalProperties": false, + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "route": { + "type": "string" + }, + "through": { + "type": "string" + }, + "to": { + "type": "string" + } + }, + "required": [ + "id", + "through", + "to", + "route" + ], + "type": "object" + }, + "RecipientGroupSource": { + "additionalProperties": false, + "description": "A frozen, named list of declared organizations. Groups do not nest.", + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "members": { + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "$ref": "#/$defs/DisplayText" + } + }, + "required": [ + "id", + "name", + "members" + ], + "type": "object" + }, + "RecipientOrganizationSource": { + "additionalProperties": false, + "description": "One named organization. Its clients are the verified OAuth clients that act\nfor it; an organization with no clients is retired and keeps its code.", + "properties": { + "clients": { + "items": { + "type": "string" + }, + "type": "array" + }, + "contact": { + "$ref": "#/$defs/DisplayText" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "name": { + "$ref": "#/$defs/DisplayText" + } + }, + "required": [ + "id", + "name", + "contact", + "clients" + ], + "type": "object" + }, + "RecipientsSource": { + "additionalProperties": false, + "description": "Declared consent recipients. Organization and group ids share one\nnamespace and form the append-only `registry-recipients` vocabulary.", + "properties": { + "groups": { + "items": { + "$ref": "#/$defs/RecipientGroupSource" + }, + "type": "array" + }, + "organizations": { + "default": [], + "items": { + "$ref": "#/$defs/RecipientOrganizationSource" + }, + "type": "array" + } + }, + "type": "object" + }, + "ReferenceDelete": { + "enum": [ + "restrict" + ], + "type": "string" + }, + "ReferenceFieldSourceSchema": { + "additionalProperties": false, + "properties": { + "apiName": { + "type": "string" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "onDelete": { + "$ref": "#/$defs/ReferenceDelete", + "default": "restrict" + }, + "relationship": { + "additionalProperties": false, + "properties": { + "inverseName": { + "pattern": "^[a-z][A-Za-z0-9]*$", + "type": "string" + } + }, + "type": "object" + }, + "required": { + "default": false, + "type": "boolean" + }, + "target": { + "type": "string" + }, + "type": { + "enum": [ + "reference" + ], + "type": "string" + }, + "validTimeRole": { + "$ref": "#/$defs/ValidTimeRole" + } + }, + "required": [ + "id", + "type", + "classification", + "target" + ], + "type": "object" + }, + "RegistryIdentitySource": { + "additionalProperties": false, + "properties": { + "canonicalBaseIri": { + "type": "string" + }, + "defaultLanguage": { + "type": "string" + }, + "display": { + "$ref": "#/$defs/DisplaySource", + "default": {} + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "timezone": { + "description": "The IANA time zone the registry answers \"today\" in, such as\n`Asia/Colombo`. Required when the project reads a date-interval\n`:current`, compares a `currentDate` requirement, calls\n`registry_context.evaluation_date()` on a live read, or declares a\nstatistics dataset.", + "type": "string" + }, + "version": { + "type": "string" + } + }, + "required": [ + "id", + "version", + "defaultLanguage", + "canonicalBaseIri" + ], + "type": "object" + }, + "RequiredScopes": { + "anyOf": [ + { + "const": "unrestricted", + "description": "Require no scope.", + "type": "string" + }, + { + "description": "Require every listed scope.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + ], + "description": "The scopes a token must carry to select a profile: the keyword\n`unrestricted`, or a list of at least one scope." + }, + "ReusableValueTypeSource": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "type": { + "const": "boolean", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "maximumLength": { + "format": "uint32", + "maximum": 1000000, + "minimum": 1, + "type": "integer" + }, + "minimumLength": { + "default": 0, + "format": "uint32", + "maximum": 1000000, + "minimum": 0, + "type": "integer" + }, + "type": { + "const": "string", + "type": "string" + } + }, + "required": [ + "type", + "maximumLength" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "maximumLength": { + "format": "uint32", + "maximum": 10000000, + "minimum": 1, + "type": "integer" + }, + "type": { + "const": "text", + "type": "string" + } + }, + "required": [ + "type", + "maximumLength" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "type": { + "const": "int64", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "maximum": { + "type": "string" + }, + "minimum": { + "type": "string" + }, + "precision": { + "format": "uint32", + "maximum": 38, + "minimum": 1, + "type": "integer" + }, + "scale": { + "format": "uint32", + "maximum": 38, + "minimum": 0, + "type": "integer" + }, + "type": { + "const": "decimal", + "type": "string" + } + }, + "required": [ + "type", + "precision", + "scale" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "type": { + "const": "date", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "type": { + "const": "timestamp", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "type": { + "const": "uuid", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "type": { + "const": "vocabulary-code", + "type": "string" + }, + "values": { + "default": [], + "items": { + "type": "string" + }, + "type": "array" + }, + "vocabulary": { + "type": "string" + } + }, + "required": [ + "type", + "vocabulary" + ], + "type": "object" + } + ] + }, + "ReviewAuthoritySource": { + "additionalProperties": false, + "properties": { + "display": { + "$ref": "#/$defs/DisplaySource", + "default": {} + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "protocol": { + "type": "string" + } + }, + "required": [ + "id", + "protocol" + ], + "type": "object" + }, + "RowBoundaries": { + "anyOf": [ + { + "const": "unrestricted", + "description": "Reach every row.", + "type": "string" + }, + { + "description": "Reach the rows every listed boundary binds to the caller's claims.", + "items": { + "$ref": "#/$defs/RowBoundarySource" + }, + "minItems": 1, + "type": "array" + } + ], + "description": "The rows a permission reaches: the keyword `unrestricted`, or a list of at\nleast one row boundary." + }, + "RowBoundarySource": { + "additionalProperties": false, + "properties": { + "claim": { + "type": "string" + }, + "field": { + "type": "string" + }, + "operator": { + "$ref": "#/$defs/BoundaryOperator" + } + }, + "required": [ + "field", + "claim", + "operator" + ], + "type": "object" + }, + "ScalarLiteral": { + "description": "A comparison literal: a boolean, a number, or text.", + "type": [ + "boolean", + "number", + "string" + ] + }, + "SelectorProfileSource": { + "additionalProperties": false, + "properties": { + "fields": { + "items": { + "type": "string" + }, + "type": "array" + }, + "id": { + "$ref": "#/$defs/LocalId" + } + }, + "required": [ + "id", + "fields" + ], + "type": "object" + }, + "SourceEventIdSource": { + "additionalProperties": false, + "description": "The identifier an event record carries from the system it was recorded from.", + "properties": { + "constraint": { + "description": "The authored unique constraint that enforces `duplicates: reject`.", + "type": "string" + }, + "duplicates": { + "$ref": "#/$defs/DuplicatePolicy" + }, + "field": { + "type": "string" + }, + "namespace": { + "description": "Absolute URI naming the identifier's namespace. Exactly one of\n`namespace` and `namespaceField` is declared.", + "type": "string" + }, + "namespaceField": { + "type": "string" + } + }, + "required": [ + "field", + "duplicates" + ], + "type": "object" + }, + "SpatialBboxPermissionSource": { + "additionalProperties": false, + "properties": { + "maximumLatitudeSpanDegrees": { + "type": "number" + }, + "maximumLongitudeSpanDegrees": { + "type": "number" + } + }, + "required": [ + "maximumLongitudeSpanDegrees", + "maximumLatitudeSpanDegrees" + ], + "type": "object" + }, + "SpatialQueryPermissionSource": { + "additionalProperties": false, + "properties": { + "bbox": { + "$ref": "#/$defs/SpatialBboxPermissionSource" + } + }, + "type": "object" + }, + "StatisticalDatasetSource": { + "additionalProperties": false, + "properties": { + "dimensions": { + "description": "Unit Record fields used to group counts. Each field must be boolean or\nvocabulary-code, and each may appear once. `period`, `value`, and `status`\nare reserved output columns and cannot be dimension field names.", + "items": { + "type": "string" + }, + "type": "array" + }, + "disclosure": { + "$ref": "#/$defs/StatisticalDisclosureSource" + }, + "display": { + "$ref": "#/$defs/PresentationSource", + "description": "Authored presentation only; labels never establish identity or authority." + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "period": { + "$ref": "#/$defs/StatisticalPeriodSource" + }, + "population": { + "type": "string" + }, + "unit": { + "type": "string" + } + }, + "required": [ + "id", + "unit", + "population", + "period", + "dimensions" + ], + "type": "object" + }, + "StatisticalDisclosureSource": { + "additionalProperties": false, + "properties": { + "minimumCount": { + "format": "uint64", + "maximum": 9007199254740991, + "minimum": 2, + "type": "integer" + }, + "roundingBase": { + "format": "uint64", + "maximum": 9007199254740991, + "minimum": 2, + "type": "integer" + } + }, + "required": [ + "minimumCount", + "roundingBase" + ], + "type": "object" + }, + "StatisticalPeriodGranularitySource": { + "enum": [ + "day", + "month", + "quarter", + "year" + ], + "type": "string" + }, + "StatisticalPeriodSource": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "field": { + "description": "Date field on the unit Record that places each row in a period.", + "type": "string" + }, + "firstPeriod": { + "type": "string" + }, + "granularity": { + "$ref": "#/$defs/StatisticalPeriodGranularitySource" + }, + "type": { + "const": "flow", + "type": "string" + } + }, + "required": [ + "type", + "field", + "granularity", + "firstPeriod" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "firstPeriod": { + "type": "string" + }, + "granularity": { + "$ref": "#/$defs/StatisticalPeriodGranularitySource" + }, + "type": { + "const": "stock", + "type": "string" + }, + "validity": { + "$ref": "#/$defs/StatisticalValiditySource" + } + }, + "required": [ + "type", + "granularity", + "firstPeriod", + "validity" + ], + "type": "object" + } + ] + }, + "StatisticalTemporalValiditySource": { + "enum": [ + "temporal" + ], + "type": "string" + }, + "StatisticalValidityFieldsSource": { + "additionalProperties": false, + "properties": { + "from": { + "description": "Required date field on the unit Record marking the start of validity.", + "type": "string" + }, + "until": { + "description": "Optional date field marking the end of validity. A missing or null end\nleaves the row valid until a later bound is stored.", + "type": "string" + } + }, + "required": [ + "from" + ], + "type": "object" + }, + "StatisticalValiditySource": { + "anyOf": [ + { + "$ref": "#/$defs/StatisticalTemporalValiditySource" + }, + { + "$ref": "#/$defs/StatisticalValidityFieldsSource" + } + ], + "description": "The scalar `temporal`, or a mapping naming the validity fields." + }, + "StringFieldSourceSchema": { + "additionalProperties": false, + "properties": { + "apiName": { + "type": "string" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource" + }, + "encrypted": { + "default": false, + "type": "boolean" + }, + "generate": { + "$ref": "#/$defs/FieldGenerationSource" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "lookup": { + "$ref": "#/$defs/FieldLookupSource" + }, + "maximumLength": { + "format": "uint32", + "maximum": 1000000, + "minimum": 1, + "type": "integer" + }, + "minimumLength": { + "default": 0, + "format": "uint32", + "maximum": 1000000, + "minimum": 0, + "type": "integer" + }, + "pattern": { + "type": "string" + }, + "required": { + "default": false, + "type": "boolean" + }, + "type": { + "enum": [ + "string" + ], + "type": "string" + }, + "validTimeRole": { + "$ref": "#/$defs/ValidTimeRole" + } + }, + "required": [ + "id", + "type", + "classification", + "maximumLength" + ], + "type": "object" + }, + "StructuredFieldSourceSchema": { + "additionalProperties": false, + "properties": { + "apiName": { + "type": "string" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource" + }, + "encrypted": { + "default": false, + "type": "boolean" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "lookup": { + "$ref": "#/$defs/FieldLookupSource" + }, + "maximumBytes": { + "format": "uint32", + "maximum": 1048576, + "minimum": 1, + "type": "integer" + }, + "required": { + "default": false, + "type": "boolean" + }, + "schema": { + "x-registry-foreign": "json-schema-2020-12" + }, + "type": { + "enum": [ + "structured" + ], + "type": "string" + }, + "validTimeRole": { + "$ref": "#/$defs/ValidTimeRole" + } + }, + "required": [ + "id", + "type", + "classification", + "maximumBytes", + "schema" + ], + "type": "object" + }, + "TaskGrantSource": { + "additionalProperties": false, + "properties": { + "sourceIssuer": { + "$ref": "#/$defs/Url" + } + }, + "required": [ + "sourceIssuer" + ], + "type": "object" + }, + "TemporalSource": { + "additionalProperties": false, + "properties": { + "endField": { + "description": "The exclusive end: the interval stops just before this value.", + "type": "string" + }, + "lastDayField": { + "description": "The inclusive last day of a date interval, named in place of\n`endField` when the source records the last day in force.", + "type": "string" + }, + "startField": { + "type": "string" + } + }, + "required": [ + "startField" + ], + "type": "object" + }, + "TextFieldSourceSchema": { + "additionalProperties": false, + "properties": { + "apiName": { + "type": "string" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource" + }, + "encrypted": { + "default": false, + "type": "boolean" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "lookup": { + "$ref": "#/$defs/FieldLookupSource" + }, + "maximumLength": { + "format": "uint32", + "maximum": 10000000, + "minimum": 1, + "type": "integer" + }, + "pattern": { + "type": "string" + }, + "required": { + "default": false, + "type": "boolean" + }, + "type": { + "enum": [ + "text" + ], + "type": "string" + }, + "validTimeRole": { + "$ref": "#/$defs/ValidTimeRole" + } + }, + "required": [ + "id", + "type", + "classification", + "maximumLength" + ], + "type": "object" + }, + "TimerGrantSource": { + "additionalProperties": false, + "description": "Root-owned autonomous authority for one exact Record timer.", + "properties": { + "recordType": { + "$ref": "#/$defs/LocalId" + }, + "timer": { + "$ref": "#/$defs/LocalId" + } + }, + "required": [ + "recordType", + "timer" + ], + "type": "object" + }, + "TimerInputSource": { + "additionalProperties": false, + "description": "One complete mapping into one ordinary Action input. Exactly one member is\nselected by compilation; the flat shape preserves authored source positions.", + "properties": { + "fromField": { + "type": "string" + }, + "fromRecordId": { + "const": true, + "type": "boolean" + }, + "fromTimer": { + "$ref": "#/$defs/TimerValueSource" + }, + "value": true + }, + "type": "object" + }, + "TimerPredicateSource": { + "additionalProperties": false, + "description": "A bounded conjunction of equality checks over current stored fields.", + "properties": { + "equals": { + "additionalProperties": { + "$ref": "#/$defs/ScalarLiteral" + }, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "type": { + "const": "fields", + "type": "string" + } + }, + "required": [ + "type", + "equals" + ], + "type": "object" + }, + "TimerSource": { + "additionalProperties": false, + "description": "One timer attached to a governed Record type.", + "properties": { + "at": { + "type": "string" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "input": { + "additionalProperties": { + "$ref": "#/$defs/TimerInputSource" + }, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "invoke": { + "type": "string" + }, + "notAfter": { + "type": "string" + }, + "rearmOn": { + "type": "string" + }, + "when": { + "$ref": "#/$defs/TimerPredicateSource" + } + }, + "required": [ + "id", + "at", + "invoke", + "input" + ], + "type": "object" + }, + "TimerValueSource": { + "description": "Runtime-owned timer facts that may be mapped into Action inputs.", + "enum": [ + "occurrence-id", + "due-at" + ], + "type": "string" + }, + "TimestampFieldSourceSchema": { + "additionalProperties": false, + "properties": { + "apiName": { + "type": "string" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "required": { + "default": false, + "type": "boolean" + }, + "type": { + "enum": [ + "timestamp" + ], + "type": "string" + }, + "validTimeRole": { + "$ref": "#/$defs/ValidTimeRole" + } + }, + "required": [ + "id", + "type", + "classification" + ], + "type": "object" + }, + "UniqueWhenPredicate": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "field": { + "type": "string" + }, + "type": { + "const": "field-equals", + "type": "string" + }, + "value": true + }, + "required": [ + "type", + "field", + "value" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "field": { + "type": "string" + }, + "type": { + "const": "field-is-null", + "type": "string" + } + }, + "required": [ + "type", + "field" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "field": { + "type": "string" + }, + "type": { + "const": "field-is-not-null", + "type": "string" + } + }, + "required": [ + "type", + "field" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "type": { + "const": "active-lifecycle", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + } + ] + }, + "Url": { + "description": "An absolute http or https URL with a host preserved as written, no user information, and no backslash, whitespace or control character. DNS case and equivalent IPv6 literals are permitted.", + "format": "uri", + "maxLength": 2048, + "pattern": "^[Hh][Tt][Tt][Pp][Ss]?://[^/?#@\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]+([/?#][^\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]*)?$", + "type": "string" + }, + "UuidFieldSourceSchema": { + "additionalProperties": false, + "properties": { + "apiName": { + "type": "string" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "required": { + "default": false, + "type": "boolean" + }, + "type": { + "enum": [ + "uuid" + ], + "type": "string" + }, + "validTimeRole": { + "$ref": "#/$defs/ValidTimeRole" + } + }, + "required": [ + "id", + "type", + "classification" + ], + "type": "object" + }, + "ValidTimeRole": { + "enum": [ + "valid-from", + "valid-to" + ], + "type": "string" + }, + "VocabularyCodeFieldSourceSchema": { + "additionalProperties": false, + "properties": { + "apiName": { + "type": "string" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "required": { + "default": false, + "type": "boolean" + }, + "type": { + "enum": [ + "vocabulary-code" + ], + "type": "string" + }, + "validTimeRole": { + "$ref": "#/$defs/ValidTimeRole" + }, + "values": { + "default": [], + "items": { + "type": "string" + }, + "type": "array" + }, + "vocabulary": { + "type": "string" + } + }, + "required": [ + "id", + "type", + "classification", + "vocabulary" + ], + "type": "object" + }, + "VocabularySource": { + "additionalProperties": false, + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "values": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "id", + "values" + ], + "type": "object" + } + }, + "$id": "https://id.registrystack.org/schemas/breg/project/project.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "accessProfiles": { + "default": [], + "items": { + "$ref": "#/$defs/ProjectAccessProfileSource" + }, + "type": "array" + }, + "actions": { + "items": { + "$ref": "#/$defs/ActionSource" + }, + "type": "array" + }, + "apiVersion": { + "const": "id.registrystack.org/formats/breg/project/v1alpha1", + "type": "string" + }, + "datasets": { + "default": [], + "items": { + "$ref": "#/$defs/DatasetSource" + }, + "type": "array" + }, + "evidenceProviders": { + "items": { + "$ref": "#/$defs/EvidenceProviderSource" + }, + "type": "array" + }, + "functions": { + "default": [], + "items": { + "$ref": "#/$defs/FunctionSource" + }, + "type": "array" + }, + "kind": { + "const": "BRegProject", + "type": "string" + }, + "manifestProjection": { + "$ref": "#/$defs/ManifestProjectionSource" + }, + "modules": { + "default": [], + "items": { + "$ref": "#/$defs/ModuleLockSource" + }, + "type": "array" + }, + "package": { + "$ref": "#/$defs/PackageIdentitySource" + }, + "project": { + "$ref": "#/$defs/RegistryIdentitySource" + }, + "recipients": { + "$ref": "#/$defs/RecipientsSource", + "description": "Named organizations and frozen groups that consent may be given to." + }, + "recordTypes": { + "default": [], + "items": { + "$ref": "#/$defs/EntitySource" + }, + "type": "array" + }, + "retiredConsentScopes": { + "description": "Consent scope codes of removed gated profiles, kept so existing consent\nrows still validate. A retired scope matches nothing.", + "items": { + "type": "string" + }, + "type": "array" + }, + "reviewAuthorities": { + "default": [], + "items": { + "$ref": "#/$defs/ReviewAuthoritySource" + }, + "type": "array" + }, + "statisticalDatasets": { + "description": "Declared count tables computed from governed Registry records.", + "items": { + "$ref": "#/$defs/StatisticalDatasetSource" + }, + "type": "array" + }, + "timerGrants": { + "description": "Root-owned enablement of autonomous Record timers. Modules may declare\ntimers, but cannot contribute this authority.", + "items": { + "$ref": "#/$defs/TimerGrantSource" + }, + "type": "array" + }, + "valueTypes": { + "additionalProperties": { + "$ref": "#/$defs/ReusableValueTypeSource" + }, + "default": {}, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "vocabularies": { + "default": [], + "items": { + "$ref": "#/$defs/VocabularySource" + }, + "type": "array" + } + }, + "required": [ + "apiVersion", + "kind", + "project" + ], + "title": "Base Registry Engine authored project", + "type": "object" +} diff --git a/public/artifacts/sha256/cdc74748bb3e149abc012ed32d5f3518867e70465a51a88628df99903bd9df5f.json b/public/artifacts/sha256/cdc74748bb3e149abc012ed32d5f3518867e70465a51a88628df99903bd9df5f.json new file mode 100644 index 000000000..2c72786e6 --- /dev/null +++ b/public/artifacts/sha256/cdc74748bb3e149abc012ed32d5f3518867e70465a51a88628df99903bd9df5f.json @@ -0,0 +1,123 @@ +{ + "$defs": { + "DocumentFile": { + "additionalProperties": false, + "description": "One document type as `manifest.yaml` writes it.", + "properties": { + "entryFile": { + "description": "Entry point relative to the bundle root: a `.typ` file inside the\nbundle.", + "not": { + "pattern": "^/|\\.\\." + }, + "pattern": "\\.typ$", + "type": "string" + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "Stable document identifier used in requests and routes." + }, + "labels": { + "default": [], + "description": "Label tables the template receives, by locale: each names\n`labels/.yaml`.", + "items": { + "$ref": "#/$defs/LocalId" + }, + "type": "array", + "uniqueItems": true + }, + "pdfStandard": { + "$ref": "#/$defs/PdfStandardSpec", + "description": "PDF standard for this document; plain PDF when absent." + }, + "schemaFile": { + "description": "JSON Schema (draft 2020-12) for the request data, relative to the\nbundle root: a `.json` file inside the bundle.", + "not": { + "pattern": "^/|\\.\\." + }, + "pattern": "\\.json$", + "type": "string" + }, + "seal": { + "$ref": "#/$defs/LocalId", + "description": "The seal this document type is issued under: a local identifier that\nthe serving runtime's `signing.seals` binds to key material. Omit it\nand the document type cannot be sealed. The bundle never holds a key,\na certificate, or a client list." + }, + "version": { + "description": "The document's own version; printed on paper by templates that wish to.", + "format": "uint32", + "maximum": 4294967295, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "id", + "version", + "entryFile" + ], + "type": "object" + }, + "LocalId": { + "description": "A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.", + "pattern": "^[a-z][a-z0-9_-]{0,63}$", + "type": "string" + }, + "PdfStandardSpec": { + "description": "The PDF standard a document is rendered under. Mirrors the Typst CLI's\nspellings exactly so bundles and CLI examples agree.", + "enum": [ + "1.4", + "1.5", + "1.6", + "1.7", + "2.0", + "a-1b", + "a-1a", + "a-2b", + "a-2u", + "a-2a", + "a-3b", + "a-3u", + "a-3a", + "a-4", + "a-4f", + "a-4e", + "ua-1" + ], + "type": "string" + } + }, + "$id": "https://id.registrystack.org/schemas/render/bundle/bundle.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "description": "`manifest.yaml`: the document types a bundle declares.", + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/render/bundle/v1alpha1", + "type": "string" + }, + "bundleVersion": { + "description": "Author-defined bundle version, monotonic per bundle.", + "format": "uint32", + "maximum": 4294967295, + "minimum": 1, + "type": "integer" + }, + "documents": { + "description": "The document types, each with an id unique in the bundle.", + "items": { + "$ref": "#/$defs/DocumentFile" + }, + "type": "array" + }, + "kind": { + "const": "RenderBundle", + "type": "string" + } + }, + "required": [ + "apiVersion", + "kind", + "bundleVersion" + ], + "title": "Registry Render bundle manifest", + "type": "object" +} diff --git a/public/artifacts/sha256/d54c2e60d478680238197bd57d5d5baf83975cf6f30a359d0d331d31f333495f.yaml b/public/artifacts/sha256/d54c2e60d478680238197bd57d5d5baf83975cf6f30a359d0d331d31f333495f.yaml new file mode 100644 index 000000000..ec094945d --- /dev/null +++ b/public/artifacts/sha256/d54c2e60d478680238197bd57d5d5baf83975cf6f30a359d0d331d31f333495f.yaml @@ -0,0 +1,197 @@ +$schema: https://json-schema.org/draft/2020-12/schema +$id: https://id.registrystack.org/schemas/evidence/verification-policy/verification-policy.v1.schema.json +title: Evidence relying-procedure verification policy Version 1 +type: object +additionalProperties: false +required: + - apiVersion + - kind + - expectedAssuranceProfile + - issuedBy + - providedBy + - requirement + - evidenceType + - purpose + - audience + - configurationRevision + - requestNonce + - expectedSubjects + - expectedOutputs + - maximumAssertionLifetimeSeconds + - revokedKeyIds +properties: + apiVersion: + const: id.registrystack.org/formats/evidence/verification-policy/v1 + kind: + const: EvidenceVerificationPolicy + expectedAssuranceProfile: {enum: [local, production, evidence-grade]} + issuedBy: {type: string, format: uri, maxLength: 512} + providedBy: {type: string, format: uri, maxLength: 512} + requirement: {type: string, format: uri, maxLength: 512} + evidenceType: {type: string, format: uri, maxLength: 512} + purpose: {type: string, pattern: '^[a-z][a-z0-9._:-]{0,127}$'} + audience: {type: string, format: uri, maxLength: 512} + configurationRevision: + type: string + pattern: '^sha256:[a-f0-9]{64}$' + description: >- + The requirement-scoped revision the relying party pinned, as the + requirement's own definition published it. A deployment's unrelated edits + do not change it. + requestNonce: + type: string + pattern: '^[A-Za-z0-9_-]{43}$' + description: The exact nonce from the independently retained original request. + expectedSubjects: + type: array + minItems: 1 + maxItems: 8 + uniqueItems: true + description: Unordered set of unique role-bound opaque bindings. Subject order alone is never semantic. + items: {$ref: '#/$defs/expected-subject'} + expectedOutputs: + type: array + minItems: 1 + maxItems: 16 + uniqueItems: true + description: Expected concept identifiers, value forms, and cardinalities, one per disclosed Supported Value. + items: {$ref: '#/$defs/expected-output'} + maximumAssertionLifetimeSeconds: + type: integer + minimum: 1 + maximum: 31536000 + description: Longest acceptable validUntil minus issuedAt interval. + revokedKeyIds: + type: array + maxItems: 33 + uniqueItems: true + items: {type: string, pattern: '^[A-Za-z0-9_-]{42}[AEIMQUYcgkosw048]$'} + description: Emergency denylist of Evidence service-key RFC 7638 thumbprints, checked before a pinned JWKS key is selected. An empty list is explicit. + acceptedChannels: + type: array + minItems: 1 + maxItems: 2 + uniqueItems: true + items: {enum: [source, holder-presented]} + description: >- + The channels this procedure accepts, from the closed channel vocabulary. + Omitting it means source only, so a procedure written before the channel + member existed refuses an assertion that a holder presented. An empty + list is refused; an open choice is every channel listed. + maximumCredentialAgeSeconds: + type: integer + minimum: 1 + maximum: 315360000 + description: >- + Longest acceptable observedAt minus presentedCredential.issuedAt, applied + to holder-presented assertions only. Omitting it means no bound on the + credential's age. + clockSkewSeconds: + type: integer + minimum: 0 + maximum: 300 + default: 0 + description: Optional. Omitting it means zero tolerance. +$defs: + expected-subject: + type: object + additionalProperties: false + required: [role, binding] + properties: + role: {type: string, pattern: '^[a-z][a-z0-9._-]{0,63}$'} + binding: {type: string, pattern: '^urn:evidence:subject:v[1-9][0-9]*_[A-Za-z0-9_-]{43}$'} + expected-output: + type: object + additionalProperties: false + required: [handle, concept, required, form] + properties: + handle: {type: string, pattern: '^[a-z][a-z0-9._-]{0,127}$'} + concept: {type: string, format: uri, maxLength: 512} + required: {type: boolean} + form: {$ref: '#/$defs/expected-form'} + expected-form: + oneOf: + - type: object + additionalProperties: false + required: [type] + properties: + type: {const: boolean} + - type: object + additionalProperties: false + required: [type] + properties: + type: {const: integer} + - type: object + additionalProperties: false + required: [type] + properties: + type: {const: string} + - type: object + additionalProperties: false + required: [type] + properties: + type: {const: date-bucket} + - type: object + additionalProperties: false + required: [type] + properties: + type: {const: time-bucket} + - type: object + additionalProperties: false + required: [type] + properties: + type: {const: entity-reference} + - type: object + additionalProperties: false + required: [type] + properties: + type: {const: structured} + - type: object + additionalProperties: false + required: [type, items, minimumItems, maximumItems, unique] + properties: + type: {const: list} + items: {enum: [string, entity-reference]} + minimumItems: {type: integer, minimum: 1, maximum: 64} + maximumItems: {type: integer, minimum: 1, maximum: 64} + unique: {const: true} +ownership: + document: relying party + producer: the relying procedure that retained the original request and accepted the original transaction + consumer: offline re-verification by the `evidence verify` operator command +command: + surface: evidence verify (--jws | --sd-jwt-vc ) --jwks --policy [--at ] + jws: one stored flattened JWS JSON response file + sd-jwt-vc: one stored SD-JWT VC response file, in the issued compact serialization + format_selection: exactly one stored response file is named, and naming it states its format; the command never infers a format from a file's contents, so a stored response is never re-verified under the other format's rules + policy_scope: this document governs the two audience-scoped formats, signed JWS and SD-JWT VC, because the same Evidence payload is verified whichever serialization carried it; a holder-bound presentation carries no audience or request nonce to compare and is governed by the holder-bound document instead, and neither command accepts the other's document + jwks: the pinned trusted key set, which is the complete trust set for the run + policy: one document accepted by this schema + at: strict RFC 3339 at zero offset; system time when omitted + network: prohibited; no socket is opened, no metadata is resolved, and no key is fetched + input_bound: every input file is refused above 1 MiB before it is read +output: + lines: + - 'verified-at: the chosen verification instant' + - 'authentic: yes or no, printed once verification ran' + - 'currently-valid: yes or no, printed only for an authentic response' + inspection: on full success the verified Evidence JSON is also printed, for the operator who already holds the stored response + failure: only the closed class is reported, on standard error, with no field-level detail + classes: [malformed, protected-header, key, signature, payload, policy, time, disclosure, key-binding] + disclosure_class: reported only for a stored SD-JWT VC whose disclosures do not reconstruct the payload the signature covers + key_binding_class: never reported by this command, which verifies audience-scoped responses and asks nothing about possession; it is listed here because the failure-class vocabulary is one closed list shared by both verification commands + exit_codes: + 0: authentic and currently valid + 3: authentic but not currently valid + 1: every other outcome, including a policy mismatch, an unusable input document, and an unreadable file +$comment: >- + Every expectation and revoked-key decision in this document must come from independent trusted state, + such as the independently retained original request and an accepted original + transaction. Copying values out of the JWS under verification proves nothing, + and a policy that omitted an expectation would silently skip a comparison, so + the document is closed and every field except clockSkewSeconds, acceptedChannels, and maximumCredentialAgeSeconds is required. A + failed comparison, including the expected nonce, the expected role-bound + subject set, and the expected output contract, reports the one generic policy + class, so re-verification is never an oracle for which hidden comparison + failed. Authenticity and current usability are separate answers: an expired + assertion stays cryptographically authentic without being current evidence. diff --git a/public/artifacts/sha256/d68323a93d34904b5bc49870512e03baf519fd86b2a88078df69e68ee417242f.json b/public/artifacts/sha256/d68323a93d34904b5bc49870512e03baf519fd86b2a88078df69e68ee417242f.json new file mode 100644 index 000000000..aa5e6b414 --- /dev/null +++ b/public/artifacts/sha256/d68323a93d34904b5bc49870512e03baf519fd86b2a88078df69e68ee417242f.json @@ -0,0 +1,1067 @@ +{ + "$defs": { + "AnonymousHttpsAcknowledgement": { + "description": "The one named acknowledgement that admits a credential-free HTTPS\nsource. This is a security-sensitive operator decision, not a boolean\nwhose meaning can be lost in a rendered configuration.", + "oneOf": [ + { + "const": "operator-approved", + "description": "The operator reviewed and approved this fixed anonymous source.", + "type": "string" + } + ] + }, + "Cidr": { + "description": "A private network range in `addr/prefix` form, for example 10.0.0.0/8.", + "pattern": "^[0-9a-fA-F.:]+/[0-9]{1,3}$", + "type": "string" + }, + "CredentialPlacement": { + "description": "Where a shared client secret travels, Evidence's `CredentialPlacement`\nspelling.", + "oneOf": [ + { + "const": "basic-header", + "description": "`Authorization: Basic` on the token request.", + "type": "string" + }, + { + "const": "form-body", + "description": "A form parameter on the token request.", + "type": "string" + } + ] + }, + "EndpointBinding": { + "additionalProperties": false, + "description": "The environment binding of one pack endpoint: its base URL, its\ncredentials matching the endpoint's declared kind, and the optional TLS\nadditions (`products/adapter/CONCEPT.md` section 10.2).", + "properties": { + "anonymousHttps": { + "$ref": "#/$defs/AnonymousHttpsAcknowledgement", + "description": "The operator's explicit acknowledgement that a credential-free\nsource is intentionally served over verified HTTPS. Omission keeps\nthe credential-free policy closed outside numeric loopback and mTLS." + }, + "attemptTimeoutMilliseconds": { + "description": "A finite attempt-timeout override in milliseconds. Evidence may raise\nor lower its pack default under the acquisition's remaining deadline;\nfacade and job admit only a lower value within their ten-second policy.", + "format": "uint64", + "maximum": 18446744073709551615, + "minimum": 1, + "type": "integer" + }, + "baseUrl": { + "$ref": "#/$defs/Url", + "description": "The upstream origin; a fixed destination the engine never derives\nfrom a response." + }, + "credential": { + "$ref": "#/$defs/RuntimeCredential", + "description": "The credential; its kind must match the endpoint's declared kind." + }, + "endpoint": { + "$ref": "#/$defs/ExternalId", + "description": "The pack endpoint this binding configures." + }, + "maximumConcurrency": { + "default": 8, + "description": "The maximum simultaneous physical data operations admitted for this\nendpoint. Evidence programs selecting the same named connection share\none permit pool; token acquisition retains its own cache/single-flight\ncontrols.", + "format": "uint64", + "maximum": 256, + "minimum": 1, + "type": "integer" + }, + "maximumResponseBytes": { + "description": "A lower response bound than the pack declares, in bytes (1 to\n16777216, the largest bound a pack endpoint may declare); absent, the\ndeclared one applies. A value above the declared one is refused when\nthe deployment loads.", + "format": "uint64", + "maximum": 16777216, + "minimum": 1, + "type": "integer" + }, + "mtlsIdentity": { + "$ref": "#/$defs/MtlsIdentity", + "description": "The mTLS client identity, combinable with any authentication kind." + }, + "tlsTrustProfile": { + "$ref": "#/$defs/LocalId", + "description": "A trust profile under `outboundTls.trustProfiles` whose CA bundle\nthe endpoint trusts beside the system roots; absent, the endpoint\ntrusts the system roots alone." + } + }, + "required": [ + "endpoint", + "baseUrl" + ], + "type": "object" + }, + "EnvironmentSecretProviderConfig": { + "additionalProperties": false, + "description": "The environment secret provider. It takes no settings.", + "type": "object" + }, + "ExternalId": { + "description": "An identifier another system issues, written exactly as its issuer gives it.", + "maxLength": 512, + "minLength": 1, + "pattern": "^[^\\u0000-\\u001F\\u007F-\\u009F]+$", + "type": "string" + }, + "FileSecretProviderConfig": { + "additionalProperties": false, + "description": "The file secret provider.", + "properties": { + "root": { + "description": "Absolute directory holding one file per secret. Each file must be a\nregular file owned by the runtime user, mode 0400 or 0600, with exactly\none hard link.", + "pattern": "^/", + "type": "string" + } + }, + "required": [ + "root" + ], + "type": "object" + }, + "FileSource": { + "additionalProperties": false, + "anyOf": [ + { + "required": [ + "doneFileName" + ] + }, + { + "properties": { + "readLock": { + "const": "changed" + } + }, + "required": [ + "readLock" + ] + }, + { + "required": [ + "producerAtomicHandover" + ] + } + ], + "description": "The runtime binding of one `file` source endpoint: the absolute base\ndirectory the read never leaves, the namespace the item keys carry,\nand the read behavior of the camel-file port.", + "properties": { + "directory": { + "description": "The absolute path of the directory the read lists and reads. A\nrelative path refuses at the reader.", + "type": "string" + }, + "doneFileName": { + "description": "The done-file a candidate must have beside it: a literal name, or\nthe candidate's own name inside a fixed prefix and suffix\n(`$simple{file:name}` or `${file:name}`). Absent, no done-file\ncheck runs.", + "type": "string" + }, + "include": { + "description": "The Ant-style glob a candidate file name must match; absent,\nevery file is a candidate. A glob carrying a path separator\nrefuses at the reader: the read is non-recursive.", + "type": "string" + }, + "maxMessagesPerPoll": { + "description": "Camel's `maxMessagesPerPoll`, accepted for Camel parity; absent,\n500. One read emits at most one file, so the member bounds\nnothing a read does not already bound.", + "format": "uint32", + "maximum": 4294967295, + "minimum": 1, + "type": "integer" + }, + "namespace": { + "description": "The namespace every item key of this source carries.", + "type": "string" + }, + "producerAtomicHandover": { + "const": true, + "description": "The producer's declaration that a file appears in the directory\nonly once complete, renamed in after it is written. A source\ndeclares this, a `doneFileName`, or `readLock: changed`; one with\nnone refuses.", + "type": "boolean" + }, + "readLock": { + "$ref": "#/$defs/ReadLock", + "description": "The read lock; absent, `none`." + }, + "readLockCheckIntervalMilliseconds": { + "description": "The `changed` lock's space between its two checks, in\nmilliseconds (100 to 5000); absent, 1000. Refused beside any read\nlock but `changed`.", + "format": "uint64", + "maximum": 5000, + "minimum": 100, + "type": "integer" + }, + "readLockTimeoutMilliseconds": { + "description": "The `changed` lock's timeout, in milliseconds (1 to 10000, the\npollEnrich step's own timeout ceiling); absent, 10000. Refused\nbeside any read lock but `changed`.", + "format": "uint64", + "maximum": 10000, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "directory", + "namespace" + ], + "type": "object" + }, + "HookIngress": { + "additionalProperties": false, + "properties": { + "listener": { + "$ref": "#/$defs/PrivateListenerConfig", + "allOf": [ + { + "if": { + "properties": { + "bind": { + "pattern": ":0$" + } + }, + "required": [ + "bind" + ] + }, + "then": { + "properties": { + "tlsTermination": { + "const": "development-loopback" + } + } + } + } + ], + "properties": { + "bind": { + "description": "Canonical loopback socket address. The schema accepts canonical IPv4 127/8 octets and [::1], with an unpadded decimal port from 0 through 65535.", + "pattern": "^(?:127(?:\\.(?:0|[1-9][0-9]?|1[0-9]{2}|2[0-4][0-9]|25[0-5])){3}|\\[::1\\]):(?:0|[1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$" + } + }, + "unevaluatedProperties": false + }, + "sources": { + "additionalProperties": { + "$ref": "#/$defs/HookSource" + }, + "maxProperties": 16, + "minProperties": 1, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + } + }, + "required": [ + "listener", + "sources" + ], + "type": "object" + }, + "HookSource": { + "additionalProperties": false, + "properties": { + "burst": { + "format": "uint64", + "maximum": 1000, + "minimum": 1, + "type": "integer" + }, + "passwordRef": { + "$ref": "#/$defs/SecretReference" + }, + "requestsPerMinute": { + "format": "uint64", + "maximum": 60000, + "minimum": 1, + "type": "integer" + }, + "usernameRef": { + "$ref": "#/$defs/SecretReference" + } + }, + "required": [ + "usernameRef", + "passwordRef", + "requestsPerMinute", + "burst" + ], + "type": "object" + }, + "JobSources": { + "additionalProperties": false, + "description": "The job source bindings, keyed by the pack endpoint each binds.", + "properties": { + "file": { + "additionalProperties": { + "$ref": "#/$defs/FileSource" + }, + "description": "The file sources, keyed by endpoint id.", + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "postgres": { + "additionalProperties": { + "$ref": "#/$defs/PostgresSource" + }, + "description": "The read-only postgres sources, keyed by endpoint id.", + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "rabbitmq": { + "additionalProperties": { + "$ref": "#/$defs/RabbitMqSource" + }, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "sftp": { + "additionalProperties": { + "$ref": "#/$defs/SftpSource" + }, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + } + }, + "type": "object" + }, + "JobStore": { + "additionalProperties": false, + "description": "The job store block: the item table's single connection reference.\nSecret references only, resolved by the job host.", + "properties": { + "runtimeUrlRef": { + "$ref": "#/$defs/SecretReference", + "description": "The runtime connection reference of the item table's database." + }, + "testOnlyPlaintext": { + "description": "Plaintext connections for the loopback test database only;\nrefused when true in any build without the job host's test\nfeature.", + "type": "boolean" + }, + "trustedRootCertificateRef": { + "$ref": "#/$defs/SecretReference", + "description": "The root certificate the connection trusts beside the platform\nroots; absent, the platform roots alone." + } + }, + "required": [ + "runtimeUrlRef" + ], + "type": "object" + }, + "ListenerBind": { + "description": "Socket address the runtime listens on, written host:port with an IP address host ([addr]:port for IPv6).", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "ListenerNetworkExposure": { + "description": "The operator-declared private network placement of an HTTP listener.", + "enum": [ + "private-address", + "container-private" + ], + "type": "string" + }, + "LocalId": { + "description": "A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.", + "pattern": "^[a-z][a-z0-9_-]{0,63}$", + "type": "string" + }, + "MtlsIdentity": { + "additionalProperties": false, + "description": "The mTLS client identity of an endpoint, orthogonal to the\nauthentication kind (`products/adapter/CONCEPT.md` section 10.2). It is\none way a `none` endpoint reaches a non-loopback source. An operator may\ninstead acknowledge a credential-free HTTPS source on its fixed runtime\nbinding.", + "properties": { + "certificateRef": { + "$ref": "#/$defs/SecretReference", + "description": "The client certificate secret reference." + }, + "keyRef": { + "$ref": "#/$defs/SecretReference", + "description": "The client private key secret reference." + } + }, + "required": [ + "certificateRef", + "keyRef" + ], + "type": "object" + }, + "OutboundTls": { + "additionalProperties": false, + "description": "The private certificate authorities endpoints may trust beside the\nsystem roots (`products/adapter/CONCEPT.md` section 10.2), in the shape\nEvidence ships: a named profile is a process-local PEM file. A CA\nbundle is not a secret, so the profile names a file, never a secret\nreference.", + "properties": { + "trustProfiles": { + "additionalProperties": { + "$ref": "#/$defs/TrustProfile" + }, + "default": {}, + "description": "The named private CA bundles.", + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + } + }, + "type": "object" + }, + "PostgresSource": { + "additionalProperties": false, + "description": "The runtime binding of one read-only `postgres` source endpoint: its\nown pool, with its own credential and TLS posture.", + "properties": { + "database": { + "description": "The source database.", + "type": "string" + }, + "host": { + "description": "The source host.", + "type": "string" + }, + "namespace": { + "description": "The namespace every item key of this source carries.", + "type": "string" + }, + "passwordRef": { + "$ref": "#/$defs/SecretReference", + "description": "The reference the source password resolves from." + }, + "port": { + "description": "The source port (1 to 65535); absent, 5432.", + "format": "uint64", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "tls": { + "$ref": "#/$defs/SourceTls", + "description": "The TLS posture of the connection; absent, the system roots with\nTLS required." + }, + "user": { + "description": "The source user.", + "type": "string" + } + }, + "required": [ + "host", + "database", + "user", + "passwordRef", + "namespace" + ], + "type": "object" + }, + "PrivateListenerConfig": { + "additionalProperties": false, + "description": "The listener of a runtime that declares its TLS termination and network\nexposure.", + "properties": { + "bind": { + "$ref": "#/$defs/ListenerBind" + }, + "networkExposure": { + "$ref": "#/$defs/ListenerNetworkExposure", + "default": "private-address" + }, + "tlsTermination": { + "$ref": "#/$defs/TlsTermination" + } + }, + "required": [ + "bind", + "tlsTermination" + ], + "type": "object" + }, + "RabbitMqSource": { + "additionalProperties": false, + "description": "One manually settled RabbitMQ source. The broker must independently enforce\na hard `max_message_size`; the client byte ceiling is post-allocation.", + "properties": { + "connectionTimeoutMilliseconds": { + "format": "uint64", + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "deadLetterExchange": { + "type": "string" + }, + "deadLetterQueue": { + "type": "string" + }, + "deadLetterRoutingKey": { + "type": "string" + }, + "declareTopology": { + "type": "boolean" + }, + "heartbeatSeconds": { + "format": "uint64", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "host": { + "type": "string" + }, + "maximumOutstandingDeliveries": { + "format": "uint64", + "maximum": 64, + "minimum": 1, + "type": "integer" + }, + "namespace": { + "type": "string" + }, + "passwordRef": { + "$ref": "#/$defs/SecretReference" + }, + "port": { + "format": "uint64", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "queue": { + "type": "string" + }, + "tls": { + "$ref": "#/$defs/SourceTls" + }, + "user": { + "type": "string" + }, + "vhost": { + "type": "string" + } + }, + "required": [ + "host", + "user", + "passwordRef", + "queue", + "deadLetterExchange", + "deadLetterQueue", + "deadLetterRoutingKey", + "namespace" + ], + "type": "object" + }, + "ReadLock": { + "description": "The read lock of one file source.", + "oneOf": [ + { + "const": "none", + "description": "No lock: a candidate is read as it stands.", + "type": "string" + }, + { + "const": "changed", + "description": "Camel's `changed` lock: the file's length and last-modified time\nstable across two checks spaced the check interval apart.", + "type": "string" + } + ] + }, + "RuntimeCredential": { + "description": "The credential binding of one endpoint in the runtime config\n(`products/adapter/CONCEPT.md` section 10.2): Evidence's\n`SourceAuthentication` variant field for field, minus the pack-side\n`headerName` and `scheme`. The kind must match the endpoint's declared\nkind; the checks refuse a mismatch.", + "oneOf": [ + { + "additionalProperties": false, + "description": "No credential; matches a `none` endpoint.", + "properties": { + "type": { + "const": "none", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "The Basic credential pair.", + "properties": { + "passwordRef": { + "$ref": "#/$defs/SecretReference", + "description": "The password secret reference." + }, + "type": { + "const": "basic", + "type": "string" + }, + "usernameRef": { + "$ref": "#/$defs/SecretReference", + "description": "The username secret reference." + } + }, + "required": [ + "passwordRef", + "type", + "usernameRef" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "The static token, presented under the endpoint's declared `scheme`.", + "properties": { + "tokenRef": { + "$ref": "#/$defs/SecretReference", + "description": "The token secret reference." + }, + "type": { + "const": "static-authorization", + "type": "string" + } + }, + "required": [ + "tokenRef", + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "The static API key, sent in the endpoint's declared header.", + "properties": { + "type": { + "const": "static-api-key", + "type": "string" + }, + "valueRef": { + "$ref": "#/$defs/SecretReference", + "description": "The key secret reference." + } + }, + "required": [ + "type", + "valueRef" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "The client-credentials binding, Evidence's fields: the token\nendpoint, the client id, and the shared secret, all as references\nor fixed strings.", + "properties": { + "assumedLifetimeSeconds": { + "description": "Lifetime assumed when the provider omits `expires_in`.", + "format": "uint64", + "maximum": 86400, + "minimum": 1, + "type": "integer" + }, + "audience": { + "description": "Fixed `audience` form parameter.", + "type": "string" + }, + "clientIdRef": { + "$ref": "#/$defs/SecretReference", + "description": "The client id secret reference." + }, + "clientSecretRef": { + "$ref": "#/$defs/SecretReference", + "description": "The shared client secret reference." + }, + "credentialPlacement": { + "$ref": "#/$defs/CredentialPlacement", + "description": "Where the shared client secret travels." + }, + "maximumCacheSeconds": { + "description": "The token cache ceiling, Evidence's bound.", + "format": "uint64", + "maximum": 86400, + "minimum": 0, + "type": "integer" + }, + "resource": { + "description": "RFC 8707 resource indicator sent as a token-request form\nparameter.", + "type": "string" + }, + "scope": { + "description": "The token-request scope parameter.", + "type": "string" + }, + "tokenEndpoint": { + "$ref": "#/$defs/Url", + "description": "The token endpoint, a fixed destination never derived from a\nresponse; an absolute `http`/`https` URL the origin check\nconfines like any other destination." + }, + "type": { + "const": "oauth2-client-credentials", + "type": "string" + } + }, + "required": [ + "clientIdRef", + "clientSecretRef", + "credentialPlacement", + "maximumCacheSeconds", + "tokenEndpoint", + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "The private-key-jwt binding, Evidence's fields. The signed\nassertion always travels in the form body; there is no placement\nparameter.", + "properties": { + "assumedLifetimeSeconds": { + "format": "uint64", + "maximum": 86400, + "minimum": 1, + "type": "integer" + }, + "audience": { + "type": "string" + }, + "clientAssertionAudience": { + "description": "Audience claim of the signed assertion, defaulting to the\ntoken endpoint.", + "type": "string" + }, + "clientAssertionKeyRef": { + "$ref": "#/$defs/SecretReference", + "description": "The private JWK the client assertion is signed with." + }, + "clientIdRef": { + "$ref": "#/$defs/SecretReference", + "description": "The client id secret reference." + }, + "maximumCacheSeconds": { + "format": "uint64", + "maximum": 86400, + "minimum": 0, + "type": "integer" + }, + "resource": { + "type": "string" + }, + "scope": { + "type": "string" + }, + "tokenEndpoint": { + "$ref": "#/$defs/Url", + "description": "The token endpoint, a fixed destination never derived from a\nresponse; an absolute `http`/`https` URL the origin check\nconfines like any other destination." + }, + "type": { + "const": "oauth2-private-key-jwt", + "type": "string" + } + }, + "required": [ + "clientAssertionKeyRef", + "clientIdRef", + "maximumCacheSeconds", + "tokenEndpoint", + "type" + ], + "type": "object" + } + ] + }, + "SecretProvidersConfig": { + "additionalProperties": false, + "anyOf": [ + { + "properties": { + "file": { + "$ref": "#/$defs/FileSecretProviderConfig" + } + }, + "required": [ + "file" + ] + }, + { + "properties": { + "environment": { + "$ref": "#/$defs/EnvironmentSecretProviderConfig" + } + }, + "required": [ + "environment" + ] + } + ], + "description": "The secret providers a runtime enables. A reference is resolved only by a\nprovider declared here: `secret:file/name` under `file.root`, and\n`secret:env/NAME` only when `environment: {}` is present.", + "properties": { + "environment": { + "$ref": "#/$defs/EnvironmentSecretProviderConfig", + "description": "Enables `secret:env/NAME` references, read from the process\nenvironment. Declared as an empty mapping: `environment: {}`." + }, + "file": { + "$ref": "#/$defs/FileSecretProviderConfig", + "description": "Enables `secret:file/name` references, read from files under `root`." + } + }, + "type": "object" + }, + "SecretReference": { + "description": "An exact secret reference: secret:file/name, resolved under secretProviders.file.root, or secret:env/NAME, resolved only when secretProviders.environment is declared.", + "pattern": "^(?:secret:env/[A-Z][A-Z0-9_]{0,127}|secret:file/[a-z][a-z0-9._-]{0,127})$", + "type": "string" + }, + "SftpCompletion": { + "description": "Exactly one producer completion protocol. `DoneFile` requires the producer\nto remove a stale marker before replacement and publish it only after an\natomic handover. `CompletedName` requires that atomic handover directly.", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "name": { + "description": "A flat literal name or one $simple{file:name} placeholder. Remove a stale marker before replacement and publish the marker only after atomic handover.", + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "type": { + "const": "done-file", + "type": "string" + } + }, + "required": [ + "type", + "name" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "producerAtomicHandover": { + "const": true, + "description": "The producer promises that only an atomic rename publishes a completed final name.", + "type": "boolean" + }, + "type": { + "const": "completed-name", + "type": "string" + } + }, + "required": [ + "type", + "producerAtomicHandover" + ], + "type": "object" + } + ] + }, + "SftpCredential": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "passwordRef": { + "$ref": "#/$defs/SecretReference" + }, + "type": { + "const": "password", + "type": "string" + } + }, + "required": [ + "type", + "passwordRef" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "passphraseRef": { + "$ref": "#/$defs/SecretReference" + }, + "privateKeyRef": { + "$ref": "#/$defs/SecretReference" + }, + "type": { + "const": "private-key", + "type": "string" + } + }, + "required": [ + "type", + "privateKeyRef" + ], + "type": "object" + } + ] + }, + "SftpSource": { + "additionalProperties": false, + "description": "One read-only SFTP source. The dedicated account must be confined by the\nserver to `baseDirectory`; SFTP v3 client path checks are not an atomic\nfilesystem jail.", + "properties": { + "baseDirectory": { + "type": "string" + }, + "completion": { + "$ref": "#/$defs/SftpCompletion" + }, + "credential": { + "$ref": "#/$defs/SftpCredential" + }, + "host": { + "type": "string" + }, + "include": { + "description": "A bounded flat-name glob. * spans any run and ? spans one Unicode scalar; path separators and control characters are refused.", + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "maximumListingEntries": { + "format": "uint32", + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "namespace": { + "type": "string" + }, + "pinnedHostKey": { + "description": "One complete OpenSSH Ed25519 or P-256 public key; check parses and validates it without network or secret access.", + "maxLength": 16384, + "minLength": 1, + "type": "string" + }, + "port": { + "format": "uint64", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "user": { + "type": "string" + } + }, + "required": [ + "host", + "user", + "baseDirectory", + "pinnedHostKey", + "credential", + "namespace", + "completion" + ], + "type": "object" + }, + "SourceTls": { + "description": "The TLS posture of one postgres or RabbitMQ source connection.\nPlaintext is a test-build posture only and is not part of the format.", + "oneOf": [ + { + "additionalProperties": false, + "description": "The platform trust roots, TLS required, no client certificate.", + "properties": { + "type": { + "const": "system-roots", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "One private CA bundle file beside the platform roots.", + "properties": { + "caBundleFile": { + "description": "The absolute path of the PEM file holding the bundle.", + "type": "string" + }, + "type": { + "const": "ca-bundle", + "type": "string" + } + }, + "required": [ + "type", + "caBundleFile" + ], + "type": "object" + } + ] + }, + "TlsTermination": { + "description": "Declares the trusted transport boundary for a runtime's plaintext HTTP\nlistener. Production listeners require operator-controlled upstream TLS\ntermination; direct plaintext is limited to the explicit loopback-only\ndevelopment mode.", + "enum": [ + "operator-controlled-upstream", + "development-loopback" + ], + "type": "string" + }, + "TrustProfile": { + "additionalProperties": false, + "description": "One named private CA bundle: the absolute path of the process-local PEM\nfile the runtime reads.", + "properties": { + "caBundleFile": { + "description": "The absolute path of the PEM file holding the bundle's certificates.", + "type": "string" + } + }, + "required": [ + "caBundleFile" + ], + "type": "object" + }, + "Url": { + "description": "An absolute http or https URL with a host preserved as written, no user information, and no backslash, whitespace or control character. DNS case and equivalent IPv6 literals are permitted.", + "format": "uri", + "maxLength": 2048, + "pattern": "^[Hh][Tt][Tt][Pp][Ss]?://[^/?#@\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]+([/?#][^\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]*)?$", + "type": "string" + } + }, + "$id": "https://id.registrystack.org/schemas/adapter/job-runtime/job-runtime.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "description": "The ingestion job runtime configuration: shared endpoint bindings beside\njob-only sources, store, and host-owned destination bindings. It states\nnone of the facade's members (`listener`, `database`, `oidc`,\n`allowedClients`, `audit`, `idempotency`, the cursor custody).", + "properties": { + "allowedPrivateCidrs": { + "default": [], + "description": "The private ranges egress may reach. Omission is a secure empty\nallowlist for a listener-free program with no network endpoints.\nThe facade's `AdapterRuntimeConfig` retains its nonempty requirement.", + "items": { + "$ref": "#/$defs/Cidr" + }, + "type": "array", + "uniqueItems": true + }, + "apiVersion": { + "const": "id.registrystack.org/formats/adapter/job-runtime/v1alpha1", + "type": "string" + }, + "destinations": {}, + "endpoints": { + "description": "One binding per configured endpoint.", + "items": { + "$ref": "#/$defs/EndpointBinding" + }, + "type": "array" + }, + "hookIngress": { + "$ref": "#/$defs/HookIngress" + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The deployment this binding configures." + }, + "kind": { + "const": "AdapterJobRuntimeConfig", + "type": "string" + }, + "outboundTls": { + "$ref": "#/$defs/OutboundTls", + "description": "The private CAs endpoints may trust beside the system roots;\nabsent, every endpoint trusts the system roots alone." + }, + "secretProviders": { + "$ref": "#/$defs/SecretProvidersConfig" + }, + "sources": { + "$ref": "#/$defs/JobSources", + "description": "The governed-ingestion source bindings. Absent, the deployment\nbinds no job source; a pack whose source route reads one refuses\nat the job compile, never at the first read." + }, + "store": { + "$ref": "#/$defs/JobStore", + "description": "The job store: the item table's database. Read by the job host,\nnot by the job compile; absent, the document configures no job\nstore and the host refuses to run a pass." + } + }, + "required": [ + "apiVersion", + "endpoints", + "id", + "kind" + ], + "title": "Registry Adapter ingestion job runtime configuration", + "type": "object" +} diff --git a/public/artifacts/sha256/f1a66ef70359e4078ee3ae3426d378d65fbb62ab2f64545081d3d4973a8b28ad.json b/public/artifacts/sha256/f1a66ef70359e4078ee3ae3426d378d65fbb62ab2f64545081d3d4973a8b28ad.json new file mode 100644 index 000000000..cfaf9c14a --- /dev/null +++ b/public/artifacts/sha256/f1a66ef70359e4078ee3ae3426d378d65fbb62ab2f64545081d3d4973a8b28ad.json @@ -0,0 +1,487 @@ +{ + "$defs": { + "DestinationMapping": { + "additionalProperties": false, + "description": "One job-owned direct-destination mapping. Its file is resolved relative to\nthe job document, not the provider pack, so an institution can reuse the\nsame source integration without forking it for programme semantics.", + "properties": { + "digest": { + "$ref": "#/$defs/Digest", + "description": "The exact sha256 digest of the mapping source bytes." + }, + "entrypoint": { + "description": "The precompiled one-argument entrypoint the job host calls.", + "type": "string" + }, + "file": { + "description": "The clean relative path of the Rhai source beside the job document.", + "type": "string" + } + }, + "required": [ + "file", + "entrypoint", + "digest" + ], + "type": "object" + }, + "Digest": { + "description": "A SHA-256 digest: `sha256:` followed by 64 lowercase hex digits.", + "pattern": "^sha256:[0-9a-f]{64}$", + "type": "string" + }, + "DirectBregMode": { + "description": "The fixed operation form the direct destination expects metadata to\ndisclose. It never changes mode after an item refusal.", + "oneOf": [ + { + "const": "immediate", + "description": "Invoke the Action and receive its terminal receipt.", + "type": "string" + }, + { + "const": "proposal", + "description": "Start and submit one Proposal.", + "type": "string" + } + ] + }, + "JobDestination": { + "description": "The two governed-ingestion destinations. The authored job selects one;\na refusal never selects or falls back to the other.", + "oneOf": [ + { + "additionalProperties": false, + "description": "Map the projection in-process and invoke one BReg Action, either\nimmediately or through Proposal start and submit.", + "properties": { + "accessProfile": { + "description": "The caller-filtered BReg access profile selected in metadata.", + "type": "string" + }, + "action": { + "description": "The BReg Action identifier selected in metadata.", + "type": "string" + }, + "binding": { + "$ref": "#/$defs/LocalId", + "description": "The runtime destination binding id." + }, + "mapping": { + "$ref": "#/$defs/DestinationMapping", + "description": "The job-owned, digest-pinned Rhai mapping from the declared\nprojection to the operation input." + }, + "mode": { + "$ref": "#/$defs/DirectBregMode", + "description": "Whether the selected Action is expected to be immediate or a\nProposal. A metadata mismatch refuses rather than changing mode." + }, + "receiptRetentionDays": { + "description": "The deployment's expected BReg receipt retention horizon.", + "format": "uint16", + "maximum": 3650, + "minimum": 1, + "type": "integer" + }, + "type": { + "const": "direct-breg", + "type": "string" + } + }, + "required": [ + "accessProfile", + "action", + "binding", + "mapping", + "mode", + "receiptRetentionDays", + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Sign the declared projection as an event for one Coordinator workflow\ntrigger. Coordinator owns any lookup, choice, wait, or review flow.", + "properties": { + "binding": { + "$ref": "#/$defs/LocalId", + "description": "The runtime destination binding id." + }, + "dataSchema": { + "description": "The schema identifier for the projected event data.", + "type": "string" + }, + "eventType": { + "description": "The event type identifier.", + "type": "string" + }, + "revisedReceiver": { + "$ref": "#/$defs/RevisedEventReceiver", + "description": "Optional receiver for a changed item, inside the same workflow and\nruntime binding. Absent, revised items remain held." + }, + "source": { + "description": "The event source identifier.", + "type": "string" + }, + "trigger": { + "$ref": "#/$defs/LocalId", + "description": "The reviewed event trigger id inside the workflow." + }, + "type": { + "const": "signed-coordinator-event", + "type": "string" + }, + "workflow": { + "$ref": "#/$defs/LocalId", + "description": "The reviewed Coordinator workflow id." + } + }, + "required": [ + "binding", + "dataSchema", + "eventType", + "source", + "trigger", + "type", + "workflow" + ], + "type": "object" + } + ] + }, + "JobIdentity": { + "additionalProperties": false, + "description": "The job identity block: the job's own name and version, the same\nidentity shape the project carries (CFG-ENV-6).", + "properties": { + "id": { + "$ref": "#/$defs/LocalId", + "description": "The job identifier." + }, + "version": { + "description": "The job version.", + "type": "string" + } + }, + "required": [ + "id", + "version" + ], + "type": "object" + }, + "JobProfile": { + "additionalProperties": false, + "description": "The explicit, bounded profile of one job (`products/adapter/CONCEPT.md`\nsection 17.2). Every member is mandatory and checked; the engine\nenforces each bound again at the edge. The facade ceilings of section\n8.8 are unchanged: the per-attempt timeout stays at the platform-frozen\nceiling, and only a source-route-only endpoint's response bound may\nrise, to the platform cap.", + "properties": { + "maximumPageBytes": { + "description": "The largest serialized item page, in bytes (1 to 16777216).", + "format": "uint64", + "maximum": 16777216, + "minimum": 1, + "type": "integer" + }, + "maximumPageItems": { + "description": "The most items one produced page may carry (1 to 10000).", + "format": "uint32", + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "maximumResponseBytes": { + "description": "The largest response body one send of the job may take in, in\nbytes (1 to 16777216). Where an endpoint declares a tighter bound,\nthe lower of the two applies; the checks refuse a profile tighter\nthan an endpoint the source route reaches.", + "format": "uint64", + "maximum": 16777216, + "minimum": 1, + "type": "integer" + }, + "maximumUpstreamCalls": { + "description": "The job's own upstream-call budget: the largest static worst-case\nnumber of upstream calls one pass may make (1 to 1000). The checks\nrefuse a budget below the source route's worst-case call count\nunder `adapter.job.call-budget`, reusing the same walk the facade\nbinding's `maximumUpstreamCalls` stands on, so one budget shape\ncovers both modes.", + "format": "uint64", + "maximum": 1000, + "minimum": 1, + "type": "integer" + }, + "pageDeadlineMilliseconds": { + "description": "The longest one source-route run may take, in milliseconds\n(1 to 600000).", + "format": "uint64", + "maximum": 600000, + "minimum": 1, + "type": "integer" + }, + "read": { + "$ref": "#/$defs/ReadBounds", + "description": "The bounds of the reads the decoders produce. Required in effect\nwhere the source route reads a file or a PostgreSQL row, refused\nunder `adapter.job.profile-read-required` when absent there; a\nroute that reaches neither may omit it." + } + }, + "required": [ + "pageDeadlineMilliseconds", + "maximumResponseBytes", + "maximumPageItems", + "maximumPageBytes", + "maximumUpstreamCalls" + ], + "type": "object" + }, + "JobSource": { + "additionalProperties": false, + "description": "The pack and source route a job runs: the pack pinned by version and\ndigest exactly as a project pins it (CFG-ID-4), and the\n`sourceRoutes` id of the route that acquires.", + "properties": { + "pack": { + "$ref": "#/$defs/PinnedRef", + "description": "The pinned adapter pack." + }, + "route": { + "description": "The source route the job runs, a `sourceRoutes` id of the pinned\npack.", + "type": "string" + } + }, + "required": [ + "pack", + "route" + ], + "type": "object" + }, + "JobTrigger": { + "additionalProperties": false, + "description": "One trigger of the job: the declaration of when a pass starts. A\ntrigger carries no data into the pass; a hook only starts a pass,\nwhich then re-reads the source from the saved position, and a hook\nbody is never trusted or stored (`products/adapter/CONCEPT.md`\nsection 17.2).\n\nThe interval options port the scheduled polling consumer options of\nCamel's scheduler component\n(camel-4.23.0:components/camel-scheduler/src/main/docs/scheduler-component.adoc);\nthe option names and their Camel defaults are read from the shared\n`ScheduledPollEndpoint` base the scheduler endpoint extends\n(camel-4.23.0:core/camel-support/src/main/java/org/apache/camel/support/ScheduledPollEndpoint.java),\nnot invented. Recorded divergences: Camel's `delay` default is that\nfile's `DEFAULT_DELAY` of 500 milliseconds and its `initialDelay`\ndefault is `DEFAULT_INITIAL_DELAY` of 1000 milliseconds, where the\njob pins 60000 and 0; and Camel's `backoffMultiplier` field defaults\nto 0, which turns backoff off, where the job's default of 1 skips no\npass and the checks bound the value. The skip semantics (once an idle\nor error threshold is met, a multiplier of M skips M - 1 polls before\nthe next attempt) are the consumer's own\n(camel-4.23.0:core/camel-support/src/main/java/org/apache/camel/support/ScheduledPollConsumer.java#doRun).", + "properties": { + "backoffErrorThreshold": { + "description": "The consecutive failed passes that put the trigger into backoff.\nPorts `backoffErrorThreshold`\n(camel-4.23.0:core/camel-support/src/main/java/org/apache/camel/support/ScheduledPollEndpoint.java#backoffErrorThreshold,\n\"The number of subsequent error polls (failed due some error)\nthat should happen before the backoffMultipler should kick-in\").\nDefault 0, off; the checks bound the value to\n[`MAXIMUM_TRIGGER_BACKOFF_THRESHOLD`].", + "format": "uint32", + "maximum": 100, + "minimum": 0, + "type": "integer" + }, + "backoffIdleThreshold": { + "description": "The consecutive idle passes that put the trigger into backoff.\nPorts `backoffIdleThreshold`\n(camel-4.23.0:core/camel-support/src/main/java/org/apache/camel/support/ScheduledPollEndpoint.java#backoffIdleThreshold,\n\"The number of subsequent idle polls that should happen before\nthe backoffMultipler should kick-in\"). Default 0, off; the checks\nbound the value to [`MAXIMUM_TRIGGER_BACKOFF_THRESHOLD`].", + "format": "uint32", + "maximum": 100, + "minimum": 0, + "type": "integer" + }, + "backoffMultiplier": { + "description": "How many intervals the next attempt waits once an idle or error\nthreshold is met: a multiplier of M skips M - 1 passes, so the\nnext attempt lands M intervals after the last pass. Ports\n`backoffMultiplier`\n(camel-4.23.0:core/camel-support/src/main/java/org/apache/camel/support/ScheduledPollEndpoint.java#backoffMultiplier,\n\"The multiplier is then the number of polls that will be skipped\nbefore the next actual attempt is happening again\"); Camel\nrequires an idle or error threshold beside it, and its field\ndefault of 0 turns backoff off. Camel's `doRun` skips while its\nbackoff counter, counted from 1, stays below the multiplier, so it\ntoo skips M - 1 polls. The job default of 1\nskips no pass, and the checks bound the value from\n[`MINIMUM_TRIGGER_BACKOFF_MULTIPLIER`] to\n[`MAXIMUM_TRIGGER_BACKOFF_MULTIPLIER`].", + "format": "uint32", + "maximum": 10, + "minimum": 1, + "type": "integer" + }, + "binding": { + "$ref": "#/$defs/LocalId", + "description": "The operator binding supplying this hook's credentials and rate limit." + }, + "delayMilliseconds": { + "description": "The milliseconds between two interval passes, from\n[`MINIMUM_TRIGGER_DELAY_MILLISECONDS`] to\n[`MAXIMUM_TRIGGER_DELAY_MILLISECONDS`]. Ports `delay`\n(camel-4.23.0:core/camel-support/src/main/java/org/apache/camel/support/ScheduledPollEndpoint.java#delay,\n\"Milliseconds before the next poll\"; Camel's default is that\nfile's 500-millisecond `DEFAULT_DELAY`). The job default is\n[`DEFAULT_TRIGGER_DELAY_MILLISECONDS`], one minute.", + "format": "uint64", + "maximum": 86400000, + "minimum": 1000, + "type": "integer" + }, + "greedy": { + "description": "Whether a pass starts again immediately when the previous one\nread at least one item. Ports `greedy`\n(camel-4.23.0:core/camel-support/src/main/java/org/apache/camel/support/ScheduledPollEndpoint.java#greedy,\n\"If greedy is enabled, then the ScheduledPollConsumer will run\nimmediately again, if the previous run polled 1 or more\nmessages\"; the scheduler component doc\ncamel-4.23.0:components/camel-scheduler/src/main/docs/scheduler-component.adoc\nwarns that a greedy scheduler keeps firing). Default false,\nCamel's.", + "type": "boolean" + }, + "initialDelayMilliseconds": { + "description": "The milliseconds before the first interval pass starts, from 0 to\n[`MAXIMUM_TRIGGER_INITIAL_DELAY_MILLISECONDS`]. Ports\n`initialDelay`\n(camel-4.23.0:core/camel-support/src/main/java/org/apache/camel/support/ScheduledPollEndpoint.java#initialDelay,\n\"Milliseconds before the first poll starts\"; Camel's default is\nthat file's 1000-millisecond `DEFAULT_INITIAL_DELAY`). The job\ndefault of 0 starts the first pass immediately.", + "format": "uint64", + "maximum": 86400000, + "minimum": 0, + "type": "integer" + }, + "kind": { + "description": "The trigger kind, one of [`TRIGGER_KIND_VALUES`]: `interval` or\n`hook`. Mandatory in effect:\nthe checks refuse a trigger that names no kind, or a kind outside\nthe closed set, under `adapter.job.trigger-kind`.", + "enum": [ + "interval", + "hook" + ], + "type": "string" + }, + "path": { + "description": "The clean listener path that wakes a pass. The pass re-reads the\nauthoritative source; hook bodies never become source items.", + "maxLength": 256, + "pattern": "^(/([A-Za-z0-9_~-][A-Za-z0-9._~-]*|\\.[A-Za-z0-9_~-][A-Za-z0-9._~-]*|\\.\\.[A-Za-z0-9._~-]+))+$", + "type": "string" + } + }, + "required": [ + "kind" + ], + "type": "object" + }, + "LocalId": { + "description": "A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.", + "pattern": "^[a-z][a-z0-9_-]{0,63}$", + "type": "string" + }, + "PinnedRef": { + "additionalProperties": false, + "description": "A pinned reference to a profile or pack: plain identifier plus the\nversion and digest `adapterctl check` verifies (CFG-ID-4,\n`products/adapter/CONCEPT.md` section 6).", + "properties": { + "digest": { + "$ref": "#/$defs/Digest", + "description": "The digest the artifact's bytes must hash to." + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The referenced artifact's identifier." + }, + "version": { + "description": "The referenced artifact's version.", + "type": "string" + } + }, + "required": [ + "id", + "version", + "digest" + ], + "type": "object" + }, + "ProjectionDecl": { + "additionalProperties": false, + "description": "The projection of one source item the destination needs\n(`products/adapter/CONCEPT.md` sections 17.2 and 17.3): the dotted\npaths of the item `value` the destination receives, and what the\nitem row's Last digest covers.\n\nThe projection is the job's data-minimization declaration. The\nsource route shapes each item's `value` as a projection of the\ndestination's fields, not the captured source record (section 17.2),\nand the job host enforces the declared list at hand-off (section\n17.3): for each item it delivers, the pass builds an object with one\nmember per declared field, in declaration order, carrying the value\nat that path (or `null` where the path misses), and hands the\ndestination that object. A member the route shaped beyond the\ndeclared fields never leaves the job host. The item digest covers\nthe projected object, or under [`ProjectionDigestOf::Value`] the item\n`value` as the route shaped it together with the sorted declared\nfield list, so a field-list edit re-flags every item either way. The\npass also stores\n[`AdapterJob::projection_digest`] on the job's state row so status\nshows a projection edit; items re-flag only through their own item\ndigests.", + "properties": { + "digestOf": { + "$ref": "#/$defs/ProjectionDigestOf", + "description": "What the item row's Last digest covers: `projection`, the\nserialized projected fields (the default), or `value`, the item\n`value` as the source route shaped it together with the sorted\ndeclared field list. A `value` digest means an item counts as\nchanged when any part of its shaped value changed or the field\nlist changed, and the projection then names only what the\ndestination reads." + }, + "fields": { + "description": "The projected paths, each a dotted identifier path whose segments\ncarry ASCII letters, digits, underscores, and dashes, at most\n[`MAXIMUM_PROJECTION_SEGMENTS`] segments and\n[`MAXIMUM_PROJECTION_FIELD_CHARACTERS`] characters; at most\n[`MAXIMUM_PROJECTION_FIELDS`] paths and at most\n[`MAXIMUM_PROJECTION_BYTES`] bytes serialized. The checks refuse a\njob that declares no fields under\n`adapter.job.projection-shape` and any other fault of the list\nunder `adapter.job.projection-shape` or\n`adapter.job.projection-bound`.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "ProjectionDigestOf": { + "description": "What the item row's Last digest covers, the closed set the projection\nblock pins.", + "oneOf": [ + { + "const": "projection", + "description": "The serialized projected fields, the default: an item counts as\nchanged when what the destination needs changed.", + "type": "string" + }, + { + "const": "value", + "description": "The whole item `value` as the source route shaped it, members\nbeyond the declared fields included, together with the sorted\ndeclared field list: the list decides what the destination\nreceives, so editing it re-flags every item.", + "type": "string" + } + ] + }, + "ReadBounds": { + "additionalProperties": false, + "description": "The read bounds of one job profile: what one poll may take in and what\none decoded row may carry (`products/adapter/CONCEPT.md` section\n17.2). Every read has a count, byte, and deadline bound.", + "properties": { + "maximumFieldBytes": { + "description": "The largest one decoded field may take, in bytes (1 to 65536).", + "format": "uint64", + "maximum": 65536, + "minimum": 1, + "type": "integer" + }, + "maximumFileBytes": { + "description": "The largest file one read may take in, in bytes (1 to 1073741824).\nA bigger file is refused, never partially read.", + "format": "uint64", + "maximum": 1073741824, + "minimum": 1, + "type": "integer" + }, + "maximumRowBytes": { + "description": "The largest one decoded row or line may take, in bytes\n(1 to 1048576).", + "format": "uint64", + "maximum": 1048576, + "minimum": 1, + "type": "integer" + }, + "maximumRowsPerPage": { + "description": "The most decoded rows one page may carry (1 to 10000); never more\nthan the page's own `maximumPageItems`.", + "format": "uint32", + "maximum": 10000, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "maximumFileBytes", + "maximumRowBytes", + "maximumFieldBytes", + "maximumRowsPerPage" + ], + "type": "object" + }, + "RevisedEventReceiver": { + "additionalProperties": false, + "description": "The explicitly reviewed event receiver for revised source items.", + "properties": { + "dataSchema": { + "description": "The revised event data schema identifier.", + "type": "string" + }, + "eventType": { + "description": "The revised event type identifier.", + "type": "string" + }, + "trigger": { + "$ref": "#/$defs/LocalId", + "description": "The revised-item trigger inside the destination workflow." + } + }, + "required": [ + "trigger", + "eventType", + "dataSchema" + ], + "type": "object" + } + }, + "$id": "https://id.registrystack.org/schemas/adapter/job/job.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "description": "The ingestion job definition (`AdapterJob`): an identity, the pinned\npack and its source route, the item projection and the pass triggers,\nand the bounded job profile (`products/adapter/CONCEPT.md` sections\n17.1 and 17.2). The `apiVersion` and `kind` envelope members are\ncarried and validated like every other Adapter artifact's, through the\nloader's format constants [`ADAPTER_JOB_API_VERSION`] and\n[`ADAPTER_JOB_KIND`].", + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/adapter/job/v1alpha1", + "description": "The format envelope version.", + "type": "string" + }, + "destination": { + "$ref": "#/$defs/JobDestination", + "description": "The one reviewed destination this job hands every item to. Runtime\nconnection material is bound separately by `binding`." + }, + "job": { + "$ref": "#/$defs/JobIdentity", + "description": "The job's identity." + }, + "kind": { + "const": "AdapterJob", + "description": "The format kind: `AdapterJob`.", + "type": "string" + }, + "profile": { + "$ref": "#/$defs/JobProfile", + "description": "The bounded job profile." + }, + "projection": { + "$ref": "#/$defs/ProjectionDecl", + "default": {}, + "description": "The projection of each source item the destination needs; the checks\nrefuse a job that declares none, so every job's data minimization\nis explicit." + }, + "source": { + "$ref": "#/$defs/JobSource", + "description": "The pinned pack and the source route the job runs." + }, + "triggers": { + "description": "The triggers that decide when a pass starts; the checks refuse an\nempty list, so every job names at least one.", + "items": { + "$ref": "#/$defs/JobTrigger" + }, + "type": "array" + } + }, + "required": [ + "apiVersion", + "kind", + "job", + "source", + "destination", + "profile" + ], + "title": "Registry Adapter ingestion job", + "type": "object" +} diff --git a/public/artifacts/sha256/f91af7d0c873134675c27063eafcea7500210443225dd0f9e8309e1f6680f13d.json b/public/artifacts/sha256/f91af7d0c873134675c27063eafcea7500210443225dd0f9e8309e1f6680f13d.json new file mode 100644 index 000000000..e67cbc38b --- /dev/null +++ b/public/artifacts/sha256/f91af7d0c873134675c27063eafcea7500210443225dd0f9e8309e1f6680f13d.json @@ -0,0 +1,1223 @@ +{ + "$defs": { + "Acquisition": { + "additionalProperties": false, + "properties": { + "holderPresented": { + "anyOf": [ + { + "$ref": "#/$defs/HolderPresented" + }, + { + "type": "null" + } + ], + "description": "A wallet presentation Source for the selector profiles it lists. A\nrequest on one of those profiles acquires only through this Source." + }, + "source": { + "anyOf": [ + { + "$ref": "#/$defs/LocalId" + }, + { + "type": "null" + } + ], + "description": "One reviewed route owns the complete bounded provider interaction for\nthe selector profiles that `holderPresented` does not claim. Optional\nonly when `holderPresented` lists every profile the subject roles allow." + } + }, + "type": "object" + }, + "AcquisitionPosture": { + "enum": [ + "source-derived", + "field-projected", + "record-transformed" + ], + "type": "string" + }, + "ActorKind": { + "enum": [ + "human", + "agent", + "service" + ], + "type": "string" + }, + "AssertionDefinition": { + "additionalProperties": false, + "properties": { + "acquisition": { + "$ref": "#/$defs/Acquisition" + }, + "derive": { + "$ref": "#/$defs/FunctionCall" + }, + "description": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "type": "null" + } + ], + "description": "Human explanation for authors and reviewers; excluded from behavior revisions." + }, + "disclosureGuard": true, + "existenceDisclosure": { + "default": "collapse-unresolved", + "type": "string" + }, + "fixtures": { + "type": [ + "string", + "null" + ] + }, + "grantCeiling": { + "$ref": "#/$defs/GrantCeiling" + }, + "label": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "type": "null" + } + ], + "description": "Optional presentation label. Stable references use the identifier." + }, + "observationTimezone": { + "default": "UTC", + "type": "string" + }, + "outputs": { + "additionalProperties": { + "$ref": "#/$defs/Output" + }, + "maxProperties": 16, + "minProperties": 1, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "publicCheck": { + "anyOf": [ + { + "$ref": "#/$defs/PublicCheck" + }, + { + "type": "null" + } + ], + "description": "Experimental (`v1alpha1`). Declares that this definition may answer the\nunauthenticated public certificate check once a target authority\nactivates it. Declaring it grants nothing by itself." + }, + "purpose": { + "type": "string" + }, + "question": { + "$ref": "#/$defs/DisplayText" + }, + "representations": { + "items": { + "$ref": "#/$defs/Representation" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "semantics": { + "$ref": "#/$defs/Semantics" + }, + "subjectBinding": { + "$ref": "#/$defs/BindingMode" + }, + "subjects": { + "items": { + "$ref": "#/$defs/Subject" + }, + "type": "array" + }, + "validitySeconds": { + "format": "uint64", + "maximum": 31536000, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "question", + "semantics", + "purpose", + "grantCeiling", + "subjects", + "acquisition", + "derive", + "outputs", + "validitySeconds", + "subjectBinding", + "representations" + ], + "type": "object" + }, + "AuthorityKind": { + "enum": [ + "statutory", + "organizational", + "consent", + "delegated", + "explicit-request" + ], + "type": "string" + }, + "BindingMode": { + "enum": [ + "audience-scoped", + "holder-bound" + ], + "type": "string" + }, + "DeriveSelectorInput": { + "additionalProperties": false, + "properties": { + "alternatives": { + "items": { + "$ref": "#/$defs/SelectorAlternative" + }, + "maxItems": 8, + "minItems": 1, + "type": "array" + }, + "role": { + "$ref": "#/$defs/LocalId" + } + }, + "required": [ + "role", + "alternatives" + ], + "type": "object" + }, + "DisplayText": { + "description": "Human-readable display text. Bidirectional embedding, override, and isolate controls, byte-order marks, line and paragraph separators, and Unicode noncharacters are refused; multilingual joiners and direction marks remain valid.", + "not": { + "pattern": "[

‪-‮⁦-⁩﷐-﷯￾￿]|🿾|🿿|𯿾|𯿿|𿿾|𿿿|񏿾|񏿿|񟿾|񟿿|񯿾|񯿿|񿿾|񿿿|򏿾|򏿿|򟿾|򟿿|򯿾|򯿿|򿿾|򿿿|󏿾|󏿿|󟿾|󟿿|󯿾|󯿿|󿿾|󿿿|􏿾|􏿿" + }, + "type": "string" + }, + "ExternalId": { + "description": "An identifier another system issues, written exactly as its issuer gives it.", + "maxLength": 512, + "minLength": 1, + "pattern": "^[^\\u0000-\\u001F\\u007F-\\u009F]+$", + "type": "string" + }, + "Field": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "description": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "type": "null" + } + ] + }, + "label": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "type": "null" + } + ] + }, + "maximumBytes": { + "format": "uint64", + "maximum": 8192, + "minimum": 1, + "type": "integer" + }, + "minimumBytes": { + "format": "uint64", + "maximum": 8192, + "minimum": 1, + "type": "integer" + }, + "type": { + "const": "string", + "type": "string" + } + }, + "required": [ + "type", + "minimumBytes", + "maximumBytes" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "description": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "type": "null" + } + ] + }, + "label": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "type": "null" + } + ] + }, + "type": { + "const": "date", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "description": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "type": "null" + } + ] + }, + "label": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "type": "null" + } + ] + }, + "type": { + "const": "uuid", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "description": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "type": "null" + } + ] + }, + "label": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "type": "null" + } + ] + }, + "maximum": { + "format": "int64", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "minimum": { + "format": "int64", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": { + "const": "integer", + "type": "string" + } + }, + "required": [ + "type", + "minimum", + "maximum" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "description": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "type": "null" + } + ] + }, + "label": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "type": "null" + } + ] + }, + "type": { + "const": "boolean", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "codelist": { + "type": "string" + }, + "codelistVersion": { + "type": "string" + }, + "description": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "type": "null" + } + ] + }, + "label": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "type": "null" + } + ] + }, + "maximumBytes": { + "format": "uint64", + "maximum": 8192, + "minimum": 1, + "type": "integer" + }, + "type": { + "const": "controlled-code", + "type": "string" + } + }, + "required": [ + "type", + "codelist", + "codelistVersion", + "maximumBytes" + ], + "type": "object" + } + ] + }, + "Function": { + "additionalProperties": false, + "properties": { + "description": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "type": "null" + } + ], + "description": "Human explanation for authors and reviewers; excluded from behavior revisions." + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "interface": { + "$ref": "#/$defs/FunctionInterface" + }, + "label": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "type": "null" + } + ], + "description": "Optional presentation label. Stable references use the identifier." + }, + "source": { + "type": "string" + } + }, + "required": [ + "id", + "interface", + "source" + ], + "type": "object" + }, + "FunctionCall": { + "additionalProperties": false, + "properties": { + "function": { + "$ref": "#/$defs/LocalId" + }, + "parameters": { + "additionalProperties": true, + "type": "object", + "x-registry-passthrough": "Literal reviewed Function parameter bindings, checked at the named Function call site." + }, + "selectorInputs": { + "items": { + "$ref": "#/$defs/DeriveSelectorInput" + }, + "type": "array" + } + }, + "required": [ + "function" + ], + "type": "object" + }, + "FunctionInterface": { + "enum": [ + "assertion-derive/v1" + ], + "type": "string" + }, + "GrantCeiling": { + "additionalProperties": false, + "properties": { + "actorKinds": { + "items": { + "$ref": "#/$defs/ActorKind" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "audiences": { + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "authorities": { + "items": { + "$ref": "#/$defs/AuthorityKind" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "valueOrigins": { + "items": { + "$ref": "#/$defs/ValueOrigin" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "authorities", + "actorKinds", + "valueOrigins", + "audiences" + ], + "type": "object" + }, + "HolderPresented": { + "additionalProperties": false, + "properties": { + "selectorProfiles": { + "items": { + "$ref": "#/$defs/LocalId" + }, + "maxItems": 16, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "source": { + "$ref": "#/$defs/LocalId" + } + }, + "required": [ + "source", + "selectorProfiles" + ], + "type": "object" + }, + "LocalId": { + "description": "A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.", + "pattern": "^[a-z][a-z0-9_-]{0,63}$", + "type": "string" + }, + "Output": { + "additionalProperties": false, + "properties": { + "bucketScheme": { + "type": [ + "string", + "null" + ] + }, + "categoryScheme": { + "type": [ + "string", + "null" + ] + }, + "codelist": { + "type": [ + "string", + "null" + ] + }, + "codelistVersion": { + "type": [ + "string", + "null" + ] + }, + "concept": { + "type": "string" + }, + "description": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "type": "null" + } + ], + "description": "Human explanation for authors and reviewers; excluded from behavior revisions." + }, + "label": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "type": "null" + } + ], + "description": "Optional presentation label. Stable references use the identifier." + }, + "maximum": { + "anyOf": [ + { + "$ref": "#/$defs/OutputNumericBound" + }, + { + "type": "null" + } + ] + }, + "maximumBytes": { + "format": "uint64", + "maximum": 8192, + "minimum": 1, + "type": [ + "integer", + "null" + ] + }, + "maximumItems": { + "format": "uint64", + "maximum": 64, + "minimum": 1, + "type": [ + "integer", + "null" + ] + }, + "maximumScale": { + "format": "uint64", + "maximum": 9, + "minimum": 0, + "type": [ + "integer", + "null" + ] + }, + "maximumSerializedBytes": { + "format": "uint64", + "maximum": 65536, + "minimum": 1, + "type": [ + "integer", + "null" + ] + }, + "minimum": { + "anyOf": [ + { + "$ref": "#/$defs/OutputNumericBound" + }, + { + "type": "null" + } + ] + }, + "minimumBytes": { + "format": "uint64", + "maximum": 1024, + "minimum": 1, + "type": [ + "integer", + "null" + ] + }, + "minimumItems": { + "format": "uint64", + "maximum": 64, + "minimum": 1, + "type": [ + "integer", + "null" + ] + }, + "prefix": { + "type": [ + "string", + "null" + ] + }, + "schema": { + "type": [ + "string", + "null" + ] + }, + "schemeVersion": { + "type": [ + "string", + "null" + ] + }, + "sdJwtVc": { + "anyOf": [ + { + "$ref": "#/$defs/OutputProjection" + }, + { + "type": "null" + } + ] + }, + "type": { + "enum": [ + "boolean", + "controlled-code", + "controlled-category", + "bounded-identifier", + "bounded-integer", + "bounded-decimal", + "date-bucket", + "time-bucket", + "audience-scoped-entity-reference", + "controlled-code-list", + "entity-reference-list", + "reviewed-structured-value" + ], + "type": "string" + }, + "unique": { + "type": [ + "boolean", + "null" + ] + }, + "values": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "concept", + "type" + ], + "type": "object" + }, + "OutputNumericBound": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "maxLength": 30, + "minLength": 1, + "pattern": "^-?(0|[1-9][0-9]*)(\\.[0-9]*[1-9])?$", + "type": "string" + } + ] + }, + "OutputProjection": { + "additionalProperties": false, + "properties": { + "claim": { + "maxLength": 64, + "minLength": 1, + "pattern": "^[A-Za-z][A-Za-z0-9_]{0,63}$", + "type": "string" + }, + "disclosure": { + "$ref": "#/$defs/ProjectionDisclosure" + } + }, + "required": [ + "claim", + "disclosure" + ], + "type": "object" + }, + "PackReference": { + "additionalProperties": false, + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "version": { + "type": "string" + } + }, + "required": [ + "id", + "version" + ], + "type": "object" + }, + "ProjectionDisclosure": { + "enum": [ + "top-level" + ], + "type": "string" + }, + "PublicCheck": { + "additionalProperties": false, + "description": "The public certificate check's view of one assertion definition: where the\nstored check code is read from, and which two outputs form the answer. Other\noutputs of the definition stay on the relying-service path.", + "properties": { + "checkCodeFact": { + "description": "Name of a string fact of the acquiring Source holding the stored check\ncode. The code is compared and then removed; no Output can carry it.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "fieldsOutput": { + "$ref": "#/$defs/LocalId", + "description": "Output id of a reviewed structured value whose `fields` object is the\nprinted content of the answer." + }, + "statusOutput": { + "$ref": "#/$defs/LocalId", + "description": "Output id of a controlled category whose values lie within `valid`,\n`suspended`, `revoked` and `expired`." + } + }, + "required": [ + "checkCodeFact", + "statusOutput", + "fieldsOutput" + ], + "type": "object" + }, + "Representation": { + "enum": [ + "signed-jws", + "sd-jwt-vc", + "unsigned-json", + "sd-jwt-vc-batch" + ], + "type": "string" + }, + "SelectorAlternative": { + "additionalProperties": false, + "properties": { + "fields": { + "items": { + "$ref": "#/$defs/LocalId" + }, + "maxItems": 16, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "profile": { + "$ref": "#/$defs/LocalId" + } + }, + "required": [ + "profile", + "fields" + ], + "type": "object" + }, + "SelectorProfile": { + "additionalProperties": false, + "properties": { + "description": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "type": "null" + } + ], + "description": "Human explanation for authors and reviewers; excluded from behavior revisions." + }, + "fields": { + "additionalProperties": { + "$ref": "#/$defs/Field" + }, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "label": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "type": "null" + } + ], + "description": "Optional presentation label. Stable references use the identifier." + }, + "maximumAggregateBytes": { + "format": "uint64", + "maximum": 8192, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "maximumAggregateBytes", + "fields" + ], + "type": "object" + }, + "Semantics": { + "additionalProperties": false, + "properties": { + "evidenceType": { + "type": "string" + }, + "kind": { + "type": "string" + }, + "referenceFrameworks": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "requirement": { + "type": "string" + } + }, + "required": [ + "requirement", + "kind", + "evidenceType", + "referenceFrameworks" + ], + "type": "object" + }, + "Source": { + "additionalProperties": false, + "properties": { + "acquisitionPosture": { + "$ref": "#/$defs/AcquisitionPosture" + }, + "connection": { + "$ref": "#/$defs/LocalId" + }, + "description": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "type": "null" + } + ], + "description": "Human explanation for authors and reviewers; excluded from behavior revisions." + }, + "inputs": { + "additionalProperties": { + "$ref": "#/$defs/SourceInput" + }, + "propertyNames": { + "$ref": "#/$defs/ExternalId" + }, + "type": "object" + }, + "label": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "type": "null" + } + ], + "description": "Optional presentation label. Stable references use the identifier." + }, + "pack": { + "$ref": "#/$defs/PackReference" + }, + "projection": { + "anyOf": [ + { + "$ref": "#/$defs/SourceProjection" + }, + { + "type": "null" + } + ], + "description": "Optional project-owned projection of matched native facts. Acquisition\nand lookup classification remain in the reusable pack." + }, + "route": { + "$ref": "#/$defs/LocalId" + } + }, + "required": [ + "pack", + "route", + "connection", + "acquisitionPosture" + ], + "type": "object" + }, + "SourceInput": { + "additionalProperties": false, + "properties": { + "selector": { + "$ref": "#/$defs/SourceInputSelector" + } + }, + "required": [ + "selector" + ], + "type": "object" + }, + "SourceInputSelector": { + "additionalProperties": false, + "properties": { + "field": { + "$ref": "#/$defs/LocalId" + }, + "profile": { + "$ref": "#/$defs/LocalId" + }, + "role": { + "$ref": "#/$defs/LocalId" + } + }, + "required": [ + "role", + "profile", + "field" + ], + "type": "object" + }, + "SourceProjection": { + "additionalProperties": false, + "description": "A reviewed source-facts projection and its versioned output JSON Schema.", + "properties": { + "entrypoint": { + "type": "string" + }, + "schema": { + "type": "string" + }, + "source": { + "type": "string" + } + }, + "required": [ + "source", + "entrypoint", + "schema" + ], + "type": "object" + }, + "Subject": { + "additionalProperties": false, + "properties": { + "role": { + "$ref": "#/$defs/LocalId" + }, + "selectors": { + "items": { + "$ref": "#/$defs/LocalId" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "role", + "selectors" + ], + "type": "object" + }, + "ValueOrigin": { + "enum": [ + "request", + "authenticated-context", + "authenticated-grant" + ], + "type": "string" + } + }, + "$id": "https://id.registrystack.org/schemas/evidence/project/project.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/evidence/project/v1alpha1", + "type": "string" + }, + "assertionDefinitions": { + "additionalProperties": { + "$ref": "#/$defs/AssertionDefinition" + }, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "description": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "type": "null" + } + ], + "description": "Human explanation for authors and reviewers; excluded from behavior revisions." + }, + "functions": { + "items": { + "$ref": "#/$defs/Function" + }, + "type": "array" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "kind": { + "const": "EvidenceProject", + "type": "string" + }, + "label": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "type": "null" + } + ], + "description": "Optional presentation label. Stable references use the identifier." + }, + "maximumHolderBoundBatchSize": { + "description": "Maximum assertions released together in one holder-bound batch; omission means one.", + "format": "uint64", + "maximum": 16, + "minimum": 1, + "type": [ + "integer", + "null" + ] + }, + "selectorProfiles": { + "additionalProperties": { + "$ref": "#/$defs/SelectorProfile" + }, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "sources": { + "additionalProperties": { + "$ref": "#/$defs/Source" + }, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + } + }, + "required": [ + "apiVersion", + "kind", + "id", + "selectorProfiles", + "functions", + "sources", + "assertionDefinitions" + ], + "title": "Evidence project", + "type": "object" +} diff --git a/public/artifacts/sha256/fb01195c02d6b94784e17ea07f6de45f56370df8af933a2bb2142a3fd18c9146.json b/public/artifacts/sha256/fb01195c02d6b94784e17ea07f6de45f56370df8af933a2bb2142a3fd18c9146.json new file mode 100644 index 000000000..0ccb7606b --- /dev/null +++ b/public/artifacts/sha256/fb01195c02d6b94784e17ea07f6de45f56370df8af933a2bb2142a3fd18c9146.json @@ -0,0 +1,575 @@ +{ + "$defs": { + "AccessTokenAlgorithm": { + "description": "The signature algorithms an offer token may be signed with.\n\nThe same closed vocabulary Evidence accepts on its own resource-server\nprofile. Mixing families is refused when the configuration loads rather than\nwhen the first token arrives.", + "enum": [ + "EdDSA", + "ES256", + "RS256" + ], + "type": "string" + }, + "AuditDestinationKind": { + "description": "The configured audit destination kind, as written in product configuration.", + "oneOf": [ + { + "const": "file", + "description": "Durable, rotated JSON Lines file.", + "type": "string" + }, + { + "const": "stdout", + "description": "One JSON line per entry on standard output, flushed per entry.", + "type": "string" + } + ] + }, + "AuditDocument": { + "additionalProperties": false, + "description": "The process-local audit destination and keyed-pseudonym secret.", + "properties": { + "destination": { + "$ref": "#/$defs/AuditDestinationKind", + "default": "file" + }, + "hashKeyRef": { + "$ref": "#/$defs/SecretReference", + "description": "Secret reference to the audit hash key." + }, + "path": { + "pattern": "^/", + "type": "string" + }, + "retentionDays": { + "format": "uint32", + "maximum": 36500, + "minimum": 1, + "type": "integer" + }, + "rotateBytes": { + "format": "uint64", + "maximum": 4294967295, + "minimum": 1048576, + "type": "integer" + } + }, + "required": [ + "hashKeyRef" + ], + "type": "object" + }, + "ClaimNamesDocument": { + "additionalProperties": false, + "description": "The contextual claim names an offer-token issuer uses. Each is distinct,\nand none is a registered or authentication claim.", + "properties": { + "actorKind": { + "$ref": "#/$defs/ExternalId", + "default": "registry_actor_kind" + }, + "approver": { + "$ref": "#/$defs/ExternalId", + "default": "registry_approver" + }, + "grantBounds": { + "$ref": "#/$defs/ExternalId", + "default": "registry_grant_bounds" + }, + "grantClient": { + "$ref": "#/$defs/ExternalId", + "default": "registry_grant_client" + }, + "grantExp": { + "$ref": "#/$defs/ExternalId", + "default": "registry_grant_exp" + }, + "grantId": { + "$ref": "#/$defs/ExternalId", + "default": "registry_grant_id" + }, + "grantResource": { + "$ref": "#/$defs/ExternalId", + "default": "registry_grant_resource" + }, + "grantSourceIssuer": { + "$ref": "#/$defs/ExternalId", + "default": "registry_grant_source_issuer" + }, + "purpose": { + "$ref": "#/$defs/ExternalId", + "default": "registry_purpose" + } + }, + "type": "object" + }, + "Draft13ProfileDocument": { + "additionalProperties": false, + "description": "The Draft 13 compatibility profile switch. It takes no settings.", + "type": "object" + }, + "EnvironmentSecretProviderConfig": { + "additionalProperties": false, + "description": "The environment secret provider. It takes no settings.", + "type": "object" + }, + "EvidenceDocument": { + "additionalProperties": false, + "description": "The Evidence deployment this service requests credentials from.", + "properties": { + "baseUrl": { + "$ref": "#/$defs/Url", + "description": "The Evidence base URL, with no query or fragment. https in strict mode." + } + }, + "required": [ + "baseUrl" + ], + "type": "object" + }, + "ExternalId": { + "description": "An identifier another system issues, written exactly as its issuer gives it.", + "maxLength": 512, + "minLength": 1, + "pattern": "^[^\\u0000-\\u001F\\u007F-\\u009F]+$", + "type": "string" + }, + "FileSecretProviderConfig": { + "additionalProperties": false, + "description": "The file secret provider.", + "properties": { + "root": { + "description": "Absolute directory holding one file per secret. Each file must be a\nregular file owned by the runtime user, mode 0400 or 0600, with exactly\none hard link.", + "pattern": "^/", + "type": "string" + } + }, + "required": [ + "root" + ], + "type": "object" + }, + "IdentifierRestriction": { + "anyOf": [ + { + "const": "unrestricted", + "description": "Admit any value.", + "type": "string" + }, + { + "description": "Admit exactly these values.", + "items": { + "$ref": "#/$defs/ExternalId" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + ], + "description": "Which values a gate admits: the keyword `unrestricted`, or a nonempty list\nof the admitted values. An empty list is refused, because it reads as both\n\"nothing\" and \"anything\"." + }, + "ListenerBind": { + "description": "Socket address the runtime listens on, written host:port with an IP address host ([addr]:port for IPv6).", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "ListenerConfig": { + "additionalProperties": false, + "description": "The listener of a runtime that declares no TLS or exposure settings.", + "properties": { + "bind": { + "$ref": "#/$defs/ListenerBind" + } + }, + "required": [ + "bind" + ], + "type": "object" + }, + "ListenerDocument": { + "additionalProperties": false, + "description": "The listener a wallet and an adopter reach.", + "properties": { + "bind": { + "$ref": "#/$defs/ListenerBind" + }, + "maximumRequestBytes": { + "default": 16384, + "description": "The largest request body accepted, in bytes. A limit no wallet request\ncan survive leaves the service reporting itself ready while every\nrequest fails.", + "format": "uint32", + "maximum": 1048576, + "minimum": 1024, + "type": "integer" + }, + "requestTimeoutMilliseconds": { + "default": 5000, + "description": "How long one request may take, in milliseconds.", + "format": "uint64", + "maximum": 30000, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "bind" + ], + "type": "object" + }, + "OffersDocument": { + "additionalProperties": false, + "description": "The authorization boundary of the adopter-facing offer endpoint.", + "properties": { + "algorithms": { + "default": [ + "EdDSA" + ], + "description": "The one signature algorithm an offer token may be signed with.", + "items": { + "$ref": "#/$defs/AccessTokenAlgorithm" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "allowInsecureHttp": { + "default": false, + "description": "Permit plain HTTP beyond loopback to the offer-token issuer and to\n`jwksUri`.", + "type": "boolean" + }, + "allowedClients": { + "$ref": "#/$defs/IdentifierRestriction", + "description": "Client identifiers permitted to create offers, each at most 128 bytes,\nor `unrestricted` for any client the issuer vouched for." + }, + "audiences": { + "description": "The audiences this service answers to, each at most 256 bytes. A token\nissued for anything else is refused.", + "items": { + "$ref": "#/$defs/ExternalId" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "claims": { + "$ref": "#/$defs/ClaimNamesDocument", + "default": { + "actorKind": "registry_actor_kind", + "approver": "registry_approver", + "grantBounds": "registry_grant_bounds", + "grantClient": "registry_grant_client", + "grantExp": "registry_grant_exp", + "grantId": "registry_grant_id", + "grantResource": "registry_grant_resource", + "grantSourceIssuer": "registry_grant_source_issuer", + "purpose": "registry_purpose" + }, + "description": "Contextual claim names used by this offer-token issuer. Keep these\naligned with Evidence when both verify tokens from the same deployment." + }, + "issuer": { + "$ref": "#/$defs/Url", + "description": "The authorization server that issues offer tokens, compared exactly\nagainst a token's `iss`. https in strict mode." + }, + "jwksUri": { + "$ref": "#/$defs/Url", + "description": "The offer-token issuer's key set. https in strict mode." + }, + "maximumTokenLifetimeSeconds": { + "default": 900, + "description": "The longest lifetime an offer token may carry, in seconds.", + "format": "uint64", + "maximum": 3600, + "minimum": 60, + "type": "integer" + }, + "requiredScopes": { + "$ref": "#/$defs/IdentifierRestriction", + "description": "Scopes every offer token must carry, each an RFC 6749 scope token of at\nmost 256 bytes, or `unrestricted` for no scope gate. Generated\nconfigurations state `oid4vci:offer`." + } + }, + "required": [ + "issuer", + "jwksUri", + "audiences", + "allowedClients", + "requiredScopes" + ], + "type": "object" + }, + "RateLimitsDocument": { + "additionalProperties": false, + "description": "Request budgets. A request over its budget is answered 429 with a\n`Retry-After` header.", + "properties": { + "offerBurst": { + "default": 60, + "description": "The most offers one authorized principal may create in a burst.", + "format": "uint32", + "maximum": 100000, + "minimum": 1, + "type": "integer" + }, + "offersPerPrincipalPerMinute": { + "default": 600, + "description": "Offers one authorized principal may create per minute.", + "format": "uint32", + "maximum": 100000, + "minimum": 1, + "type": "integer" + }, + "walletRequestBurst": { + "default": 300, + "description": "The most requests each wallet endpoint admits in a burst.", + "format": "uint32", + "maximum": 100000, + "minimum": 1, + "type": "integer" + }, + "walletRequestsPerMinute": { + "default": 3000, + "description": "Requests per minute each of the token, nonce and credential endpoints\ntakes from all wallets together.", + "format": "uint32", + "maximum": 1000000, + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + }, + "SecretProvidersConfig": { + "additionalProperties": false, + "anyOf": [ + { + "properties": { + "file": { + "$ref": "#/$defs/FileSecretProviderConfig" + } + }, + "required": [ + "file" + ] + }, + { + "properties": { + "environment": { + "$ref": "#/$defs/EnvironmentSecretProviderConfig" + } + }, + "required": [ + "environment" + ] + } + ], + "description": "The secret providers a runtime enables. A reference is resolved only by a\nprovider declared here: `secret:file/name` under `file.root`, and\n`secret:env/NAME` only when `environment: {}` is present.", + "properties": { + "environment": { + "$ref": "#/$defs/EnvironmentSecretProviderConfig", + "description": "Enables `secret:env/NAME` references, read from the process\nenvironment. Declared as an empty mapping: `environment: {}`." + }, + "file": { + "$ref": "#/$defs/FileSecretProviderConfig", + "description": "Enables `secret:file/name` references, read from files under `root`." + } + }, + "type": "object" + }, + "SecretReference": { + "description": "An exact secret reference: secret:file/name, resolved under secretProviders.file.root, or secret:env/NAME, resolved only when secretProviders.environment is declared.", + "pattern": "^(?:secret:env/[A-Z][A-Z0-9_]{0,127}|secret:file/[a-z][a-z0-9._-]{0,127})$", + "type": "string" + }, + "StoreDocument": { + "additionalProperties": false, + "description": "The bounds of the in-memory store.", + "properties": { + "accessTokenLifetimeSeconds": { + "default": 300, + "description": "How long an access token lives, in seconds.", + "format": "uint64", + "maximum": 900, + "minimum": 60, + "type": "integer" + }, + "maximumOffers": { + "default": 4096, + "description": "How many offers the store holds. A store too small to hold a\ndeployment's live offers refuses new ones rather than forgetting old\nones.", + "format": "uint32", + "maximum": 1048576, + "minimum": 256, + "type": "integer" + }, + "maximumTransactionCodeAttempts": { + "default": 3, + "description": "How many wrong transaction codes an offer survives.", + "format": "uint32", + "maximum": 10, + "minimum": 1, + "type": "integer" + }, + "nonceLifetimeSeconds": { + "default": 120, + "description": "How long a nonce lives, in seconds; at most the access token lifetime.", + "format": "uint64", + "maximum": 900, + "minimum": 30, + "type": "integer" + }, + "offerLifetimeSeconds": { + "default": 300, + "description": "How long an offer lives, in seconds. Minutes, in both directions:\nshorter than a person can scan a code and read a message, and the flow\ncannot complete; longer, and a stolen offer stays useful.", + "format": "uint64", + "maximum": 900, + "minimum": 60, + "type": "integer" + } + }, + "type": "object" + }, + "TokenClientDocument": { + "additionalProperties": false, + "description": "The identity this service authenticates to its token issuer with.", + "properties": { + "clientAssertionAudience": { + "$ref": "#/$defs/Url", + "description": "The value the endpoint expects as the client assertion `aud`. Absent\nmeans the token endpoint, which is the usual registration." + }, + "clientId": { + "$ref": "#/$defs/ExternalId", + "description": "The client identifier registered with the token issuer, at most 128\nbytes." + }, + "privateKeyRef": { + "$ref": "#/$defs/SecretReference", + "description": "The client's own private JWK, as `secret:file/` under\n`secretProviders.file.root` or `secret:env/`. Resolved when the\noutbound client is built, never logged and never rendered." + }, + "resource": { + "$ref": "#/$defs/ExternalId", + "description": "The fixed RFC 8707 resource identifier of the Evidence API: an\nabsolute URI with no fragment or user information." + }, + "scopes": { + "description": "The exact scopes requested from the issuer for Evidence access: 1 to\n32 distinct RFC 6749 scope tokens. Absent requests no scope.", + "items": { + "$ref": "#/$defs/ExternalId" + }, + "maxItems": 32, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "tokenEndpoint": { + "$ref": "#/$defs/Url", + "description": "The token endpoint, with no query or fragment. https in strict mode." + } + }, + "required": [ + "tokenEndpoint", + "clientId", + "privateKeyRef" + ], + "type": "object" + }, + "Url": { + "description": "An absolute http or https URL with a host preserved as written, no user information, and no backslash, whitespace or control character. DNS case and equivalent IPv6 literals are permitted.", + "format": "uri", + "maxLength": 2048, + "pattern": "^[Hh][Tt][Tt][Pp][Ss]?://[^/?#@\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]+([/?#][^\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]*)?$", + "type": "string" + }, + "ValidationMode": { + "description": "The transport validation boundary selected for this process.\n\nA two-axis transport vocabulary with deliberately no third assurance\nconcept: a delivery front end that graded itself on its own scale would\ninvent a security property nothing else in the stack recognizes.", + "oneOf": [ + { + "const": "strict", + "description": "Every published and called origin uses https.", + "type": "string" + }, + { + "const": "supervised-local-development", + "description": "One supervised process group on loopback: the credential issuer is a\ncanonical `http://127.0.0.1:` origin the listener binds exactly,\nand every called origin is https or a 127.0.0.1 HTTP origin.", + "type": "string" + } + ] + } + }, + "$id": "https://id.registrystack.org/schemas/evidence/oid4vci-runtime/oid4vci-runtime.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "description": "The wallet-delivery runtime file: one deployment of the OID4VCI delivery\nfront end for Evidence credentials.", + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/evidence/oid4vci-runtime/v1alpha1", + "description": "The format version of this file.", + "type": "string" + }, + "audit": { + "$ref": "#/$defs/AuditDocument", + "description": "The required durable audit journal for offer attribution and delivery\noutcomes. `stdout` is available for a collector-managed deployment;\nonly a file destination supplies durability itself." + }, + "credentialIssuer": { + "$ref": "#/$defs/Url", + "description": "The `credential_issuer` identifier this service publishes, and the\nvalue a wallet proof must carry as its `aud`: a bare origin with no\npath, query, or fragment. https in strict mode. A trailing slash is\nremoved, so what is published and what is compared are the same bytes." + }, + "draft13Profile": { + "$ref": "#/$defs/Draft13ProfileDocument", + "description": "Serves the OpenID4VCI Draft 13 compatibility profile beside the 1.0\nFinal profile, at its own issuer identifier: the `credentialIssuer`\nfollowed by `/protocol/oid4vci/draft-13`. Written as an empty mapping,\n`draft13Profile: {}`; absent means the profile is not served and none of\nits routes exist. It shares the offer store and the offer authorization\nwith the 1.0 profile, and an offer made for one profile cannot be\nredeemed through the other." + }, + "evidence": { + "$ref": "#/$defs/EvidenceDocument", + "description": "The Evidence deployment this service requests credentials from." + }, + "kind": { + "const": "EvidenceOid4vciRuntimeConfig", + "description": "The document kind.", + "type": "string" + }, + "listener": { + "$ref": "#/$defs/ListenerDocument", + "description": "The listener a wallet and an adopter reach." + }, + "metricsListener": { + "$ref": "#/$defs/ListenerConfig", + "description": "The optional operator-only metrics listener: a loopback or private\naddress the delivery listener does not use. Absent means no metrics\nendpoint exists." + }, + "offers": { + "$ref": "#/$defs/OffersDocument", + "description": "The authorization boundary of the adopter-facing offer endpoint." + }, + "rateLimits": { + "$ref": "#/$defs/RateLimitsDocument", + "description": "Request budgets. Absent means the defaults of each member." + }, + "secretProviders": { + "$ref": "#/$defs/SecretProvidersConfig", + "description": "The secret providers `tokenClient.privateKeyRef` may name." + }, + "store": { + "$ref": "#/$defs/StoreDocument", + "default": { + "accessTokenLifetimeSeconds": 300, + "maximumOffers": 4096, + "maximumTransactionCodeAttempts": 3, + "nonceLifetimeSeconds": 120, + "offerLifetimeSeconds": 300 + }, + "description": "The bounds of the in-memory store." + }, + "tokenClient": { + "$ref": "#/$defs/TokenClientDocument", + "description": "The identity this service authenticates to its token issuer with." + }, + "validationMode": { + "$ref": "#/$defs/ValidationMode", + "default": "strict", + "description": "The transport validation boundary. Absent means strict." + } + }, + "required": [ + "apiVersion", + "kind", + "credentialIssuer", + "listener", + "secretProviders", + "audit", + "evidence", + "tokenClient", + "offers" + ], + "title": "Evidence OID4VCI delivery runtime configuration", + "type": "object" +} diff --git a/public/artifacts/sha256/ff888718d437664e4ca5095c5e58016539c58e535f512ea873a210929fd5df80.json b/public/artifacts/sha256/ff888718d437664e4ca5095c5e58016539c58e535f512ea873a210929fd5df80.json new file mode 100644 index 000000000..c11b7d7e9 --- /dev/null +++ b/public/artifacts/sha256/ff888718d437664e4ca5095c5e58016539c58e535f512ea873a210929fd5df80.json @@ -0,0 +1,617 @@ +{ + "$defs": { + "ArrivalOffering": { + "additionalProperties": false, + "description": "The arrival-window block of an offering.", + "properties": { + "horizonDays": { + "description": "How far ahead of the window's start booking is open.", + "format": "uint32", + "maximum": 3650, + "minimum": 1, + "type": "integer" + }, + "leadTimeMinutes": { + "description": "The earliest lead time a caller may book the window at.", + "format": "uint32", + "maximum": 5256000, + "minimum": 1, + "type": "integer" + }, + "window": { + "$ref": "#/$defs/LocalId", + "description": "The published window this offering serves arrivals in. An offering\nthat omits it serves every records-published window whose `offering`\nnames it, and a request picks one of those windows by its start." + } + }, + "required": [ + "leadTimeMinutes", + "horizonDays" + ], + "type": "object" + }, + "Channel": { + "description": "The authenticated channel a subquota limits.", + "enum": [ + "public", + "assisted", + "urgent", + "walk-in" + ], + "type": "string" + }, + "DisplayText": { + "description": "Human-readable display text. Bidirectional embedding, override, and isolate controls, byte-order marks, line and paragraph separators, and Unicode noncharacters are refused; multilingual joiners and direction marks remain valid.", + "not": { + "pattern": "[

‪-‮⁦-⁩﷐-﷯￾￿]|🿾|🿿|𯿾|𯿿|𿿾|𿿿|񏿾|񏿿|񟿾|񟿿|񯿾|񯿿|񿿾|񿿿|򏿾|򏿿|򟿾|򟿿|򯿾|򯿿|򿿾|򿿿|󏿾|󏿿|󟿾|󟿿|󯿾|󯿿|󿿾|󿿿|􏿾|􏿿" + }, + "type": "string" + }, + "DurationSelectionPolicy": { + "additionalProperties": false, + "description": "A bounded lattice of caller-selectable service durations.", + "properties": { + "incrementMinutes": { + "format": "uint32", + "maximum": 10080, + "minimum": 1, + "type": "integer" + }, + "maximumMinutes": { + "format": "uint32", + "maximum": 10080, + "minimum": 1, + "type": "integer" + }, + "minimumMinutes": { + "format": "uint32", + "maximum": 10080, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "minimumMinutes", + "maximumMinutes", + "incrementMinutes" + ], + "type": "object" + }, + "ExactTimeOffering": { + "additionalProperties": false, + "description": "The exact-time block of an offering: appointment length, protections, and\nthe pool that backs it.", + "properties": { + "allowResourceSelection": { + "description": "Whether a request may constrain allocation to one exact pool member.\nOmitted or false, every exact-time request uses fungible selection.", + "type": "boolean" + }, + "bufferAfterMinutes": { + "description": "Cleanup time occupied after the displayed end.", + "format": "uint32", + "maximum": 1440, + "minimum": 0, + "type": "integer" + }, + "bufferBeforeMinutes": { + "description": "Setup time occupied before the displayed start.", + "format": "uint32", + "maximum": 1440, + "minimum": 0, + "type": "integer" + }, + "durationMinutes": { + "format": "uint32", + "maximum": 10080, + "minimum": 1, + "type": "integer" + }, + "durationSelection": { + "$ref": "#/$defs/DurationSelectionPolicy", + "description": "The request-selectable duration lattice. Omitted, the offering accepts\nonly `durationMinutes`; a request that omits its duration always uses\n`durationMinutes` in either form." + }, + "horizonDays": { + "description": "How far ahead booking is open.", + "format": "uint32", + "maximum": 3650, + "minimum": 1, + "type": "integer" + }, + "leadTimeMinutes": { + "description": "The earliest lead time a caller may book at.", + "format": "uint32", + "maximum": 5256000, + "minimum": 1, + "type": "integer" + }, + "maximumRecipients": { + "description": "The largest party the offering serves.", + "format": "uint32", + "maximum": 2147483647, + "minimum": 1, + "type": "integer" + }, + "openingCoverage": { + "$ref": "#/$defs/OpeningCoverage", + "description": "The interval published openings and closures constrain. Omitted, only\nthe displayed service interval must be covered; buffers still consume\nledger capacity outside it." + }, + "partyCounts": { + "$ref": "#/$defs/PartyCountsRequirement", + "description": "Whether a request must declare human party counts. Omitted, counts are\nrequired. Only exact-time offerings may opt out for resource bookings." + }, + "pool": { + "$ref": "#/$defs/LocalId", + "description": "The pool of interchangeable members backing this offering. A pool is\nits members, never an independent counter." + }, + "startIncrementMinutes": { + "description": "The grid displayed starts must land on.", + "format": "uint32", + "maximum": 1440, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "durationMinutes", + "bufferBeforeMinutes", + "bufferAfterMinutes", + "leadTimeMinutes", + "horizonDays", + "pool", + "startIncrementMinutes", + "maximumRecipients" + ], + "type": "object" + }, + "HoldPolicy": { + "additionalProperties": false, + "description": "The hold policy every offering inherits.", + "properties": { + "because": { + "$ref": "#/$defs/DisplayText" + }, + "maximumPerCaller": { + "description": "The most live holds one caller may keep at once.", + "format": "uint32", + "maximum": 2147483647, + "minimum": 1, + "type": "integer" + }, + "ttlMinutes": { + "description": "How long a hold keeps its capacity under an explicitly authored policy.", + "format": "uint32", + "maximum": 10080, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "ttlMinutes", + "maximumPerCaller", + "because" + ], + "type": "object" + }, + "HolidaySet": { + "additionalProperties": false, + "description": "A named, revisioned set of holiday dates.", + "properties": { + "dates": { + "description": "The dates the set closes. A set that closes no date omits the member.", + "items": { + "type": "string" + }, + "maxItems": 256, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "label": { + "$ref": "#/$defs/DisplayText", + "description": "An optional human label for the set; the id names it when absent." + }, + "revision": { + "format": "uint64", + "maximum": 9223372036854775807, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "id", + "revision" + ], + "type": "object" + }, + "HookPolicy": { + "additionalProperties": false, + "description": "One observer hook: the shared Registry Stack hook declaration narrowed to\nthe closed Scheduling contract. It runs after commit, follows one of four\nappointment event triggers, delivers to a URL destination, and takes\nno condition and no proposal principal.", + "properties": { + "handler": { + "$ref": "#/$defs/ObserverHandler" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "phase": { + "$ref": "#/$defs/ObserverPhase" + }, + "projection": { + "description": "The fields of the trigger's closed projection the observer receives.\nA hook that needs none lists none.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "trigger": { + "$ref": "#/$defs/ObserverTrigger" + } + }, + "required": [ + "id", + "phase", + "trigger", + "projection", + "handler" + ], + "type": "object" + }, + "LocalId": { + "description": "A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.", + "pattern": "^[a-z][a-z0-9_-]{0,63}$", + "type": "string" + }, + "ObserverHandler": { + "description": "Where an observer hook delivers, chosen by its `type` member. Scheduling\ndelivers to a URL destination the runtime configuration binds, and to\nnothing else.", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "destinationId": { + "$ref": "#/$defs/LocalId" + }, + "type": { + "const": "url", + "type": "string" + } + }, + "required": [ + "type", + "destinationId" + ], + "type": "object" + } + ] + }, + "ObserverPhase": { + "description": "When an observer hook runs. Scheduling runs every hook after the\nappointment transaction commits, never inside its capacity transaction.", + "enum": [ + "after" + ], + "type": "string" + }, + "ObserverTrigger": { + "description": "The appointment event an observer hook follows.", + "enum": [ + "appointment.confirmed", + "appointment.rescheduled", + "appointment.cancelled", + "appointment.attendance-observed" + ], + "type": "string" + }, + "OfferingPolicy": { + "additionalProperties": false, + "description": "One bookable thing a deployment offers.", + "properties": { + "arrival": { + "$ref": "#/$defs/ArrivalOffering", + "description": "Present exactly when `mode` is `arrival-window`." + }, + "because": { + "$ref": "#/$defs/DisplayText" + }, + "cancellationCutoffMinutes": { + "description": "How late before the displayed start a booking may still be cancelled.", + "format": "uint32", + "maximum": 5256000, + "minimum": 0, + "type": "integer" + }, + "duplicateActiveKey": { + "$ref": "#/$defs/LocalId", + "description": "The caller attribute an active-booking duplicate check keys on, when\nthe service defines one. Phone numbers and email addresses are never\nvalid duplicate keys." + }, + "exactTime": { + "$ref": "#/$defs/ExactTimeOffering", + "description": "Present exactly when `mode` is `exact-time`." + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "label": { + "$ref": "#/$defs/DisplayText" + }, + "location": { + "$ref": "#/$defs/LocalId" + }, + "mode": { + "$ref": "#/$defs/SchedulingMode" + }, + "prerequisites": { + "description": "Prerequisite references a requesting party must hold. An offering\nwith no prerequisite omits the member.", + "items": { + "type": "string" + }, + "maxItems": 256, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "reminders": { + "description": "Authored reminder offsets for this offering. The runtime mints one\nrevision-bound intent per offset whose due time is still ahead when\nthe appointment commits; message transport stays external (INT-02).\nAn offering with no reminders omits the member or lists none.", + "items": { + "$ref": "#/$defs/ReminderOffsetPolicy" + }, + "maxItems": 256, + "type": "array" + }, + "requiresCapabilities": { + "description": "Capabilities every backing member must have for this offering. An\noffering that requires none omits the member.", + "items": { + "$ref": "#/$defs/LocalId" + }, + "maxItems": 256, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "service": { + "$ref": "#/$defs/LocalId" + } + }, + "required": [ + "id", + "service", + "label", + "mode", + "location", + "because", + "cancellationCutoffMinutes" + ], + "type": "object" + }, + "OpeningCoverage": { + "description": "Which interval must stay inside published openings and outside closures.\nBuffers always occupy ledger capacity regardless of this choice.", + "oneOf": [ + { + "const": "service-interval", + "description": "Published openings constrain the caller-visible service interval.", + "type": "string" + }, + { + "const": "occupied-interval", + "description": "Published openings constrain service plus setup and cleanup buffers.", + "type": "string" + } + ] + }, + "OpeningPatternPolicy": { + "additionalProperties": false, + "description": "A bounded weekly opening pattern over local wall-clock time. The timezone\ncomes from the location record the pattern references.", + "properties": { + "because": { + "$ref": "#/$defs/DisplayText" + }, + "effectiveFrom": { + "type": "string" + }, + "effectiveUntil": { + "type": "string" + }, + "endTime": { + "type": "string" + }, + "holidaySet": { + "$ref": "#/$defs/LocalId" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "location": { + "$ref": "#/$defs/LocalId" + }, + "startTime": { + "type": "string" + }, + "weekdays": { + "items": { + "$ref": "#/$defs/PolicyWeekday" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "id", + "location", + "holidaySet", + "weekdays", + "startTime", + "endTime", + "effectiveFrom", + "effectiveUntil", + "because" + ], + "type": "object" + }, + "PartyCountsRequirement": { + "description": "Whether an exact-time offering requires declared human party counts.\nArrival-window offerings always require them because recipient counts drive\ntheir capacity units.", + "enum": [ + "required", + "optional" + ], + "type": "string" + }, + "PolicyWeekday": { + "description": "One weekday of an opening pattern.", + "enum": [ + "mon", + "tue", + "wed", + "thu", + "fri", + "sat", + "sun" + ], + "type": "string" + }, + "ProjectIdentity": { + "additionalProperties": false, + "description": "The members that name a project (CFG-ENV-6): a project's `project` block\nholds these, and may add project-wide members of the product's own.\nSchema name `ProjectIdentity`.", + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "version": { + "type": "string" + } + }, + "required": [ + "id", + "version" + ], + "type": "object" + }, + "ReminderOffsetPolicy": { + "additionalProperties": false, + "description": "One authored reminder offset: a notification intent becomes due this many\nminutes before the displayed start of an appointment on the offering.", + "properties": { + "because": { + "$ref": "#/$defs/DisplayText" + }, + "offsetMinutes": { + "format": "uint32", + "maximum": 5256000, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "offsetMinutes", + "because" + ], + "type": "object" + }, + "SchedulingMode": { + "description": "How an offering delivers its service.", + "enum": [ + "exact-time", + "arrival-window" + ], + "type": "string" + }, + "ServicePolicy": { + "additionalProperties": false, + "description": "A service a deployment schedules.", + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "label": { + "$ref": "#/$defs/DisplayText" + } + }, + "required": [ + "id", + "label" + ], + "type": "object" + } + }, + "$id": "https://id.registrystack.org/schemas/scheduling/project/project.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "description": "The authored scheduling project, `scheduling.yaml`.", + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/scheduling/project/v1alpha1", + "type": "string" + }, + "channels": { + "description": "The channels this deployment serves. The vocabulary is closed by the\n`Channel` type itself; the declaration narrows it to the served\nsubset, every subquota must draw on a declared channel, and a request\nnaming anything else is refused. The set is required and holds at\nleast one channel: a deployment that names none serves none.", + "items": { + "$ref": "#/$defs/Channel" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "holdPolicy": { + "$ref": "#/$defs/HoldPolicy" + }, + "holidaySets": { + "items": { + "$ref": "#/$defs/HolidaySet" + }, + "maxItems": 256, + "minItems": 1, + "type": "array" + }, + "hooks": { + "description": "Observer hooks. A project with none omits the member.", + "items": { + "$ref": "#/$defs/HookPolicy" + }, + "maxItems": 256, + "type": "array" + }, + "kind": { + "const": "SchedulingProject", + "type": "string" + }, + "offerings": { + "items": { + "$ref": "#/$defs/OfferingPolicy" + }, + "maxItems": 256, + "minItems": 1, + "type": "array" + }, + "openings": { + "items": { + "$ref": "#/$defs/OpeningPatternPolicy" + }, + "maxItems": 256, + "minItems": 1, + "type": "array" + }, + "project": { + "$ref": "#/$defs/ProjectIdentity" + }, + "services": { + "items": { + "$ref": "#/$defs/ServicePolicy" + }, + "maxItems": 256, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "apiVersion", + "kind", + "project", + "services", + "offerings", + "holidaySets", + "openings", + "channels", + "holdPolicy" + ], + "title": "Registry Scheduling project", + "type": "object" +} diff --git a/public/contexts/index.json b/public/contexts/index.json index 779249992..0352b9c50 100644 --- a/public/contexts/index.json +++ b/public/contexts/index.json @@ -11,7 +11,7 @@ "source": "src/artifacts/sha256/c336506f4dcd7e266155e8cd1ff9710766bc240f395e27b0480b2e193e74e2ee.jsonld", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "products/registry-record/profile/registry-record-v1.md", "sha256": "c8685157d8e2982b00657a2a3b2fe729cf54792d76134cf22aa1be1cc7abf4a8" }, diff --git a/public/index.html b/public/index.html index 9228df5fb..f0771275e 100644 --- a/public/index.html +++ b/public/index.html @@ -44,7 +44,7 @@

Catalogs

Problem types

-

434 identifiers

+

451 identifiers

RFC 9457 problem type URIs with a stable code for programmatic branching.

Schemas

-

142 identifiers

+

147 identifiers

JSON Schema documents, published at their canonical URI.

diff --git a/public/namespaces/index.json b/public/namespaces/index.json index a3169c072..19f04d575 100644 --- a/public/namespaces/index.json +++ b/public/namespaces/index.json @@ -10,7 +10,7 @@ "owner": "registry-manifest", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-manifest-core/src/lib.rs", "sha256": "707b3d0306d9eab8e4f8148310482ceff7912368c50b147931dceafe54dadc74" }, diff --git a/public/ns/registry-manifest/v1.json b/public/ns/registry-manifest/v1.json index b777675cb..cb4898858 100644 --- a/public/ns/registry-manifest/v1.json +++ b/public/ns/registry-manifest/v1.json @@ -8,7 +8,7 @@ "owner": "registry-manifest", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-manifest-core/src/lib.rs", "sha256": "707b3d0306d9eab8e4f8148310482ceff7912368c50b147931dceafe54dadc74" }, diff --git a/public/ns/registry-manifest/v1/index.html b/public/ns/registry-manifest/v1/index.html index 0b7f05112..6cb551bad 100644 --- a/public/ns/registry-manifest/v1/index.html +++ b/public/ns/registry-manifest/v1/index.html @@ -71,7 +71,7 @@

Identifier record

"owner": "registry-manifest", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-manifest-core/src/lib.rs", "sha256": "707b3d0306d9eab8e4f8148310482ceff7912368c50b147931dceafe54dadc74" }, diff --git a/public/problems/index.html b/public/problems/index.html index 1d0eebf64..12623de7d 100644 --- a/public/problems/index.html +++ b/public/problems/index.html @@ -40,7 +40,7 @@

Problems

This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior.

-

434 published identifiers

+

451 published identifiers

@@ -205,6 +205,23 @@

434 published identifiers

+ + + + + + + + + + + + + + + + + diff --git a/public/problems/index.json b/public/problems/index.json index 344ec3cf1..d796aa89f 100644 --- a/public/problems/index.json +++ b/public/problems/index.json @@ -39,7 +39,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -83,7 +83,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -127,7 +127,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -171,7 +171,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -215,7 +215,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -303,7 +303,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -347,7 +347,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -391,7 +391,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -435,7 +435,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -479,7 +479,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -523,7 +523,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -567,7 +567,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -611,7 +611,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -655,7 +655,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -699,7 +699,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -743,7 +743,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -787,7 +787,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -831,7 +831,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -875,7 +875,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -919,7 +919,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -963,7 +963,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -1007,7 +1007,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -1095,7 +1095,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -1139,7 +1139,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -1183,7 +1183,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -1227,7 +1227,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -1271,7 +1271,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -1315,7 +1315,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -1359,7 +1359,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -1403,7 +1403,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -1447,7 +1447,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -1491,7 +1491,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -1535,7 +1535,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -1579,7 +1579,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -1623,7 +1623,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -1667,7 +1667,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -1711,7 +1711,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -1755,7 +1755,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -1799,7 +1799,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -1843,7 +1843,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -1887,7 +1887,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -1931,7 +1931,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -1975,7 +1975,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -2019,7 +2019,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -2063,7 +2063,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -2107,7 +2107,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -2151,7 +2151,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -2195,7 +2195,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -2239,7 +2239,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -2283,7 +2283,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -2327,7 +2327,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -2371,7 +2371,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -2415,7 +2415,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -2459,7 +2459,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -2591,7 +2591,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -2635,7 +2635,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -2679,7 +2679,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -2723,7 +2723,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -2767,7 +2767,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -2811,7 +2811,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -2855,7 +2855,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -2899,7 +2899,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -2943,7 +2943,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -2987,7 +2987,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -3031,7 +3031,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -3075,7 +3075,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -3119,7 +3119,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -3163,7 +3163,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -3207,7 +3207,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -3427,7 +3427,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -3471,7 +3471,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -3867,9 +3867,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -3911,9 +3911,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -3955,9 +3955,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -3999,9 +3999,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -4043,9 +4043,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -4087,9 +4087,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -4131,9 +4131,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -4175,9 +4175,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -4219,9 +4219,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -4263,9 +4263,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -4307,9 +4307,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -4351,9 +4351,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -4395,9 +4395,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -4439,9 +4439,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -4483,9 +4483,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -4527,9 +4527,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -4571,9 +4571,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -4615,9 +4615,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -4659,9 +4659,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -4703,9 +4703,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -4747,9 +4747,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -4791,9 +4791,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -4835,9 +4835,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -4879,9 +4879,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -4923,9 +4923,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -4967,9 +4967,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -5011,9 +5011,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -5055,9 +5055,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -5099,9 +5099,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -5143,9 +5143,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -5187,9 +5187,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -5231,9 +5231,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -5275,9 +5275,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -5319,9 +5319,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -5363,9 +5363,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -5407,9 +5407,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -5451,9 +5451,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -5495,9 +5495,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -5539,9 +5539,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -5583,9 +5583,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -5627,9 +5627,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -5671,9 +5671,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -5715,9 +5715,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -5759,9 +5759,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -5803,9 +5803,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -5847,9 +5847,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -5891,7 +5891,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-discovery/src/problem.rs", "sha256": "cd37f4a483c9d29c5ed4cbffa11756ef78207d9df1e6e62b7f93de36a30b43e3" } @@ -5935,7 +5935,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-discovery/src/problem.rs", "sha256": "cd37f4a483c9d29c5ed4cbffa11756ef78207d9df1e6e62b7f93de36a30b43e3" } @@ -5979,7 +5979,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-discovery/src/problem.rs", "sha256": "cd37f4a483c9d29c5ed4cbffa11756ef78207d9df1e6e62b7f93de36a30b43e3" } @@ -6023,7 +6023,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-discovery/src/problem.rs", "sha256": "cd37f4a483c9d29c5ed4cbffa11756ef78207d9df1e6e62b7f93de36a30b43e3" } @@ -6067,7 +6067,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -6111,7 +6111,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -6155,7 +6155,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -6199,7 +6199,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -6243,7 +6243,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -6287,7 +6287,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -6331,7 +6331,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -6375,7 +6375,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -6419,7 +6419,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -6463,7 +6463,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -6507,7 +6507,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -6551,7 +6551,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -6595,7 +6595,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -6639,7 +6639,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -6683,7 +6683,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -6727,7 +6727,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -6771,7 +6771,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -6815,7 +6815,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -6859,7 +6859,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -6903,7 +6903,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -6947,7 +6947,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -6991,7 +6991,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -7035,7 +7035,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -7079,11 +7079,759 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } }, + { + "id": "https://id.registrystack.org/problems/registry-evidence-oid4vp/audit-unavailable", + "type": "https://id.registrystack.org/problems/registry-evidence-oid4vp/audit-unavailable", + "kind": "problem", + "lifecycle_status": "active", + "compatibility_line": "v1alpha1", + "product": "registry-evidence-oid4vp", + "code": "audit-unavailable", + "title": "Service Unavailable", + "summary": "The audit destination did not accept the operation. Try again after the service recovers.", + "description": "The audit destination did not accept the operation. Try again after the service recovers.", + "category": null, + "http_statuses": [ + 503 + ], + "guidance": { + "status": "not_published", + "retryable": null, + "caller_action": null, + "operator_action": null, + "note": "No per-identifier remediation guidance is published in this resolver record." + }, + "documented_by": [ + { + "title": "Error and status code reference", + "href": "https://docs.registrystack.org/reference/errors/" + } + ], + "authority": { + "scope": "identifier metadata", + "statement": "This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior. For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic." + }, + "identifier_policy": { + "stability": "stable", + "programmatic_key": "code", + "parsing": "Do not parse semantics from the URL path." + }, + "source_reference": { + "repository": "registry-stack", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + } + }, + { + "id": "https://id.registrystack.org/problems/registry-evidence-oid4vp/body-too-large", + "type": "https://id.registrystack.org/problems/registry-evidence-oid4vp/body-too-large", + "kind": "problem", + "lifecycle_status": "active", + "compatibility_line": "v1alpha1", + "product": "registry-evidence-oid4vp", + "code": "body-too-large", + "title": "Payload Too Large", + "summary": "The request body exceeds the accepted size.", + "description": "The request body exceeds the accepted size.", + "category": null, + "http_statuses": [ + 413 + ], + "guidance": { + "status": "not_published", + "retryable": null, + "caller_action": null, + "operator_action": null, + "note": "No per-identifier remediation guidance is published in this resolver record." + }, + "documented_by": [ + { + "title": "Error and status code reference", + "href": "https://docs.registrystack.org/reference/errors/" + } + ], + "authority": { + "scope": "identifier metadata", + "statement": "This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior. For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic." + }, + "identifier_policy": { + "stability": "stable", + "programmatic_key": "code", + "parsing": "Do not parse semantics from the URL path." + }, + "source_reference": { + "repository": "registry-stack", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + } + }, + { + "id": "https://id.registrystack.org/problems/registry-evidence-oid4vp/capacity", + "type": "https://id.registrystack.org/problems/registry-evidence-oid4vp/capacity", + "kind": "problem", + "lifecycle_status": "active", + "compatibility_line": "v1alpha1", + "product": "registry-evidence-oid4vp", + "code": "capacity", + "title": "Service Unavailable", + "summary": "The service is at capacity or holds as many sessions as it allows. Retry after the interval given.", + "description": "The service is at capacity or holds as many sessions as it allows. Retry after the interval given.", + "category": null, + "http_statuses": [ + 503 + ], + "guidance": { + "status": "not_published", + "retryable": null, + "caller_action": null, + "operator_action": null, + "note": "No per-identifier remediation guidance is published in this resolver record." + }, + "documented_by": [ + { + "title": "Error and status code reference", + "href": "https://docs.registrystack.org/reference/errors/" + } + ], + "authority": { + "scope": "identifier metadata", + "statement": "This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior. For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic." + }, + "identifier_policy": { + "stability": "stable", + "programmatic_key": "code", + "parsing": "Do not parse semantics from the URL path." + }, + "source_reference": { + "repository": "registry-stack", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + } + }, + { + "id": "https://id.registrystack.org/problems/registry-evidence-oid4vp/internal-error", + "type": "https://id.registrystack.org/problems/registry-evidence-oid4vp/internal-error", + "kind": "problem", + "lifecycle_status": "active", + "compatibility_line": "v1alpha1", + "product": "registry-evidence-oid4vp", + "code": "internal-error", + "title": "Internal Server Error", + "summary": "The request could not be completed.", + "description": "The request could not be completed.", + "category": null, + "http_statuses": [ + 500 + ], + "guidance": { + "status": "not_published", + "retryable": null, + "caller_action": null, + "operator_action": null, + "note": "No per-identifier remediation guidance is published in this resolver record." + }, + "documented_by": [ + { + "title": "Error and status code reference", + "href": "https://docs.registrystack.org/reference/errors/" + } + ], + "authority": { + "scope": "identifier metadata", + "statement": "This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior. For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic." + }, + "identifier_policy": { + "stability": "stable", + "programmatic_key": "code", + "parsing": "Do not parse semantics from the URL path." + }, + "source_reference": { + "repository": "registry-stack", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + } + }, + { + "id": "https://id.registrystack.org/problems/registry-evidence-oid4vp/invalid-request", + "type": "https://id.registrystack.org/problems/registry-evidence-oid4vp/invalid-request", + "kind": "problem", + "lifecycle_status": "active", + "compatibility_line": "v1alpha1", + "product": "registry-evidence-oid4vp", + "code": "invalid-request", + "title": "Invalid Request", + "summary": "The request body is malformed or does not have the required members.", + "description": "The request body is malformed or does not have the required members.", + "category": null, + "http_statuses": [ + 400 + ], + "guidance": { + "status": "not_published", + "retryable": null, + "caller_action": null, + "operator_action": null, + "note": "No per-identifier remediation guidance is published in this resolver record." + }, + "documented_by": [ + { + "title": "Error and status code reference", + "href": "https://docs.registrystack.org/reference/errors/" + } + ], + "authority": { + "scope": "identifier metadata", + "statement": "This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior. For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic." + }, + "identifier_policy": { + "stability": "stable", + "programmatic_key": "code", + "parsing": "Do not parse semantics from the URL path." + }, + "source_reference": { + "repository": "registry-stack", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + } + }, + { + "id": "https://id.registrystack.org/problems/registry-evidence-oid4vp/issuer-unavailable", + "type": "https://id.registrystack.org/problems/registry-evidence-oid4vp/issuer-unavailable", + "kind": "problem", + "lifecycle_status": "active", + "compatibility_line": "v1alpha1", + "product": "registry-evidence-oid4vp", + "code": "issuer-unavailable", + "title": "Service Unavailable", + "summary": "The token issuer is unavailable. Retry after the interval given.", + "description": "The token issuer is unavailable. Retry after the interval given.", + "category": null, + "http_statuses": [ + 503 + ], + "guidance": { + "status": "not_published", + "retryable": null, + "caller_action": null, + "operator_action": null, + "note": "No per-identifier remediation guidance is published in this resolver record." + }, + "documented_by": [ + { + "title": "Error and status code reference", + "href": "https://docs.registrystack.org/reference/errors/" + } + ], + "authority": { + "scope": "identifier metadata", + "statement": "This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior. For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic." + }, + "identifier_policy": { + "stability": "stable", + "programmatic_key": "code", + "parsing": "Do not parse semantics from the URL path." + }, + "source_reference": { + "repository": "registry-stack", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + } + }, + { + "id": "https://id.registrystack.org/problems/registry-evidence-oid4vp/method-not-allowed", + "type": "https://id.registrystack.org/problems/registry-evidence-oid4vp/method-not-allowed", + "kind": "problem", + "lifecycle_status": "active", + "compatibility_line": "v1alpha1", + "product": "registry-evidence-oid4vp", + "code": "method-not-allowed", + "title": "Method Not Allowed", + "summary": "The route exists but not for this method.", + "description": "The route exists but not for this method.", + "category": null, + "http_statuses": [ + 405 + ], + "guidance": { + "status": "not_published", + "retryable": null, + "caller_action": null, + "operator_action": null, + "note": "No per-identifier remediation guidance is published in this resolver record." + }, + "documented_by": [ + { + "title": "Error and status code reference", + "href": "https://docs.registrystack.org/reference/errors/" + } + ], + "authority": { + "scope": "identifier metadata", + "statement": "This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior. For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic." + }, + "identifier_policy": { + "stability": "stable", + "programmatic_key": "code", + "parsing": "Do not parse semantics from the URL path." + }, + "source_reference": { + "repository": "registry-stack", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + } + }, + { + "id": "https://id.registrystack.org/problems/registry-evidence-oid4vp/not-found", + "type": "https://id.registrystack.org/problems/registry-evidence-oid4vp/not-found", + "kind": "problem", + "lifecycle_status": "active", + "compatibility_line": "v1alpha1", + "product": "registry-evidence-oid4vp", + "code": "not-found", + "title": "Not Found", + "summary": "The requested route does not exist.", + "description": "The requested route does not exist.", + "category": null, + "http_statuses": [ + 404 + ], + "guidance": { + "status": "not_published", + "retryable": null, + "caller_action": null, + "operator_action": null, + "note": "No per-identifier remediation guidance is published in this resolver record." + }, + "documented_by": [ + { + "title": "Error and status code reference", + "href": "https://docs.registrystack.org/reference/errors/" + } + ], + "authority": { + "scope": "identifier metadata", + "statement": "This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior. For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic." + }, + "identifier_policy": { + "stability": "stable", + "programmatic_key": "code", + "parsing": "Do not parse semantics from the URL path." + }, + "source_reference": { + "repository": "registry-stack", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + } + }, + { + "id": "https://id.registrystack.org/problems/registry-evidence-oid4vp/not-yet-presented", + "type": "https://id.registrystack.org/problems/registry-evidence-oid4vp/not-yet-presented", + "kind": "problem", + "lifecycle_status": "active", + "compatibility_line": "v1alpha1", + "product": "registry-evidence-oid4vp", + "code": "not-yet-presented", + "title": "Not Yet Presented", + "summary": "The wallet has not presented yet.", + "description": "The wallet has not presented yet.", + "category": null, + "http_statuses": [ + 409 + ], + "guidance": { + "status": "not_published", + "retryable": null, + "caller_action": null, + "operator_action": null, + "note": "No per-identifier remediation guidance is published in this resolver record." + }, + "documented_by": [ + { + "title": "Error and status code reference", + "href": "https://docs.registrystack.org/reference/errors/" + } + ], + "authority": { + "scope": "identifier metadata", + "statement": "This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior. For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic." + }, + "identifier_policy": { + "stability": "stable", + "programmatic_key": "code", + "parsing": "Do not parse semantics from the URL path." + }, + "source_reference": { + "repository": "registry-stack", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + } + }, + { + "id": "https://id.registrystack.org/problems/registry-evidence-oid4vp/rate-limited", + "type": "https://id.registrystack.org/problems/registry-evidence-oid4vp/rate-limited", + "kind": "problem", + "lifecycle_status": "active", + "compatibility_line": "v1alpha1", + "product": "registry-evidence-oid4vp", + "code": "rate-limited", + "title": "Too Many Requests", + "summary": "Too many requests. Retry after the interval given.", + "description": "Too many requests. Retry after the interval given.", + "category": null, + "http_statuses": [ + 429 + ], + "guidance": { + "status": "not_published", + "retryable": null, + "caller_action": null, + "operator_action": null, + "note": "No per-identifier remediation guidance is published in this resolver record." + }, + "documented_by": [ + { + "title": "Error and status code reference", + "href": "https://docs.registrystack.org/reference/errors/" + } + ], + "authority": { + "scope": "identifier metadata", + "statement": "This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior. For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic." + }, + "identifier_policy": { + "stability": "stable", + "programmatic_key": "code", + "parsing": "Do not parse semantics from the URL path." + }, + "source_reference": { + "repository": "registry-stack", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + } + }, + { + "id": "https://id.registrystack.org/problems/registry-evidence-oid4vp/request-not-found", + "type": "https://id.registrystack.org/problems/registry-evidence-oid4vp/request-not-found", + "kind": "problem", + "lifecycle_status": "active", + "compatibility_line": "v1alpha1", + "product": "registry-evidence-oid4vp", + "code": "request-not-found", + "title": "Not Found", + "summary": "The request object is unknown, expired, or no longer pending.", + "description": "The request object is unknown, expired, or no longer pending.", + "category": null, + "http_statuses": [ + 404 + ], + "guidance": { + "status": "not_published", + "retryable": null, + "caller_action": null, + "operator_action": null, + "note": "No per-identifier remediation guidance is published in this resolver record." + }, + "documented_by": [ + { + "title": "Error and status code reference", + "href": "https://docs.registrystack.org/reference/errors/" + } + ], + "authority": { + "scope": "identifier metadata", + "statement": "This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior. For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic." + }, + "identifier_policy": { + "stability": "stable", + "programmatic_key": "code", + "parsing": "Do not parse semantics from the URL path." + }, + "source_reference": { + "repository": "registry-stack", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + } + }, + { + "id": "https://id.registrystack.org/problems/registry-evidence-oid4vp/request-timeout", + "type": "https://id.registrystack.org/problems/registry-evidence-oid4vp/request-timeout", + "kind": "problem", + "lifecycle_status": "active", + "compatibility_line": "v1alpha1", + "product": "registry-evidence-oid4vp", + "code": "request-timeout", + "title": "Request Timeout", + "summary": "The request took longer than the service waits.", + "description": "The request took longer than the service waits.", + "category": null, + "http_statuses": [ + 408 + ], + "guidance": { + "status": "not_published", + "retryable": null, + "caller_action": null, + "operator_action": null, + "note": "No per-identifier remediation guidance is published in this resolver record." + }, + "documented_by": [ + { + "title": "Error and status code reference", + "href": "https://docs.registrystack.org/reference/errors/" + } + ], + "authority": { + "scope": "identifier metadata", + "statement": "This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior. For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic." + }, + "identifier_policy": { + "stability": "stable", + "programmatic_key": "code", + "parsing": "Do not parse semantics from the URL path." + }, + "source_reference": { + "repository": "registry-stack", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + } + }, + { + "id": "https://id.registrystack.org/problems/registry-evidence-oid4vp/session-not-found", + "type": "https://id.registrystack.org/problems/registry-evidence-oid4vp/session-not-found", + "kind": "problem", + "lifecycle_status": "active", + "compatibility_line": "v1alpha1", + "product": "registry-evidence-oid4vp", + "code": "session-not-found", + "title": "Not Found", + "summary": "The session is unknown, expired, already read, or created by another principal.", + "description": "The session is unknown, expired, already read, or created by another principal.", + "category": null, + "http_statuses": [ + 404 + ], + "guidance": { + "status": "not_published", + "retryable": null, + "caller_action": null, + "operator_action": null, + "note": "No per-identifier remediation guidance is published in this resolver record." + }, + "documented_by": [ + { + "title": "Error and status code reference", + "href": "https://docs.registrystack.org/reference/errors/" + } + ], + "authority": { + "scope": "identifier metadata", + "statement": "This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior. For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic." + }, + "identifier_policy": { + "stability": "stable", + "programmatic_key": "code", + "parsing": "Do not parse semantics from the URL path." + }, + "source_reference": { + "repository": "registry-stack", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + } + }, + { + "id": "https://id.registrystack.org/problems/registry-evidence-oid4vp/unauthorized", + "type": "https://id.registrystack.org/problems/registry-evidence-oid4vp/unauthorized", + "kind": "problem", + "lifecycle_status": "active", + "compatibility_line": "v1alpha1", + "product": "registry-evidence-oid4vp", + "code": "unauthorized", + "title": "Unauthorized", + "summary": "A valid bearer token is required.", + "description": "A valid bearer token is required.", + "category": null, + "http_statuses": [ + 401 + ], + "guidance": { + "status": "not_published", + "retryable": null, + "caller_action": null, + "operator_action": null, + "note": "No per-identifier remediation guidance is published in this resolver record." + }, + "documented_by": [ + { + "title": "Error and status code reference", + "href": "https://docs.registrystack.org/reference/errors/" + } + ], + "authority": { + "scope": "identifier metadata", + "statement": "This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior. For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic." + }, + "identifier_policy": { + "stability": "stable", + "programmatic_key": "code", + "parsing": "Do not parse semantics from the URL path." + }, + "source_reference": { + "repository": "registry-stack", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + } + }, + { + "id": "https://id.registrystack.org/problems/registry-evidence-oid4vp/unknown-policy", + "type": "https://id.registrystack.org/problems/registry-evidence-oid4vp/unknown-policy", + "kind": "problem", + "lifecycle_status": "active", + "compatibility_line": "v1alpha1", + "product": "registry-evidence-oid4vp", + "code": "unknown-policy", + "title": "Unknown Policy", + "summary": "No presentation policy has the identifier given.", + "description": "No presentation policy has the identifier given.", + "category": null, + "http_statuses": [ + 422 + ], + "guidance": { + "status": "not_published", + "retryable": null, + "caller_action": null, + "operator_action": null, + "note": "No per-identifier remediation guidance is published in this resolver record." + }, + "documented_by": [ + { + "title": "Error and status code reference", + "href": "https://docs.registrystack.org/reference/errors/" + } + ], + "authority": { + "scope": "identifier metadata", + "statement": "This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior. For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic." + }, + "identifier_policy": { + "stability": "stable", + "programmatic_key": "code", + "parsing": "Do not parse semantics from the URL path." + }, + "source_reference": { + "repository": "registry-stack", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + } + }, + { + "id": "https://id.registrystack.org/problems/registry-evidence-oid4vp/unsupported-media-type", + "type": "https://id.registrystack.org/problems/registry-evidence-oid4vp/unsupported-media-type", + "kind": "problem", + "lifecycle_status": "active", + "compatibility_line": "v1alpha1", + "product": "registry-evidence-oid4vp", + "code": "unsupported-media-type", + "title": "Unsupported Media Type", + "summary": "The request body is not application/json.", + "description": "The request body is not application/json.", + "category": null, + "http_statuses": [ + 415 + ], + "guidance": { + "status": "not_published", + "retryable": null, + "caller_action": null, + "operator_action": null, + "note": "No per-identifier remediation guidance is published in this resolver record." + }, + "documented_by": [ + { + "title": "Error and status code reference", + "href": "https://docs.registrystack.org/reference/errors/" + } + ], + "authority": { + "scope": "identifier metadata", + "statement": "This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior. For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic." + }, + "identifier_policy": { + "stability": "stable", + "programmatic_key": "code", + "parsing": "Do not parse semantics from the URL path." + }, + "source_reference": { + "repository": "registry-stack", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + } + }, + { + "id": "https://id.registrystack.org/problems/registry-evidence-oid4vp/wallet-error", + "type": "https://id.registrystack.org/problems/registry-evidence-oid4vp/wallet-error", + "kind": "problem", + "lifecycle_status": "active", + "compatibility_line": "v1alpha1", + "product": "registry-evidence-oid4vp", + "code": "wallet-error", + "title": "Wallet Error", + "summary": "The wallet reported an error instead of presenting. The closed category names it.", + "description": "The wallet reported an error instead of presenting. The closed category names it.", + "category": null, + "http_statuses": [ + 422 + ], + "guidance": { + "status": "not_published", + "retryable": null, + "caller_action": null, + "operator_action": null, + "note": "No per-identifier remediation guidance is published in this resolver record." + }, + "documented_by": [ + { + "title": "Error and status code reference", + "href": "https://docs.registrystack.org/reference/errors/" + } + ], + "authority": { + "scope": "identifier metadata", + "statement": "This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior. For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic." + }, + "identifier_policy": { + "stability": "stable", + "programmatic_key": "code", + "parsing": "Do not parse semantics from the URL path." + }, + "source_reference": { + "repository": "registry-stack", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + } + }, { "id": "https://id.registrystack.org/problems/registry-evidence/auth/invalid_credential", "type": "https://id.registrystack.org/problems/registry-evidence/auth/invalid_credential", @@ -7167,7 +7915,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-evidence/src/problem.rs", "sha256": "09e2898f19ebef1f3bf4699280261a4c7549b05eb9f8d30dba60ab2973bc06f9" } @@ -7211,7 +7959,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-evidence/src/problem.rs", "sha256": "09e2898f19ebef1f3bf4699280261a4c7549b05eb9f8d30dba60ab2973bc06f9" } @@ -7299,7 +8047,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-evidence/src/problem.rs", "sha256": "09e2898f19ebef1f3bf4699280261a4c7549b05eb9f8d30dba60ab2973bc06f9" } @@ -7387,7 +8135,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-evidence/src/problem.rs", "sha256": "09e2898f19ebef1f3bf4699280261a4c7549b05eb9f8d30dba60ab2973bc06f9" } @@ -7431,7 +8179,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-evidence/src/problem.rs", "sha256": "09e2898f19ebef1f3bf4699280261a4c7549b05eb9f8d30dba60ab2973bc06f9" } @@ -7475,7 +8223,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-evidence/src/problem.rs", "sha256": "09e2898f19ebef1f3bf4699280261a4c7549b05eb9f8d30dba60ab2973bc06f9" } @@ -7563,7 +8311,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-evidence/src/problem.rs", "sha256": "09e2898f19ebef1f3bf4699280261a4c7549b05eb9f8d30dba60ab2973bc06f9" } @@ -7651,7 +8399,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-evidence/src/problem.rs", "sha256": "09e2898f19ebef1f3bf4699280261a4c7549b05eb9f8d30dba60ab2973bc06f9" } @@ -7695,7 +8443,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-evidence/src/problem.rs", "sha256": "09e2898f19ebef1f3bf4699280261a4c7549b05eb9f8d30dba60ab2973bc06f9" } @@ -7739,7 +8487,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-evidence/src/problem.rs", "sha256": "09e2898f19ebef1f3bf4699280261a4c7549b05eb9f8d30dba60ab2973bc06f9" } @@ -7783,7 +8531,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -7827,7 +8575,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -7871,7 +8619,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -7915,7 +8663,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -7959,7 +8707,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -8003,7 +8751,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -8047,7 +8795,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -8091,7 +8839,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -8135,7 +8883,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -8179,7 +8927,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -8223,7 +8971,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -8267,7 +9015,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -8311,7 +9059,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -8355,7 +9103,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -8399,7 +9147,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -8443,7 +9191,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -8487,7 +9235,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -8531,7 +9279,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -8575,7 +9323,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -8619,7 +9367,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -8663,7 +9411,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -8707,7 +9455,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -8751,7 +9499,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -8795,7 +9543,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -8839,7 +9587,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -8883,7 +9631,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -8927,7 +9675,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -18516,7 +19264,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -18560,7 +19308,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -18604,7 +19352,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -18648,7 +19396,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -18692,7 +19440,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -18736,7 +19484,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -18780,7 +19528,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -18824,7 +19572,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -18868,7 +19616,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -18912,7 +19660,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -18956,7 +19704,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -19000,7 +19748,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -19044,7 +19792,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -19088,7 +19836,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -19132,7 +19880,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -19176,7 +19924,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -19220,7 +19968,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -19264,7 +20012,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -19308,7 +20056,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -19352,7 +20100,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -19396,7 +20144,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -19440,7 +20188,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -19484,7 +20232,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -19528,7 +20276,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -19572,7 +20320,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -19616,7 +20364,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -19660,7 +20408,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -19704,7 +20452,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -19748,7 +20496,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -19792,7 +20540,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -19836,7 +20584,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -19880,7 +20628,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -19924,7 +20672,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-breg/action/evidence_failed.json b/public/problems/registry-breg/action/evidence_failed.json index 9ef00bb3a..a9f1ad69c 100644 --- a/public/problems/registry-breg/action/evidence_failed.json +++ b/public/problems/registry-breg/action/evidence_failed.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/action/evidence_failed/index.html b/public/problems/registry-breg/action/evidence_failed/index.html index 1ab8aae3a..3a864dd4b 100644 --- a/public/problems/registry-breg/action/evidence_failed/index.html +++ b/public/problems/registry-breg/action/evidence_failed/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/action/guard_failed.json b/public/problems/registry-breg/action/guard_failed.json index e29ab2d61..298a637d7 100644 --- a/public/problems/registry-breg/action/guard_failed.json +++ b/public/problems/registry-breg/action/guard_failed.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/action/guard_failed/index.html b/public/problems/registry-breg/action/guard_failed/index.html index 9846ea062..b055a41f5 100644 --- a/public/problems/registry-breg/action/guard_failed/index.html +++ b/public/problems/registry-breg/action/guard_failed/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/action/handler_failed.json b/public/problems/registry-breg/action/handler_failed.json index 93f676f77..cf5f1598a 100644 --- a/public/problems/registry-breg/action/handler_failed.json +++ b/public/problems/registry-breg/action/handler_failed.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/action/handler_failed/index.html b/public/problems/registry-breg/action/handler_failed/index.html index 917b4130c..730a4cffa 100644 --- a/public/problems/registry-breg/action/handler_failed/index.html +++ b/public/problems/registry-breg/action/handler_failed/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/action/refused.json b/public/problems/registry-breg/action/refused.json index 5d0ba026c..2ab81a373 100644 --- a/public/problems/registry-breg/action/refused.json +++ b/public/problems/registry-breg/action/refused.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/action/refused/index.html b/public/problems/registry-breg/action/refused/index.html index 22a88bc6d..f9ff33e60 100644 --- a/public/problems/registry-breg/action/refused/index.html +++ b/public/problems/registry-breg/action/refused/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/authentication/refused.json b/public/problems/registry-breg/authentication/refused.json index c774ab326..17ae9bfb9 100644 --- a/public/problems/registry-breg/authentication/refused.json +++ b/public/problems/registry-breg/authentication/refused.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/authentication/refused/index.html b/public/problems/registry-breg/authentication/refused/index.html index 8d8848f7a..31e050924 100644 --- a/public/problems/registry-breg/authentication/refused/index.html +++ b/public/problems/registry-breg/authentication/refused/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/idempotency/expired.json b/public/problems/registry-breg/idempotency/expired.json index 6f4e35a7e..c4d0a59c6 100644 --- a/public/problems/registry-breg/idempotency/expired.json +++ b/public/problems/registry-breg/idempotency/expired.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/idempotency/expired/index.html b/public/problems/registry-breg/idempotency/expired/index.html index 5c14a5891..563ed42d9 100644 --- a/public/problems/registry-breg/idempotency/expired/index.html +++ b/public/problems/registry-breg/idempotency/expired/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/idempotency/key-reused.json b/public/problems/registry-breg/idempotency/key-reused.json index ba9941339..ee0efce46 100644 --- a/public/problems/registry-breg/idempotency/key-reused.json +++ b/public/problems/registry-breg/idempotency/key-reused.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/idempotency/key-reused/index.html b/public/problems/registry-breg/idempotency/key-reused/index.html index aca0bd7b8..5cf722500 100644 --- a/public/problems/registry-breg/idempotency/key-reused/index.html +++ b/public/problems/registry-breg/idempotency/key-reused/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/ingestion/chunk_mismatch.json b/public/problems/registry-breg/ingestion/chunk_mismatch.json index 5c122d78e..e7c1d8c91 100644 --- a/public/problems/registry-breg/ingestion/chunk_mismatch.json +++ b/public/problems/registry-breg/ingestion/chunk_mismatch.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/ingestion/chunk_mismatch/index.html b/public/problems/registry-breg/ingestion/chunk_mismatch/index.html index d0e2d19f5..0a1be6b7a 100644 --- a/public/problems/registry-breg/ingestion/chunk_mismatch/index.html +++ b/public/problems/registry-breg/ingestion/chunk_mismatch/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/ingestion/profile_mismatch.json b/public/problems/registry-breg/ingestion/profile_mismatch.json index 7525d12a9..3c514d901 100644 --- a/public/problems/registry-breg/ingestion/profile_mismatch.json +++ b/public/problems/registry-breg/ingestion/profile_mismatch.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/ingestion/profile_mismatch/index.html b/public/problems/registry-breg/ingestion/profile_mismatch/index.html index a9d1ee4c5..4f44aa6d3 100644 --- a/public/problems/registry-breg/ingestion/profile_mismatch/index.html +++ b/public/problems/registry-breg/ingestion/profile_mismatch/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/ingestion/receipt_erased.json b/public/problems/registry-breg/ingestion/receipt_erased.json index 758a99a8c..d9f7c196b 100644 --- a/public/problems/registry-breg/ingestion/receipt_erased.json +++ b/public/problems/registry-breg/ingestion/receipt_erased.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/ingestion/receipt_erased/index.html b/public/problems/registry-breg/ingestion/receipt_erased/index.html index 0678f35d4..4cbb87ecd 100644 --- a/public/problems/registry-breg/ingestion/receipt_erased/index.html +++ b/public/problems/registry-breg/ingestion/receipt_erased/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/ingestion/run_blocked.json b/public/problems/registry-breg/ingestion/run_blocked.json index 133789d0d..4163652f3 100644 --- a/public/problems/registry-breg/ingestion/run_blocked.json +++ b/public/problems/registry-breg/ingestion/run_blocked.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/ingestion/run_blocked/index.html b/public/problems/registry-breg/ingestion/run_blocked/index.html index 6ee59d324..774e7a6ad 100644 --- a/public/problems/registry-breg/ingestion/run_blocked/index.html +++ b/public/problems/registry-breg/ingestion/run_blocked/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/ingestion/run_not_open.json b/public/problems/registry-breg/ingestion/run_not_open.json index 293620c01..ec3f93042 100644 --- a/public/problems/registry-breg/ingestion/run_not_open.json +++ b/public/problems/registry-breg/ingestion/run_not_open.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/ingestion/run_not_open/index.html b/public/problems/registry-breg/ingestion/run_not_open/index.html index 17d57a45e..7d77d55a6 100644 --- a/public/problems/registry-breg/ingestion/run_not_open/index.html +++ b/public/problems/registry-breg/ingestion/run_not_open/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/lookup/unresolved.json b/public/problems/registry-breg/lookup/unresolved.json index 569e22815..41da35688 100644 --- a/public/problems/registry-breg/lookup/unresolved.json +++ b/public/problems/registry-breg/lookup/unresolved.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/lookup/unresolved/index.html b/public/problems/registry-breg/lookup/unresolved/index.html index 30d7f49c5..dd9181c2d 100644 --- a/public/problems/registry-breg/lookup/unresolved/index.html +++ b/public/problems/registry-breg/lookup/unresolved/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/mutation/conflict.json b/public/problems/registry-breg/mutation/conflict.json index 6471eb827..766afd087 100644 --- a/public/problems/registry-breg/mutation/conflict.json +++ b/public/problems/registry-breg/mutation/conflict.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/mutation/conflict/index.html b/public/problems/registry-breg/mutation/conflict/index.html index 81bef36dc..cac898736 100644 --- a/public/problems/registry-breg/mutation/conflict/index.html +++ b/public/problems/registry-breg/mutation/conflict/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/precondition/failed.json b/public/problems/registry-breg/precondition/failed.json index e6dbc0be4..a880367ca 100644 --- a/public/problems/registry-breg/precondition/failed.json +++ b/public/problems/registry-breg/precondition/failed.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/precondition/failed/index.html b/public/problems/registry-breg/precondition/failed/index.html index 662ad1062..b0f4329db 100644 --- a/public/problems/registry-breg/precondition/failed/index.html +++ b/public/problems/registry-breg/precondition/failed/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/precondition/required.json b/public/problems/registry-breg/precondition/required.json index 776896092..0df73db9c 100644 --- a/public/problems/registry-breg/precondition/required.json +++ b/public/problems/registry-breg/precondition/required.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/precondition/required/index.html b/public/problems/registry-breg/precondition/required/index.html index 0c053ad33..7ad016704 100644 --- a/public/problems/registry-breg/precondition/required/index.html +++ b/public/problems/registry-breg/precondition/required/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/proposal/rejected.json b/public/problems/registry-breg/proposal/rejected.json index 88efc3ab1..be86d91fc 100644 --- a/public/problems/registry-breg/proposal/rejected.json +++ b/public/problems/registry-breg/proposal/rejected.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/proposal/rejected/index.html b/public/problems/registry-breg/proposal/rejected/index.html index d7d9a485b..bbb59f303 100644 --- a/public/problems/registry-breg/proposal/rejected/index.html +++ b/public/problems/registry-breg/proposal/rejected/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/proposal/review_result_mismatch.json b/public/problems/registry-breg/proposal/review_result_mismatch.json index e58234b9d..e23a0f099 100644 --- a/public/problems/registry-breg/proposal/review_result_mismatch.json +++ b/public/problems/registry-breg/proposal/review_result_mismatch.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/proposal/review_result_mismatch/index.html b/public/problems/registry-breg/proposal/review_result_mismatch/index.html index c7312109f..c36a9b1f1 100644 --- a/public/problems/registry-breg/proposal/review_result_mismatch/index.html +++ b/public/problems/registry-breg/proposal/review_result_mismatch/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/proposal/submission_expired.json b/public/problems/registry-breg/proposal/submission_expired.json index 3fe545443..26d7b274f 100644 --- a/public/problems/registry-breg/proposal/submission_expired.json +++ b/public/problems/registry-breg/proposal/submission_expired.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/proposal/submission_expired/index.html b/public/problems/registry-breg/proposal/submission_expired/index.html index 0b229bcd2..a949aea5a 100644 --- a/public/problems/registry-breg/proposal/submission_expired/index.html +++ b/public/problems/registry-breg/proposal/submission_expired/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/query/cursor_invalid.json b/public/problems/registry-breg/query/cursor_invalid.json index 40894f6ac..88b75ebbd 100644 --- a/public/problems/registry-breg/query/cursor_invalid.json +++ b/public/problems/registry-breg/query/cursor_invalid.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/query/cursor_invalid/index.html b/public/problems/registry-breg/query/cursor_invalid/index.html index d0cb363de..7758c66d0 100644 --- a/public/problems/registry-breg/query/cursor_invalid/index.html +++ b/public/problems/registry-breg/query/cursor_invalid/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/query/invalid.json b/public/problems/registry-breg/query/invalid.json index 8ea363e66..12af0607d 100644 --- a/public/problems/registry-breg/query/invalid.json +++ b/public/problems/registry-breg/query/invalid.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/query/invalid/index.html b/public/problems/registry-breg/query/invalid/index.html index 1229b3ce0..9ec76882a 100644 --- a/public/problems/registry-breg/query/invalid/index.html +++ b/public/problems/registry-breg/query/invalid/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/request/invalid.json b/public/problems/registry-breg/request/invalid.json index 687fea7f7..588d2cac6 100644 --- a/public/problems/registry-breg/request/invalid.json +++ b/public/problems/registry-breg/request/invalid.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/request/invalid/index.html b/public/problems/registry-breg/request/invalid/index.html index 825cd078a..e4cb8e357 100644 --- a/public/problems/registry-breg/request/invalid/index.html +++ b/public/problems/registry-breg/request/invalid/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/request/timeout.json b/public/problems/registry-breg/request/timeout.json index 8096adba2..44cbe0790 100644 --- a/public/problems/registry-breg/request/timeout.json +++ b/public/problems/registry-breg/request/timeout.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/request/timeout/index.html b/public/problems/registry-breg/request/timeout/index.html index c9c9c2ed4..17310b8b6 100644 --- a/public/problems/registry-breg/request/timeout/index.html +++ b/public/problems/registry-breg/request/timeout/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/resource/not_found.json b/public/problems/registry-breg/resource/not_found.json index c827154d0..ced1f98b2 100644 --- a/public/problems/registry-breg/resource/not_found.json +++ b/public/problems/registry-breg/resource/not_found.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/resource/not_found/index.html b/public/problems/registry-breg/resource/not_found/index.html index edad5aa5e..57ef4f3c8 100644 --- a/public/problems/registry-breg/resource/not_found/index.html +++ b/public/problems/registry-breg/resource/not_found/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/runtime/field_encryption/unavailable.json b/public/problems/registry-breg/runtime/field_encryption/unavailable.json index d33a8b4db..ba9d4f7ec 100644 --- a/public/problems/registry-breg/runtime/field_encryption/unavailable.json +++ b/public/problems/registry-breg/runtime/field_encryption/unavailable.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/runtime/field_encryption/unavailable/index.html b/public/problems/registry-breg/runtime/field_encryption/unavailable/index.html index 0b8e82a0c..687418198 100644 --- a/public/problems/registry-breg/runtime/field_encryption/unavailable/index.html +++ b/public/problems/registry-breg/runtime/field_encryption/unavailable/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/runtime/not_ready.json b/public/problems/registry-breg/runtime/not_ready.json index 59e9cc54b..16ea8d5ce 100644 --- a/public/problems/registry-breg/runtime/not_ready.json +++ b/public/problems/registry-breg/runtime/not_ready.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/runtime/not_ready/index.html b/public/problems/registry-breg/runtime/not_ready/index.html index d2f694fb0..3a0339f79 100644 --- a/public/problems/registry-breg/runtime/not_ready/index.html +++ b/public/problems/registry-breg/runtime/not_ready/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/service/unavailable.json b/public/problems/registry-breg/service/unavailable.json index e7d5ef37d..16143a2db 100644 --- a/public/problems/registry-breg/service/unavailable.json +++ b/public/problems/registry-breg/service/unavailable.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/service/unavailable/index.html b/public/problems/registry-breg/service/unavailable/index.html index d774b7b48..3c8bb9b84 100644 --- a/public/problems/registry-breg/service/unavailable/index.html +++ b/public/problems/registry-breg/service/unavailable/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/source/unavailable.json b/public/problems/registry-breg/source/unavailable.json index 4402b71f9..8bfe1217d 100644 --- a/public/problems/registry-breg/source/unavailable.json +++ b/public/problems/registry-breg/source/unavailable.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/source/unavailable/index.html b/public/problems/registry-breg/source/unavailable/index.html index 1a5f85f79..059d50364 100644 --- a/public/problems/registry-breg/source/unavailable/index.html +++ b/public/problems/registry-breg/source/unavailable/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/statistical_dataset/domain_violation.json b/public/problems/registry-breg/statistical_dataset/domain_violation.json index 91a4ff33a..01c27d638 100644 --- a/public/problems/registry-breg/statistical_dataset/domain_violation.json +++ b/public/problems/registry-breg/statistical_dataset/domain_violation.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/statistical_dataset/domain_violation/index.html b/public/problems/registry-breg/statistical_dataset/domain_violation/index.html index e7dac27a6..60193ba13 100644 --- a/public/problems/registry-breg/statistical_dataset/domain_violation/index.html +++ b/public/problems/registry-breg/statistical_dataset/domain_violation/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/statistical_dataset/release_refused.json b/public/problems/registry-breg/statistical_dataset/release_refused.json index 22c5e86dd..5b7325a42 100644 --- a/public/problems/registry-breg/statistical_dataset/release_refused.json +++ b/public/problems/registry-breg/statistical_dataset/release_refused.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/statistical_dataset/release_refused/index.html b/public/problems/registry-breg/statistical_dataset/release_refused/index.html index 0781b3d18..d1051ddfa 100644 --- a/public/problems/registry-breg/statistical_dataset/release_refused/index.html +++ b/public/problems/registry-breg/statistical_dataset/release_refused/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/statistical_dataset/version_conflict.json b/public/problems/registry-breg/statistical_dataset/version_conflict.json index def42ebac..a48c7222b 100644 --- a/public/problems/registry-breg/statistical_dataset/version_conflict.json +++ b/public/problems/registry-breg/statistical_dataset/version_conflict.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/statistical_dataset/version_conflict/index.html b/public/problems/registry-breg/statistical_dataset/version_conflict/index.html index 0d5dbe0ec..04d585bf7 100644 --- a/public/problems/registry-breg/statistical_dataset/version_conflict/index.html +++ b/public/problems/registry-breg/statistical_dataset/version_conflict/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/statistical_dataset/version_withdrawn.json b/public/problems/registry-breg/statistical_dataset/version_withdrawn.json index 4ded389dd..f12207db9 100644 --- a/public/problems/registry-breg/statistical_dataset/version_withdrawn.json +++ b/public/problems/registry-breg/statistical_dataset/version_withdrawn.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/statistical_dataset/version_withdrawn/index.html b/public/problems/registry-breg/statistical_dataset/version_withdrawn/index.html index 65ef17043..145a487bd 100644 --- a/public/problems/registry-breg/statistical_dataset/version_withdrawn/index.html +++ b/public/problems/registry-breg/statistical_dataset/version_withdrawn/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/unsupported/media_type.json b/public/problems/registry-breg/unsupported/media_type.json index 6a063b737..241ae9072 100644 --- a/public/problems/registry-breg/unsupported/media_type.json +++ b/public/problems/registry-breg/unsupported/media_type.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/unsupported/media_type/index.html b/public/problems/registry-breg/unsupported/media_type/index.html index beb8eb02e..98c1f7492 100644 --- a/public/problems/registry-breg/unsupported/media_type/index.html +++ b/public/problems/registry-breg/unsupported/media_type/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/write/outside-boundary.json b/public/problems/registry-breg/write/outside-boundary.json index 0d9f7940a..80729c289 100644 --- a/public/problems/registry-breg/write/outside-boundary.json +++ b/public/problems/registry-breg/write/outside-boundary.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-breg/write/outside-boundary/index.html b/public/problems/registry-breg/write/outside-boundary/index.html index 9b74fed08..ee14bdfe7 100644 --- a/public/problems/registry-breg/write/outside-boundary/index.html +++ b/public/problems/registry-breg/write/outside-boundary/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } diff --git a/public/problems/registry-casework/absence/cover-cycle.json b/public/problems/registry-casework/absence/cover-cycle.json index 0f5e7cba6..ba86a4cfe 100644 --- a/public/problems/registry-casework/absence/cover-cycle.json +++ b/public/problems/registry-casework/absence/cover-cycle.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/absence/cover-cycle/index.html b/public/problems/registry-casework/absence/cover-cycle/index.html index 33bfaaa43..3ee564a3d 100644 --- a/public/problems/registry-casework/absence/cover-cycle/index.html +++ b/public/problems/registry-casework/absence/cover-cycle/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/absence/invalid-period.json b/public/problems/registry-casework/absence/invalid-period.json index c82b98c11..8c8fd96ae 100644 --- a/public/problems/registry-casework/absence/invalid-period.json +++ b/public/problems/registry-casework/absence/invalid-period.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/absence/invalid-period/index.html b/public/problems/registry-casework/absence/invalid-period/index.html index e0744d93c..978f7ffea 100644 --- a/public/problems/registry-casework/absence/invalid-period/index.html +++ b/public/problems/registry-casework/absence/invalid-period/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/absence/overlap.json b/public/problems/registry-casework/absence/overlap.json index d4fd9783b..fd8744738 100644 --- a/public/problems/registry-casework/absence/overlap.json +++ b/public/problems/registry-casework/absence/overlap.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/absence/overlap/index.html b/public/problems/registry-casework/absence/overlap/index.html index 1140e23be..d4d2e337b 100644 --- a/public/problems/registry-casework/absence/overlap/index.html +++ b/public/problems/registry-casework/absence/overlap/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/absence/self-cover.json b/public/problems/registry-casework/absence/self-cover.json index e17cdfcf6..ea097d4d3 100644 --- a/public/problems/registry-casework/absence/self-cover.json +++ b/public/problems/registry-casework/absence/self-cover.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/absence/self-cover/index.html b/public/problems/registry-casework/absence/self-cover/index.html index 47e5a3bc9..5238fc074 100644 --- a/public/problems/registry-casework/absence/self-cover/index.html +++ b/public/problems/registry-casework/absence/self-cover/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/authentication/refused.json b/public/problems/registry-casework/authentication/refused.json index e7e56008a..da53046fd 100644 --- a/public/problems/registry-casework/authentication/refused.json +++ b/public/problems/registry-casework/authentication/refused.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/authentication/refused/index.html b/public/problems/registry-casework/authentication/refused/index.html index e3aeb2b0a..95b4b039e 100644 --- a/public/problems/registry-casework/authentication/refused/index.html +++ b/public/problems/registry-casework/authentication/refused/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/clock/recompute-preview-expired.json b/public/problems/registry-casework/clock/recompute-preview-expired.json index 32bfed1d8..02835df26 100644 --- a/public/problems/registry-casework/clock/recompute-preview-expired.json +++ b/public/problems/registry-casework/clock/recompute-preview-expired.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/clock/recompute-preview-expired/index.html b/public/problems/registry-casework/clock/recompute-preview-expired/index.html index a1a73fe84..4ccdcdafc 100644 --- a/public/problems/registry-casework/clock/recompute-preview-expired/index.html +++ b/public/problems/registry-casework/clock/recompute-preview-expired/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/cursor/expired.json b/public/problems/registry-casework/cursor/expired.json index 1a1dae3a2..34d86636f 100644 --- a/public/problems/registry-casework/cursor/expired.json +++ b/public/problems/registry-casework/cursor/expired.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/cursor/expired/index.html b/public/problems/registry-casework/cursor/expired/index.html index 4dd9e5ee9..5f43028fa 100644 --- a/public/problems/registry-casework/cursor/expired/index.html +++ b/public/problems/registry-casework/cursor/expired/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/cursor/invalid.json b/public/problems/registry-casework/cursor/invalid.json index ed08afb68..6d47d0d4d 100644 --- a/public/problems/registry-casework/cursor/invalid.json +++ b/public/problems/registry-casework/cursor/invalid.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/cursor/invalid/index.html b/public/problems/registry-casework/cursor/invalid/index.html index 6266827db..a0b853e16 100644 --- a/public/problems/registry-casework/cursor/invalid/index.html +++ b/public/problems/registry-casework/cursor/invalid/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/idempotency/expired.json b/public/problems/registry-casework/idempotency/expired.json index a51f36ea7..04a587607 100644 --- a/public/problems/registry-casework/idempotency/expired.json +++ b/public/problems/registry-casework/idempotency/expired.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/idempotency/expired/index.html b/public/problems/registry-casework/idempotency/expired/index.html index c934cee24..bab7f2cac 100644 --- a/public/problems/registry-casework/idempotency/expired/index.html +++ b/public/problems/registry-casework/idempotency/expired/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/idempotency/key-reused.json b/public/problems/registry-casework/idempotency/key-reused.json index 7d35ee035..d12267942 100644 --- a/public/problems/registry-casework/idempotency/key-reused.json +++ b/public/problems/registry-casework/idempotency/key-reused.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/idempotency/key-reused/index.html b/public/problems/registry-casework/idempotency/key-reused/index.html index d809579cb..3a0e5bcdd 100644 --- a/public/problems/registry-casework/idempotency/key-reused/index.html +++ b/public/problems/registry-casework/idempotency/key-reused/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/operation/not-authorized.json b/public/problems/registry-casework/operation/not-authorized.json index 3dc34c383..e7321b855 100644 --- a/public/problems/registry-casework/operation/not-authorized.json +++ b/public/problems/registry-casework/operation/not-authorized.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/operation/not-authorized/index.html b/public/problems/registry-casework/operation/not-authorized/index.html index 77858b324..e3adb6dbf 100644 --- a/public/problems/registry-casework/operation/not-authorized/index.html +++ b/public/problems/registry-casework/operation/not-authorized/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/precondition/failed.json b/public/problems/registry-casework/precondition/failed.json index e97e118f5..a6317df79 100644 --- a/public/problems/registry-casework/precondition/failed.json +++ b/public/problems/registry-casework/precondition/failed.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/precondition/failed/index.html b/public/problems/registry-casework/precondition/failed/index.html index c9b03cb9a..90173d171 100644 --- a/public/problems/registry-casework/precondition/failed/index.html +++ b/public/problems/registry-casework/precondition/failed/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/precondition/required.json b/public/problems/registry-casework/precondition/required.json index 0a07b714e..d30179229 100644 --- a/public/problems/registry-casework/precondition/required.json +++ b/public/problems/registry-casework/precondition/required.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/precondition/required/index.html b/public/problems/registry-casework/precondition/required/index.html index 851ec2aa5..cd5013b6f 100644 --- a/public/problems/registry-casework/precondition/required/index.html +++ b/public/problems/registry-casework/precondition/required/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/profile/not-authorized.json b/public/problems/registry-casework/profile/not-authorized.json index a007ea6ee..87435398b 100644 --- a/public/problems/registry-casework/profile/not-authorized.json +++ b/public/problems/registry-casework/profile/not-authorized.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/profile/not-authorized/index.html b/public/problems/registry-casework/profile/not-authorized/index.html index f1fbc4e63..fbdb360c9 100644 --- a/public/problems/registry-casework/profile/not-authorized/index.html +++ b/public/problems/registry-casework/profile/not-authorized/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/profile/not-human.json b/public/problems/registry-casework/profile/not-human.json index b5f1ff535..755c9fa63 100644 --- a/public/problems/registry-casework/profile/not-human.json +++ b/public/problems/registry-casework/profile/not-human.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/profile/not-human/index.html b/public/problems/registry-casework/profile/not-human/index.html index 5d92466d1..4a677c239 100644 --- a/public/problems/registry-casework/profile/not-human/index.html +++ b/public/problems/registry-casework/profile/not-human/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/request/body-too-large.json b/public/problems/registry-casework/request/body-too-large.json index 720ab146f..867f67a9b 100644 --- a/public/problems/registry-casework/request/body-too-large.json +++ b/public/problems/registry-casework/request/body-too-large.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/request/body-too-large/index.html b/public/problems/registry-casework/request/body-too-large/index.html index 20c9f6fbd..b0c7c25d6 100644 --- a/public/problems/registry-casework/request/body-too-large/index.html +++ b/public/problems/registry-casework/request/body-too-large/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/request/invalid.json b/public/problems/registry-casework/request/invalid.json index 7bac553b1..257c28815 100644 --- a/public/problems/registry-casework/request/invalid.json +++ b/public/problems/registry-casework/request/invalid.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/request/invalid/index.html b/public/problems/registry-casework/request/invalid/index.html index 37b541472..35792ea35 100644 --- a/public/problems/registry-casework/request/invalid/index.html +++ b/public/problems/registry-casework/request/invalid/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/request/limit-out-of-range.json b/public/problems/registry-casework/request/limit-out-of-range.json index b305c112d..59b9688d1 100644 --- a/public/problems/registry-casework/request/limit-out-of-range.json +++ b/public/problems/registry-casework/request/limit-out-of-range.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/request/limit-out-of-range/index.html b/public/problems/registry-casework/request/limit-out-of-range/index.html index e88f233fa..599704277 100644 --- a/public/problems/registry-casework/request/limit-out-of-range/index.html +++ b/public/problems/registry-casework/request/limit-out-of-range/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/request/method-not-allowed.json b/public/problems/registry-casework/request/method-not-allowed.json index 1783bb87c..5b02e4425 100644 --- a/public/problems/registry-casework/request/method-not-allowed.json +++ b/public/problems/registry-casework/request/method-not-allowed.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/request/method-not-allowed/index.html b/public/problems/registry-casework/request/method-not-allowed/index.html index 002450108..0904e3f57 100644 --- a/public/problems/registry-casework/request/method-not-allowed/index.html +++ b/public/problems/registry-casework/request/method-not-allowed/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/request/not-found.json b/public/problems/registry-casework/request/not-found.json index ec2038df7..dc857e1bd 100644 --- a/public/problems/registry-casework/request/not-found.json +++ b/public/problems/registry-casework/request/not-found.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/request/not-found/index.html b/public/problems/registry-casework/request/not-found/index.html index d85ee4ff7..a3f851089 100644 --- a/public/problems/registry-casework/request/not-found/index.html +++ b/public/problems/registry-casework/request/not-found/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/request/unprocessable.json b/public/problems/registry-casework/request/unprocessable.json index 83b93099c..df3f7a3e1 100644 --- a/public/problems/registry-casework/request/unprocessable.json +++ b/public/problems/registry-casework/request/unprocessable.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/request/unprocessable/index.html b/public/problems/registry-casework/request/unprocessable/index.html index e529d97b8..9d85c4df9 100644 --- a/public/problems/registry-casework/request/unprocessable/index.html +++ b/public/problems/registry-casework/request/unprocessable/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/request/unsupported-media-type.json b/public/problems/registry-casework/request/unsupported-media-type.json index 5778d5fe9..215d94e58 100644 --- a/public/problems/registry-casework/request/unsupported-media-type.json +++ b/public/problems/registry-casework/request/unsupported-media-type.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/request/unsupported-media-type/index.html b/public/problems/registry-casework/request/unsupported-media-type/index.html index 35f663a81..d2a9dc978 100644 --- a/public/problems/registry-casework/request/unsupported-media-type/index.html +++ b/public/problems/registry-casework/request/unsupported-media-type/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/review/distinct-approver-required.json b/public/problems/registry-casework/review/distinct-approver-required.json index 8f6a77b2d..49126ecad 100644 --- a/public/problems/registry-casework/review/distinct-approver-required.json +++ b/public/problems/registry-casework/review/distinct-approver-required.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/review/distinct-approver-required/index.html b/public/problems/registry-casework/review/distinct-approver-required/index.html index 5e0a9b7c1..58457a4bb 100644 --- a/public/problems/registry-casework/review/distinct-approver-required/index.html +++ b/public/problems/registry-casework/review/distinct-approver-required/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/review/initiator-excluded.json b/public/problems/registry-casework/review/initiator-excluded.json index f3d1bd08d..95aae01fe 100644 --- a/public/problems/registry-casework/review/initiator-excluded.json +++ b/public/problems/registry-casework/review/initiator-excluded.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/review/initiator-excluded/index.html b/public/problems/registry-casework/review/initiator-excluded/index.html index 8a98e3f27..8ab9abd23 100644 --- a/public/problems/registry-casework/review/initiator-excluded/index.html +++ b/public/problems/registry-casework/review/initiator-excluded/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/review/initiator-required.json b/public/problems/registry-casework/review/initiator-required.json index 6fed7574b..f9227b94d 100644 --- a/public/problems/registry-casework/review/initiator-required.json +++ b/public/problems/registry-casework/review/initiator-required.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/review/initiator-required/index.html b/public/problems/registry-casework/review/initiator-required/index.html index d15364331..1311f82a8 100644 --- a/public/problems/registry-casework/review/initiator-required/index.html +++ b/public/problems/registry-casework/review/initiator-required/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/review/policy-mismatch.json b/public/problems/registry-casework/review/policy-mismatch.json index b8ec40451..90eb18ac3 100644 --- a/public/problems/registry-casework/review/policy-mismatch.json +++ b/public/problems/registry-casework/review/policy-mismatch.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/review/policy-mismatch/index.html b/public/problems/registry-casework/review/policy-mismatch/index.html index a08132cf9..6e65ece85 100644 --- a/public/problems/registry-casework/review/policy-mismatch/index.html +++ b/public/problems/registry-casework/review/policy-mismatch/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/review/query-too-broad.json b/public/problems/registry-casework/review/query-too-broad.json index 4774d8db1..cfc716841 100644 --- a/public/problems/registry-casework/review/query-too-broad.json +++ b/public/problems/registry-casework/review/query-too-broad.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/review/query-too-broad/index.html b/public/problems/registry-casework/review/query-too-broad/index.html index 3b79fe24b..dc1202b98 100644 --- a/public/problems/registry-casework/review/query-too-broad/index.html +++ b/public/problems/registry-casework/review/query-too-broad/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/review/result-expired.json b/public/problems/registry-casework/review/result-expired.json index 84663cd48..45107a465 100644 --- a/public/problems/registry-casework/review/result-expired.json +++ b/public/problems/registry-casework/review/result-expired.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/review/result-expired/index.html b/public/problems/registry-casework/review/result-expired/index.html index c76813a7b..d5ca9b48c 100644 --- a/public/problems/registry-casework/review/result-expired/index.html +++ b/public/problems/registry-casework/review/result-expired/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/review/submission-conflict.json b/public/problems/registry-casework/review/submission-conflict.json index b1c69c64c..5a6b9a94b 100644 --- a/public/problems/registry-casework/review/submission-conflict.json +++ b/public/problems/registry-casework/review/submission-conflict.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/review/submission-conflict/index.html b/public/problems/registry-casework/review/submission-conflict/index.html index 27a0425b3..07c3ea695 100644 --- a/public/problems/registry-casework/review/submission-conflict/index.html +++ b/public/problems/registry-casework/review/submission-conflict/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/review/task-not-held.json b/public/problems/registry-casework/review/task-not-held.json index 30111e766..7c5d738ea 100644 --- a/public/problems/registry-casework/review/task-not-held.json +++ b/public/problems/registry-casework/review/task-not-held.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/review/task-not-held/index.html b/public/problems/registry-casework/review/task-not-held/index.html index bdbc15b93..a30d124f9 100644 --- a/public/problems/registry-casework/review/task-not-held/index.html +++ b/public/problems/registry-casework/review/task-not-held/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/runtime/failure.json b/public/problems/registry-casework/runtime/failure.json index 4c731b5b4..c8a5952aa 100644 --- a/public/problems/registry-casework/runtime/failure.json +++ b/public/problems/registry-casework/runtime/failure.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/runtime/failure/index.html b/public/problems/registry-casework/runtime/failure/index.html index 77fe0b04d..e97027e89 100644 --- a/public/problems/registry-casework/runtime/failure/index.html +++ b/public/problems/registry-casework/runtime/failure/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/service/unavailable.json b/public/problems/registry-casework/service/unavailable.json index f65fd2d01..7ed8a2fed 100644 --- a/public/problems/registry-casework/service/unavailable.json +++ b/public/problems/registry-casework/service/unavailable.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/service/unavailable/index.html b/public/problems/registry-casework/service/unavailable/index.html index 1e35b98af..17cb840c3 100644 --- a/public/problems/registry-casework/service/unavailable/index.html +++ b/public/problems/registry-casework/service/unavailable/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/source-profile/not-applicable.json b/public/problems/registry-casework/source-profile/not-applicable.json index 7c25cd58f..2f7fd0207 100644 --- a/public/problems/registry-casework/source-profile/not-applicable.json +++ b/public/problems/registry-casework/source-profile/not-applicable.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/source-profile/not-applicable/index.html b/public/problems/registry-casework/source-profile/not-applicable/index.html index ac2ec7ac7..4b5c71377 100644 --- a/public/problems/registry-casework/source-profile/not-applicable/index.html +++ b/public/problems/registry-casework/source-profile/not-applicable/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/source-profile/required.json b/public/problems/registry-casework/source-profile/required.json index 0be199256..a47909649 100644 --- a/public/problems/registry-casework/source-profile/required.json +++ b/public/problems/registry-casework/source-profile/required.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/source-profile/required/index.html b/public/problems/registry-casework/source-profile/required/index.html index 9b2916b1d..068e6cd23 100644 --- a/public/problems/registry-casework/source-profile/required/index.html +++ b/public/problems/registry-casework/source-profile/required/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/source/bad-gateway.json b/public/problems/registry-casework/source/bad-gateway.json index ef02e425e..391670af9 100644 --- a/public/problems/registry-casework/source/bad-gateway.json +++ b/public/problems/registry-casework/source/bad-gateway.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/source/bad-gateway/index.html b/public/problems/registry-casework/source/bad-gateway/index.html index 0f85f6ae4..07afbf9e2 100644 --- a/public/problems/registry-casework/source/bad-gateway/index.html +++ b/public/problems/registry-casework/source/bad-gateway/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/source/version-mismatch.json b/public/problems/registry-casework/source/version-mismatch.json index d138aa6c0..91c8b727c 100644 --- a/public/problems/registry-casework/source/version-mismatch.json +++ b/public/problems/registry-casework/source/version-mismatch.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/source/version-mismatch/index.html b/public/problems/registry-casework/source/version-mismatch/index.html index db0080a41..64b4dc911 100644 --- a/public/problems/registry-casework/source/version-mismatch/index.html +++ b/public/problems/registry-casework/source/version-mismatch/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/source/version-unavailable.json b/public/problems/registry-casework/source/version-unavailable.json index f6b8acdac..a05779f81 100644 --- a/public/problems/registry-casework/source/version-unavailable.json +++ b/public/problems/registry-casework/source/version-unavailable.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-casework/source/version-unavailable/index.html b/public/problems/registry-casework/source/version-unavailable/index.html index e9f315469..0c7e6d982 100644 --- a/public/problems/registry-casework/source/version-unavailable/index.html +++ b/public/problems/registry-casework/source/version-unavailable/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } diff --git a/public/problems/registry-coordinator/admission/held.json b/public/problems/registry-coordinator/admission/held.json index b40d01d69..d4535059b 100644 --- a/public/problems/registry-coordinator/admission/held.json +++ b/public/problems/registry-coordinator/admission/held.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/admission/held/index.html b/public/problems/registry-coordinator/admission/held/index.html index 0dc8175e2..5d223e229 100644 --- a/public/problems/registry-coordinator/admission/held/index.html +++ b/public/problems/registry-coordinator/admission/held/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/admission/recovery-only.json b/public/problems/registry-coordinator/admission/recovery-only.json index 543a02630..8ff038581 100644 --- a/public/problems/registry-coordinator/admission/recovery-only.json +++ b/public/problems/registry-coordinator/admission/recovery-only.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/admission/recovery-only/index.html b/public/problems/registry-coordinator/admission/recovery-only/index.html index 64accdf81..433fd052f 100644 --- a/public/problems/registry-coordinator/admission/recovery-only/index.html +++ b/public/problems/registry-coordinator/admission/recovery-only/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/audit/response-unavailable.json b/public/problems/registry-coordinator/audit/response-unavailable.json index 3600b9d26..c41f1449d 100644 --- a/public/problems/registry-coordinator/audit/response-unavailable.json +++ b/public/problems/registry-coordinator/audit/response-unavailable.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/audit/response-unavailable/index.html b/public/problems/registry-coordinator/audit/response-unavailable/index.html index 6c3693b37..e41285644 100644 --- a/public/problems/registry-coordinator/audit/response-unavailable/index.html +++ b/public/problems/registry-coordinator/audit/response-unavailable/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/authentication/refused.json b/public/problems/registry-coordinator/authentication/refused.json index f81c25e7d..7d21dbb87 100644 --- a/public/problems/registry-coordinator/authentication/refused.json +++ b/public/problems/registry-coordinator/authentication/refused.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/authentication/refused/index.html b/public/problems/registry-coordinator/authentication/refused/index.html index 81383b8ac..3dc70e21c 100644 --- a/public/problems/registry-coordinator/authentication/refused/index.html +++ b/public/problems/registry-coordinator/authentication/refused/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/binding/conflict.json b/public/problems/registry-coordinator/binding/conflict.json index fb8ff707f..9ed29d93a 100644 --- a/public/problems/registry-coordinator/binding/conflict.json +++ b/public/problems/registry-coordinator/binding/conflict.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/binding/conflict/index.html b/public/problems/registry-coordinator/binding/conflict/index.html index 03285a8c3..ed4e4b3f3 100644 --- a/public/problems/registry-coordinator/binding/conflict/index.html +++ b/public/problems/registry-coordinator/binding/conflict/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/binding/live-conflict.json b/public/problems/registry-coordinator/binding/live-conflict.json index 828158e71..f4bc83452 100644 --- a/public/problems/registry-coordinator/binding/live-conflict.json +++ b/public/problems/registry-coordinator/binding/live-conflict.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/binding/live-conflict/index.html b/public/problems/registry-coordinator/binding/live-conflict/index.html index 6dc8d931d..6c75cb303 100644 --- a/public/problems/registry-coordinator/binding/live-conflict/index.html +++ b/public/problems/registry-coordinator/binding/live-conflict/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/check/not-waiting.json b/public/problems/registry-coordinator/check/not-waiting.json index 7e768dcf9..5b87de8a8 100644 --- a/public/problems/registry-coordinator/check/not-waiting.json +++ b/public/problems/registry-coordinator/check/not-waiting.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/check/not-waiting/index.html b/public/problems/registry-coordinator/check/not-waiting/index.html index 775b0d144..73e943161 100644 --- a/public/problems/registry-coordinator/check/not-waiting/index.html +++ b/public/problems/registry-coordinator/check/not-waiting/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/definition/refused.json b/public/problems/registry-coordinator/definition/refused.json index ccb00afbf..5a815f42d 100644 --- a/public/problems/registry-coordinator/definition/refused.json +++ b/public/problems/registry-coordinator/definition/refused.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/definition/refused/index.html b/public/problems/registry-coordinator/definition/refused/index.html index 771f08798..1e74996ad 100644 --- a/public/problems/registry-coordinator/definition/refused/index.html +++ b/public/problems/registry-coordinator/definition/refused/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/deployment/activation-changed.json b/public/problems/registry-coordinator/deployment/activation-changed.json index 30462fa49..088d47cae 100644 --- a/public/problems/registry-coordinator/deployment/activation-changed.json +++ b/public/problems/registry-coordinator/deployment/activation-changed.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/deployment/activation-changed/index.html b/public/problems/registry-coordinator/deployment/activation-changed/index.html index de6ea9439..7342175e0 100644 --- a/public/problems/registry-coordinator/deployment/activation-changed/index.html +++ b/public/problems/registry-coordinator/deployment/activation-changed/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/deployment/refused.json b/public/problems/registry-coordinator/deployment/refused.json index 62fcab031..1b25b09fc 100644 --- a/public/problems/registry-coordinator/deployment/refused.json +++ b/public/problems/registry-coordinator/deployment/refused.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/deployment/refused/index.html b/public/problems/registry-coordinator/deployment/refused/index.html index 7d0174d67..8dbc5e192 100644 --- a/public/problems/registry-coordinator/deployment/refused/index.html +++ b/public/problems/registry-coordinator/deployment/refused/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/evaluation/uncertain.json b/public/problems/registry-coordinator/evaluation/uncertain.json index 1184dfe5f..83d196845 100644 --- a/public/problems/registry-coordinator/evaluation/uncertain.json +++ b/public/problems/registry-coordinator/evaluation/uncertain.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/evaluation/uncertain/index.html b/public/problems/registry-coordinator/evaluation/uncertain/index.html index c572706b9..e332c2e93 100644 --- a/public/problems/registry-coordinator/evaluation/uncertain/index.html +++ b/public/problems/registry-coordinator/evaluation/uncertain/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/event/invalid.json b/public/problems/registry-coordinator/event/invalid.json index 2ca807337..eb90041ed 100644 --- a/public/problems/registry-coordinator/event/invalid.json +++ b/public/problems/registry-coordinator/event/invalid.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/event/invalid/index.html b/public/problems/registry-coordinator/event/invalid/index.html index 72cd2a62d..dda8c3706 100644 --- a/public/problems/registry-coordinator/event/invalid/index.html +++ b/public/problems/registry-coordinator/event/invalid/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/event/source-unavailable.json b/public/problems/registry-coordinator/event/source-unavailable.json index 825bc44a0..18939de65 100644 --- a/public/problems/registry-coordinator/event/source-unavailable.json +++ b/public/problems/registry-coordinator/event/source-unavailable.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/event/source-unavailable/index.html b/public/problems/registry-coordinator/event/source-unavailable/index.html index db4487995..129ee3703 100644 --- a/public/problems/registry-coordinator/event/source-unavailable/index.html +++ b/public/problems/registry-coordinator/event/source-unavailable/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/event/too-large.json b/public/problems/registry-coordinator/event/too-large.json index b4120042a..936da651a 100644 --- a/public/problems/registry-coordinator/event/too-large.json +++ b/public/problems/registry-coordinator/event/too-large.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/event/too-large/index.html b/public/problems/registry-coordinator/event/too-large/index.html index 38960939c..77f7ed4df 100644 --- a/public/problems/registry-coordinator/event/too-large/index.html +++ b/public/problems/registry-coordinator/event/too-large/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/event/unauthenticated.json b/public/problems/registry-coordinator/event/unauthenticated.json index 10f9aa9f3..9268d696c 100644 --- a/public/problems/registry-coordinator/event/unauthenticated.json +++ b/public/problems/registry-coordinator/event/unauthenticated.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/event/unauthenticated/index.html b/public/problems/registry-coordinator/event/unauthenticated/index.html index 1cb46a846..eedab005f 100644 --- a/public/problems/registry-coordinator/event/unauthenticated/index.html +++ b/public/problems/registry-coordinator/event/unauthenticated/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/execution/held.json b/public/problems/registry-coordinator/execution/held.json index 45d050689..5e81bf097 100644 --- a/public/problems/registry-coordinator/execution/held.json +++ b/public/problems/registry-coordinator/execution/held.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/execution/held/index.html b/public/problems/registry-coordinator/execution/held/index.html index b6b91f718..58e9106ee 100644 --- a/public/problems/registry-coordinator/execution/held/index.html +++ b/public/problems/registry-coordinator/execution/held/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/idempotency/key-invalid.json b/public/problems/registry-coordinator/idempotency/key-invalid.json index a79cac305..266e3f05b 100644 --- a/public/problems/registry-coordinator/idempotency/key-invalid.json +++ b/public/problems/registry-coordinator/idempotency/key-invalid.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/idempotency/key-invalid/index.html b/public/problems/registry-coordinator/idempotency/key-invalid/index.html index e1d7fe9b4..f8ec9c953 100644 --- a/public/problems/registry-coordinator/idempotency/key-invalid/index.html +++ b/public/problems/registry-coordinator/idempotency/key-invalid/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/idempotency/key-reused.json b/public/problems/registry-coordinator/idempotency/key-reused.json index 072cdfcb1..96fae9a9f 100644 --- a/public/problems/registry-coordinator/idempotency/key-reused.json +++ b/public/problems/registry-coordinator/idempotency/key-reused.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/idempotency/key-reused/index.html b/public/problems/registry-coordinator/idempotency/key-reused/index.html index 3c9a5315f..b517e84ac 100644 --- a/public/problems/registry-coordinator/idempotency/key-reused/index.html +++ b/public/problems/registry-coordinator/idempotency/key-reused/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/input/invalid.json b/public/problems/registry-coordinator/input/invalid.json index 27335ff4a..2d943a5ee 100644 --- a/public/problems/registry-coordinator/input/invalid.json +++ b/public/problems/registry-coordinator/input/invalid.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/input/invalid/index.html b/public/problems/registry-coordinator/input/invalid/index.html index d7b07b079..f88a366e6 100644 --- a/public/problems/registry-coordinator/input/invalid/index.html +++ b/public/problems/registry-coordinator/input/invalid/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/mutation/uncertain.json b/public/problems/registry-coordinator/mutation/uncertain.json index 6220586f6..cbf13fae9 100644 --- a/public/problems/registry-coordinator/mutation/uncertain.json +++ b/public/problems/registry-coordinator/mutation/uncertain.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/mutation/uncertain/index.html b/public/problems/registry-coordinator/mutation/uncertain/index.html index cb6cf02c3..55ecc745b 100644 --- a/public/problems/registry-coordinator/mutation/uncertain/index.html +++ b/public/problems/registry-coordinator/mutation/uncertain/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/operation/not-authorized.json b/public/problems/registry-coordinator/operation/not-authorized.json index 239806bbf..f74c93341 100644 --- a/public/problems/registry-coordinator/operation/not-authorized.json +++ b/public/problems/registry-coordinator/operation/not-authorized.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/operation/not-authorized/index.html b/public/problems/registry-coordinator/operation/not-authorized/index.html index c153a388d..10b009a6f 100644 --- a/public/problems/registry-coordinator/operation/not-authorized/index.html +++ b/public/problems/registry-coordinator/operation/not-authorized/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/receipt/expired.json b/public/problems/registry-coordinator/receipt/expired.json index bd15d6229..f94011cb6 100644 --- a/public/problems/registry-coordinator/receipt/expired.json +++ b/public/problems/registry-coordinator/receipt/expired.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/receipt/expired/index.html b/public/problems/registry-coordinator/receipt/expired/index.html index 3987f3ebe..a09a1d946 100644 --- a/public/problems/registry-coordinator/receipt/expired/index.html +++ b/public/problems/registry-coordinator/receipt/expired/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/reconcile/raced.json b/public/problems/registry-coordinator/reconcile/raced.json index ea75fb729..1aa8cc2c0 100644 --- a/public/problems/registry-coordinator/reconcile/raced.json +++ b/public/problems/registry-coordinator/reconcile/raced.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/reconcile/raced/index.html b/public/problems/registry-coordinator/reconcile/raced/index.html index f13959a5b..804db9ed5 100644 --- a/public/problems/registry-coordinator/reconcile/raced/index.html +++ b/public/problems/registry-coordinator/reconcile/raced/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/reconcile/refused.json b/public/problems/registry-coordinator/reconcile/refused.json index 7d8a6d43e..26a372e04 100644 --- a/public/problems/registry-coordinator/reconcile/refused.json +++ b/public/problems/registry-coordinator/reconcile/refused.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/reconcile/refused/index.html b/public/problems/registry-coordinator/reconcile/refused/index.html index 5167132d1..c049ecb48 100644 --- a/public/problems/registry-coordinator/reconcile/refused/index.html +++ b/public/problems/registry-coordinator/reconcile/refused/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/reconcile/unsupported.json b/public/problems/registry-coordinator/reconcile/unsupported.json index fdd6a5955..6f9a1fcf6 100644 --- a/public/problems/registry-coordinator/reconcile/unsupported.json +++ b/public/problems/registry-coordinator/reconcile/unsupported.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/reconcile/unsupported/index.html b/public/problems/registry-coordinator/reconcile/unsupported/index.html index e4d0e3a7e..f6e53fbdf 100644 --- a/public/problems/registry-coordinator/reconcile/unsupported/index.html +++ b/public/problems/registry-coordinator/reconcile/unsupported/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/request/body-too-large.json b/public/problems/registry-coordinator/request/body-too-large.json index e79cfcf6d..d834c8410 100644 --- a/public/problems/registry-coordinator/request/body-too-large.json +++ b/public/problems/registry-coordinator/request/body-too-large.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/request/body-too-large/index.html b/public/problems/registry-coordinator/request/body-too-large/index.html index d0a2bfdc3..721eeda50 100644 --- a/public/problems/registry-coordinator/request/body-too-large/index.html +++ b/public/problems/registry-coordinator/request/body-too-large/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/request/invalid.json b/public/problems/registry-coordinator/request/invalid.json index 541d60753..123af08a1 100644 --- a/public/problems/registry-coordinator/request/invalid.json +++ b/public/problems/registry-coordinator/request/invalid.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/request/invalid/index.html b/public/problems/registry-coordinator/request/invalid/index.html index 3b4ee1c4a..c6b17cf51 100644 --- a/public/problems/registry-coordinator/request/invalid/index.html +++ b/public/problems/registry-coordinator/request/invalid/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/request/limit-out-of-range.json b/public/problems/registry-coordinator/request/limit-out-of-range.json index 3e61fd7fd..9a70582b5 100644 --- a/public/problems/registry-coordinator/request/limit-out-of-range.json +++ b/public/problems/registry-coordinator/request/limit-out-of-range.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/request/limit-out-of-range/index.html b/public/problems/registry-coordinator/request/limit-out-of-range/index.html index 1a736f550..107d8d351 100644 --- a/public/problems/registry-coordinator/request/limit-out-of-range/index.html +++ b/public/problems/registry-coordinator/request/limit-out-of-range/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/request/method-not-allowed.json b/public/problems/registry-coordinator/request/method-not-allowed.json index bc163b015..a30252c9f 100644 --- a/public/problems/registry-coordinator/request/method-not-allowed.json +++ b/public/problems/registry-coordinator/request/method-not-allowed.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/request/method-not-allowed/index.html b/public/problems/registry-coordinator/request/method-not-allowed/index.html index 2b4d7df3d..55cec1a40 100644 --- a/public/problems/registry-coordinator/request/method-not-allowed/index.html +++ b/public/problems/registry-coordinator/request/method-not-allowed/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/request/not-found.json b/public/problems/registry-coordinator/request/not-found.json index dab442f94..34e7270d3 100644 --- a/public/problems/registry-coordinator/request/not-found.json +++ b/public/problems/registry-coordinator/request/not-found.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/request/not-found/index.html b/public/problems/registry-coordinator/request/not-found/index.html index 785553f00..45b3c03ec 100644 --- a/public/problems/registry-coordinator/request/not-found/index.html +++ b/public/problems/registry-coordinator/request/not-found/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/request/reason-invalid.json b/public/problems/registry-coordinator/request/reason-invalid.json index 764142422..59c751945 100644 --- a/public/problems/registry-coordinator/request/reason-invalid.json +++ b/public/problems/registry-coordinator/request/reason-invalid.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/request/reason-invalid/index.html b/public/problems/registry-coordinator/request/reason-invalid/index.html index 435e87fdb..9b88c8d15 100644 --- a/public/problems/registry-coordinator/request/reason-invalid/index.html +++ b/public/problems/registry-coordinator/request/reason-invalid/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/request/retention-invalid.json b/public/problems/registry-coordinator/request/retention-invalid.json index 0e53f9667..e5f35b152 100644 --- a/public/problems/registry-coordinator/request/retention-invalid.json +++ b/public/problems/registry-coordinator/request/retention-invalid.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/request/retention-invalid/index.html b/public/problems/registry-coordinator/request/retention-invalid/index.html index 90aa0f8d6..40a40663b 100644 --- a/public/problems/registry-coordinator/request/retention-invalid/index.html +++ b/public/problems/registry-coordinator/request/retention-invalid/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/request/unprocessable.json b/public/problems/registry-coordinator/request/unprocessable.json index a3af01485..5671379c3 100644 --- a/public/problems/registry-coordinator/request/unprocessable.json +++ b/public/problems/registry-coordinator/request/unprocessable.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/request/unprocessable/index.html b/public/problems/registry-coordinator/request/unprocessable/index.html index 820f691d2..91cd11b8a 100644 --- a/public/problems/registry-coordinator/request/unprocessable/index.html +++ b/public/problems/registry-coordinator/request/unprocessable/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/request/unsupported-media-type.json b/public/problems/registry-coordinator/request/unsupported-media-type.json index 162f14caf..009d0e6ed 100644 --- a/public/problems/registry-coordinator/request/unsupported-media-type.json +++ b/public/problems/registry-coordinator/request/unsupported-media-type.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/request/unsupported-media-type/index.html b/public/problems/registry-coordinator/request/unsupported-media-type/index.html index c00fbfb3f..e9fa42c86 100644 --- a/public/problems/registry-coordinator/request/unsupported-media-type/index.html +++ b/public/problems/registry-coordinator/request/unsupported-media-type/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/restore/hold-required.json b/public/problems/registry-coordinator/restore/hold-required.json index a652ebe00..9c9ca5cff 100644 --- a/public/problems/registry-coordinator/restore/hold-required.json +++ b/public/problems/registry-coordinator/restore/hold-required.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/restore/hold-required/index.html b/public/problems/registry-coordinator/restore/hold-required/index.html index f317785a0..b8ed972ce 100644 --- a/public/problems/registry-coordinator/restore/hold-required/index.html +++ b/public/problems/registry-coordinator/restore/hold-required/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/restore/lease-incompatible.json b/public/problems/registry-coordinator/restore/lease-incompatible.json index 68882e124..b5c8ae828 100644 --- a/public/problems/registry-coordinator/restore/lease-incompatible.json +++ b/public/problems/registry-coordinator/restore/lease-incompatible.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/restore/lease-incompatible/index.html b/public/problems/registry-coordinator/restore/lease-incompatible/index.html index 2055b7057..b271f50b9 100644 --- a/public/problems/registry-coordinator/restore/lease-incompatible/index.html +++ b/public/problems/registry-coordinator/restore/lease-incompatible/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/restore/review-required.json b/public/problems/registry-coordinator/restore/review-required.json index 8dc8b31bf..a38ec38f6 100644 --- a/public/problems/registry-coordinator/restore/review-required.json +++ b/public/problems/registry-coordinator/restore/review-required.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/restore/review-required/index.html b/public/problems/registry-coordinator/restore/review-required/index.html index 6296a8179..92f7ef4cd 100644 --- a/public/problems/registry-coordinator/restore/review-required/index.html +++ b/public/problems/registry-coordinator/restore/review-required/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/restore/unresolved.json b/public/problems/registry-coordinator/restore/unresolved.json index eae0f7d6e..8fa1f2312 100644 --- a/public/problems/registry-coordinator/restore/unresolved.json +++ b/public/problems/registry-coordinator/restore/unresolved.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/restore/unresolved/index.html b/public/problems/registry-coordinator/restore/unresolved/index.html index 3268ac3a7..13ff27aba 100644 --- a/public/problems/registry-coordinator/restore/unresolved/index.html +++ b/public/problems/registry-coordinator/restore/unresolved/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/retry/refused.json b/public/problems/registry-coordinator/retry/refused.json index 77ee0676d..9e17f1cf6 100644 --- a/public/problems/registry-coordinator/retry/refused.json +++ b/public/problems/registry-coordinator/retry/refused.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/retry/refused/index.html b/public/problems/registry-coordinator/retry/refused/index.html index c46a44188..4014fe2cc 100644 --- a/public/problems/registry-coordinator/retry/refused/index.html +++ b/public/problems/registry-coordinator/retry/refused/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/run/definition-incompatible.json b/public/problems/registry-coordinator/run/definition-incompatible.json index 1e174ac93..8e6191b8c 100644 --- a/public/problems/registry-coordinator/run/definition-incompatible.json +++ b/public/problems/registry-coordinator/run/definition-incompatible.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/run/definition-incompatible/index.html b/public/problems/registry-coordinator/run/definition-incompatible/index.html index f44547b5c..8bd8d4795 100644 --- a/public/problems/registry-coordinator/run/definition-incompatible/index.html +++ b/public/problems/registry-coordinator/run/definition-incompatible/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/run/not-visible.json b/public/problems/registry-coordinator/run/not-visible.json index fb93c8421..53a0fcb3d 100644 --- a/public/problems/registry-coordinator/run/not-visible.json +++ b/public/problems/registry-coordinator/run/not-visible.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/run/not-visible/index.html b/public/problems/registry-coordinator/run/not-visible/index.html index fdf40c947..099c07c47 100644 --- a/public/problems/registry-coordinator/run/not-visible/index.html +++ b/public/problems/registry-coordinator/run/not-visible/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/run/payload-erased.json b/public/problems/registry-coordinator/run/payload-erased.json index edf7817be..827d2168c 100644 --- a/public/problems/registry-coordinator/run/payload-erased.json +++ b/public/problems/registry-coordinator/run/payload-erased.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/run/payload-erased/index.html b/public/problems/registry-coordinator/run/payload-erased/index.html index ab5ea1840..9ae553516 100644 --- a/public/problems/registry-coordinator/run/payload-erased/index.html +++ b/public/problems/registry-coordinator/run/payload-erased/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/runtime/failure.json b/public/problems/registry-coordinator/runtime/failure.json index 2cfab5acd..59a411b4d 100644 --- a/public/problems/registry-coordinator/runtime/failure.json +++ b/public/problems/registry-coordinator/runtime/failure.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/runtime/failure/index.html b/public/problems/registry-coordinator/runtime/failure/index.html index 48c8f20a2..9c89f35b9 100644 --- a/public/problems/registry-coordinator/runtime/failure/index.html +++ b/public/problems/registry-coordinator/runtime/failure/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/service/unavailable.json b/public/problems/registry-coordinator/service/unavailable.json index dee617beb..20aed0ca2 100644 --- a/public/problems/registry-coordinator/service/unavailable.json +++ b/public/problems/registry-coordinator/service/unavailable.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/service/unavailable/index.html b/public/problems/registry-coordinator/service/unavailable/index.html index 945675f80..20bd5a240 100644 --- a/public/problems/registry-coordinator/service/unavailable/index.html +++ b/public/problems/registry-coordinator/service/unavailable/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/workflow/not-served.json b/public/problems/registry-coordinator/workflow/not-served.json index 1185d8f17..7378f005d 100644 --- a/public/problems/registry-coordinator/workflow/not-served.json +++ b/public/problems/registry-coordinator/workflow/not-served.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/workflow/not-served/index.html b/public/problems/registry-coordinator/workflow/not-served/index.html index 16bd911bd..cfa3915e8 100644 --- a/public/problems/registry-coordinator/workflow/not-served/index.html +++ b/public/problems/registry-coordinator/workflow/not-served/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/workflow/revision-mismatch.json b/public/problems/registry-coordinator/workflow/revision-mismatch.json index 841b6fc85..5fd12e22a 100644 --- a/public/problems/registry-coordinator/workflow/revision-mismatch.json +++ b/public/problems/registry-coordinator/workflow/revision-mismatch.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-coordinator/workflow/revision-mismatch/index.html b/public/problems/registry-coordinator/workflow/revision-mismatch/index.html index a79cec8f8..2417a6745 100644 --- a/public/problems/registry-coordinator/workflow/revision-mismatch/index.html +++ b/public/problems/registry-coordinator/workflow/revision-mismatch/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } } diff --git a/public/problems/registry-discovery/invalid-request.json b/public/problems/registry-discovery/invalid-request.json index a098dac8c..293296be3 100644 --- a/public/problems/registry-discovery/invalid-request.json +++ b/public/problems/registry-discovery/invalid-request.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-discovery/src/problem.rs", "sha256": "cd37f4a483c9d29c5ed4cbffa11756ef78207d9df1e6e62b7f93de36a30b43e3" } diff --git a/public/problems/registry-discovery/invalid-request/index.html b/public/problems/registry-discovery/invalid-request/index.html index 57fd44d76..86399db23 100644 --- a/public/problems/registry-discovery/invalid-request/index.html +++ b/public/problems/registry-discovery/invalid-request/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-discovery/src/problem.rs", "sha256": "cd37f4a483c9d29c5ed4cbffa11756ef78207d9df1e6e62b7f93de36a30b43e3" } diff --git a/public/problems/registry-discovery/not-found.json b/public/problems/registry-discovery/not-found.json index a2f909612..3da6b7953 100644 --- a/public/problems/registry-discovery/not-found.json +++ b/public/problems/registry-discovery/not-found.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-discovery/src/problem.rs", "sha256": "cd37f4a483c9d29c5ed4cbffa11756ef78207d9df1e6e62b7f93de36a30b43e3" } diff --git a/public/problems/registry-discovery/not-found/index.html b/public/problems/registry-discovery/not-found/index.html index 7cb953513..6bbc05178 100644 --- a/public/problems/registry-discovery/not-found/index.html +++ b/public/problems/registry-discovery/not-found/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-discovery/src/problem.rs", "sha256": "cd37f4a483c9d29c5ed4cbffa11756ef78207d9df1e6e62b7f93de36a30b43e3" } diff --git a/public/problems/registry-discovery/result-bound-exceeded.json b/public/problems/registry-discovery/result-bound-exceeded.json index a1aa58489..6434bcee0 100644 --- a/public/problems/registry-discovery/result-bound-exceeded.json +++ b/public/problems/registry-discovery/result-bound-exceeded.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-discovery/src/problem.rs", "sha256": "cd37f4a483c9d29c5ed4cbffa11756ef78207d9df1e6e62b7f93de36a30b43e3" } diff --git a/public/problems/registry-discovery/result-bound-exceeded/index.html b/public/problems/registry-discovery/result-bound-exceeded/index.html index bd3044d92..adc722320 100644 --- a/public/problems/registry-discovery/result-bound-exceeded/index.html +++ b/public/problems/registry-discovery/result-bound-exceeded/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-discovery/src/problem.rs", "sha256": "cd37f4a483c9d29c5ed4cbffa11756ef78207d9df1e6e62b7f93de36a30b43e3" } diff --git a/public/problems/registry-discovery/unavailable.json b/public/problems/registry-discovery/unavailable.json index 7991c5cdf..6f37e42aa 100644 --- a/public/problems/registry-discovery/unavailable.json +++ b/public/problems/registry-discovery/unavailable.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-discovery/src/problem.rs", "sha256": "cd37f4a483c9d29c5ed4cbffa11756ef78207d9df1e6e62b7f93de36a30b43e3" } diff --git a/public/problems/registry-discovery/unavailable/index.html b/public/problems/registry-discovery/unavailable/index.html index 232e0fda2..c2aea4e0c 100644 --- a/public/problems/registry-discovery/unavailable/index.html +++ b/public/problems/registry-discovery/unavailable/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-discovery/src/problem.rs", "sha256": "cd37f4a483c9d29c5ed4cbffa11756ef78207d9df1e6e62b7f93de36a30b43e3" } diff --git a/public/problems/registry-documents/authentication/refused.json b/public/problems/registry-documents/authentication/refused.json index 6af6bf9fc..1b0155a04 100644 --- a/public/problems/registry-documents/authentication/refused.json +++ b/public/problems/registry-documents/authentication/refused.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } diff --git a/public/problems/registry-documents/authentication/refused/index.html b/public/problems/registry-documents/authentication/refused/index.html index ef9b4f3f8..85debbcdc 100644 --- a/public/problems/registry-documents/authentication/refused/index.html +++ b/public/problems/registry-documents/authentication/refused/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } diff --git a/public/problems/registry-documents/custody/not-permitted.json b/public/problems/registry-documents/custody/not-permitted.json index bc7331c5f..1fd0150ed 100644 --- a/public/problems/registry-documents/custody/not-permitted.json +++ b/public/problems/registry-documents/custody/not-permitted.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } diff --git a/public/problems/registry-documents/custody/not-permitted/index.html b/public/problems/registry-documents/custody/not-permitted/index.html index bd74f7177..02d68c6ca 100644 --- a/public/problems/registry-documents/custody/not-permitted/index.html +++ b/public/problems/registry-documents/custody/not-permitted/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } diff --git a/public/problems/registry-documents/custody/quota-exceeded.json b/public/problems/registry-documents/custody/quota-exceeded.json index a694778d9..3d2d4ca7f 100644 --- a/public/problems/registry-documents/custody/quota-exceeded.json +++ b/public/problems/registry-documents/custody/quota-exceeded.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } diff --git a/public/problems/registry-documents/custody/quota-exceeded/index.html b/public/problems/registry-documents/custody/quota-exceeded/index.html index b5196a85b..a7f850f98 100644 --- a/public/problems/registry-documents/custody/quota-exceeded/index.html +++ b/public/problems/registry-documents/custody/quota-exceeded/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } diff --git a/public/problems/registry-documents/document-grant/expiry-out-of-range.json b/public/problems/registry-documents/document-grant/expiry-out-of-range.json index e38bc1b2e..d02375bc6 100644 --- a/public/problems/registry-documents/document-grant/expiry-out-of-range.json +++ b/public/problems/registry-documents/document-grant/expiry-out-of-range.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } diff --git a/public/problems/registry-documents/document-grant/expiry-out-of-range/index.html b/public/problems/registry-documents/document-grant/expiry-out-of-range/index.html index d7dbc381e..42616c63f 100644 --- a/public/problems/registry-documents/document-grant/expiry-out-of-range/index.html +++ b/public/problems/registry-documents/document-grant/expiry-out-of-range/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } diff --git a/public/problems/registry-documents/document-policy/unknown.json b/public/problems/registry-documents/document-policy/unknown.json index ea8074306..a80fa60fa 100644 --- a/public/problems/registry-documents/document-policy/unknown.json +++ b/public/problems/registry-documents/document-policy/unknown.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } diff --git a/public/problems/registry-documents/document-policy/unknown/index.html b/public/problems/registry-documents/document-policy/unknown/index.html index 4f3b4ffa7..7c8223a1e 100644 --- a/public/problems/registry-documents/document-policy/unknown/index.html +++ b/public/problems/registry-documents/document-policy/unknown/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } diff --git a/public/problems/registry-documents/document-version/not-releasable.json b/public/problems/registry-documents/document-version/not-releasable.json index 3cd019e87..659b34ca2 100644 --- a/public/problems/registry-documents/document-version/not-releasable.json +++ b/public/problems/registry-documents/document-version/not-releasable.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } diff --git a/public/problems/registry-documents/document-version/not-releasable/index.html b/public/problems/registry-documents/document-version/not-releasable/index.html index 046623497..89c2da177 100644 --- a/public/problems/registry-documents/document-version/not-releasable/index.html +++ b/public/problems/registry-documents/document-version/not-releasable/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } diff --git a/public/problems/registry-documents/document/content-type-not-allowed.json b/public/problems/registry-documents/document/content-type-not-allowed.json index 5e48538d5..775f3dedd 100644 --- a/public/problems/registry-documents/document/content-type-not-allowed.json +++ b/public/problems/registry-documents/document/content-type-not-allowed.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } diff --git a/public/problems/registry-documents/document/content-type-not-allowed/index.html b/public/problems/registry-documents/document/content-type-not-allowed/index.html index 595e30974..9d9480afe 100644 --- a/public/problems/registry-documents/document/content-type-not-allowed/index.html +++ b/public/problems/registry-documents/document/content-type-not-allowed/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } diff --git a/public/problems/registry-documents/document/too-large.json b/public/problems/registry-documents/document/too-large.json index 9203628c4..6c595dc86 100644 --- a/public/problems/registry-documents/document/too-large.json +++ b/public/problems/registry-documents/document/too-large.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } diff --git a/public/problems/registry-documents/document/too-large/index.html b/public/problems/registry-documents/document/too-large/index.html index cbd029f73..241b32b0b 100644 --- a/public/problems/registry-documents/document/too-large/index.html +++ b/public/problems/registry-documents/document/too-large/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } diff --git a/public/problems/registry-documents/idempotency/expired.json b/public/problems/registry-documents/idempotency/expired.json index 55065a72d..ff29b8512 100644 --- a/public/problems/registry-documents/idempotency/expired.json +++ b/public/problems/registry-documents/idempotency/expired.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } diff --git a/public/problems/registry-documents/idempotency/expired/index.html b/public/problems/registry-documents/idempotency/expired/index.html index c591f67f1..6f4020133 100644 --- a/public/problems/registry-documents/idempotency/expired/index.html +++ b/public/problems/registry-documents/idempotency/expired/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } diff --git a/public/problems/registry-documents/idempotency/key-reused.json b/public/problems/registry-documents/idempotency/key-reused.json index 193e7c209..48e157deb 100644 --- a/public/problems/registry-documents/idempotency/key-reused.json +++ b/public/problems/registry-documents/idempotency/key-reused.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } diff --git a/public/problems/registry-documents/idempotency/key-reused/index.html b/public/problems/registry-documents/idempotency/key-reused/index.html index f4042c56f..65239d3a5 100644 --- a/public/problems/registry-documents/idempotency/key-reused/index.html +++ b/public/problems/registry-documents/idempotency/key-reused/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } diff --git a/public/problems/registry-documents/profile/not-authorized.json b/public/problems/registry-documents/profile/not-authorized.json index f27c92644..271189ae6 100644 --- a/public/problems/registry-documents/profile/not-authorized.json +++ b/public/problems/registry-documents/profile/not-authorized.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } diff --git a/public/problems/registry-documents/profile/not-authorized/index.html b/public/problems/registry-documents/profile/not-authorized/index.html index aa0a1b7f5..267cc4f9c 100644 --- a/public/problems/registry-documents/profile/not-authorized/index.html +++ b/public/problems/registry-documents/profile/not-authorized/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } diff --git a/public/problems/registry-documents/request/body-too-large.json b/public/problems/registry-documents/request/body-too-large.json index 135b521a4..4e639d976 100644 --- a/public/problems/registry-documents/request/body-too-large.json +++ b/public/problems/registry-documents/request/body-too-large.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } diff --git a/public/problems/registry-documents/request/body-too-large/index.html b/public/problems/registry-documents/request/body-too-large/index.html index 86a0a426a..f6c2c8404 100644 --- a/public/problems/registry-documents/request/body-too-large/index.html +++ b/public/problems/registry-documents/request/body-too-large/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } diff --git a/public/problems/registry-documents/request/invalid.json b/public/problems/registry-documents/request/invalid.json index 8b5cc93dd..b1bd073de 100644 --- a/public/problems/registry-documents/request/invalid.json +++ b/public/problems/registry-documents/request/invalid.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } diff --git a/public/problems/registry-documents/request/invalid/index.html b/public/problems/registry-documents/request/invalid/index.html index c1b1e297f..1618ddecc 100644 --- a/public/problems/registry-documents/request/invalid/index.html +++ b/public/problems/registry-documents/request/invalid/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } diff --git a/public/problems/registry-documents/request/method-not-allowed.json b/public/problems/registry-documents/request/method-not-allowed.json index 3f1b69d23..8daed4520 100644 --- a/public/problems/registry-documents/request/method-not-allowed.json +++ b/public/problems/registry-documents/request/method-not-allowed.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } diff --git a/public/problems/registry-documents/request/method-not-allowed/index.html b/public/problems/registry-documents/request/method-not-allowed/index.html index ef8604170..ca511e091 100644 --- a/public/problems/registry-documents/request/method-not-allowed/index.html +++ b/public/problems/registry-documents/request/method-not-allowed/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } diff --git a/public/problems/registry-documents/request/not-found.json b/public/problems/registry-documents/request/not-found.json index f3e7b55e9..5d275ef97 100644 --- a/public/problems/registry-documents/request/not-found.json +++ b/public/problems/registry-documents/request/not-found.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } diff --git a/public/problems/registry-documents/request/not-found/index.html b/public/problems/registry-documents/request/not-found/index.html index 664d8810e..36843a665 100644 --- a/public/problems/registry-documents/request/not-found/index.html +++ b/public/problems/registry-documents/request/not-found/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } diff --git a/public/problems/registry-documents/request/unprocessable.json b/public/problems/registry-documents/request/unprocessable.json index a2daf00ca..cd8a16626 100644 --- a/public/problems/registry-documents/request/unprocessable.json +++ b/public/problems/registry-documents/request/unprocessable.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } diff --git a/public/problems/registry-documents/request/unprocessable/index.html b/public/problems/registry-documents/request/unprocessable/index.html index 0c8e34906..aa5981f5a 100644 --- a/public/problems/registry-documents/request/unprocessable/index.html +++ b/public/problems/registry-documents/request/unprocessable/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } diff --git a/public/problems/registry-documents/request/unsupported-media-type.json b/public/problems/registry-documents/request/unsupported-media-type.json index d76fb0639..b95506c9d 100644 --- a/public/problems/registry-documents/request/unsupported-media-type.json +++ b/public/problems/registry-documents/request/unsupported-media-type.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } diff --git a/public/problems/registry-documents/request/unsupported-media-type/index.html b/public/problems/registry-documents/request/unsupported-media-type/index.html index 86a0ba4a8..05dbd8db4 100644 --- a/public/problems/registry-documents/request/unsupported-media-type/index.html +++ b/public/problems/registry-documents/request/unsupported-media-type/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } diff --git a/public/problems/registry-documents/resource/not-found.json b/public/problems/registry-documents/resource/not-found.json index df1f27849..0715c5cfe 100644 --- a/public/problems/registry-documents/resource/not-found.json +++ b/public/problems/registry-documents/resource/not-found.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } diff --git a/public/problems/registry-documents/resource/not-found/index.html b/public/problems/registry-documents/resource/not-found/index.html index 1460ceacc..3641b4fa2 100644 --- a/public/problems/registry-documents/resource/not-found/index.html +++ b/public/problems/registry-documents/resource/not-found/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } diff --git a/public/problems/registry-documents/service/unavailable.json b/public/problems/registry-documents/service/unavailable.json index 364f00927..cd054a93d 100644 --- a/public/problems/registry-documents/service/unavailable.json +++ b/public/problems/registry-documents/service/unavailable.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } diff --git a/public/problems/registry-documents/service/unavailable/index.html b/public/problems/registry-documents/service/unavailable/index.html index 14dda453b..b1bd22495 100644 --- a/public/problems/registry-documents/service/unavailable/index.html +++ b/public/problems/registry-documents/service/unavailable/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } diff --git a/public/problems/registry-documents/upload/content-type-mismatch.json b/public/problems/registry-documents/upload/content-type-mismatch.json index 256ab0220..4e1ae3cc3 100644 --- a/public/problems/registry-documents/upload/content-type-mismatch.json +++ b/public/problems/registry-documents/upload/content-type-mismatch.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } diff --git a/public/problems/registry-documents/upload/content-type-mismatch/index.html b/public/problems/registry-documents/upload/content-type-mismatch/index.html index ed159a245..16b2c45c4 100644 --- a/public/problems/registry-documents/upload/content-type-mismatch/index.html +++ b/public/problems/registry-documents/upload/content-type-mismatch/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } diff --git a/public/problems/registry-documents/upload/digest-mismatch.json b/public/problems/registry-documents/upload/digest-mismatch.json index a48a04c2d..404aab2af 100644 --- a/public/problems/registry-documents/upload/digest-mismatch.json +++ b/public/problems/registry-documents/upload/digest-mismatch.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } diff --git a/public/problems/registry-documents/upload/digest-mismatch/index.html b/public/problems/registry-documents/upload/digest-mismatch/index.html index f1b0c635d..ca7794c3c 100644 --- a/public/problems/registry-documents/upload/digest-mismatch/index.html +++ b/public/problems/registry-documents/upload/digest-mismatch/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } diff --git a/public/problems/registry-documents/upload/expired.json b/public/problems/registry-documents/upload/expired.json index c81311753..015129275 100644 --- a/public/problems/registry-documents/upload/expired.json +++ b/public/problems/registry-documents/upload/expired.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } diff --git a/public/problems/registry-documents/upload/expired/index.html b/public/problems/registry-documents/upload/expired/index.html index 81bef41af..16ae61530 100644 --- a/public/problems/registry-documents/upload/expired/index.html +++ b/public/problems/registry-documents/upload/expired/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } diff --git a/public/problems/registry-documents/upload/finalized.json b/public/problems/registry-documents/upload/finalized.json index 0982fd38e..48d721139 100644 --- a/public/problems/registry-documents/upload/finalized.json +++ b/public/problems/registry-documents/upload/finalized.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } diff --git a/public/problems/registry-documents/upload/finalized/index.html b/public/problems/registry-documents/upload/finalized/index.html index 3cede39ac..a742fd498 100644 --- a/public/problems/registry-documents/upload/finalized/index.html +++ b/public/problems/registry-documents/upload/finalized/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } diff --git a/public/problems/registry-documents/upload/length-mismatch.json b/public/problems/registry-documents/upload/length-mismatch.json index a8f94a76d..c6fe4485a 100644 --- a/public/problems/registry-documents/upload/length-mismatch.json +++ b/public/problems/registry-documents/upload/length-mismatch.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } diff --git a/public/problems/registry-documents/upload/length-mismatch/index.html b/public/problems/registry-documents/upload/length-mismatch/index.html index 6b23d4db5..9dc086db1 100644 --- a/public/problems/registry-documents/upload/length-mismatch/index.html +++ b/public/problems/registry-documents/upload/length-mismatch/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } diff --git a/public/problems/registry-evidence-oid4vp/audit-unavailable.json b/public/problems/registry-evidence-oid4vp/audit-unavailable.json new file mode 100644 index 000000000..b5186d3dd --- /dev/null +++ b/public/problems/registry-evidence-oid4vp/audit-unavailable.json @@ -0,0 +1,44 @@ +{ + "id": "https://id.registrystack.org/problems/registry-evidence-oid4vp/audit-unavailable", + "type": "https://id.registrystack.org/problems/registry-evidence-oid4vp/audit-unavailable", + "kind": "problem", + "lifecycle_status": "active", + "compatibility_line": "v1alpha1", + "product": "registry-evidence-oid4vp", + "code": "audit-unavailable", + "title": "Service Unavailable", + "summary": "The audit destination did not accept the operation. Try again after the service recovers.", + "description": "The audit destination did not accept the operation. Try again after the service recovers.", + "category": null, + "http_statuses": [ + 503 + ], + "guidance": { + "status": "not_published", + "retryable": null, + "caller_action": null, + "operator_action": null, + "note": "No per-identifier remediation guidance is published in this resolver record." + }, + "documented_by": [ + { + "title": "Error and status code reference", + "href": "https://docs.registrystack.org/reference/errors/" + } + ], + "authority": { + "scope": "identifier metadata", + "statement": "This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior. For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic." + }, + "identifier_policy": { + "stability": "stable", + "programmatic_key": "code", + "parsing": "Do not parse semantics from the URL path." + }, + "source_reference": { + "repository": "registry-stack", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + } +} diff --git a/public/problems/registry-evidence-oid4vp/audit-unavailable/index.html b/public/problems/registry-evidence-oid4vp/audit-unavailable/index.html new file mode 100644 index 000000000..97831a892 --- /dev/null +++ b/public/problems/registry-evidence-oid4vp/audit-unavailable/index.html @@ -0,0 +1,161 @@ + + + + + + Service Unavailable | Registry Stack identifiers + + + + + + + + +
+
+
+

Problem type · registry-evidence-oid4vp

+

Service Unavailable

+

The audit destination did not accept the operation. Try again after the service recovers.

+

https://id.registrystack.org/problems/registry-evidence-oid4vp/audit-unavailable

+
+
+
+
+

Authority boundary

+

This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior.

+

For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic.

+
+
+

Defined facts

+
IdentifierTitleStatus
https://id.registrystack.org/problems/registry-documents/upload/expiredUpload expiredactive
https://id.registrystack.org/problems/registry-documents/upload/finalizedUpload finalizedactive
https://id.registrystack.org/problems/registry-documents/upload/length-mismatchLength mismatchactive
https://id.registrystack.org/problems/registry-evidence-oid4vp/audit-unavailableService Unavailableactive
https://id.registrystack.org/problems/registry-evidence-oid4vp/body-too-largePayload Too Largeactive
https://id.registrystack.org/problems/registry-evidence-oid4vp/capacityService Unavailableactive
https://id.registrystack.org/problems/registry-evidence-oid4vp/internal-errorInternal Server Erroractive
https://id.registrystack.org/problems/registry-evidence-oid4vp/invalid-requestInvalid Requestactive
https://id.registrystack.org/problems/registry-evidence-oid4vp/issuer-unavailableService Unavailableactive
https://id.registrystack.org/problems/registry-evidence-oid4vp/method-not-allowedMethod Not Allowedactive
https://id.registrystack.org/problems/registry-evidence-oid4vp/not-foundNot Foundactive
https://id.registrystack.org/problems/registry-evidence-oid4vp/not-yet-presentedNot Yet Presentedactive
https://id.registrystack.org/problems/registry-evidence-oid4vp/rate-limitedToo Many Requestsactive
https://id.registrystack.org/problems/registry-evidence-oid4vp/request-not-foundNot Foundactive
https://id.registrystack.org/problems/registry-evidence-oid4vp/request-timeoutRequest Timeoutactive
https://id.registrystack.org/problems/registry-evidence-oid4vp/session-not-foundNot Foundactive
https://id.registrystack.org/problems/registry-evidence-oid4vp/unauthorizedUnauthorizedactive
https://id.registrystack.org/problems/registry-evidence-oid4vp/unknown-policyUnknown Policyactive
https://id.registrystack.org/problems/registry-evidence-oid4vp/unsupported-media-typeUnsupported Media Typeactive
https://id.registrystack.org/problems/registry-evidence-oid4vp/wallet-errorWallet Erroractive
https://id.registrystack.org/problems/registry-evidence/auth/invalid_credentialBearer access token is invaliddeprecated
https://id.registrystack.org/problems/registry-evidence/auth/invalid-credentialBearer access token is invalidactive
https://id.registrystack.org/problems/registry-evidence/evidence/deniedEvidence request is not permittedactive
+ + + + + + + + + + +
Canonical URIhttps://id.registrystack.org/problems/registry-evidence-oid4vp/audit-unavailable
Kindproblem
Lifecycle statusactive
Compatibility linev1alpha1
Productregistry-evidence-oid4vp
Codeaudit-unavailable
Categorynot published
HTTP statuses503
+
+
+

Documentation

+ +
+
+

Guidance

+ + + + + + + + +
Guidance statusnot_published
Retryablenot published
Caller actionnot published
Operator actionnot published
NoteNo per-identifier remediation guidance is published in this resolver record.
+
+
+

Problem record

+
{
+  "id": "https://id.registrystack.org/problems/registry-evidence-oid4vp/audit-unavailable",
+  "type": "https://id.registrystack.org/problems/registry-evidence-oid4vp/audit-unavailable",
+  "kind": "problem",
+  "lifecycle_status": "active",
+  "compatibility_line": "v1alpha1",
+  "product": "registry-evidence-oid4vp",
+  "code": "audit-unavailable",
+  "title": "Service Unavailable",
+  "summary": "The audit destination did not accept the operation. Try again after the service recovers.",
+  "description": "The audit destination did not accept the operation. Try again after the service recovers.",
+  "category": null,
+  "http_statuses": [
+    503
+  ],
+  "guidance": {
+    "status": "not_published",
+    "retryable": null,
+    "caller_action": null,
+    "operator_action": null,
+    "note": "No per-identifier remediation guidance is published in this resolver record."
+  },
+  "documented_by": [
+    {
+      "title": "Error and status code reference",
+      "href": "https://docs.registrystack.org/reference/errors/"
+    }
+  ],
+  "authority": {
+    "scope": "identifier metadata",
+    "statement": "This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior. For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic."
+  },
+  "identifier_policy": {
+    "stability": "stable",
+    "programmatic_key": "code",
+    "parsing": "Do not parse semantics from the URL path."
+  },
+  "source_reference": {
+    "repository": "registry-stack",
+    "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b",
+    "path": "crates/registry-evidence-oid4vp/src/problem.rs",
+    "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644"
+  }
+}
+ +
+
+ + + + diff --git a/public/problems/registry-evidence-oid4vp/body-too-large.json b/public/problems/registry-evidence-oid4vp/body-too-large.json new file mode 100644 index 000000000..d20c67097 --- /dev/null +++ b/public/problems/registry-evidence-oid4vp/body-too-large.json @@ -0,0 +1,44 @@ +{ + "id": "https://id.registrystack.org/problems/registry-evidence-oid4vp/body-too-large", + "type": "https://id.registrystack.org/problems/registry-evidence-oid4vp/body-too-large", + "kind": "problem", + "lifecycle_status": "active", + "compatibility_line": "v1alpha1", + "product": "registry-evidence-oid4vp", + "code": "body-too-large", + "title": "Payload Too Large", + "summary": "The request body exceeds the accepted size.", + "description": "The request body exceeds the accepted size.", + "category": null, + "http_statuses": [ + 413 + ], + "guidance": { + "status": "not_published", + "retryable": null, + "caller_action": null, + "operator_action": null, + "note": "No per-identifier remediation guidance is published in this resolver record." + }, + "documented_by": [ + { + "title": "Error and status code reference", + "href": "https://docs.registrystack.org/reference/errors/" + } + ], + "authority": { + "scope": "identifier metadata", + "statement": "This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior. For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic." + }, + "identifier_policy": { + "stability": "stable", + "programmatic_key": "code", + "parsing": "Do not parse semantics from the URL path." + }, + "source_reference": { + "repository": "registry-stack", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + } +} diff --git a/public/problems/registry-evidence-oid4vp/body-too-large/index.html b/public/problems/registry-evidence-oid4vp/body-too-large/index.html new file mode 100644 index 000000000..8e80e42cb --- /dev/null +++ b/public/problems/registry-evidence-oid4vp/body-too-large/index.html @@ -0,0 +1,161 @@ + + + + + + Payload Too Large | Registry Stack identifiers + + + + + + + + +
+
+
+

Problem type · registry-evidence-oid4vp

+

Payload Too Large

+

The request body exceeds the accepted size.

+

https://id.registrystack.org/problems/registry-evidence-oid4vp/body-too-large

+
+
+
+
+

Authority boundary

+

This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior.

+

For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic.

+
+
+

Defined facts

+ + + + + + + + + + + +
Canonical URIhttps://id.registrystack.org/problems/registry-evidence-oid4vp/body-too-large
Kindproblem
Lifecycle statusactive
Compatibility linev1alpha1
Productregistry-evidence-oid4vp
Codebody-too-large
Categorynot published
HTTP statuses413
+
+
+

Documentation

+ +
+
+

Guidance

+ + + + + + + + +
Guidance statusnot_published
Retryablenot published
Caller actionnot published
Operator actionnot published
NoteNo per-identifier remediation guidance is published in this resolver record.
+
+
+

Problem record

+
{
+  "id": "https://id.registrystack.org/problems/registry-evidence-oid4vp/body-too-large",
+  "type": "https://id.registrystack.org/problems/registry-evidence-oid4vp/body-too-large",
+  "kind": "problem",
+  "lifecycle_status": "active",
+  "compatibility_line": "v1alpha1",
+  "product": "registry-evidence-oid4vp",
+  "code": "body-too-large",
+  "title": "Payload Too Large",
+  "summary": "The request body exceeds the accepted size.",
+  "description": "The request body exceeds the accepted size.",
+  "category": null,
+  "http_statuses": [
+    413
+  ],
+  "guidance": {
+    "status": "not_published",
+    "retryable": null,
+    "caller_action": null,
+    "operator_action": null,
+    "note": "No per-identifier remediation guidance is published in this resolver record."
+  },
+  "documented_by": [
+    {
+      "title": "Error and status code reference",
+      "href": "https://docs.registrystack.org/reference/errors/"
+    }
+  ],
+  "authority": {
+    "scope": "identifier metadata",
+    "statement": "This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior. For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic."
+  },
+  "identifier_policy": {
+    "stability": "stable",
+    "programmatic_key": "code",
+    "parsing": "Do not parse semantics from the URL path."
+  },
+  "source_reference": {
+    "repository": "registry-stack",
+    "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b",
+    "path": "crates/registry-evidence-oid4vp/src/problem.rs",
+    "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644"
+  }
+}
+ +
+
+
+ + + diff --git a/public/problems/registry-evidence-oid4vp/capacity.json b/public/problems/registry-evidence-oid4vp/capacity.json new file mode 100644 index 000000000..be1212d11 --- /dev/null +++ b/public/problems/registry-evidence-oid4vp/capacity.json @@ -0,0 +1,44 @@ +{ + "id": "https://id.registrystack.org/problems/registry-evidence-oid4vp/capacity", + "type": "https://id.registrystack.org/problems/registry-evidence-oid4vp/capacity", + "kind": "problem", + "lifecycle_status": "active", + "compatibility_line": "v1alpha1", + "product": "registry-evidence-oid4vp", + "code": "capacity", + "title": "Service Unavailable", + "summary": "The service is at capacity or holds as many sessions as it allows. Retry after the interval given.", + "description": "The service is at capacity or holds as many sessions as it allows. Retry after the interval given.", + "category": null, + "http_statuses": [ + 503 + ], + "guidance": { + "status": "not_published", + "retryable": null, + "caller_action": null, + "operator_action": null, + "note": "No per-identifier remediation guidance is published in this resolver record." + }, + "documented_by": [ + { + "title": "Error and status code reference", + "href": "https://docs.registrystack.org/reference/errors/" + } + ], + "authority": { + "scope": "identifier metadata", + "statement": "This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior. For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic." + }, + "identifier_policy": { + "stability": "stable", + "programmatic_key": "code", + "parsing": "Do not parse semantics from the URL path." + }, + "source_reference": { + "repository": "registry-stack", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + } +} diff --git a/public/problems/registry-evidence-oid4vp/capacity/index.html b/public/problems/registry-evidence-oid4vp/capacity/index.html new file mode 100644 index 000000000..9c7a8906b --- /dev/null +++ b/public/problems/registry-evidence-oid4vp/capacity/index.html @@ -0,0 +1,161 @@ + + + + + + Service Unavailable | Registry Stack identifiers + + + + + + + + +
+
+
+

Problem type · registry-evidence-oid4vp

+

Service Unavailable

+

The service is at capacity or holds as many sessions as it allows. Retry after the interval given.

+

https://id.registrystack.org/problems/registry-evidence-oid4vp/capacity

+
+
+
+
+

Authority boundary

+

This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior.

+

For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic.

+
+
+

Defined facts

+ + + + + + + + + + + +
Canonical URIhttps://id.registrystack.org/problems/registry-evidence-oid4vp/capacity
Kindproblem
Lifecycle statusactive
Compatibility linev1alpha1
Productregistry-evidence-oid4vp
Codecapacity
Categorynot published
HTTP statuses503
+
+
+

Documentation

+ +
+
+

Guidance

+ + + + + + + + +
Guidance statusnot_published
Retryablenot published
Caller actionnot published
Operator actionnot published
NoteNo per-identifier remediation guidance is published in this resolver record.
+
+
+

Problem record

+
{
+  "id": "https://id.registrystack.org/problems/registry-evidence-oid4vp/capacity",
+  "type": "https://id.registrystack.org/problems/registry-evidence-oid4vp/capacity",
+  "kind": "problem",
+  "lifecycle_status": "active",
+  "compatibility_line": "v1alpha1",
+  "product": "registry-evidence-oid4vp",
+  "code": "capacity",
+  "title": "Service Unavailable",
+  "summary": "The service is at capacity or holds as many sessions as it allows. Retry after the interval given.",
+  "description": "The service is at capacity or holds as many sessions as it allows. Retry after the interval given.",
+  "category": null,
+  "http_statuses": [
+    503
+  ],
+  "guidance": {
+    "status": "not_published",
+    "retryable": null,
+    "caller_action": null,
+    "operator_action": null,
+    "note": "No per-identifier remediation guidance is published in this resolver record."
+  },
+  "documented_by": [
+    {
+      "title": "Error and status code reference",
+      "href": "https://docs.registrystack.org/reference/errors/"
+    }
+  ],
+  "authority": {
+    "scope": "identifier metadata",
+    "statement": "This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior. For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic."
+  },
+  "identifier_policy": {
+    "stability": "stable",
+    "programmatic_key": "code",
+    "parsing": "Do not parse semantics from the URL path."
+  },
+  "source_reference": {
+    "repository": "registry-stack",
+    "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b",
+    "path": "crates/registry-evidence-oid4vp/src/problem.rs",
+    "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644"
+  }
+}
+ +
+
+
+ + + diff --git a/public/problems/registry-evidence-oid4vp/internal-error.json b/public/problems/registry-evidence-oid4vp/internal-error.json new file mode 100644 index 000000000..430cfcb5d --- /dev/null +++ b/public/problems/registry-evidence-oid4vp/internal-error.json @@ -0,0 +1,44 @@ +{ + "id": "https://id.registrystack.org/problems/registry-evidence-oid4vp/internal-error", + "type": "https://id.registrystack.org/problems/registry-evidence-oid4vp/internal-error", + "kind": "problem", + "lifecycle_status": "active", + "compatibility_line": "v1alpha1", + "product": "registry-evidence-oid4vp", + "code": "internal-error", + "title": "Internal Server Error", + "summary": "The request could not be completed.", + "description": "The request could not be completed.", + "category": null, + "http_statuses": [ + 500 + ], + "guidance": { + "status": "not_published", + "retryable": null, + "caller_action": null, + "operator_action": null, + "note": "No per-identifier remediation guidance is published in this resolver record." + }, + "documented_by": [ + { + "title": "Error and status code reference", + "href": "https://docs.registrystack.org/reference/errors/" + } + ], + "authority": { + "scope": "identifier metadata", + "statement": "This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior. For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic." + }, + "identifier_policy": { + "stability": "stable", + "programmatic_key": "code", + "parsing": "Do not parse semantics from the URL path." + }, + "source_reference": { + "repository": "registry-stack", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + } +} diff --git a/public/problems/registry-evidence-oid4vp/internal-error/index.html b/public/problems/registry-evidence-oid4vp/internal-error/index.html new file mode 100644 index 000000000..70cc42a70 --- /dev/null +++ b/public/problems/registry-evidence-oid4vp/internal-error/index.html @@ -0,0 +1,161 @@ + + + + + + Internal Server Error | Registry Stack identifiers + + + + + + + + +
+
+
+

Problem type · registry-evidence-oid4vp

+

Internal Server Error

+

The request could not be completed.

+

https://id.registrystack.org/problems/registry-evidence-oid4vp/internal-error

+
+
+
+
+

Authority boundary

+

This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior.

+

For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic.

+
+
+

Defined facts

+ + + + + + + + + + + +
Canonical URIhttps://id.registrystack.org/problems/registry-evidence-oid4vp/internal-error
Kindproblem
Lifecycle statusactive
Compatibility linev1alpha1
Productregistry-evidence-oid4vp
Codeinternal-error
Categorynot published
HTTP statuses500
+
+
+

Documentation

+ +
+
+

Guidance

+ + + + + + + + +
Guidance statusnot_published
Retryablenot published
Caller actionnot published
Operator actionnot published
NoteNo per-identifier remediation guidance is published in this resolver record.
+
+
+

Problem record

+
{
+  "id": "https://id.registrystack.org/problems/registry-evidence-oid4vp/internal-error",
+  "type": "https://id.registrystack.org/problems/registry-evidence-oid4vp/internal-error",
+  "kind": "problem",
+  "lifecycle_status": "active",
+  "compatibility_line": "v1alpha1",
+  "product": "registry-evidence-oid4vp",
+  "code": "internal-error",
+  "title": "Internal Server Error",
+  "summary": "The request could not be completed.",
+  "description": "The request could not be completed.",
+  "category": null,
+  "http_statuses": [
+    500
+  ],
+  "guidance": {
+    "status": "not_published",
+    "retryable": null,
+    "caller_action": null,
+    "operator_action": null,
+    "note": "No per-identifier remediation guidance is published in this resolver record."
+  },
+  "documented_by": [
+    {
+      "title": "Error and status code reference",
+      "href": "https://docs.registrystack.org/reference/errors/"
+    }
+  ],
+  "authority": {
+    "scope": "identifier metadata",
+    "statement": "This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior. For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic."
+  },
+  "identifier_policy": {
+    "stability": "stable",
+    "programmatic_key": "code",
+    "parsing": "Do not parse semantics from the URL path."
+  },
+  "source_reference": {
+    "repository": "registry-stack",
+    "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b",
+    "path": "crates/registry-evidence-oid4vp/src/problem.rs",
+    "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644"
+  }
+}
+ +
+
+
+ + + diff --git a/public/problems/registry-evidence-oid4vp/invalid-request.json b/public/problems/registry-evidence-oid4vp/invalid-request.json new file mode 100644 index 000000000..8a9966012 --- /dev/null +++ b/public/problems/registry-evidence-oid4vp/invalid-request.json @@ -0,0 +1,44 @@ +{ + "id": "https://id.registrystack.org/problems/registry-evidence-oid4vp/invalid-request", + "type": "https://id.registrystack.org/problems/registry-evidence-oid4vp/invalid-request", + "kind": "problem", + "lifecycle_status": "active", + "compatibility_line": "v1alpha1", + "product": "registry-evidence-oid4vp", + "code": "invalid-request", + "title": "Invalid Request", + "summary": "The request body is malformed or does not have the required members.", + "description": "The request body is malformed or does not have the required members.", + "category": null, + "http_statuses": [ + 400 + ], + "guidance": { + "status": "not_published", + "retryable": null, + "caller_action": null, + "operator_action": null, + "note": "No per-identifier remediation guidance is published in this resolver record." + }, + "documented_by": [ + { + "title": "Error and status code reference", + "href": "https://docs.registrystack.org/reference/errors/" + } + ], + "authority": { + "scope": "identifier metadata", + "statement": "This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior. For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic." + }, + "identifier_policy": { + "stability": "stable", + "programmatic_key": "code", + "parsing": "Do not parse semantics from the URL path." + }, + "source_reference": { + "repository": "registry-stack", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + } +} diff --git a/public/problems/registry-evidence-oid4vp/invalid-request/index.html b/public/problems/registry-evidence-oid4vp/invalid-request/index.html new file mode 100644 index 000000000..4ec7f5304 --- /dev/null +++ b/public/problems/registry-evidence-oid4vp/invalid-request/index.html @@ -0,0 +1,161 @@ + + + + + + Invalid Request | Registry Stack identifiers + + + + + + + + +
+
+
+

Problem type · registry-evidence-oid4vp

+

Invalid Request

+

The request body is malformed or does not have the required members.

+

https://id.registrystack.org/problems/registry-evidence-oid4vp/invalid-request

+
+
+
+
+

Authority boundary

+

This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior.

+

For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic.

+
+
+

Defined facts

+ + + + + + + + + + + +
Canonical URIhttps://id.registrystack.org/problems/registry-evidence-oid4vp/invalid-request
Kindproblem
Lifecycle statusactive
Compatibility linev1alpha1
Productregistry-evidence-oid4vp
Codeinvalid-request
Categorynot published
HTTP statuses400
+
+
+

Documentation

+ +
+
+

Guidance

+ + + + + + + + +
Guidance statusnot_published
Retryablenot published
Caller actionnot published
Operator actionnot published
NoteNo per-identifier remediation guidance is published in this resolver record.
+
+
+

Problem record

+
{
+  "id": "https://id.registrystack.org/problems/registry-evidence-oid4vp/invalid-request",
+  "type": "https://id.registrystack.org/problems/registry-evidence-oid4vp/invalid-request",
+  "kind": "problem",
+  "lifecycle_status": "active",
+  "compatibility_line": "v1alpha1",
+  "product": "registry-evidence-oid4vp",
+  "code": "invalid-request",
+  "title": "Invalid Request",
+  "summary": "The request body is malformed or does not have the required members.",
+  "description": "The request body is malformed or does not have the required members.",
+  "category": null,
+  "http_statuses": [
+    400
+  ],
+  "guidance": {
+    "status": "not_published",
+    "retryable": null,
+    "caller_action": null,
+    "operator_action": null,
+    "note": "No per-identifier remediation guidance is published in this resolver record."
+  },
+  "documented_by": [
+    {
+      "title": "Error and status code reference",
+      "href": "https://docs.registrystack.org/reference/errors/"
+    }
+  ],
+  "authority": {
+    "scope": "identifier metadata",
+    "statement": "This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior. For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic."
+  },
+  "identifier_policy": {
+    "stability": "stable",
+    "programmatic_key": "code",
+    "parsing": "Do not parse semantics from the URL path."
+  },
+  "source_reference": {
+    "repository": "registry-stack",
+    "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b",
+    "path": "crates/registry-evidence-oid4vp/src/problem.rs",
+    "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644"
+  }
+}
+ +
+
+
+ + + diff --git a/public/problems/registry-evidence-oid4vp/issuer-unavailable.json b/public/problems/registry-evidence-oid4vp/issuer-unavailable.json new file mode 100644 index 000000000..f27a0e0a2 --- /dev/null +++ b/public/problems/registry-evidence-oid4vp/issuer-unavailable.json @@ -0,0 +1,44 @@ +{ + "id": "https://id.registrystack.org/problems/registry-evidence-oid4vp/issuer-unavailable", + "type": "https://id.registrystack.org/problems/registry-evidence-oid4vp/issuer-unavailable", + "kind": "problem", + "lifecycle_status": "active", + "compatibility_line": "v1alpha1", + "product": "registry-evidence-oid4vp", + "code": "issuer-unavailable", + "title": "Service Unavailable", + "summary": "The token issuer is unavailable. Retry after the interval given.", + "description": "The token issuer is unavailable. Retry after the interval given.", + "category": null, + "http_statuses": [ + 503 + ], + "guidance": { + "status": "not_published", + "retryable": null, + "caller_action": null, + "operator_action": null, + "note": "No per-identifier remediation guidance is published in this resolver record." + }, + "documented_by": [ + { + "title": "Error and status code reference", + "href": "https://docs.registrystack.org/reference/errors/" + } + ], + "authority": { + "scope": "identifier metadata", + "statement": "This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior. For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic." + }, + "identifier_policy": { + "stability": "stable", + "programmatic_key": "code", + "parsing": "Do not parse semantics from the URL path." + }, + "source_reference": { + "repository": "registry-stack", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + } +} diff --git a/public/problems/registry-evidence-oid4vp/issuer-unavailable/index.html b/public/problems/registry-evidence-oid4vp/issuer-unavailable/index.html new file mode 100644 index 000000000..d7bd7494c --- /dev/null +++ b/public/problems/registry-evidence-oid4vp/issuer-unavailable/index.html @@ -0,0 +1,161 @@ + + + + + + Service Unavailable | Registry Stack identifiers + + + + + + + + +
+
+
+

Problem type · registry-evidence-oid4vp

+

Service Unavailable

+

The token issuer is unavailable. Retry after the interval given.

+

https://id.registrystack.org/problems/registry-evidence-oid4vp/issuer-unavailable

+
+
+
+
+

Authority boundary

+

This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior.

+

For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic.

+
+
+

Defined facts

+ + + + + + + + + + + +
Canonical URIhttps://id.registrystack.org/problems/registry-evidence-oid4vp/issuer-unavailable
Kindproblem
Lifecycle statusactive
Compatibility linev1alpha1
Productregistry-evidence-oid4vp
Codeissuer-unavailable
Categorynot published
HTTP statuses503
+
+
+

Documentation

+ +
+
+

Guidance

+ + + + + + + + +
Guidance statusnot_published
Retryablenot published
Caller actionnot published
Operator actionnot published
NoteNo per-identifier remediation guidance is published in this resolver record.
+
+
+

Problem record

+
{
+  "id": "https://id.registrystack.org/problems/registry-evidence-oid4vp/issuer-unavailable",
+  "type": "https://id.registrystack.org/problems/registry-evidence-oid4vp/issuer-unavailable",
+  "kind": "problem",
+  "lifecycle_status": "active",
+  "compatibility_line": "v1alpha1",
+  "product": "registry-evidence-oid4vp",
+  "code": "issuer-unavailable",
+  "title": "Service Unavailable",
+  "summary": "The token issuer is unavailable. Retry after the interval given.",
+  "description": "The token issuer is unavailable. Retry after the interval given.",
+  "category": null,
+  "http_statuses": [
+    503
+  ],
+  "guidance": {
+    "status": "not_published",
+    "retryable": null,
+    "caller_action": null,
+    "operator_action": null,
+    "note": "No per-identifier remediation guidance is published in this resolver record."
+  },
+  "documented_by": [
+    {
+      "title": "Error and status code reference",
+      "href": "https://docs.registrystack.org/reference/errors/"
+    }
+  ],
+  "authority": {
+    "scope": "identifier metadata",
+    "statement": "This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior. For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic."
+  },
+  "identifier_policy": {
+    "stability": "stable",
+    "programmatic_key": "code",
+    "parsing": "Do not parse semantics from the URL path."
+  },
+  "source_reference": {
+    "repository": "registry-stack",
+    "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b",
+    "path": "crates/registry-evidence-oid4vp/src/problem.rs",
+    "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644"
+  }
+}
+ +
+
+
+ + + diff --git a/public/problems/registry-evidence-oid4vp/method-not-allowed.json b/public/problems/registry-evidence-oid4vp/method-not-allowed.json new file mode 100644 index 000000000..efa4588fe --- /dev/null +++ b/public/problems/registry-evidence-oid4vp/method-not-allowed.json @@ -0,0 +1,44 @@ +{ + "id": "https://id.registrystack.org/problems/registry-evidence-oid4vp/method-not-allowed", + "type": "https://id.registrystack.org/problems/registry-evidence-oid4vp/method-not-allowed", + "kind": "problem", + "lifecycle_status": "active", + "compatibility_line": "v1alpha1", + "product": "registry-evidence-oid4vp", + "code": "method-not-allowed", + "title": "Method Not Allowed", + "summary": "The route exists but not for this method.", + "description": "The route exists but not for this method.", + "category": null, + "http_statuses": [ + 405 + ], + "guidance": { + "status": "not_published", + "retryable": null, + "caller_action": null, + "operator_action": null, + "note": "No per-identifier remediation guidance is published in this resolver record." + }, + "documented_by": [ + { + "title": "Error and status code reference", + "href": "https://docs.registrystack.org/reference/errors/" + } + ], + "authority": { + "scope": "identifier metadata", + "statement": "This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior. For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic." + }, + "identifier_policy": { + "stability": "stable", + "programmatic_key": "code", + "parsing": "Do not parse semantics from the URL path." + }, + "source_reference": { + "repository": "registry-stack", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + } +} diff --git a/public/problems/registry-evidence-oid4vp/method-not-allowed/index.html b/public/problems/registry-evidence-oid4vp/method-not-allowed/index.html new file mode 100644 index 000000000..15751ea1c --- /dev/null +++ b/public/problems/registry-evidence-oid4vp/method-not-allowed/index.html @@ -0,0 +1,161 @@ + + + + + + Method Not Allowed | Registry Stack identifiers + + + + + + + + +
+
+
+

Problem type · registry-evidence-oid4vp

+

Method Not Allowed

+

The route exists but not for this method.

+

https://id.registrystack.org/problems/registry-evidence-oid4vp/method-not-allowed

+
+
+
+
+

Authority boundary

+

This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior.

+

For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic.

+
+
+

Defined facts

+ + + + + + + + + + + +
Canonical URIhttps://id.registrystack.org/problems/registry-evidence-oid4vp/method-not-allowed
Kindproblem
Lifecycle statusactive
Compatibility linev1alpha1
Productregistry-evidence-oid4vp
Codemethod-not-allowed
Categorynot published
HTTP statuses405
+
+
+

Documentation

+ +
+
+

Guidance

+ + + + + + + + +
Guidance statusnot_published
Retryablenot published
Caller actionnot published
Operator actionnot published
NoteNo per-identifier remediation guidance is published in this resolver record.
+
+
+

Problem record

+
{
+  "id": "https://id.registrystack.org/problems/registry-evidence-oid4vp/method-not-allowed",
+  "type": "https://id.registrystack.org/problems/registry-evidence-oid4vp/method-not-allowed",
+  "kind": "problem",
+  "lifecycle_status": "active",
+  "compatibility_line": "v1alpha1",
+  "product": "registry-evidence-oid4vp",
+  "code": "method-not-allowed",
+  "title": "Method Not Allowed",
+  "summary": "The route exists but not for this method.",
+  "description": "The route exists but not for this method.",
+  "category": null,
+  "http_statuses": [
+    405
+  ],
+  "guidance": {
+    "status": "not_published",
+    "retryable": null,
+    "caller_action": null,
+    "operator_action": null,
+    "note": "No per-identifier remediation guidance is published in this resolver record."
+  },
+  "documented_by": [
+    {
+      "title": "Error and status code reference",
+      "href": "https://docs.registrystack.org/reference/errors/"
+    }
+  ],
+  "authority": {
+    "scope": "identifier metadata",
+    "statement": "This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior. For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic."
+  },
+  "identifier_policy": {
+    "stability": "stable",
+    "programmatic_key": "code",
+    "parsing": "Do not parse semantics from the URL path."
+  },
+  "source_reference": {
+    "repository": "registry-stack",
+    "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b",
+    "path": "crates/registry-evidence-oid4vp/src/problem.rs",
+    "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644"
+  }
+}
+ +
+
+
+ + + diff --git a/public/problems/registry-evidence-oid4vp/not-found.json b/public/problems/registry-evidence-oid4vp/not-found.json new file mode 100644 index 000000000..303748d9f --- /dev/null +++ b/public/problems/registry-evidence-oid4vp/not-found.json @@ -0,0 +1,44 @@ +{ + "id": "https://id.registrystack.org/problems/registry-evidence-oid4vp/not-found", + "type": "https://id.registrystack.org/problems/registry-evidence-oid4vp/not-found", + "kind": "problem", + "lifecycle_status": "active", + "compatibility_line": "v1alpha1", + "product": "registry-evidence-oid4vp", + "code": "not-found", + "title": "Not Found", + "summary": "The requested route does not exist.", + "description": "The requested route does not exist.", + "category": null, + "http_statuses": [ + 404 + ], + "guidance": { + "status": "not_published", + "retryable": null, + "caller_action": null, + "operator_action": null, + "note": "No per-identifier remediation guidance is published in this resolver record." + }, + "documented_by": [ + { + "title": "Error and status code reference", + "href": "https://docs.registrystack.org/reference/errors/" + } + ], + "authority": { + "scope": "identifier metadata", + "statement": "This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior. For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic." + }, + "identifier_policy": { + "stability": "stable", + "programmatic_key": "code", + "parsing": "Do not parse semantics from the URL path." + }, + "source_reference": { + "repository": "registry-stack", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + } +} diff --git a/public/problems/registry-evidence-oid4vp/not-found/index.html b/public/problems/registry-evidence-oid4vp/not-found/index.html new file mode 100644 index 000000000..d9f035c1b --- /dev/null +++ b/public/problems/registry-evidence-oid4vp/not-found/index.html @@ -0,0 +1,161 @@ + + + + + + Not Found | Registry Stack identifiers + + + + + + + + +
+
+
+

Problem type · registry-evidence-oid4vp

+

Not Found

+

The requested route does not exist.

+

https://id.registrystack.org/problems/registry-evidence-oid4vp/not-found

+
+
+
+
+

Authority boundary

+

This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior.

+

For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic.

+
+
+

Defined facts

+ + + + + + + + + + + +
Canonical URIhttps://id.registrystack.org/problems/registry-evidence-oid4vp/not-found
Kindproblem
Lifecycle statusactive
Compatibility linev1alpha1
Productregistry-evidence-oid4vp
Codenot-found
Categorynot published
HTTP statuses404
+
+
+

Documentation

+ +
+
+

Guidance

+ + + + + + + + +
Guidance statusnot_published
Retryablenot published
Caller actionnot published
Operator actionnot published
NoteNo per-identifier remediation guidance is published in this resolver record.
+
+
+

Problem record

+
{
+  "id": "https://id.registrystack.org/problems/registry-evidence-oid4vp/not-found",
+  "type": "https://id.registrystack.org/problems/registry-evidence-oid4vp/not-found",
+  "kind": "problem",
+  "lifecycle_status": "active",
+  "compatibility_line": "v1alpha1",
+  "product": "registry-evidence-oid4vp",
+  "code": "not-found",
+  "title": "Not Found",
+  "summary": "The requested route does not exist.",
+  "description": "The requested route does not exist.",
+  "category": null,
+  "http_statuses": [
+    404
+  ],
+  "guidance": {
+    "status": "not_published",
+    "retryable": null,
+    "caller_action": null,
+    "operator_action": null,
+    "note": "No per-identifier remediation guidance is published in this resolver record."
+  },
+  "documented_by": [
+    {
+      "title": "Error and status code reference",
+      "href": "https://docs.registrystack.org/reference/errors/"
+    }
+  ],
+  "authority": {
+    "scope": "identifier metadata",
+    "statement": "This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior. For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic."
+  },
+  "identifier_policy": {
+    "stability": "stable",
+    "programmatic_key": "code",
+    "parsing": "Do not parse semantics from the URL path."
+  },
+  "source_reference": {
+    "repository": "registry-stack",
+    "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b",
+    "path": "crates/registry-evidence-oid4vp/src/problem.rs",
+    "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644"
+  }
+}
+ +
+
+
+ + + diff --git a/public/problems/registry-evidence-oid4vp/not-yet-presented.json b/public/problems/registry-evidence-oid4vp/not-yet-presented.json new file mode 100644 index 000000000..721e79766 --- /dev/null +++ b/public/problems/registry-evidence-oid4vp/not-yet-presented.json @@ -0,0 +1,44 @@ +{ + "id": "https://id.registrystack.org/problems/registry-evidence-oid4vp/not-yet-presented", + "type": "https://id.registrystack.org/problems/registry-evidence-oid4vp/not-yet-presented", + "kind": "problem", + "lifecycle_status": "active", + "compatibility_line": "v1alpha1", + "product": "registry-evidence-oid4vp", + "code": "not-yet-presented", + "title": "Not Yet Presented", + "summary": "The wallet has not presented yet.", + "description": "The wallet has not presented yet.", + "category": null, + "http_statuses": [ + 409 + ], + "guidance": { + "status": "not_published", + "retryable": null, + "caller_action": null, + "operator_action": null, + "note": "No per-identifier remediation guidance is published in this resolver record." + }, + "documented_by": [ + { + "title": "Error and status code reference", + "href": "https://docs.registrystack.org/reference/errors/" + } + ], + "authority": { + "scope": "identifier metadata", + "statement": "This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior. For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic." + }, + "identifier_policy": { + "stability": "stable", + "programmatic_key": "code", + "parsing": "Do not parse semantics from the URL path." + }, + "source_reference": { + "repository": "registry-stack", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + } +} diff --git a/public/problems/registry-evidence-oid4vp/not-yet-presented/index.html b/public/problems/registry-evidence-oid4vp/not-yet-presented/index.html new file mode 100644 index 000000000..2e9e52215 --- /dev/null +++ b/public/problems/registry-evidence-oid4vp/not-yet-presented/index.html @@ -0,0 +1,161 @@ + + + + + + Not Yet Presented | Registry Stack identifiers + + + + + + + + +
+
+
+

Problem type · registry-evidence-oid4vp

+

Not Yet Presented

+

The wallet has not presented yet.

+

https://id.registrystack.org/problems/registry-evidence-oid4vp/not-yet-presented

+
+
+
+
+

Authority boundary

+

This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior.

+

For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic.

+
+
+

Defined facts

+ + + + + + + + + + + +
Canonical URIhttps://id.registrystack.org/problems/registry-evidence-oid4vp/not-yet-presented
Kindproblem
Lifecycle statusactive
Compatibility linev1alpha1
Productregistry-evidence-oid4vp
Codenot-yet-presented
Categorynot published
HTTP statuses409
+
+
+

Documentation

+ +
+
+

Guidance

+ + + + + + + + +
Guidance statusnot_published
Retryablenot published
Caller actionnot published
Operator actionnot published
NoteNo per-identifier remediation guidance is published in this resolver record.
+
+
+

Problem record

+
{
+  "id": "https://id.registrystack.org/problems/registry-evidence-oid4vp/not-yet-presented",
+  "type": "https://id.registrystack.org/problems/registry-evidence-oid4vp/not-yet-presented",
+  "kind": "problem",
+  "lifecycle_status": "active",
+  "compatibility_line": "v1alpha1",
+  "product": "registry-evidence-oid4vp",
+  "code": "not-yet-presented",
+  "title": "Not Yet Presented",
+  "summary": "The wallet has not presented yet.",
+  "description": "The wallet has not presented yet.",
+  "category": null,
+  "http_statuses": [
+    409
+  ],
+  "guidance": {
+    "status": "not_published",
+    "retryable": null,
+    "caller_action": null,
+    "operator_action": null,
+    "note": "No per-identifier remediation guidance is published in this resolver record."
+  },
+  "documented_by": [
+    {
+      "title": "Error and status code reference",
+      "href": "https://docs.registrystack.org/reference/errors/"
+    }
+  ],
+  "authority": {
+    "scope": "identifier metadata",
+    "statement": "This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior. For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic."
+  },
+  "identifier_policy": {
+    "stability": "stable",
+    "programmatic_key": "code",
+    "parsing": "Do not parse semantics from the URL path."
+  },
+  "source_reference": {
+    "repository": "registry-stack",
+    "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b",
+    "path": "crates/registry-evidence-oid4vp/src/problem.rs",
+    "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644"
+  }
+}
+ +
+
+
+ + + diff --git a/public/problems/registry-evidence-oid4vp/rate-limited.json b/public/problems/registry-evidence-oid4vp/rate-limited.json new file mode 100644 index 000000000..c6b067576 --- /dev/null +++ b/public/problems/registry-evidence-oid4vp/rate-limited.json @@ -0,0 +1,44 @@ +{ + "id": "https://id.registrystack.org/problems/registry-evidence-oid4vp/rate-limited", + "type": "https://id.registrystack.org/problems/registry-evidence-oid4vp/rate-limited", + "kind": "problem", + "lifecycle_status": "active", + "compatibility_line": "v1alpha1", + "product": "registry-evidence-oid4vp", + "code": "rate-limited", + "title": "Too Many Requests", + "summary": "Too many requests. Retry after the interval given.", + "description": "Too many requests. Retry after the interval given.", + "category": null, + "http_statuses": [ + 429 + ], + "guidance": { + "status": "not_published", + "retryable": null, + "caller_action": null, + "operator_action": null, + "note": "No per-identifier remediation guidance is published in this resolver record." + }, + "documented_by": [ + { + "title": "Error and status code reference", + "href": "https://docs.registrystack.org/reference/errors/" + } + ], + "authority": { + "scope": "identifier metadata", + "statement": "This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior. For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic." + }, + "identifier_policy": { + "stability": "stable", + "programmatic_key": "code", + "parsing": "Do not parse semantics from the URL path." + }, + "source_reference": { + "repository": "registry-stack", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + } +} diff --git a/public/problems/registry-evidence-oid4vp/rate-limited/index.html b/public/problems/registry-evidence-oid4vp/rate-limited/index.html new file mode 100644 index 000000000..4fbfd3ba3 --- /dev/null +++ b/public/problems/registry-evidence-oid4vp/rate-limited/index.html @@ -0,0 +1,161 @@ + + + + + + Too Many Requests | Registry Stack identifiers + + + + + + + + +
+
+
+

Problem type · registry-evidence-oid4vp

+

Too Many Requests

+

Too many requests. Retry after the interval given.

+

https://id.registrystack.org/problems/registry-evidence-oid4vp/rate-limited

+
+
+
+
+

Authority boundary

+

This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior.

+

For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic.

+
+
+

Defined facts

+ + + + + + + + + + + +
Canonical URIhttps://id.registrystack.org/problems/registry-evidence-oid4vp/rate-limited
Kindproblem
Lifecycle statusactive
Compatibility linev1alpha1
Productregistry-evidence-oid4vp
Coderate-limited
Categorynot published
HTTP statuses429
+
+
+

Documentation

+ +
+
+

Guidance

+ + + + + + + + +
Guidance statusnot_published
Retryablenot published
Caller actionnot published
Operator actionnot published
NoteNo per-identifier remediation guidance is published in this resolver record.
+
+
+

Problem record

+
{
+  "id": "https://id.registrystack.org/problems/registry-evidence-oid4vp/rate-limited",
+  "type": "https://id.registrystack.org/problems/registry-evidence-oid4vp/rate-limited",
+  "kind": "problem",
+  "lifecycle_status": "active",
+  "compatibility_line": "v1alpha1",
+  "product": "registry-evidence-oid4vp",
+  "code": "rate-limited",
+  "title": "Too Many Requests",
+  "summary": "Too many requests. Retry after the interval given.",
+  "description": "Too many requests. Retry after the interval given.",
+  "category": null,
+  "http_statuses": [
+    429
+  ],
+  "guidance": {
+    "status": "not_published",
+    "retryable": null,
+    "caller_action": null,
+    "operator_action": null,
+    "note": "No per-identifier remediation guidance is published in this resolver record."
+  },
+  "documented_by": [
+    {
+      "title": "Error and status code reference",
+      "href": "https://docs.registrystack.org/reference/errors/"
+    }
+  ],
+  "authority": {
+    "scope": "identifier metadata",
+    "statement": "This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior. For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic."
+  },
+  "identifier_policy": {
+    "stability": "stable",
+    "programmatic_key": "code",
+    "parsing": "Do not parse semantics from the URL path."
+  },
+  "source_reference": {
+    "repository": "registry-stack",
+    "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b",
+    "path": "crates/registry-evidence-oid4vp/src/problem.rs",
+    "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644"
+  }
+}
+ +
+
+
+ + + diff --git a/public/problems/registry-evidence-oid4vp/request-not-found.json b/public/problems/registry-evidence-oid4vp/request-not-found.json new file mode 100644 index 000000000..d0764cb5f --- /dev/null +++ b/public/problems/registry-evidence-oid4vp/request-not-found.json @@ -0,0 +1,44 @@ +{ + "id": "https://id.registrystack.org/problems/registry-evidence-oid4vp/request-not-found", + "type": "https://id.registrystack.org/problems/registry-evidence-oid4vp/request-not-found", + "kind": "problem", + "lifecycle_status": "active", + "compatibility_line": "v1alpha1", + "product": "registry-evidence-oid4vp", + "code": "request-not-found", + "title": "Not Found", + "summary": "The request object is unknown, expired, or no longer pending.", + "description": "The request object is unknown, expired, or no longer pending.", + "category": null, + "http_statuses": [ + 404 + ], + "guidance": { + "status": "not_published", + "retryable": null, + "caller_action": null, + "operator_action": null, + "note": "No per-identifier remediation guidance is published in this resolver record." + }, + "documented_by": [ + { + "title": "Error and status code reference", + "href": "https://docs.registrystack.org/reference/errors/" + } + ], + "authority": { + "scope": "identifier metadata", + "statement": "This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior. For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic." + }, + "identifier_policy": { + "stability": "stable", + "programmatic_key": "code", + "parsing": "Do not parse semantics from the URL path." + }, + "source_reference": { + "repository": "registry-stack", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + } +} diff --git a/public/problems/registry-evidence-oid4vp/request-not-found/index.html b/public/problems/registry-evidence-oid4vp/request-not-found/index.html new file mode 100644 index 000000000..752287c03 --- /dev/null +++ b/public/problems/registry-evidence-oid4vp/request-not-found/index.html @@ -0,0 +1,161 @@ + + + + + + Not Found | Registry Stack identifiers + + + + + + + + +
+
+
+

Problem type · registry-evidence-oid4vp

+

Not Found

+

The request object is unknown, expired, or no longer pending.

+

https://id.registrystack.org/problems/registry-evidence-oid4vp/request-not-found

+
+
+
+
+

Authority boundary

+

This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior.

+

For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic.

+
+
+

Defined facts

+ + + + + + + + + + + +
Canonical URIhttps://id.registrystack.org/problems/registry-evidence-oid4vp/request-not-found
Kindproblem
Lifecycle statusactive
Compatibility linev1alpha1
Productregistry-evidence-oid4vp
Coderequest-not-found
Categorynot published
HTTP statuses404
+
+
+

Documentation

+ +
+
+

Guidance

+ + + + + + + + +
Guidance statusnot_published
Retryablenot published
Caller actionnot published
Operator actionnot published
NoteNo per-identifier remediation guidance is published in this resolver record.
+
+
+

Problem record

+
{
+  "id": "https://id.registrystack.org/problems/registry-evidence-oid4vp/request-not-found",
+  "type": "https://id.registrystack.org/problems/registry-evidence-oid4vp/request-not-found",
+  "kind": "problem",
+  "lifecycle_status": "active",
+  "compatibility_line": "v1alpha1",
+  "product": "registry-evidence-oid4vp",
+  "code": "request-not-found",
+  "title": "Not Found",
+  "summary": "The request object is unknown, expired, or no longer pending.",
+  "description": "The request object is unknown, expired, or no longer pending.",
+  "category": null,
+  "http_statuses": [
+    404
+  ],
+  "guidance": {
+    "status": "not_published",
+    "retryable": null,
+    "caller_action": null,
+    "operator_action": null,
+    "note": "No per-identifier remediation guidance is published in this resolver record."
+  },
+  "documented_by": [
+    {
+      "title": "Error and status code reference",
+      "href": "https://docs.registrystack.org/reference/errors/"
+    }
+  ],
+  "authority": {
+    "scope": "identifier metadata",
+    "statement": "This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior. For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic."
+  },
+  "identifier_policy": {
+    "stability": "stable",
+    "programmatic_key": "code",
+    "parsing": "Do not parse semantics from the URL path."
+  },
+  "source_reference": {
+    "repository": "registry-stack",
+    "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b",
+    "path": "crates/registry-evidence-oid4vp/src/problem.rs",
+    "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644"
+  }
+}
+ +
+
+
+ + + diff --git a/public/problems/registry-evidence-oid4vp/request-timeout.json b/public/problems/registry-evidence-oid4vp/request-timeout.json new file mode 100644 index 000000000..a8576e135 --- /dev/null +++ b/public/problems/registry-evidence-oid4vp/request-timeout.json @@ -0,0 +1,44 @@ +{ + "id": "https://id.registrystack.org/problems/registry-evidence-oid4vp/request-timeout", + "type": "https://id.registrystack.org/problems/registry-evidence-oid4vp/request-timeout", + "kind": "problem", + "lifecycle_status": "active", + "compatibility_line": "v1alpha1", + "product": "registry-evidence-oid4vp", + "code": "request-timeout", + "title": "Request Timeout", + "summary": "The request took longer than the service waits.", + "description": "The request took longer than the service waits.", + "category": null, + "http_statuses": [ + 408 + ], + "guidance": { + "status": "not_published", + "retryable": null, + "caller_action": null, + "operator_action": null, + "note": "No per-identifier remediation guidance is published in this resolver record." + }, + "documented_by": [ + { + "title": "Error and status code reference", + "href": "https://docs.registrystack.org/reference/errors/" + } + ], + "authority": { + "scope": "identifier metadata", + "statement": "This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior. For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic." + }, + "identifier_policy": { + "stability": "stable", + "programmatic_key": "code", + "parsing": "Do not parse semantics from the URL path." + }, + "source_reference": { + "repository": "registry-stack", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + } +} diff --git a/public/problems/registry-evidence-oid4vp/request-timeout/index.html b/public/problems/registry-evidence-oid4vp/request-timeout/index.html new file mode 100644 index 000000000..a4c79bc9e --- /dev/null +++ b/public/problems/registry-evidence-oid4vp/request-timeout/index.html @@ -0,0 +1,161 @@ + + + + + + Request Timeout | Registry Stack identifiers + + + + + + + + +
+
+
+

Problem type · registry-evidence-oid4vp

+

Request Timeout

+

The request took longer than the service waits.

+

https://id.registrystack.org/problems/registry-evidence-oid4vp/request-timeout

+
+
+
+
+

Authority boundary

+

This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior.

+

For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic.

+
+
+

Defined facts

+ + + + + + + + + + + +
Canonical URIhttps://id.registrystack.org/problems/registry-evidence-oid4vp/request-timeout
Kindproblem
Lifecycle statusactive
Compatibility linev1alpha1
Productregistry-evidence-oid4vp
Coderequest-timeout
Categorynot published
HTTP statuses408
+
+
+

Documentation

+ +
+
+

Guidance

+ + + + + + + + +
Guidance statusnot_published
Retryablenot published
Caller actionnot published
Operator actionnot published
NoteNo per-identifier remediation guidance is published in this resolver record.
+
+
+

Problem record

+
{
+  "id": "https://id.registrystack.org/problems/registry-evidence-oid4vp/request-timeout",
+  "type": "https://id.registrystack.org/problems/registry-evidence-oid4vp/request-timeout",
+  "kind": "problem",
+  "lifecycle_status": "active",
+  "compatibility_line": "v1alpha1",
+  "product": "registry-evidence-oid4vp",
+  "code": "request-timeout",
+  "title": "Request Timeout",
+  "summary": "The request took longer than the service waits.",
+  "description": "The request took longer than the service waits.",
+  "category": null,
+  "http_statuses": [
+    408
+  ],
+  "guidance": {
+    "status": "not_published",
+    "retryable": null,
+    "caller_action": null,
+    "operator_action": null,
+    "note": "No per-identifier remediation guidance is published in this resolver record."
+  },
+  "documented_by": [
+    {
+      "title": "Error and status code reference",
+      "href": "https://docs.registrystack.org/reference/errors/"
+    }
+  ],
+  "authority": {
+    "scope": "identifier metadata",
+    "statement": "This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior. For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic."
+  },
+  "identifier_policy": {
+    "stability": "stable",
+    "programmatic_key": "code",
+    "parsing": "Do not parse semantics from the URL path."
+  },
+  "source_reference": {
+    "repository": "registry-stack",
+    "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b",
+    "path": "crates/registry-evidence-oid4vp/src/problem.rs",
+    "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644"
+  }
+}
+ +
+
+
+ + + diff --git a/public/problems/registry-evidence-oid4vp/session-not-found.json b/public/problems/registry-evidence-oid4vp/session-not-found.json new file mode 100644 index 000000000..8baf8c194 --- /dev/null +++ b/public/problems/registry-evidence-oid4vp/session-not-found.json @@ -0,0 +1,44 @@ +{ + "id": "https://id.registrystack.org/problems/registry-evidence-oid4vp/session-not-found", + "type": "https://id.registrystack.org/problems/registry-evidence-oid4vp/session-not-found", + "kind": "problem", + "lifecycle_status": "active", + "compatibility_line": "v1alpha1", + "product": "registry-evidence-oid4vp", + "code": "session-not-found", + "title": "Not Found", + "summary": "The session is unknown, expired, already read, or created by another principal.", + "description": "The session is unknown, expired, already read, or created by another principal.", + "category": null, + "http_statuses": [ + 404 + ], + "guidance": { + "status": "not_published", + "retryable": null, + "caller_action": null, + "operator_action": null, + "note": "No per-identifier remediation guidance is published in this resolver record." + }, + "documented_by": [ + { + "title": "Error and status code reference", + "href": "https://docs.registrystack.org/reference/errors/" + } + ], + "authority": { + "scope": "identifier metadata", + "statement": "This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior. For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic." + }, + "identifier_policy": { + "stability": "stable", + "programmatic_key": "code", + "parsing": "Do not parse semantics from the URL path." + }, + "source_reference": { + "repository": "registry-stack", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + } +} diff --git a/public/problems/registry-evidence-oid4vp/session-not-found/index.html b/public/problems/registry-evidence-oid4vp/session-not-found/index.html new file mode 100644 index 000000000..8825db40a --- /dev/null +++ b/public/problems/registry-evidence-oid4vp/session-not-found/index.html @@ -0,0 +1,161 @@ + + + + + + Not Found | Registry Stack identifiers + + + + + + + + +
+
+
+

Problem type · registry-evidence-oid4vp

+

Not Found

+

The session is unknown, expired, already read, or created by another principal.

+

https://id.registrystack.org/problems/registry-evidence-oid4vp/session-not-found

+
+
+
+
+

Authority boundary

+

This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior.

+

For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic.

+
+
+

Defined facts

+ + + + + + + + + + + +
Canonical URIhttps://id.registrystack.org/problems/registry-evidence-oid4vp/session-not-found
Kindproblem
Lifecycle statusactive
Compatibility linev1alpha1
Productregistry-evidence-oid4vp
Codesession-not-found
Categorynot published
HTTP statuses404
+
+
+

Documentation

+ +
+
+

Guidance

+ + + + + + + + +
Guidance statusnot_published
Retryablenot published
Caller actionnot published
Operator actionnot published
NoteNo per-identifier remediation guidance is published in this resolver record.
+
+
+

Problem record

+
{
+  "id": "https://id.registrystack.org/problems/registry-evidence-oid4vp/session-not-found",
+  "type": "https://id.registrystack.org/problems/registry-evidence-oid4vp/session-not-found",
+  "kind": "problem",
+  "lifecycle_status": "active",
+  "compatibility_line": "v1alpha1",
+  "product": "registry-evidence-oid4vp",
+  "code": "session-not-found",
+  "title": "Not Found",
+  "summary": "The session is unknown, expired, already read, or created by another principal.",
+  "description": "The session is unknown, expired, already read, or created by another principal.",
+  "category": null,
+  "http_statuses": [
+    404
+  ],
+  "guidance": {
+    "status": "not_published",
+    "retryable": null,
+    "caller_action": null,
+    "operator_action": null,
+    "note": "No per-identifier remediation guidance is published in this resolver record."
+  },
+  "documented_by": [
+    {
+      "title": "Error and status code reference",
+      "href": "https://docs.registrystack.org/reference/errors/"
+    }
+  ],
+  "authority": {
+    "scope": "identifier metadata",
+    "statement": "This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior. For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic."
+  },
+  "identifier_policy": {
+    "stability": "stable",
+    "programmatic_key": "code",
+    "parsing": "Do not parse semantics from the URL path."
+  },
+  "source_reference": {
+    "repository": "registry-stack",
+    "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b",
+    "path": "crates/registry-evidence-oid4vp/src/problem.rs",
+    "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644"
+  }
+}
+ +
+
+
+ + + diff --git a/public/problems/registry-evidence-oid4vp/unauthorized.json b/public/problems/registry-evidence-oid4vp/unauthorized.json new file mode 100644 index 000000000..2bf448514 --- /dev/null +++ b/public/problems/registry-evidence-oid4vp/unauthorized.json @@ -0,0 +1,44 @@ +{ + "id": "https://id.registrystack.org/problems/registry-evidence-oid4vp/unauthorized", + "type": "https://id.registrystack.org/problems/registry-evidence-oid4vp/unauthorized", + "kind": "problem", + "lifecycle_status": "active", + "compatibility_line": "v1alpha1", + "product": "registry-evidence-oid4vp", + "code": "unauthorized", + "title": "Unauthorized", + "summary": "A valid bearer token is required.", + "description": "A valid bearer token is required.", + "category": null, + "http_statuses": [ + 401 + ], + "guidance": { + "status": "not_published", + "retryable": null, + "caller_action": null, + "operator_action": null, + "note": "No per-identifier remediation guidance is published in this resolver record." + }, + "documented_by": [ + { + "title": "Error and status code reference", + "href": "https://docs.registrystack.org/reference/errors/" + } + ], + "authority": { + "scope": "identifier metadata", + "statement": "This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior. For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic." + }, + "identifier_policy": { + "stability": "stable", + "programmatic_key": "code", + "parsing": "Do not parse semantics from the URL path." + }, + "source_reference": { + "repository": "registry-stack", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + } +} diff --git a/public/problems/registry-evidence-oid4vp/unauthorized/index.html b/public/problems/registry-evidence-oid4vp/unauthorized/index.html new file mode 100644 index 000000000..25bb175b8 --- /dev/null +++ b/public/problems/registry-evidence-oid4vp/unauthorized/index.html @@ -0,0 +1,161 @@ + + + + + + Unauthorized | Registry Stack identifiers + + + + + + + + +
+
+
+

Problem type · registry-evidence-oid4vp

+

Unauthorized

+

A valid bearer token is required.

+

https://id.registrystack.org/problems/registry-evidence-oid4vp/unauthorized

+
+
+
+
+

Authority boundary

+

This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior.

+

For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic.

+
+
+

Defined facts

+ + + + + + + + + + + +
Canonical URIhttps://id.registrystack.org/problems/registry-evidence-oid4vp/unauthorized
Kindproblem
Lifecycle statusactive
Compatibility linev1alpha1
Productregistry-evidence-oid4vp
Codeunauthorized
Categorynot published
HTTP statuses401
+
+
+

Documentation

+ +
+
+

Guidance

+ + + + + + + + +
Guidance statusnot_published
Retryablenot published
Caller actionnot published
Operator actionnot published
NoteNo per-identifier remediation guidance is published in this resolver record.
+
+
+

Problem record

+
{
+  "id": "https://id.registrystack.org/problems/registry-evidence-oid4vp/unauthorized",
+  "type": "https://id.registrystack.org/problems/registry-evidence-oid4vp/unauthorized",
+  "kind": "problem",
+  "lifecycle_status": "active",
+  "compatibility_line": "v1alpha1",
+  "product": "registry-evidence-oid4vp",
+  "code": "unauthorized",
+  "title": "Unauthorized",
+  "summary": "A valid bearer token is required.",
+  "description": "A valid bearer token is required.",
+  "category": null,
+  "http_statuses": [
+    401
+  ],
+  "guidance": {
+    "status": "not_published",
+    "retryable": null,
+    "caller_action": null,
+    "operator_action": null,
+    "note": "No per-identifier remediation guidance is published in this resolver record."
+  },
+  "documented_by": [
+    {
+      "title": "Error and status code reference",
+      "href": "https://docs.registrystack.org/reference/errors/"
+    }
+  ],
+  "authority": {
+    "scope": "identifier metadata",
+    "statement": "This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior. For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic."
+  },
+  "identifier_policy": {
+    "stability": "stable",
+    "programmatic_key": "code",
+    "parsing": "Do not parse semantics from the URL path."
+  },
+  "source_reference": {
+    "repository": "registry-stack",
+    "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b",
+    "path": "crates/registry-evidence-oid4vp/src/problem.rs",
+    "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644"
+  }
+}
+ +
+
+
+ + + diff --git a/public/problems/registry-evidence-oid4vp/unknown-policy.json b/public/problems/registry-evidence-oid4vp/unknown-policy.json new file mode 100644 index 000000000..6ed7f091d --- /dev/null +++ b/public/problems/registry-evidence-oid4vp/unknown-policy.json @@ -0,0 +1,44 @@ +{ + "id": "https://id.registrystack.org/problems/registry-evidence-oid4vp/unknown-policy", + "type": "https://id.registrystack.org/problems/registry-evidence-oid4vp/unknown-policy", + "kind": "problem", + "lifecycle_status": "active", + "compatibility_line": "v1alpha1", + "product": "registry-evidence-oid4vp", + "code": "unknown-policy", + "title": "Unknown Policy", + "summary": "No presentation policy has the identifier given.", + "description": "No presentation policy has the identifier given.", + "category": null, + "http_statuses": [ + 422 + ], + "guidance": { + "status": "not_published", + "retryable": null, + "caller_action": null, + "operator_action": null, + "note": "No per-identifier remediation guidance is published in this resolver record." + }, + "documented_by": [ + { + "title": "Error and status code reference", + "href": "https://docs.registrystack.org/reference/errors/" + } + ], + "authority": { + "scope": "identifier metadata", + "statement": "This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior. For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic." + }, + "identifier_policy": { + "stability": "stable", + "programmatic_key": "code", + "parsing": "Do not parse semantics from the URL path." + }, + "source_reference": { + "repository": "registry-stack", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + } +} diff --git a/public/problems/registry-evidence-oid4vp/unknown-policy/index.html b/public/problems/registry-evidence-oid4vp/unknown-policy/index.html new file mode 100644 index 000000000..0eee76999 --- /dev/null +++ b/public/problems/registry-evidence-oid4vp/unknown-policy/index.html @@ -0,0 +1,161 @@ + + + + + + Unknown Policy | Registry Stack identifiers + + + + + + + + +
+
+
+

Problem type · registry-evidence-oid4vp

+

Unknown Policy

+

No presentation policy has the identifier given.

+

https://id.registrystack.org/problems/registry-evidence-oid4vp/unknown-policy

+
+
+
+
+

Authority boundary

+

This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior.

+

For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic.

+
+
+

Defined facts

+ + + + + + + + + + + +
Canonical URIhttps://id.registrystack.org/problems/registry-evidence-oid4vp/unknown-policy
Kindproblem
Lifecycle statusactive
Compatibility linev1alpha1
Productregistry-evidence-oid4vp
Codeunknown-policy
Categorynot published
HTTP statuses422
+
+
+

Documentation

+ +
+
+

Guidance

+ + + + + + + + +
Guidance statusnot_published
Retryablenot published
Caller actionnot published
Operator actionnot published
NoteNo per-identifier remediation guidance is published in this resolver record.
+
+
+

Problem record

+
{
+  "id": "https://id.registrystack.org/problems/registry-evidence-oid4vp/unknown-policy",
+  "type": "https://id.registrystack.org/problems/registry-evidence-oid4vp/unknown-policy",
+  "kind": "problem",
+  "lifecycle_status": "active",
+  "compatibility_line": "v1alpha1",
+  "product": "registry-evidence-oid4vp",
+  "code": "unknown-policy",
+  "title": "Unknown Policy",
+  "summary": "No presentation policy has the identifier given.",
+  "description": "No presentation policy has the identifier given.",
+  "category": null,
+  "http_statuses": [
+    422
+  ],
+  "guidance": {
+    "status": "not_published",
+    "retryable": null,
+    "caller_action": null,
+    "operator_action": null,
+    "note": "No per-identifier remediation guidance is published in this resolver record."
+  },
+  "documented_by": [
+    {
+      "title": "Error and status code reference",
+      "href": "https://docs.registrystack.org/reference/errors/"
+    }
+  ],
+  "authority": {
+    "scope": "identifier metadata",
+    "statement": "This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior. For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic."
+  },
+  "identifier_policy": {
+    "stability": "stable",
+    "programmatic_key": "code",
+    "parsing": "Do not parse semantics from the URL path."
+  },
+  "source_reference": {
+    "repository": "registry-stack",
+    "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b",
+    "path": "crates/registry-evidence-oid4vp/src/problem.rs",
+    "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644"
+  }
+}
+ +
+
+
+ + + diff --git a/public/problems/registry-evidence-oid4vp/unsupported-media-type.json b/public/problems/registry-evidence-oid4vp/unsupported-media-type.json new file mode 100644 index 000000000..196bc4f80 --- /dev/null +++ b/public/problems/registry-evidence-oid4vp/unsupported-media-type.json @@ -0,0 +1,44 @@ +{ + "id": "https://id.registrystack.org/problems/registry-evidence-oid4vp/unsupported-media-type", + "type": "https://id.registrystack.org/problems/registry-evidence-oid4vp/unsupported-media-type", + "kind": "problem", + "lifecycle_status": "active", + "compatibility_line": "v1alpha1", + "product": "registry-evidence-oid4vp", + "code": "unsupported-media-type", + "title": "Unsupported Media Type", + "summary": "The request body is not application/json.", + "description": "The request body is not application/json.", + "category": null, + "http_statuses": [ + 415 + ], + "guidance": { + "status": "not_published", + "retryable": null, + "caller_action": null, + "operator_action": null, + "note": "No per-identifier remediation guidance is published in this resolver record." + }, + "documented_by": [ + { + "title": "Error and status code reference", + "href": "https://docs.registrystack.org/reference/errors/" + } + ], + "authority": { + "scope": "identifier metadata", + "statement": "This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior. For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic." + }, + "identifier_policy": { + "stability": "stable", + "programmatic_key": "code", + "parsing": "Do not parse semantics from the URL path." + }, + "source_reference": { + "repository": "registry-stack", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + } +} diff --git a/public/problems/registry-evidence-oid4vp/unsupported-media-type/index.html b/public/problems/registry-evidence-oid4vp/unsupported-media-type/index.html new file mode 100644 index 000000000..8f1e11053 --- /dev/null +++ b/public/problems/registry-evidence-oid4vp/unsupported-media-type/index.html @@ -0,0 +1,161 @@ + + + + + + Unsupported Media Type | Registry Stack identifiers + + + + + + + + +
+
+
+

Problem type · registry-evidence-oid4vp

+

Unsupported Media Type

+

The request body is not application/json.

+

https://id.registrystack.org/problems/registry-evidence-oid4vp/unsupported-media-type

+
+
+
+
+

Authority boundary

+

This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior.

+

For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic.

+
+
+

Defined facts

+ + + + + + + + + + + +
Canonical URIhttps://id.registrystack.org/problems/registry-evidence-oid4vp/unsupported-media-type
Kindproblem
Lifecycle statusactive
Compatibility linev1alpha1
Productregistry-evidence-oid4vp
Codeunsupported-media-type
Categorynot published
HTTP statuses415
+
+
+

Documentation

+ +
+
+

Guidance

+ + + + + + + + +
Guidance statusnot_published
Retryablenot published
Caller actionnot published
Operator actionnot published
NoteNo per-identifier remediation guidance is published in this resolver record.
+
+
+

Problem record

+
{
+  "id": "https://id.registrystack.org/problems/registry-evidence-oid4vp/unsupported-media-type",
+  "type": "https://id.registrystack.org/problems/registry-evidence-oid4vp/unsupported-media-type",
+  "kind": "problem",
+  "lifecycle_status": "active",
+  "compatibility_line": "v1alpha1",
+  "product": "registry-evidence-oid4vp",
+  "code": "unsupported-media-type",
+  "title": "Unsupported Media Type",
+  "summary": "The request body is not application/json.",
+  "description": "The request body is not application/json.",
+  "category": null,
+  "http_statuses": [
+    415
+  ],
+  "guidance": {
+    "status": "not_published",
+    "retryable": null,
+    "caller_action": null,
+    "operator_action": null,
+    "note": "No per-identifier remediation guidance is published in this resolver record."
+  },
+  "documented_by": [
+    {
+      "title": "Error and status code reference",
+      "href": "https://docs.registrystack.org/reference/errors/"
+    }
+  ],
+  "authority": {
+    "scope": "identifier metadata",
+    "statement": "This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior. For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic."
+  },
+  "identifier_policy": {
+    "stability": "stable",
+    "programmatic_key": "code",
+    "parsing": "Do not parse semantics from the URL path."
+  },
+  "source_reference": {
+    "repository": "registry-stack",
+    "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b",
+    "path": "crates/registry-evidence-oid4vp/src/problem.rs",
+    "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644"
+  }
+}
+ +
+
+
+ + + diff --git a/public/problems/registry-evidence-oid4vp/wallet-error.json b/public/problems/registry-evidence-oid4vp/wallet-error.json new file mode 100644 index 000000000..7604d7df2 --- /dev/null +++ b/public/problems/registry-evidence-oid4vp/wallet-error.json @@ -0,0 +1,44 @@ +{ + "id": "https://id.registrystack.org/problems/registry-evidence-oid4vp/wallet-error", + "type": "https://id.registrystack.org/problems/registry-evidence-oid4vp/wallet-error", + "kind": "problem", + "lifecycle_status": "active", + "compatibility_line": "v1alpha1", + "product": "registry-evidence-oid4vp", + "code": "wallet-error", + "title": "Wallet Error", + "summary": "The wallet reported an error instead of presenting. The closed category names it.", + "description": "The wallet reported an error instead of presenting. The closed category names it.", + "category": null, + "http_statuses": [ + 422 + ], + "guidance": { + "status": "not_published", + "retryable": null, + "caller_action": null, + "operator_action": null, + "note": "No per-identifier remediation guidance is published in this resolver record." + }, + "documented_by": [ + { + "title": "Error and status code reference", + "href": "https://docs.registrystack.org/reference/errors/" + } + ], + "authority": { + "scope": "identifier metadata", + "statement": "This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior. For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic." + }, + "identifier_policy": { + "stability": "stable", + "programmatic_key": "code", + "parsing": "Do not parse semantics from the URL path." + }, + "source_reference": { + "repository": "registry-stack", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + } +} diff --git a/public/problems/registry-evidence-oid4vp/wallet-error/index.html b/public/problems/registry-evidence-oid4vp/wallet-error/index.html new file mode 100644 index 000000000..8b39b6b61 --- /dev/null +++ b/public/problems/registry-evidence-oid4vp/wallet-error/index.html @@ -0,0 +1,161 @@ + + + + + + Wallet Error | Registry Stack identifiers + + + + + + + + +
+
+
+

Problem type · registry-evidence-oid4vp

+

Wallet Error

+

The wallet reported an error instead of presenting. The closed category names it.

+

https://id.registrystack.org/problems/registry-evidence-oid4vp/wallet-error

+
+
+
+
+

Authority boundary

+

This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior.

+

For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic.

+
+
+

Defined facts

+ + + + + + + + + + + +
Canonical URIhttps://id.registrystack.org/problems/registry-evidence-oid4vp/wallet-error
Kindproblem
Lifecycle statusactive
Compatibility linev1alpha1
Productregistry-evidence-oid4vp
Codewallet-error
Categorynot published
HTTP statuses422
+
+
+

Documentation

+ +
+
+

Guidance

+ + + + + + + + +
Guidance statusnot_published
Retryablenot published
Caller actionnot published
Operator actionnot published
NoteNo per-identifier remediation guidance is published in this resolver record.
+
+
+

Problem record

+
{
+  "id": "https://id.registrystack.org/problems/registry-evidence-oid4vp/wallet-error",
+  "type": "https://id.registrystack.org/problems/registry-evidence-oid4vp/wallet-error",
+  "kind": "problem",
+  "lifecycle_status": "active",
+  "compatibility_line": "v1alpha1",
+  "product": "registry-evidence-oid4vp",
+  "code": "wallet-error",
+  "title": "Wallet Error",
+  "summary": "The wallet reported an error instead of presenting. The closed category names it.",
+  "description": "The wallet reported an error instead of presenting. The closed category names it.",
+  "category": null,
+  "http_statuses": [
+    422
+  ],
+  "guidance": {
+    "status": "not_published",
+    "retryable": null,
+    "caller_action": null,
+    "operator_action": null,
+    "note": "No per-identifier remediation guidance is published in this resolver record."
+  },
+  "documented_by": [
+    {
+      "title": "Error and status code reference",
+      "href": "https://docs.registrystack.org/reference/errors/"
+    }
+  ],
+  "authority": {
+    "scope": "identifier metadata",
+    "statement": "This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior. For problem responses, use the stable code extension and the response status/detail fields. Do not parse URL paths for program logic."
+  },
+  "identifier_policy": {
+    "stability": "stable",
+    "programmatic_key": "code",
+    "parsing": "Do not parse semantics from the URL path."
+  },
+  "source_reference": {
+    "repository": "registry-stack",
+    "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b",
+    "path": "crates/registry-evidence-oid4vp/src/problem.rs",
+    "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644"
+  }
+}
+ +
+
+
+ + + diff --git a/public/problems/registry-evidence/auth/invalid-credential.json b/public/problems/registry-evidence/auth/invalid-credential.json index 9017fff7c..7bbb2b259 100644 --- a/public/problems/registry-evidence/auth/invalid-credential.json +++ b/public/problems/registry-evidence/auth/invalid-credential.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-evidence/src/problem.rs", "sha256": "09e2898f19ebef1f3bf4699280261a4c7549b05eb9f8d30dba60ab2973bc06f9" } diff --git a/public/problems/registry-evidence/auth/invalid-credential/index.html b/public/problems/registry-evidence/auth/invalid-credential/index.html index f5caf9d9e..22303e474 100644 --- a/public/problems/registry-evidence/auth/invalid-credential/index.html +++ b/public/problems/registry-evidence/auth/invalid-credential/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-evidence/src/problem.rs", "sha256": "09e2898f19ebef1f3bf4699280261a4c7549b05eb9f8d30dba60ab2973bc06f9" } diff --git a/public/problems/registry-evidence/evidence/denied.json b/public/problems/registry-evidence/evidence/denied.json index b8c1b7b1e..2c1497fe8 100644 --- a/public/problems/registry-evidence/evidence/denied.json +++ b/public/problems/registry-evidence/evidence/denied.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-evidence/src/problem.rs", "sha256": "09e2898f19ebef1f3bf4699280261a4c7549b05eb9f8d30dba60ab2973bc06f9" } diff --git a/public/problems/registry-evidence/evidence/denied/index.html b/public/problems/registry-evidence/evidence/denied/index.html index e0158794a..46cf54636 100644 --- a/public/problems/registry-evidence/evidence/denied/index.html +++ b/public/problems/registry-evidence/evidence/denied/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-evidence/src/problem.rs", "sha256": "09e2898f19ebef1f3bf4699280261a4c7549b05eb9f8d30dba60ab2973bc06f9" } diff --git a/public/problems/registry-evidence/evidence/invalid-request.json b/public/problems/registry-evidence/evidence/invalid-request.json index 0366983d1..19e36c466 100644 --- a/public/problems/registry-evidence/evidence/invalid-request.json +++ b/public/problems/registry-evidence/evidence/invalid-request.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-evidence/src/problem.rs", "sha256": "09e2898f19ebef1f3bf4699280261a4c7549b05eb9f8d30dba60ab2973bc06f9" } diff --git a/public/problems/registry-evidence/evidence/invalid-request/index.html b/public/problems/registry-evidence/evidence/invalid-request/index.html index 2047c57d1..66d696b93 100644 --- a/public/problems/registry-evidence/evidence/invalid-request/index.html +++ b/public/problems/registry-evidence/evidence/invalid-request/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-evidence/src/problem.rs", "sha256": "09e2898f19ebef1f3bf4699280261a4c7549b05eb9f8d30dba60ab2973bc06f9" } diff --git a/public/problems/registry-evidence/evidence/rate-limited.json b/public/problems/registry-evidence/evidence/rate-limited.json index e6a0c3922..fd754d40b 100644 --- a/public/problems/registry-evidence/evidence/rate-limited.json +++ b/public/problems/registry-evidence/evidence/rate-limited.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-evidence/src/problem.rs", "sha256": "09e2898f19ebef1f3bf4699280261a4c7549b05eb9f8d30dba60ab2973bc06f9" } diff --git a/public/problems/registry-evidence/evidence/rate-limited/index.html b/public/problems/registry-evidence/evidence/rate-limited/index.html index 169ca1447..ddc3ca207 100644 --- a/public/problems/registry-evidence/evidence/rate-limited/index.html +++ b/public/problems/registry-evidence/evidence/rate-limited/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-evidence/src/problem.rs", "sha256": "09e2898f19ebef1f3bf4699280261a4c7549b05eb9f8d30dba60ab2973bc06f9" } diff --git a/public/problems/registry-evidence/evidence/unavailable.json b/public/problems/registry-evidence/evidence/unavailable.json index 7f550a79e..01e397351 100644 --- a/public/problems/registry-evidence/evidence/unavailable.json +++ b/public/problems/registry-evidence/evidence/unavailable.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-evidence/src/problem.rs", "sha256": "09e2898f19ebef1f3bf4699280261a4c7549b05eb9f8d30dba60ab2973bc06f9" } diff --git a/public/problems/registry-evidence/evidence/unavailable/index.html b/public/problems/registry-evidence/evidence/unavailable/index.html index 174b7cf1e..70eb83287 100644 --- a/public/problems/registry-evidence/evidence/unavailable/index.html +++ b/public/problems/registry-evidence/evidence/unavailable/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-evidence/src/problem.rs", "sha256": "09e2898f19ebef1f3bf4699280261a4c7549b05eb9f8d30dba60ab2973bc06f9" } diff --git a/public/problems/registry-evidence/format/unsupported.json b/public/problems/registry-evidence/format/unsupported.json index adff6245f..aab048613 100644 --- a/public/problems/registry-evidence/format/unsupported.json +++ b/public/problems/registry-evidence/format/unsupported.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-evidence/src/problem.rs", "sha256": "09e2898f19ebef1f3bf4699280261a4c7549b05eb9f8d30dba60ab2973bc06f9" } diff --git a/public/problems/registry-evidence/format/unsupported/index.html b/public/problems/registry-evidence/format/unsupported/index.html index 4d81bd0d1..9556d2b84 100644 --- a/public/problems/registry-evidence/format/unsupported/index.html +++ b/public/problems/registry-evidence/format/unsupported/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-evidence/src/problem.rs", "sha256": "09e2898f19ebef1f3bf4699280261a4c7549b05eb9f8d30dba60ab2973bc06f9" } diff --git a/public/problems/registry-evidence/request/selector-invalid.json b/public/problems/registry-evidence/request/selector-invalid.json index 4eef45680..605ffc24c 100644 --- a/public/problems/registry-evidence/request/selector-invalid.json +++ b/public/problems/registry-evidence/request/selector-invalid.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-evidence/src/problem.rs", "sha256": "09e2898f19ebef1f3bf4699280261a4c7549b05eb9f8d30dba60ab2973bc06f9" } diff --git a/public/problems/registry-evidence/request/selector-invalid/index.html b/public/problems/registry-evidence/request/selector-invalid/index.html index f060383a8..59084bf1f 100644 --- a/public/problems/registry-evidence/request/selector-invalid/index.html +++ b/public/problems/registry-evidence/request/selector-invalid/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-evidence/src/problem.rs", "sha256": "09e2898f19ebef1f3bf4699280261a4c7549b05eb9f8d30dba60ab2973bc06f9" } diff --git a/public/problems/registry-evidence/resource/not-found.json b/public/problems/registry-evidence/resource/not-found.json index e2d377e13..d88fa38d1 100644 --- a/public/problems/registry-evidence/resource/not-found.json +++ b/public/problems/registry-evidence/resource/not-found.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-evidence/src/problem.rs", "sha256": "09e2898f19ebef1f3bf4699280261a4c7549b05eb9f8d30dba60ab2973bc06f9" } diff --git a/public/problems/registry-evidence/resource/not-found/index.html b/public/problems/registry-evidence/resource/not-found/index.html index f1bb04e4d..678658dee 100644 --- a/public/problems/registry-evidence/resource/not-found/index.html +++ b/public/problems/registry-evidence/resource/not-found/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-evidence/src/problem.rs", "sha256": "09e2898f19ebef1f3bf4699280261a4c7549b05eb9f8d30dba60ab2973bc06f9" } diff --git a/public/problems/registry-evidence/service/unavailable.json b/public/problems/registry-evidence/service/unavailable.json index 2d8678b17..b471377ad 100644 --- a/public/problems/registry-evidence/service/unavailable.json +++ b/public/problems/registry-evidence/service/unavailable.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-evidence/src/problem.rs", "sha256": "09e2898f19ebef1f3bf4699280261a4c7549b05eb9f8d30dba60ab2973bc06f9" } diff --git a/public/problems/registry-evidence/service/unavailable/index.html b/public/problems/registry-evidence/service/unavailable/index.html index cd2f32a5d..b12420654 100644 --- a/public/problems/registry-evidence/service/unavailable/index.html +++ b/public/problems/registry-evidence/service/unavailable/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-evidence/src/problem.rs", "sha256": "09e2898f19ebef1f3bf4699280261a4c7549b05eb9f8d30dba60ab2973bc06f9" } diff --git a/public/problems/registry-evidence/source/unavailable.json b/public/problems/registry-evidence/source/unavailable.json index a65ce7c15..1861b07a3 100644 --- a/public/problems/registry-evidence/source/unavailable.json +++ b/public/problems/registry-evidence/source/unavailable.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-evidence/src/problem.rs", "sha256": "09e2898f19ebef1f3bf4699280261a4c7549b05eb9f8d30dba60ab2973bc06f9" } diff --git a/public/problems/registry-evidence/source/unavailable/index.html b/public/problems/registry-evidence/source/unavailable/index.html index 0f4d3d8be..5dffaf54a 100644 --- a/public/problems/registry-evidence/source/unavailable/index.html +++ b/public/problems/registry-evidence/source/unavailable/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-evidence/src/problem.rs", "sha256": "09e2898f19ebef1f3bf4699280261a4c7549b05eb9f8d30dba60ab2973bc06f9" } diff --git a/public/problems/registry-messaging/authentication/refused.json b/public/problems/registry-messaging/authentication/refused.json index 6bb8f4ad5..549dba3b2 100644 --- a/public/problems/registry-messaging/authentication/refused.json +++ b/public/problems/registry-messaging/authentication/refused.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } diff --git a/public/problems/registry-messaging/authentication/refused/index.html b/public/problems/registry-messaging/authentication/refused/index.html index cee2eac2a..5d6c07501 100644 --- a/public/problems/registry-messaging/authentication/refused/index.html +++ b/public/problems/registry-messaging/authentication/refused/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } diff --git a/public/problems/registry-messaging/callback/unreadable.json b/public/problems/registry-messaging/callback/unreadable.json index 7f9651864..2e50ac4c0 100644 --- a/public/problems/registry-messaging/callback/unreadable.json +++ b/public/problems/registry-messaging/callback/unreadable.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } diff --git a/public/problems/registry-messaging/callback/unreadable/index.html b/public/problems/registry-messaging/callback/unreadable/index.html index 67913c8a3..b5a6e1ffd 100644 --- a/public/problems/registry-messaging/callback/unreadable/index.html +++ b/public/problems/registry-messaging/callback/unreadable/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } diff --git a/public/problems/registry-messaging/callback/unverified.json b/public/problems/registry-messaging/callback/unverified.json index 62a273af1..7f699f242 100644 --- a/public/problems/registry-messaging/callback/unverified.json +++ b/public/problems/registry-messaging/callback/unverified.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } diff --git a/public/problems/registry-messaging/callback/unverified/index.html b/public/problems/registry-messaging/callback/unverified/index.html index c6a644a72..dfe88b446 100644 --- a/public/problems/registry-messaging/callback/unverified/index.html +++ b/public/problems/registry-messaging/callback/unverified/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } diff --git a/public/problems/registry-messaging/content/invalid.json b/public/problems/registry-messaging/content/invalid.json index 64b567b28..b11d735b2 100644 --- a/public/problems/registry-messaging/content/invalid.json +++ b/public/problems/registry-messaging/content/invalid.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } diff --git a/public/problems/registry-messaging/content/invalid/index.html b/public/problems/registry-messaging/content/invalid/index.html index 7102c79c5..59e185816 100644 --- a/public/problems/registry-messaging/content/invalid/index.html +++ b/public/problems/registry-messaging/content/invalid/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } diff --git a/public/problems/registry-messaging/content/too-large.json b/public/problems/registry-messaging/content/too-large.json index fcb76d955..790cb9608 100644 --- a/public/problems/registry-messaging/content/too-large.json +++ b/public/problems/registry-messaging/content/too-large.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } diff --git a/public/problems/registry-messaging/content/too-large/index.html b/public/problems/registry-messaging/content/too-large/index.html index c4e9ee75c..501bbfef8 100644 --- a/public/problems/registry-messaging/content/too-large/index.html +++ b/public/problems/registry-messaging/content/too-large/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } diff --git a/public/problems/registry-messaging/content/too-many-segments.json b/public/problems/registry-messaging/content/too-many-segments.json index 0cd441957..012c92f50 100644 --- a/public/problems/registry-messaging/content/too-many-segments.json +++ b/public/problems/registry-messaging/content/too-many-segments.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } diff --git a/public/problems/registry-messaging/content/too-many-segments/index.html b/public/problems/registry-messaging/content/too-many-segments/index.html index 4dbfbf54a..c0a309d2c 100644 --- a/public/problems/registry-messaging/content/too-many-segments/index.html +++ b/public/problems/registry-messaging/content/too-many-segments/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } diff --git a/public/problems/registry-messaging/idempotency/expired.json b/public/problems/registry-messaging/idempotency/expired.json index 678e296e5..907c3072c 100644 --- a/public/problems/registry-messaging/idempotency/expired.json +++ b/public/problems/registry-messaging/idempotency/expired.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } diff --git a/public/problems/registry-messaging/idempotency/expired/index.html b/public/problems/registry-messaging/idempotency/expired/index.html index b512f35cf..c859766b6 100644 --- a/public/problems/registry-messaging/idempotency/expired/index.html +++ b/public/problems/registry-messaging/idempotency/expired/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } diff --git a/public/problems/registry-messaging/idempotency/key-reused.json b/public/problems/registry-messaging/idempotency/key-reused.json index 7cc7918ad..3313e9402 100644 --- a/public/problems/registry-messaging/idempotency/key-reused.json +++ b/public/problems/registry-messaging/idempotency/key-reused.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } diff --git a/public/problems/registry-messaging/idempotency/key-reused/index.html b/public/problems/registry-messaging/idempotency/key-reused/index.html index c9520aa09..6abd8ec3b 100644 --- a/public/problems/registry-messaging/idempotency/key-reused/index.html +++ b/public/problems/registry-messaging/idempotency/key-reused/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } diff --git a/public/problems/registry-messaging/message/dispatch-started.json b/public/problems/registry-messaging/message/dispatch-started.json index 585bfe7c7..9b2edc55e 100644 --- a/public/problems/registry-messaging/message/dispatch-started.json +++ b/public/problems/registry-messaging/message/dispatch-started.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } diff --git a/public/problems/registry-messaging/message/dispatch-started/index.html b/public/problems/registry-messaging/message/dispatch-started/index.html index 235fc7aa6..94c04b99c 100644 --- a/public/problems/registry-messaging/message/dispatch-started/index.html +++ b/public/problems/registry-messaging/message/dispatch-started/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } diff --git a/public/problems/registry-messaging/message/not-visible.json b/public/problems/registry-messaging/message/not-visible.json index 21b8aaa96..19ee5777f 100644 --- a/public/problems/registry-messaging/message/not-visible.json +++ b/public/problems/registry-messaging/message/not-visible.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } diff --git a/public/problems/registry-messaging/message/not-visible/index.html b/public/problems/registry-messaging/message/not-visible/index.html index 2dc5c9822..92e54c95a 100644 --- a/public/problems/registry-messaging/message/not-visible/index.html +++ b/public/problems/registry-messaging/message/not-visible/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } diff --git a/public/problems/registry-messaging/message/terminal.json b/public/problems/registry-messaging/message/terminal.json index 8140d806f..1f9ab9fde 100644 --- a/public/problems/registry-messaging/message/terminal.json +++ b/public/problems/registry-messaging/message/terminal.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } diff --git a/public/problems/registry-messaging/message/terminal/index.html b/public/problems/registry-messaging/message/terminal/index.html index d3d4a9f0e..1be2d1d4d 100644 --- a/public/problems/registry-messaging/message/terminal/index.html +++ b/public/problems/registry-messaging/message/terminal/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } diff --git a/public/problems/registry-messaging/operation/not-authorized.json b/public/problems/registry-messaging/operation/not-authorized.json index ce7feb182..5293aa2fb 100644 --- a/public/problems/registry-messaging/operation/not-authorized.json +++ b/public/problems/registry-messaging/operation/not-authorized.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } diff --git a/public/problems/registry-messaging/operation/not-authorized/index.html b/public/problems/registry-messaging/operation/not-authorized/index.html index c9ed32017..cc8e15808 100644 --- a/public/problems/registry-messaging/operation/not-authorized/index.html +++ b/public/problems/registry-messaging/operation/not-authorized/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } diff --git a/public/problems/registry-messaging/profile/not-authorized.json b/public/problems/registry-messaging/profile/not-authorized.json index b8c0b0656..e6bf34901 100644 --- a/public/problems/registry-messaging/profile/not-authorized.json +++ b/public/problems/registry-messaging/profile/not-authorized.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } diff --git a/public/problems/registry-messaging/profile/not-authorized/index.html b/public/problems/registry-messaging/profile/not-authorized/index.html index fbc4ad2ae..f90047c7f 100644 --- a/public/problems/registry-messaging/profile/not-authorized/index.html +++ b/public/problems/registry-messaging/profile/not-authorized/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } diff --git a/public/problems/registry-messaging/quota/exceeded.json b/public/problems/registry-messaging/quota/exceeded.json index 8ab0b7b91..6f9c4b83f 100644 --- a/public/problems/registry-messaging/quota/exceeded.json +++ b/public/problems/registry-messaging/quota/exceeded.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } diff --git a/public/problems/registry-messaging/quota/exceeded/index.html b/public/problems/registry-messaging/quota/exceeded/index.html index 4f1b1bd16..1f38c73a8 100644 --- a/public/problems/registry-messaging/quota/exceeded/index.html +++ b/public/problems/registry-messaging/quota/exceeded/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } diff --git a/public/problems/registry-messaging/rate-limit/exceeded.json b/public/problems/registry-messaging/rate-limit/exceeded.json index 9d67e0f0b..f3ede273b 100644 --- a/public/problems/registry-messaging/rate-limit/exceeded.json +++ b/public/problems/registry-messaging/rate-limit/exceeded.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } diff --git a/public/problems/registry-messaging/rate-limit/exceeded/index.html b/public/problems/registry-messaging/rate-limit/exceeded/index.html index 14274779a..a4622d41c 100644 --- a/public/problems/registry-messaging/rate-limit/exceeded/index.html +++ b/public/problems/registry-messaging/rate-limit/exceeded/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } diff --git a/public/problems/registry-messaging/receipt/unresolved.json b/public/problems/registry-messaging/receipt/unresolved.json index b99ce8b6d..2cb3142a3 100644 --- a/public/problems/registry-messaging/receipt/unresolved.json +++ b/public/problems/registry-messaging/receipt/unresolved.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } diff --git a/public/problems/registry-messaging/receipt/unresolved/index.html b/public/problems/registry-messaging/receipt/unresolved/index.html index 04efc42e5..6f8de4db1 100644 --- a/public/problems/registry-messaging/receipt/unresolved/index.html +++ b/public/problems/registry-messaging/receipt/unresolved/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } diff --git a/public/problems/registry-messaging/request/body-too-large.json b/public/problems/registry-messaging/request/body-too-large.json index 9c0db1108..3a923e3d9 100644 --- a/public/problems/registry-messaging/request/body-too-large.json +++ b/public/problems/registry-messaging/request/body-too-large.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } diff --git a/public/problems/registry-messaging/request/body-too-large/index.html b/public/problems/registry-messaging/request/body-too-large/index.html index 9c6796237..e3f86b19c 100644 --- a/public/problems/registry-messaging/request/body-too-large/index.html +++ b/public/problems/registry-messaging/request/body-too-large/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } diff --git a/public/problems/registry-messaging/request/invalid.json b/public/problems/registry-messaging/request/invalid.json index c605f7c19..b31e3237a 100644 --- a/public/problems/registry-messaging/request/invalid.json +++ b/public/problems/registry-messaging/request/invalid.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } diff --git a/public/problems/registry-messaging/request/invalid/index.html b/public/problems/registry-messaging/request/invalid/index.html index e9e0df272..7b6ebc3bd 100644 --- a/public/problems/registry-messaging/request/invalid/index.html +++ b/public/problems/registry-messaging/request/invalid/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } diff --git a/public/problems/registry-messaging/request/method-not-allowed.json b/public/problems/registry-messaging/request/method-not-allowed.json index ecde3dd12..7e6c53976 100644 --- a/public/problems/registry-messaging/request/method-not-allowed.json +++ b/public/problems/registry-messaging/request/method-not-allowed.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } diff --git a/public/problems/registry-messaging/request/method-not-allowed/index.html b/public/problems/registry-messaging/request/method-not-allowed/index.html index beef834e1..ae2becb10 100644 --- a/public/problems/registry-messaging/request/method-not-allowed/index.html +++ b/public/problems/registry-messaging/request/method-not-allowed/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } diff --git a/public/problems/registry-messaging/request/not-found.json b/public/problems/registry-messaging/request/not-found.json index 612de2b07..97b3a7d67 100644 --- a/public/problems/registry-messaging/request/not-found.json +++ b/public/problems/registry-messaging/request/not-found.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } diff --git a/public/problems/registry-messaging/request/not-found/index.html b/public/problems/registry-messaging/request/not-found/index.html index 6cc5397bd..a40fdbcd4 100644 --- a/public/problems/registry-messaging/request/not-found/index.html +++ b/public/problems/registry-messaging/request/not-found/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } diff --git a/public/problems/registry-messaging/request/unprocessable.json b/public/problems/registry-messaging/request/unprocessable.json index 6685bf236..49fbfd798 100644 --- a/public/problems/registry-messaging/request/unprocessable.json +++ b/public/problems/registry-messaging/request/unprocessable.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } diff --git a/public/problems/registry-messaging/request/unprocessable/index.html b/public/problems/registry-messaging/request/unprocessable/index.html index 551e668fe..1d285e27e 100644 --- a/public/problems/registry-messaging/request/unprocessable/index.html +++ b/public/problems/registry-messaging/request/unprocessable/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } diff --git a/public/problems/registry-messaging/request/unsupported-media-type.json b/public/problems/registry-messaging/request/unsupported-media-type.json index dd9f640e3..d74faf48a 100644 --- a/public/problems/registry-messaging/request/unsupported-media-type.json +++ b/public/problems/registry-messaging/request/unsupported-media-type.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } diff --git a/public/problems/registry-messaging/request/unsupported-media-type/index.html b/public/problems/registry-messaging/request/unsupported-media-type/index.html index 51a1db98f..7c0e7d53a 100644 --- a/public/problems/registry-messaging/request/unsupported-media-type/index.html +++ b/public/problems/registry-messaging/request/unsupported-media-type/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } diff --git a/public/problems/registry-messaging/service/unavailable.json b/public/problems/registry-messaging/service/unavailable.json index 7fa4631a6..e0607ade9 100644 --- a/public/problems/registry-messaging/service/unavailable.json +++ b/public/problems/registry-messaging/service/unavailable.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } diff --git a/public/problems/registry-messaging/service/unavailable/index.html b/public/problems/registry-messaging/service/unavailable/index.html index 8fdc2d8e3..b9f297ab9 100644 --- a/public/problems/registry-messaging/service/unavailable/index.html +++ b/public/problems/registry-messaging/service/unavailable/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } diff --git a/public/problems/registry-messaging/template/data-invalid.json b/public/problems/registry-messaging/template/data-invalid.json index 79ea19c6d..a514a317e 100644 --- a/public/problems/registry-messaging/template/data-invalid.json +++ b/public/problems/registry-messaging/template/data-invalid.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } diff --git a/public/problems/registry-messaging/template/data-invalid/index.html b/public/problems/registry-messaging/template/data-invalid/index.html index 06c3f7922..98ff4e5c4 100644 --- a/public/problems/registry-messaging/template/data-invalid/index.html +++ b/public/problems/registry-messaging/template/data-invalid/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } diff --git a/public/problems/registry-messaging/template/locale-unavailable.json b/public/problems/registry-messaging/template/locale-unavailable.json index dc949299b..49da08a0e 100644 --- a/public/problems/registry-messaging/template/locale-unavailable.json +++ b/public/problems/registry-messaging/template/locale-unavailable.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } diff --git a/public/problems/registry-messaging/template/locale-unavailable/index.html b/public/problems/registry-messaging/template/locale-unavailable/index.html index efacfd348..6a6a2b88c 100644 --- a/public/problems/registry-messaging/template/locale-unavailable/index.html +++ b/public/problems/registry-messaging/template/locale-unavailable/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } diff --git a/public/problems/registry-messaging/template/not-found.json b/public/problems/registry-messaging/template/not-found.json index 859f4f412..d52605b64 100644 --- a/public/problems/registry-messaging/template/not-found.json +++ b/public/problems/registry-messaging/template/not-found.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } diff --git a/public/problems/registry-messaging/template/not-found/index.html b/public/problems/registry-messaging/template/not-found/index.html index 948d426bb..5309e6b5a 100644 --- a/public/problems/registry-messaging/template/not-found/index.html +++ b/public/problems/registry-messaging/template/not-found/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } diff --git a/public/problems/registry-messaging/template/render-refused.json b/public/problems/registry-messaging/template/render-refused.json index 1b12a1ac3..67aba5bc4 100644 --- a/public/problems/registry-messaging/template/render-refused.json +++ b/public/problems/registry-messaging/template/render-refused.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } diff --git a/public/problems/registry-messaging/template/render-refused/index.html b/public/problems/registry-messaging/template/render-refused/index.html index c2c8873e0..688a7b8a3 100644 --- a/public/problems/registry-messaging/template/render-refused/index.html +++ b/public/problems/registry-messaging/template/render-refused/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } diff --git a/public/problems/registry-scheduling/authentication/refused.json b/public/problems/registry-scheduling/authentication/refused.json index f295c821b..8ed5d1261 100644 --- a/public/problems/registry-scheduling/authentication/refused.json +++ b/public/problems/registry-scheduling/authentication/refused.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/authentication/refused/index.html b/public/problems/registry-scheduling/authentication/refused/index.html index 0e6758609..e2db1a849 100644 --- a/public/problems/registry-scheduling/authentication/refused/index.html +++ b/public/problems/registry-scheduling/authentication/refused/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/booking/duplicate-active.json b/public/problems/registry-scheduling/booking/duplicate-active.json index e34f047e0..5c109ab8a 100644 --- a/public/problems/registry-scheduling/booking/duplicate-active.json +++ b/public/problems/registry-scheduling/booking/duplicate-active.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/booking/duplicate-active/index.html b/public/problems/registry-scheduling/booking/duplicate-active/index.html index 12a0ab222..7d2e90e0f 100644 --- a/public/problems/registry-scheduling/booking/duplicate-active/index.html +++ b/public/problems/registry-scheduling/booking/duplicate-active/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/cancellation/cutoff-passed.json b/public/problems/registry-scheduling/cancellation/cutoff-passed.json index 97f6e4998..9d302277c 100644 --- a/public/problems/registry-scheduling/cancellation/cutoff-passed.json +++ b/public/problems/registry-scheduling/cancellation/cutoff-passed.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/cancellation/cutoff-passed/index.html b/public/problems/registry-scheduling/cancellation/cutoff-passed/index.html index 724a88084..91114160c 100644 --- a/public/problems/registry-scheduling/cancellation/cutoff-passed/index.html +++ b/public/problems/registry-scheduling/cancellation/cutoff-passed/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/capability/unmatched.json b/public/problems/registry-scheduling/capability/unmatched.json index b2415dd48..8c7db0c40 100644 --- a/public/problems/registry-scheduling/capability/unmatched.json +++ b/public/problems/registry-scheduling/capability/unmatched.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/capability/unmatched/index.html b/public/problems/registry-scheduling/capability/unmatched/index.html index 86977d6c4..d4ef1c861 100644 --- a/public/problems/registry-scheduling/capability/unmatched/index.html +++ b/public/problems/registry-scheduling/capability/unmatched/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/capacity/exhausted.json b/public/problems/registry-scheduling/capacity/exhausted.json index a1d4d92a0..77b83b241 100644 --- a/public/problems/registry-scheduling/capacity/exhausted.json +++ b/public/problems/registry-scheduling/capacity/exhausted.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/capacity/exhausted/index.html b/public/problems/registry-scheduling/capacity/exhausted/index.html index 77cbb33c3..c4b36fdd6 100644 --- a/public/problems/registry-scheduling/capacity/exhausted/index.html +++ b/public/problems/registry-scheduling/capacity/exhausted/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/cursor/expired.json b/public/problems/registry-scheduling/cursor/expired.json index 3416bc9f4..3d5c62473 100644 --- a/public/problems/registry-scheduling/cursor/expired.json +++ b/public/problems/registry-scheduling/cursor/expired.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/cursor/expired/index.html b/public/problems/registry-scheduling/cursor/expired/index.html index afeabba61..21e068d4b 100644 --- a/public/problems/registry-scheduling/cursor/expired/index.html +++ b/public/problems/registry-scheduling/cursor/expired/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/cursor/invalid.json b/public/problems/registry-scheduling/cursor/invalid.json index dfb6f9a91..53f791339 100644 --- a/public/problems/registry-scheduling/cursor/invalid.json +++ b/public/problems/registry-scheduling/cursor/invalid.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/cursor/invalid/index.html b/public/problems/registry-scheduling/cursor/invalid/index.html index 400eab2f0..8d867842b 100644 --- a/public/problems/registry-scheduling/cursor/invalid/index.html +++ b/public/problems/registry-scheduling/cursor/invalid/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/eligibility/unavailable.json b/public/problems/registry-scheduling/eligibility/unavailable.json index aeb9505b2..eb472ff05 100644 --- a/public/problems/registry-scheduling/eligibility/unavailable.json +++ b/public/problems/registry-scheduling/eligibility/unavailable.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/eligibility/unavailable/index.html b/public/problems/registry-scheduling/eligibility/unavailable/index.html index a5ab06cfb..3b864c16c 100644 --- a/public/problems/registry-scheduling/eligibility/unavailable/index.html +++ b/public/problems/registry-scheduling/eligibility/unavailable/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/hold/expired.json b/public/problems/registry-scheduling/hold/expired.json index 8f02a153b..904e88117 100644 --- a/public/problems/registry-scheduling/hold/expired.json +++ b/public/problems/registry-scheduling/hold/expired.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/hold/expired/index.html b/public/problems/registry-scheduling/hold/expired/index.html index 7df2995c6..52293657a 100644 --- a/public/problems/registry-scheduling/hold/expired/index.html +++ b/public/problems/registry-scheduling/hold/expired/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/hold/released.json b/public/problems/registry-scheduling/hold/released.json index 9fbe1fe08..191df1139 100644 --- a/public/problems/registry-scheduling/hold/released.json +++ b/public/problems/registry-scheduling/hold/released.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/hold/released/index.html b/public/problems/registry-scheduling/hold/released/index.html index e3b35a823..7db46870b 100644 --- a/public/problems/registry-scheduling/hold/released/index.html +++ b/public/problems/registry-scheduling/hold/released/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/hook/unavailable.json b/public/problems/registry-scheduling/hook/unavailable.json index 7b2c2fe90..559365ae9 100644 --- a/public/problems/registry-scheduling/hook/unavailable.json +++ b/public/problems/registry-scheduling/hook/unavailable.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/hook/unavailable/index.html b/public/problems/registry-scheduling/hook/unavailable/index.html index 95defd505..4d958da02 100644 --- a/public/problems/registry-scheduling/hook/unavailable/index.html +++ b/public/problems/registry-scheduling/hook/unavailable/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/horizon/outside.json b/public/problems/registry-scheduling/horizon/outside.json index c0074a033..5c6b315ee 100644 --- a/public/problems/registry-scheduling/horizon/outside.json +++ b/public/problems/registry-scheduling/horizon/outside.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/horizon/outside/index.html b/public/problems/registry-scheduling/horizon/outside/index.html index 593cc2023..a5b519c00 100644 --- a/public/problems/registry-scheduling/horizon/outside/index.html +++ b/public/problems/registry-scheduling/horizon/outside/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/idempotency/expired.json b/public/problems/registry-scheduling/idempotency/expired.json index c3f241022..d8fcc7f79 100644 --- a/public/problems/registry-scheduling/idempotency/expired.json +++ b/public/problems/registry-scheduling/idempotency/expired.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/idempotency/expired/index.html b/public/problems/registry-scheduling/idempotency/expired/index.html index 5de7531e2..fe4edfd74 100644 --- a/public/problems/registry-scheduling/idempotency/expired/index.html +++ b/public/problems/registry-scheduling/idempotency/expired/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/idempotency/key-reused.json b/public/problems/registry-scheduling/idempotency/key-reused.json index eed124c6f..f3cdbc9ab 100644 --- a/public/problems/registry-scheduling/idempotency/key-reused.json +++ b/public/problems/registry-scheduling/idempotency/key-reused.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/idempotency/key-reused/index.html b/public/problems/registry-scheduling/idempotency/key-reused/index.html index 1fb3979b4..8165d4c09 100644 --- a/public/problems/registry-scheduling/idempotency/key-reused/index.html +++ b/public/problems/registry-scheduling/idempotency/key-reused/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/location/closed.json b/public/problems/registry-scheduling/location/closed.json index 593cb94bb..018ba658d 100644 --- a/public/problems/registry-scheduling/location/closed.json +++ b/public/problems/registry-scheduling/location/closed.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/location/closed/index.html b/public/problems/registry-scheduling/location/closed/index.html index 243d23da5..8a50bf591 100644 --- a/public/problems/registry-scheduling/location/closed/index.html +++ b/public/problems/registry-scheduling/location/closed/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/operation/not-authorized.json b/public/problems/registry-scheduling/operation/not-authorized.json index dde832e5c..e4009f7a3 100644 --- a/public/problems/registry-scheduling/operation/not-authorized.json +++ b/public/problems/registry-scheduling/operation/not-authorized.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/operation/not-authorized/index.html b/public/problems/registry-scheduling/operation/not-authorized/index.html index ccdbe6c7e..e24bd78ae 100644 --- a/public/problems/registry-scheduling/operation/not-authorized/index.html +++ b/public/problems/registry-scheduling/operation/not-authorized/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/party/capacity-inadequate.json b/public/problems/registry-scheduling/party/capacity-inadequate.json index d84861da6..4fef4c3cb 100644 --- a/public/problems/registry-scheduling/party/capacity-inadequate.json +++ b/public/problems/registry-scheduling/party/capacity-inadequate.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/party/capacity-inadequate/index.html b/public/problems/registry-scheduling/party/capacity-inadequate/index.html index d2899e3b4..bc525fe40 100644 --- a/public/problems/registry-scheduling/party/capacity-inadequate/index.html +++ b/public/problems/registry-scheduling/party/capacity-inadequate/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/policy/changed.json b/public/problems/registry-scheduling/policy/changed.json index 809808581..a42d2140d 100644 --- a/public/problems/registry-scheduling/policy/changed.json +++ b/public/problems/registry-scheduling/policy/changed.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/policy/changed/index.html b/public/problems/registry-scheduling/policy/changed/index.html index 9440d165d..026316334 100644 --- a/public/problems/registry-scheduling/policy/changed/index.html +++ b/public/problems/registry-scheduling/policy/changed/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/precondition/failed.json b/public/problems/registry-scheduling/precondition/failed.json index 4642d2b3c..3d8be2b0c 100644 --- a/public/problems/registry-scheduling/precondition/failed.json +++ b/public/problems/registry-scheduling/precondition/failed.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/precondition/failed/index.html b/public/problems/registry-scheduling/precondition/failed/index.html index 57b5af12c..758797538 100644 --- a/public/problems/registry-scheduling/precondition/failed/index.html +++ b/public/problems/registry-scheduling/precondition/failed/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/precondition/required.json b/public/problems/registry-scheduling/precondition/required.json index e6073c7a0..df01efdad 100644 --- a/public/problems/registry-scheduling/precondition/required.json +++ b/public/problems/registry-scheduling/precondition/required.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/precondition/required/index.html b/public/problems/registry-scheduling/precondition/required/index.html index a77e405f1..10eeb22c8 100644 --- a/public/problems/registry-scheduling/precondition/required/index.html +++ b/public/problems/registry-scheduling/precondition/required/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/prerequisite/missing.json b/public/problems/registry-scheduling/prerequisite/missing.json index 85ec3a797..424c56ce5 100644 --- a/public/problems/registry-scheduling/prerequisite/missing.json +++ b/public/problems/registry-scheduling/prerequisite/missing.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/prerequisite/missing/index.html b/public/problems/registry-scheduling/prerequisite/missing/index.html index dc1c00c85..ef16d341c 100644 --- a/public/problems/registry-scheduling/prerequisite/missing/index.html +++ b/public/problems/registry-scheduling/prerequisite/missing/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/profile/not-authorized.json b/public/problems/registry-scheduling/profile/not-authorized.json index f07998d8e..718e5b1cb 100644 --- a/public/problems/registry-scheduling/profile/not-authorized.json +++ b/public/problems/registry-scheduling/profile/not-authorized.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/profile/not-authorized/index.html b/public/problems/registry-scheduling/profile/not-authorized/index.html index 66b1d7f3f..788f0fd5f 100644 --- a/public/problems/registry-scheduling/profile/not-authorized/index.html +++ b/public/problems/registry-scheduling/profile/not-authorized/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/receipt/unresolved.json b/public/problems/registry-scheduling/receipt/unresolved.json index 450d84ed9..efbaa2612 100644 --- a/public/problems/registry-scheduling/receipt/unresolved.json +++ b/public/problems/registry-scheduling/receipt/unresolved.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/receipt/unresolved/index.html b/public/problems/registry-scheduling/receipt/unresolved/index.html index c3a576e74..3a250f9b9 100644 --- a/public/problems/registry-scheduling/receipt/unresolved/index.html +++ b/public/problems/registry-scheduling/receipt/unresolved/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/request/body-too-large.json b/public/problems/registry-scheduling/request/body-too-large.json index 8884b0654..d4377e017 100644 --- a/public/problems/registry-scheduling/request/body-too-large.json +++ b/public/problems/registry-scheduling/request/body-too-large.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/request/body-too-large/index.html b/public/problems/registry-scheduling/request/body-too-large/index.html index f17194c46..cc9640511 100644 --- a/public/problems/registry-scheduling/request/body-too-large/index.html +++ b/public/problems/registry-scheduling/request/body-too-large/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/request/invalid.json b/public/problems/registry-scheduling/request/invalid.json index 46abfed7b..446f470d0 100644 --- a/public/problems/registry-scheduling/request/invalid.json +++ b/public/problems/registry-scheduling/request/invalid.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/request/invalid/index.html b/public/problems/registry-scheduling/request/invalid/index.html index e5e7517f0..529b54e44 100644 --- a/public/problems/registry-scheduling/request/invalid/index.html +++ b/public/problems/registry-scheduling/request/invalid/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/request/method-not-allowed.json b/public/problems/registry-scheduling/request/method-not-allowed.json index 81c41664a..2276a51ce 100644 --- a/public/problems/registry-scheduling/request/method-not-allowed.json +++ b/public/problems/registry-scheduling/request/method-not-allowed.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/request/method-not-allowed/index.html b/public/problems/registry-scheduling/request/method-not-allowed/index.html index a0386cb04..e86723119 100644 --- a/public/problems/registry-scheduling/request/method-not-allowed/index.html +++ b/public/problems/registry-scheduling/request/method-not-allowed/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/request/not-found.json b/public/problems/registry-scheduling/request/not-found.json index 340b0d6b8..f55039ea9 100644 --- a/public/problems/registry-scheduling/request/not-found.json +++ b/public/problems/registry-scheduling/request/not-found.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/request/not-found/index.html b/public/problems/registry-scheduling/request/not-found/index.html index 26157420e..f71ca925e 100644 --- a/public/problems/registry-scheduling/request/not-found/index.html +++ b/public/problems/registry-scheduling/request/not-found/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/request/unprocessable.json b/public/problems/registry-scheduling/request/unprocessable.json index 756cf64ed..d782543d3 100644 --- a/public/problems/registry-scheduling/request/unprocessable.json +++ b/public/problems/registry-scheduling/request/unprocessable.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/request/unprocessable/index.html b/public/problems/registry-scheduling/request/unprocessable/index.html index 7e4990d63..7e7993653 100644 --- a/public/problems/registry-scheduling/request/unprocessable/index.html +++ b/public/problems/registry-scheduling/request/unprocessable/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/request/unsupported-media-type.json b/public/problems/registry-scheduling/request/unsupported-media-type.json index ff5b4e3c0..74798761d 100644 --- a/public/problems/registry-scheduling/request/unsupported-media-type.json +++ b/public/problems/registry-scheduling/request/unsupported-media-type.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/request/unsupported-media-type/index.html b/public/problems/registry-scheduling/request/unsupported-media-type/index.html index 6f0dfa722..a22db1992 100644 --- a/public/problems/registry-scheduling/request/unsupported-media-type/index.html +++ b/public/problems/registry-scheduling/request/unsupported-media-type/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/resource/unavailable.json b/public/problems/registry-scheduling/resource/unavailable.json index d7a113a3d..94d040328 100644 --- a/public/problems/registry-scheduling/resource/unavailable.json +++ b/public/problems/registry-scheduling/resource/unavailable.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/resource/unavailable/index.html b/public/problems/registry-scheduling/resource/unavailable/index.html index d5e4b8333..a8ba66b16 100644 --- a/public/problems/registry-scheduling/resource/unavailable/index.html +++ b/public/problems/registry-scheduling/resource/unavailable/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/revision/mismatch.json b/public/problems/registry-scheduling/revision/mismatch.json index a4cfe72dd..34d27142f 100644 --- a/public/problems/registry-scheduling/revision/mismatch.json +++ b/public/problems/registry-scheduling/revision/mismatch.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/revision/mismatch/index.html b/public/problems/registry-scheduling/revision/mismatch/index.html index 39b7aa492..c7c032a82 100644 --- a/public/problems/registry-scheduling/revision/mismatch/index.html +++ b/public/problems/registry-scheduling/revision/mismatch/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/schedule/unpublished.json b/public/problems/registry-scheduling/schedule/unpublished.json index 231456b1f..ce36067e5 100644 --- a/public/problems/registry-scheduling/schedule/unpublished.json +++ b/public/problems/registry-scheduling/schedule/unpublished.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/schedule/unpublished/index.html b/public/problems/registry-scheduling/schedule/unpublished/index.html index e790ed1b6..989b4205d 100644 --- a/public/problems/registry-scheduling/schedule/unpublished/index.html +++ b/public/problems/registry-scheduling/schedule/unpublished/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/service/unavailable.json b/public/problems/registry-scheduling/service/unavailable.json index ffe4ba832..843a7eee3 100644 --- a/public/problems/registry-scheduling/service/unavailable.json +++ b/public/problems/registry-scheduling/service/unavailable.json @@ -37,7 +37,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/problems/registry-scheduling/service/unavailable/index.html b/public/problems/registry-scheduling/service/unavailable/index.html index 8b70a6bbe..5d0239ae3 100644 --- a/public/problems/registry-scheduling/service/unavailable/index.html +++ b/public/problems/registry-scheduling/service/unavailable/index.html @@ -115,7 +115,7 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/profiles/index.json b/public/profiles/index.json index 64029b6e5..a1fb51573 100644 --- a/public/profiles/index.json +++ b/public/profiles/index.json @@ -11,7 +11,7 @@ "source": "src/artifacts/sha256/24d0950eb2c1a76d5005850e1145f675ad65df5231867907b41d11fdd2979cdc.jsonld", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "products/breg/contracts/odrl-profile.jsonld", "sha256": "24d0950eb2c1a76d5005850e1145f675ad65df5231867907b41d11fdd2979cdc" }, @@ -45,7 +45,7 @@ "source": "src/artifacts/sha256/c8685157d8e2982b00657a2a3b2fe729cf54792d76134cf22aa1be1cc7abf4a8.md", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "products/registry-record/profile/registry-record-v1.md", "sha256": "c8685157d8e2982b00657a2a3b2fe729cf54792d76134cf22aa1be1cc7abf4a8" }, diff --git a/public/schemas/adapter/job-runtime/job-runtime.v1alpha1.schema.json b/public/schemas/adapter/job-runtime/job-runtime.v1alpha1.schema.json index b9c5f48cd..aa5e6b414 100644 --- a/public/schemas/adapter/job-runtime/job-runtime.v1alpha1.schema.json +++ b/public/schemas/adapter/job-runtime/job-runtime.v1alpha1.schema.json @@ -116,6 +116,28 @@ }, "FileSource": { "additionalProperties": false, + "anyOf": [ + { + "required": [ + "doneFileName" + ] + }, + { + "properties": { + "readLock": { + "const": "changed" + } + }, + "required": [ + "readLock" + ] + }, + { + "required": [ + "producerAtomicHandover" + ] + } + ], "description": "The runtime binding of one `file` source endpoint: the absolute base\ndirectory the read never leaves, the namespace the item keys carry,\nand the read behavior of the camel-file port.", "properties": { "directory": { @@ -141,6 +163,11 @@ "description": "The namespace every item key of this source carries.", "type": "string" }, + "producerAtomicHandover": { + "const": true, + "description": "The producer's declaration that a file appears in the directory\nonly once complete, renamed in after it is written. A source\ndeclares this, a `doneFileName`, or `readLock: changed`; one with\nnone refuses.", + "type": "boolean" + }, "readLock": { "$ref": "#/$defs/ReadLock", "description": "The read lock; absent, `none`." diff --git a/public/schemas/adapter/job-runtime/job-runtime.v1alpha1.schema/index.html b/public/schemas/adapter/job-runtime/job-runtime.v1alpha1.schema/index.html index 816226229..27d655a4e 100644 --- a/public/schemas/adapter/job-runtime/job-runtime.v1alpha1.schema/index.html +++ b/public/schemas/adapter/job-runtime/job-runtime.v1alpha1.schema/index.html @@ -48,8 +48,8 @@

Lifecycle

Statusactive Compatibility linev1alpha1 Owneradapter - Artifact SHA-256c1be1e7bc8efa01de429ea5a5cd7c19da49d9766d71839602a0e81cecc447d8b - Immutable artifacthttps://id.registrystack.org/artifacts/sha256/c1be1e7bc8efa01de429ea5a5cd7c19da49d9766d71839602a0e81cecc447d8b.json + Artifact SHA-256d68323a93d34904b5bc49870512e03baf519fd86b2a88078df69e68ee417242f + Immutable artifacthttps://id.registrystack.org/artifacts/sha256/d68323a93d34904b5bc49870512e03baf519fd86b2a88078df69e68ee417242f.json diff --git a/public/schemas/adapter/job/job.v1alpha1.schema.json b/public/schemas/adapter/job/job.v1alpha1.schema.json index a2b867042..cfaf9c14a 100644 --- a/public/schemas/adapter/job/job.v1alpha1.schema.json +++ b/public/schemas/adapter/job/job.v1alpha1.schema.json @@ -165,7 +165,7 @@ }, "JobProfile": { "additionalProperties": false, - "description": "The explicit, bounded profile of one job (`products/adapter/CONCEPT.md`\nsection 17.2). Every member is mandatory and checked; the engine\nenforces each bound again at the edge. The facade ceilings of section\n8.8 are unchanged: the per-attempt timeout stays at the platform-frozen\nceiling, and only a source-route-only endpoint's response bound may\nrise, to the platform cap (D39).", + "description": "The explicit, bounded profile of one job (`products/adapter/CONCEPT.md`\nsection 17.2). Every member is mandatory and checked; the engine\nenforces each bound again at the edge. The facade ceilings of section\n8.8 are unchanged: the per-attempt timeout stays at the platform-frozen\nceiling, and only a source-route-only endpoint's response bound may\nrise, to the platform cap.", "properties": { "maximumPageBytes": { "description": "The largest serialized item page, in bytes (1 to 16777216).", @@ -204,7 +204,7 @@ }, "read": { "$ref": "#/$defs/ReadBounds", - "description": "The bounds of the reads the decoders produce." + "description": "The bounds of the reads the decoders produce. Required in effect\nwhere the source route reads a file or a PostgreSQL row, refused\nunder `adapter.job.profile-read-required` when absent there; a\nroute that reaches neither may omit it." } }, "required": [ @@ -212,8 +212,7 @@ "maximumResponseBytes", "maximumPageItems", "maximumPageBytes", - "maximumUpstreamCalls", - "read" + "maximumUpstreamCalls" ], "type": "object" }, diff --git a/public/schemas/adapter/job/job.v1alpha1.schema/index.html b/public/schemas/adapter/job/job.v1alpha1.schema/index.html index 1695d99fe..0f337592e 100644 --- a/public/schemas/adapter/job/job.v1alpha1.schema/index.html +++ b/public/schemas/adapter/job/job.v1alpha1.schema/index.html @@ -48,8 +48,8 @@

Lifecycle

Statusactive Compatibility linev1alpha1 Owneradapter - Artifact SHA-25638818527ae8cf4435485ea3f283af51b41c4d1d1e0e26d04ab3e59c158c150a7 - Immutable artifacthttps://id.registrystack.org/artifacts/sha256/38818527ae8cf4435485ea3f283af51b41c4d1d1e0e26d04ab3e59c158c150a7.json + Artifact SHA-256f1a66ef70359e4078ee3ae3426d378d65fbb62ab2f64545081d3d4973a8b28ad + Immutable artifacthttps://id.registrystack.org/artifacts/sha256/f1a66ef70359e4078ee3ae3426d378d65fbb62ab2f64545081d3d4973a8b28ad.json diff --git a/public/schemas/adapter/mapping/mapping.v1alpha1.schema.json b/public/schemas/adapter/mapping/mapping.v1alpha1.schema.json new file mode 100644 index 000000000..47724b041 --- /dev/null +++ b/public/schemas/adapter/mapping/mapping.v1alpha1.schema.json @@ -0,0 +1,209 @@ +{ + "$defs": { + "Assignment": { + "additionalProperties": false, + "description": "One target property and where its value comes from: exactly one of\n`from` and `constant`.", + "properties": { + "constant": { + "$ref": "#/$defs/MappingConstant", + "description": "A constant value instead of a selector." + }, + "convert": { + "$ref": "#/$defs/Conversion", + "description": "The conversion applied to a read value." + }, + "from": { + "description": "The selector read from the source root: dotted names or \"quoted\"\nkeys, each optionally filtered with `[key = \"value\"]`. A key that\nholds a dot is quoted, for example `'\"household.household_size\"'`.\nA quoted key or value takes any character except a control\ncharacter, a text-direction control or a line or paragraph separator;\n`\\\"` and `\\\\` are its only escapes. Keys compare byte for\nbyte, with no Unicode normalisation.", + "type": "string" + }, + "target": { + "description": "The dotted path of the target property.", + "type": "string" + }, + "whenMissing": { + "$ref": "#/$defs/WhenMissing", + "description": "Whether an absent value fails or leaves the property out." + } + }, + "required": [ + "target" + ], + "type": "object" + }, + "Conversion": { + "description": "The value conversion applied after a value is read.", + "oneOf": [ + { + "const": "none", + "description": "The value is copied as read.", + "type": "string" + }, + { + "const": "integer", + "description": "An integer, or a string of digits, becomes an integer.", + "type": "string" + }, + { + "const": "text", + "description": "A string, or an integer, becomes a string.", + "type": "string" + }, + { + "const": "date", + "description": "A real calendar date written `YYYY-MM-DD` passes unchanged.", + "type": "string" + } + ] + }, + "IngestionMode": { + "description": "How an ingestion mapping hands its item to the destination.", + "oneOf": [ + { + "const": "proposal", + "description": "A Proposal Action start input plus an empty submit body.", + "type": "string" + }, + { + "const": "immediate", + "description": "The bare item.", + "type": "string" + } + ] + }, + "LocalId": { + "description": "A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.", + "pattern": "^[a-z][a-z0-9_-]{0,63}$", + "type": "string" + }, + "MappingConstant": { + "anyOf": [ + { + "type": "boolean" + }, + { + "format": "int64", + "maximum": 9223372036854775807, + "minimum": -9223372036854775808, + "type": "integer" + }, + { + "type": "string" + } + ], + "description": "A closed scalar constant. It is read by node kind (boolean, integer,\ntext) through a hand-written visitor, never a derived untagged union." + }, + "MappingHeader": { + "additionalProperties": false, + "description": "The mapping's identity, target, and generated-script location. Every path\nresolves against the model file's directory.", + "properties": { + "entrypoint": { + "description": "The generated entrypoint's Rhai identifier; it must not start with\n`mapping_`.", + "type": "string" + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The mapping identifier." + }, + "ingestionMode": { + "$ref": "#/$defs/IngestionMode", + "description": "Required exactly when `target` is `ingestion`." + }, + "script": { + "description": "A clean relative path to the generated Rhai script.", + "type": "string" + }, + "target": { + "$ref": "#/$defs/MappingTarget", + "description": "The kind of value the generated script produces." + }, + "targetSchema": { + "description": "A clean relative path to the target JSON Schema.", + "type": "string" + } + }, + "required": [ + "id", + "target", + "targetSchema", + "script", + "entrypoint" + ], + "type": "object" + }, + "MappingTarget": { + "description": "What a mapping produces, which fixes the entrypoint signature.", + "oneOf": [ + { + "const": "consultation", + "description": "A Consultation public view: `fn (source)`.", + "type": "string" + }, + { + "const": "evidence", + "description": "An Evidence projection: `fn (source)`.", + "type": "string" + }, + { + "const": "ingestion", + "description": "A governed-ingestion item: `fn _input(source)` plus the\n`fn (exchange)` wrapper.", + "type": "string" + }, + { + "const": "source-request", + "description": "An upstream request body: `fn (exchange)`.", + "type": "string" + } + ] + }, + "WhenMissing": { + "description": "What happens when the source value is absent.", + "oneOf": [ + { + "const": "fail", + "description": "The script refuses with `mapping.missing`.", + "type": "string" + }, + { + "const": "omit", + "description": "The target property is left out; only for non-required targets.", + "type": "string" + } + ] + } + }, + "$id": "https://id.registrystack.org/schemas/adapter/mapping/mapping.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "description": "The authored mapping model.", + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/adapter/mapping/v1alpha1", + "description": "The format envelope version.", + "type": "string" + }, + "assignments": { + "description": "The ordered field assignments.", + "items": { + "$ref": "#/$defs/Assignment" + }, + "type": "array" + }, + "kind": { + "const": "AdapterMapping", + "description": "The format kind: `AdapterMapping`.", + "type": "string" + }, + "mapping": { + "$ref": "#/$defs/MappingHeader", + "description": "What the mapping targets and where its generated script lives." + } + }, + "required": [ + "apiVersion", + "kind", + "mapping", + "assignments" + ], + "title": "Registry Adapter mapping model", + "type": "object" +} diff --git a/public/schemas/adapter/mapping/mapping.v1alpha1.schema/index.html b/public/schemas/adapter/mapping/mapping.v1alpha1.schema/index.html new file mode 100644 index 000000000..74e918053 --- /dev/null +++ b/public/schemas/adapter/mapping/mapping.v1alpha1.schema/index.html @@ -0,0 +1,100 @@ + + + + + + Registry Adapter mapping model | Registry Stack identifiers + + + + + + + + +
+
+
+

JSON Schema

+

Registry Adapter mapping model

+

Registry Adapter project, profile, pack, fixture, runtime configuration, ingestion job, job runtime configuration, and effective contract JSON Schema.

+

https://id.registrystack.org/schemas/adapter/mapping/mapping.v1alpha1.schema.json

+
+
+
+
+

Authority boundary

+

This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior.

+

The canonical machine artifact at this URI is the JSON Schema itself.

+
+
+

Lifecycle

+ + + + + + + + +
Statusactive
Compatibility linev1alpha1
Owneradapter
Artifact SHA-2561a713af021f69a27c5c7f58b22464cd227972173f9935b2fc3a0a48eda51e6f5
Immutable artifacthttps://id.registrystack.org/artifacts/sha256/1a713af021f69a27c5c7f58b22464cd227972173f9935b2fc3a0a48eda51e6f5.json
+
+
+

Documentation

+ + +
+
+
+ + + diff --git a/public/schemas/adapter/pack/pack.v1alpha1.schema.json b/public/schemas/adapter/pack/pack.v1alpha1.schema.json index ec3548e05..677c71e35 100644 --- a/public/schemas/adapter/pack/pack.v1alpha1.schema.json +++ b/public/schemas/adapter/pack/pack.v1alpha1.schema.json @@ -581,7 +581,7 @@ "description": "The PostgreSQL result column whose scalar is the source item's\nstable identity. Required for a `postgres` endpoint and absent\nfrom every other component." }, "maximumResponseBytes": { - "description": "The largest response body one send to this endpoint may take in, in\nbytes. Required, no default; a value above the platform cap is\nrefused, never shortened. The runtime binding may lower it, never\nraise it. A facade-reachable endpoint stays within the facade\nceiling and a source-route-only endpoint may declare up to the\nplatform cap (D39); the checks refuse the facade-reachable excess\nunder `adapter.job.endpoint-response-bound`.", + "description": "The largest response body one send to this endpoint may take in, in\nbytes. Required, no default; a value above the platform cap is\nrefused, never shortened. The runtime binding may lower it, never\nraise it. A facade-reachable endpoint stays within the facade\nceiling and a source-route-only endpoint may declare up to the\nplatform cap (`products/adapter/CONCEPT.md` section 8.8); the checks\nrefuse the facade-reachable excess\nunder `adapter.job.endpoint-response-bound`.", "format": "uint64", "maximum": 16777216, "minimum": 1, @@ -1259,7 +1259,7 @@ }, "PollEnrichStep": { "additionalProperties": false, - "description": "A `pollEnrich` step, the bounded job-only port of Camel's Poll Enricher\n(`products/adapter/CONCEPT.md` sections 17.1 and 17.2). It reads one\nbounded page from a static `file:`, `rabbitmq:`, or `sftp:` endpoint the pack\ndeclares; no dynamic endpoint expression and no `consumerSendTo` are\nported. Absent a strategy, the page replaces the body, as `enrich`\nreplaces it. `timeoutMilliseconds` is mandatory: the checks refuse its\nabsence under `adapter.job.poll-timeout`, and the reader refuses a\nvalue outside 1 to 10000 (D39 keeps the platform-frozen per-attempt\nceiling for every endpoint). The step never appears in a\nfacade-reachable route (`adapter.job.poll-facade-refused`).", + "description": "A `pollEnrich` step, the bounded job-only port of Camel's Poll Enricher\n(`products/adapter/CONCEPT.md` sections 17.1 and 17.2). It reads one\nbounded page from a static `file:`, `rabbitmq:`, or `sftp:` endpoint the pack\ndeclares; no dynamic endpoint expression and no `consumerSendTo` are\nported. Absent a strategy, the page replaces the body, as `enrich`\nreplaces it. `timeoutMilliseconds` is mandatory: the checks refuse its\nabsence under `adapter.job.poll-timeout`, and the reader refuses a\nvalue outside 1 to 10000 (the platform-frozen per-attempt ceiling of\n`products/adapter/CONCEPT.md` section 8.8 holds for every endpoint). The step never appears in a\nfacade-reachable route (`adapter.job.poll-facade-refused`).", "properties": { "aggregationStrategy": { "$ref": "#/$defs/AggregationStrategy", @@ -1430,12 +1430,20 @@ }, "type": "array" }, + "readSupport": { + "$ref": "#/$defs/SourceReadSupport", + "description": "Source-neutral read semantics every instantiation of this template\npreserves. Public protocol and view names remain project-owned." + }, "steps": { "description": "The template body, with `{{name}}` and `{{?name}}` placeholders.", "items": { "$ref": "#/$defs/Step" }, "type": "array" + }, + "writeSupport": { + "$ref": "#/$defs/SourceWriteSupport", + "description": "Source-neutral direct-write guarantees every instantiation of this\ntemplate preserves. Public protocol and domain schemas remain\nproject-owned." } }, "required": [ @@ -1505,6 +1513,119 @@ ], "type": "object" }, + "SourceComparison": { + "description": "Closed reusable comparison semantics a source route can implement.", + "enum": [ + "equality" + ], + "type": "string" + }, + "SourceOrderDirection": { + "enum": [ + "ascending", + "descending" + ], + "type": "string" + }, + "SourceOrderTerm": { + "additionalProperties": false, + "description": "One deterministic source order term. Direction is explicit so a project\nand generated contract never infer it from a provider default.", + "properties": { + "direction": { + "$ref": "#/$defs/SourceOrderDirection" + }, + "name": { + "$ref": "#/$defs/ExternalId" + } + }, + "required": [ + "name", + "direction" + ], + "type": "object" + }, + "SourceReadInput": { + "additionalProperties": false, + "description": "One source-native page input and the comparisons the source route\nimplements for it. Names are pack-local, not public field names.", + "properties": { + "comparisons": { + "items": { + "$ref": "#/$defs/SourceComparison" + }, + "type": "array", + "uniqueItems": true + }, + "name": { + "$ref": "#/$defs/ExternalId" + } + }, + "required": [ + "name", + "comparisons" + ], + "type": "object" + }, + "SourceReadSupport": { + "description": "Source-neutral read semantics a pack explicitly promises for one route.\nPublic Consultation capability, selector, Search, schema, and view names\nbelong to the project and never enter this reusable source contract.\nThe host never infers guarantees from a route name or a successfully\ndecoded body.", + "oneOf": [ + { + "additionalProperties": false, + "description": "Exact resolution that returns at most one source item for the complete\nnative input key. A project can map this to Retrieve or Lookup.", + "properties": { + "inputs": { + "items": { + "$ref": "#/$defs/ExternalId" + }, + "type": "array", + "uniqueItems": true + }, + "type": { + "const": "read-one", + "type": "string" + } + }, + "required": [ + "type", + "inputs" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "A bounded page with explicit completion and a deterministic order.\nA project can map supported native inputs to List filters or a named\nSearch without changing this source-owned contract.", + "properties": { + "inputs": { + "default": [], + "items": { + "$ref": "#/$defs/SourceReadInput" + }, + "type": "array", + "uniqueItems": true + }, + "order": { + "items": { + "$ref": "#/$defs/SourceOrderTerm" + }, + "type": "array", + "uniqueItems": true + }, + "type": { + "const": "read-page", + "type": "string" + }, + "uniqueTieBreaker": { + "$ref": "#/$defs/ExternalId" + } + }, + "required": [ + "type", + "order", + "uniqueTieBreaker" + ], + "type": "object" + } + ] + }, "SourceRecovery": { "description": "The recovery semantics of a source route's `next` cursor, the closed\nset CONCEPT 17.2 pins.", "oneOf": [ @@ -1540,6 +1661,10 @@ "$ref": "#/$defs/SourceRecovery", "description": "The recovery semantics of `next`. Mandatory; the checks refuse its\nabsence under `adapter.job.source-recovery-required`." }, + "readSupport": { + "$ref": "#/$defs/SourceReadSupport", + "description": "The source-neutral read semantics this route explicitly supports. A\nfacade host maps these native inputs and guarantees to its public\nprotocol; it never infers them from a route id or source brand." + }, "rescanDelaySeconds": { "description": "The seconds between a `rescan` source route's ordinary passes from\nthe first page, from\n[`MINIMUM_SOURCE_RESCAN_DELAY_SECONDS`] to\n[`MAXIMUM_SOURCE_RESCAN_DELAY_SECONDS`] (one minute to one day).\nMandatory beside `edits: rescan`, refused beside `edits: ordered`,\nand range-checked; the checks police all three under\n`adapter.job.source-rescan-delay`.", "format": "uint64", @@ -1579,6 +1704,55 @@ } ] }, + "SourceWriteSupport": { + "description": "Source-neutral direct-write semantics explicitly promised by one reusable\npack route template. A host never infers these guarantees from an HTTP\nmethod, provider brand, route id, or successful fixture.\n\nEach variant names one fixed guarantee set; the only value a pack chooses\nis the finite provider-owned window in which the source guarantees an\nexact same-key replay. The host keeps its own idempotency custody within,\nnever beyond, that declared window.", + "oneOf": [ + { + "additionalProperties": false, + "description": "Create exactly one source record, replay an exact same-key retry, and\nreturn the durable key the source assigns in [`SourceWriteReceipt`].", + "properties": { + "replayWindowSeconds": { + "description": "Seconds for which the source guarantees an exact same-key replay.", + "format": "uint64", + "maximum": 31536000, + "minimum": 1, + "type": "integer" + }, + "type": { + "const": "create-one", + "type": "string" + } + }, + "required": [ + "type", + "replayWindowSeconds" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Update exactly one source record, replay an exact same-key retry, and\ncompare and commit the supplied native validator in the same atomic\nmutation boundary.", + "properties": { + "replayWindowSeconds": { + "description": "Seconds for which the source guarantees an exact same-key replay.", + "format": "uint64", + "maximum": 31536000, + "minimum": 1, + "type": "integer" + }, + "type": { + "const": "conditional-update-one", + "type": "string" + } + }, + "required": [ + "type", + "replayWindowSeconds" + ], + "type": "object" + } + ] + }, "SplitStep": { "additionalProperties": false, "description": "A `split` step (`products/adapter/CONCEPT.md` sections 8.6 and 5.5).\n`parallelProcessing`, `streaming`, and `timeout` are not ported.", @@ -2276,7 +2450,7 @@ "type": "object" }, "resumeBindings": { - "description": "The source-native identifiers a later write-resume step needs\n(Increment 3; `products/adapter/CONCEPT.md` section 9).", + "description": "The source-native identifiers a later write-resume step needs\n(`products/adapter/CONCEPT.md` section 9).", "items": { "$ref": "#/$defs/ResumeBinding" }, diff --git a/public/schemas/adapter/pack/pack.v1alpha1.schema/index.html b/public/schemas/adapter/pack/pack.v1alpha1.schema/index.html index 67405e796..0e00052bf 100644 --- a/public/schemas/adapter/pack/pack.v1alpha1.schema/index.html +++ b/public/schemas/adapter/pack/pack.v1alpha1.schema/index.html @@ -48,8 +48,8 @@

Lifecycle

Statusactive Compatibility linev1alpha1 Owneradapter - Artifact SHA-2566031baaabca785fe6e0adfed4336fa555839e18ae1a3136cf3e895ad5e6f6dcb - Immutable artifacthttps://id.registrystack.org/artifacts/sha256/6031baaabca785fe6e0adfed4336fa555839e18ae1a3136cf3e895ad5e6f6dcb.json + Artifact SHA-256a8d908e534dffcbeee5b1e3352007a4205e0a4614c64a24fd22130f59f0ff264 + Immutable artifacthttps://id.registrystack.org/artifacts/sha256/a8d908e534dffcbeee5b1e3352007a4205e0a4614c64a24fd22130f59f0ff264.json diff --git a/public/schemas/adapter/preview-expectations/preview-expectations.v1alpha1.schema.json b/public/schemas/adapter/preview-expectations/preview-expectations.v1alpha1.schema.json new file mode 100644 index 000000000..d4bd65dbf --- /dev/null +++ b/public/schemas/adapter/preview-expectations/preview-expectations.v1alpha1.schema.json @@ -0,0 +1,83 @@ +{ + "$defs": { + "ExternalId": { + "description": "An identifier another system issues, written exactly as its issuer gives it.", + "maxLength": 512, + "minLength": 1, + "pattern": "^[^\\u0000-\\u001F\\u007F-\\u009F]+$", + "type": "string" + }, + "SampleExpectation": { + "description": "What one sample is meant to give.", + "oneOf": [ + { + "additionalProperties": false, + "description": "The mapping accepts the sample.", + "properties": { + "type": { + "const": "accepted", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "The mapping refuses the sample. With a `target`, a refusal must name\nthat target field, in the mapping's target syntax; without one, any\nrefusal of the mapping will do.", + "properties": { + "target": { + "description": "An assignment's `target`, written in the mapping's target\nsyntax (dotted names or quoted keys).", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "type": { + "const": "refused", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + } + ] + } + }, + "$id": "https://id.registrystack.org/schemas/adapter/preview-expectations/preview-expectations.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "description": "The authored preview expectations.", + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/adapter/preview-expectations/v1alpha1", + "description": "The format envelope version.", + "type": "string" + }, + "kind": { + "const": "AdapterPreviewExpectations", + "description": "The format kind: `AdapterPreviewExpectations`.", + "type": "string" + }, + "samples": { + "additionalProperties": { + "$ref": "#/$defs/SampleExpectation" + }, + "description": "The expected result of each sample, keyed by the sample's file name\nwithout its extension.", + "propertyNames": { + "$ref": "#/$defs/ExternalId" + }, + "type": "object" + } + }, + "required": [ + "apiVersion", + "kind", + "samples" + ], + "title": "Registry Adapter preview expectations", + "type": "object" +} diff --git a/public/schemas/adapter/preview-expectations/preview-expectations.v1alpha1.schema/index.html b/public/schemas/adapter/preview-expectations/preview-expectations.v1alpha1.schema/index.html new file mode 100644 index 000000000..147dcb90c --- /dev/null +++ b/public/schemas/adapter/preview-expectations/preview-expectations.v1alpha1.schema/index.html @@ -0,0 +1,100 @@ + + + + + + Registry Adapter preview expectations | Registry Stack identifiers + + + + + + + + +
+
+
+

JSON Schema

+

Registry Adapter preview expectations

+

Registry Adapter project, profile, pack, fixture, runtime configuration, ingestion job, job runtime configuration, and effective contract JSON Schema.

+

https://id.registrystack.org/schemas/adapter/preview-expectations/preview-expectations.v1alpha1.schema.json

+
+
+
+
+

Authority boundary

+

This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior.

+

The canonical machine artifact at this URI is the JSON Schema itself.

+
+
+

Lifecycle

+ + + + + + + + +
Statusactive
Compatibility linev1alpha1
Owneradapter
Artifact SHA-25605ca00c30b9126084ea5d52e17db5002f7afb46e9aceac121fe42489afc5caa1
Immutable artifacthttps://id.registrystack.org/artifacts/sha256/05ca00c30b9126084ea5d52e17db5002f7afb46e9aceac121fe42489afc5caa1.json
+
+
+

Documentation

+ + +
+
+
+ + + diff --git a/public/schemas/adapter/project/project.v1alpha1.schema.json b/public/schemas/adapter/project/project.v1alpha1.schema.json index 4356d1464..25c4dbd41 100644 --- a/public/schemas/adapter/project/project.v1alpha1.schema.json +++ b/public/schemas/adapter/project/project.v1alpha1.schema.json @@ -62,7 +62,8 @@ "description": "The binding identifier." }, "maximumUpstreamCalls": { - "description": "The declared budget of upstream sends per exchange; the static\nworst-case count must stay within it.", + "default": 4, + "description": "The declared budget of upstream sends per exchange; the static\nworst-case count must stay within it. Defaults to 4.", "format": "uint64", "maximum": 100000, "minimum": 1, @@ -85,8 +86,7 @@ "id", "operation", "recordType", - "route", - "maximumUpstreamCalls" + "route" ], "type": "object" }, @@ -144,6 +144,122 @@ } ] }, + "BindingTransform": { + "additionalProperties": false, + "description": "One binding's project-owned transformation. Its output schema is not\nrepeated here: the binding's record type selects one Consultation\ncollection/view, and that collection owns the single `dataSchema`\nreference.", + "properties": { + "entrypoint": { + "description": "The one-argument Rhai function invoked as `entrypoint(source)`.", + "type": "string" + }, + "script": { + "$ref": "#/$defs/LocalId", + "description": "A [`ProjectScript`] id." + } + }, + "required": [ + "script", + "entrypoint" + ], + "type": "object" + }, + "ConsultationCollection": { + "additionalProperties": false, + "description": "Deployment metadata for one project record type and public view.", + "properties": { + "dataSchema": { + "$ref": "#/$defs/LocalId", + "description": "Pinned project schema for the public `data` member of this view." + }, + "lookup": { + "$ref": "#/$defs/ConsultationLookup", + "description": "Exact-selector metadata, required only when Lookup is bound." + }, + "recordType": { + "$ref": "#/$defs/LocalId", + "description": "Project record type and literal Consultation collection identifier." + }, + "registry": { + "description": "Stable identifier of the Registry that owns the Records.", + "type": "string" + }, + "search": { + "$ref": "#/$defs/ConsultationSearch", + "description": "Named-search metadata, required only when Search is bound." + }, + "transform": { + "$ref": "#/$defs/BindingTransform", + "description": "The transformation every `retrieve`, `lookup`, `list`, and `search`\nbinding of this record type follows unless `bindingTransforms` names\none for that binding." + }, + "view": { + "$ref": "#/$defs/LocalId", + "description": "Public view named by the concrete OpenAPI operation metadata. When\nomitted, the view is named after `dataSchema`." + } + }, + "required": [ + "recordType", + "registry", + "dataSchema" + ], + "type": "object" + }, + "ConsultationFacade": { + "additionalProperties": false, + "description": "One deployment of the built-in Consultation facade.", + "properties": { + "collections": { + "description": "Collection metadata, unique by the record type that also supplies the\ncollection identifier on the wire.", + "items": { + "$ref": "#/$defs/ConsultationCollection" + }, + "type": "array" + }, + "contract": { + "description": "Version-specific HTTPS OpenAPI contract published for this deployment.", + "type": "string" + } + }, + "required": [ + "contract", + "collections" + ], + "type": "object" + }, + "ConsultationLookup": { + "additionalProperties": false, + "description": "One exact selector and the project schema of its `values` member.", + "properties": { + "inputSchema": { + "$ref": "#/$defs/LocalId" + }, + "selector": { + "$ref": "#/$defs/LocalId", + "description": "Exact, at-most-one selector promised by the selected source route." + } + }, + "required": [ + "selector", + "inputSchema" + ], + "type": "object" + }, + "ConsultationSearch": { + "additionalProperties": false, + "description": "One named Search and the project schema of its `criteria` member.", + "properties": { + "inputSchema": { + "$ref": "#/$defs/LocalId" + }, + "search": { + "$ref": "#/$defs/LocalId" + } + }, + "required": [ + "search", + "inputSchema" + ], + "type": "object" + }, "Digest": { "description": "A SHA-256 digest: `sha256:` followed by 64 lowercase hex digits.", "pattern": "^sha256:[0-9a-f]{64}$", @@ -185,6 +301,29 @@ ], "type": "object" }, + "ProjectArtifacts": { + "additionalProperties": false, + "description": "The project-owned artifact inventory. Empty inventories preserve existing\ngeneric profile deployments, which keep all route behavior in their pack.", + "properties": { + "schemas": { + "default": [], + "description": "Versioned public JSON Schemas.", + "items": { + "$ref": "#/$defs/ProjectSchema" + }, + "type": "array" + }, + "scripts": { + "default": [], + "description": "Programme and public-view transformation scripts.", + "items": { + "$ref": "#/$defs/ProjectScript" + }, + "type": "array" + } + }, + "type": "object" + }, "ProjectIdentity": { "additionalProperties": false, "description": "The project identity block: the deployment's own name and version\n(`products/adapter/CONCEPT.md` section 10.1). The id is a local\nidentifier (CFG-ID-1); the version is text, the same version-as-text\nrule as profiles and packs.", @@ -204,6 +343,54 @@ ], "type": "object" }, + "ProjectSchema": { + "additionalProperties": false, + "description": "One project-owned public data schema. The schema bytes carry their stable,\nversioned HTTPS `$id`; this inventory binds those bytes into the project\nclosure without duplicating that public identity in YAML.", + "properties": { + "digest": { + "$ref": "#/$defs/Digest", + "description": "The exact sha256 digest of the JSON Schema bytes." + }, + "file": { + "description": "A clean path relative to the project document.", + "type": "string" + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The local name a Consultation collection uses as `dataSchema`." + } + }, + "required": [ + "id", + "file", + "digest" + ], + "type": "object" + }, + "ProjectScript": { + "additionalProperties": false, + "description": "One project-owned Rhai source. The deployment project, rather than the\nreusable source pack, owns programme and public-view transformations.", + "properties": { + "digest": { + "$ref": "#/$defs/Digest", + "description": "The exact sha256 digest of the Rhai source bytes." + }, + "file": { + "description": "A clean path relative to the project document.", + "type": "string" + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The local name transformations use." + } + }, + "required": [ + "id", + "file", + "digest" + ], + "type": "object" + }, "RecordField": { "additionalProperties": false, "description": "One declared record field, typed under CFG-VAL-9 so fixture values and\nroute outputs are checked against it.", @@ -288,12 +475,98 @@ "routeId" ], "type": "object" + }, + "WriteCollection": { + "additionalProperties": false, + "description": "Direct-write selection for one project record type. At least one of\nCreate and Update is required. Registry, view, and readable data-schema\nmetadata may be inherited from a matching Consultation collection; a\nWrite-only Update supplies them explicitly.", + "properties": { + "create": { + "$ref": "#/$defs/WriteCreate" + }, + "readDataSchema": { + "$ref": "#/$defs/LocalId", + "description": "Project schema for the companion read's public `data`, required for a\nWrite-only Update and separate by selection from each input schema." + }, + "recordType": { + "$ref": "#/$defs/LocalId", + "description": "Project record type and literal Write collection identifier." + }, + "registry": { + "description": "Stable identifier of the Registry that owns the Records.", + "type": "string" + }, + "update": { + "$ref": "#/$defs/WriteUpdate" + }, + "view": { + "$ref": "#/$defs/LocalId", + "description": "Public writable view, required for a Write-only Update." + } + }, + "required": [ + "recordType" + ], + "type": "object" + }, + "WriteCreate": { + "additionalProperties": false, + "description": "Deployment metadata for direct Create of one record.", + "properties": { + "inputSchema": { + "$ref": "#/$defs/LocalId", + "description": "Project-owned domain schema for `CreateInput.data`." + } + }, + "required": [ + "inputSchema" + ], + "type": "object" + }, + "WriteFacade": { + "additionalProperties": false, + "description": "One deployment of the built-in GovStack direct Write target. Protocol\npaths, envelopes, error shapes, and Create/Update wrappers remain\nmaintained Rust; the project selects collections and domain schemas.", + "properties": { + "collections": { + "description": "Collection metadata, unique by the record type that also supplies the\npublic collection identifier.", + "items": { + "$ref": "#/$defs/WriteCollection" + }, + "type": "array" + }, + "contract": { + "description": "Version-specific HTTPS OpenAPI contract published for this deployment.", + "type": "string" + } + }, + "required": [ + "contract", + "collections" + ], + "type": "object" + }, + "WriteUpdate": { + "additionalProperties": false, + "description": "Deployment metadata for conditional Update of one record.", + "properties": { + "companionRead": { + "$ref": "#/$defs/LocalId", + "description": "Existing same-collection read binding used by the one supporting GET.\nWhen omitted, the one `retrieve` or `writable-read` binding of the\nrecord type fills it; a record type with more than one such binding\nmust name it." + }, + "inputSchema": { + "$ref": "#/$defs/LocalId", + "description": "Project-owned domain merge-patch schema for `UpdateInput.data`." + } + }, + "required": [ + "inputSchema" + ], + "type": "object" } }, "$id": "https://id.registrystack.org/schemas/adapter/project/project.v1alpha1.schema.json", "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, - "description": "The adapter project artifact (`AdapterProject`): the declared record\nmodel, the pinned profile and pack references, the template\ninstantiations, the bindings, and the access profiles.", + "description": "The adapter project artifact (`AdapterProject`): the declared record\nmodel, the pinned profile and pack references, the template\ninstantiations, the bindings, and the access profiles. Reading a project\nderives the members its short form leaves out; an explicit member always\nwins.", "properties": { "accessProfiles": { "default": [], @@ -307,6 +580,20 @@ "const": "id.registrystack.org/formats/adapter/project/v1alpha1", "type": "string" }, + "artifacts": { + "$ref": "#/$defs/ProjectArtifacts", + "description": "Digest-pinned deployment-owned scripts and public schemas." + }, + "bindingTransforms": { + "additionalProperties": { + "$ref": "#/$defs/BindingTransform" + }, + "description": "Project-owned transformations keyed by the binding id they follow.\nThe map form avoids duplicating the binding or source-route identity.", + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, "bindings": { "default": [], "description": "The bindings of contract operations to routes.", @@ -315,6 +602,10 @@ }, "type": "array" }, + "consultation": { + "$ref": "#/$defs/ConsultationFacade", + "description": "The project metadata for the built-in Consultation facade. Its paths,\nenvelopes, problems, and protocol schemas remain maintained Rust." + }, "kind": { "const": "AdapterProject", "type": "string" @@ -335,14 +626,15 @@ }, "profile": { "$ref": "#/$defs/PinnedRef", - "description": "The pinned facade profile." + "description": "The pinned authored facade profile. Exactly one of this member and\n`consultation` selects the deployment's caller-facing protocol." }, "project": { "$ref": "#/$defs/ProjectIdentity", "description": "The deployment's identity." }, "recordTypes": { - "description": "The declared record types and fields.", + "default": [], + "description": "The declared record types and fields. A Consultation or Write\nrecord type left out is declared with no fields.", "items": { "$ref": "#/$defs/RecordType" }, @@ -355,15 +647,17 @@ "$ref": "#/$defs/TemplatedRoute" }, "type": "array" + }, + "write": { + "$ref": "#/$defs/WriteFacade", + "description": "The project metadata for the built-in synchronous GovStack direct\nWrite target. It may coexist with Consultation, but never with an\nauthored generic profile." } }, "required": [ "apiVersion", "kind", "pack", - "profile", - "project", - "recordTypes" + "project" ], "title": "Registry Adapter project", "type": "object" diff --git a/public/schemas/adapter/project/project.v1alpha1.schema/index.html b/public/schemas/adapter/project/project.v1alpha1.schema/index.html index 705df65fb..6bd646993 100644 --- a/public/schemas/adapter/project/project.v1alpha1.schema/index.html +++ b/public/schemas/adapter/project/project.v1alpha1.schema/index.html @@ -48,8 +48,8 @@

Lifecycle

Statusactive Compatibility linev1alpha1 Owneradapter - Artifact SHA-2562a31e088e66073cf94b5d3769aebbeef3552cafa59c2281405be83ccd5390435 - Immutable artifacthttps://id.registrystack.org/artifacts/sha256/2a31e088e66073cf94b5d3769aebbeef3552cafa59c2281405be83ccd5390435.json + Artifact SHA-2565660a447be61398747639c2e0ecde3b0e355c29d4ff454209d3041cd02f5d1a5 + Immutable artifacthttps://id.registrystack.org/artifacts/sha256/5660a447be61398747639c2e0ecde3b0e355c29d4ff454209d3041cd02f5d1a5.json diff --git a/public/schemas/adapter/runtime/runtime.v1alpha1.schema.json b/public/schemas/adapter/runtime/runtime.v1alpha1.schema.json index 14fb73260..f9ef61c40 100644 --- a/public/schemas/adapter/runtime/runtime.v1alpha1.schema.json +++ b/public/schemas/adapter/runtime/runtime.v1alpha1.schema.json @@ -132,6 +132,11 @@ ], "type": "object" }, + "EnvironmentSecretProviderConfig": { + "additionalProperties": false, + "description": "The environment secret provider. It takes no settings.", + "type": "object" + }, "ExternalId": { "description": "An identifier another system issues, written exactly as its issuer gives it.", "maxLength": 512, @@ -139,9 +144,24 @@ "pattern": "^[^\\u0000-\\u001F\\u007F-\\u009F]+$", "type": "string" }, + "FileSecretProviderConfig": { + "additionalProperties": false, + "description": "The file secret provider.", + "properties": { + "root": { + "description": "Absolute directory holding one file per secret. Each file must be a\nregular file owned by the runtime user, mode 0400 or 0600, with exactly\none hard link.", + "pattern": "^/", + "type": "string" + } + }, + "required": [ + "root" + ], + "type": "object" + }, "IdempotencyRetention": { "additionalProperties": false, - "description": "Exact write-response custody in the idempotency store\n(`products/adapter/CONCEPT.md` section 9 and D12).", + "description": "Exact write-response custody in the idempotency store\n(`products/adapter/CONCEPT.md` section 9).", "properties": { "responseRetentionSeconds": { "description": "Seconds an exact facade response remains available for replay. The\nspent-key tombstone remains after its response body is erased.", @@ -502,6 +522,43 @@ } ] }, + "SecretProvidersConfig": { + "additionalProperties": false, + "anyOf": [ + { + "properties": { + "file": { + "$ref": "#/$defs/FileSecretProviderConfig" + } + }, + "required": [ + "file" + ] + }, + { + "properties": { + "environment": { + "$ref": "#/$defs/EnvironmentSecretProviderConfig" + } + }, + "required": [ + "environment" + ] + } + ], + "description": "The secret providers a runtime enables. A reference is resolved only by a\nprovider declared here: `secret:file/name` under `file.root`, and\n`secret:env/NAME` only when `environment: {}` is present.", + "properties": { + "environment": { + "$ref": "#/$defs/EnvironmentSecretProviderConfig", + "description": "Enables `secret:env/NAME` references, read from the process\nenvironment. Declared as an empty mapping: `environment: {}`." + }, + "file": { + "$ref": "#/$defs/FileSecretProviderConfig", + "description": "Enables `secret:file/name` references, read from files under `root`." + } + }, + "type": "object" + }, "SecretReference": { "description": "An exact secret reference: secret:file/name, resolved under secretProviders.file.root, or secret:env/NAME, resolved only when secretProviders.environment is declared.", "pattern": "^(?:secret:env/[A-Z][A-Z0-9_]{0,127}|secret:file/[a-z][a-z0-9._-]{0,127})$", @@ -562,7 +619,7 @@ }, "cursorKeyRef": { "$ref": "#/$defs/SecretReference", - "description": "The secret that seals pagination cursors: exactly 32 bytes. A\ndeployment that binds a paginated operation declares it; one\nthat serves only reads by identifier may omit it." + "description": "The 32-byte secret for pagination cursors and opaque fixed Write\nguards, with separate cryptographic domains. Paginated reads and\nfixed Write require it; identifier-only reads may omit it." }, "cursorTtlSeconds": { "description": "How long a cursor stays valid, in seconds (60 to 86400); absent,\n900.", @@ -608,7 +665,11 @@ }, "previousCursorKeyRef": { "$ref": "#/$defs/SecretReference", - "description": "The retiring cursor key, still accepted when opening a cursor so\na key rotation does not strand cursors in flight." + "description": "The retiring key, still accepted when opening a cursor or fixed\nWrite guard so one key rotation does not strand active clients." + }, + "secretProviders": { + "$ref": "#/$defs/SecretProvidersConfig", + "description": "The secret providers this facade enables. Omission enables environment\nsecrets only; file secrets require an explicit\nabsolute `file.root`." } }, "required": [ diff --git a/public/schemas/adapter/runtime/runtime.v1alpha1.schema/index.html b/public/schemas/adapter/runtime/runtime.v1alpha1.schema/index.html index 688fd4495..3e401d44f 100644 --- a/public/schemas/adapter/runtime/runtime.v1alpha1.schema/index.html +++ b/public/schemas/adapter/runtime/runtime.v1alpha1.schema/index.html @@ -48,8 +48,8 @@

Lifecycle

Statusactive Compatibility linev1alpha1 Owneradapter - Artifact SHA-256169ce8657f2ab5a3140216b6aeeeaaaf7dfcea0f508364a76de142b93c6a0a14 - Immutable artifacthttps://id.registrystack.org/artifacts/sha256/169ce8657f2ab5a3140216b6aeeeaaaf7dfcea0f508364a76de142b93c6a0a14.json + Artifact SHA-2564a62c7dd8399bd3a5991efb203a34310918bad17a95b8a74c7784e6486ae6f21 + Immutable artifacthttps://id.registrystack.org/artifacts/sha256/4a62c7dd8399bd3a5991efb203a34310918bad17a95b8a74c7784e6486ae6f21.json diff --git a/public/schemas/breg/migration-descriptor/migration-descriptor.v1alpha1.schema.json b/public/schemas/breg/migration-descriptor/migration-descriptor.v1alpha1.schema.json index d288a93ba..d6f5060b4 100644 --- a/public/schemas/breg/migration-descriptor/migration-descriptor.v1alpha1.schema.json +++ b/public/schemas/breg/migration-descriptor/migration-descriptor.v1alpha1.schema.json @@ -348,7 +348,7 @@ }, { "additionalProperties": false, - "description": "The engine-executed field-encryption backfill: it seals the plaintext\ncolumn of every covered field into envelopes and blind indexes, chunk\nby chunk, with the journal and cursor effects each chunk commits. It\ncarries no authored SQL; its bound statement content is the canonical\nJSON of this descriptor step, so the ledger checksum pins it without a\nSQL artifact.", + "description": "The engine-executed field-encryption backfill: it seals the plaintext\ncolumn of every covered field into envelopes and blind indexes, chunk\nby chunk, with the journal and cursor effects each chunk commits. It\ncarries no authored SQL; its bound statement content is the canonical\nJSON of this descriptor step, so the ledger checksum pins it without a\nSQL artifact. A step whose objects name only blind-index columns is\ninstead the re-index of a changed normalization list: it re-derives\neach digest from the stored envelope and touches nothing else.", "properties": { "chunkSize": { "format": "uint32", diff --git a/public/schemas/breg/migration-descriptor/migration-descriptor.v1alpha1.schema/index.html b/public/schemas/breg/migration-descriptor/migration-descriptor.v1alpha1.schema/index.html index 09a950ab0..3aebd14bb 100644 --- a/public/schemas/breg/migration-descriptor/migration-descriptor.v1alpha1.schema/index.html +++ b/public/schemas/breg/migration-descriptor/migration-descriptor.v1alpha1.schema/index.html @@ -48,8 +48,8 @@

Lifecycle

Statusactive Compatibility linev1alpha1 Ownerbreg - Artifact SHA-2568177563ac1261680db7070b59f8b651d1cfe8c33cb5423891902bab4d5f8173e - Immutable artifacthttps://id.registrystack.org/artifacts/sha256/8177563ac1261680db7070b59f8b651d1cfe8c33cb5423891902bab4d5f8173e.json + Artifact SHA-256a21e02c4ca6980e0eb4dc733b99b1fdb465aec8fa1c661ec70e86d71d4146e06 + Immutable artifacthttps://id.registrystack.org/artifacts/sha256/a21e02c4ca6980e0eb4dc733b99b1fdb465aec8fa1c661ec70e86d71d4146e06.json diff --git a/public/schemas/breg/module/module.v1alpha1.schema.json b/public/schemas/breg/module/module.v1alpha1.schema.json index 326b186a9..dc99c488b 100644 --- a/public/schemas/breg/module/module.v1alpha1.schema.json +++ b/public/schemas/breg/module/module.v1alpha1.schema.json @@ -3092,6 +3092,16 @@ "const": "remove-separators", "description": "Strips spaces, hyphens, slashes, and dots from the canonical form.", "type": "string" + }, + { + "const": "nfc", + "description": "Canonical composition (Unicode NFC), so a precomposed letter and its\nbase letter plus combining mark give the same value. Compatibility\nforms such as ligatures are not mapped.", + "type": "string" + }, + { + "const": "case-fold", + "description": "NFC, then full Unicode case folding with no locale tailoring, then NFC\nagain: `ß` and `ẞ` fold to `ss`, `ς` folds to `σ`, canonically\nequivalent spellings fold alike whatever the order of their combining\nmarks, and a capital that folds to a decomposed sequence is composed\nagain. Unlike `lowercase` it is meant for matching, so it is the case\nstep to pair with `nfc`.", + "type": "string" } ] }, diff --git a/public/schemas/breg/module/module.v1alpha1.schema/index.html b/public/schemas/breg/module/module.v1alpha1.schema/index.html index a93f4792e..4d5068180 100644 --- a/public/schemas/breg/module/module.v1alpha1.schema/index.html +++ b/public/schemas/breg/module/module.v1alpha1.schema/index.html @@ -48,8 +48,8 @@

Lifecycle

Statusactive Compatibility linev1alpha1 Ownerbreg - Artifact SHA-2569949f5e3a10d4deb0038359d76d1f59b160449472bcd0b6c99e45ad776d20f80 - Immutable artifacthttps://id.registrystack.org/artifacts/sha256/9949f5e3a10d4deb0038359d76d1f59b160449472bcd0b6c99e45ad776d20f80.json + Artifact SHA-2562948465f69e8dd8856e245826adb47addbb0b0b3ae5a4a3eece660dfa77ba060 + Immutable artifacthttps://id.registrystack.org/artifacts/sha256/2948465f69e8dd8856e245826adb47addbb0b0b3ae5a4a3eece660dfa77ba060.json diff --git a/public/schemas/breg/project/project.v1alpha1.schema.json b/public/schemas/breg/project/project.v1alpha1.schema.json index fb1886e08..91ee846a4 100644 --- a/public/schemas/breg/project/project.v1alpha1.schema.json +++ b/public/schemas/breg/project/project.v1alpha1.schema.json @@ -3177,6 +3177,29 @@ ], "type": "object" }, + "ManifestProjectionAuthoritySource": { + "additionalProperties": false, + "description": "An identified public authority, shaped like the catalogue publisher.\nIt projects to a Registry Manifest `authorities[]` entry. Without an\n`iri`, the authority IRI is derived from the canonical base IRI.", + "properties": { + "authorityType": { + "type": "string" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "iri": { + "type": "string" + }, + "name": { + "$ref": "#/$defs/DisplayText" + } + }, + "required": [ + "id", + "name" + ], + "type": "object" + }, "ManifestProjectionCatalogSource": { "additionalProperties": false, "properties": { @@ -3449,6 +3472,10 @@ "ManifestProjectionPublicServiceSource": { "additionalProperties": false, "properties": { + "competentAuthority": { + "$ref": "#/$defs/LocalId", + "description": "The id of the `authorities[]` entry legally competent for this\nservice (CPSV-AP `hasCompetentAuthority`)." + }, "id": { "$ref": "#/$defs/LocalId" }, @@ -3458,7 +3485,8 @@ }, "required": [ "id", - "title" + "title", + "competentAuthority" ], "type": "object" }, @@ -3490,6 +3518,13 @@ "accessProfile": { "type": "string" }, + "authorities": { + "description": "The identified public authorities the Manifest names. The public\nservice names its competent authority from this list by id.", + "items": { + "$ref": "#/$defs/ManifestProjectionAuthoritySource" + }, + "type": "array" + }, "catalog": { "$ref": "#/$defs/ManifestProjectionCatalogSource" }, @@ -3536,6 +3571,7 @@ "accessProfile", "classificationCeiling", "catalog", + "authorities", "publicService", "datasets", "dataServices" @@ -3738,6 +3774,16 @@ "const": "remove-separators", "description": "Strips spaces, hyphens, slashes, and dots from the canonical form.", "type": "string" + }, + { + "const": "nfc", + "description": "Canonical composition (Unicode NFC), so a precomposed letter and its\nbase letter plus combining mark give the same value. Compatibility\nforms such as ligatures are not mapped.", + "type": "string" + }, + { + "const": "case-fold", + "description": "NFC, then full Unicode case folding with no locale tailoring, then NFC\nagain: `ß` and `ẞ` fold to `ss`, `ς` folds to `σ`, canonically\nequivalent spellings fold alike whatever the order of their combining\nmarks, and a capital that folds to a decomposed sequence is composed\nagain. Unlike `lowercase` it is meant for matching, so it is the case\nstep to pair with `nfc`.", + "type": "string" } ] }, diff --git a/public/schemas/breg/project/project.v1alpha1.schema/index.html b/public/schemas/breg/project/project.v1alpha1.schema/index.html index 68ed204f6..b515f6f74 100644 --- a/public/schemas/breg/project/project.v1alpha1.schema/index.html +++ b/public/schemas/breg/project/project.v1alpha1.schema/index.html @@ -48,8 +48,8 @@

Lifecycle

Statusactive Compatibility linev1alpha1 Ownerbreg - Artifact SHA-2564babace1053c7b8446b682ce2db17a220263e669b397a414d98ead9d47af459a - Immutable artifacthttps://id.registrystack.org/artifacts/sha256/4babace1053c7b8446b682ce2db17a220263e669b397a414d98ead9d47af459a.json + Artifact SHA-256cab7ff0a619109662b006d87d211743af4a9cc64977c0f01b64889e691d24a84 + Immutable artifacthttps://id.registrystack.org/artifacts/sha256/cab7ff0a619109662b006d87d211743af4a9cc64977c0f01b64889e691d24a84.json diff --git a/public/schemas/breg/runtime/runtime.v1alpha1.schema.json b/public/schemas/breg/runtime/runtime.v1alpha1.schema.json index b3683fe88..b460d4aec 100644 --- a/public/schemas/breg/runtime/runtime.v1alpha1.schema.json +++ b/public/schemas/breg/runtime/runtime.v1alpha1.schema.json @@ -1,5 +1,15 @@ { "$defs": { + "AccessTokenAlgorithm": { + "enum": [ + "EdDSA", + "ES256", + "ES384", + "RS256", + "RS384" + ], + "type": "string" + }, "AllowedClients": { "anyOf": [ { @@ -256,16 +266,6 @@ ], "type": "string" }, - "OidcAlgorithm": { - "enum": [ - "EdDSA", - "ES256", - "ES384", - "RS256", - "RS384" - ], - "type": "string" - }, "RawAttachmentStorageConfig": { "oneOf": [ { @@ -953,7 +953,7 @@ "type": "boolean" }, "allowedAlgorithm": { - "$ref": "#/$defs/OidcAlgorithm" + "$ref": "#/$defs/AccessTokenAlgorithm" }, "allowedClients": { "$ref": "#/$defs/AllowedClients", diff --git a/public/schemas/breg/runtime/runtime.v1alpha1.schema/index.html b/public/schemas/breg/runtime/runtime.v1alpha1.schema/index.html index 5085eaa29..c4999567d 100644 --- a/public/schemas/breg/runtime/runtime.v1alpha1.schema/index.html +++ b/public/schemas/breg/runtime/runtime.v1alpha1.schema/index.html @@ -48,8 +48,8 @@

Lifecycle

Statusactive Compatibility linev1alpha1 Ownerbreg - Artifact SHA-25655959ae4cc86f1cd393cca382d7cdfd367ccc703c8676a350af4299b59ebb043 - Immutable artifacthttps://id.registrystack.org/artifacts/sha256/55959ae4cc86f1cd393cca382d7cdfd367ccc703c8676a350af4299b59ebb043.json + Artifact SHA-256785867b4f14c78862010b53406f62a420e53c4b17d5c8b9f7f95636130b75bd4 + Immutable artifacthttps://id.registrystack.org/artifacts/sha256/785867b4f14c78862010b53406f62a420e53c4b17d5c8b9f7f95636130b75bd4.json diff --git a/public/schemas/casework/holiday-set/holiday-set.v1alpha1.schema.json b/public/schemas/casework/holiday-set/holiday-set.v1alpha1.schema.json index 353c96bfc..97fe8f59a 100644 --- a/public/schemas/casework/holiday-set/holiday-set.v1alpha1.schema.json +++ b/public/schemas/casework/holiday-set/holiday-set.v1alpha1.schema.json @@ -5,6 +5,13 @@ "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$", "type": "string" }, + "DisplayText": { + "description": "Human-readable display text. Bidirectional embedding, override, and isolate controls, byte-order marks, line and paragraph separators, and Unicode noncharacters are refused; multilingual joiners and direction marks remain valid.", + "not": { + "pattern": "[

‪-‮⁦-⁩﷐-﷯￾￿]|🿾|🿿|𯿾|𯿿|𿿾|𿿿|񏿾|񏿿|񟿾|񟿿|񯿾|񯿿|񿿾|񿿿|򏿾|򏿿|򟿾|򟿿|򯿾|򯿿|򿿾|򿿿|󏿾|󏿿|󟿾|󟿿|󯿾|󯿿|󿿾|󿿿|􏿾|􏿿" + }, + "type": "string" + }, "LocalId": { "description": "A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.", "pattern": "^[a-z][a-z0-9_-]{0,63}$", @@ -28,7 +35,7 @@ "type": "array", "uniqueItems": true }, - "holidaySet": { + "id": { "$ref": "#/$defs/LocalId", "description": "The holiday set a calendar names in `holidaySet`." }, @@ -36,6 +43,10 @@ "const": "CaseworkHolidaySet", "type": "string" }, + "label": { + "$ref": "#/$defs/DisplayText", + "description": "An optional human label for the set." + }, "revision": { "format": "uint64", "maximum": 9223372036854775807, @@ -46,7 +57,7 @@ "required": [ "apiVersion", "kind", - "holidaySet", + "id", "revision", "dates" ], diff --git a/public/schemas/casework/holiday-set/holiday-set.v1alpha1.schema/index.html b/public/schemas/casework/holiday-set/holiday-set.v1alpha1.schema/index.html index ad1a20f03..d6dced1a9 100644 --- a/public/schemas/casework/holiday-set/holiday-set.v1alpha1.schema/index.html +++ b/public/schemas/casework/holiday-set/holiday-set.v1alpha1.schema/index.html @@ -48,8 +48,8 @@

Lifecycle

Statusactive Compatibility linev1alpha1 Ownercasework - Artifact SHA-2567131a57da2c495a5f2142ab5e682e6b95cfda65a2e60d743c15c5c0c00b175dd - Immutable artifacthttps://id.registrystack.org/artifacts/sha256/7131a57da2c495a5f2142ab5e682e6b95cfda65a2e60d743c15c5c0c00b175dd.json + Artifact SHA-2563fef758cd53950ea9cef953dca6c2364188eddff2978695c70fd88237d451ece + Immutable artifacthttps://id.registrystack.org/artifacts/sha256/3fef758cd53950ea9cef953dca6c2364188eddff2978695c70fd88237d451ece.json diff --git a/public/schemas/casework/project/project.v1alpha1.schema.json b/public/schemas/casework/project/project.v1alpha1.schema.json index 99e2f4f87..a301f6f72 100644 --- a/public/schemas/casework/project/project.v1alpha1.schema.json +++ b/public/schemas/casework/project/project.v1alpha1.schema.json @@ -1,6 +1,6 @@ { "$defs": { - "CaseworkRole": { + "CaseworkActsAs": { "enum": [ "staff", "supervisor", @@ -732,6 +732,17 @@ "additionalProperties": { "additionalProperties": false, "properties": { + "actsAs": { + "$ref": "#/$defs/CaseworkActsAs" + }, + "description": { + "$ref": "#/$defs/DisplayText", + "description": "What the profile is for, accepted for authoring and tooling; never matched against a caller. Part of the review policy description, which any caller who may read that description can see." + }, + "label": { + "$ref": "#/$defs/DisplayText", + "description": "A name for the profile, accepted for authoring and tooling; never matched against a caller. Part of the review policy description, which any caller who may read that description can see." + }, "principalClaim": { "type": "string" }, @@ -742,15 +753,12 @@ "minItems": 1, "type": "array", "uniqueItems": true - }, - "role": { - "$ref": "#/$defs/CaseworkRole" } }, "required": [ "principalClaim", "requiredScopes", - "role" + "actsAs" ], "type": "object" }, diff --git a/public/schemas/casework/project/project.v1alpha1.schema/index.html b/public/schemas/casework/project/project.v1alpha1.schema/index.html index c8a8f1f8f..d3d1d4a64 100644 --- a/public/schemas/casework/project/project.v1alpha1.schema/index.html +++ b/public/schemas/casework/project/project.v1alpha1.schema/index.html @@ -48,8 +48,8 @@

Lifecycle

Statusactive Compatibility linev1alpha1 Ownercasework - Artifact SHA-256618dd00144eced267ce239c8412381a555e488af08cb7d6936e63dd963463b0a - Immutable artifacthttps://id.registrystack.org/artifacts/sha256/618dd00144eced267ce239c8412381a555e488af08cb7d6936e63dd963463b0a.json + Artifact SHA-25687a1a61127de6eb20c130f17b2d804c8b209c7343e7e4275f480f37833b83fcf + Immutable artifacthttps://id.registrystack.org/artifacts/sha256/87a1a61127de6eb20c130f17b2d804c8b209c7343e7e4275f480f37833b83fcf.json diff --git a/public/schemas/casework/report/report.v1alpha2.schema.json b/public/schemas/casework/report/report.v1alpha2.schema.json index a011a523b..59cb9cca9 100644 --- a/public/schemas/casework/report/report.v1alpha2.schema.json +++ b/public/schemas/casework/report/report.v1alpha2.schema.json @@ -3,9 +3,34 @@ "AccessProfile": { "additionalProperties": false, "properties": { + "actsAs": { + "$ref": "#/$defs/CaseworkActsAs" + }, + "description": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "type": "null" + } + ], + "description": "What the profile is for, accepted for authoring and tooling; never matched against a caller. Part of the review policy description, which any caller who may read that description can see." + }, "id": { "$ref": "#/$defs/LocalId" }, + "label": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "type": "null" + } + ], + "description": "A name for the profile, accepted for authoring and tooling; never matched against a caller. Part of the review policy description, which any caller who may read that description can see." + }, "principalClaim": { "type": "string" }, @@ -16,16 +41,13 @@ "minItems": 1, "type": "array", "uniqueItems": true - }, - "role": { - "$ref": "#/$defs/CaseworkRole" } }, "required": [ "id", "principalClaim", "requiredScopes", - "role" + "actsAs" ], "type": "object" }, @@ -325,7 +347,7 @@ ], "type": "object" }, - "CaseworkRole": { + "CaseworkActsAs": { "enum": [ "staff", "supervisor", @@ -520,6 +542,9 @@ "DevClient": { "additionalProperties": false, "properties": { + "actsAs": { + "$ref": "#/$defs/CaseworkActsAs" + }, "assertionKeyFile": { "type": "string" }, @@ -532,9 +557,6 @@ "profile": { "type": "string" }, - "role": { - "$ref": "#/$defs/CaseworkRole" - }, "subject": { "type": "string" } @@ -542,7 +564,7 @@ "required": [ "id", "profile", - "role", + "actsAs", "subject", "clientIdFile", "assertionKeyFile" @@ -3041,6 +3063,124 @@ ], "type": "object" }, + { + "additionalProperties": false, + "allOf": [ + { + "if": { + "anyOf": [ + { + "properties": { + "ok": { + "const": true + } + }, + "required": [ + "ok" + ] + }, + { + "required": [ + "accessProfiles" + ] + }, + { + "required": [ + "assertionIssuers" + ] + }, + { + "required": [ + "claims" + ] + }, + { + "required": [ + "output" + ] + }, + { + "required": [ + "product" + ] + } + ] + }, + "then": { + "required": [ + "output", + "product", + "claims", + "accessProfiles", + "assertionIssuers" + ] + } + } + ], + "properties": { + "accessProfiles": { + "format": "uint32", + "maximum": 4294967295, + "minimum": 0, + "type": "integer" + }, + "apiVersion": { + "const": "id.registrystack.org/formats/casework/report/v1alpha2", + "type": "string" + }, + "assertionIssuers": { + "format": "uint32", + "maximum": 4294967295, + "minimum": 0, + "type": "integer" + }, + "claims": { + "format": "uint32", + "maximum": 4294967295, + "minimum": 0, + "type": "integer" + }, + "command": { + "const": "generate-identity-facts", + "type": "string" + }, + "diagnostics": { + "items": { + "$ref": "#/$defs/Diagnostic" + }, + "type": "array" + }, + "kind": { + "const": "CaseworkReport", + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "output": { + "type": "string" + }, + "product": { + "type": "string" + }, + "status": { + "$ref": "#/$defs/ReportStatus" + }, + "version": { + "type": "string" + } + }, + "required": [ + "command", + "ok", + "status", + "apiVersion", + "kind", + "version", + "diagnostics" + ], + "type": "object" + }, { "additionalProperties": false, "allOf": [ diff --git a/public/schemas/casework/report/report.v1alpha2.schema/index.html b/public/schemas/casework/report/report.v1alpha2.schema/index.html index 37a7b7b78..31ead2ab9 100644 --- a/public/schemas/casework/report/report.v1alpha2.schema/index.html +++ b/public/schemas/casework/report/report.v1alpha2.schema/index.html @@ -48,8 +48,8 @@

Lifecycle

Statusactive Compatibility linev1alpha2 Ownercasework - Artifact SHA-2569d026bf36a11bc83493f835f028ff52092e0f6c4cd42b471024ead336b6d8a9e - Immutable artifacthttps://id.registrystack.org/artifacts/sha256/9d026bf36a11bc83493f835f028ff52092e0f6c4cd42b471024ead336b6d8a9e.json + Artifact SHA-2562cbf5e3d2fd943abfa3777b63f204feac0dc0f5c02241a121aa3a135f3d420c7 + Immutable artifacthttps://id.registrystack.org/artifacts/sha256/2cbf5e3d2fd943abfa3777b63f204feac0dc0f5c02241a121aa3a135f3d420c7.json diff --git a/public/schemas/coordinator/project/project.v1alpha1.schema.json b/public/schemas/coordinator/project/project.v1alpha1.schema.json index 13518be36..86a87fba3 100644 --- a/public/schemas/coordinator/project/project.v1alpha1.schema.json +++ b/public/schemas/coordinator/project/project.v1alpha1.schema.json @@ -114,6 +114,10 @@ "$ref": "#/$defs/ExternalId", "description": "Exact producer data-schema identifier accepted by this trigger." }, + "description": { + "$ref": "#/$defs/DisplayText", + "description": "An optional explanation of when this start fires; it has no execution or authorization effect." + }, "event": { "$ref": "#/$defs/Schema", "description": "Schema for the complete authenticated event envelope before input mapping." @@ -126,6 +130,10 @@ "$ref": "#/$defs/AuthoredMapping", "description": "Ordinary typed Mapping from the event envelope to Workflow start input." }, + "label": { + "$ref": "#/$defs/DisplayText", + "description": "An optional human label for this start; it changes neither stable identity nor behavior revision." + }, "source": { "$ref": "#/$defs/LocalId", "description": "Logical producer binding declared in runtime eventSources." @@ -162,6 +170,10 @@ }, "type": "object" }, + "label": { + "$ref": "#/$defs/DisplayText", + "description": "An optional human label; it changes neither stable identity nor behavior revision." + }, "limits": { "$ref": "#/$defs/NarrowedLimits", "description": "Optional narrowing of the bounded pure profile; omitted limits retain the default ceiling." @@ -177,10 +189,6 @@ "source": { "description": "A local reviewed source asset inside the project directory.", "type": "string" - }, - "title": { - "$ref": "#/$defs/DisplayText", - "description": "An optional human title; it changes neither stable identity nor behavior revision." } }, "required": [ @@ -367,6 +375,10 @@ "$ref": "#/$defs/LocalId", "description": "The typed pure Function that interprets an external command's provider\nresponse into an accepted result, a declared refusal or an uncertain\noutcome. Required on, and accepted only on, `external.command/v1`." }, + "label": { + "$ref": "#/$defs/DisplayText", + "description": "An optional human label; it changes neither stable identity nor behavior revision." + }, "record": { "$ref": "#/$defs/RecordReference", "description": "Limit BReg read replies to the imported record schema's API field names.\nFields may be hidden by access policy, and their value types remain open." @@ -379,10 +391,6 @@ "$ref": "#/$defs/TemplateReference", "description": "Fix a Messaging template version, its locales and its data schema." }, - "title": { - "$ref": "#/$defs/DisplayText", - "description": "An optional human title; it changes neither stable identity nor behavior revision." - }, "uses": { "$ref": "#/$defs/Operation", "description": "One exact versioned host catalog contract." @@ -404,14 +412,14 @@ "$ref": "#/$defs/DisplayText", "description": "An optional explanation for readers; it has no execution or authorization effect." }, + "label": { + "$ref": "#/$defs/DisplayText", + "description": "An optional human label; it changes neither stable identity nor behavior revision." + }, "next": { "$ref": "#/$defs/LocalId", "description": "The next Step on the successful completion route." }, - "title": { - "$ref": "#/$defs/DisplayText", - "description": "An optional human title; it changes neither stable identity nor behavior revision." - }, "type": { "const": "wait-until", "type": "string" @@ -440,6 +448,10 @@ "$ref": "#/$defs/DisplayText", "description": "An optional explanation for readers; it has no execution or authorization effect." }, + "label": { + "$ref": "#/$defs/DisplayText", + "description": "An optional human label; it changes neither stable identity nor behavior revision." + }, "next": { "$ref": "#/$defs/LocalId", "description": "The next Step on the successful completion route." @@ -459,10 +471,6 @@ "minimum": 1, "type": "integer" }, - "title": { - "$ref": "#/$defs/DisplayText", - "description": "An optional human title; it changes neither stable identity nor behavior revision." - }, "type": { "const": "wait-for", "type": "string" @@ -488,6 +496,10 @@ "$ref": "#/$defs/AuthoredMapping", "description": "The typed Workflow start input, or a mapping supplying the called Operation input." }, + "label": { + "$ref": "#/$defs/DisplayText", + "description": "An optional human label; it changes neither stable identity nor behavior revision." + }, "next": { "$ref": "#/$defs/LocalId", "description": "The next Step on the successful completion route." @@ -500,10 +512,6 @@ "$ref": "#/$defs/LocalId", "description": "One local Operation alias declared under operations." }, - "title": { - "$ref": "#/$defs/DisplayText", - "description": "An optional human title; it changes neither stable identity nor behavior revision." - }, "type": { "const": "call", "type": "string" @@ -543,9 +551,9 @@ "$ref": "#/$defs/LocalId", "description": "The everyday case for readers and diagram tools; it has no execution or revision effect." }, - "title": { + "label": { "$ref": "#/$defs/DisplayText", - "description": "An optional human title; it changes neither stable identity nor behavior revision." + "description": "An optional human label; it changes neither stable identity nor behavior revision." }, "type": { "const": "choose", @@ -567,6 +575,10 @@ "$ref": "#/$defs/DisplayText", "description": "An optional explanation for readers; it has no execution or authorization effect." }, + "label": { + "$ref": "#/$defs/DisplayText", + "description": "An optional human label; it changes neither stable identity nor behavior revision." + }, "outcome": { "$ref": "#/$defs/LocalId", "description": "One declared terminal outcome name." @@ -575,10 +587,6 @@ "$ref": "#/$defs/AuthoredMapping", "description": "The declared result schema or mapping; Functions and the host enforce it." }, - "title": { - "$ref": "#/$defs/DisplayText", - "description": "An optional human title; it changes neither stable identity nor behavior revision." - }, "type": { "const": "finish", "type": "string" @@ -1069,6 +1077,10 @@ "description": "The kind of document this is.", "type": "string" }, + "label": { + "$ref": "#/$defs/DisplayText", + "description": "An optional human label; it changes neither stable identity nor behavior revision." + }, "operations": { "additionalProperties": { "$ref": "#/$defs/AuthoredOperation" @@ -1102,10 +1114,6 @@ "description": "The shared Project identity; its version is a human release label, not the computed Workflow revision.", "unevaluatedProperties": false }, - "title": { - "$ref": "#/$defs/DisplayText", - "description": "An optional human title; it changes neither stable identity nor behavior revision." - }, "types": { "additionalProperties": { "$ref": "#/$defs/Schema" diff --git a/public/schemas/coordinator/project/project.v1alpha1.schema/index.html b/public/schemas/coordinator/project/project.v1alpha1.schema/index.html index e566b0a99..e0bd8d202 100644 --- a/public/schemas/coordinator/project/project.v1alpha1.schema/index.html +++ b/public/schemas/coordinator/project/project.v1alpha1.schema/index.html @@ -48,8 +48,8 @@

Lifecycle

Statusactive Compatibility linev1alpha1 Ownercoordinator - Artifact SHA-256472c4861ab27a301f077784e63cd06891ef4b73813aab1dd802c567daac70d16 - Immutable artifacthttps://id.registrystack.org/artifacts/sha256/472c4861ab27a301f077784e63cd06891ef4b73813aab1dd802c567daac70d16.json + Artifact SHA-256b22c06678f15e4a5aa028df61819cde8d37ce2311e1249a3a8fcc18d00aa3eab + Immutable artifacthttps://id.registrystack.org/artifacts/sha256/b22c06678f15e4a5aa028df61819cde8d37ce2311e1249a3a8fcc18d00aa3eab.json diff --git a/public/schemas/coordinator/runtime/runtime.v1alpha1.schema.json b/public/schemas/coordinator/runtime/runtime.v1alpha1.schema.json index 4581027e5..36236290a 100644 --- a/public/schemas/coordinator/runtime/runtime.v1alpha1.schema.json +++ b/public/schemas/coordinator/runtime/runtime.v1alpha1.schema.json @@ -187,6 +187,16 @@ "type": "array", "uniqueItems": true }, + "subjects": { + "description": "The exact token `sub` values this policy admits, compared byte for\nbyte as the issuer writes them: the client's own service-account\nsubject, or the named operators an operator policy serves. Each is at\nmost 512 bytes. A verified token from this client whose subject is not\nlisted is refused, and the list has no unrestricted form.", + "items": { + "$ref": "#/$defs/ExternalId" + }, + "maxItems": 64, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, "workflows": { "description": "The workflows this policy's run actions reach: start, status, inspect,\nretry-same, cancel and reconcile. Required when the policy lists a run\naction and refused when it lists none.", "items": { @@ -201,6 +211,7 @@ } }, "required": [ + "subjects", "requiredScopes", "actions" ], diff --git a/public/schemas/coordinator/runtime/runtime.v1alpha1.schema/index.html b/public/schemas/coordinator/runtime/runtime.v1alpha1.schema/index.html index b3ba841e2..1de4ae1a8 100644 --- a/public/schemas/coordinator/runtime/runtime.v1alpha1.schema/index.html +++ b/public/schemas/coordinator/runtime/runtime.v1alpha1.schema/index.html @@ -48,8 +48,8 @@

Lifecycle

Statusactive Compatibility linev1alpha1 Ownercoordinator - Artifact SHA-256bbbc49cc6aa19d2b6329db459ac7d5c8635583e2a0ca63f2d75556840a804202 - Immutable artifacthttps://id.registrystack.org/artifacts/sha256/bbbc49cc6aa19d2b6329db459ac7d5c8635583e2a0ca63f2d75556840a804202.json + Artifact SHA-2569d68a7c21821319603e16c3fb1a381e206a4f488a3eae95c9544180004ae2ea3 + Immutable artifacthttps://id.registrystack.org/artifacts/sha256/9d68a7c21821319603e16c3fb1a381e206a4f488a3eae95c9544180004ae2ea3.json diff --git a/public/schemas/documents/project/project.v1alpha1.schema.json b/public/schemas/documents/project/project.v1alpha1.schema.json index 0abd9ce3b..c3aad7401 100644 --- a/public/schemas/documents/project/project.v1alpha1.schema.json +++ b/public/schemas/documents/project/project.v1alpha1.schema.json @@ -8,10 +8,22 @@ "$ref": "#/$defs/ActorKind", "description": "The actor kind the token must claim." }, + "actsAs": { + "$ref": "#/$defs/ActsAs", + "description": "What a caller resolved to this profile is to a document." + }, + "description": { + "$ref": "#/$defs/DisplayText", + "description": "What the profile is for, accepted for authoring and tooling; never matched against a caller." + }, "institution": { "$ref": "#/$defs/ExternalId", "description": "The institution this profile acts for. The Document Store records it\nas the issuing institution of every document version a caller under\nthis profile reserves; a profile that names none records none." }, + "label": { + "$ref": "#/$defs/DisplayText", + "description": "A name for the profile, accepted for authoring and tooling; never matched against a caller." + }, "principalClaim": { "$ref": "#/$defs/ExternalId", "description": "`sub`, or the name of another string claim identifying the principal.\nEvery profile of one actor kind names the same claim." @@ -33,10 +45,6 @@ "minItems": 1, "type": "array", "uniqueItems": true - }, - "role": { - "$ref": "#/$defs/AccessRole", - "description": "What a caller resolved to this profile is to a document." } }, "required": [ @@ -44,11 +52,19 @@ "requiredScopes", "requesterClients", "actorKind", - "role" + "actsAs" ], "type": "object" }, - "AccessRole": { + "ActorKind": { + "description": "An actor kind: a service, or a human person.", + "enum": [ + "service", + "human" + ], + "type": "string" + }, + "ActsAs": { "description": "What a caller resolved to an access profile is to a document.", "oneOf": [ { @@ -68,14 +84,6 @@ } ] }, - "ActorKind": { - "description": "An actor kind: a service, or a human person.", - "enum": [ - "service", - "human" - ], - "type": "string" - }, "ContentType": { "description": "A lowercase concrete media type `type/subtype` without parameters or wildcards, matched exactly.", "pattern": "^[a-z0-9][a-z0-9!#$&^_.+-]{0,126}/[a-z0-9][a-z0-9!#$&^_.+-]{0,126}$", diff --git a/public/schemas/documents/project/project.v1alpha1.schema/index.html b/public/schemas/documents/project/project.v1alpha1.schema/index.html index e8b11111c..91d25d0e2 100644 --- a/public/schemas/documents/project/project.v1alpha1.schema/index.html +++ b/public/schemas/documents/project/project.v1alpha1.schema/index.html @@ -48,8 +48,8 @@

Lifecycle

Statusactive Compatibility linev1alpha1 Ownerdocuments - Artifact SHA-25643d58cc3028e7a97f91929625aeff1ec243f937e16ee455de8f3cb1caa4675b7 - Immutable artifacthttps://id.registrystack.org/artifacts/sha256/43d58cc3028e7a97f91929625aeff1ec243f937e16ee455de8f3cb1caa4675b7.json + Artifact SHA-25626884cc061cde1b1e5f6eb60d59b738c4522d9451c3ebef0f0e0ac007f17a7e9 + Immutable artifacthttps://id.registrystack.org/artifacts/sha256/26884cc061cde1b1e5f6eb60d59b738c4522d9451c3ebef0f0e0ac007f17a7e9.json diff --git a/public/schemas/evidence/bundle/bundle.v1.schema.json b/public/schemas/evidence/bundle/bundle.v1.schema.json index ab6ee6f30..6617b114b 100644 --- a/public/schemas/evidence/bundle/bundle.v1.schema.json +++ b/public/schemas/evidence/bundle/bundle.v1.schema.json @@ -192,6 +192,16 @@ properties: Names the bundle-held public JWK the runtime signer's key must equal exactly, proven by one sign-and-verify test before readiness. $ref: '#/$defs/public-jwk-path' + certificateChainFile: + description: >- + Optional PEM certificate chain, leaf first, certifying the active signing key; omission + means credentials and the served key set carry no `x5c`. The file is public material + named `public-keys/.chain.pem` for the active key's thumbprint, so a rotated or + revoked key's chain is never reused. Startup refuses a chain that does not parse, is + longer than the platform chain policy allows, has a leaf for a different key, or has + a certificate that is not valid at startup. Relying parties validate the chain to + their own trust anchors; Evidence's verifier only compares the leaf with a pinned key. + $ref: '#/$defs/certificate-chain-path' publishedPublicJwkFiles: description: >- Retains predecessor public keys in the served key set so assertions signed before @@ -474,6 +484,9 @@ $defs: public-jwk-path: type: string pattern: ^public-keys/[A-Za-z0-9._-]+\.jwk\.json$ + certificate-chain-path: + type: string + pattern: ^public-keys/[A-Za-z0-9._-]+\.chain\.pem$ service-key-id: type: string pattern: ^[A-Za-z0-9_-]{42}[AEIMQUYcgkosw048]$ @@ -981,10 +994,27 @@ $defs: description: Reviewed minimization posture, equal to the pinned route contract. enum: [source-derived, field-projected, record-transformed] factSchema: - description: Bundle fact schema whose JSON meaning must equal the pinned route schema. + description: Final facts schema, equal to the pinned source schema unless a governed projection is selected. allOf: - {$ref: '#/$defs/relative-path'} - {pattern: '^schemas/'} + projection: + description: Package-owned projection of matched native facts under the acquisition deadline. + type: object + additionalProperties: false + required: [script, entrypoint, digest] + properties: + script: + allOf: + - {$ref: '#/$defs/relative-path'} + - {pattern: '^derivations/.*\.rhai$'} + entrypoint: {type: string, minLength: 1, maxLength: 128, pattern: '^[A-Za-z_][A-Za-z0-9_]*$'} + digest: {$ref: '#/$defs/Digest'} + allOf: + - if: {required: [projection]} + then: + properties: + posture: {const: record-transformed} source-connection: type: object additionalProperties: false @@ -1321,13 +1351,41 @@ $defs: - valueClaims acquisition: description: >- - Selects one configured source. The pinned pack route owns every preparation, - extraction, branching and bounded data operation in that acquisition. + Selects the configured source of each acquisition channel. The pinned pack route owns + every preparation, extraction, branching and bounded data operation in that + acquisition. `source` is the source channel's Source. The optional `holderPresented` + block is the holder-presented channel: a Source whose pack route reaches an endpoint + with the `wallet-presentation-v1` host protocol, and the selector profiles whose + requests acquire through it. A request's selector profile selects exactly one + channel, so a profile listed under `holderPresented` never reaches `source`, and a + `source` Source never uses the wallet presentation protocol. `source` may be omitted + only beside `holderPresented`, and then `holderPresented.selectorProfiles` lists + every selector profile the definition's subject roles allow. type: object additionalProperties: false - required: [source] + anyOf: + - required: [source] + - required: [holderPresented] properties: source: {$ref: '#/$defs/local-id'} + holderPresented: + description: >- + The holder-presented channel. The definition offers only the signed JWS representation, + because a holder-presented assertion answers as a signed flattened JWS. + type: object + additionalProperties: false + required: [source, selectorProfiles] + properties: + source: {$ref: '#/$defs/local-id'} + selectorProfiles: + description: >- + Selector profiles that select this channel. Each is a profile one of the + definition's subject roles allows. + type: array + minItems: 1 + maxItems: 16 + uniqueItems: true + items: {$ref: '#/$defs/local-id'} requirement: type: object additionalProperties: false @@ -1763,6 +1821,34 @@ $defs: derivation inputs, so a caller cannot distinguish the cause from the response. enum: - collapse-unresolved + publicCheck: + description: >- + Experimental (`v1alpha1`). Declares that this requirement can answer an + unauthenticated certificate check once a target authority activates it. Names the + Source fact that carries the check code and the two concepts that form the public + answer; the status concept is a controlled category and the fields concept is a + reviewed structured value, and they are different concepts. The requirement has one + subject role with one selector profile of one field, acquires through one Source, + and declares no holder-presented channel. Omitted when the requirement declares no + public check, so existing configuration revisions do not change. + type: object + additionalProperties: false + required: + - checkCodeFact + - statusOutput + - fieldsOutput + properties: + checkCodeFact: + description: Name of the Source fact that carries the check code the caller must present. + type: string + minLength: 1 + maxLength: 128 + statusOutput: + description: Handle of the controlled-category concept that carries the public status. + type: string + fieldsOutput: + description: Handle of the reviewed-structured-value concept that carries the public fields. + type: string boolean-constraints: type: object additionalProperties: false diff --git a/public/schemas/evidence/bundle/bundle.v1.schema/index.html b/public/schemas/evidence/bundle/bundle.v1.schema/index.html index 33a5b47ef..7d50e8a67 100644 --- a/public/schemas/evidence/bundle/bundle.v1.schema/index.html +++ b/public/schemas/evidence/bundle/bundle.v1.schema/index.html @@ -48,8 +48,8 @@

Lifecycle

Statusactive Compatibility linev1 Ownerevidence - Artifact SHA-2562847a56eda9c8b838d28fde619853c36851acc57b094b74ec2665150f1ace8d4 - Immutable artifacthttps://id.registrystack.org/artifacts/sha256/2847a56eda9c8b838d28fde619853c36851acc57b094b74ec2665150f1ace8d4.yaml + Artifact SHA-25689428c7c4d08555b71f3d7476a45e2439fd0d2ba4b97eae6ee18be78fcbf8e3e + Immutable artifacthttps://id.registrystack.org/artifacts/sha256/89428c7c4d08555b71f3d7476a45e2439fd0d2ba4b97eae6ee18be78fcbf8e3e.yaml diff --git a/public/schemas/evidence/fixture/fixture.v1alpha1.schema.json b/public/schemas/evidence/fixture/fixture.v1alpha1.schema.json index 4a93cee93..69519be93 100644 --- a/public/schemas/evidence/fixture/fixture.v1alpha1.schema.json +++ b/public/schemas/evidence/fixture/fixture.v1alpha1.schema.json @@ -163,6 +163,7 @@ "syntheticOnly", "coequalAcceptanceDefinition", "cases", + "privacyExpectation", "apiVersion", "kind" ], @@ -396,6 +397,8 @@ "required": [ "syntheticOnly", "cases", + "common", + "privacyExpectation", "apiVersion", "kind" ], diff --git a/public/schemas/evidence/fixture/fixture.v1alpha1.schema/index.html b/public/schemas/evidence/fixture/fixture.v1alpha1.schema/index.html index d83bd587b..a9fe2a358 100644 --- a/public/schemas/evidence/fixture/fixture.v1alpha1.schema/index.html +++ b/public/schemas/evidence/fixture/fixture.v1alpha1.schema/index.html @@ -48,8 +48,8 @@

Lifecycle

Statusactive Compatibility linev1alpha1 Ownerevidence - Artifact SHA-256912661673c41c1119a8bd83809c66cc2d38b16e171c963b4988175c74f627664 - Immutable artifacthttps://id.registrystack.org/artifacts/sha256/912661673c41c1119a8bd83809c66cc2d38b16e171c963b4988175c74f627664.json + Artifact SHA-2560f8f2332533c8577677e7a53f62a0ac400c08233f13ced03e168331d8058c2c8 + Immutable artifacthttps://id.registrystack.org/artifacts/sha256/0f8f2332533c8577677e7a53f62a0ac400c08233f13ced03e168331d8058c2c8.json diff --git a/public/schemas/evidence/holder-bound-verification-policy/holder-bound-verification-policy.v1.schema.json b/public/schemas/evidence/holder-bound-verification-policy/holder-bound-verification-policy.v1.schema.json index 55f761b9c..6daae6fb3 100644 --- a/public/schemas/evidence/holder-bound-verification-policy/holder-bound-verification-policy.v1.schema.json +++ b/public/schemas/evidence/holder-bound-verification-policy/holder-bound-verification-policy.v1.schema.json @@ -112,6 +112,25 @@ properties: verification instant. It bounds how stale a proof of possession may be and is not a replay window, because no state records that a proof was already accepted. + acceptedChannels: + type: array + minItems: 1 + maxItems: 2 + uniqueItems: true + items: {enum: [source, holder-presented]} + description: >- + The channels this procedure accepts, from the closed channel vocabulary. + Omitting it means source only, so a procedure written before the channel + member existed refuses an assertion that a holder presented. An empty + list is refused; an open choice is every channel listed. + maximumCredentialAgeSeconds: + type: integer + minimum: 1 + maximum: 315360000 + description: >- + Longest acceptable observedAt minus presentedCredential.issuedAt, applied + to holder-presented assertions only. Omitting it means no bound on the + credential's age. clockSkewSeconds: type: integer minimum: 0 @@ -240,7 +259,8 @@ $comment: >- original transaction. Copying values out of the presentation under verification proves nothing, and a policy that omitted an expectation would silently skip a comparison, so the document is closed and every field except - clockSkewSeconds and expectedHolderKeyThumbprint is required. The optional + clockSkewSeconds, expectedHolderKeyThumbprint, acceptedChannels, and + maximumCredentialAgeSeconds is required. The optional holder key thumbprint authenticates a pre-established holder and is not what proves possession; the key-binding signature over the credential's own confirmation key is. A failed comparison reports one generic class and never diff --git a/public/schemas/evidence/holder-bound-verification-policy/holder-bound-verification-policy.v1.schema/index.html b/public/schemas/evidence/holder-bound-verification-policy/holder-bound-verification-policy.v1.schema/index.html index f033978d4..3c4474f92 100644 --- a/public/schemas/evidence/holder-bound-verification-policy/holder-bound-verification-policy.v1.schema/index.html +++ b/public/schemas/evidence/holder-bound-verification-policy/holder-bound-verification-policy.v1.schema/index.html @@ -48,8 +48,8 @@

Lifecycle

Statusactive Compatibility linev1 Ownerevidence - Artifact SHA-25637d6a662a61c9a5730be870e1d202209d0bebeb658968f978f317bb8995c1cb5 - Immutable artifacthttps://id.registrystack.org/artifacts/sha256/37d6a662a61c9a5730be870e1d202209d0bebeb658968f978f317bb8995c1cb5.yaml + Artifact SHA-256c731a74bea9e4d649dd2e0d074e20a10e617c6ef844ec6f8223fae78b3f0b28d + Immutable artifacthttps://id.registrystack.org/artifacts/sha256/c731a74bea9e4d649dd2e0d074e20a10e617c6ef844ec6f8223fae78b3f0b28d.yaml diff --git a/public/schemas/evidence/oid4vci-runtime/oid4vci-runtime.v1alpha1.schema.json b/public/schemas/evidence/oid4vci-runtime/oid4vci-runtime.v1alpha1.schema.json index c4fef1a77..0ccb7606b 100644 --- a/public/schemas/evidence/oid4vci-runtime/oid4vci-runtime.v1alpha1.schema.json +++ b/public/schemas/evidence/oid4vci-runtime/oid4vci-runtime.v1alpha1.schema.json @@ -101,6 +101,11 @@ }, "type": "object" }, + "Draft13ProfileDocument": { + "additionalProperties": false, + "description": "The Draft 13 compatibility profile switch. It takes no settings.", + "type": "object" + }, "EnvironmentSecretProviderConfig": { "additionalProperties": false, "description": "The environment secret provider. It takes no settings.", @@ -231,6 +236,10 @@ "description": "Permit plain HTTP beyond loopback to the offer-token issuer and to\n`jwksUri`.", "type": "boolean" }, + "allowedClients": { + "$ref": "#/$defs/IdentifierRestriction", + "description": "Client identifiers permitted to create offers, each at most 128 bytes,\nor `unrestricted` for any client the issuer vouched for." + }, "audiences": { "description": "The audiences this service answers to, each at most 256 bytes. A token\nissued for anything else is refused.", "items": { @@ -240,10 +249,6 @@ "type": "array", "uniqueItems": true }, - "authorizedClients": { - "$ref": "#/$defs/IdentifierRestriction", - "description": "Client identifiers permitted to create offers, each at most 128 bytes,\nor `unrestricted` for any client the issuer vouched for." - }, "claims": { "$ref": "#/$defs/ClaimNamesDocument", "default": { @@ -284,11 +289,50 @@ "issuer", "jwksUri", "audiences", - "authorizedClients", + "allowedClients", "requiredScopes" ], "type": "object" }, + "RateLimitsDocument": { + "additionalProperties": false, + "description": "Request budgets. A request over its budget is answered 429 with a\n`Retry-After` header.", + "properties": { + "offerBurst": { + "default": 60, + "description": "The most offers one authorized principal may create in a burst.", + "format": "uint32", + "maximum": 100000, + "minimum": 1, + "type": "integer" + }, + "offersPerPrincipalPerMinute": { + "default": 600, + "description": "Offers one authorized principal may create per minute.", + "format": "uint32", + "maximum": 100000, + "minimum": 1, + "type": "integer" + }, + "walletRequestBurst": { + "default": 300, + "description": "The most requests each wallet endpoint admits in a burst.", + "format": "uint32", + "maximum": 100000, + "minimum": 1, + "type": "integer" + }, + "walletRequestsPerMinute": { + "default": 3000, + "description": "Requests per minute each of the token, nonce and credential endpoints\ntakes from all wallets together.", + "format": "uint32", + "maximum": 1000000, + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + }, "SecretProvidersConfig": { "additionalProperties": false, "anyOf": [ @@ -461,6 +505,10 @@ "$ref": "#/$defs/Url", "description": "The `credential_issuer` identifier this service publishes, and the\nvalue a wallet proof must carry as its `aud`: a bare origin with no\npath, query, or fragment. https in strict mode. A trailing slash is\nremoved, so what is published and what is compared are the same bytes." }, + "draft13Profile": { + "$ref": "#/$defs/Draft13ProfileDocument", + "description": "Serves the OpenID4VCI Draft 13 compatibility profile beside the 1.0\nFinal profile, at its own issuer identifier: the `credentialIssuer`\nfollowed by `/protocol/oid4vci/draft-13`. Written as an empty mapping,\n`draft13Profile: {}`; absent means the profile is not served and none of\nits routes exist. It shares the offer store and the offer authorization\nwith the 1.0 profile, and an offer made for one profile cannot be\nredeemed through the other." + }, "evidence": { "$ref": "#/$defs/EvidenceDocument", "description": "The Evidence deployment this service requests credentials from." @@ -482,6 +530,10 @@ "$ref": "#/$defs/OffersDocument", "description": "The authorization boundary of the adopter-facing offer endpoint." }, + "rateLimits": { + "$ref": "#/$defs/RateLimitsDocument", + "description": "Request budgets. Absent means the defaults of each member." + }, "secretProviders": { "$ref": "#/$defs/SecretProvidersConfig", "description": "The secret providers `tokenClient.privateKeyRef` may name." diff --git a/public/schemas/evidence/oid4vci-runtime/oid4vci-runtime.v1alpha1.schema/index.html b/public/schemas/evidence/oid4vci-runtime/oid4vci-runtime.v1alpha1.schema/index.html index c8b17ee34..969094a95 100644 --- a/public/schemas/evidence/oid4vci-runtime/oid4vci-runtime.v1alpha1.schema/index.html +++ b/public/schemas/evidence/oid4vci-runtime/oid4vci-runtime.v1alpha1.schema/index.html @@ -48,8 +48,8 @@

Lifecycle

Statusactive Compatibility linev1alpha1 Ownerevidence - Artifact SHA-256701ee38be07cd80d8fd73a393abfb243511d3accd7a34124893c39781d883191 - Immutable artifacthttps://id.registrystack.org/artifacts/sha256/701ee38be07cd80d8fd73a393abfb243511d3accd7a34124893c39781d883191.json + Artifact SHA-256fb01195c02d6b94784e17ea07f6de45f56370df8af933a2bb2142a3fd18c9146 + Immutable artifacthttps://id.registrystack.org/artifacts/sha256/fb01195c02d6b94784e17ea07f6de45f56370df8af933a2bb2142a3fd18c9146.json diff --git a/public/schemas/evidence/oid4vp-runtime/oid4vp-runtime.v1alpha1.schema.json b/public/schemas/evidence/oid4vp-runtime/oid4vp-runtime.v1alpha1.schema.json new file mode 100644 index 000000000..feb429121 --- /dev/null +++ b/public/schemas/evidence/oid4vp-runtime/oid4vp-runtime.v1alpha1.schema.json @@ -0,0 +1,859 @@ +{ + "$defs": { + "AccessTokenAlgorithm": { + "enum": [ + "EdDSA", + "ES256", + "ES384", + "RS256", + "RS384" + ], + "type": "string" + }, + "ApplicantTokensDocument": { + "additionalProperties": false, + "description": "The issuer of applicant tokens.", + "properties": { + "algorithms": { + "default": [ + "ES256" + ], + "description": "The signature algorithms a token may use; one family only.", + "items": { + "$ref": "#/$defs/AccessTokenAlgorithm" + }, + "maxItems": 5, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "allowInsecureHttp": { + "default": false, + "description": "Permit plain HTTP beyond loopback to the configured issuer and to a\nJWKS URI declared in configuration. TLS remains required unless the\noperator explicitly accepts this transport risk.", + "type": "boolean" + }, + "audience": { + "description": "The audience every accepted access token must carry in `aud`.", + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "issuer": { + "$ref": "#/$defs/Url", + "description": "Exact issuer accepted in access-token `iss` claims, an absolute\n`https` URL, or a plain `http` URL when `allowInsecureHttp` is set." + }, + "jwksSource": { + "$ref": "#/$defs/JwksSource", + "default": { + "type": "discovery" + }, + "description": "Where the issuer's signing keys come from. Absent reads the issuer's\nOpenID Connect discovery document." + }, + "maximumTokenLifetimeSeconds": { + "default": 900, + "description": "The longest lifetime a token may carry, in seconds.", + "format": "uint64", + "maximum": 3600, + "minimum": 60, + "type": "integer" + }, + "requiredScope": { + "$ref": "#/$defs/ExternalId", + "description": "The scope every token must carry to create a session. The creating\nprincipal is the token's issuer, subject, and client." + } + }, + "required": [ + "issuer", + "audience", + "requiredScope" + ], + "type": "object" + }, + "AuditDestinationKind": { + "description": "The configured audit destination kind, as written in product configuration.", + "oneOf": [ + { + "const": "file", + "description": "Durable, rotated JSON Lines file.", + "type": "string" + }, + { + "const": "stdout", + "description": "One JSON line per entry on standard output, flushed per entry.", + "type": "string" + } + ] + }, + "AuditDocument": { + "additionalProperties": false, + "description": "The process-local audit destination and keyed-pseudonym secret.", + "properties": { + "destination": { + "$ref": "#/$defs/AuditDestinationKind", + "default": "file" + }, + "hashKeyRef": { + "$ref": "#/$defs/SecretReference", + "description": "Secret reference to the audit hash key." + }, + "path": { + "pattern": "^/", + "type": "string" + }, + "retentionDays": { + "format": "uint32", + "maximum": 36500, + "minimum": 1, + "type": "integer" + }, + "rotateBytes": { + "format": "uint64", + "maximum": 4294967295, + "minimum": 1048576, + "type": "integer" + } + }, + "required": [ + "hashKeyRef" + ], + "type": "object" + }, + "ClaimQueryDocument": { + "additionalProperties": false, + "description": "One claim a credential query asks for.", + "properties": { + "path": { + "description": "The claims path: object member names from the credential root, 1 to 8.\nA name may repeat along a path (`address`, `address`), so this is an\nordered list, not a set.", + "items": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "maxItems": 8, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "path" + ], + "type": "object" + }, + "ClientIdentifierDocument": { + "description": "One client identifier. The `type` member names the choice.", + "oneOf": [ + { + "additionalProperties": false, + "description": "`x509_san_dns`: the leaf certificate's DNS subject alternative name is\nthe public host. Requests are signed with the certificate's key (ES256).", + "properties": { + "certificateChainRef": { + "$ref": "#/$defs/SecretReference", + "description": "The PEM certificate chain, leaf first, as a secret reference." + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The identifier policies name in `clientIdentifier`." + }, + "signingKeyRef": { + "$ref": "#/$defs/SecretReference", + "description": "The private JWK that signs request objects, as a secret reference.\nIt must be the leaf certificate's key." + }, + "type": { + "const": "x509-san-dns", + "type": "string" + } + }, + "required": [ + "type", + "id", + "certificateChainRef", + "signingKeyRef" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "`x509_hash`: the client identifier is the SHA-256 hash of the leaf\ncertificate. Requests are signed with the certificate's key (ES256).", + "properties": { + "certificateChainRef": { + "$ref": "#/$defs/SecretReference", + "description": "The PEM certificate chain, leaf first, as a secret reference." + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The identifier policies name in `clientIdentifier`." + }, + "signingKeyRef": { + "$ref": "#/$defs/SecretReference", + "description": "The private JWK that signs request objects, as a secret reference.\nIt must be the leaf certificate's key." + }, + "type": { + "const": "x509-hash", + "type": "string" + } + }, + "required": [ + "type", + "id", + "certificateChainRef", + "signingKeyRef" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "`decentralized_identifier` with a `did:web` DID. The service serves the\nDID document at `/.well-known/did.json`. Requests are signed with an\nEd25519 key (EdDSA).", + "properties": { + "did": { + "$ref": "#/$defs/ExternalId", + "description": "`did:web:` and the host of `publicBaseUrl`, with no port and no\npath." + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The identifier policies name in `clientIdentifier`." + }, + "signingKeyRef": { + "$ref": "#/$defs/SecretReference", + "description": "The private Ed25519 JWK (`kty` OKP, `alg` EdDSA) that signs request\nobjects, as a secret reference." + }, + "type": { + "const": "decentralized-identifier", + "type": "string" + } + }, + "required": [ + "type", + "id", + "did", + "signingKeyRef" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "`pre-registered`: the client identifier is the bare `clientId` a wallet\noperator registers, with this service's `/v1/jwks` as the key set.\nRequests are signed with an Ed25519 key (EdDSA).", + "properties": { + "clientId": { + "$ref": "#/$defs/ExternalId", + "description": "The client identifier as registered with the wallet operator. It\nholds no `:`, which is what marks it as pre-registered." + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The identifier policies name in `clientIdentifier`." + }, + "signingKeyRef": { + "$ref": "#/$defs/SecretReference", + "description": "The private Ed25519 JWK (`kty` OKP, `alg` EdDSA) that signs request\nobjects, as a secret reference." + }, + "type": { + "const": "pre-registered", + "type": "string" + } + }, + "required": [ + "type", + "id", + "clientId", + "signingKeyRef" + ], + "type": "object" + } + ] + }, + "CredentialFormat": { + "description": "The only credential format the service requests.", + "enum": [ + "dc+sd-jwt" + ], + "type": "string" + }, + "CredentialQueryDocument": { + "additionalProperties": false, + "description": "One DCQL credential query.", + "properties": { + "claims": { + "description": "The claims asked for, 1 to 64. Ask only for what the policy needs.\nAbsent, the query requests no selectively disclosable claim and the\nwallet presents the credential with none (OpenID4VP 1.0 section 6.4.1);\nan empty list is refused.", + "items": { + "$ref": "#/$defs/ClaimQueryDocument" + }, + "maxItems": 64, + "minItems": 1, + "type": "array" + }, + "format": { + "$ref": "#/$defs/CredentialFormat", + "description": "The credential format, `dc+sd-jwt`." + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The query identifier the wallet keys its `vp_token` by." + }, + "vctValues": { + "description": "The credential types (`vct`) the wallet may present for this query, 1\nto 16.", + "items": { + "$ref": "#/$defs/ExternalId" + }, + "maxItems": 16, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "id", + "format", + "vctValues" + ], + "type": "object" + }, + "EnvironmentSecretProviderConfig": { + "additionalProperties": false, + "description": "The environment secret provider. It takes no settings.", + "type": "object" + }, + "EvidenceCredentialsDocument": { + "additionalProperties": false, + "description": "The issuer of the Evidence service credential.", + "properties": { + "algorithms": { + "default": [ + "ES256" + ], + "description": "The signature algorithms a token may use; one family only.", + "items": { + "$ref": "#/$defs/AccessTokenAlgorithm" + }, + "maxItems": 5, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "allowInsecureHttp": { + "default": false, + "description": "Permit plain HTTP beyond loopback to the configured issuer and to a\nJWKS URI declared in configuration. TLS remains required unless the\noperator explicitly accepts this transport risk.", + "type": "boolean" + }, + "allowedClient": { + "$ref": "#/$defs/ExternalId", + "description": "The one client allowed to read results: Evidence's service client." + }, + "audience": { + "description": "The audience every accepted access token must carry in `aud`.", + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "issuer": { + "$ref": "#/$defs/Url", + "description": "Exact issuer accepted in access-token `iss` claims, an absolute\n`https` URL, or a plain `http` URL when `allowInsecureHttp` is set." + }, + "jwksSource": { + "$ref": "#/$defs/JwksSource", + "default": { + "type": "discovery" + }, + "description": "Where the issuer's signing keys come from. Absent reads the issuer's\nOpenID Connect discovery document." + }, + "maximumTokenLifetimeSeconds": { + "default": 900, + "description": "The longest lifetime a token may carry, in seconds.", + "format": "uint64", + "maximum": 3600, + "minimum": 60, + "type": "integer" + }, + "requiredScope": { + "$ref": "#/$defs/ExternalId", + "description": "The scope the Evidence token must carry to read a result." + } + }, + "required": [ + "issuer", + "audience", + "allowedClient", + "requiredScope" + ], + "type": "object" + }, + "ExternalId": { + "description": "An identifier another system issues, written exactly as its issuer gives it.", + "maxLength": 512, + "minLength": 1, + "pattern": "^[^\\u0000-\\u001F\\u007F-\\u009F]+$", + "type": "string" + }, + "FileSecretProviderConfig": { + "additionalProperties": false, + "description": "The file secret provider.", + "properties": { + "root": { + "description": "Absolute directory holding one file per secret. Each file must be a\nregular file owned by the runtime user, mode 0400 or 0600, with exactly\none hard link.", + "pattern": "^/", + "type": "string" + } + }, + "required": [ + "root" + ], + "type": "object" + }, + "JwksSource": { + "description": "Where a runtime obtains the OIDC issuer's signing keys.", + "oneOf": [ + { + "additionalProperties": false, + "description": "Read `jwks_uri` from the issuer's OpenID Connect discovery document.", + "properties": { + "type": { + "const": "discovery", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Fetch the key set from this absolute `https` URI, skipping discovery.\nA plain `http` URI is accepted on loopback for supervised local\ndevelopment, and beyond loopback only when the issuer block sets\n`allowInsecureHttp`.", + "properties": { + "type": { + "const": "uri", + "type": "string" + }, + "uri": { + "$ref": "#/$defs/Url" + } + }, + "required": [ + "type", + "uri" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Read the key set from a secret, for deployments without network access\nto the issuer.", + "properties": { + "documentRef": { + "$ref": "#/$defs/SecretReference" + }, + "type": { + "const": "static", + "type": "string" + } + }, + "required": [ + "type", + "documentRef" + ], + "type": "object" + } + ] + }, + "ListenerBind": { + "description": "Socket address the runtime listens on, written host:port with an IP address host ([addr]:port for IPv6).", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "ListenerConfig": { + "additionalProperties": false, + "description": "The listener of a runtime that declares no TLS or exposure settings.", + "properties": { + "bind": { + "$ref": "#/$defs/ListenerBind" + } + }, + "required": [ + "bind" + ], + "type": "object" + }, + "ListenerDocument": { + "additionalProperties": false, + "description": "The listener a wallet and a portal reach.", + "properties": { + "bind": { + "$ref": "#/$defs/ListenerBind" + }, + "maximumRequestBytes": { + "default": 16384, + "description": "The largest request body accepted, in bytes.", + "format": "uint32", + "maximum": 1048576, + "minimum": 1024, + "type": "integer" + }, + "requestTimeoutMilliseconds": { + "default": 5000, + "description": "How long one request may take, in milliseconds.", + "format": "uint64", + "maximum": 30000, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "bind" + ], + "type": "object" + }, + "LocalId": { + "description": "A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.", + "pattern": "^[a-z][a-z0-9_-]{0,63}$", + "type": "string" + }, + "PolicyDocument": { + "additionalProperties": false, + "description": "A presentation policy.", + "properties": { + "acceptedResponseEncryption": { + "default": [ + "A128GCM", + "A256GCM" + ], + "description": "The `enc` values of an encrypted authorization response the service\naccepts and advertises.", + "items": { + "$ref": "#/$defs/ResponseEncryption" + }, + "maxItems": 2, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "clientIdentifier": { + "$ref": "#/$defs/LocalId", + "description": "The client identifier requests under this policy use: the `id` of an\nentry in `clientIdentifiers`." + }, + "credentials": { + "description": "The credential queries, 1 to 8.", + "items": { + "$ref": "#/$defs/CredentialQueryDocument" + }, + "maxItems": 8, + "minItems": 1, + "type": "array" + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The policy identifier a portal names when it creates a session." + }, + "trustedAuthorities": { + "description": "Trusted authority hints applied to every credential query. Omit for a\nwallet that does not support them.", + "items": { + "$ref": "#/$defs/TrustedAuthorityDocument" + }, + "maxItems": 4, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "id", + "clientIdentifier", + "credentials" + ], + "type": "object" + }, + "RateLimitsDocument": { + "additionalProperties": false, + "description": "Request-rate limits.", + "properties": { + "evidenceReadBurst": { + "default": 100, + "description": "The most result reads one Evidence client may make in a burst.", + "format": "uint32", + "maximum": 100000, + "minimum": 1, + "type": "integer" + }, + "evidenceReadsPerMinute": { + "default": 600, + "description": "Result reads per minute for one Evidence client.", + "format": "uint32", + "maximum": 1000000, + "minimum": 1, + "type": "integer" + }, + "responseBurstPerRequest": { + "default": 6, + "description": "The most response attempts against one session in a burst.", + "format": "uint32", + "maximum": 1000, + "minimum": 1, + "type": "integer" + }, + "responsesPerRequestPerMinute": { + "default": 12, + "description": "Response attempts per minute against one session.", + "format": "uint32", + "maximum": 6000, + "minimum": 1, + "type": "integer" + }, + "sessionCreationBurst": { + "default": 10, + "description": "The most sessions one principal may create in a burst.", + "format": "uint32", + "maximum": 100000, + "minimum": 1, + "type": "integer" + }, + "sessionCreationsPerPrincipalPerMinute": { + "default": 30, + "description": "Sessions one principal may create per minute.", + "format": "uint32", + "maximum": 100000, + "minimum": 1, + "type": "integer" + }, + "walletRequestBurst": { + "default": 100, + "description": "The most wallet requests admitted in a burst.", + "format": "uint32", + "maximum": 100000, + "minimum": 1, + "type": "integer" + }, + "walletRequestsPerMinute": { + "default": 600, + "description": "Request object fetches per minute, across all wallets.", + "format": "uint32", + "maximum": 1000000, + "minimum": 1, + "type": "integer" + }, + "walletResponseBurst": { + "default": 100, + "description": "The most wallet responses admitted in a burst.", + "format": "uint32", + "maximum": 100000, + "minimum": 1, + "type": "integer" + }, + "walletResponsesPerMinute": { + "default": 600, + "description": "Wallet responses per minute across all sessions. Every attempt counts,\nincluding those for unknown request identifiers.", + "format": "uint32", + "maximum": 1000000, + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + }, + "ResponseEncryption": { + "description": "The accepted `enc` values of an encrypted authorization response.", + "enum": [ + "A128GCM", + "A256GCM" + ], + "type": "string" + }, + "SecretProvidersConfig": { + "additionalProperties": false, + "anyOf": [ + { + "properties": { + "file": { + "$ref": "#/$defs/FileSecretProviderConfig" + } + }, + "required": [ + "file" + ] + }, + { + "properties": { + "environment": { + "$ref": "#/$defs/EnvironmentSecretProviderConfig" + } + }, + "required": [ + "environment" + ] + } + ], + "description": "The secret providers a runtime enables. A reference is resolved only by a\nprovider declared here: `secret:file/name` under `file.root`, and\n`secret:env/NAME` only when `environment: {}` is present.", + "properties": { + "environment": { + "$ref": "#/$defs/EnvironmentSecretProviderConfig", + "description": "Enables `secret:env/NAME` references, read from the process\nenvironment. Declared as an empty mapping: `environment: {}`." + }, + "file": { + "$ref": "#/$defs/FileSecretProviderConfig", + "description": "Enables `secret:file/name` references, read from files under `root`." + } + }, + "type": "object" + }, + "SecretReference": { + "description": "An exact secret reference: secret:file/name, resolved under secretProviders.file.root, or secret:env/NAME, resolved only when secretProviders.environment is declared.", + "pattern": "^(?:secret:env/[A-Z][A-Z0-9_]{0,127}|secret:file/[a-z][a-z0-9._-]{0,127})$", + "type": "string" + }, + "SessionsDocument": { + "additionalProperties": false, + "description": "The bounds of the in-memory session store.", + "properties": { + "maximumHeldPresentationBytes": { + "default": 268435456, + "description": "The most presentation bytes the store holds across all sessions, from\nthe moment a response is accepted until its session ends or its result\nexpires. A response that would exceed it is refused with a retryable\n503; the sessions already holding results are unaffected.", + "format": "uint64", + "maximum": 17179869184, + "minimum": 1048576, + "type": "integer" + }, + "maximumLiveSessions": { + "default": 4096, + "description": "How many sessions the store holds. A full store refuses new sessions\nrather than forgetting live ones.", + "format": "uint32", + "maximum": 1048576, + "minimum": 1, + "type": "integer" + }, + "resultTtlSeconds": { + "default": 1800, + "description": "How long an accepted presentation is held for Evidence to read, in\nseconds.", + "format": "uint64", + "maximum": 3600, + "minimum": 30, + "type": "integer" + }, + "sessionTtlSeconds": { + "default": 300, + "description": "How long a session waits for the wallet's response, in seconds. The\nrequest object expires with it.", + "format": "uint64", + "maximum": 900, + "minimum": 30, + "type": "integer" + } + }, + "type": "object" + }, + "TrustedAuthorityDocument": { + "additionalProperties": false, + "description": "A trusted authority hint passed to the wallet for minimisation. The service\nstill decides trust itself.", + "properties": { + "type": { + "$ref": "#/$defs/TrustedAuthorityType", + "description": "The authority type." + }, + "values": { + "description": "Authority Key Identifiers, base64url, 1 to 16.", + "items": { + "$ref": "#/$defs/ExternalId" + }, + "maxItems": 16, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "type", + "values" + ], + "type": "object" + }, + "TrustedAuthorityType": { + "description": "The trusted authority type; only `aki` is offered.", + "enum": [ + "aki" + ], + "type": "string" + }, + "Url": { + "description": "An absolute http or https URL with a host preserved as written, no user information, and no backslash, whitespace or control character. DNS case and equivalent IPv6 literals are permitted.", + "format": "uri", + "maxLength": 2048, + "pattern": "^[Hh][Tt][Tt][Pp][Ss]?://[^/?#@\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]+([/?#][^\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]*)?$", + "type": "string" + } + }, + "$id": "https://id.registrystack.org/schemas/evidence/oid4vp-runtime/oid4vp-runtime.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "description": "The wallet protocol service runtime file: one deployment of the OpenID4VP\nverifier front end for Evidence.", + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/evidence/oid4vp-runtime/v1alpha1", + "description": "The format version of this file.", + "type": "string" + }, + "applicantTokens": { + "$ref": "#/$defs/ApplicantTokensDocument", + "description": "The issuer of the applicant tokens a portal presents to create a\nsession." + }, + "audit": { + "$ref": "#/$defs/AuditDocument", + "description": "The required durable audit journal." + }, + "clientIdentifiers": { + "description": "How the service identifies itself to a wallet: one or more client\nidentifiers, each named by a local id. Every policy names the one it\nuses, and every identifier is used by at least one policy.", + "items": { + "$ref": "#/$defs/ClientIdentifierDocument" + }, + "maxItems": 8, + "minItems": 1, + "type": "array" + }, + "evidenceCredentials": { + "$ref": "#/$defs/EvidenceCredentialsDocument", + "description": "The issuer of the Evidence service credential that reads a result." + }, + "kind": { + "const": "EvidenceOid4vpRuntimeConfig", + "description": "The document kind.", + "type": "string" + }, + "listener": { + "$ref": "#/$defs/ListenerDocument", + "description": "The listener a wallet and a portal reach." + }, + "metricsListener": { + "$ref": "#/$defs/ListenerConfig", + "description": "The optional operator-only metrics listener: a loopback or private\naddress the service listener does not use. Absent means no metrics\nendpoint exists." + }, + "policies": { + "description": "What a portal may ask a wallet to present. At least one.", + "items": { + "$ref": "#/$defs/PolicyDocument" + }, + "minItems": 1, + "type": "array" + }, + "publicBaseUrl": { + "$ref": "#/$defs/Url", + "description": "The public origin wallets reach this service at: a bare https origin\nwith no path, query, or fragment. The response URI and the request URI\nare built from it. A trailing slash is removed." + }, + "rateLimits": { + "$ref": "#/$defs/RateLimitsDocument", + "description": "Request-rate limits." + }, + "secretProviders": { + "$ref": "#/$defs/SecretProvidersConfig", + "description": "The secret providers the `*Ref` members may name." + }, + "sessions": { + "$ref": "#/$defs/SessionsDocument", + "description": "The bounds of the in-memory session store." + } + }, + "required": [ + "apiVersion", + "kind", + "publicBaseUrl", + "listener", + "secretProviders", + "audit", + "applicantTokens", + "evidenceCredentials", + "clientIdentifiers", + "policies" + ], + "title": "Evidence OpenID4VP verifier runtime configuration", + "type": "object" +} diff --git a/public/schemas/evidence/oid4vp-runtime/oid4vp-runtime.v1alpha1.schema/index.html b/public/schemas/evidence/oid4vp-runtime/oid4vp-runtime.v1alpha1.schema/index.html new file mode 100644 index 000000000..bfb1bedfb --- /dev/null +++ b/public/schemas/evidence/oid4vp-runtime/oid4vp-runtime.v1alpha1.schema/index.html @@ -0,0 +1,100 @@ + + + + + + Evidence OpenID4VP verifier runtime configuration | Registry Stack identifiers + + + + + + + + +
+
+
+

JSON Schema

+

Evidence OpenID4VP verifier runtime configuration

+

Evidence OpenID4VP verifier runtime configuration JSON Schema.

+

https://id.registrystack.org/schemas/evidence/oid4vp-runtime/oid4vp-runtime.v1alpha1.schema.json

+
+
+
+
+

Authority boundary

+

This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior.

+

The canonical machine artifact at this URI is the JSON Schema itself.

+
+
+

Lifecycle

+ + + + + + + + +
Statusactive
Compatibility linev1alpha1
Ownerevidence
Artifact SHA-256225b0d03402f422442432fd5195ccf3483ef79cf744d883bbfb9e96ba89e6465
Immutable artifacthttps://id.registrystack.org/artifacts/sha256/225b0d03402f422442432fd5195ccf3483ef79cf744d883bbfb9e96ba89e6465.json
+
+
+

Documentation

+ + +
+
+
+ + + diff --git a/public/schemas/evidence/project/project.v1alpha1.schema.json b/public/schemas/evidence/project/project.v1alpha1.schema.json index 200b31746..e67cbc38b 100644 --- a/public/schemas/evidence/project/project.v1alpha1.schema.json +++ b/public/schemas/evidence/project/project.v1alpha1.schema.json @@ -3,14 +3,29 @@ "Acquisition": { "additionalProperties": false, "properties": { + "holderPresented": { + "anyOf": [ + { + "$ref": "#/$defs/HolderPresented" + }, + { + "type": "null" + } + ], + "description": "A wallet presentation Source for the selector profiles it lists. A\nrequest on one of those profiles acquires only through this Source." + }, "source": { - "$ref": "#/$defs/LocalId", - "description": "One reviewed route owns the complete bounded provider interaction." + "anyOf": [ + { + "$ref": "#/$defs/LocalId" + }, + { + "type": "null" + } + ], + "description": "One reviewed route owns the complete bounded provider interaction for\nthe selector profiles that `holderPresented` does not claim. Optional\nonly when `holderPresented` lists every profile the subject roles allow." } }, - "required": [ - "source" - ], "type": "object" }, "AcquisitionPosture": { @@ -89,6 +104,17 @@ }, "type": "object" }, + "publicCheck": { + "anyOf": [ + { + "$ref": "#/$defs/PublicCheck" + }, + { + "type": "null" + } + ], + "description": "Experimental (`v1alpha1`). Declares that this definition may answer the\nunauthenticated public certificate check once a target authority\nactivates it. Declaring it grants nothing by itself." + }, "purpose": { "type": "string" }, @@ -549,6 +575,28 @@ ], "type": "object" }, + "HolderPresented": { + "additionalProperties": false, + "properties": { + "selectorProfiles": { + "items": { + "$ref": "#/$defs/LocalId" + }, + "maxItems": 16, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "source": { + "$ref": "#/$defs/LocalId" + } + }, + "required": [ + "source", + "selectorProfiles" + ], + "type": "object" + }, "LocalId": { "description": "A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.", "pattern": "^[a-z][a-z0-9_-]{0,63}$", @@ -800,6 +848,32 @@ ], "type": "string" }, + "PublicCheck": { + "additionalProperties": false, + "description": "The public certificate check's view of one assertion definition: where the\nstored check code is read from, and which two outputs form the answer. Other\noutputs of the definition stay on the relying-service path.", + "properties": { + "checkCodeFact": { + "description": "Name of a string fact of the acquiring Source holding the stored check\ncode. The code is compared and then removed; no Output can carry it.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "fieldsOutput": { + "$ref": "#/$defs/LocalId", + "description": "Output id of a reviewed structured value whose `fields` object is the\nprinted content of the answer." + }, + "statusOutput": { + "$ref": "#/$defs/LocalId", + "description": "Output id of a controlled category whose values lie within `valid`,\n`suspended`, `revoked` and `expired`." + } + }, + "required": [ + "checkCodeFact", + "statusOutput", + "fieldsOutput" + ], + "type": "object" + }, "Representation": { "enum": [ "signed-jws", @@ -949,6 +1023,17 @@ "pack": { "$ref": "#/$defs/PackReference" }, + "projection": { + "anyOf": [ + { + "$ref": "#/$defs/SourceProjection" + }, + { + "type": "null" + } + ], + "description": "Optional project-owned projection of matched native facts. Acquisition\nand lookup classification remain in the reusable pack." + }, "route": { "$ref": "#/$defs/LocalId" } @@ -993,6 +1078,27 @@ ], "type": "object" }, + "SourceProjection": { + "additionalProperties": false, + "description": "A reviewed source-facts projection and its versioned output JSON Schema.", + "properties": { + "entrypoint": { + "type": "string" + }, + "schema": { + "type": "string" + }, + "source": { + "type": "string" + } + }, + "required": [ + "source", + "entrypoint", + "schema" + ], + "type": "object" + }, "Subject": { "additionalProperties": false, "properties": { diff --git a/public/schemas/evidence/project/project.v1alpha1.schema/index.html b/public/schemas/evidence/project/project.v1alpha1.schema/index.html index 99249eac7..e13df200f 100644 --- a/public/schemas/evidence/project/project.v1alpha1.schema/index.html +++ b/public/schemas/evidence/project/project.v1alpha1.schema/index.html @@ -48,8 +48,8 @@

Lifecycle

Statusactive Compatibility linev1alpha1 Ownerevidence - Artifact SHA-25662c45846105e0231417e0450568a899ea05f78f41250b450353c074407cc5f26 - Immutable artifacthttps://id.registrystack.org/artifacts/sha256/62c45846105e0231417e0450568a899ea05f78f41250b450353c074407cc5f26.json + Artifact SHA-256f91af7d0c873134675c27063eafcea7500210443225dd0f9e8309e1f6680f13d + Immutable artifacthttps://id.registrystack.org/artifacts/sha256/f91af7d0c873134675c27063eafcea7500210443225dd0f9e8309e1f6680f13d.json diff --git a/public/schemas/evidence/runtime/runtime.v1alpha1.schema.json b/public/schemas/evidence/runtime/runtime.v1alpha1.schema.json index 913e3a2ec..90d9ceb92 100644 --- a/public/schemas/evidence/runtime/runtime.v1alpha1.schema.json +++ b/public/schemas/evidence/runtime/runtime.v1alpha1.schema.json @@ -286,7 +286,7 @@ properties: destination: description: >- `file`, the default, appends each entry durably to `path` under a single-writer lock - and rotates and prunes sealed files; `stdout` writes each entry as one line on + and rotates the active file and prunes rotated files; `stdout` writes each entry as one line on standard output for a collector that owns durability, rotation, and retention. enum: - file @@ -300,14 +300,14 @@ properties: $ref: '#/$defs/absolute-path' rotateBytes: description: >- - Size at which the active file is sealed and a fresh one opened; defaults to + Size at which the active file is rotated and a fresh one opened; defaults to 104857600 (100 MiB). File destination only. type: integer minimum: 1048576 maximum: 4294967295 retentionDays: description: >- - Age in days after which a sealed file is deleted when the writer opens or rotates; + Age in days after which a rotated file is deleted when the writer opens or rotates; defaults to 90. The active file is never deleted. File destination only. type: integer minimum: 1 diff --git a/public/schemas/evidence/runtime/runtime.v1alpha1.schema/index.html b/public/schemas/evidence/runtime/runtime.v1alpha1.schema/index.html index ba04f0718..6027bbe78 100644 --- a/public/schemas/evidence/runtime/runtime.v1alpha1.schema/index.html +++ b/public/schemas/evidence/runtime/runtime.v1alpha1.schema/index.html @@ -48,8 +48,8 @@

Lifecycle

Statusactive Compatibility linev1 Ownerevidence - Artifact SHA-256fd4ef085ef94087f5fa6d846a284957345d5463df44372c5667ea1a8cf643d0d - Immutable artifacthttps://id.registrystack.org/artifacts/sha256/fd4ef085ef94087f5fa6d846a284957345d5463df44372c5667ea1a8cf643d0d.yaml + Artifact SHA-25624b19bc056dd4048d1f02b3270743d3c30c052cb5875b240e8d9b5d06029ecfb + Immutable artifacthttps://id.registrystack.org/artifacts/sha256/24b19bc056dd4048d1f02b3270743d3c30c052cb5875b240e8d9b5d06029ecfb.yaml diff --git a/public/schemas/evidence/target-authority/target-authority.v1alpha1.schema.json b/public/schemas/evidence/target-authority/target-authority.v1alpha1.schema.json index 48fa20d5a..802ec895f 100644 --- a/public/schemas/evidence/target-authority/target-authority.v1alpha1.schema.json +++ b/public/schemas/evidence/target-authority/target-authority.v1alpha1.schema.json @@ -59,6 +59,17 @@ "authority": { "$ref": "#/$defs/AuthorityKind" }, + "description": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "type": "null" + } + ], + "description": "What the profile is for, accepted for authoring and tooling; never matched against a caller." + }, "grantSourceIssuer": { "anyOf": [ { @@ -77,6 +88,17 @@ "minItems": 1, "type": "array" }, + "label": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "type": "null" + } + ], + "description": "A name for the profile, accepted for authoring and tooling; never matched against a caller." + }, "requesterClients": { "items": { "type": "string" @@ -137,6 +159,13 @@ ], "type": "string" }, + "DisplayText": { + "description": "Human-readable display text. Bidirectional embedding, override, and isolate controls, byte-order marks, line and paragraph separators, and Unicode noncharacters are refused; multilingual joiners and direction marks remain valid.", + "not": { + "pattern": "[

‪-‮⁦-⁩﷐-﷯￾￿]|🿾|🿿|𯿾|𯿿|𿿾|𿿿|񏿾|񏿿|񟿾|񟿿|񯿾|񯿿|񿿾|񿿿|򏿾|򏿿|򟿾|򟿿|򯿾|򯿿|򿿾|򿿿|󏿾|󏿿|󟿾|󟿿|󯿾|󯿿|󿿾|󿿿|􏿾|􏿿" + }, + "type": "string" + }, "GrantedSubject": { "additionalProperties": false, "properties": { @@ -174,6 +203,19 @@ "pattern": "^[a-z][a-z0-9_-]{0,63}$", "type": "string" }, + "PublicCheckActivation": { + "additionalProperties": false, + "properties": { + "definition": { + "$ref": "#/$defs/LocalId", + "description": "The definition whose `publicCheck` declaration this target serves." + } + }, + "required": [ + "definition" + ], + "type": "object" + }, "Representation": { "enum": [ "signed-jws", @@ -223,6 +265,17 @@ "project": { "$ref": "#/$defs/LocalId" }, + "publicCheck": { + "anyOf": [ + { + "$ref": "#/$defs/PublicCheckActivation" + }, + { + "type": "null" + } + ], + "description": "Experimental (`v1alpha1`). Activates the unauthenticated public\ncertificate check for one definition that declares `publicCheck`. A\ncheck-only instance leaves `accessProfiles` empty." + }, "target": { "$ref": "#/$defs/LocalId" } diff --git a/public/schemas/evidence/target-authority/target-authority.v1alpha1.schema/index.html b/public/schemas/evidence/target-authority/target-authority.v1alpha1.schema/index.html index d69c52498..2a59c58c9 100644 --- a/public/schemas/evidence/target-authority/target-authority.v1alpha1.schema/index.html +++ b/public/schemas/evidence/target-authority/target-authority.v1alpha1.schema/index.html @@ -48,8 +48,8 @@

Lifecycle

Statusactive Compatibility linev1alpha1 Ownerevidence - Artifact SHA-256a1bab27c4778502d75e2041b7d38dd0dc9cfffaa91d52625813b16cf694b9b22 - Immutable artifacthttps://id.registrystack.org/artifacts/sha256/a1bab27c4778502d75e2041b7d38dd0dc9cfffaa91d52625813b16cf694b9b22.json + Artifact SHA-2564a4b93a4cca9568c089166b2d7f2ee13306b4abcba7289f4b5290d55ef44d644 + Immutable artifacthttps://id.registrystack.org/artifacts/sha256/4a4b93a4cca9568c089166b2d7f2ee13306b4abcba7289f4b5290d55ef44d644.json diff --git a/public/schemas/evidence/verification-policy/verification-policy.v1.schema.json b/public/schemas/evidence/verification-policy/verification-policy.v1.schema.json index 4c7fa0812..ec094945d 100644 --- a/public/schemas/evidence/verification-policy/verification-policy.v1.schema.json +++ b/public/schemas/evidence/verification-policy/verification-policy.v1.schema.json @@ -67,12 +67,31 @@ properties: uniqueItems: true items: {type: string, pattern: '^[A-Za-z0-9_-]{42}[AEIMQUYcgkosw048]$'} description: Emergency denylist of Evidence service-key RFC 7638 thumbprints, checked before a pinned JWKS key is selected. An empty list is explicit. + acceptedChannels: + type: array + minItems: 1 + maxItems: 2 + uniqueItems: true + items: {enum: [source, holder-presented]} + description: >- + The channels this procedure accepts, from the closed channel vocabulary. + Omitting it means source only, so a procedure written before the channel + member existed refuses an assertion that a holder presented. An empty + list is refused; an open choice is every channel listed. + maximumCredentialAgeSeconds: + type: integer + minimum: 1 + maximum: 315360000 + description: >- + Longest acceptable observedAt minus presentedCredential.issuedAt, applied + to holder-presented assertions only. Omitting it means no bound on the + credential's age. clockSkewSeconds: type: integer minimum: 0 maximum: 300 default: 0 - description: The only optional field. Omitting it means zero tolerance. + description: Optional. Omitting it means zero tolerance. $defs: expected-subject: type: object @@ -170,7 +189,7 @@ $comment: >- such as the independently retained original request and an accepted original transaction. Copying values out of the JWS under verification proves nothing, and a policy that omitted an expectation would silently skip a comparison, so - the document is closed and every field except clockSkewSeconds is required. A + the document is closed and every field except clockSkewSeconds, acceptedChannels, and maximumCredentialAgeSeconds is required. A failed comparison, including the expected nonce, the expected role-bound subject set, and the expected output contract, reports the one generic policy class, so re-verification is never an oracle for which hidden comparison diff --git a/public/schemas/evidence/verification-policy/verification-policy.v1.schema/index.html b/public/schemas/evidence/verification-policy/verification-policy.v1.schema/index.html index f74ce7f72..abeef30c5 100644 --- a/public/schemas/evidence/verification-policy/verification-policy.v1.schema/index.html +++ b/public/schemas/evidence/verification-policy/verification-policy.v1.schema/index.html @@ -48,8 +48,8 @@

Lifecycle

Statusactive Compatibility linev1 Ownerevidence - Artifact SHA-256b6a7e7200bf014a4b31dd064aa39bcbdb60fb624ef8c305f4c3431958b47bb12 - Immutable artifacthttps://id.registrystack.org/artifacts/sha256/b6a7e7200bf014a4b31dd064aa39bcbdb60fb624ef8c305f4c3431958b47bb12.yaml + Artifact SHA-256d54c2e60d478680238197bd57d5d5baf83975cf6f30a359d0d331d31f333495f + Immutable artifacthttps://id.registrystack.org/artifacts/sha256/d54c2e60d478680238197bd57d5d5baf83975cf6f30a359d0d331d31f333495f.yaml diff --git a/public/schemas/index.html b/public/schemas/index.html index c17ad2a8a..6153d60d6 100644 --- a/public/schemas/index.html +++ b/public/schemas/index.html @@ -40,7 +40,7 @@

Schemas

This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior.

-

142 published identifiers

+

147 published identifiers

@@ -49,7 +49,9 @@

142 published identifiers

+ + @@ -149,6 +151,7 @@

142 published identifiers

+ @@ -170,6 +173,8 @@

142 published identifiers

+ + diff --git a/public/schemas/index.json b/public/schemas/index.json index 3389458ae..0af63175a 100644 --- a/public/schemas/index.json +++ b/public/schemas/index.json @@ -11,7 +11,7 @@ "source": "src/artifacts/sha256/7d694df0140e03e1a4c1e6a564e52d69a7d334b9e0063d8aeded24d28b83d182.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/proposal_hooks.rs", "sha256": "02fe083f3d06c107298847923f42c0036ee98d5ba12347e527e886c0cedd2178" }, @@ -44,9 +44,9 @@ "source": "src/artifacts/sha256/5bfd55b2ccee480035ee9db13b8fb3a99ac5a2e9cd01645fdda8dfeb593eb688.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-adapterctl/src/schemas.rs", - "sha256": "ee38dfe66d555d580545cec1b5d8e4148d1d108d194d5680c3dca63bbfbfd7c9" + "sha256": "4d73d31f4f7e2221fc7bfcdbb5eaa36c1e675fdfd2372721518fb760f35e13bd" }, "artifact_sha256": "5bfd55b2ccee480035ee9db13b8fb3a99ac5a2e9cd01645fdda8dfeb593eb688", "immutable_uri": "https://id.registrystack.org/artifacts/sha256/5bfd55b2ccee480035ee9db13b8fb3a99ac5a2e9cd01645fdda8dfeb593eb688.json", @@ -77,9 +77,9 @@ "source": "src/artifacts/sha256/ca14df9aafa49fd2018a12869e54f4058e29de07f01c0cbc0dd13f069649bcc9.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-adapterctl/src/schemas.rs", - "sha256": "ee38dfe66d555d580545cec1b5d8e4148d1d108d194d5680c3dca63bbfbfd7c9" + "sha256": "4d73d31f4f7e2221fc7bfcdbb5eaa36c1e675fdfd2372721518fb760f35e13bd" }, "artifact_sha256": "ca14df9aafa49fd2018a12869e54f4058e29de07f01c0cbc0dd13f069649bcc9", "immutable_uri": "https://id.registrystack.org/artifacts/sha256/ca14df9aafa49fd2018a12869e54f4058e29de07f01c0cbc0dd13f069649bcc9.json", @@ -107,15 +107,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "adapter", - "source": "src/artifacts/sha256/c1be1e7bc8efa01de429ea5a5cd7c19da49d9766d71839602a0e81cecc447d8b.json", + "source": "src/artifacts/sha256/d68323a93d34904b5bc49870512e03baf519fd86b2a88078df69e68ee417242f.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-adapterctl/src/schemas.rs", - "sha256": "ee38dfe66d555d580545cec1b5d8e4148d1d108d194d5680c3dca63bbfbfd7c9" + "sha256": "4d73d31f4f7e2221fc7bfcdbb5eaa36c1e675fdfd2372721518fb760f35e13bd" }, - "artifact_sha256": "c1be1e7bc8efa01de429ea5a5cd7c19da49d9766d71839602a0e81cecc447d8b", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/c1be1e7bc8efa01de429ea5a5cd7c19da49d9766d71839602a0e81cecc447d8b.json", + "artifact_sha256": "d68323a93d34904b5bc49870512e03baf519fd86b2a88078df69e68ee417242f", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/d68323a93d34904b5bc49870512e03baf519fd86b2a88078df69e68ee417242f.json", "id": "https://id.registrystack.org/schemas/adapter/job-runtime/job-runtime.v1alpha1.schema.json", "documented_by": [ { @@ -140,15 +140,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "adapter", - "source": "src/artifacts/sha256/38818527ae8cf4435485ea3f283af51b41c4d1d1e0e26d04ab3e59c158c150a7.json", + "source": "src/artifacts/sha256/f1a66ef70359e4078ee3ae3426d378d65fbb62ab2f64545081d3d4973a8b28ad.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-adapterctl/src/schemas.rs", - "sha256": "ee38dfe66d555d580545cec1b5d8e4148d1d108d194d5680c3dca63bbfbfd7c9" + "sha256": "4d73d31f4f7e2221fc7bfcdbb5eaa36c1e675fdfd2372721518fb760f35e13bd" }, - "artifact_sha256": "38818527ae8cf4435485ea3f283af51b41c4d1d1e0e26d04ab3e59c158c150a7", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/38818527ae8cf4435485ea3f283af51b41c4d1d1e0e26d04ab3e59c158c150a7.json", + "artifact_sha256": "f1a66ef70359e4078ee3ae3426d378d65fbb62ab2f64545081d3d4973a8b28ad", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/f1a66ef70359e4078ee3ae3426d378d65fbb62ab2f64545081d3d4973a8b28ad.json", "id": "https://id.registrystack.org/schemas/adapter/job/job.v1alpha1.schema.json", "documented_by": [ { @@ -165,6 +165,39 @@ "statement": "This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior." } }, + { + "uri": "https://id.registrystack.org/schemas/adapter/mapping/mapping.v1alpha1.schema.json", + "title": "Registry Adapter mapping model", + "description": "Registry Adapter project, profile, pack, fixture, runtime configuration, ingestion job, job runtime configuration, and effective contract JSON Schema.", + "kind": "schema", + "status": "active", + "compatibility_line": "v1alpha1", + "owner": "adapter", + "source": "src/artifacts/sha256/1a713af021f69a27c5c7f58b22464cd227972173f9935b2fc3a0a48eda51e6f5.json", + "source_reference": { + "repository": "registry-stack", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", + "path": "crates/registry-adapterctl/src/schemas.rs", + "sha256": "4d73d31f4f7e2221fc7bfcdbb5eaa36c1e675fdfd2372721518fb760f35e13bd" + }, + "artifact_sha256": "1a713af021f69a27c5c7f58b22464cd227972173f9935b2fc3a0a48eda51e6f5", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/1a713af021f69a27c5c7f58b22464cd227972173f9935b2fc3a0a48eda51e6f5.json", + "id": "https://id.registrystack.org/schemas/adapter/mapping/mapping.v1alpha1.schema.json", + "documented_by": [ + { + "title": "Contracts and machine identifiers", + "href": "https://docs.registrystack.org/reference/contracts/" + }, + { + "title": "Registry Stack documentation", + "href": "https://docs.registrystack.org/" + } + ], + "authority": { + "scope": "identifier metadata", + "statement": "This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior." + } + }, { "uri": "https://id.registrystack.org/schemas/adapter/pack/pack.v1alpha1.schema.json", "title": "Registry Adapter pack", @@ -173,15 +206,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "adapter", - "source": "src/artifacts/sha256/6031baaabca785fe6e0adfed4336fa555839e18ae1a3136cf3e895ad5e6f6dcb.json", + "source": "src/artifacts/sha256/a8d908e534dffcbeee5b1e3352007a4205e0a4614c64a24fd22130f59f0ff264.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-adapterctl/src/schemas.rs", - "sha256": "ee38dfe66d555d580545cec1b5d8e4148d1d108d194d5680c3dca63bbfbfd7c9" + "sha256": "4d73d31f4f7e2221fc7bfcdbb5eaa36c1e675fdfd2372721518fb760f35e13bd" }, - "artifact_sha256": "6031baaabca785fe6e0adfed4336fa555839e18ae1a3136cf3e895ad5e6f6dcb", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/6031baaabca785fe6e0adfed4336fa555839e18ae1a3136cf3e895ad5e6f6dcb.json", + "artifact_sha256": "a8d908e534dffcbeee5b1e3352007a4205e0a4614c64a24fd22130f59f0ff264", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/a8d908e534dffcbeee5b1e3352007a4205e0a4614c64a24fd22130f59f0ff264.json", "id": "https://id.registrystack.org/schemas/adapter/pack/pack.v1alpha1.schema.json", "documented_by": [ { @@ -198,6 +231,39 @@ "statement": "This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior." } }, + { + "uri": "https://id.registrystack.org/schemas/adapter/preview-expectations/preview-expectations.v1alpha1.schema.json", + "title": "Registry Adapter preview expectations", + "description": "Registry Adapter project, profile, pack, fixture, runtime configuration, ingestion job, job runtime configuration, and effective contract JSON Schema.", + "kind": "schema", + "status": "active", + "compatibility_line": "v1alpha1", + "owner": "adapter", + "source": "src/artifacts/sha256/05ca00c30b9126084ea5d52e17db5002f7afb46e9aceac121fe42489afc5caa1.json", + "source_reference": { + "repository": "registry-stack", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", + "path": "crates/registry-adapterctl/src/schemas.rs", + "sha256": "4d73d31f4f7e2221fc7bfcdbb5eaa36c1e675fdfd2372721518fb760f35e13bd" + }, + "artifact_sha256": "05ca00c30b9126084ea5d52e17db5002f7afb46e9aceac121fe42489afc5caa1", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/05ca00c30b9126084ea5d52e17db5002f7afb46e9aceac121fe42489afc5caa1.json", + "id": "https://id.registrystack.org/schemas/adapter/preview-expectations/preview-expectations.v1alpha1.schema.json", + "documented_by": [ + { + "title": "Contracts and machine identifiers", + "href": "https://docs.registrystack.org/reference/contracts/" + }, + { + "title": "Registry Stack documentation", + "href": "https://docs.registrystack.org/" + } + ], + "authority": { + "scope": "identifier metadata", + "statement": "This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior." + } + }, { "uri": "https://id.registrystack.org/schemas/adapter/profile/profile.v1alpha1.schema.json", "title": "Registry Adapter facade profile", @@ -209,9 +275,9 @@ "source": "src/artifacts/sha256/8032fd67f82f517cade8e55c4d3972bc5481a957b84a4cb70b3f40f82ac970d3.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-adapterctl/src/schemas.rs", - "sha256": "ee38dfe66d555d580545cec1b5d8e4148d1d108d194d5680c3dca63bbfbfd7c9" + "sha256": "4d73d31f4f7e2221fc7bfcdbb5eaa36c1e675fdfd2372721518fb760f35e13bd" }, "artifact_sha256": "8032fd67f82f517cade8e55c4d3972bc5481a957b84a4cb70b3f40f82ac970d3", "immutable_uri": "https://id.registrystack.org/artifacts/sha256/8032fd67f82f517cade8e55c4d3972bc5481a957b84a4cb70b3f40f82ac970d3.json", @@ -239,15 +305,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "adapter", - "source": "src/artifacts/sha256/2a31e088e66073cf94b5d3769aebbeef3552cafa59c2281405be83ccd5390435.json", + "source": "src/artifacts/sha256/5660a447be61398747639c2e0ecde3b0e355c29d4ff454209d3041cd02f5d1a5.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-adapterctl/src/schemas.rs", - "sha256": "ee38dfe66d555d580545cec1b5d8e4148d1d108d194d5680c3dca63bbfbfd7c9" + "sha256": "4d73d31f4f7e2221fc7bfcdbb5eaa36c1e675fdfd2372721518fb760f35e13bd" }, - "artifact_sha256": "2a31e088e66073cf94b5d3769aebbeef3552cafa59c2281405be83ccd5390435", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/2a31e088e66073cf94b5d3769aebbeef3552cafa59c2281405be83ccd5390435.json", + "artifact_sha256": "5660a447be61398747639c2e0ecde3b0e355c29d4ff454209d3041cd02f5d1a5", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/5660a447be61398747639c2e0ecde3b0e355c29d4ff454209d3041cd02f5d1a5.json", "id": "https://id.registrystack.org/schemas/adapter/project/project.v1alpha1.schema.json", "documented_by": [ { @@ -272,15 +338,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "adapter", - "source": "src/artifacts/sha256/169ce8657f2ab5a3140216b6aeeeaaaf7dfcea0f508364a76de142b93c6a0a14.json", + "source": "src/artifacts/sha256/4a62c7dd8399bd3a5991efb203a34310918bad17a95b8a74c7784e6486ae6f21.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-adapterctl/src/schemas.rs", - "sha256": "ee38dfe66d555d580545cec1b5d8e4148d1d108d194d5680c3dca63bbfbfd7c9" + "sha256": "4d73d31f4f7e2221fc7bfcdbb5eaa36c1e675fdfd2372721518fb760f35e13bd" }, - "artifact_sha256": "169ce8657f2ab5a3140216b6aeeeaaaf7dfcea0f508364a76de142b93c6a0a14", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/169ce8657f2ab5a3140216b6aeeeaaaf7dfcea0f508364a76de142b93c6a0a14.json", + "artifact_sha256": "4a62c7dd8399bd3a5991efb203a34310918bad17a95b8a74c7784e6486ae6f21", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/4a62c7dd8399bd3a5991efb203a34310918bad17a95b8a74c7784e6486ae6f21.json", "id": "https://id.registrystack.org/schemas/adapter/runtime/runtime.v1alpha1.schema.json", "documented_by": [ { @@ -440,7 +506,7 @@ "source": "src/artifacts/sha256/e9bae5707ef92498b162083958fc0af4c1c043e74eec71252259e70bab88b73d.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "products/breg/contracts/explain/AccessExplanation.schema.json", "sha256": "e9bae5707ef92498b162083958fc0af4c1c043e74eec71252259e70bab88b73d" }, @@ -473,7 +539,7 @@ "source": "src/artifacts/sha256/18b0b088010cf8ddacae0ffaada4defe030e67eb1fb05c4b282e03ecf62a29a8.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "products/breg/contracts/explain/AccessPreview.schema.json", "sha256": "18b0b088010cf8ddacae0ffaada4defe030e67eb1fb05c4b282e03ecf62a29a8" }, @@ -506,7 +572,7 @@ "source": "src/artifacts/sha256/5e2e840d023549e7184ace57e19928c29c90e5601a84ed1bf86b1a03f0f08948.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/artifacts.rs", "sha256": "8e7e1c82cc1ddb3bc1d41866c812c2ff7d0007d0b57b83422260681ff549e795" }, @@ -638,7 +704,7 @@ "source": "src/artifacts/sha256/d0263a9335d657c23078e5190210f580db884a0608bd6591daebfcb2447a7bbd.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "products/breg/contracts/explain/ActionsExplanation.schema.json", "sha256": "d0263a9335d657c23078e5190210f580db884a0608bd6591daebfcb2447a7bbd" }, @@ -737,7 +803,7 @@ "source": "src/artifacts/sha256/f52ad0028a6479717062d38de052df5c1d8e1b0c8b63c478980a3897cc2675cd.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-bregctl/src/tool_schema.rs", "sha256": "28567d54120dd29d734ddcd3e10c4c6ee128eb7b2d195e4c77bd1cd6c9bc5cfd" }, @@ -803,7 +869,7 @@ "source": "src/artifacts/sha256/5020d8c8d12191760b03bfd268a0f11a8a88b7bc06982063573b7e48c9950fae.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-bregctl/src/tool_schema.rs", "sha256": "28567d54120dd29d734ddcd3e10c4c6ee128eb7b2d195e4c77bd1cd6c9bc5cfd" }, @@ -836,7 +902,7 @@ "source": "src/artifacts/sha256/52b076a8325b63e0bcaffb71d348e0239cea4d48be094100a018ef8a819fdab5.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "products/breg/contracts/event-record-view/EventRecordView.schema.json", "sha256": "52b076a8325b63e0bcaffb71d348e0239cea4d48be094100a018ef8a819fdab5" }, @@ -902,7 +968,7 @@ "source": "src/artifacts/sha256/13bb8f2e95d3244f368dccb5ea2c9779ad14a7b3f4661f61487cf56f983b2d45.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "products/breg/contracts/explain/EventsExplanation.schema.json", "sha256": "13bb8f2e95d3244f368dccb5ea2c9779ad14a7b3f4661f61487cf56f983b2d45" }, @@ -935,7 +1001,7 @@ "source": "src/artifacts/sha256/ea3e859161f961767bc44b463a025feefc17662dd31fa7ba4c67f71b0188f1bc.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-bregctl/src/tool_schema.rs", "sha256": "28567d54120dd29d734ddcd3e10c4c6ee128eb7b2d195e4c77bd1cd6c9bc5cfd" }, @@ -968,7 +1034,7 @@ "source": "src/artifacts/sha256/10006d4e4cd3b8ef2d9e742793967293c7bbdca89a8c11676310a7c4f4c1adc8.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-bregctl/src/tool_schema.rs", "sha256": "28567d54120dd29d734ddcd3e10c4c6ee128eb7b2d195e4c77bd1cd6c9bc5cfd" }, @@ -1100,7 +1166,7 @@ "source": "src/artifacts/sha256/738c5151b6085ee5a5da8d60334f70b179e740bc1af9cb2888325436c338d546.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "products/breg/contracts/explain/LifecycleExplanation.schema.json", "sha256": "738c5151b6085ee5a5da8d60334f70b179e740bc1af9cb2888325436c338d546" }, @@ -1133,7 +1199,7 @@ "source": "src/artifacts/sha256/34d05bd2adc4b41a65becd76fa288943d2636b7b60e4cfaf17c026dbd962b0f1.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg-mcp/src/schema.rs", "sha256": "3e23892d238d9ae9f0fe5b88af8ff394e07891dec5d9c60fb04026c08edce6c2" }, @@ -1163,15 +1229,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "breg", - "source": "src/artifacts/sha256/8177563ac1261680db7070b59f8b651d1cfe8c33cb5423891902bab4d5f8173e.json", + "source": "src/artifacts/sha256/a21e02c4ca6980e0eb4dc733b99b1fdb465aec8fa1c661ec70e86d71d4146e06.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-bregctl/src/tool_schema.rs", "sha256": "28567d54120dd29d734ddcd3e10c4c6ee128eb7b2d195e4c77bd1cd6c9bc5cfd" }, - "artifact_sha256": "8177563ac1261680db7070b59f8b651d1cfe8c33cb5423891902bab4d5f8173e", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/8177563ac1261680db7070b59f8b651d1cfe8c33cb5423891902bab4d5f8173e.json", + "artifact_sha256": "a21e02c4ca6980e0eb4dc733b99b1fdb465aec8fa1c661ec70e86d71d4146e06", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/a21e02c4ca6980e0eb4dc733b99b1fdb465aec8fa1c661ec70e86d71d4146e06.json", "id": "https://id.registrystack.org/schemas/breg/migration-descriptor/migration-descriptor.v1alpha1.schema.json", "documented_by": [ { @@ -1298,7 +1364,7 @@ "source": "src/artifacts/sha256/c5c5461590e22ba0896a312e9235ad707c066b803c14759f34d402c186823797.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "products/breg/contracts/explain/ModelExplanation.schema.json", "sha256": "c5c5461590e22ba0896a312e9235ad707c066b803c14759f34d402c186823797" }, @@ -1331,7 +1397,7 @@ "source": "src/artifacts/sha256/975478df7cdc216115fcf370f1478ffc3309c6ac6ae47f79be1c8b358c90dd7e.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-bregctl/src/tool_schema.rs", "sha256": "28567d54120dd29d734ddcd3e10c4c6ee128eb7b2d195e4c77bd1cd6c9bc5cfd" }, @@ -1361,15 +1427,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "breg", - "source": "src/artifacts/sha256/9949f5e3a10d4deb0038359d76d1f59b160449472bcd0b6c99e45ad776d20f80.json", + "source": "src/artifacts/sha256/2948465f69e8dd8856e245826adb47addbb0b0b3ae5a4a3eece660dfa77ba060.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/schema.rs", "sha256": "72890db9bee57302bf2dcca70dd6629c24bcd9634414fc507e218fd52daed9f9" }, - "artifact_sha256": "9949f5e3a10d4deb0038359d76d1f59b160449472bcd0b6c99e45ad776d20f80", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/9949f5e3a10d4deb0038359d76d1f59b160449472bcd0b6c99e45ad776d20f80.json", + "artifact_sha256": "2948465f69e8dd8856e245826adb47addbb0b0b3ae5a4a3eece660dfa77ba060", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/2948465f69e8dd8856e245826adb47addbb0b0b3ae5a4a3eece660dfa77ba060.json", "id": "https://id.registrystack.org/schemas/breg/module/module.v1alpha1.schema.json", "documented_by": [ { @@ -1394,15 +1460,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "breg", - "source": "src/artifacts/sha256/4babace1053c7b8446b682ce2db17a220263e669b397a414d98ead9d47af459a.json", + "source": "src/artifacts/sha256/cab7ff0a619109662b006d87d211743af4a9cc64977c0f01b64889e691d24a84.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/schema.rs", "sha256": "72890db9bee57302bf2dcca70dd6629c24bcd9634414fc507e218fd52daed9f9" }, - "artifact_sha256": "4babace1053c7b8446b682ce2db17a220263e669b397a414d98ead9d47af459a", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/4babace1053c7b8446b682ce2db17a220263e669b397a414d98ead9d47af459a.json", + "artifact_sha256": "cab7ff0a619109662b006d87d211743af4a9cc64977c0f01b64889e691d24a84", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/cab7ff0a619109662b006d87d211743af4a9cc64977c0f01b64889e691d24a84.json", "id": "https://id.registrystack.org/schemas/breg/project/project.v1alpha1.schema.json", "documented_by": [ { @@ -1496,7 +1562,7 @@ "source": "src/artifacts/sha256/809cf2a9a47ab9ba73dd108671963982724f8c9852f5c3ff904496704d0c8357.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "products/breg/contracts/explain/ProposalsExplanation.schema.json", "sha256": "809cf2a9a47ab9ba73dd108671963982724f8c9852f5c3ff904496704d0c8357" }, @@ -1562,7 +1628,7 @@ "source": "src/artifacts/sha256/c30a70ce60b1946e6eb3cd0ebf1267841c97be81115f61e0bbf713262bfd59a3.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "products/breg/contracts/explain/QueriesExplanation.schema.json", "sha256": "c30a70ce60b1946e6eb3cd0ebf1267841c97be81115f61e0bbf713262bfd59a3" }, @@ -1595,7 +1661,7 @@ "source": "src/artifacts/sha256/1c547522ee09c598590eaa302615aaabb5e5628516f85f2f5558989af25210b1.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg-review/src/schema.rs", "sha256": "88a916f23e3a50eb7f392a708ce6b089ffbb51b98e5cf102eccfc2e753da8814" }, @@ -1661,7 +1727,7 @@ "source": "src/artifacts/sha256/1d26b2aee434f0e83ef227e9a502912e72f4ce60510852db5b9d6be1554a6f83.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "products/breg/contracts/explain/RoutesExplanation.schema.json", "sha256": "1d26b2aee434f0e83ef227e9a502912e72f4ce60510852db5b9d6be1554a6f83" }, @@ -1691,15 +1757,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "breg", - "source": "src/artifacts/sha256/55959ae4cc86f1cd393cca382d7cdfd367ccc703c8676a350af4299b59ebb043.json", + "source": "src/artifacts/sha256/785867b4f14c78862010b53406f62a420e53c4b17d5c8b9f7f95636130b75bd4.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/schema.rs", "sha256": "72890db9bee57302bf2dcca70dd6629c24bcd9634414fc507e218fd52daed9f9" }, - "artifact_sha256": "55959ae4cc86f1cd393cca382d7cdfd367ccc703c8676a350af4299b59ebb043", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/55959ae4cc86f1cd393cca382d7cdfd367ccc703c8676a350af4299b59ebb043.json", + "artifact_sha256": "785867b4f14c78862010b53406f62a420e53c4b17d5c8b9f7f95636130b75bd4", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/785867b4f14c78862010b53406f62a420e53c4b17d5c8b9f7f95636130b75bd4.json", "id": "https://id.registrystack.org/schemas/breg/runtime/runtime.v1alpha1.schema.json", "documented_by": [ { @@ -1727,7 +1793,7 @@ "source": "src/artifacts/sha256/598f916ebbe176797484afdd5d55165e6567d39bd0094b6876e5419908e0b78c.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-bregctl/src/tool_schema.rs", "sha256": "28567d54120dd29d734ddcd3e10c4c6ee128eb7b2d195e4c77bd1cd6c9bc5cfd" }, @@ -1892,7 +1958,7 @@ "source": "src/artifacts/sha256/2481544f84d61d0bd21ba44e31e7bdefcbf9e10b12d3b103fc100ebead1e346e.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-caseworkctl/src/schema.rs", "sha256": "4f5378799ebb3a0f65b82eff6f654d8323679bf147214eb68c821bbd6c94733a" }, @@ -2156,7 +2222,7 @@ "source": "src/artifacts/sha256/b9158ab194325cbd1a807922d07d35f4616eff823d9b1c76892e73f330443cdd.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework-core/src/schema.rs", "sha256": "1604cf79433172ea4553b2f56365ea9e999a515aa3f16d60959cc652972ae185" }, @@ -2186,15 +2252,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "casework", - "source": "src/artifacts/sha256/7131a57da2c495a5f2142ab5e682e6b95cfda65a2e60d743c15c5c0c00b175dd.json", + "source": "src/artifacts/sha256/3fef758cd53950ea9cef953dca6c2364188eddff2978695c70fd88237d451ece.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework-core/src/schema.rs", "sha256": "1604cf79433172ea4553b2f56365ea9e999a515aa3f16d60959cc652972ae185" }, - "artifact_sha256": "7131a57da2c495a5f2142ab5e682e6b95cfda65a2e60d743c15c5c0c00b175dd", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/7131a57da2c495a5f2142ab5e682e6b95cfda65a2e60d743c15c5c0c00b175dd.json", + "artifact_sha256": "3fef758cd53950ea9cef953dca6c2364188eddff2978695c70fd88237d451ece", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/3fef758cd53950ea9cef953dca6c2364188eddff2978695c70fd88237d451ece.json", "id": "https://id.registrystack.org/schemas/casework/holiday-set/holiday-set.v1alpha1.schema.json", "documented_by": [ { @@ -2351,15 +2417,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "casework", - "source": "src/artifacts/sha256/618dd00144eced267ce239c8412381a555e488af08cb7d6936e63dd963463b0a.json", + "source": "src/artifacts/sha256/87a1a61127de6eb20c130f17b2d804c8b209c7343e7e4275f480f37833b83fcf.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework-core/src/schema.rs", "sha256": "1604cf79433172ea4553b2f56365ea9e999a515aa3f16d60959cc652972ae185" }, - "artifact_sha256": "618dd00144eced267ce239c8412381a555e488af08cb7d6936e63dd963463b0a", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/618dd00144eced267ce239c8412381a555e488af08cb7d6936e63dd963463b0a.json", + "artifact_sha256": "87a1a61127de6eb20c130f17b2d804c8b209c7343e7e4275f480f37833b83fcf", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/87a1a61127de6eb20c130f17b2d804c8b209c7343e7e4275f480f37833b83fcf.json", "id": "https://id.registrystack.org/schemas/casework/project/project.v1alpha1.schema.json", "documented_by": [ { @@ -2417,15 +2483,15 @@ "status": "active", "compatibility_line": "v1alpha2", "owner": "casework", - "source": "src/artifacts/sha256/9d026bf36a11bc83493f835f028ff52092e0f6c4cd42b471024ead336b6d8a9e.json", + "source": "src/artifacts/sha256/2cbf5e3d2fd943abfa3777b63f204feac0dc0f5c02241a121aa3a135f3d420c7.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "products/casework/scripts/generate_cli_schemas.py", "sha256": "1af0958150a6476245c5019f6bc55ae2b3fbe87e88b43900bb75cac4786f0674" }, - "artifact_sha256": "9d026bf36a11bc83493f835f028ff52092e0f6c4cd42b471024ead336b6d8a9e", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/9d026bf36a11bc83493f835f028ff52092e0f6c4cd42b471024ead336b6d8a9e.json", + "artifact_sha256": "2cbf5e3d2fd943abfa3777b63f204feac0dc0f5c02241a121aa3a135f3d420c7", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/2cbf5e3d2fd943abfa3777b63f204feac0dc0f5c02241a121aa3a135f3d420c7.json", "id": "https://id.registrystack.org/schemas/casework/report/report.v1alpha2.schema.json", "documented_by": [ { @@ -2486,7 +2552,7 @@ "source": "src/artifacts/sha256/ef82e91c0f0c3366bd62967be8453e90920341c246a6d05f56e4b4b4b8eb85b0.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/schema.rs", "sha256": "47d65004647fa541fef411bd213072d25a35384d5e48d03f8fdb51e5569e1bf8" }, @@ -2714,15 +2780,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "coordinator", - "source": "src/artifacts/sha256/472c4861ab27a301f077784e63cd06891ef4b73813aab1dd802c567daac70d16.json", + "source": "src/artifacts/sha256/b22c06678f15e4a5aa028df61819cde8d37ce2311e1249a3a8fcc18d00aa3eab.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/authoring.rs", - "sha256": "ae097b5904283e2c57ae726020a6376fe02b975391df284e67e08e5b3ddaf64c" + "sha256": "032aa502fa63b5e7fe1cfb8f400be84d0802637409ac82ddf9f40152c482b91f" }, - "artifact_sha256": "472c4861ab27a301f077784e63cd06891ef4b73813aab1dd802c567daac70d16", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/472c4861ab27a301f077784e63cd06891ef4b73813aab1dd802c567daac70d16.json", + "artifact_sha256": "b22c06678f15e4a5aa028df61819cde8d37ce2311e1249a3a8fcc18d00aa3eab", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/b22c06678f15e4a5aa028df61819cde8d37ce2311e1249a3a8fcc18d00aa3eab.json", "id": "https://id.registrystack.org/schemas/coordinator/project/project.v1alpha1.schema.json", "documented_by": [ { @@ -2747,15 +2813,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "coordinator", - "source": "src/artifacts/sha256/bbbc49cc6aa19d2b6329db459ac7d5c8635583e2a0ca63f2d75556840a804202.json", + "source": "src/artifacts/sha256/9d68a7c21821319603e16c3fb1a381e206a4f488a3eae95c9544180004ae2ea3.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/runtime.rs", "sha256": "e544e9afbc39d84d18936d8ea1fffd903ebd94121db10d142394fa5d02ec5916" }, - "artifact_sha256": "bbbc49cc6aa19d2b6329db459ac7d5c8635583e2a0ca63f2d75556840a804202", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/bbbc49cc6aa19d2b6329db459ac7d5c8635583e2a0ca63f2d75556840a804202.json", + "artifact_sha256": "9d68a7c21821319603e16c3fb1a381e206a4f488a3eae95c9544180004ae2ea3", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/9d68a7c21821319603e16c3fb1a381e206a4f488a3eae95c9544180004ae2ea3.json", "id": "https://id.registrystack.org/schemas/coordinator/runtime/runtime.v1alpha1.schema.json", "documented_by": [ { @@ -2783,7 +2849,7 @@ "source": "src/artifacts/sha256/e42e044eb828ff7e12f0a199fc95065c04baeadf91773c2d28ba9a1b0252090e.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/scenarios.rs", "sha256": "e20158e5382f690d46879161f32b5adda80385767b2c99b6efb11f166d43a394" }, @@ -2816,7 +2882,7 @@ "source": "src/artifacts/sha256/47cbeecaaa07a52b0af259faff736b4e32e6a0c1ed674634b4cc6815cb369fd4.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "products/discovery/schemas/evidence-mapping.schema.json", "sha256": "47cbeecaaa07a52b0af259faff736b4e32e6a0c1ed674634b4cc6815cb369fd4" }, @@ -2849,7 +2915,7 @@ "source": "src/artifacts/sha256/97014247dcc83bc148d355a5e56ffaf8ab0a522cd0f462c93a97fda19bcb6ffc.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "products/discovery/schemas/index.schema.json", "sha256": "97014247dcc83bc148d355a5e56ffaf8ab0a522cd0f462c93a97fda19bcb6ffc" }, @@ -2882,7 +2948,7 @@ "source": "src/artifacts/sha256/19f90f5a2f87b250dcd54d16fe1810fbea6bdd58e6ec46891e20b3c5110605d5.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "products/discovery/schemas/origins.schema.json", "sha256": "19f90f5a2f87b250dcd54d16fe1810fbea6bdd58e6ec46891e20b3c5110605d5" }, @@ -2915,7 +2981,7 @@ "source": "src/artifacts/sha256/d4c5894f466ce1683e7d0b3db2b86413fa71cb7cea81843d12dc1ccbafd5cff8.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "products/discovery/schemas/runtime.schema.json", "sha256": "d4c5894f466ce1683e7d0b3db2b86413fa71cb7cea81843d12dc1ccbafd5cff8" }, @@ -2948,7 +3014,7 @@ "source": "src/artifacts/sha256/dc7d339a46f7450b1c158e7c5bce237f3c1c5ea54a03c1b3fa3e53cb54a1c4a1.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents/src/schema.rs", "sha256": "9d6fc4ae1e652e78cb3de6410e3fb044ea2883e468db99e10bbb7ac4022a4914" }, @@ -2981,7 +3047,7 @@ "source": "src/artifacts/sha256/d341927b2bb9a139cebe16a2edff9acaf6b069c9863b6f6f12108be6e4cd0731.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents/src/schema.rs", "sha256": "9d6fc4ae1e652e78cb3de6410e3fb044ea2883e468db99e10bbb7ac4022a4914" }, @@ -3014,7 +3080,7 @@ "source": "src/artifacts/sha256/02988cabcddaa2560bc4efae9d8ad45bbc800fb2be14abfbb59533112e1c892a.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents/src/schema.rs", "sha256": "9d6fc4ae1e652e78cb3de6410e3fb044ea2883e468db99e10bbb7ac4022a4914" }, @@ -3044,15 +3110,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "documents", - "source": "src/artifacts/sha256/43d58cc3028e7a97f91929625aeff1ec243f937e16ee455de8f3cb1caa4675b7.json", + "source": "src/artifacts/sha256/26884cc061cde1b1e5f6eb60d59b738c4522d9451c3ebef0f0e0ac007f17a7e9.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents/src/schema.rs", "sha256": "9d6fc4ae1e652e78cb3de6410e3fb044ea2883e468db99e10bbb7ac4022a4914" }, - "artifact_sha256": "43d58cc3028e7a97f91929625aeff1ec243f937e16ee455de8f3cb1caa4675b7", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/43d58cc3028e7a97f91929625aeff1ec243f937e16ee455de8f3cb1caa4675b7.json", + "artifact_sha256": "26884cc061cde1b1e5f6eb60d59b738c4522d9451c3ebef0f0e0ac007f17a7e9", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/26884cc061cde1b1e5f6eb60d59b738c4522d9451c3ebef0f0e0ac007f17a7e9.json", "id": "https://id.registrystack.org/schemas/documents/project/project.v1alpha1.schema.json", "documented_by": [ { @@ -3080,7 +3146,7 @@ "source": "src/artifacts/sha256/8f4833f26187b81d360edb0849313806ecdc55191a2dc1bbad731023130fa873.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents/src/schema.rs", "sha256": "9d6fc4ae1e652e78cb3de6410e3fb044ea2883e468db99e10bbb7ac4022a4914" }, @@ -3113,7 +3179,7 @@ "source": "src/artifacts/sha256/5fd729f00c7942e6422b726a75b02d931218c416a1caffdfb7b129fd8ff22c4c.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-evidence-authoring/src/schema.rs", "sha256": "62464b27cb80552652f785f820ed3655cc9d48aa65dba30dcaea5696c5e79f70" }, @@ -3209,16 +3275,16 @@ "status": "active", "compatibility_line": "v1", "owner": "evidence", - "source": "src/artifacts/sha256/2847a56eda9c8b838d28fde619853c36851acc57b094b74ec2665150f1ace8d4.yaml", + "source": "src/artifacts/sha256/89428c7c4d08555b71f3d7476a45e2439fd0d2ba4b97eae6ee18be78fcbf8e3e.yaml", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "products/evidence/contracts/bundle.schema.yaml", - "sha256": "2847a56eda9c8b838d28fde619853c36851acc57b094b74ec2665150f1ace8d4" + "sha256": "89428c7c4d08555b71f3d7476a45e2439fd0d2ba4b97eae6ee18be78fcbf8e3e" }, - "artifact_sha256": "2847a56eda9c8b838d28fde619853c36851acc57b094b74ec2665150f1ace8d4", + "artifact_sha256": "89428c7c4d08555b71f3d7476a45e2439fd0d2ba4b97eae6ee18be78fcbf8e3e", "artifact_media_type": "application/yaml", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/2847a56eda9c8b838d28fde619853c36851acc57b094b74ec2665150f1ace8d4.yaml", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/89428c7c4d08555b71f3d7476a45e2439fd0d2ba4b97eae6ee18be78fcbf8e3e.yaml", "id": "https://id.registrystack.org/schemas/evidence/bundle/bundle.v1.schema.json", "documented_by": [ { @@ -3246,7 +3312,7 @@ "source": "src/artifacts/sha256/777f3b0aaf8129b9beacba85c188dce0b7aa841fe459c9ee517253eb49c7dc53.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-evidence-client/src/schema.rs", "sha256": "b28e799ebc6f2da79fb99e53af3b117aef9bc6d544a89c9fac1935572d6f0508" }, @@ -3279,7 +3345,7 @@ "source": "src/artifacts/sha256/67cddb577791407b017c46465860c1a1674b45d3b7ed4005a2ea12cea3bb61d5.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-evidence-client/src/schema.rs", "sha256": "b28e799ebc6f2da79fb99e53af3b117aef9bc6d544a89c9fac1935572d6f0508" }, @@ -3312,9 +3378,9 @@ "source": "src/artifacts/sha256/b131ade304b8fa1e4afbf5ab8be445d72f8117d75cf996a00d9d20d774575ea1.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-evidence/src/schema.rs", - "sha256": "c598415dc0abd9f1cb985c9bda305aaf6d926ed286732ff5428bda8dc3469b79" + "sha256": "0bee443cca46038f06a5c0298500b6d8ba8d06b35a40fce742d1a5666521413e" }, "artifact_sha256": "b131ade304b8fa1e4afbf5ab8be445d72f8117d75cf996a00d9d20d774575ea1", "immutable_uri": "https://id.registrystack.org/artifacts/sha256/b131ade304b8fa1e4afbf5ab8be445d72f8117d75cf996a00d9d20d774575ea1.json", @@ -3342,15 +3408,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "evidence", - "source": "src/artifacts/sha256/912661673c41c1119a8bd83809c66cc2d38b16e171c963b4988175c74f627664.json", + "source": "src/artifacts/sha256/0f8f2332533c8577677e7a53f62a0ac400c08233f13ced03e168331d8058c2c8.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-evidence/src/schema.rs", - "sha256": "c598415dc0abd9f1cb985c9bda305aaf6d926ed286732ff5428bda8dc3469b79" + "sha256": "0bee443cca46038f06a5c0298500b6d8ba8d06b35a40fce742d1a5666521413e" }, - "artifact_sha256": "912661673c41c1119a8bd83809c66cc2d38b16e171c963b4988175c74f627664", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/912661673c41c1119a8bd83809c66cc2d38b16e171c963b4988175c74f627664.json", + "artifact_sha256": "0f8f2332533c8577677e7a53f62a0ac400c08233f13ced03e168331d8058c2c8", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/0f8f2332533c8577677e7a53f62a0ac400c08233f13ced03e168331d8058c2c8.json", "id": "https://id.registrystack.org/schemas/evidence/fixture/fixture.v1alpha1.schema.json", "documented_by": [ { @@ -3375,16 +3441,16 @@ "status": "active", "compatibility_line": "v1", "owner": "evidence", - "source": "src/artifacts/sha256/37d6a662a61c9a5730be870e1d202209d0bebeb658968f978f317bb8995c1cb5.yaml", + "source": "src/artifacts/sha256/c731a74bea9e4d649dd2e0d074e20a10e617c6ef844ec6f8223fae78b3f0b28d.yaml", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "products/evidence/contracts/holder-bound-verification-policy.schema.yaml", - "sha256": "37d6a662a61c9a5730be870e1d202209d0bebeb658968f978f317bb8995c1cb5" + "sha256": "c731a74bea9e4d649dd2e0d074e20a10e617c6ef844ec6f8223fae78b3f0b28d" }, - "artifact_sha256": "37d6a662a61c9a5730be870e1d202209d0bebeb658968f978f317bb8995c1cb5", + "artifact_sha256": "c731a74bea9e4d649dd2e0d074e20a10e617c6ef844ec6f8223fae78b3f0b28d", "artifact_media_type": "application/yaml", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/37d6a662a61c9a5730be870e1d202209d0bebeb658968f978f317bb8995c1cb5.yaml", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/c731a74bea9e4d649dd2e0d074e20a10e617c6ef844ec6f8223fae78b3f0b28d.yaml", "id": "https://id.registrystack.org/schemas/evidence/holder-bound-verification-policy/holder-bound-verification-policy.v1.schema.json", "documented_by": [ { @@ -3412,7 +3478,7 @@ "source": "src/artifacts/sha256/761a6a1300c328344666ebacdb7c811deefd80ed293e9bc4c0adea3cd435b9c5.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-evidence-authoring/src/schema.rs", "sha256": "62464b27cb80552652f785f820ed3655cc9d48aa65dba30dcaea5696c5e79f70" }, @@ -3442,15 +3508,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "evidence", - "source": "src/artifacts/sha256/701ee38be07cd80d8fd73a393abfb243511d3accd7a34124893c39781d883191.json", + "source": "src/artifacts/sha256/fb01195c02d6b94784e17ea07f6de45f56370df8af933a2bb2142a3fd18c9146.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-evidence-oid4vci/src/schema.rs", - "sha256": "0cc005a1e55672ce3a11ad5fd0c4e714155ec6e4b003328bd025a88d29d455b3" + "sha256": "9e58fd6d09d319ddeffec54795a92fc910a0a9ccb361734ea8f7ce698c043540" }, - "artifact_sha256": "701ee38be07cd80d8fd73a393abfb243511d3accd7a34124893c39781d883191", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/701ee38be07cd80d8fd73a393abfb243511d3accd7a34124893c39781d883191.json", + "artifact_sha256": "fb01195c02d6b94784e17ea07f6de45f56370df8af933a2bb2142a3fd18c9146", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/fb01195c02d6b94784e17ea07f6de45f56370df8af933a2bb2142a3fd18c9146.json", "id": "https://id.registrystack.org/schemas/evidence/oid4vci-runtime/oid4vci-runtime.v1alpha1.schema.json", "documented_by": [ { @@ -3467,6 +3533,39 @@ "statement": "This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior." } }, + { + "uri": "https://id.registrystack.org/schemas/evidence/oid4vp-runtime/oid4vp-runtime.v1alpha1.schema.json", + "title": "Evidence OpenID4VP verifier runtime configuration", + "description": "Evidence OpenID4VP verifier runtime configuration JSON Schema.", + "kind": "schema", + "status": "active", + "compatibility_line": "v1alpha1", + "owner": "evidence", + "source": "src/artifacts/sha256/225b0d03402f422442432fd5195ccf3483ef79cf744d883bbfb9e96ba89e6465.json", + "source_reference": { + "repository": "registry-stack", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", + "path": "crates/registry-evidence-oid4vp/src/schema.rs", + "sha256": "7f111792435d2d9d6c18174e157b8ff05b3f19d733c2ea19f7327eaa99268eb4" + }, + "artifact_sha256": "225b0d03402f422442432fd5195ccf3483ef79cf744d883bbfb9e96ba89e6465", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/225b0d03402f422442432fd5195ccf3483ef79cf744d883bbfb9e96ba89e6465.json", + "id": "https://id.registrystack.org/schemas/evidence/oid4vp-runtime/oid4vp-runtime.v1alpha1.schema.json", + "documented_by": [ + { + "title": "Contracts and machine identifiers", + "href": "https://docs.registrystack.org/reference/contracts/" + }, + { + "title": "Registry Stack documentation", + "href": "https://docs.registrystack.org/" + } + ], + "authority": { + "scope": "identifier metadata", + "statement": "This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior." + } + }, { "uri": "https://id.registrystack.org/schemas/evidence/project/project.v1alpha1.schema.json", "title": "Evidence project", @@ -3475,15 +3574,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "evidence", - "source": "src/artifacts/sha256/62c45846105e0231417e0450568a899ea05f78f41250b450353c074407cc5f26.json", + "source": "src/artifacts/sha256/f91af7d0c873134675c27063eafcea7500210443225dd0f9e8309e1f6680f13d.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-evidence-authoring/src/schema.rs", "sha256": "62464b27cb80552652f785f820ed3655cc9d48aa65dba30dcaea5696c5e79f70" }, - "artifact_sha256": "62c45846105e0231417e0450568a899ea05f78f41250b450353c074407cc5f26", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/62c45846105e0231417e0450568a899ea05f78f41250b450353c074407cc5f26.json", + "artifact_sha256": "f91af7d0c873134675c27063eafcea7500210443225dd0f9e8309e1f6680f13d", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/f91af7d0c873134675c27063eafcea7500210443225dd0f9e8309e1f6680f13d.json", "id": "https://id.registrystack.org/schemas/evidence/project/project.v1alpha1.schema.json", "documented_by": [ { @@ -3541,16 +3640,16 @@ "status": "active", "compatibility_line": "v1", "owner": "evidence", - "source": "src/artifacts/sha256/fd4ef085ef94087f5fa6d846a284957345d5463df44372c5667ea1a8cf643d0d.yaml", + "source": "src/artifacts/sha256/24b19bc056dd4048d1f02b3270743d3c30c052cb5875b240e8d9b5d06029ecfb.yaml", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "products/evidence/contracts/runtime.schema.yaml", - "sha256": "fd4ef085ef94087f5fa6d846a284957345d5463df44372c5667ea1a8cf643d0d" + "sha256": "24b19bc056dd4048d1f02b3270743d3c30c052cb5875b240e8d9b5d06029ecfb" }, - "artifact_sha256": "fd4ef085ef94087f5fa6d846a284957345d5463df44372c5667ea1a8cf643d0d", + "artifact_sha256": "24b19bc056dd4048d1f02b3270743d3c30c052cb5875b240e8d9b5d06029ecfb", "artifact_media_type": "application/yaml", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/fd4ef085ef94087f5fa6d846a284957345d5463df44372c5667ea1a8cf643d0d.yaml", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/24b19bc056dd4048d1f02b3270743d3c30c052cb5875b240e8d9b5d06029ecfb.yaml", "id": "https://id.registrystack.org/schemas/evidence/runtime/runtime.v1alpha1.schema.json", "documented_by": [ { @@ -3611,7 +3710,7 @@ "source": "src/artifacts/sha256/8ebfd8d54b92be742595c6bc1d4a71a570ae04ab80e85d0d276522f0967ab7bf.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-evidence-authoring/src/schema.rs", "sha256": "62464b27cb80552652f785f820ed3655cc9d48aa65dba30dcaea5696c5e79f70" }, @@ -3674,15 +3773,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "evidence", - "source": "src/artifacts/sha256/a1bab27c4778502d75e2041b7d38dd0dc9cfffaa91d52625813b16cf694b9b22.json", + "source": "src/artifacts/sha256/4a4b93a4cca9568c089166b2d7f2ee13306b4abcba7289f4b5290d55ef44d644.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-evidence-authoring/src/schema.rs", "sha256": "62464b27cb80552652f785f820ed3655cc9d48aa65dba30dcaea5696c5e79f70" }, - "artifact_sha256": "a1bab27c4778502d75e2041b7d38dd0dc9cfffaa91d52625813b16cf694b9b22", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/a1bab27c4778502d75e2041b7d38dd0dc9cfffaa91d52625813b16cf694b9b22.json", + "artifact_sha256": "4a4b93a4cca9568c089166b2d7f2ee13306b4abcba7289f4b5290d55ef44d644", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/4a4b93a4cca9568c089166b2d7f2ee13306b4abcba7289f4b5290d55ef44d644.json", "id": "https://id.registrystack.org/schemas/evidence/target-authority/target-authority.v1alpha1.schema.json", "documented_by": [ { @@ -3776,7 +3875,7 @@ "source": "src/artifacts/sha256/bb19696ad1cf4f6c89de72d1b50da9f8897761cd15066c4281500836306ea09e.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-evidence-authoring/src/schema.rs", "sha256": "62464b27cb80552652f785f820ed3655cc9d48aa65dba30dcaea5696c5e79f70" }, @@ -3806,16 +3905,16 @@ "status": "active", "compatibility_line": "v1", "owner": "evidence", - "source": "src/artifacts/sha256/b6a7e7200bf014a4b31dd064aa39bcbdb60fb624ef8c305f4c3431958b47bb12.yaml", + "source": "src/artifacts/sha256/d54c2e60d478680238197bd57d5d5baf83975cf6f30a359d0d331d31f333495f.yaml", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "products/evidence/contracts/verification-policy.schema.yaml", - "sha256": "b6a7e7200bf014a4b31dd064aa39bcbdb60fb624ef8c305f4c3431958b47bb12" + "sha256": "d54c2e60d478680238197bd57d5d5baf83975cf6f30a359d0d331d31f333495f" }, - "artifact_sha256": "b6a7e7200bf014a4b31dd064aa39bcbdb60fb624ef8c305f4c3431958b47bb12", + "artifact_sha256": "d54c2e60d478680238197bd57d5d5baf83975cf6f30a359d0d331d31f333495f", "artifact_media_type": "application/yaml", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/b6a7e7200bf014a4b31dd064aa39bcbdb60fb624ef8c305f4c3431958b47bb12.yaml", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/d54c2e60d478680238197bd57d5d5baf83975cf6f30a359d0d331d31f333495f.yaml", "id": "https://id.registrystack.org/schemas/evidence/verification-policy/verification-policy.v1.schema.json", "documented_by": [ { @@ -3843,7 +3942,7 @@ "source": "src/artifacts/sha256/e45632976b2436dc468805b78e6ac35d4cb05340b260370d011eee68fcf28c5d.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "products/identifiers/contracts/catalog.v1.schema.json", "sha256": "e45632976b2436dc468805b78e6ac35d4cb05340b260370d011eee68fcf28c5d" }, @@ -3876,7 +3975,7 @@ "source": "src/artifacts/sha256/b68362a53e0abd42941a79dc6bd280538a5510c9046dc8fb53cbdd29be3d898e.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-manifest-cli/src/schema.rs", "sha256": "19d037ee50b143b70576b4ce50808883e0ccb831373f72d42beed770a67d8eae" }, @@ -3909,7 +4008,7 @@ "source": "src/artifacts/sha256/f8e367082254b713f8347ccb9055d7ac527ddef43b06b33239f8d81d0ed11012.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-manifest-cli/src/schema.rs", "sha256": "19d037ee50b143b70576b4ce50808883e0ccb831373f72d42beed770a67d8eae" }, @@ -3939,15 +4038,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "messaging", - "source": "src/artifacts/sha256/af3c4d9d5e6da2a07c2d26fc9a06f7bdb3358f6145c54b25d7a045d3066c09e6.json", + "source": "src/artifacts/sha256/2a6983bc79d8bf3bae405d3428189c364e643460bcce5930f60e21fde9c31865.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging/src/schema.rs", "sha256": "566657f59c1c8bb5059c0e0e2faa499f559a6fe905d1d8b1aba2eff781f62a09" }, - "artifact_sha256": "af3c4d9d5e6da2a07c2d26fc9a06f7bdb3358f6145c54b25d7a045d3066c09e6", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/af3c4d9d5e6da2a07c2d26fc9a06f7bdb3358f6145c54b25d7a045d3066c09e6.json", + "artifact_sha256": "2a6983bc79d8bf3bae405d3428189c364e643460bcce5930f60e21fde9c31865", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/2a6983bc79d8bf3bae405d3428189c364e643460bcce5930f60e21fde9c31865.json", "id": "https://id.registrystack.org/schemas/messaging/project/project.v1alpha1.schema.json", "documented_by": [ { @@ -3975,7 +4074,7 @@ "source": "src/artifacts/sha256/06439b2e8b23831f90676f4103605a1fc7e79e34f9e8935023cf173e122934de.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging/src/schema.rs", "sha256": "566657f59c1c8bb5059c0e0e2faa499f559a6fe905d1d8b1aba2eff781f62a09" }, @@ -4005,15 +4104,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "messaging", - "source": "src/artifacts/sha256/d2c4ef5c2ca281c720117c95c5b136be7353d1da70a99f9c9455dd6b94dcae7b.json", + "source": "src/artifacts/sha256/56b15b5ec2c5a799f9debd7d034cf8f7a490c76c71458720b6469c98b3a469b5.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging/src/schema.rs", "sha256": "566657f59c1c8bb5059c0e0e2faa499f559a6fe905d1d8b1aba2eff781f62a09" }, - "artifact_sha256": "d2c4ef5c2ca281c720117c95c5b136be7353d1da70a99f9c9455dd6b94dcae7b", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/d2c4ef5c2ca281c720117c95c5b136be7353d1da70a99f9c9455dd6b94dcae7b.json", + "artifact_sha256": "56b15b5ec2c5a799f9debd7d034cf8f7a490c76c71458720b6469c98b3a469b5", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/56b15b5ec2c5a799f9debd7d034cf8f7a490c76c71458720b6469c98b3a469b5.json", "id": "https://id.registrystack.org/schemas/messaging/runtime/runtime.v1alpha1.schema.json", "documented_by": [ { @@ -4041,7 +4140,7 @@ "source": "src/artifacts/sha256/5d99a71fc7fb00d3d4f6f4ffc4f6399570e60497e53a080cd571fc0ef3bd0d42.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging/src/schema.rs", "sha256": "566657f59c1c8bb5059c0e0e2faa499f559a6fe905d1d8b1aba2eff781f62a09" }, @@ -4074,7 +4173,7 @@ "source": "src/artifacts/sha256/3fa0953ce1c3effc0a35c61e5c93d484d5b948e5f64478999c6ea671e588b3d1.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-platform-yaml/src/check_acceptances.rs", "sha256": "9f01dd394d730e590710e430baf1928ee3e02bb52c1d3ab53b41e447ac692fd2" }, @@ -4107,7 +4206,7 @@ "source": "src/artifacts/sha256/c0ceb9cbec8393e03e125d10b4d512107bc120c7b5d31398cfd9256c78a49aee.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-cli-api/src/schema.rs", "sha256": "78e2cceb547c9691ee7636d8d3527aebde5a54570fa69c2fbced8b3583f561b1" }, @@ -4140,7 +4239,7 @@ "source": "src/artifacts/sha256/5ea2b8f0276de7b574efc392e72672179ce8e1ccea923dc62f10cbb115274099.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-cli-api/src/schema.rs", "sha256": "78e2cceb547c9691ee7636d8d3527aebde5a54570fa69c2fbced8b3583f561b1" }, @@ -4162,6 +4261,72 @@ "statement": "This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior." } }, + { + "uri": "https://id.registrystack.org/schemas/platform/identity-deployment/identity-deployment.v1.schema.json", + "title": "Registry Stack identity deployment", + "description": "Registry Stack identity deployment JSON Schema.", + "kind": "schema", + "status": "active", + "compatibility_line": "v1", + "owner": "platform", + "source": "src/artifacts/sha256/20b5224ee58a88324552ba4eef77132273ac2b6609e178db001dc57dd1d63077.json", + "source_reference": { + "repository": "registry-stack", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", + "path": "crates/registry-thunderid-tooling/src/schema.rs", + "sha256": "3c54de0035540767520565700458e3bb8cf74eb4394ca6c67b908f045a76211b" + }, + "artifact_sha256": "20b5224ee58a88324552ba4eef77132273ac2b6609e178db001dc57dd1d63077", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/20b5224ee58a88324552ba4eef77132273ac2b6609e178db001dc57dd1d63077.json", + "id": "https://id.registrystack.org/schemas/platform/identity-deployment/identity-deployment.v1.schema.json", + "documented_by": [ + { + "title": "Contracts and machine identifiers", + "href": "https://docs.registrystack.org/reference/contracts/" + }, + { + "title": "Registry Stack documentation", + "href": "https://docs.registrystack.org/" + } + ], + "authority": { + "scope": "identifier metadata", + "statement": "This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior." + } + }, + { + "uri": "https://id.registrystack.org/schemas/platform/identity-facts/identity-facts.v1.schema.json", + "title": "Registry Stack identity facts", + "description": "Registry Stack product identity facts JSON Schema.", + "kind": "schema", + "status": "active", + "compatibility_line": "v1", + "owner": "platform", + "source": "src/artifacts/sha256/c347ed37907da3fbef25720354b8042c3ce8477437c4a38b81ce2aa718c0b96c.json", + "source_reference": { + "repository": "registry-stack", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", + "path": "crates/registry-thunderid-tooling/src/schema.rs", + "sha256": "3c54de0035540767520565700458e3bb8cf74eb4394ca6c67b908f045a76211b" + }, + "artifact_sha256": "c347ed37907da3fbef25720354b8042c3ce8477437c4a38b81ce2aa718c0b96c", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/c347ed37907da3fbef25720354b8042c3ce8477437c4a38b81ce2aa718c0b96c.json", + "id": "https://id.registrystack.org/schemas/platform/identity-facts/identity-facts.v1.schema.json", + "documented_by": [ + { + "title": "Contracts and machine identifiers", + "href": "https://docs.registrystack.org/reference/contracts/" + }, + { + "title": "Registry Stack documentation", + "href": "https://docs.registrystack.org/" + } + ], + "authority": { + "scope": "identifier metadata", + "statement": "This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior." + } + }, { "uri": "https://id.registrystack.org/schemas/platform/mcp-runtime/mcp-runtime.v1alpha1.schema.json", "title": "Registry Stack configurable MCP gateway runtime configuration", @@ -4173,7 +4338,7 @@ "source": "src/artifacts/sha256/28757cb955ea96d628ff2442cc9dd7ce4f11998edada848a834ef9dfbc3c5c3e.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-mcp/src/schema.rs", "sha256": "92b053026e128997664c3981e09347cb4d2f1bd1c34dd96f646db0b37bdb4d7c" }, @@ -4206,9 +4371,9 @@ "source": "src/artifacts/sha256/706e5506bf8bb44d7717ff00e841af2f862502437f3502c3eeadde91a0465030.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-thunderid-tooling/src/schema.rs", - "sha256": "a0d71d083c0502cd9f9805451c1f80a1f0cf5623df094886cb1a6a140ce8bfe0" + "sha256": "3c54de0035540767520565700458e3bb8cf74eb4394ca6c67b908f045a76211b" }, "artifact_sha256": "706e5506bf8bb44d7717ff00e841af2f862502437f3502c3eeadde91a0465030", "immutable_uri": "https://id.registrystack.org/artifacts/sha256/706e5506bf8bb44d7717ff00e841af2f862502437f3502c3eeadde91a0465030.json", @@ -4239,7 +4404,7 @@ "source": "src/artifacts/sha256/e9ddb96d7b521da29b033353ffa854e2e003b1c952f9aad847b30ed1e3b8cf2a.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "products/registry-record/schema/registry-record-v1.schema.json", "sha256": "e9ddb96d7b521da29b033353ffa854e2e003b1c952f9aad847b30ed1e3b8cf2a" }, @@ -4515,15 +4680,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "render", - "source": "src/artifacts/sha256/48c416e7a409cde355bb7e7a1a1bd8eac6248e65867fd76b55b777d4b6e335d2.json", + "source": "src/artifacts/sha256/cdc74748bb3e149abc012ed32d5f3518867e70465a51a88628df99903bd9df5f.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-render/src/schema.rs", - "sha256": "187b3c8a7cb457962a2cadc80432af5c81124641ca356f539f634a5c2403a309" + "sha256": "acd150211c62d59faa685a76727ffa2e52d9f6e858ec49a10f51add49f430f30" }, - "artifact_sha256": "48c416e7a409cde355bb7e7a1a1bd8eac6248e65867fd76b55b777d4b6e335d2", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/48c416e7a409cde355bb7e7a1a1bd8eac6248e65867fd76b55b777d4b6e335d2.json", + "artifact_sha256": "cdc74748bb3e149abc012ed32d5f3518867e70465a51a88628df99903bd9df5f", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/cdc74748bb3e149abc012ed32d5f3518867e70465a51a88628df99903bd9df5f.json", "id": "https://id.registrystack.org/schemas/render/bundle/bundle.v1alpha1.schema.json", "documented_by": [ { @@ -4551,9 +4716,9 @@ "source": "src/artifacts/sha256/f511f546980251198954678790b986a5aa2cb4f037bd463f20531b8c9736d28b.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-render/src/schema.rs", - "sha256": "187b3c8a7cb457962a2cadc80432af5c81124641ca356f539f634a5c2403a309" + "sha256": "acd150211c62d59faa685a76727ffa2e52d9f6e858ec49a10f51add49f430f30" }, "artifact_sha256": "f511f546980251198954678790b986a5aa2cb4f037bd463f20531b8c9736d28b", "immutable_uri": "https://id.registrystack.org/artifacts/sha256/f511f546980251198954678790b986a5aa2cb4f037bd463f20531b8c9736d28b.json", @@ -4581,15 +4746,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "render", - "source": "src/artifacts/sha256/e853c774b697a8debb56537eb3a14c4e8c32f9fa8771eba1cd05eb397505b3c6.json", + "source": "src/artifacts/sha256/b5f7140e63c4307838e4b26286f0aad064577c7facc5e7423e1b63887d9afb95.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-render/src/schema.rs", - "sha256": "187b3c8a7cb457962a2cadc80432af5c81124641ca356f539f634a5c2403a309" + "sha256": "acd150211c62d59faa685a76727ffa2e52d9f6e858ec49a10f51add49f430f30" }, - "artifact_sha256": "e853c774b697a8debb56537eb3a14c4e8c32f9fa8771eba1cd05eb397505b3c6", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/e853c774b697a8debb56537eb3a14c4e8c32f9fa8771eba1cd05eb397505b3c6.json", + "artifact_sha256": "b5f7140e63c4307838e4b26286f0aad064577c7facc5e7423e1b63887d9afb95", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/b5f7140e63c4307838e4b26286f0aad064577c7facc5e7423e1b63887d9afb95.json", "id": "https://id.registrystack.org/schemas/render/runtime/runtime.v1alpha1.schema.json", "documented_by": [ { @@ -4617,7 +4782,7 @@ "source": "src/artifacts/sha256/dbb4bea390c11e37fee5840aef5eab34e39a4f5d34bb72354fcf38f041bbb974.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/schema.rs", "sha256": "7b0439b0479c783a02f1a2b4bd0633fe8440b8b015ca7c8978668f5a988ca1cc" }, @@ -4647,15 +4812,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "scheduling", - "source": "src/artifacts/sha256/1cb82ae0e7ec13bf7d54b109546a4d68cb2b3b031868941728dba209bea8bf21.json", + "source": "src/artifacts/sha256/ff888718d437664e4ca5095c5e58016539c58e535f512ea873a210929fd5df80.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/schema.rs", "sha256": "7b0439b0479c783a02f1a2b4bd0633fe8440b8b015ca7c8978668f5a988ca1cc" }, - "artifact_sha256": "1cb82ae0e7ec13bf7d54b109546a4d68cb2b3b031868941728dba209bea8bf21", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/1cb82ae0e7ec13bf7d54b109546a4d68cb2b3b031868941728dba209bea8bf21.json", + "artifact_sha256": "ff888718d437664e4ca5095c5e58016539c58e535f512ea873a210929fd5df80", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/ff888718d437664e4ca5095c5e58016539c58e535f512ea873a210929fd5df80.json", "id": "https://id.registrystack.org/schemas/scheduling/project/project.v1alpha1.schema.json", "documented_by": [ { @@ -4683,7 +4848,7 @@ "source": "src/artifacts/sha256/77ab388672f3d58275b278a94ebdddcf24828565af707f6720646cf1e09608e8.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/schema.rs", "sha256": "7b0439b0479c783a02f1a2b4bd0633fe8440b8b015ca7c8978668f5a988ca1cc" }, @@ -4716,7 +4881,7 @@ "source": "src/artifacts/sha256/eaf6f80ebeb9ebb3896982b2b334a1926e30fca4d62615c368d4b69e9c3366af.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling/src/schema.rs", "sha256": "72c9a636e83d70101ef7110c0da9cd257cb8b3789f6df27910890eabbf8ae990" }, diff --git a/public/schemas/messaging/project/project.v1alpha1.schema.json b/public/schemas/messaging/project/project.v1alpha1.schema.json index 5bc4524dc..253bed08c 100644 --- a/public/schemas/messaging/project/project.v1alpha1.schema.json +++ b/public/schemas/messaging/project/project.v1alpha1.schema.json @@ -8,6 +8,9 @@ "$ref": "#/$defs/ActorKind", "description": "The actor kind the token must claim. Absent means any kind." }, + "actsAs": { + "$ref": "#/$defs/ActsAs" + }, "allowDirectContent": { "default": false, "type": "boolean" @@ -18,9 +21,17 @@ "minimum": 1, "type": "integer" }, + "description": { + "$ref": "#/$defs/DisplayText", + "description": "What the profile is for, accepted for authoring and tooling; never matched against a caller." + }, "id": { "$ref": "#/$defs/LocalId" }, + "label": { + "$ref": "#/$defs/DisplayText", + "description": "A name for the profile, accepted for authoring and tooling; never matched against a caller." + }, "maximumMessagesPerDay": { "description": "The most messages the profile may submit in any 24 hours. Absent\nmeans no daily bound beyond the rate.", "format": "uint32", @@ -51,9 +62,6 @@ "$ref": "#/$defs/RequiredScopes", "description": "The scopes a token must carry: `unrestricted`, or a list of at least\none scope. Held as the listed scopes, so `unrestricted` is the empty\nlist." }, - "role": { - "$ref": "#/$defs/AccessRole" - }, "senderProfiles": { "default": [], "description": "The sender profiles a sender may select; an operator lists none.", @@ -78,20 +86,12 @@ "principalClaim", "requiredScopes", "requesterClients", - "role", + "actsAs", "requestsPerMinute", "burst" ], "type": "object" }, - "AccessRole": { - "description": "What a profile is for. A sender submits and reads its own messages; an\noperator reads and acts on every message but submits none.", - "enum": [ - "sender", - "operator" - ], - "type": "string" - }, "ActorKind": { "description": "The closed actor-kind vocabulary, spelled exactly as the Registry Stack\ncontextual-claim profile spells it.", "enum": [ @@ -101,6 +101,14 @@ ], "type": "string" }, + "ActsAs": { + "description": "What a profile is for. A sender submits and reads its own messages; an\noperator reads and acts on every message but submits none.", + "enum": [ + "sender", + "operator" + ], + "type": "string" + }, "Channel": { "description": "A delivery channel.", "enum": [ @@ -109,6 +117,13 @@ ], "type": "string" }, + "DisplayText": { + "description": "Human-readable display text. Bidirectional embedding, override, and isolate controls, byte-order marks, line and paragraph separators, and Unicode noncharacters are refused; multilingual joiners and direction marks remain valid.", + "not": { + "pattern": "[

‪-‮⁦-⁩﷐-﷯￾￿]|🿾|🿿|𯿾|𯿿|𿿾|𿿿|񏿾|񏿿|񟿾|񟿿|񯿾|񯿿|񿿾|񿿿|򏿾|򏿿|򟿾|򟿿|򯿾|򯿿|򿿾|򿿿|󏿾|󏿿|󟿾|󟿿|󯿾|󯿿|󿿾|󿿿|􏿾|􏿿" + }, + "type": "string" + }, "ExternalId": { "description": "An identifier another system issues, written exactly as its issuer gives it.", "maxLength": 512, diff --git a/public/schemas/messaging/project/project.v1alpha1.schema/index.html b/public/schemas/messaging/project/project.v1alpha1.schema/index.html index 666fa2a79..2d5f02749 100644 --- a/public/schemas/messaging/project/project.v1alpha1.schema/index.html +++ b/public/schemas/messaging/project/project.v1alpha1.schema/index.html @@ -48,8 +48,8 @@

Lifecycle

- - + +
IdentifierTitleStatus
https://id.registrystack.org/schemas/adapter/fixture/fixture.v1alpha1.schema.jsonRegistry Adapter fixture suiteactive
https://id.registrystack.org/schemas/adapter/job-runtime/job-runtime.v1alpha1.schema.jsonRegistry Adapter ingestion job runtime configurationactive
https://id.registrystack.org/schemas/adapter/job/job.v1alpha1.schema.jsonRegistry Adapter ingestion jobactive
https://id.registrystack.org/schemas/adapter/mapping/mapping.v1alpha1.schema.jsonRegistry Adapter mapping modelactive
https://id.registrystack.org/schemas/adapter/pack/pack.v1alpha1.schema.jsonRegistry Adapter packactive
https://id.registrystack.org/schemas/adapter/preview-expectations/preview-expectations.v1alpha1.schema.jsonRegistry Adapter preview expectationsactive
https://id.registrystack.org/schemas/adapter/profile/profile.v1alpha1.schema.jsonRegistry Adapter facade profileactive
https://id.registrystack.org/schemas/adapter/project/project.v1alpha1.schema.jsonRegistry Adapter projectactive
https://id.registrystack.org/schemas/adapter/runtime/runtime.v1alpha1.schema.jsonRegistry Adapter runtime configurationactive
https://id.registrystack.org/schemas/evidence/holder-bound-verification-policy/holder-bound-verification-policy.v1.schema.jsonEvidence relying-procedure holder-bound presentation verification policy Version 1active
https://id.registrystack.org/schemas/evidence/mock-plan/mock-plan.v1alpha1.schema.jsonEvidence source mock planactive
https://id.registrystack.org/schemas/evidence/oid4vci-runtime/oid4vci-runtime.v1alpha1.schema.jsonEvidence OID4VCI delivery runtime configurationactive
https://id.registrystack.org/schemas/evidence/oid4vp-runtime/oid4vp-runtime.v1alpha1.schema.jsonEvidence OpenID4VP verifier runtime configurationactive
https://id.registrystack.org/schemas/evidence/project/project.v1alpha1.schema.jsonEvidence projectactive
https://id.registrystack.org/schemas/evidence/question/question.v1alpha1.schema.jsonEvidence authored questiondeprecated
https://id.registrystack.org/schemas/evidence/runtime/runtime.v1alpha1.schema.jsonEvidence closed operator runtime configuration Version 1active
https://id.registrystack.org/schemas/platform/check-acceptances/check-acceptances.v1alpha1.schema.jsonCheckAcceptancesactive
https://id.registrystack.org/schemas/platform/cli-connection-check-report/cli-connection-check-report.v1alpha1.schema.jsonRegistry Stack CLI connection check reportactive
https://id.registrystack.org/schemas/platform/cli-connections/cli-connections.v1alpha1.schema.jsonRegistry Stack CLI saved connectionsactive
https://id.registrystack.org/schemas/platform/identity-deployment/identity-deployment.v1.schema.jsonRegistry Stack identity deploymentactive
https://id.registrystack.org/schemas/platform/identity-facts/identity-facts.v1.schema.jsonRegistry Stack identity factsactive
https://id.registrystack.org/schemas/platform/mcp-runtime/mcp-runtime.v1alpha1.schema.jsonRegistry Stack configurable MCP gateway runtime configurationactive
https://id.registrystack.org/schemas/platform/task-connection/task-connection.v1alpha1.schema.jsonRegistry Stack task connectionactive
https://id.registrystack.org/schemas/registry-record/v1Registry Record v1 base responseactive
Statusactive
Compatibility linev1alpha1
Ownermessaging
Artifact SHA-256af3c4d9d5e6da2a07c2d26fc9a06f7bdb3358f6145c54b25d7a045d3066c09e6
Immutable artifacthttps://id.registrystack.org/artifacts/sha256/af3c4d9d5e6da2a07c2d26fc9a06f7bdb3358f6145c54b25d7a045d3066c09e6.json
Artifact SHA-2562a6983bc79d8bf3bae405d3428189c364e643460bcce5930f60e21fde9c31865
Immutable artifacthttps://id.registrystack.org/artifacts/sha256/2a6983bc79d8bf3bae405d3428189c364e643460bcce5930f60e21fde9c31865.json
diff --git a/public/schemas/messaging/runtime/runtime.v1alpha1.schema.json b/public/schemas/messaging/runtime/runtime.v1alpha1.schema.json index 504b8b213..aba53e237 100644 --- a/public/schemas/messaging/runtime/runtime.v1alpha1.schema.json +++ b/public/schemas/messaging/runtime/runtime.v1alpha1.schema.json @@ -19,14 +19,14 @@ "type": "string" }, "retentionDays": { - "description": "How many days a sealed audit file is kept.", + "description": "How many days a rotated audit file is kept.", "format": "uint32", "maximum": 36500, "minimum": 1, "type": "integer" }, "rotateBytes": { - "description": "The size at which the active file is sealed and a new one begun.", + "description": "The size at which the active file is rotated and a new one begun.", "format": "uint64", "maximum": 4294967295, "minimum": 1048576, diff --git a/public/schemas/messaging/runtime/runtime.v1alpha1.schema/index.html b/public/schemas/messaging/runtime/runtime.v1alpha1.schema/index.html index 7a623c1eb..7da3eb2f6 100644 --- a/public/schemas/messaging/runtime/runtime.v1alpha1.schema/index.html +++ b/public/schemas/messaging/runtime/runtime.v1alpha1.schema/index.html @@ -48,8 +48,8 @@

Lifecycle

Statusactive Compatibility linev1alpha1 Ownermessaging - Artifact SHA-256d2c4ef5c2ca281c720117c95c5b136be7353d1da70a99f9c9455dd6b94dcae7b - Immutable artifacthttps://id.registrystack.org/artifacts/sha256/d2c4ef5c2ca281c720117c95c5b136be7353d1da70a99f9c9455dd6b94dcae7b.json + Artifact SHA-25656b15b5ec2c5a799f9debd7d034cf8f7a490c76c71458720b6469c98b3a469b5 + Immutable artifacthttps://id.registrystack.org/artifacts/sha256/56b15b5ec2c5a799f9debd7d034cf8f7a490c76c71458720b6469c98b3a469b5.json diff --git a/public/schemas/platform/identity-deployment/identity-deployment.v1.schema.json b/public/schemas/platform/identity-deployment/identity-deployment.v1.schema.json new file mode 100644 index 000000000..bd24d1e2f --- /dev/null +++ b/public/schemas/platform/identity-deployment/identity-deployment.v1.schema.json @@ -0,0 +1,344 @@ +{ + "$defs": { + "BrowserApp": { + "additionalProperties": false, + "description": "A browser application: an authorization-code client with PKCE.", + "properties": { + "clientSecretRef": { + "$ref": "#/$defs/SecretReference", + "allOf": [ + { + "pattern": "^secret:env/[A-Z][A-Z0-9_]{0,127}$" + } + ] + }, + "grants": { + "items": { + "$ref": "#/$defs/Grant" + }, + "maxItems": 16, + "minItems": 1, + "type": "array" + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The OAuth client id." + }, + "logoUrl": { + "anyOf": [ + { + "$ref": "#/$defs/Url" + }, + { + "type": "null" + } + ], + "description": "A public logo URL, shown on the sign-in page; omitted shows none." + }, + "origin": { + "type": "string" + }, + "product": { + "description": "The `product` whose audience the application's tokens carry.", + "type": "string" + }, + "redirectUris": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "tokenAttributes": { + "description": "Claims the application's tokens carry from the signed-in user.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "userTypes": { + "description": "Extension user types (ids of `userTypes`) that may sign in, beside\nthe generated `RegistryPerson`.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "id", + "clientSecretRef", + "origin", + "redirectUris", + "product", + "tokenAttributes", + "grants" + ], + "type": "object" + }, + "ClaimValue": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "A static claim value." + }, + "Client": { + "additionalProperties": false, + "description": "A machine client: authenticates with `private_key_jwt` against its own\npublic key set.", + "properties": { + "claims": { + "additionalProperties": { + "$ref": "#/$defs/ClaimValue" + }, + "description": "Static claims the issuer puts in the client's tokens; each name and\ntype must be one a product declares.", + "propertyNames": { + "$ref": "#/$defs/ExternalId", + "allOf": [ + { + "pattern": "^[A-Za-z0-9_]{1,128}$" + } + ] + }, + "type": "object" + }, + "grants": { + "items": { + "$ref": "#/$defs/Grant" + }, + "maxItems": 16, + "minItems": 1, + "type": "array" + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The OAuth client id." + }, + "publicJwksFile": { + "description": "A JWKS file holding public keys only, relative to this file.", + "type": "string" + } + }, + "required": [ + "id", + "publicJwksFile", + "grants" + ], + "type": "object" + }, + "ExternalId": { + "description": "An identifier another system issues, written exactly as its issuer gives it.", + "maxLength": 512, + "minLength": 1, + "pattern": "^[^\\u0000-\\u001F\\u007F-\\u009F]+$", + "type": "string" + }, + "Grant": { + "additionalProperties": false, + "description": "Access profiles of one product, granted to one principal.", + "properties": { + "accessProfiles": { + "description": "Ids of that product's access profiles.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "product": { + "description": "The `product` of a facts document.", + "type": "string" + } + }, + "required": [ + "product", + "accessProfiles" + ], + "type": "object" + }, + "LocalId": { + "description": "A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.", + "pattern": "^[a-z][a-z0-9_-]{0,63}$", + "type": "string" + }, + "OrganizationUnit": { + "additionalProperties": false, + "description": "The organization unit every generated resource belongs to. The handle\n`default` builds on the unit the bootstrap bundle creates.", + "properties": { + "description": { + "type": [ + "string", + "null" + ] + }, + "handle": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "required": [ + "handle", + "name" + ], + "type": "object" + }, + "SecretReference": { + "description": "An exact secret reference: secret:file/name, resolved under secretProviders.file.root, or secret:env/NAME, resolved only when secretProviders.environment is declared.", + "pattern": "^(?:secret:env/[A-Z][A-Z0-9_]{0,127}|secret:file/[a-z][a-z0-9._-]{0,127})$", + "type": "string" + }, + "Url": { + "description": "An absolute http or https URL with a host preserved as written, no user information, and no backslash, whitespace or control character. DNS case and equivalent IPv6 literals are permitted.", + "format": "uri", + "maxLength": 2048, + "pattern": "^[Hh][Tt][Tt][Pp][Ss]?://[^/?#@\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]+([/?#][^\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]*)?$", + "type": "string" + }, + "User": { + "additionalProperties": false, + "description": "A user, with the claims their tokens carry stated explicitly.", + "properties": { + "claims": { + "additionalProperties": { + "type": "string" + }, + "propertyNames": { + "$ref": "#/$defs/ExternalId", + "allOf": [ + { + "pattern": "^[A-Za-z0-9_]{1,128}$" + } + ] + }, + "type": "object" + }, + "email": { + "type": "string" + }, + "grants": { + "items": { + "$ref": "#/$defs/Grant" + }, + "maxItems": 16, + "minItems": 1, + "type": "array" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "passwordRef": { + "$ref": "#/$defs/SecretReference", + "allOf": [ + { + "pattern": "^secret:env/[A-Z][A-Z0-9_]{0,127}$" + } + ] + }, + "userType": { + "description": "An extension user type (id of `userTypes`); omitted is `RegistryPerson`.", + "type": [ + "string", + "null" + ] + }, + "username": { + "type": "string" + } + }, + "required": [ + "id", + "username", + "email", + "passwordRef", + "grants" + ], + "type": "object" + }, + "UserType": { + "additionalProperties": false, + "description": "An extension user type: an additional ThunderID user schema.", + "properties": { + "attributes": { + "description": "Optional string attributes beyond username, email and password.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "name": { + "description": "The ThunderID type name users of this type carry.", + "type": "string" + } + }, + "required": [ + "id", + "name" + ], + "type": "object" + } + }, + "$id": "https://id.registrystack.org/schemas/platform/identity-deployment/identity-deployment.v1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/platform/identity-deployment/v1", + "type": "string" + }, + "browserApps": { + "items": { + "$ref": "#/$defs/BrowserApp" + }, + "maxItems": 256, + "type": "array" + }, + "clients": { + "items": { + "$ref": "#/$defs/Client" + }, + "maxItems": 256, + "type": "array" + }, + "kind": { + "const": "PlatformIdentityDeployment", + "type": "string" + }, + "organizationUnit": { + "$ref": "#/$defs/OrganizationUnit" + }, + "userTypes": { + "items": { + "$ref": "#/$defs/UserType" + }, + "type": "array" + }, + "users": { + "items": { + "$ref": "#/$defs/User" + }, + "maxItems": 256, + "type": "array" + } + }, + "required": [ + "apiVersion", + "kind", + "organizationUnit" + ], + "title": "Registry Stack identity deployment", + "type": "object" +} diff --git a/public/schemas/platform/identity-deployment/identity-deployment.v1.schema/index.html b/public/schemas/platform/identity-deployment/identity-deployment.v1.schema/index.html new file mode 100644 index 000000000..4eb24144e --- /dev/null +++ b/public/schemas/platform/identity-deployment/identity-deployment.v1.schema/index.html @@ -0,0 +1,100 @@ + + + + + + Registry Stack identity deployment | Registry Stack identifiers + + + + + + + + +
+
+
+

JSON Schema

+

Registry Stack identity deployment

+

Registry Stack identity deployment JSON Schema.

+

https://id.registrystack.org/schemas/platform/identity-deployment/identity-deployment.v1.schema.json

+
+
+
+
+

Authority boundary

+

This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior.

+

The canonical machine artifact at this URI is the JSON Schema itself.

+
+
+

Lifecycle

+ + + + + + + + +
Statusactive
Compatibility linev1
Ownerplatform
Artifact SHA-25620b5224ee58a88324552ba4eef77132273ac2b6609e178db001dc57dd1d63077
Immutable artifacthttps://id.registrystack.org/artifacts/sha256/20b5224ee58a88324552ba4eef77132273ac2b6609e178db001dc57dd1d63077.json
+
+
+

Documentation

+ + +
+
+
+ + + diff --git a/public/schemas/platform/identity-facts/identity-facts.v1.schema.json b/public/schemas/platform/identity-facts/identity-facts.v1.schema.json new file mode 100644 index 000000000..1857229df --- /dev/null +++ b/public/schemas/platform/identity-facts/identity-facts.v1.schema.json @@ -0,0 +1,314 @@ +{ + "$defs": { + "AccessProfile": { + "additionalProperties": false, + "description": "One access profile: the scopes (and, where it is bound to them, the\npurposes) a client receives by being granted it.", + "properties": { + "actorKind": { + "anyOf": [ + { + "$ref": "#/$defs/ActorKind" + }, + { + "type": "null" + } + ], + "description": "The `registry_actor_kind` the product requires of every principal\nthat holds this profile, when it requires one without selecting the\nprofile by it. A product that selects by the claim states it in\n`selectedBy` instead. On an exchange profile it is the kind the\nproduct requires of the client's own bootstrap token, which the\nproduct checks before it issues the assertion. Omitted: the profile\nadmits any kind." + }, + "admittedActorKinds": { + "description": "The `registry_actor_kind` values the product admits for this profile\nwithout selecting it by them, when it admits only some kinds. A\nprofile that selects by the claim, or requires one kind, states that\nin `selectedBy` or `actorKind` instead. Omitted: the profile admits\nany kind.", + "items": { + "$ref": "#/$defs/ActorKind" + }, + "type": "array", + "uniqueItems": true + }, + "exchange": { + "anyOf": [ + { + "$ref": "#/$defs/ExchangeBinding" + }, + { + "type": "null" + } + ] + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "purposes": { + "items": { + "type": "string" + }, + "maxItems": 16, + "type": "array", + "uniqueItems": true + }, + "refusedClaims": { + "description": "Declared claims the product refuses a token for this profile with:\nit never selects the profile for a principal that carries any of\nthem. On an exchange profile the product applies it to the exchanged\ntoken, not to the client's own. Omitted: no claim refuses the\nprofile.", + "items": { + "pattern": "^[A-Za-z0-9_]{1,128}$", + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "requesterClients": { + "description": "Narrows `allowedClients` for this profile; omitted narrows nothing.", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ], + "uniqueItems": true + }, + "requiredClaims": { + "description": "Declared claims the product refuses a token for this profile without.\nThe token subject (`sub`) is always present and is never listed. A\nclaim the generator derives (`registry_actor_kind`,\n`registry_purpose`) counts as carried. Omitted: the profile requires\nno claim beyond those the other members state.", + "items": { + "pattern": "^[A-Za-z0-9_]{1,128}$", + "type": "string" + }, + "maxItems": 64, + "type": "array", + "uniqueItems": true + }, + "scopes": { + "items": { + "type": "string" + }, + "maxItems": 32, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "selectedBy": { + "additionalProperties": { + "items": { + "type": "string" + }, + "maxItems": 32, + "type": "array", + "uniqueItems": true + }, + "description": "The claim values by which the product selects this profile: for each\nclaim name, the values a principal's claim must carry. A `string`\nclaim names exactly one value; a `string-array` claim names at least\none, all of which the principal must carry. Omitted: the product\ndoes not select this profile by claim values, so no claim check\napplies to it.", + "maxProperties": 64, + "propertyNames": { + "$ref": "#/$defs/ExternalId", + "allOf": [ + { + "pattern": "^[A-Za-z0-9_]{1,128}$" + } + ] + }, + "type": "object" + } + }, + "required": [ + "id", + "scopes" + ], + "type": "object" + }, + "ActorKind": { + "description": "The kind of principal a token represents, as `registry_actor_kind`\ncarries it.", + "enum": [ + "human", + "agent", + "service" + ], + "type": "string" + }, + "Admission": { + "anyOf": [ + { + "const": "unrestricted" + }, + { + "items": { + "$ref": "#/$defs/ExternalId" + }, + "maxItems": 256, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + ], + "description": "`unrestricted`, or the exact client ids the product admits." + }, + "AssertionIssuer": { + "additionalProperties": false, + "description": "One external authority whose signed assertions a product accepts for\ntoken exchange.", + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "issuer": { + "$ref": "#/$defs/Url" + }, + "jwksUrl": { + "$ref": "#/$defs/Url" + }, + "mapping": { + "$ref": "#/$defs/AssertionMapping" + }, + "projectedClaims": { + "additionalProperties": { + "$ref": "#/$defs/ClaimType" + }, + "description": "The signed claims a first-party signer projects, by name.", + "propertyNames": { + "$ref": "#/$defs/ExternalId", + "allOf": [ + { + "pattern": "^[A-Za-z0-9_]{1,128}$" + } + ] + }, + "type": "object" + } + }, + "required": [ + "id", + "issuer", + "jwksUrl", + "mapping" + ], + "type": "object" + }, + "AssertionMapping": { + "description": "How an assertion authority's signed claims become token claims.", + "oneOf": [ + { + "const": "institutional-grant", + "description": "An institutional grant: the issuer derives grant provenance.", + "type": "string" + }, + { + "const": "first-party", + "description": "A first-party signer: only `projectedClaims` are copied.", + "type": "string" + } + ] + }, + "ClaimType": { + "description": "The type of a claim's value.", + "enum": [ + "string", + "string-array" + ], + "type": "string" + }, + "ExchangeBinding": { + "additionalProperties": false, + "description": "A profile that is reached by exchanging an assertion, not by presenting\nits scopes directly.", + "properties": { + "assertionIssuerId": { + "description": "The `id` of an entry of `assertionIssuers`.", + "type": "string" + }, + "bootstrapAudience": { + "description": "The audience of the resource that accepts the assertion.", + "type": "string" + }, + "bootstrapScope": { + "description": "The one scope a client holds to present an assertion.", + "type": "string" + } + }, + "required": [ + "assertionIssuerId", + "bootstrapAudience", + "bootstrapScope" + ], + "type": "object" + }, + "ExternalId": { + "description": "An identifier another system issues, written exactly as its issuer gives it.", + "maxLength": 512, + "minLength": 1, + "pattern": "^[^\\u0000-\\u001F\\u007F-\\u009F]+$", + "type": "string" + }, + "LocalId": { + "description": "A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.", + "pattern": "^[a-z][a-z0-9_-]{0,63}$", + "type": "string" + }, + "Url": { + "description": "An absolute http or https URL with a host preserved as written, no user information, and no backslash, whitespace or control character. DNS case and equivalent IPv6 literals are permitted.", + "format": "uri", + "maxLength": 2048, + "pattern": "^[Hh][Tt][Tt][Pp][Ss]?://[^/?#@\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]+([/?#][^\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]*)?$", + "type": "string" + } + }, + "$id": "https://id.registrystack.org/schemas/platform/identity-facts/identity-facts.v1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "description": "What one product expects of the issuer.", + "properties": { + "accessProfiles": { + "items": { + "$ref": "#/$defs/AccessProfile" + }, + "maxItems": 64, + "type": "array" + }, + "allowedClients": { + "$ref": "#/$defs/Admission" + }, + "apiVersion": { + "const": "id.registrystack.org/formats/platform/identity-facts/v1", + "type": "string" + }, + "assertionIssuers": { + "items": { + "$ref": "#/$defs/AssertionIssuer" + }, + "maxItems": 8, + "type": "array" + }, + "audience": { + "type": "string" + }, + "claims": { + "additionalProperties": { + "$ref": "#/$defs/ClaimType" + }, + "description": "The claims the product reads from a token, by name.", + "maxProperties": 64, + "propertyNames": { + "$ref": "#/$defs/ExternalId", + "allOf": [ + { + "pattern": "^[A-Za-z0-9_]{1,128}$" + } + ] + }, + "type": "object" + }, + "issuer": { + "$ref": "#/$defs/Url" + }, + "kind": { + "const": "PlatformIdentityFacts", + "type": "string" + }, + "product": { + "description": "The product that wrote these facts, as a local identifier.", + "type": "string" + } + }, + "required": [ + "apiVersion", + "kind", + "product", + "issuer", + "audience", + "allowedClients" + ], + "title": "Registry Stack identity facts", + "type": "object" +} diff --git a/public/schemas/platform/identity-facts/identity-facts.v1.schema/index.html b/public/schemas/platform/identity-facts/identity-facts.v1.schema/index.html new file mode 100644 index 000000000..9b022cca2 --- /dev/null +++ b/public/schemas/platform/identity-facts/identity-facts.v1.schema/index.html @@ -0,0 +1,100 @@ + + + + + + Registry Stack identity facts | Registry Stack identifiers + + + + + + + + +
+
+
+

JSON Schema

+

Registry Stack identity facts

+

Registry Stack product identity facts JSON Schema.

+

https://id.registrystack.org/schemas/platform/identity-facts/identity-facts.v1.schema.json

+
+
+
+
+

Authority boundary

+

This site publishes the current Registry Stack identifiers from a digest-bound source catalog. Product source and the actual service response remain authoritative for runtime behavior.

+

The canonical machine artifact at this URI is the JSON Schema itself.

+
+
+

Lifecycle

+ + + + + + + + +
Statusactive
Compatibility linev1
Ownerplatform
Artifact SHA-256c347ed37907da3fbef25720354b8042c3ce8477437c4a38b81ce2aa718c0b96c
Immutable artifacthttps://id.registrystack.org/artifacts/sha256/c347ed37907da3fbef25720354b8042c3ce8477437c4a38b81ce2aa718c0b96c.json
+
+
+

Documentation

+ + +
+
+
+ + + diff --git a/public/schemas/render/bundle/bundle.v1alpha1.schema.json b/public/schemas/render/bundle/bundle.v1alpha1.schema.json index dfac180b7..2c72786e6 100644 --- a/public/schemas/render/bundle/bundle.v1alpha1.schema.json +++ b/public/schemas/render/bundle/bundle.v1alpha1.schema.json @@ -37,6 +37,10 @@ "pattern": "\\.json$", "type": "string" }, + "seal": { + "$ref": "#/$defs/LocalId", + "description": "The seal this document type is issued under: a local identifier that\nthe serving runtime's `signing.seals` binds to key material. Omit it\nand the document type cannot be sealed. The bundle never holds a key,\na certificate, or a client list." + }, "version": { "description": "The document's own version; printed on paper by templates that wish to.", "format": "uint32", diff --git a/public/schemas/render/bundle/bundle.v1alpha1.schema/index.html b/public/schemas/render/bundle/bundle.v1alpha1.schema/index.html index 15376b8e2..c99ee0b0d 100644 --- a/public/schemas/render/bundle/bundle.v1alpha1.schema/index.html +++ b/public/schemas/render/bundle/bundle.v1alpha1.schema/index.html @@ -48,8 +48,8 @@

Lifecycle

Statusactive Compatibility linev1alpha1 Ownerrender - Artifact SHA-25648c416e7a409cde355bb7e7a1a1bd8eac6248e65867fd76b55b777d4b6e335d2 - Immutable artifacthttps://id.registrystack.org/artifacts/sha256/48c416e7a409cde355bb7e7a1a1bd8eac6248e65867fd76b55b777d4b6e335d2.json + Artifact SHA-256cdc74748bb3e149abc012ed32d5f3518867e70465a51a88628df99903bd9df5f + Immutable artifacthttps://id.registrystack.org/artifacts/sha256/cdc74748bb3e149abc012ed32d5f3518867e70465a51a88628df99903bd9df5f.json diff --git a/public/schemas/render/runtime/runtime.v1alpha1.schema.json b/public/schemas/render/runtime/runtime.v1alpha1.schema.json index 883e73a8e..7a291e07d 100644 --- a/public/schemas/render/runtime/runtime.v1alpha1.schema.json +++ b/public/schemas/render/runtime/runtime.v1alpha1.schema.json @@ -1,5 +1,20 @@ { "$defs": { + "AssuranceProfile": { + "description": "The assurance boundary the runtime file declares for its seals. The\nmember and the values are Evidence's.", + "oneOf": [ + { + "const": "local", + "description": "Seals sign with a `local-jwk` key file and are test seals: documents\nprint them as test seals (`signing.testOnly` is true).", + "type": "string" + }, + { + "const": "production", + "description": "Seals sign through Transit: `signing.testOnly` is false.", + "type": "string" + } + ] + }, "AuditDestinationKind": { "description": "The configured audit destination kind, as written in product configuration.", "oneOf": [ @@ -82,7 +97,7 @@ }, "type": "object" }, - "AuthRuntime": { + "AuthenticationRuntime": { "additionalProperties": false, "oneOf": [ { @@ -286,7 +301,7 @@ }, "shutdownGraceMilliseconds": { "default": 30000, - "description": "Time allowed for renders in flight to finish at shutdown, in\nmilliseconds. Open connections get the same again.", + "description": "Time allowed for renders and seals in flight to finish at shutdown,\nin milliseconds. Open connections get the same again.", "format": "uint64", "maximum": 3600000, "minimum": 1000, @@ -298,6 +313,11 @@ ], "type": "object" }, + "LocalId": { + "description": "A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.", + "pattern": "^[a-z][a-z0-9_-]{0,63}$", + "type": "string" + }, "OidcAllowedClients": { "anyOf": [ { @@ -395,6 +415,152 @@ ], "type": "object" }, + "SealRuntime": { + "additionalProperties": false, + "description": "One seal: the signer, the certificate chain, the timestamp policy, and\nthe clients allowed to use it.", + "oneOf": [ + { + "not": { + "required": [ + "withoutTimestamp" + ] + }, + "required": [ + "timestampAuthority" + ] + }, + { + "not": { + "required": [ + "timestampAuthority" + ] + }, + "required": [ + "withoutTimestamp" + ] + } + ], + "properties": { + "allowedClients": { + "description": "The OIDC clients allowed to seal with this seal: a list of at least\none client, each also admitted by `authentication.oidc.allowedClients`. There is\nno `unrestricted` form and no wildcard: a seal issues documents in the\ninstitution's name, so every seal-capable client is named. Keep these\nclients separate from any citizen-facing client.", + "items": { + "$ref": "#/$defs/ExternalId", + "not": { + "anyOf": [ + { + "const": "unrestricted" + }, + { + "pattern": "\\*" + } + ] + } + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "certificateChainFile": { + "description": "Absolute path of the PEM certificate chain file, the seal's own\ncertificate first, then each issuer. It is absolute like Render's\nother runtime paths, so a runtime file names deployment locations,\nnot locations relative to wherever the file was copied.", + "not": { + "pattern": "(^|/)\\.{1,2}(/|$)" + }, + "pattern": "^/(?:[^/]+/)*[^/]+$", + "type": "string" + }, + "signer": { + "$ref": "#/$defs/SealSignerRuntime", + "description": "Binds the seal to the private-key transport that produces its\nsignature. Selects the signer transport for this seal: `local-jwk`\nresolves a file-provider secret directly, `transit` calls a\nworkload-local Transit signing proxy over a Unix socket. Under\n`assuranceProfile: production` a seal signs through `transit` only;\nunder `local` it signs with a `local-jwk` key file only." + }, + "timestampAuthority": { + "$ref": "#/$defs/TimestampAuthorityRuntime", + "description": "The RFC 3161 timestamp authority that timestamps each seal (PAdES\nB-T), so the seal keeps validating after its certificate expires.\nExactly one of `timestampAuthority` and `withoutTimestamp` is\nrequired." + }, + "withoutTimestamp": { + "$ref": "#/$defs/WithoutTimestamp", + "description": "Seal without a timestamp (PAdES B-B). The only value states the\nconsequence the operator accepts: a seal without a timestamp stops\nvalidating when its certificate expires, which is usually before the\ndocument stops mattering. Exactly one of `timestampAuthority` and\n`withoutTimestamp` is required." + } + }, + "required": [ + "signer", + "certificateChainFile", + "allowedClients" + ], + "type": "object" + }, + "SealSignerRuntime": { + "description": "The private-key transport a seal signs through. The `type` member names\nthe variant.", + "oneOf": [ + { + "additionalProperties": false, + "description": "Resolves a file-provider secret directly; for `assuranceProfile: local`.", + "properties": { + "privateKeyRef": { + "$ref": "#/$defs/SecretReference", + "description": "Names the file-provider secret holding the local signing private\nkey material, read only when `signer.type` is `local-jwk`; the\nvalue is a reference, and configuration never carries the key\nbytes themselves. The secret is one private JSON Web Key, the\nform `registry-render keygen` writes." + }, + "type": { + "const": "local-jwk", + "type": "string" + } + }, + "required": [ + "type", + "privateKeyRef" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Calls a workload-local Transit signing proxy over a Unix socket. The\nkey is an ECDSA P-256 Transit key, so the seal signs ES256, and it\nnever leaves Transit.", + "properties": { + "attemptTimeoutMilliseconds": { + "description": "Bounds how long the runtime waits on each call to the Transit\nsigning proxy; because a `transit` signer keeps no local fallback\nkey, a call that exceeds this bound fails the seal request rather\nthan blocking it indefinitely.", + "format": "uint64", + "maximum": 30000, + "minimum": 1, + "type": "integer" + }, + "keyName": { + "$ref": "#/$defs/LocalId", + "description": "Names the specific key within `signer.mount` this signer calls;\ncombined with `signer.mount` and `signer.keyVersion`, it reaches\nexactly one pinned Transit key." + }, + "keyVersion": { + "description": "Pins signing to one exact Transit key version rather than a\n`latest` alias, so a provider-side rotation cannot silently\nreplace the key bytes behind an unchanged seal certificate.", + "format": "uint32", + "maximum": 4294967295, + "minimum": 1, + "type": "integer" + }, + "mount": { + "$ref": "#/$defs/LocalId", + "description": "Names the Transit secrets-engine mount this signer calls; it is a\npath segment in the local Transit-proxy request URL, not a\nfilesystem location." + }, + "type": { + "const": "transit", + "type": "string" + }, + "unixSocketPath": { + "description": "Absolute Unix socket path used to reach the workload-local Transit\nsigning proxy; the runtime supplies no provider token over this\nconnection, because token custody and renewal stay with the proxy.", + "not": { + "pattern": "(^|/)\\.{1,2}(/|$)" + }, + "pattern": "^/(?:[^/]+/)*[^/]+$", + "type": "string" + } + }, + "required": [ + "type", + "unixSocketPath", + "mount", + "keyName", + "keyVersion", + "attemptTimeoutMilliseconds" + ], + "type": "object" + } + ] + }, "SecretProvidersConfig": { "additionalProperties": false, "anyOf": [ @@ -437,6 +603,58 @@ "pattern": "^(?:secret:env/[A-Z][A-Z0-9_]{0,127}|secret:file/[a-z][a-z0-9._-]{0,127})$", "type": "string" }, + "SigningRuntime": { + "additionalProperties": false, + "description": "Document sealing: the seals this deployment can apply. A seal is a PAdES\nsignature made with the institution's own key. Which document types use\nwhich seal is decided in the bundle manifest (`seal` on a document type),\nnever by the caller.", + "properties": { + "seals": { + "additionalProperties": { + "$ref": "#/$defs/SealRuntime" + }, + "description": "The seals, keyed by the local identifier the bundle manifest's `seal`\nnames. At least one seal is required: omit `signing` to turn sealing\noff.", + "minProperties": 1, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + } + }, + "required": [ + "seals" + ], + "type": "object" + }, + "TimestampAuthorityRuntime": { + "additionalProperties": false, + "description": "The RFC 3161 timestamp authority a seal uses.", + "properties": { + "attemptTimeoutMilliseconds": { + "default": 10000, + "description": "Time allowed for one request to the authority, in milliseconds.", + "format": "uint64", + "maximum": 60000, + "minimum": 1000, + "type": "integer" + }, + "caBundleRef": { + "$ref": "#/$defs/SecretReference", + "description": "PEM CA bundle for the authority. Omitted, the platform's trusted\nroots verify it." + }, + "url": { + "$ref": "#/$defs/Url", + "allOf": [ + { + "pattern": "^(?:[Hh][Tt][Tt][Pp][Ss]://|[Hh][Tt][Tt][Pp]://(?:[Ll][Oo][Cc][Aa][Ll][Hh][Oo][Ss][Tt]|127(?:\\.[0-9]{1,3}){3}|\\[::1\\])(?:[:/?#]|$))" + } + ], + "description": "Absolute `https` URL of the authority. `http` is accepted only for a\nloopback host (`localhost`, `127.0.0.0/8`, `[::1]`), for a test\nauthority on the same machine." + } + }, + "required": [ + "url" + ], + "type": "object" + }, "Url": { "description": "An absolute http or https URL with a host preserved as written, no user information, and no backslash, whitespace or control character. DNS case and equivalent IPv6 literals are permitted.", "format": "uri", @@ -444,6 +662,16 @@ "pattern": "^[Hh][Tt][Tt][Pp][Ss]?://[^/?#@\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]+([/?#][^\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]*)?$", "type": "string" }, + "WithoutTimestamp": { + "description": "The acknowledgement a seal needs to go without a timestamp.", + "oneOf": [ + { + "const": "seal-stops-validating-when-certificate-expires", + "description": "The seal carries no timestamp, so it stops validating when its\ncertificate expires.", + "type": "string" + } + ] + }, "ipv4SocketHost": { "description": "Four canonical decimal IPv4 octets followed by a decimal port.", "pattern": "^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?|0)\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?|0):[0-9]+$" @@ -464,16 +692,112 @@ "$id": "https://id.registrystack.org/schemas/render/runtime/runtime.v1alpha1.schema.json", "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, + "allOf": [ + { + "if": { + "properties": { + "signing": { + "properties": { + "seals": { + "minProperties": 1 + } + }, + "required": [ + "seals" + ] + } + }, + "required": [ + "signing" + ] + }, + "then": { + "required": [ + "assuranceProfile" + ] + } + }, + { + "if": { + "properties": { + "assuranceProfile": { + "const": "local" + } + }, + "required": [ + "assuranceProfile" + ] + }, + "then": { + "properties": { + "signing": { + "properties": { + "seals": { + "additionalProperties": { + "properties": { + "signer": { + "properties": { + "type": { + "const": "local-jwk" + } + } + } + } + } + } + } + } + } + } + }, + { + "if": { + "properties": { + "assuranceProfile": { + "const": "production" + } + }, + "required": [ + "assuranceProfile" + ] + }, + "then": { + "properties": { + "signing": { + "properties": { + "seals": { + "additionalProperties": { + "properties": { + "signer": { + "properties": { + "type": { + "const": "transit" + } + } + } + } + } + } + } + } + } + } + } + ], "properties": { "apiVersion": { "const": "id.registrystack.org/formats/render/runtime/v1alpha1", "type": "string" }, + "assuranceProfile": { + "$ref": "#/$defs/AssuranceProfile", + "description": "The assurance boundary of this deployment's seals, the same member\nand values Evidence declares. Required when `signing` declares a\nseal, and unused otherwise. `local` signs with a `local-jwk` key\nfile and marks every seal a test seal; `production` signs through\n`transit` only, so a production key never leaves Transit." + }, "audit": { "$ref": "#/$defs/AuditRuntime" }, - "auth": { - "$ref": "#/$defs/AuthRuntime" + "authentication": { + "$ref": "#/$defs/AuthenticationRuntime" }, "kind": { "const": "RenderRuntimeConfig", @@ -503,6 +827,10 @@ "secretProviders": { "$ref": "#/$defs/SecretProvidersConfig", "description": "Providers for secret references. Omit when the authentication mode uses\nno secret references." + }, + "signing": { + "$ref": "#/$defs/SigningRuntime", + "description": "Optional document sealing. Omit it and Render loads no signer, makes\nno timestamp call, and cannot seal any document." } }, "required": [ @@ -510,7 +838,7 @@ "kind", "listener", "package", - "auth", + "authentication", "audit" ], "title": "Registry Render runtime configuration", diff --git a/public/schemas/render/runtime/runtime.v1alpha1.schema/index.html b/public/schemas/render/runtime/runtime.v1alpha1.schema/index.html index 0a0936fbc..d0283227d 100644 --- a/public/schemas/render/runtime/runtime.v1alpha1.schema/index.html +++ b/public/schemas/render/runtime/runtime.v1alpha1.schema/index.html @@ -48,8 +48,8 @@

Lifecycle

Statusactive Compatibility linev1alpha1 Ownerrender - Artifact SHA-256e853c774b697a8debb56537eb3a14c4e8c32f9fa8771eba1cd05eb397505b3c6 - Immutable artifacthttps://id.registrystack.org/artifacts/sha256/e853c774b697a8debb56537eb3a14c4e8c32f9fa8771eba1cd05eb397505b3c6.json + Artifact SHA-256b5f7140e63c4307838e4b26286f0aad064577c7facc5e7423e1b63887d9afb95 + Immutable artifacthttps://id.registrystack.org/artifacts/sha256/b5f7140e63c4307838e4b26286f0aad064577c7facc5e7423e1b63887d9afb95.json diff --git a/public/schemas/scheduling/project/project.v1alpha1.schema.json b/public/schemas/scheduling/project/project.v1alpha1.schema.json index a3bcfd41a..c11b7d7e9 100644 --- a/public/schemas/scheduling/project/project.v1alpha1.schema.json +++ b/public/schemas/scheduling/project/project.v1alpha1.schema.json @@ -190,13 +190,10 @@ ], "type": "object" }, - "HolidaySetPolicy": { + "HolidaySet": { "additionalProperties": false, "description": "A named, revisioned set of holiday dates.", "properties": { - "because": { - "$ref": "#/$defs/DisplayText" - }, "dates": { "description": "The dates the set closes. A set that closes no date omits the member.", "items": { @@ -210,6 +207,10 @@ "id": { "$ref": "#/$defs/LocalId" }, + "label": { + "$ref": "#/$defs/DisplayText", + "description": "An optional human label for the set; the id names it when absent." + }, "revision": { "format": "uint64", "maximum": 9223372036854775807, @@ -219,8 +220,7 @@ }, "required": [ "id", - "revision", - "because" + "revision" ], "type": "object" }, @@ -555,7 +555,7 @@ }, "holidaySets": { "items": { - "$ref": "#/$defs/HolidaySetPolicy" + "$ref": "#/$defs/HolidaySet" }, "maxItems": 256, "minItems": 1, diff --git a/public/schemas/scheduling/project/project.v1alpha1.schema/index.html b/public/schemas/scheduling/project/project.v1alpha1.schema/index.html index 313839586..007448996 100644 --- a/public/schemas/scheduling/project/project.v1alpha1.schema/index.html +++ b/public/schemas/scheduling/project/project.v1alpha1.schema/index.html @@ -48,8 +48,8 @@

Lifecycle

Statusactive Compatibility linev1alpha1 Ownerscheduling - Artifact SHA-2561cb82ae0e7ec13bf7d54b109546a4d68cb2b3b031868941728dba209bea8bf21 - Immutable artifacthttps://id.registrystack.org/artifacts/sha256/1cb82ae0e7ec13bf7d54b109546a4d68cb2b3b031868941728dba209bea8bf21.json + Artifact SHA-256ff888718d437664e4ca5095c5e58016539c58e535f512ea873a210929fd5df80 + Immutable artifacthttps://id.registrystack.org/artifacts/sha256/ff888718d437664e4ca5095c5e58016539c58e535f512ea873a210929fd5df80.json diff --git a/public/vocab/breg-odrl/index.html b/public/vocab/breg-odrl/index.html index 19e96e72a..d5d354e6c 100644 --- a/public/vocab/breg-odrl/index.html +++ b/public/vocab/breg-odrl/index.html @@ -70,7 +70,7 @@

Identifier record

"owner": "breg", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "products/breg/contracts/odrl-profile.jsonld", "sha256": "24d0950eb2c1a76d5005850e1145f675ad65df5231867907b41d11fdd2979cdc" }, diff --git a/public/vocab/breg-odrl/index.json b/public/vocab/breg-odrl/index.json index 25eadc40c..8fbb83c36 100644 --- a/public/vocab/breg-odrl/index.json +++ b/public/vocab/breg-odrl/index.json @@ -8,7 +8,7 @@ "owner": "breg", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "products/breg/contracts/odrl-profile.jsonld", "sha256": "24d0950eb2c1a76d5005850e1145f675ad65df5231867907b41d11fdd2979cdc" }, diff --git a/public/vocab/registry-record/index.html b/public/vocab/registry-record/index.html index 41c8c1089..3cc59818c 100644 --- a/public/vocab/registry-record/index.html +++ b/public/vocab/registry-record/index.html @@ -70,7 +70,7 @@

Identifier record

"owner": "registry-record", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "products/registry-record/context/registry-record-v1.jsonld", "sha256": "c336506f4dcd7e266155e8cd1ff9710766bc240f395e27b0480b2e193e74e2ee" }, diff --git a/public/vocab/registry-record/index.json b/public/vocab/registry-record/index.json index 04570ab8d..075df7ab0 100644 --- a/public/vocab/registry-record/index.json +++ b/public/vocab/registry-record/index.json @@ -8,7 +8,7 @@ "owner": "registry-record", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "products/registry-record/context/registry-record-v1.jsonld", "sha256": "c336506f4dcd7e266155e8cd1ff9710766bc240f395e27b0480b2e193e74e2ee" }, diff --git a/public/vocabularies/index.json b/public/vocabularies/index.json index 7cb9ae5c8..abcaeb32e 100644 --- a/public/vocabularies/index.json +++ b/public/vocabularies/index.json @@ -10,7 +10,7 @@ "owner": "breg", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "products/breg/contracts/odrl-profile.jsonld", "sha256": "24d0950eb2c1a76d5005850e1145f675ad65df5231867907b41d11fdd2979cdc" }, @@ -105,7 +105,7 @@ "owner": "registry-record", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "products/registry-record/context/registry-record-v1.jsonld", "sha256": "c336506f4dcd7e266155e8cd1ff9710766bc240f395e27b0480b2e193e74e2ee" }, diff --git a/src/artifacts/media-types.json b/src/artifacts/media-types.json index 5c09e1527..ccb6af86a 100644 --- a/src/artifacts/media-types.json +++ b/src/artifacts/media-types.json @@ -3,6 +3,7 @@ "artifacts": { "02988cabcddaa2560bc4efae9d8ad45bbc800fb2be14abfbb59533112e1c892a.json": "application/schema+json", "0406d1cd42940b628c4c1cee0f207a30a8bf93ae50de08924df9a2fc1bbc19f4.json": "application/schema+json", + "05ca00c30b9126084ea5d52e17db5002f7afb46e9aceac121fe42489afc5caa1.json": "application/schema+json", "06439b2e8b23831f90676f4103605a1fc7e79e34f9e8935023cf173e122934de.json": "application/schema+json", "06939f1bfbecee443635734088f844273489b89974769e5b3e94b1cff314a5d8.json": "application/schema+json", "073149171864d41eae1eff6de29a901ec9adb40bcf4592f53e7920ae86fa0ffc.json": "application/schema+json", @@ -10,6 +11,7 @@ "07a3711c755ee7475a7f00cce30e94bd1018edc95555dc456bdfd78f327dc558.json": "application/schema+json", "0e12c37c7e1f4f34b30ea6fa3444a98c84bba52a3c9b575b1a8fa14019b82b56.json": "application/schema+json", "0e42ba0103eaa4ced632729a4946a55b121b16fd359405bb6f6055e512433558.json": "application/schema+json", + "0f8f2332533c8577677e7a53f62a0ac400c08233f13ced03e168331d8058c2c8.json": "application/schema+json", "10006d4e4cd3b8ef2d9e742793967293c7bbdca89a8c11676310a7c4f4c1adc8.json": "application/schema+json", "100315e48b363b9f32004f472633a0710816abb6dce52129f2f98513dfd0d8ab.json": "application/schema+json", "111aad59a4b453e45a618ffdf4c0313db5b1031765d0498d013aa3bcf0c9b059.json": "application/schema+json", @@ -22,6 +24,7 @@ "1885ff7721ef4b5ddbd24280e8f62feef01fa79517af542b2d306cb156ceb08f.json": "application/schema+json", "18b0b088010cf8ddacae0ffaada4defe030e67eb1fb05c4b282e03ecf62a29a8.json": "application/schema+json", "19f90f5a2f87b250dcd54d16fe1810fbea6bdd58e6ec46891e20b3c5110605d5.json": "application/schema+json", + "1a713af021f69a27c5c7f58b22464cd227972173f9935b2fc3a0a48eda51e6f5.json": "application/schema+json", "1b40bb165afc02ebcc102168e9d38ebcbcbd8956889f79dc3329e61dd2e30236.json": "application/schema+json", "1c1030390a47406fe6109ef404c7e1daa8e9903d7b2ad113991e158a2f38e380.json": "application/schema+json", "1c1299d6ebeaf19120f9b8d76f572e2392368513560e1249d024b61ef2ef9060.json": "application/schema+json", @@ -32,21 +35,28 @@ "1f02f199bd6a722452f2e3abb15f1c74f03f62c5b52acdbea6a33d90b60b0ffd.json": "application/schema+json", "1f7517cc73cc2c0cb0c626cc2f716f638d333d4d9db7ebe7eaef0c4046a191b8.json": "application/schema+json", "203b24f50e1c9309ff8450cff2b0f97ad99b521b1323ab281a3851302790e1bf.json": "application/schema+json", + "20b5224ee58a88324552ba4eef77132273ac2b6609e178db001dc57dd1d63077.json": "application/schema+json", "2158f213b60c1da4498818dc6ac456d937ac965984552a0007ad6bd5dfba4938.json": "application/schema+json", "2213fb509528694eb088691c68036b318d75e633e405018c72cd8d28ee77fdb7.json": "application/schema+json", "2252671b19cb249c1ac2d2338820d3a326e8e77f7db04380331f85d3d3cacd72.json": "application/schema+json", + "225b0d03402f422442432fd5195ccf3483ef79cf744d883bbfb9e96ba89e6465.json": "application/schema+json", "2481544f84d61d0bd21ba44e31e7bdefcbf9e10b12d3b103fc100ebead1e346e.json": "application/schema+json", + "24b19bc056dd4048d1f02b3270743d3c30c052cb5875b240e8d9b5d06029ecfb.yaml": "application/yaml", "24d0950eb2c1a76d5005850e1145f675ad65df5231867907b41d11fdd2979cdc.jsonld": "application/ld+json", "25b93baf3a412d22d90d4d224560a18ae2d5499d8da11a93d090f4b0178c0002.json": "application/schema+json", "25eb7b86185ab1d3aa5919752790c2600b5610b484397836eab17b82924e9d01.json": "application/schema+json", "2648c8627f9671e3f8413dcf2fb6c20be90e96ad46c42e645c05230794f4764b.json": "application/schema+json", + "26884cc061cde1b1e5f6eb60d59b738c4522d9451c3ebef0f0e0ac007f17a7e9.json": "application/schema+json", "2786376fa2511102b84de8d63f3affaa1fe0f7b239fb344f4e42abd828f4d0cb.json": "application/schema+json", "27e592e90e643a7fb58045deb716678d3740be17bc60f9fdb109bb28cd9b7f95.json": "application/schema+json", "2847a56eda9c8b838d28fde619853c36851acc57b094b74ec2665150f1ace8d4.yaml": "application/yaml", "285b54526deb920eaa6db8a93b87eb25c2a6a81e90b0743aa18e082b8cea6f7a.json": "application/schema+json", "28757cb955ea96d628ff2442cc9dd7ce4f11998edada848a834ef9dfbc3c5c3e.json": "application/schema+json", "28afe03a3308b6e74caf64735ed23fd6ddb8c88e9b8fc1ad86a876386cdc63e9.json": "application/schema+json", + "2948465f69e8dd8856e245826adb47addbb0b0b3ae5a4a3eece660dfa77ba060.json": "application/schema+json", "2a31e088e66073cf94b5d3769aebbeef3552cafa59c2281405be83ccd5390435.json": "application/schema+json", + "2a6983bc79d8bf3bae405d3428189c364e643460bcce5930f60e21fde9c31865.json": "application/schema+json", + "2cbf5e3d2fd943abfa3777b63f204feac0dc0f5c02241a121aa3a135f3d420c7.json": "application/schema+json", "2cea7342c7a18c0991db2241acb7ecd61a2bc99da4828ab93002317bf4ed17fa.json": "application/schema+json", "2eeb18977105aac45ab3d5005152b25d456134621eeddf59aca612a9c4cebf6a.json": "application/schema+json", "313efc6342fcb1fdbbabdd8fd279c58032e418476825fe823c67cdcf14029396.json": "application/schema+json", @@ -63,6 +73,7 @@ "3b4c15c6da67f63aa66315649d64bd334e042c15dc2b980e3639da7ce0154922.json": "application/schema+json", "3c8a56419f2b6a011463736e94f99c868f78636325dd8d34b3b70c0c693a65f1.json": "application/schema+json", "3fa0953ce1c3effc0a35c61e5c93d484d5b948e5f64478999c6ea671e588b3d1.json": "application/schema+json", + "3fef758cd53950ea9cef953dca6c2364188eddff2978695c70fd88237d451ece.json": "application/schema+json", "42c60f19644ce2ac01a8daf33c38f575926fe7104d45c6cee07fb85d98a436cf.json": "application/schema+json", "42f6e06f2340ff8e61f68516c1c038bfafff3de700c85c014a5890cac18bdb5e.json": "application/schema+json", "43d58cc3028e7a97f91929625aeff1ec243f937e16ee455de8f3cb1caa4675b7.json": "application/schema+json", @@ -72,6 +83,8 @@ "47cbeecaaa07a52b0af259faff736b4e32e6a0c1ed674634b4cc6815cb369fd4.json": "application/schema+json", "48c416e7a409cde355bb7e7a1a1bd8eac6248e65867fd76b55b777d4b6e335d2.json": "application/schema+json", "4925c4eb0cc9e80b946306aeace68105caf73c619a7b371d6740cbe2ea1bdb57.json": "application/schema+json", + "4a4b93a4cca9568c089166b2d7f2ee13306b4abcba7289f4b5290d55ef44d644.json": "application/schema+json", + "4a62c7dd8399bd3a5991efb203a34310918bad17a95b8a74c7784e6486ae6f21.json": "application/schema+json", "4babace1053c7b8446b682ce2db17a220263e669b397a414d98ead9d47af459a.json": "application/schema+json", "4bd456164cf5fa48ed3d9cd1922d23961034c8f834f2ed8ebefccdb8c8bcce6c.json": "application/schema+json", "4e1226cffe6761f035aebde2c1f07f88a35251b537725aab532dbf4500e8ed30.json": "application/schema+json", @@ -84,6 +97,8 @@ "532f2e49816a38ac82595c32d1cff93c53bfce72edb7f84ce2012d580e883338.json": "application/schema+json", "547bbdf015691d7149599113de2d4d515111b46899e45ddc0c58eb0d15eda14f.json": "application/schema+json", "55959ae4cc86f1cd393cca382d7cdfd367ccc703c8676a350af4299b59ebb043.json": "application/schema+json", + "5660a447be61398747639c2e0ecde3b0e355c29d4ff454209d3041cd02f5d1a5.json": "application/schema+json", + "56b15b5ec2c5a799f9debd7d034cf8f7a490c76c71458720b6469c98b3a469b5.json": "application/schema+json", "581cd380fa3c33ed81d56ef4d88a514a34ee1e7665128f3b657a7f1124e182fc.json": "application/schema+json", "58f76c1433576860b28b2c344acfc51d2d57b9915aab08d782704d522f96554c.json": "application/schema+json", "58fd684bc91478e42ec0e8f92effeab533f5b89caf720b7ad1e139b8ce0c54ef.json": "application/schema+json", @@ -119,6 +134,7 @@ "777f3b0aaf8129b9beacba85c188dce0b7aa841fe459c9ee517253eb49c7dc53.json": "application/schema+json", "77ab388672f3d58275b278a94ebdddcf24828565af707f6720646cf1e09608e8.json": "application/schema+json", "77b426a808ae3a80e07d4ad50c79d2c61c0dcbe229eb6c111d994dfaad82838f.json": "application/schema+json", + "785867b4f14c78862010b53406f62a420e53c4b17d5c8b9f7f95636130b75bd4.json": "application/schema+json", "7cb7788aa97db48696aa1653f352de505298d0bcd9cd9b584d69809206c34dea.json": "application/schema+json", "7d694df0140e03e1a4c1e6a564e52d69a7d334b9e0063d8aeded24d28b83d182.json": "application/schema+json", "8032fd67f82f517cade8e55c4d3972bc5481a957b84a4cb70b3f40f82ac970d3.json": "application/schema+json", @@ -133,6 +149,8 @@ "86593410e0cf8e59d1d40825c44c12efe830d7e6386be251d2ba4eafe07b0aa2.json": "application/schema+json", "868846b864b32a31087c4c2fc8b99ef232151641a7fd848f3bca3d516f284544.json": "application/schema+json", "8711ca3efe9fbbd9e1851270802ba89e6ae1559017bc6a2a76f7bfad04c3c37c.json": "application/schema+json", + "87a1a61127de6eb20c130f17b2d804c8b209c7343e7e4275f480f37833b83fcf.json": "application/schema+json", + "89428c7c4d08555b71f3d7476a45e2439fd0d2ba4b97eae6ee18be78fcbf8e3e.yaml": "application/yaml", "8b4dc0fbd680c404011403031e5865829a934758ea6cb36b11da0f8007e756fd.json": "application/schema+json", "8ebfd8d54b92be742595c6bc1d4a71a570ae04ab80e85d0d276522f0967ab7bf.json": "application/schema+json", "8f4833f26187b81d360edb0849313806ecdc55191a2dc1bbad731023130fa873.json": "application/schema+json", @@ -156,14 +174,17 @@ "9c9303fe3974ab57ff40fb3eaa18ad43826d10e32a593530ccf4d10a5860c562.json": "application/schema+json", "9d026bf36a11bc83493f835f028ff52092e0f6c4cd42b471024ead336b6d8a9e.json": "application/schema+json", "9d0415eb366a78ceb109b26b9204f139ecdddfa114de66bd13fd98a1b7a5f62a.json": "application/schema+json", + "9d68a7c21821319603e16c3fb1a381e206a4f488a3eae95c9544180004ae2ea3.json": "application/schema+json", "9e303f8a0d24dad6b2b840f16b647278bc933cb66f1f38ae3cc55222719396cc.json": "application/schema+json", "9eff8e027f5900d3fd4a1c88b6cae2c9657fcd9e09e3e07706e6bd1a7823e0e3.json": "application/schema+json", "9f61d4960c65b84d505d00f783e17387d327f0214784cba88e2a840c4a738fc9.json": "application/schema+json", "a110454da4cb39aaa5158a0666b7f7579585423d73be8513b5136b022ac316fe.json": "application/schema+json", "a1bab27c4778502d75e2041b7d38dd0dc9cfffaa91d52625813b16cf694b9b22.json": "application/schema+json", "a1e56400da48517aa1cc72cb5707b78d7b091bd3cb2bc215d69375558c017b9d.json": "application/schema+json", + "a21e02c4ca6980e0eb4dc733b99b1fdb465aec8fa1c661ec70e86d71d4146e06.json": "application/schema+json", "a54a5d29464f6de1e0b46ea7ae91a2fd6ff563090f98f7686496ddad45344b7d.json": "application/schema+json", "a6eb9aafd148d5821028f1b0132c0cecdf9eed76cc27fb3a9888c07605d84b37.json": "application/schema+json", + "a8d908e534dffcbeee5b1e3352007a4205e0a4614c64a24fd22130f59f0ff264.json": "application/schema+json", "a94130c4276456fcb5a50d7b73c225762d86c471faed372c08b1343f44644987.json": "application/schema+json", "a9770dec360be9b6ef23c57f12b53cbf24a25b82a318f7f142ead530b65e35f7.json": "application/schema+json", "ab22f032a73aea122021286a735b78bc942831a371eefe100a124e658a03e0e5.json": "application/schema+json", @@ -176,10 +197,12 @@ "b022348727ac7a855a6d83d0eb533a1f3dbaa388060a4ecc790500f99a6f823c.json": "application/schema+json", "b12dc4d6979d728fe30df5d3a254490d404819a9730fdcd2c4d0376e4571248c.json": "application/schema+json", "b131ade304b8fa1e4afbf5ab8be445d72f8117d75cf996a00d9d20d774575ea1.json": "application/schema+json", + "b22c06678f15e4a5aa028df61819cde8d37ce2311e1249a3a8fcc18d00aa3eab.json": "application/schema+json", "b230a007063fd933d26283d7d3cd89923cdb644463c1681bb9c2ec058595dee5.json": "application/schema+json", "b23a07f4b60c15ecd085e5fa10f924aef31cbfca07dc5f8cbc3097dceb183a52.json": "application/schema+json", "b519a0321f4da6dad7e578bacc32cc02af395f959ea8bc60e06089dbc267e6f2.json": "application/schema+json", "b51c462eba370acb45ef5f20a09aead5cab3d0d98d42f55947ab7352eed77ccf.json": "application/schema+json", + "b5f7140e63c4307838e4b26286f0aad064577c7facc5e7423e1b63887d9afb95.json": "application/schema+json", "b68362a53e0abd42941a79dc6bd280538a5510c9046dc8fb53cbdd29be3d898e.json": "application/schema+json", "b6a7e7200bf014a4b31dd064aa39bcbdb60fb624ef8c305f4c3431958b47bb12.yaml": "application/yaml", "b9158ab194325cbd1a807922d07d35f4616eff823d9b1c76892e73f330443cdd.json": "application/schema+json", @@ -196,8 +219,10 @@ "c1be1e7bc8efa01de429ea5a5cd7c19da49d9766d71839602a0e81cecc447d8b.json": "application/schema+json", "c30a70ce60b1946e6eb3cd0ebf1267841c97be81115f61e0bbf713262bfd59a3.json": "application/schema+json", "c336506f4dcd7e266155e8cd1ff9710766bc240f395e27b0480b2e193e74e2ee.jsonld": "application/ld+json", + "c347ed37907da3fbef25720354b8042c3ce8477437c4a38b81ce2aa718c0b96c.json": "application/schema+json", "c3e88b1a46da7f8643c0af6b35a3b33eafa75ad74277dc7dccde135746b0f110.json": "application/schema+json", "c5c5461590e22ba0896a312e9235ad707c066b803c14759f34d402c186823797.json": "application/schema+json", + "c731a74bea9e4d649dd2e0d074e20a10e617c6ef844ec6f8223fae78b3f0b28d.yaml": "application/yaml", "c7dbd61a710dd189637f783e9720b749f98e2d307af549849ab6e85b790a4ab9.json": "application/schema+json", "c85881c80936e4cd405ccde25dabdab4a266dc0c6ad8ad851012e200ca18dfd8.json": "application/schema+json", "c8685157d8e2982b00657a2a3b2fe729cf54792d76134cf22aa1be1cc7abf4a8.md": "text/markdown", @@ -205,10 +230,12 @@ "c8e9096a02c4a93ef4a8e7884eb9d5f05b9d544c3549d060d313a32fdedc1b1c.jsonld": "application/ld+json", "c95bb112c47134d9ef0bfad1d03be54623be2a6f7ec1f9f2145f98b8622921f0.json": "application/schema+json", "ca14df9aafa49fd2018a12869e54f4058e29de07f01c0cbc0dd13f069649bcc9.json": "application/schema+json", + "cab7ff0a619109662b006d87d211743af4a9cc64977c0f01b64889e691d24a84.json": "application/schema+json", "caed080f4eef3c39d8728cb56722d8d7f5cad6342d46750a0046eb2c5defc186.json": "application/schema+json", "cbc34fc5f6fc9cba3fb714a41595bf999fb0d73a45b6bf610f772cd4256deecc.json": "application/schema+json", "cbe92a3329351dbdf53f0a63d5f4f9dfc7b8bbcb0947ddf30f1558943d34e188.json": "application/schema+json", "cd8d9a96ed1067f14b6f76f50281dea19461142b81eb8c9508b6537447d93a46.json": "application/schema+json", + "cdc74748bb3e149abc012ed32d5f3518867e70465a51a88628df99903bd9df5f.json": "application/schema+json", "ce8e8f18981bcce5dd48607b98424f32a27aab9ca1cc6e586adc545603b7554a.json": "application/schema+json", "d0263a9335d657c23078e5190210f580db884a0608bd6591daebfcb2447a7bbd.json": "application/schema+json", "d1f039cb33f28d2ba2336a9da11ca9b157f55dd58146959d4b973af9e0299b96.json": "application/schema+json", @@ -220,8 +247,10 @@ "d2d840eaca8141caae26af9b6dca3afd9c396622e7d9365024cd3b03dd9c2036.json": "application/schema+json", "d341927b2bb9a139cebe16a2edff9acaf6b069c9863b6f6f12108be6e4cd0731.json": "application/schema+json", "d4c5894f466ce1683e7d0b3db2b86413fa71cb7cea81843d12dc1ccbafd5cff8.json": "application/schema+json", + "d54c2e60d478680238197bd57d5d5baf83975cf6f30a359d0d331d31f333495f.yaml": "application/yaml", "d59335a31143f20db204f2cba708a33af0840760739bb6d70e3dc8048a499118.json": "application/schema+json", "d65b89c37268c96cc059b18511a8397063047e591a0d1bacfbcc19b484465e7f.json": "application/schema+json", + "d68323a93d34904b5bc49870512e03baf519fd86b2a88078df69e68ee417242f.json": "application/schema+json", "d7a3d7b6dc9c1904fc067f0779c941ff247b26feb3a62f8d391b04f463c5a2ca.json": "application/schema+json", "d814589772d9b5956b67c54aaa0e1f43f2e7869fbd75c02fb8fe5dee37b5710f.json": "application/schema+json", "da3863063106f8c17bd76f8e35631656b924c55c97c60917f23fb086cc8bcb33.json": "application/schema+json", @@ -252,6 +281,7 @@ "ee2ddfb5ab344c5c7ac8b16f17503a2ddc02810dd3c15e170b0c240032d4c4e6.json": "application/schema+json", "ef82e91c0f0c3366bd62967be8453e90920341c246a6d05f56e4b4b4b8eb85b0.json": "application/schema+json", "f165e62044df2129b5cc533d3199cf81ae23d263617f39437ee37be87d3b37fe.md": "text/markdown", + "f1a66ef70359e4078ee3ae3426d378d65fbb62ab2f64545081d3d4973a8b28ad.json": "application/schema+json", "f2b906327cfcbc04496c0b161a82464440c8600cf674ee3c21c0c16f64cb862f.json": "application/schema+json", "f511f546980251198954678790b986a5aa2cb4f037bd463f20531b8c9736d28b.json": "application/schema+json", "f52ad0028a6479717062d38de052df5c1d8e1b0c8b63c478980a3897cc2675cd.json": "application/schema+json", @@ -259,11 +289,14 @@ "f74838de0bcf456337f94c2040594a51c15e7a74f6be61abc37ba13dba08d813.json": "application/schema+json", "f7766f4483a2a2593a93e17b7b80eb55a8ed4bff0cfc8d7916db1ac6cd246581.json": "application/schema+json", "f8e367082254b713f8347ccb9055d7ac527ddef43b06b33239f8d81d0ed11012.json": "application/schema+json", + "f91af7d0c873134675c27063eafcea7500210443225dd0f9e8309e1f6680f13d.json": "application/schema+json", "f9724862a5922f80ae7b5ea9b87082697274cf79df29c950b2f2221c941f9a9e.json": "application/schema+json", + "fb01195c02d6b94784e17ea07f6de45f56370df8af933a2bb2142a3fd18c9146.json": "application/schema+json", "fbdcd49bfc04974e387dad5fbdbc450b7e12dca8e7b8168c7f227fb352bffb70.json": "application/schema+json", "fc7898b8be0e7ac26fd46a4624d37854f4df52eb4a372dac2e6cbc0575b3aed3.json": "application/schema+json", "fc95f405cbef9537864e6d2d9b54ebe3e3b893fb35ecb7e1f47a5081a94f28ff.json": "application/schema+json", "fd4ef085ef94087f5fa6d846a284957345d5463df44372c5667ea1a8cf643d0d.yaml": "application/yaml", - "fe1d27a6cfd66a26baca59e7dd3eea9dcb17e8ecff0469479894f6c2d1dc2eda.json": "application/schema+json" + "fe1d27a6cfd66a26baca59e7dd3eea9dcb17e8ecff0469479894f6c2d1dc2eda.json": "application/schema+json", + "ff888718d437664e4ca5095c5e58016539c58e535f512ea873a210929fd5df80.json": "application/schema+json" } } diff --git a/src/artifacts/sha256/05ca00c30b9126084ea5d52e17db5002f7afb46e9aceac121fe42489afc5caa1.json b/src/artifacts/sha256/05ca00c30b9126084ea5d52e17db5002f7afb46e9aceac121fe42489afc5caa1.json new file mode 100644 index 000000000..d4bd65dbf --- /dev/null +++ b/src/artifacts/sha256/05ca00c30b9126084ea5d52e17db5002f7afb46e9aceac121fe42489afc5caa1.json @@ -0,0 +1,83 @@ +{ + "$defs": { + "ExternalId": { + "description": "An identifier another system issues, written exactly as its issuer gives it.", + "maxLength": 512, + "minLength": 1, + "pattern": "^[^\\u0000-\\u001F\\u007F-\\u009F]+$", + "type": "string" + }, + "SampleExpectation": { + "description": "What one sample is meant to give.", + "oneOf": [ + { + "additionalProperties": false, + "description": "The mapping accepts the sample.", + "properties": { + "type": { + "const": "accepted", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "The mapping refuses the sample. With a `target`, a refusal must name\nthat target field, in the mapping's target syntax; without one, any\nrefusal of the mapping will do.", + "properties": { + "target": { + "description": "An assignment's `target`, written in the mapping's target\nsyntax (dotted names or quoted keys).", + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "type": { + "const": "refused", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + } + ] + } + }, + "$id": "https://id.registrystack.org/schemas/adapter/preview-expectations/preview-expectations.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "description": "The authored preview expectations.", + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/adapter/preview-expectations/v1alpha1", + "description": "The format envelope version.", + "type": "string" + }, + "kind": { + "const": "AdapterPreviewExpectations", + "description": "The format kind: `AdapterPreviewExpectations`.", + "type": "string" + }, + "samples": { + "additionalProperties": { + "$ref": "#/$defs/SampleExpectation" + }, + "description": "The expected result of each sample, keyed by the sample's file name\nwithout its extension.", + "propertyNames": { + "$ref": "#/$defs/ExternalId" + }, + "type": "object" + } + }, + "required": [ + "apiVersion", + "kind", + "samples" + ], + "title": "Registry Adapter preview expectations", + "type": "object" +} diff --git a/src/artifacts/sha256/0f8f2332533c8577677e7a53f62a0ac400c08233f13ced03e168331d8058c2c8.json b/src/artifacts/sha256/0f8f2332533c8577677e7a53f62a0ac400c08233f13ced03e168331d8058c2c8.json new file mode 100644 index 000000000..69519be93 --- /dev/null +++ b/src/artifacts/sha256/0f8f2332533c8577677e7a53f62a0ac400c08233f13ced03e168331d8058c2c8.json @@ -0,0 +1,470 @@ +{ + "$defs": { + "CoequalCase": { + "additionalProperties": false, + "properties": { + "audience": { + "type": "string" + }, + "companionBundle": { + "type": "string" + }, + "derivationRuns": { + "type": "boolean" + }, + "derivationSelectorInputs": { + "x-registry-foreign": "json" + }, + "expected": { + "type": "string" + }, + "expectedFacts": { + "description": "Exact final facts from the selected pack route, before derivation.", + "x-registry-foreign": "json" + }, + "expectedLookup": { + "type": "string" + }, + "expectedPublicProblem": { + "type": "string" + }, + "expectedSubjectRoles": { + "items": { + "type": "string" + }, + "type": "array" + }, + "expectedValue": { + "x-registry-foreign": "json" + }, + "expectedValues": { + "x-registry-foreign": "json" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "injectedDerivation": { + "x-registry-foreign": "json" + }, + "legalLocalDate": { + "type": "string" + }, + "observedAt": { + "type": "string" + }, + "purpose": { + "type": "string" + }, + "selectorOverrides": { + "x-registry-foreign": "json" + }, + "selectors": { + "x-registry-foreign": "json" + }, + "signedSuccess": { + "type": "boolean" + }, + "source": { + "x-registry-foreign": "json" + }, + "sourceFailure": { + "type": "string" + }, + "sources": { + "x-registry-foreign": "json" + }, + "subjects": { + "x-registry-foreign": "json" + }, + "verifiedTokenClaims": { + "x-registry-foreign": "json" + } + }, + "required": [ + "id" + ], + "type": "object" + }, + "CoequalCommon": { + "additionalProperties": false, + "properties": { + "audience": { + "type": "string" + }, + "derivationSelectorInputs": { + "x-registry-foreign": "json" + }, + "expectedRequestParts": { + "x-registry-foreign": "json" + }, + "expectedTransport": { + "x-registry-foreign": "json" + }, + "legalLocalDate": { + "type": "string" + }, + "observedAt": { + "type": "string" + }, + "purpose": { + "type": "string" + }, + "selector": { + "x-registry-foreign": "json" + }, + "selectors": { + "x-registry-foreign": "json" + }, + "subjects": { + "x-registry-foreign": "json" + }, + "verifiedTokenClaims": { + "x-registry-foreign": "json" + } + }, + "type": "object" + }, + "CoequalFixture": { + "additionalProperties": false, + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/evidence/fixture/v1alpha1" + }, + "cases": { + "items": { + "$ref": "#/$defs/CoequalCase" + }, + "maxItems": 256, + "minItems": 1, + "type": "array" + }, + "coequalAcceptanceDefinition": { + "const": true, + "type": "boolean" + }, + "common": { + "$ref": "#/$defs/CoequalCommon" + }, + "kind": { + "const": "EvidenceFixture" + }, + "privacyExpectation": { + "$ref": "#/$defs/CoequalPrivacy" + }, + "providerContract": { + "x-registry-foreign": "json" + }, + "syntheticOnly": { + "const": true, + "type": "boolean" + } + }, + "required": [ + "syntheticOnly", + "coequalAcceptanceDefinition", + "cases", + "privacyExpectation", + "apiVersion", + "kind" + ], + "type": "object" + }, + "CoequalPrivacy": { + "additionalProperties": false, + "properties": { + "diagnosticsExclude": { + "items": { + "type": "string" + }, + "type": "array" + }, + "evidenceContains": { + "items": { + "type": "string" + }, + "type": "array" + }, + "evidenceExcludes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "memberInputs": { + "type": "string" + }, + "minimizationClaim": { + "type": "string" + }, + "subjectBindings": { + "type": "string" + } + }, + "type": "object" + }, + "LocalId": { + "description": "A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.", + "pattern": "^[a-z][a-z0-9_-]{0,63}$", + "type": "string" + }, + "ReferenceCase": { + "additionalProperties": false, + "properties": { + "acquisition": { + "description": "Exact recorded sends and responses, checked by the pack replay host.", + "x-registry-foreign": "json" + }, + "audience": { + "type": "string" + }, + "bundleMutation": { + "type": "string" + }, + "declaredUnresolved": { + "const": true, + "type": "boolean" + }, + "derivationMutation": { + "type": "string" + }, + "derivationParameterMutation": { + "x-registry-foreign": "json" + }, + "expected": { + "$ref": "#/$defs/ReferenceExpected" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "observedAt": { + "type": "string" + }, + "purpose": { + "type": "string" + }, + "requestMutation": { + "type": "string" + }, + "response": { + "x-registry-foreign": "json" + }, + "responses": { + "x-registry-foreign": "json" + }, + "selectorOverrides": { + "x-registry-foreign": "json" + }, + "selectors": { + "x-registry-foreign": "json" + }, + "sourceFailure": { + "type": "string" + }, + "statementMutation": { + "type": "string" + } + }, + "required": [ + "id" + ], + "type": "object" + }, + "ReferenceCommon": { + "additionalProperties": false, + "properties": { + "audience": { + "type": "string" + }, + "derivationSelectorInputs": { + "x-registry-foreign": "json" + }, + "expectedFetchRequestParts": { + "x-registry-foreign": "json" + }, + "expectedFetchTransport": { + "x-registry-foreign": "json" + }, + "expectedRequestParts": { + "x-registry-foreign": "json" + }, + "expectedTransport": { + "x-registry-foreign": "json" + }, + "extract": { + "type": "string" + }, + "observedAt": { + "type": "string" + }, + "purpose": { + "type": "string" + }, + "selectors": { + "x-registry-foreign": "json" + }, + "verifiedTokenClaims": { + "x-registry-foreign": "json" + } + }, + "type": "object" + }, + "ReferenceExpected": { + "additionalProperties": false, + "properties": { + "bundle": { + "type": "string" + }, + "derivationRuns": { + "type": "boolean" + }, + "entityReferenceCount": { + "format": "uint64", + "maximum": 64, + "minimum": 0, + "type": "integer" + }, + "error": { + "type": "string" + }, + "expectedTransport": { + "x-registry-foreign": "json" + }, + "facts": { + "x-registry-foreign": "json" + }, + "lookup": { + "type": "string" + }, + "outputGate": { + "type": "string" + }, + "publicProblem": { + "type": "string" + }, + "rawReferencesDisclosed": { + "type": "boolean" + }, + "rejectedBefore": { + "type": "string" + }, + "signed": { + "type": "boolean" + }, + "sourceRequestCount": { + "description": "Expected data sends exclude OAuth work and cannot exceed the offline budget.", + "format": "uint64", + "maximum": 5, + "minimum": 0, + "type": "integer" + }, + "value": { + "x-registry-foreign": "json" + }, + "values": { + "x-registry-foreign": "json" + } + }, + "type": "object" + }, + "ReferenceFixture": { + "additionalProperties": false, + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/evidence/fixture/v1alpha1" + }, + "cases": { + "items": { + "$ref": "#/$defs/ReferenceCase" + }, + "maxItems": 256, + "minItems": 1, + "type": "array" + }, + "common": { + "$ref": "#/$defs/ReferenceCommon" + }, + "kind": { + "const": "EvidenceFixture" + }, + "privacyExpectation": { + "$ref": "#/$defs/ReferencePrivacy" + }, + "syntheticOnly": { + "const": true, + "type": "boolean" + } + }, + "required": [ + "syntheticOnly", + "cases", + "common", + "privacyExpectation", + "apiVersion", + "kind" + ], + "type": "object" + }, + "ReferencePrivacy": { + "additionalProperties": false, + "properties": { + "diagnosticsExclude": { + "items": { + "type": "string" + }, + "type": "array" + }, + "evidenceContains": { + "items": { + "type": "string" + }, + "type": "array" + }, + "evidenceExcludes": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "$id": "https://id.registrystack.org/schemas/evidence/fixture/fixture.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "else": { + "$ref": "#/$defs/ReferenceFixture" + }, + "if": { + "properties": { + "coequalAcceptanceDefinition": { + "const": true + } + }, + "required": [ + "coequalAcceptanceDefinition" + ] + }, + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/evidence/fixture/v1alpha1" + }, + "cases": { + "maxItems": 256, + "minItems": 1, + "type": "array" + }, + "kind": { + "const": "EvidenceFixture" + } + }, + "required": [ + "apiVersion", + "kind" + ], + "then": { + "$ref": "#/$defs/CoequalFixture" + }, + "title": "Evidence fixture set", + "type": "object", + "unevaluatedProperties": false +} diff --git a/src/artifacts/sha256/1a713af021f69a27c5c7f58b22464cd227972173f9935b2fc3a0a48eda51e6f5.json b/src/artifacts/sha256/1a713af021f69a27c5c7f58b22464cd227972173f9935b2fc3a0a48eda51e6f5.json new file mode 100644 index 000000000..47724b041 --- /dev/null +++ b/src/artifacts/sha256/1a713af021f69a27c5c7f58b22464cd227972173f9935b2fc3a0a48eda51e6f5.json @@ -0,0 +1,209 @@ +{ + "$defs": { + "Assignment": { + "additionalProperties": false, + "description": "One target property and where its value comes from: exactly one of\n`from` and `constant`.", + "properties": { + "constant": { + "$ref": "#/$defs/MappingConstant", + "description": "A constant value instead of a selector." + }, + "convert": { + "$ref": "#/$defs/Conversion", + "description": "The conversion applied to a read value." + }, + "from": { + "description": "The selector read from the source root: dotted names or \"quoted\"\nkeys, each optionally filtered with `[key = \"value\"]`. A key that\nholds a dot is quoted, for example `'\"household.household_size\"'`.\nA quoted key or value takes any character except a control\ncharacter, a text-direction control or a line or paragraph separator;\n`\\\"` and `\\\\` are its only escapes. Keys compare byte for\nbyte, with no Unicode normalisation.", + "type": "string" + }, + "target": { + "description": "The dotted path of the target property.", + "type": "string" + }, + "whenMissing": { + "$ref": "#/$defs/WhenMissing", + "description": "Whether an absent value fails or leaves the property out." + } + }, + "required": [ + "target" + ], + "type": "object" + }, + "Conversion": { + "description": "The value conversion applied after a value is read.", + "oneOf": [ + { + "const": "none", + "description": "The value is copied as read.", + "type": "string" + }, + { + "const": "integer", + "description": "An integer, or a string of digits, becomes an integer.", + "type": "string" + }, + { + "const": "text", + "description": "A string, or an integer, becomes a string.", + "type": "string" + }, + { + "const": "date", + "description": "A real calendar date written `YYYY-MM-DD` passes unchanged.", + "type": "string" + } + ] + }, + "IngestionMode": { + "description": "How an ingestion mapping hands its item to the destination.", + "oneOf": [ + { + "const": "proposal", + "description": "A Proposal Action start input plus an empty submit body.", + "type": "string" + }, + { + "const": "immediate", + "description": "The bare item.", + "type": "string" + } + ] + }, + "LocalId": { + "description": "A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.", + "pattern": "^[a-z][a-z0-9_-]{0,63}$", + "type": "string" + }, + "MappingConstant": { + "anyOf": [ + { + "type": "boolean" + }, + { + "format": "int64", + "maximum": 9223372036854775807, + "minimum": -9223372036854775808, + "type": "integer" + }, + { + "type": "string" + } + ], + "description": "A closed scalar constant. It is read by node kind (boolean, integer,\ntext) through a hand-written visitor, never a derived untagged union." + }, + "MappingHeader": { + "additionalProperties": false, + "description": "The mapping's identity, target, and generated-script location. Every path\nresolves against the model file's directory.", + "properties": { + "entrypoint": { + "description": "The generated entrypoint's Rhai identifier; it must not start with\n`mapping_`.", + "type": "string" + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The mapping identifier." + }, + "ingestionMode": { + "$ref": "#/$defs/IngestionMode", + "description": "Required exactly when `target` is `ingestion`." + }, + "script": { + "description": "A clean relative path to the generated Rhai script.", + "type": "string" + }, + "target": { + "$ref": "#/$defs/MappingTarget", + "description": "The kind of value the generated script produces." + }, + "targetSchema": { + "description": "A clean relative path to the target JSON Schema.", + "type": "string" + } + }, + "required": [ + "id", + "target", + "targetSchema", + "script", + "entrypoint" + ], + "type": "object" + }, + "MappingTarget": { + "description": "What a mapping produces, which fixes the entrypoint signature.", + "oneOf": [ + { + "const": "consultation", + "description": "A Consultation public view: `fn (source)`.", + "type": "string" + }, + { + "const": "evidence", + "description": "An Evidence projection: `fn (source)`.", + "type": "string" + }, + { + "const": "ingestion", + "description": "A governed-ingestion item: `fn _input(source)` plus the\n`fn (exchange)` wrapper.", + "type": "string" + }, + { + "const": "source-request", + "description": "An upstream request body: `fn (exchange)`.", + "type": "string" + } + ] + }, + "WhenMissing": { + "description": "What happens when the source value is absent.", + "oneOf": [ + { + "const": "fail", + "description": "The script refuses with `mapping.missing`.", + "type": "string" + }, + { + "const": "omit", + "description": "The target property is left out; only for non-required targets.", + "type": "string" + } + ] + } + }, + "$id": "https://id.registrystack.org/schemas/adapter/mapping/mapping.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "description": "The authored mapping model.", + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/adapter/mapping/v1alpha1", + "description": "The format envelope version.", + "type": "string" + }, + "assignments": { + "description": "The ordered field assignments.", + "items": { + "$ref": "#/$defs/Assignment" + }, + "type": "array" + }, + "kind": { + "const": "AdapterMapping", + "description": "The format kind: `AdapterMapping`.", + "type": "string" + }, + "mapping": { + "$ref": "#/$defs/MappingHeader", + "description": "What the mapping targets and where its generated script lives." + } + }, + "required": [ + "apiVersion", + "kind", + "mapping", + "assignments" + ], + "title": "Registry Adapter mapping model", + "type": "object" +} diff --git a/src/artifacts/sha256/20b5224ee58a88324552ba4eef77132273ac2b6609e178db001dc57dd1d63077.json b/src/artifacts/sha256/20b5224ee58a88324552ba4eef77132273ac2b6609e178db001dc57dd1d63077.json new file mode 100644 index 000000000..bd24d1e2f --- /dev/null +++ b/src/artifacts/sha256/20b5224ee58a88324552ba4eef77132273ac2b6609e178db001dc57dd1d63077.json @@ -0,0 +1,344 @@ +{ + "$defs": { + "BrowserApp": { + "additionalProperties": false, + "description": "A browser application: an authorization-code client with PKCE.", + "properties": { + "clientSecretRef": { + "$ref": "#/$defs/SecretReference", + "allOf": [ + { + "pattern": "^secret:env/[A-Z][A-Z0-9_]{0,127}$" + } + ] + }, + "grants": { + "items": { + "$ref": "#/$defs/Grant" + }, + "maxItems": 16, + "minItems": 1, + "type": "array" + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The OAuth client id." + }, + "logoUrl": { + "anyOf": [ + { + "$ref": "#/$defs/Url" + }, + { + "type": "null" + } + ], + "description": "A public logo URL, shown on the sign-in page; omitted shows none." + }, + "origin": { + "type": "string" + }, + "product": { + "description": "The `product` whose audience the application's tokens carry.", + "type": "string" + }, + "redirectUris": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "tokenAttributes": { + "description": "Claims the application's tokens carry from the signed-in user.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "userTypes": { + "description": "Extension user types (ids of `userTypes`) that may sign in, beside\nthe generated `RegistryPerson`.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "id", + "clientSecretRef", + "origin", + "redirectUris", + "product", + "tokenAttributes", + "grants" + ], + "type": "object" + }, + "ClaimValue": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "A static claim value." + }, + "Client": { + "additionalProperties": false, + "description": "A machine client: authenticates with `private_key_jwt` against its own\npublic key set.", + "properties": { + "claims": { + "additionalProperties": { + "$ref": "#/$defs/ClaimValue" + }, + "description": "Static claims the issuer puts in the client's tokens; each name and\ntype must be one a product declares.", + "propertyNames": { + "$ref": "#/$defs/ExternalId", + "allOf": [ + { + "pattern": "^[A-Za-z0-9_]{1,128}$" + } + ] + }, + "type": "object" + }, + "grants": { + "items": { + "$ref": "#/$defs/Grant" + }, + "maxItems": 16, + "minItems": 1, + "type": "array" + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The OAuth client id." + }, + "publicJwksFile": { + "description": "A JWKS file holding public keys only, relative to this file.", + "type": "string" + } + }, + "required": [ + "id", + "publicJwksFile", + "grants" + ], + "type": "object" + }, + "ExternalId": { + "description": "An identifier another system issues, written exactly as its issuer gives it.", + "maxLength": 512, + "minLength": 1, + "pattern": "^[^\\u0000-\\u001F\\u007F-\\u009F]+$", + "type": "string" + }, + "Grant": { + "additionalProperties": false, + "description": "Access profiles of one product, granted to one principal.", + "properties": { + "accessProfiles": { + "description": "Ids of that product's access profiles.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "product": { + "description": "The `product` of a facts document.", + "type": "string" + } + }, + "required": [ + "product", + "accessProfiles" + ], + "type": "object" + }, + "LocalId": { + "description": "A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.", + "pattern": "^[a-z][a-z0-9_-]{0,63}$", + "type": "string" + }, + "OrganizationUnit": { + "additionalProperties": false, + "description": "The organization unit every generated resource belongs to. The handle\n`default` builds on the unit the bootstrap bundle creates.", + "properties": { + "description": { + "type": [ + "string", + "null" + ] + }, + "handle": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "required": [ + "handle", + "name" + ], + "type": "object" + }, + "SecretReference": { + "description": "An exact secret reference: secret:file/name, resolved under secretProviders.file.root, or secret:env/NAME, resolved only when secretProviders.environment is declared.", + "pattern": "^(?:secret:env/[A-Z][A-Z0-9_]{0,127}|secret:file/[a-z][a-z0-9._-]{0,127})$", + "type": "string" + }, + "Url": { + "description": "An absolute http or https URL with a host preserved as written, no user information, and no backslash, whitespace or control character. DNS case and equivalent IPv6 literals are permitted.", + "format": "uri", + "maxLength": 2048, + "pattern": "^[Hh][Tt][Tt][Pp][Ss]?://[^/?#@\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]+([/?#][^\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]*)?$", + "type": "string" + }, + "User": { + "additionalProperties": false, + "description": "A user, with the claims their tokens carry stated explicitly.", + "properties": { + "claims": { + "additionalProperties": { + "type": "string" + }, + "propertyNames": { + "$ref": "#/$defs/ExternalId", + "allOf": [ + { + "pattern": "^[A-Za-z0-9_]{1,128}$" + } + ] + }, + "type": "object" + }, + "email": { + "type": "string" + }, + "grants": { + "items": { + "$ref": "#/$defs/Grant" + }, + "maxItems": 16, + "minItems": 1, + "type": "array" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "passwordRef": { + "$ref": "#/$defs/SecretReference", + "allOf": [ + { + "pattern": "^secret:env/[A-Z][A-Z0-9_]{0,127}$" + } + ] + }, + "userType": { + "description": "An extension user type (id of `userTypes`); omitted is `RegistryPerson`.", + "type": [ + "string", + "null" + ] + }, + "username": { + "type": "string" + } + }, + "required": [ + "id", + "username", + "email", + "passwordRef", + "grants" + ], + "type": "object" + }, + "UserType": { + "additionalProperties": false, + "description": "An extension user type: an additional ThunderID user schema.", + "properties": { + "attributes": { + "description": "Optional string attributes beyond username, email and password.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "name": { + "description": "The ThunderID type name users of this type carry.", + "type": "string" + } + }, + "required": [ + "id", + "name" + ], + "type": "object" + } + }, + "$id": "https://id.registrystack.org/schemas/platform/identity-deployment/identity-deployment.v1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/platform/identity-deployment/v1", + "type": "string" + }, + "browserApps": { + "items": { + "$ref": "#/$defs/BrowserApp" + }, + "maxItems": 256, + "type": "array" + }, + "clients": { + "items": { + "$ref": "#/$defs/Client" + }, + "maxItems": 256, + "type": "array" + }, + "kind": { + "const": "PlatformIdentityDeployment", + "type": "string" + }, + "organizationUnit": { + "$ref": "#/$defs/OrganizationUnit" + }, + "userTypes": { + "items": { + "$ref": "#/$defs/UserType" + }, + "type": "array" + }, + "users": { + "items": { + "$ref": "#/$defs/User" + }, + "maxItems": 256, + "type": "array" + } + }, + "required": [ + "apiVersion", + "kind", + "organizationUnit" + ], + "title": "Registry Stack identity deployment", + "type": "object" +} diff --git a/src/artifacts/sha256/225b0d03402f422442432fd5195ccf3483ef79cf744d883bbfb9e96ba89e6465.json b/src/artifacts/sha256/225b0d03402f422442432fd5195ccf3483ef79cf744d883bbfb9e96ba89e6465.json new file mode 100644 index 000000000..feb429121 --- /dev/null +++ b/src/artifacts/sha256/225b0d03402f422442432fd5195ccf3483ef79cf744d883bbfb9e96ba89e6465.json @@ -0,0 +1,859 @@ +{ + "$defs": { + "AccessTokenAlgorithm": { + "enum": [ + "EdDSA", + "ES256", + "ES384", + "RS256", + "RS384" + ], + "type": "string" + }, + "ApplicantTokensDocument": { + "additionalProperties": false, + "description": "The issuer of applicant tokens.", + "properties": { + "algorithms": { + "default": [ + "ES256" + ], + "description": "The signature algorithms a token may use; one family only.", + "items": { + "$ref": "#/$defs/AccessTokenAlgorithm" + }, + "maxItems": 5, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "allowInsecureHttp": { + "default": false, + "description": "Permit plain HTTP beyond loopback to the configured issuer and to a\nJWKS URI declared in configuration. TLS remains required unless the\noperator explicitly accepts this transport risk.", + "type": "boolean" + }, + "audience": { + "description": "The audience every accepted access token must carry in `aud`.", + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "issuer": { + "$ref": "#/$defs/Url", + "description": "Exact issuer accepted in access-token `iss` claims, an absolute\n`https` URL, or a plain `http` URL when `allowInsecureHttp` is set." + }, + "jwksSource": { + "$ref": "#/$defs/JwksSource", + "default": { + "type": "discovery" + }, + "description": "Where the issuer's signing keys come from. Absent reads the issuer's\nOpenID Connect discovery document." + }, + "maximumTokenLifetimeSeconds": { + "default": 900, + "description": "The longest lifetime a token may carry, in seconds.", + "format": "uint64", + "maximum": 3600, + "minimum": 60, + "type": "integer" + }, + "requiredScope": { + "$ref": "#/$defs/ExternalId", + "description": "The scope every token must carry to create a session. The creating\nprincipal is the token's issuer, subject, and client." + } + }, + "required": [ + "issuer", + "audience", + "requiredScope" + ], + "type": "object" + }, + "AuditDestinationKind": { + "description": "The configured audit destination kind, as written in product configuration.", + "oneOf": [ + { + "const": "file", + "description": "Durable, rotated JSON Lines file.", + "type": "string" + }, + { + "const": "stdout", + "description": "One JSON line per entry on standard output, flushed per entry.", + "type": "string" + } + ] + }, + "AuditDocument": { + "additionalProperties": false, + "description": "The process-local audit destination and keyed-pseudonym secret.", + "properties": { + "destination": { + "$ref": "#/$defs/AuditDestinationKind", + "default": "file" + }, + "hashKeyRef": { + "$ref": "#/$defs/SecretReference", + "description": "Secret reference to the audit hash key." + }, + "path": { + "pattern": "^/", + "type": "string" + }, + "retentionDays": { + "format": "uint32", + "maximum": 36500, + "minimum": 1, + "type": "integer" + }, + "rotateBytes": { + "format": "uint64", + "maximum": 4294967295, + "minimum": 1048576, + "type": "integer" + } + }, + "required": [ + "hashKeyRef" + ], + "type": "object" + }, + "ClaimQueryDocument": { + "additionalProperties": false, + "description": "One claim a credential query asks for.", + "properties": { + "path": { + "description": "The claims path: object member names from the credential root, 1 to 8.\nA name may repeat along a path (`address`, `address`), so this is an\nordered list, not a set.", + "items": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "maxItems": 8, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "path" + ], + "type": "object" + }, + "ClientIdentifierDocument": { + "description": "One client identifier. The `type` member names the choice.", + "oneOf": [ + { + "additionalProperties": false, + "description": "`x509_san_dns`: the leaf certificate's DNS subject alternative name is\nthe public host. Requests are signed with the certificate's key (ES256).", + "properties": { + "certificateChainRef": { + "$ref": "#/$defs/SecretReference", + "description": "The PEM certificate chain, leaf first, as a secret reference." + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The identifier policies name in `clientIdentifier`." + }, + "signingKeyRef": { + "$ref": "#/$defs/SecretReference", + "description": "The private JWK that signs request objects, as a secret reference.\nIt must be the leaf certificate's key." + }, + "type": { + "const": "x509-san-dns", + "type": "string" + } + }, + "required": [ + "type", + "id", + "certificateChainRef", + "signingKeyRef" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "`x509_hash`: the client identifier is the SHA-256 hash of the leaf\ncertificate. Requests are signed with the certificate's key (ES256).", + "properties": { + "certificateChainRef": { + "$ref": "#/$defs/SecretReference", + "description": "The PEM certificate chain, leaf first, as a secret reference." + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The identifier policies name in `clientIdentifier`." + }, + "signingKeyRef": { + "$ref": "#/$defs/SecretReference", + "description": "The private JWK that signs request objects, as a secret reference.\nIt must be the leaf certificate's key." + }, + "type": { + "const": "x509-hash", + "type": "string" + } + }, + "required": [ + "type", + "id", + "certificateChainRef", + "signingKeyRef" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "`decentralized_identifier` with a `did:web` DID. The service serves the\nDID document at `/.well-known/did.json`. Requests are signed with an\nEd25519 key (EdDSA).", + "properties": { + "did": { + "$ref": "#/$defs/ExternalId", + "description": "`did:web:` and the host of `publicBaseUrl`, with no port and no\npath." + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The identifier policies name in `clientIdentifier`." + }, + "signingKeyRef": { + "$ref": "#/$defs/SecretReference", + "description": "The private Ed25519 JWK (`kty` OKP, `alg` EdDSA) that signs request\nobjects, as a secret reference." + }, + "type": { + "const": "decentralized-identifier", + "type": "string" + } + }, + "required": [ + "type", + "id", + "did", + "signingKeyRef" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "`pre-registered`: the client identifier is the bare `clientId` a wallet\noperator registers, with this service's `/v1/jwks` as the key set.\nRequests are signed with an Ed25519 key (EdDSA).", + "properties": { + "clientId": { + "$ref": "#/$defs/ExternalId", + "description": "The client identifier as registered with the wallet operator. It\nholds no `:`, which is what marks it as pre-registered." + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The identifier policies name in `clientIdentifier`." + }, + "signingKeyRef": { + "$ref": "#/$defs/SecretReference", + "description": "The private Ed25519 JWK (`kty` OKP, `alg` EdDSA) that signs request\nobjects, as a secret reference." + }, + "type": { + "const": "pre-registered", + "type": "string" + } + }, + "required": [ + "type", + "id", + "clientId", + "signingKeyRef" + ], + "type": "object" + } + ] + }, + "CredentialFormat": { + "description": "The only credential format the service requests.", + "enum": [ + "dc+sd-jwt" + ], + "type": "string" + }, + "CredentialQueryDocument": { + "additionalProperties": false, + "description": "One DCQL credential query.", + "properties": { + "claims": { + "description": "The claims asked for, 1 to 64. Ask only for what the policy needs.\nAbsent, the query requests no selectively disclosable claim and the\nwallet presents the credential with none (OpenID4VP 1.0 section 6.4.1);\nan empty list is refused.", + "items": { + "$ref": "#/$defs/ClaimQueryDocument" + }, + "maxItems": 64, + "minItems": 1, + "type": "array" + }, + "format": { + "$ref": "#/$defs/CredentialFormat", + "description": "The credential format, `dc+sd-jwt`." + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The query identifier the wallet keys its `vp_token` by." + }, + "vctValues": { + "description": "The credential types (`vct`) the wallet may present for this query, 1\nto 16.", + "items": { + "$ref": "#/$defs/ExternalId" + }, + "maxItems": 16, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "id", + "format", + "vctValues" + ], + "type": "object" + }, + "EnvironmentSecretProviderConfig": { + "additionalProperties": false, + "description": "The environment secret provider. It takes no settings.", + "type": "object" + }, + "EvidenceCredentialsDocument": { + "additionalProperties": false, + "description": "The issuer of the Evidence service credential.", + "properties": { + "algorithms": { + "default": [ + "ES256" + ], + "description": "The signature algorithms a token may use; one family only.", + "items": { + "$ref": "#/$defs/AccessTokenAlgorithm" + }, + "maxItems": 5, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "allowInsecureHttp": { + "default": false, + "description": "Permit plain HTTP beyond loopback to the configured issuer and to a\nJWKS URI declared in configuration. TLS remains required unless the\noperator explicitly accepts this transport risk.", + "type": "boolean" + }, + "allowedClient": { + "$ref": "#/$defs/ExternalId", + "description": "The one client allowed to read results: Evidence's service client." + }, + "audience": { + "description": "The audience every accepted access token must carry in `aud`.", + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "issuer": { + "$ref": "#/$defs/Url", + "description": "Exact issuer accepted in access-token `iss` claims, an absolute\n`https` URL, or a plain `http` URL when `allowInsecureHttp` is set." + }, + "jwksSource": { + "$ref": "#/$defs/JwksSource", + "default": { + "type": "discovery" + }, + "description": "Where the issuer's signing keys come from. Absent reads the issuer's\nOpenID Connect discovery document." + }, + "maximumTokenLifetimeSeconds": { + "default": 900, + "description": "The longest lifetime a token may carry, in seconds.", + "format": "uint64", + "maximum": 3600, + "minimum": 60, + "type": "integer" + }, + "requiredScope": { + "$ref": "#/$defs/ExternalId", + "description": "The scope the Evidence token must carry to read a result." + } + }, + "required": [ + "issuer", + "audience", + "allowedClient", + "requiredScope" + ], + "type": "object" + }, + "ExternalId": { + "description": "An identifier another system issues, written exactly as its issuer gives it.", + "maxLength": 512, + "minLength": 1, + "pattern": "^[^\\u0000-\\u001F\\u007F-\\u009F]+$", + "type": "string" + }, + "FileSecretProviderConfig": { + "additionalProperties": false, + "description": "The file secret provider.", + "properties": { + "root": { + "description": "Absolute directory holding one file per secret. Each file must be a\nregular file owned by the runtime user, mode 0400 or 0600, with exactly\none hard link.", + "pattern": "^/", + "type": "string" + } + }, + "required": [ + "root" + ], + "type": "object" + }, + "JwksSource": { + "description": "Where a runtime obtains the OIDC issuer's signing keys.", + "oneOf": [ + { + "additionalProperties": false, + "description": "Read `jwks_uri` from the issuer's OpenID Connect discovery document.", + "properties": { + "type": { + "const": "discovery", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Fetch the key set from this absolute `https` URI, skipping discovery.\nA plain `http` URI is accepted on loopback for supervised local\ndevelopment, and beyond loopback only when the issuer block sets\n`allowInsecureHttp`.", + "properties": { + "type": { + "const": "uri", + "type": "string" + }, + "uri": { + "$ref": "#/$defs/Url" + } + }, + "required": [ + "type", + "uri" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Read the key set from a secret, for deployments without network access\nto the issuer.", + "properties": { + "documentRef": { + "$ref": "#/$defs/SecretReference" + }, + "type": { + "const": "static", + "type": "string" + } + }, + "required": [ + "type", + "documentRef" + ], + "type": "object" + } + ] + }, + "ListenerBind": { + "description": "Socket address the runtime listens on, written host:port with an IP address host ([addr]:port for IPv6).", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "ListenerConfig": { + "additionalProperties": false, + "description": "The listener of a runtime that declares no TLS or exposure settings.", + "properties": { + "bind": { + "$ref": "#/$defs/ListenerBind" + } + }, + "required": [ + "bind" + ], + "type": "object" + }, + "ListenerDocument": { + "additionalProperties": false, + "description": "The listener a wallet and a portal reach.", + "properties": { + "bind": { + "$ref": "#/$defs/ListenerBind" + }, + "maximumRequestBytes": { + "default": 16384, + "description": "The largest request body accepted, in bytes.", + "format": "uint32", + "maximum": 1048576, + "minimum": 1024, + "type": "integer" + }, + "requestTimeoutMilliseconds": { + "default": 5000, + "description": "How long one request may take, in milliseconds.", + "format": "uint64", + "maximum": 30000, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "bind" + ], + "type": "object" + }, + "LocalId": { + "description": "A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.", + "pattern": "^[a-z][a-z0-9_-]{0,63}$", + "type": "string" + }, + "PolicyDocument": { + "additionalProperties": false, + "description": "A presentation policy.", + "properties": { + "acceptedResponseEncryption": { + "default": [ + "A128GCM", + "A256GCM" + ], + "description": "The `enc` values of an encrypted authorization response the service\naccepts and advertises.", + "items": { + "$ref": "#/$defs/ResponseEncryption" + }, + "maxItems": 2, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "clientIdentifier": { + "$ref": "#/$defs/LocalId", + "description": "The client identifier requests under this policy use: the `id` of an\nentry in `clientIdentifiers`." + }, + "credentials": { + "description": "The credential queries, 1 to 8.", + "items": { + "$ref": "#/$defs/CredentialQueryDocument" + }, + "maxItems": 8, + "minItems": 1, + "type": "array" + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The policy identifier a portal names when it creates a session." + }, + "trustedAuthorities": { + "description": "Trusted authority hints applied to every credential query. Omit for a\nwallet that does not support them.", + "items": { + "$ref": "#/$defs/TrustedAuthorityDocument" + }, + "maxItems": 4, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "id", + "clientIdentifier", + "credentials" + ], + "type": "object" + }, + "RateLimitsDocument": { + "additionalProperties": false, + "description": "Request-rate limits.", + "properties": { + "evidenceReadBurst": { + "default": 100, + "description": "The most result reads one Evidence client may make in a burst.", + "format": "uint32", + "maximum": 100000, + "minimum": 1, + "type": "integer" + }, + "evidenceReadsPerMinute": { + "default": 600, + "description": "Result reads per minute for one Evidence client.", + "format": "uint32", + "maximum": 1000000, + "minimum": 1, + "type": "integer" + }, + "responseBurstPerRequest": { + "default": 6, + "description": "The most response attempts against one session in a burst.", + "format": "uint32", + "maximum": 1000, + "minimum": 1, + "type": "integer" + }, + "responsesPerRequestPerMinute": { + "default": 12, + "description": "Response attempts per minute against one session.", + "format": "uint32", + "maximum": 6000, + "minimum": 1, + "type": "integer" + }, + "sessionCreationBurst": { + "default": 10, + "description": "The most sessions one principal may create in a burst.", + "format": "uint32", + "maximum": 100000, + "minimum": 1, + "type": "integer" + }, + "sessionCreationsPerPrincipalPerMinute": { + "default": 30, + "description": "Sessions one principal may create per minute.", + "format": "uint32", + "maximum": 100000, + "minimum": 1, + "type": "integer" + }, + "walletRequestBurst": { + "default": 100, + "description": "The most wallet requests admitted in a burst.", + "format": "uint32", + "maximum": 100000, + "minimum": 1, + "type": "integer" + }, + "walletRequestsPerMinute": { + "default": 600, + "description": "Request object fetches per minute, across all wallets.", + "format": "uint32", + "maximum": 1000000, + "minimum": 1, + "type": "integer" + }, + "walletResponseBurst": { + "default": 100, + "description": "The most wallet responses admitted in a burst.", + "format": "uint32", + "maximum": 100000, + "minimum": 1, + "type": "integer" + }, + "walletResponsesPerMinute": { + "default": 600, + "description": "Wallet responses per minute across all sessions. Every attempt counts,\nincluding those for unknown request identifiers.", + "format": "uint32", + "maximum": 1000000, + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + }, + "ResponseEncryption": { + "description": "The accepted `enc` values of an encrypted authorization response.", + "enum": [ + "A128GCM", + "A256GCM" + ], + "type": "string" + }, + "SecretProvidersConfig": { + "additionalProperties": false, + "anyOf": [ + { + "properties": { + "file": { + "$ref": "#/$defs/FileSecretProviderConfig" + } + }, + "required": [ + "file" + ] + }, + { + "properties": { + "environment": { + "$ref": "#/$defs/EnvironmentSecretProviderConfig" + } + }, + "required": [ + "environment" + ] + } + ], + "description": "The secret providers a runtime enables. A reference is resolved only by a\nprovider declared here: `secret:file/name` under `file.root`, and\n`secret:env/NAME` only when `environment: {}` is present.", + "properties": { + "environment": { + "$ref": "#/$defs/EnvironmentSecretProviderConfig", + "description": "Enables `secret:env/NAME` references, read from the process\nenvironment. Declared as an empty mapping: `environment: {}`." + }, + "file": { + "$ref": "#/$defs/FileSecretProviderConfig", + "description": "Enables `secret:file/name` references, read from files under `root`." + } + }, + "type": "object" + }, + "SecretReference": { + "description": "An exact secret reference: secret:file/name, resolved under secretProviders.file.root, or secret:env/NAME, resolved only when secretProviders.environment is declared.", + "pattern": "^(?:secret:env/[A-Z][A-Z0-9_]{0,127}|secret:file/[a-z][a-z0-9._-]{0,127})$", + "type": "string" + }, + "SessionsDocument": { + "additionalProperties": false, + "description": "The bounds of the in-memory session store.", + "properties": { + "maximumHeldPresentationBytes": { + "default": 268435456, + "description": "The most presentation bytes the store holds across all sessions, from\nthe moment a response is accepted until its session ends or its result\nexpires. A response that would exceed it is refused with a retryable\n503; the sessions already holding results are unaffected.", + "format": "uint64", + "maximum": 17179869184, + "minimum": 1048576, + "type": "integer" + }, + "maximumLiveSessions": { + "default": 4096, + "description": "How many sessions the store holds. A full store refuses new sessions\nrather than forgetting live ones.", + "format": "uint32", + "maximum": 1048576, + "minimum": 1, + "type": "integer" + }, + "resultTtlSeconds": { + "default": 1800, + "description": "How long an accepted presentation is held for Evidence to read, in\nseconds.", + "format": "uint64", + "maximum": 3600, + "minimum": 30, + "type": "integer" + }, + "sessionTtlSeconds": { + "default": 300, + "description": "How long a session waits for the wallet's response, in seconds. The\nrequest object expires with it.", + "format": "uint64", + "maximum": 900, + "minimum": 30, + "type": "integer" + } + }, + "type": "object" + }, + "TrustedAuthorityDocument": { + "additionalProperties": false, + "description": "A trusted authority hint passed to the wallet for minimisation. The service\nstill decides trust itself.", + "properties": { + "type": { + "$ref": "#/$defs/TrustedAuthorityType", + "description": "The authority type." + }, + "values": { + "description": "Authority Key Identifiers, base64url, 1 to 16.", + "items": { + "$ref": "#/$defs/ExternalId" + }, + "maxItems": 16, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "type", + "values" + ], + "type": "object" + }, + "TrustedAuthorityType": { + "description": "The trusted authority type; only `aki` is offered.", + "enum": [ + "aki" + ], + "type": "string" + }, + "Url": { + "description": "An absolute http or https URL with a host preserved as written, no user information, and no backslash, whitespace or control character. DNS case and equivalent IPv6 literals are permitted.", + "format": "uri", + "maxLength": 2048, + "pattern": "^[Hh][Tt][Tt][Pp][Ss]?://[^/?#@\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]+([/?#][^\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]*)?$", + "type": "string" + } + }, + "$id": "https://id.registrystack.org/schemas/evidence/oid4vp-runtime/oid4vp-runtime.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "description": "The wallet protocol service runtime file: one deployment of the OpenID4VP\nverifier front end for Evidence.", + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/evidence/oid4vp-runtime/v1alpha1", + "description": "The format version of this file.", + "type": "string" + }, + "applicantTokens": { + "$ref": "#/$defs/ApplicantTokensDocument", + "description": "The issuer of the applicant tokens a portal presents to create a\nsession." + }, + "audit": { + "$ref": "#/$defs/AuditDocument", + "description": "The required durable audit journal." + }, + "clientIdentifiers": { + "description": "How the service identifies itself to a wallet: one or more client\nidentifiers, each named by a local id. Every policy names the one it\nuses, and every identifier is used by at least one policy.", + "items": { + "$ref": "#/$defs/ClientIdentifierDocument" + }, + "maxItems": 8, + "minItems": 1, + "type": "array" + }, + "evidenceCredentials": { + "$ref": "#/$defs/EvidenceCredentialsDocument", + "description": "The issuer of the Evidence service credential that reads a result." + }, + "kind": { + "const": "EvidenceOid4vpRuntimeConfig", + "description": "The document kind.", + "type": "string" + }, + "listener": { + "$ref": "#/$defs/ListenerDocument", + "description": "The listener a wallet and a portal reach." + }, + "metricsListener": { + "$ref": "#/$defs/ListenerConfig", + "description": "The optional operator-only metrics listener: a loopback or private\naddress the service listener does not use. Absent means no metrics\nendpoint exists." + }, + "policies": { + "description": "What a portal may ask a wallet to present. At least one.", + "items": { + "$ref": "#/$defs/PolicyDocument" + }, + "minItems": 1, + "type": "array" + }, + "publicBaseUrl": { + "$ref": "#/$defs/Url", + "description": "The public origin wallets reach this service at: a bare https origin\nwith no path, query, or fragment. The response URI and the request URI\nare built from it. A trailing slash is removed." + }, + "rateLimits": { + "$ref": "#/$defs/RateLimitsDocument", + "description": "Request-rate limits." + }, + "secretProviders": { + "$ref": "#/$defs/SecretProvidersConfig", + "description": "The secret providers the `*Ref` members may name." + }, + "sessions": { + "$ref": "#/$defs/SessionsDocument", + "description": "The bounds of the in-memory session store." + } + }, + "required": [ + "apiVersion", + "kind", + "publicBaseUrl", + "listener", + "secretProviders", + "audit", + "applicantTokens", + "evidenceCredentials", + "clientIdentifiers", + "policies" + ], + "title": "Evidence OpenID4VP verifier runtime configuration", + "type": "object" +} diff --git a/src/artifacts/sha256/24b19bc056dd4048d1f02b3270743d3c30c052cb5875b240e8d9b5d06029ecfb.yaml b/src/artifacts/sha256/24b19bc056dd4048d1f02b3270743d3c30c052cb5875b240e8d9b5d06029ecfb.yaml new file mode 100644 index 000000000..90d9ceb92 --- /dev/null +++ b/src/artifacts/sha256/24b19bc056dd4048d1f02b3270743d3c30c052cb5875b240e8d9b5d06029ecfb.yaml @@ -0,0 +1,607 @@ +$schema: https://json-schema.org/draft/2020-12/schema +$id: https://id.registrystack.org/schemas/evidence/runtime/runtime.v1alpha1.schema.json +title: Evidence closed operator runtime configuration Version 1 +type: object +additionalProperties: false +required: + - apiVersion + - kind + - package + - listener + - secretProviders + - signer + - audit + - outboundTls +properties: + apiVersion: + description: >- + Names the grammar this runtime document is written in; the loader refuses any other + value, so a future incompatible runtime shape is never read as if it were this one. + const: id.registrystack.org/formats/evidence/runtime/v1alpha1 + kind: + description: >- + Names the document type; together with `apiVersion` it tells an Evidence runtime file + apart from any other product's runtime configuration. + const: EvidenceRuntimeConfig + acquisitionCapabilities: + description: >- + Retired. An empty list is accepted, and ignored, for one release so a file written for + 0.44 still loads; any capability is refused. Delete the member: a Source binds a reviewed + Adapter pack route, and the pack declares how it reads. + deprecated: true + type: array + maxItems: 0 + package: + description: >- + Selects the one governed package this process verifies and loads at startup; no alternate, + overlay, or fallback package path exists for a running deployment. + type: object + additionalProperties: false + required: + - root + properties: + root: + description: >- + Absolute path of the governed package directory this process verifies and loads. + $ref: '#/$defs/absolute-path' + expectedDigest: + description: >- + Optional `sha256:` digest of the package's `SHA256SUMS` file. When set, startup is + refused unless the verified package found at `package.root` has exactly this digest. + $ref: '#/$defs/Digest' + authority: + description: >- + Selects the separately governed target authority store captured at startup. Required + for a normalized project package and forbidden as an authority override of a legacy + package. Activation commits one validated snapshot and durable history atomically; + the running process keeps its captured authority until a controlled restart. + type: object + additionalProperties: false + required: [root, target] + properties: + root: + description: Absolute owned directory containing the committed authority-state.json. + $ref: '#/$defs/absolute-path' + target: + description: Exact governed target identifier matched by the activated authority document. + $ref: '#/$defs/LocalId' + listener: + description: >- + Groups the network binding and per-request admission limits for the process's evidence + endpoint; `metricsListener`, when present, is an entirely separate binding with its + own limits. + type: object + additionalProperties: false + required: + - bind + - tlsTermination + - trustProxyIdentityHeaders + - maximumRequestBytes + - maximumConcurrentRequests + - requestTimeoutMilliseconds + - shutdownGraceMilliseconds + properties: + bind: + description: >- + Numeric socket address the evidence API listens on, written `host:port`, with an + IPv6 host in brackets (`[addr]:port`). The default `private-address` exposure accepts + a loopback, RFC 1918 private IPv4, or RFC 4193 unique-local IPv6 host. The explicit + `container-private` exposure additionally accepts the unspecified IPv4 or IPv6 + wildcard for a container network confined by the operator. Multicast, public, and + hostname values are prohibited in both modes, and port `0`, which would ask the + kernel for an arbitrary ephemeral port instead of naming one, is refused. + $ref: '#/$defs/socket-address' + x-runtime-validation: >- + Parsed as a socket address and its host checked together with + listener.networkExposure. Wildcards require the explicit container-private value; + public addresses remain prohibited. + networkExposure: + description: >- + Declares the operator-owned network boundary around the listener. Absent preserves + the private-address contract used by existing runtime files. container-private permits + a wildcard bind only for a container network whose ingress and TLS termination are + controlled by the operator; it does not enable public or direct-TLS serving. + type: string + enum: + - private-address + - container-private + default: private-address + tlsTermination: + description: >- + Declares that TLS terminates at an operator-controlled upstream in front of this + listener; the runtime accepts no other value and exposes no direct-TLS or `insecure` + mode of its own. + const: operator-controlled-upstream + trustProxyIdentityHeaders: + description: >- + Fixes the listener to ignore proxy-supplied identity headers; authenticated identity + and authority always come from the verified access token, never from a header a + network intermediary can set. + const: false + maximumRequestBytes: + description: >- + Caps accepted request body size; a request whose declared or actual length exceeds + this bound is rejected as malformed before evidence evaluation begins. + type: integer + minimum: 1024 + maximum: 1048576 + maximumConcurrentRequests: + description: >- + Sizes the fixed admission semaphore for concurrent evidence requests; a request + that cannot acquire a slot within `listener.requestTimeoutMilliseconds` receives + a service-unavailable response instead of queuing without bound. + type: integer + minimum: 1 + maximum: 4096 + requestTimeoutMilliseconds: + description: >- + Bounds admission-slot acquisition and request-body collection; once protected evaluation + starts, this timer no longer cancels it, and source and OIDC boundaries carry their + own separate limits. + type: integer + minimum: 1 + maximum: 30000 + shutdownGraceMilliseconds: + description: >- + Operational target for graceful shutdown to finish within; it does not cancel a + request already inside protected evaluation, so audit and signing invariants complete + even if shutdown outlives this grace period. + type: integer + minimum: 1 + maximum: 120000 + metricsListener: + description: >- + Optional operator-only telemetry listener serving GET /metrics. Absent means the deployment + serves no metrics endpoint, which is the default. This listener is a separate binding from + the evidence listener and is not described by the public evidence contract. + type: object + additionalProperties: false + required: + - bind + properties: + bind: + description: >- + Numeric socket address for the optional metrics listener, written `host:port`. The + host must be a loopback, RFC 1918 private IPv4, or RFC 4193 unique-local IPv6 + address; unspecified, multicast, public, and hostname values are prohibited, port + `0` is refused, and the address must not repeat the evidence listener's binding. + $ref: '#/$defs/socket-address' + x-runtime-validation: >- + Parsed as a socket address and accepted only when Rust classifies its host as + loopback, private IPv4, or unique-local IPv6. + x-runtime-validation: >- + Rejected at startup when the bind address repeats the evidence listener binding. + secretProviders: + description: >- + Enables the providers a secret reference may resolve through; it supplies storage + locations only, and which secret each governed field names is fixed by the bundle, not + by this section. At least one provider is declared, and a bundle reference naming a + provider this section does not enable is refused at startup. + type: object + additionalProperties: false + minProperties: 1 + properties: + file: + description: >- + Enables the file-based secret provider and names its root directory; every + `secret:file/name` reference resolves beneath this one path. + type: object + additionalProperties: false + required: + - root + properties: + root: + description: >- + Absolute base directory every `secret:file/name` reference resolves beneath; + each name is one bounded path component opened relative to this root, and the + opened file is checked for type, ownership, mode, and link count before its + bytes are read. + $ref: '#/$defs/absolute-path' + environment: + description: >- + Enables `secret:env/NAME` references, read from the process environment when a + request needs them. It takes no settings and is written `environment: {}`; absent + means no reference may name the environment. + type: object + additionalProperties: false + maxProperties: 0 + signer: + description: >- + Binds the process to the private-key transport that produces every signature over the + bundle's governed active public key; it can select and configure that transport but + cannot change the governed key set or signing algorithm. + oneOf: + - type: object + additionalProperties: false + required: + - type + - privateKeyRef + properties: + type: + description: >- + Selects the signer transport for this deployment: `local-jwk` resolves a file-provider + secret directly, `transit` calls a workload-local signing proxy over a Unix + socket; only the kind matching the bundle's assurance profile is accepted at + startup. + const: local-jwk + privateKeyRef: + description: >- + Names the file-provider secret holding the local signing private key material, + read only when `signer.type` is `local-jwk`; the value is a reference, and configuration + never carries the key bytes themselves. + $ref: '#/$defs/SecretReference' + - type: object + additionalProperties: false + required: + - type + - unixSocketPath + - mount + - keyName + - keyVersion + - attemptTimeoutMilliseconds + properties: + type: + const: transit + unixSocketPath: + description: >- + Absolute Unix socket path used to reach the workload-local Transit signing proxy; + the runtime supplies no provider token over this connection, because token custody + and renewal stay with the proxy. + $ref: '#/$defs/absolute-path' + mount: + description: >- + Names the Transit secrets-engine mount this signer calls; it is a path segment + in the local Transit-proxy request URL, not a filesystem location. + $ref: '#/$defs/local-id' + keyName: + description: >- + Names the specific key within `signer.mount` this signer calls; combined with + `signer.mount` and `signer.keyVersion`, it reaches exactly one pinned Transit + key. + $ref: '#/$defs/local-id' + keyVersion: + description: >- + Pins signing to one exact Transit key version rather than a `latest` alias, + so a provider-side rotation cannot silently replace the key bytes behind an + unchanged `kid`. + type: integer + minimum: 1 + maximum: 4294967295 + attemptTimeoutMilliseconds: + description: >- + Bounds how long the runtime waits on each call to the Transit signing proxy; + because a `transit` signer keeps no local fallback key, a call that exceeds + this bound fails the request rather than blocking it indefinitely. + type: integer + minimum: 1 + maximum: 30000 + audit: + description: >- + Chooses where this process writes its audit entries through the shared platform audit + writer; the pseudonymization key and its version are governed by the bundle's `audit` + section, not by this one. Every audit gate is fail closed on either destination. + type: object + additionalProperties: false + properties: + destination: + description: >- + `file`, the default, appends each entry durably to `path` under a single-writer lock + and rotates the active file and prunes rotated files; `stdout` writes each entry as one line on + standard output for a collector that owns durability, rotation, and retention. + enum: + - file + - stdout + path: + description: >- + Absolute path to the active append-only JSON Lines audit file on durable, + operator-owned storage; required for the `file` destination and refused for + `stdout`. This physical destination is process-local and is not chosen by the + bundle. + $ref: '#/$defs/absolute-path' + rotateBytes: + description: >- + Size at which the active file is rotated and a fresh one opened; defaults to + 104857600 (100 MiB). File destination only. + type: integer + minimum: 1048576 + maximum: 4294967295 + retentionDays: + description: >- + Age in days after which a rotated file is deleted when the writer opens or rotates; + defaults to 90. The active file is never deleted. File destination only. + type: integer + minimum: 1 + maximum: 36500 + if: + required: + - destination + properties: + destination: + const: stdout + then: + not: + anyOf: + - required: + - path + - required: + - rotateBytes + - required: + - retentionDays + else: + required: + - path + outboundTls: + description: >- + Groups outbound TLS trust for calls to configured sources; it can add private certificate + authorities through named trust profiles but carries no setting to weaken hostname verification + or skip TLS. + type: object + additionalProperties: false + required: + - systemRoots + - trustProfiles + properties: + systemRoots: + description: >- + Fixes the system certificate authority store as always trusted for outbound calls; + because Version 1 has no way to disable it, a source's or the access-token issuer's + public certificate must still chain to a trusted root even when a private trust + profile also applies. + const: true + trustProfiles: + description: >- + Closed map of private certificate-authority bundles a source or the access-token + issuer may reference by logical id; the set of ids present here must exactly match + the `tlsTrustProfile` names the bundle's sources and `authentication` declare, with + no extra or missing profile. + type: object + maxProperties: 64 + propertyNames: + $ref: '#/$defs/LocalId' + additionalProperties: + description: >- + One named private trust profile, binding a logical id a `tlsTrustProfile` + reference names to the certificate-authority bundle used only for the outbound + connections of the source or access-token issuer that names it. + type: object + additionalProperties: false + required: + - caBundleFile + properties: + caBundleFile: + description: >- + Absolute path to one bounded PEM file of trust anchors, loaded and validated + at startup; changing its bytes requires a restart before the new trust anchors + can be used. + $ref: '#/$defs/absolute-path' + sourceConnections: + description: >- + Process-local endpoint, credential and private-network material for each governed + source connection. Each mapping key must equal the value's `id`; startup requires + the selected endpoint values to match the governed connection policy exactly. + type: object + propertyNames: {$ref: '#/$defs/LocalId'} + additionalProperties: {$ref: '#/$defs/source-connection-bindings'} + sourceAcquisition: + description: >- + Finite operational budget shared by every pack-route call in one acquisition. + Omission uses 5 data operations, 30000 milliseconds and 1048576 response bytes. + type: object + additionalProperties: false + required: [maximumDataOperations, acquisitionDeadlineMilliseconds, maximumResponseBytes] + properties: + maximumDataOperations: {type: integer, minimum: 1, maximum: 18446744073709551615} + acquisitionDeadlineMilliseconds: {type: integer, minimum: 1, maximum: 18446744073709551615} + maximumResponseBytes: {type: integer, minimum: 1, maximum: 18446744073709551615} + sourceExtracts: + description: >- + Closed map of process-local extract files a source may read by logical name; the set of + names present here must exactly match the `extractProfile` names the bundle's extract + sources declare, with no extra or missing name. Omission binds none, which is what a + runtime file for a bundle with no extract source says. + type: object + maxProperties: 64 + propertyNames: + $ref: '#/$defs/LocalId' + additionalProperties: + description: >- + One named extract binding, joining a logical name a source's `extractProfile` reference + declares to the process-local file that holds it, so the reviewed bundle names what it + reads and the operator decides where that file sits. + type: object + additionalProperties: false + required: + - path + properties: + path: + description: >- + Absolute path to one read-only regular file, validated at startup and digested + without being read into memory; it must be neither a symbolic link nor writable, + because the statement executor opens it as immutable. Startup binds the exact file + identity and content digest for the process lifetime. + $ref: '#/$defs/absolute-path' +$defs: + Digest: + type: string + pattern: ^sha256:[0-9a-f]{64}$ + description: 'A SHA-256 digest: `sha256:` followed by 64 lowercase hex digits.' + ExternalId: + type: string + minLength: 1 + maxLength: 512 + pattern: "^[^\\u0000-\\u001F\\u007F-\\u009F]+$" + description: An identifier another system issues, written exactly as its issuer gives it. + Url: + type: string + format: uri + maxLength: 2048 + pattern: '^[Hh][Tt][Tt][Pp][Ss]?://[^/?#@\u005C\u0000-\u0020\u007F-\u00A0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]+([/?#][^\u005C\u0000-\u0020\u007F-\u00A0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]*)?$' + description: An absolute http or https URL with a host preserved as written, no user information, and no backslash, whitespace or control character. DNS case and equivalent IPv6 literals are permitted. + LocalId: + type: string + pattern: ^[a-z][a-z0-9_-]{0,63}$ + description: 'A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.' + local-id: + type: string + pattern: ^[a-z][a-z0-9._-]{0,127}$ + SecretReference: + type: string + pattern: ^(?:secret:env/[A-Z][A-Z0-9_]{0,127}|secret:file/[a-z][a-z0-9._-]{0,127})$ + description: 'An exact secret reference: secret:file/name, resolved under secretProviders.file.root, or secret:env/NAME, resolved only when secretProviders.environment is declared.' + socket-address: + description: >- + A numeric `host:port` socket address with a non-zero port, the host in brackets when + it is IPv6. + type: string + minLength: 1 + maxLength: 128 + pattern: ^(?:[0-9]{1,3}(?:\.[0-9]{1,3}){3}|\[[0-9A-Fa-f:.]+\]):(?!0+$)[0-9]{1,5}$ + absolute-path: + type: string + minLength: 2 + maxLength: 512 + pattern: ^/(?!/)(?!.*(?:^|/)\.\.?(?:/|$))[^\\\u0000]+$ + source-connection-bindings: + type: object + additionalProperties: false + required: [id, endpoints] + properties: + id: {$ref: '#/$defs/LocalId'} + endpoints: + description: One binding per distinct endpoint name. + type: array + items: {$ref: '#/$defs/source-endpoint-binding'} + outboundTls: + type: object + additionalProperties: false + properties: + trustProfiles: + type: object + propertyNames: {$ref: '#/$defs/LocalId'} + additionalProperties: + type: object + additionalProperties: false + required: [caBundleFile] + properties: + caBundleFile: {$ref: '#/$defs/absolute-path'} + allowedPrivateCidrs: + type: array + uniqueItems: true + items: + type: string + pattern: '^[0-9a-fA-F.:]+/[0-9]{1,3}$' + source-endpoint-binding: + type: object + additionalProperties: false + required: [endpoint, baseUrl] + properties: + endpoint: {$ref: '#/$defs/ExternalId'} + baseUrl: {$ref: '#/$defs/Url'} + credential: {$ref: '#/$defs/source-runtime-credential'} + anonymousHttps: {const: operator-approved} + attemptTimeoutMilliseconds: {type: integer, minimum: 1, maximum: 18446744073709551615} + maximumResponseBytes: {type: integer, minimum: 1, maximum: 16777216} + maximumConcurrency: {type: integer, minimum: 1, maximum: 256, default: 8} + tlsTrustProfile: {$ref: '#/$defs/LocalId'} + mtlsIdentity: + type: object + additionalProperties: false + required: [certificateRef, keyRef] + properties: + certificateRef: {$ref: '#/$defs/SecretReference'} + keyRef: {$ref: '#/$defs/SecretReference'} + source-runtime-credential: + oneOf: + - type: object + additionalProperties: false + required: [type] + properties: + type: {const: none} + - type: object + additionalProperties: false + required: [type, usernameRef, passwordRef] + properties: + type: {const: basic} + usernameRef: {$ref: '#/$defs/SecretReference'} + passwordRef: {$ref: '#/$defs/SecretReference'} + - type: object + additionalProperties: false + required: [type, tokenRef] + properties: + type: {const: static-authorization} + tokenRef: {$ref: '#/$defs/SecretReference'} + - type: object + additionalProperties: false + required: [type, valueRef] + properties: + type: {const: static-api-key} + valueRef: {$ref: '#/$defs/SecretReference'} + - type: object + additionalProperties: false + required: [type, tokenEndpoint, clientIdRef, clientSecretRef, credentialPlacement, maximumCacheSeconds] + properties: + type: {const: oauth2-client-credentials} + tokenEndpoint: {$ref: '#/$defs/Url'} + clientIdRef: {$ref: '#/$defs/SecretReference'} + clientSecretRef: {$ref: '#/$defs/SecretReference'} + scope: {type: string, minLength: 1, maxLength: 512} + audience: {type: string, minLength: 1, maxLength: 512} + resource: {type: string, minLength: 1, maxLength: 512, format: uri} + credentialPlacement: {enum: [basic-header, form-body]} + maximumCacheSeconds: {type: integer, minimum: 0, maximum: 86400} + assumedLifetimeSeconds: {type: integer, minimum: 1, maximum: 86400} + - type: object + additionalProperties: false + required: [type, tokenEndpoint, clientIdRef, clientAssertionKeyRef, maximumCacheSeconds] + properties: + type: {const: oauth2-private-key-jwt} + tokenEndpoint: {$ref: '#/$defs/Url'} + clientIdRef: {$ref: '#/$defs/SecretReference'} + clientAssertionKeyRef: {$ref: '#/$defs/SecretReference'} + clientAssertionAudience: {type: string, minLength: 1, maxLength: 512} + scope: {type: string, minLength: 1, maxLength: 512} + audience: {type: string, minLength: 1, maxLength: 512} + resource: {type: string, minLength: 1, maxLength: 512, format: uri} + maximumCacheSeconds: {type: integer, minimum: 0, maximum: 86400} + assumedLifetimeSeconds: {type: integer, minimum: 1, maximum: 86400} +ownership: + governed_fields: prohibited + allowed: + - bundle package root and optional expected revision + - listener binding and process limits + - optional operator metrics listener binding + - enabled secret providers and the file-secret root + - signer binding to a local private JWK or workload-local Transit proxy + - audit destination, path, rotation size, and retention + - logical private-CA file bindings + - named Adapter endpoint bindings, credential references, and private-network allowlists + - finite per-acquisition operation, deadline, and aggregate response-byte budgets + - logical source-extract file bindings + overrides: prohibited +startup: + unknown_keys: rejected at every level + mutability: >- + runtime.yaml and bound CA files are captured read-only once; reload, merge, fallback, + and partial serving are prohibited + substitution: >- + `${NAME}` and `${NAME:-default}` expressions in string values are substituted from the + process environment after parsing; they are refused inside secret references and inside + secretProviders + trust_profiles: >- + top-level names serve inbound authentication; each named source connection separately + captures the private trust profiles selected by its reviewed endpoint policies + secrets: >- + values and provider tokens are never parsed into or included in the runtime document + signer: >- + local assurance requires local-jwk; production and evidence-grade require Transit through + an absolute Unix socket. Transit key version is pinned and no provider token is supplied + to Evidence. + proxy: >- + HTTP_PROXY, HTTPS_PROXY, ALL_PROXY, and NO_PROXY are ignored; no application-level proxy + field exists +platform: + supported: Unix + reason: >- + Version 1 requires Unix owner, mode, no-follow, link-count, and file-identity guarantees + for the runtime file, the package directory and its artifacts, named CA bundle files, the + secret root, source extracts, individual secrets, and the audit file destination. diff --git a/src/artifacts/sha256/26884cc061cde1b1e5f6eb60d59b738c4522d9451c3ebef0f0e0ac007f17a7e9.json b/src/artifacts/sha256/26884cc061cde1b1e5f6eb60d59b738c4522d9451c3ebef0f0e0ac007f17a7e9.json new file mode 100644 index 000000000..c3aad7401 --- /dev/null +++ b/src/artifacts/sha256/26884cc061cde1b1e5f6eb60d59b738c4522d9451c3ebef0f0e0ac007f17a7e9.json @@ -0,0 +1,408 @@ +{ + "$defs": { + "AccessProfile": { + "additionalProperties": false, + "description": "One declared caller profile.", + "properties": { + "actorKind": { + "$ref": "#/$defs/ActorKind", + "description": "The actor kind the token must claim." + }, + "actsAs": { + "$ref": "#/$defs/ActsAs", + "description": "What a caller resolved to this profile is to a document." + }, + "description": { + "$ref": "#/$defs/DisplayText", + "description": "What the profile is for, accepted for authoring and tooling; never matched against a caller." + }, + "institution": { + "$ref": "#/$defs/ExternalId", + "description": "The institution this profile acts for. The Document Store records it\nas the issuing institution of every document version a caller under\nthis profile reserves; a profile that names none records none." + }, + "label": { + "$ref": "#/$defs/DisplayText", + "description": "A name for the profile, accepted for authoring and tooling; never matched against a caller." + }, + "principalClaim": { + "$ref": "#/$defs/ExternalId", + "description": "`sub`, or the name of another string claim identifying the principal.\nEvery profile of one actor kind names the same claim." + }, + "requesterClients": { + "description": "The OAuth clients whose tokens resolve to this profile; at least one.", + "items": { + "$ref": "#/$defs/ExternalId" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "requiredScopes": { + "description": "The scopes a token must carry; at least one.", + "items": { + "$ref": "#/$defs/ExternalId" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "principalClaim", + "requiredScopes", + "requesterClients", + "actorKind", + "actsAs" + ], + "type": "object" + }, + "ActorKind": { + "description": "An actor kind: a service, or a human person.", + "enum": [ + "service", + "human" + ], + "type": "string" + }, + "ActsAs": { + "description": "What a caller resolved to an access profile is to a document.", + "oneOf": [ + { + "const": "custodian", + "description": "Places documents in custody and issues document grants.", + "type": "string" + }, + { + "const": "represented-principal", + "description": "The person on whose behalf custody is held.", + "type": "string" + }, + { + "const": "recipient", + "description": "Reads exactly the document version a document grant names.", + "type": "string" + } + ] + }, + "ContentType": { + "description": "A lowercase concrete media type `type/subtype` without parameters or wildcards, matched exactly.", + "pattern": "^[a-z0-9][a-z0-9!#$&^_.+-]{0,126}/[a-z0-9][a-z0-9!#$&^_.+-]{0,126}$", + "type": "string" + }, + "CustodianRule": { + "description": "Who holds a document a service places for a named person.", + "oneOf": [ + { + "const": "institution", + "description": "Custody stays with the reserving system, acting for its\ninstitution. The named person is recorded as the represented\nprincipal and has no standing on the document; only a document\ngrant releases it to them.", + "type": "string" + }, + { + "const": "represented-principal", + "description": "The named person is the custodian. The reserving system sees the\ndocument's metadata and status but is neither released its content\nnor allowed to grant on it.", + "type": "string" + } + ] + }, + "DisplayText": { + "description": "Human-readable display text. Bidirectional embedding, override, and isolate controls, byte-order marks, line and paragraph separators, and Unicode noncharacters are refused; multilingual joiners and direction marks remain valid.", + "not": { + "pattern": "[

‪-‮⁦-⁩﷐-﷯￾￿]|🿾|🿿|𯿾|𯿿|𿿾|𿿿|񏿾|񏿿|񟿾|񟿿|񯿾|񯿿|񿿾|񿿿|򏿾|򏿿|򟿾|򟿿|򯿾|򯿿|򿿾|򿿿|󏿾|󏿿|󟿾|󟿿|󯿾|󯿿|󿿾|󿿿|􏿾|􏿿" + }, + "type": "string" + }, + "DocumentPolicy": { + "additionalProperties": false, + "description": "One document policy: who may hold, grant, and receive a document held\nunder it, and the restrictions every such document carries.", + "properties": { + "custodian": { + "$ref": "#/$defs/CustodianRule", + "description": "Who holds a document a service places for a named person: the\nreserving system for its institution, or that person." + }, + "custodyProfiles": { + "description": "Profiles that may place a document in custody under this policy.", + "items": { + "$ref": "#/$defs/LocalId" + }, + "type": "array", + "uniqueItems": true + }, + "grantingProfiles": { + "description": "Profiles that may issue a document grant on a document they hold in\ncustody under this policy. A system that only reserved a document for\nanother custodian never grants on it.", + "items": { + "$ref": "#/$defs/LocalId" + }, + "type": "array", + "uniqueItems": true + }, + "label": { + "$ref": "#/$defs/DisplayText" + }, + "mandatoryRestrictions": { + "$ref": "#/$defs/MandatoryRestrictions" + }, + "recipientProfiles": { + "description": "Profiles a document grant may name as its recipient.", + "items": { + "$ref": "#/$defs/LocalId" + }, + "type": "array", + "uniqueItems": true + }, + "representedPrincipalGrants": { + "$ref": "#/$defs/RepresentedPrincipalGrants", + "description": "Whether the represented principal may issue document grants itself." + }, + "representedPrincipalProfile": { + "$ref": "#/$defs/LocalId", + "description": "The profile a represented principal authenticates under." + }, + "version": { + "type": "string" + } + }, + "required": [ + "version", + "label", + "custodyProfiles", + "grantingProfiles", + "representedPrincipalProfile", + "representedPrincipalGrants", + "custodian", + "recipientProfiles", + "mandatoryRestrictions" + ], + "type": "object" + }, + "ExternalId": { + "description": "An identifier another system issues, written exactly as its issuer gives it.", + "maxLength": 512, + "minLength": 1, + "pattern": "^[^\\u0000-\\u001F\\u007F-\\u009F]+$", + "type": "string" + }, + "HookHandler": { + "description": "Where an observer hook delivers, chosen by its `type` member: a URL\ndestination the runtime configuration binds under `destinations.hooks`.", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "destinationId": { + "$ref": "#/$defs/LocalId" + }, + "type": { + "const": "url", + "type": "string" + } + }, + "required": [ + "type", + "destinationId" + ], + "type": "object" + } + ] + }, + "HookPhase": { + "description": "When an observer hook runs relative to the triggering transaction.", + "enum": [ + "after" + ], + "type": "string" + }, + "HookPolicy": { + "additionalProperties": false, + "description": "One after-commit observer hook.", + "properties": { + "handler": { + "$ref": "#/$defs/HookHandler" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "phase": { + "$ref": "#/$defs/HookPhase" + }, + "policies": { + "description": "The document policies whose documents the observer hears about: a\nchange to a document held under any other policy captures nothing\nfor it. Listing them is the operator's declaration of who may\nreceive which documents' events.", + "items": { + "$ref": "#/$defs/LocalId" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "projection": { + "description": "The fields of the trigger's projection the observer receives.", + "items": { + "$ref": "#/$defs/ExternalId" + }, + "type": "array", + "uniqueItems": true + }, + "trigger": { + "$ref": "#/$defs/HookTrigger" + } + }, + "required": [ + "id", + "phase", + "trigger", + "policies", + "projection", + "handler" + ], + "type": "object" + }, + "HookTrigger": { + "description": "The committed change an observer hook follows.", + "enum": [ + "document-version.ready", + "document-version.rejected", + "document-grant.changed" + ], + "type": "string" + }, + "LocalId": { + "description": "A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.", + "pattern": "^[a-z][a-z0-9_-]{0,63}$", + "type": "string" + }, + "MandatoryRestrictions": { + "additionalProperties": false, + "description": "The restrictions every document held under a policy carries.", + "properties": { + "allowedContentTypes": { + "description": "The media types a document may be declared as, matched exactly.", + "items": { + "$ref": "#/$defs/ContentType" + }, + "maxItems": 16, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "cleanupGraceHours": { + "description": "Time between the custodian's removal request, or a rejection, and\nerasure of the bytes, and the length of a reservation's upload\nwindow. At least one hour, so an operator always has a window to\nrestore from a mistaken request. Grant expiry and revocation erase\nnothing: they only stop a grant releasing.", + "format": "uint32", + "maximum": 8760, + "minimum": 1, + "type": "integer" + }, + "grantExpiryHours": { + "format": "uint32", + "maximum": 8760, + "minimum": 1, + "type": "integer" + }, + "maximumCustodianBytes": { + "description": "The bytes one custodian may hold under this policy, counted over\nevery reserved or stored version not yet erased and checked at\nreservation.", + "format": "uint64", + "maximum": 1099511627776, + "minimum": 1, + "type": "integer" + }, + "maximumDocumentBytes": { + "description": "The largest document a reservation may declare. It may not exceed\nthe deployment ceiling `storage.maximumDocumentBytes`; the runtime\nrefuses to start otherwise.", + "format": "uint64", + "maximum": 1073741824, + "minimum": 1, + "type": "integer" + }, + "maximumGrantExpiryHours": { + "format": "uint32", + "maximum": 8760, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "maximumDocumentBytes", + "maximumCustodianBytes", + "allowedContentTypes", + "grantExpiryHours", + "maximumGrantExpiryHours", + "cleanupGraceHours" + ], + "type": "object" + }, + "ProjectIdentity": { + "additionalProperties": false, + "description": "The members that name a project (CFG-ENV-6): a project's `project` block\nholds these, and may add project-wide members of the product's own.\nSchema name `ProjectIdentity`.", + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "version": { + "type": "string" + } + }, + "required": [ + "id", + "version" + ], + "type": "object" + }, + "RepresentedPrincipalGrants": { + "description": "Whether a represented principal may issue document grants itself.", + "enum": [ + "refused", + "permitted" + ], + "type": "string" + } + }, + "$id": "https://id.registrystack.org/schemas/documents/project/project.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "description": "The authored project document, `documents.yaml`.", + "properties": { + "accessProfiles": { + "additionalProperties": { + "$ref": "#/$defs/AccessProfile" + }, + "description": "The caller profiles a document policy names, by id.", + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "apiVersion": { + "const": "id.registrystack.org/formats/documents/project/v1alpha1", + "type": "string" + }, + "documentPolicies": { + "additionalProperties": { + "$ref": "#/$defs/DocumentPolicy" + }, + "description": "The policies a document is held under, by id.", + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "hooks": { + "description": "After-commit observer hooks. A project with none omits the member.", + "items": { + "$ref": "#/$defs/HookPolicy" + }, + "type": "array" + }, + "kind": { + "const": "DocumentsProject", + "type": "string" + }, + "project": { + "$ref": "#/$defs/ProjectIdentity" + } + }, + "required": [ + "apiVersion", + "kind", + "project", + "accessProfiles", + "documentPolicies" + ], + "title": "Registry Stack Document Store project", + "type": "object" +} diff --git a/src/artifacts/sha256/2948465f69e8dd8856e245826adb47addbb0b0b3ae5a4a3eece660dfa77ba060.json b/src/artifacts/sha256/2948465f69e8dd8856e245826adb47addbb0b0b3ae5a4a3eece660dfa77ba060.json new file mode 100644 index 000000000..dc99c488b --- /dev/null +++ b/src/artifacts/sha256/2948465f69e8dd8856e245826adb47addbb0b0b3ae5a4a3eece660dfa77ba060.json @@ -0,0 +1,4486 @@ +{ + "$defs": { + "AccessLogExemptionSource": { + "additionalProperties": false, + "description": "Delayed subject disclosure for reads under one access profile.", + "properties": { + "delayDays": { + "description": "Days after the read when the entry becomes visible to the subject.", + "format": "uint16", + "maximum": 3649, + "minimum": 1, + "type": "integer" + }, + "reason": { + "allOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + ], + "description": "Bounded policy reason retained and audited with each delayed entry." + }, + "sourceRecordType": { + "description": "Record type whose access profile authorizes the read. Omitted for direct reads of the logged record type.", + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-z][a-z0-9_-]*$", + "type": "string" + } + }, + "required": [ + "reason", + "delayDays" + ], + "type": "object" + }, + "AccessLogSource": { + "additionalProperties": false, + "description": "Governed subject-facing access-log policy for an entity.", + "properties": { + "exemptions": { + "additionalProperties": { + "$ref": "#/$defs/AccessLogExemptionSource" + }, + "description": "Access profiles whose entries become subject-visible only after a policy delay.", + "maxProperties": 64, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "retentionDays": { + "default": 90, + "description": "Days each entry remains available before bounded background erasure.", + "format": "uint16", + "maximum": 3650, + "minimum": 1, + "type": "integer" + }, + "subjectField": { + "description": "Required plaintext string or text field matched to the subject's verified principal.", + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-z][a-z0-9_-]*$", + "type": "string" + }, + "trustedIntermediaries": { + "description": "Verified intermediary client IDs allowed to forward original requester attribution.", + "items": { + "type": "string" + }, + "maxItems": 64, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "subjectField" + ], + "type": "object" + }, + "AccessProfileSource": { + "additionalProperties": false, + "properties": { + "actorKind": { + "$ref": "#/$defs/ActorKindSource" + }, + "allowCount": { + "type": "boolean" + }, + "allowDataExport": { + "default": false, + "type": "boolean" + }, + "default": { + "default": false, + "type": "boolean" + }, + "display": { + "$ref": "#/$defs/PresentationSource" + }, + "filterableFields": { + "default": [], + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "lookups": { + "items": { + "$ref": "#/$defs/LookupPermissionSource" + }, + "type": "array" + }, + "membershipBoundaries": { + "items": { + "$ref": "#/$defs/MembershipBoundarySource" + }, + "type": "array" + }, + "operations": { + "items": { + "$ref": "#/$defs/Operation" + }, + "type": "array", + "uniqueItems": true + }, + "principalClaim": { + "description": "The token claim that names the caller. Every profile serves authenticated callers, so every profile names one.", + "type": "string" + }, + "provenanceFields": { + "items": { + "$ref": "#/$defs/ProvenanceFieldSource" + }, + "type": "array", + "uniqueItems": true + }, + "readPaths": { + "items": { + "$ref": "#/$defs/ReadPathPermissionSource" + }, + "type": "array" + }, + "readableFields": { + "default": [], + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "requesterClients": { + "description": "The OAuth clients whose tokens may select this profile. Omit to accept every client.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "requireConsent": { + "items": { + "$ref": "#/$defs/ConsentRequirementSource" + }, + "type": "array" + }, + "requiredPurposes": { + "description": "The verified token's purpose must match one listed value. Omit to accept every purpose.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "requiredScopes": { + "$ref": "#/$defs/RequiredScopes", + "description": "The scopes the verified token must carry: `unrestricted`, or a list of at least one scope, all of which must be present." + }, + "revisionAccess": { + "default": false, + "type": "boolean" + }, + "rowBoundaries": { + "$ref": "#/$defs/RowBoundaries", + "description": "Row reach: `unrestricted`, or a list of at least one row boundary." + }, + "sortableFields": { + "default": [], + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "spatialQueries": { + "$ref": "#/$defs/SpatialQueryPermissionSource" + }, + "taskGrant": { + "$ref": "#/$defs/CompiledTaskGrantSource" + }, + "writableFields": { + "default": [], + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "id", + "principalClaim", + "requiredScopes", + "operations", + "rowBoundaries" + ], + "type": "object" + }, + "AccessRequirementsSource": { + "additionalProperties": false, + "description": "Compile-time requirements, not grants. Profiles must explicitly satisfy them.", + "properties": { + "allowedPurposes": { + "description": "Every profile must restrict purpose to a subset of these values. Omit to demand no purpose.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "requiredScopes": { + "description": "Every profile must require all these scopes. Requirements never grant access. Omit to demand no scope.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "rowBoundaries": { + "description": "Every profile must include these exact field, verified-claim, and operator bindings. Omit to demand no row boundary.", + "items": { + "$ref": "#/$defs/RowBoundarySource" + }, + "minItems": 1, + "type": "array" + } + }, + "type": "object" + }, + "ActionEffectSource": { + "additionalProperties": false, + "properties": { + "clear": { + "default": [], + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "operation": { + "$ref": "#/$defs/Operation" + }, + "set": { + "additionalProperties": { + "$ref": "#/$defs/ActionValueSource" + }, + "default": {}, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "target": { + "$ref": "#/$defs/ActionTargetSource" + } + }, + "required": [ + "target", + "operation" + ], + "type": "object" + }, + "ActionEvidenceSource": { + "additionalProperties": false, + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "maximumObservationAgeSeconds": { + "format": "uint64", + "maximum": 300, + "minimum": 1, + "type": "integer" + }, + "outputs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "provider": { + "type": "string" + }, + "requirement": { + "type": "string" + }, + "subjects": { + "additionalProperties": { + "$ref": "#/$defs/EvidenceSubjectSource" + }, + "propertyNames": { + "$ref": "#/$defs/ExternalId" + }, + "type": "object" + } + }, + "required": [ + "id", + "provider", + "requirement", + "subjects", + "outputs", + "maximumObservationAgeSeconds" + ], + "type": "object" + }, + "ActionExecutionSource": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "mode": { + "const": "immediate", + "type": "string" + } + }, + "required": [ + "mode" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "mode": { + "const": "proposal", + "type": "string" + }, + "proposal": { + "$ref": "#/$defs/ProposalPolicySource" + } + }, + "required": [ + "mode", + "proposal" + ], + "type": "object" + } + ] + }, + "ActionHandlerKindSource": { + "description": "The authored action-handler backend. The wasm backend is admitted when\nthis build of the compiler carries the `wasm` cargo feature, which\nvalidates a declared WASM handler module against the platform guest\nABI at compile time; without that feature a declared WASM handler is\nrefused with the pinned `breg.action.handler-wasm-build-unsupported`\ndiagnostic.", + "enum": [ + "rhai", + "wasm" + ], + "type": "string" + }, + "ActionHandlerRefusalSource": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "label": { + "$ref": "#/$defs/DisplayText" + } + }, + "required": [ + "code", + "label" + ], + "type": "object" + }, + "ActionHandlerWriteSource": { + "additionalProperties": false, + "properties": { + "fields": { + "items": { + "type": "string" + }, + "type": "array" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "operation": { + "$ref": "#/$defs/Operation" + }, + "target": { + "$ref": "#/$defs/ActionTargetSource" + } + }, + "required": [ + "id", + "target", + "operation", + "fields" + ], + "type": "object" + }, + "ActionInputSource": { + "anyOf": [ + { + "oneOf": [ + { + "properties": { + "type": { + "const": "boolean", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "properties": { + "maximumLength": { + "format": "uint32", + "maximum": 1000000, + "minimum": 1, + "type": "integer" + }, + "minimumLength": { + "default": 0, + "format": "uint32", + "maximum": 1000000, + "minimum": 0, + "type": "integer" + }, + "type": { + "const": "string", + "type": "string" + } + }, + "required": [ + "type", + "maximumLength" + ], + "type": "object" + }, + { + "properties": { + "maximumLength": { + "format": "uint32", + "maximum": 10000000, + "minimum": 1, + "type": "integer" + }, + "type": { + "const": "text", + "type": "string" + } + }, + "required": [ + "type", + "maximumLength" + ], + "type": "object" + }, + { + "properties": { + "type": { + "const": "int64", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "properties": { + "maximum": { + "type": "string" + }, + "minimum": { + "type": "string" + }, + "precision": { + "format": "uint32", + "maximum": 38, + "minimum": 1, + "type": "integer" + }, + "scale": { + "format": "uint32", + "maximum": 38, + "minimum": 0, + "type": "integer" + }, + "type": { + "const": "decimal", + "type": "string" + } + }, + "required": [ + "type", + "precision", + "scale" + ], + "type": "object" + }, + { + "properties": { + "type": { + "const": "date", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "properties": { + "type": { + "const": "timestamp", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "properties": { + "type": { + "const": "uuid", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "properties": { + "type": { + "const": "vocabulary-code", + "type": "string" + }, + "values": { + "default": [], + "items": { + "type": "string" + }, + "type": "array" + }, + "vocabulary": { + "type": "string" + } + }, + "required": [ + "type", + "vocabulary" + ], + "type": "object" + }, + { + "properties": { + "onDelete": { + "$ref": "#/$defs/ReferenceDelete", + "default": "restrict" + }, + "target": { + "type": "string" + }, + "type": { + "const": "reference", + "type": "string" + } + }, + "required": [ + "type", + "target" + ], + "type": "object" + }, + { + "properties": { + "bbox": { + "$ref": "#/$defs/Crs84BboxSource" + }, + "precision": { + "format": "uint32", + "maximum": 9, + "minimum": 0, + "type": "integer" + }, + "type": { + "const": "crs84-point", + "type": "string" + } + }, + "required": [ + "type", + "precision" + ], + "type": "object" + }, + { + "properties": { + "maximumBytes": { + "format": "uint32", + "maximum": 1048576, + "minimum": 1, + "type": "integer" + }, + "schema": { + "x-registry-foreign": "json-schema-2020-12" + }, + "type": { + "const": "structured", + "type": "string" + } + }, + "required": [ + "type", + "maximumBytes", + "schema" + ], + "type": "object" + } + ], + "properties": { + "apiName": { + "type": "string" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource", + "default": {} + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "pattern": { + "description": "Native PostgreSQL ARE expression the submitted string must match, in the\ndialect and with the bounds of a Record field `pattern`.", + "type": "string" + }, + "required": { + "default": false, + "type": "boolean" + } + }, + "required": [ + "id", + "classification" + ], + "type": "object", + "unevaluatedProperties": false + }, + { + "additionalProperties": false, + "properties": { + "apiName": { + "type": "string" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "pattern": { + "type": "string" + }, + "required": { + "default": false, + "type": "boolean" + }, + "typeRef": { + "$ref": "#/$defs/LocalId" + } + }, + "required": [ + "id", + "typeRef", + "classification" + ], + "type": "object" + } + ] + }, + "ActionPlanSource": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "effects": { + "items": { + "$ref": "#/$defs/ActionEffectSource" + }, + "type": "array" + }, + "type": { + "const": "fixed", + "type": "string" + } + }, + "required": [ + "type", + "effects" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "function": { + "type": "string" + }, + "inputs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "refusals": { + "default": [], + "items": { + "$ref": "#/$defs/ActionHandlerRefusalSource" + }, + "type": "array" + }, + "type": { + "const": "function", + "type": "string" + }, + "writes": { + "items": { + "$ref": "#/$defs/ActionHandlerWriteSource" + }, + "type": "array" + } + }, + "required": [ + "type", + "function", + "inputs", + "writes" + ], + "type": "object" + } + ] + }, + "ActionRequirementSource": { + "additionalProperties": false, + "properties": { + "atLeast": { + "format": "int64", + "maximum": 9223372036854775807, + "minimum": -9223372036854775808, + "type": "integer" + }, + "atLeastFromInput": { + "description": "Requires the stored value to be at or above the named required action\ninput of the same date, instant, or integer type.", + "type": "string" + }, + "atMost": { + "format": "int64", + "maximum": 9223372036854775807, + "minimum": -9223372036854775808, + "type": "integer" + }, + "atMostFromInput": { + "description": "Requires the stored value to be at or below the named required action\ninput of the same date, instant, or integer type.", + "type": "string" + }, + "currentDate": { + "$ref": "#/$defs/CurrentDatePredicateSource" + }, + "equals": { + "$ref": "#/$defs/ScalarLiteral" + }, + "equalsFromInput": { + "type": "string" + }, + "field": { + "default": "", + "type": "string" + }, + "input": { + "type": "string" + }, + "isNull": { + "const": true, + "description": "Requires the stored value to be unset. Only `true` is read.", + "type": "boolean" + }, + "reason": { + "$ref": "#/$defs/LocalId", + "description": "Stable application copy key; disclosure still requires readable guard facts." + }, + "revision": { + "$ref": "#/$defs/GuardRevisionSource" + } + }, + "required": [ + "input" + ], + "type": "object" + }, + "ActionSource": { + "additionalProperties": false, + "properties": { + "apiName": { + "type": "string" + }, + "commitGuards": { + "$ref": "#/$defs/CommitGuardsSource", + "default": { + "evidence": [], + "targets": [] + } + }, + "consentIssuer": { + "$ref": "#/$defs/ConsentIssuerSource" + }, + "display": { + "$ref": "#/$defs/ModelDisplaySource", + "default": {} + }, + "evidence": { + "items": { + "$ref": "#/$defs/ActionEvidenceSource" + }, + "type": "array" + }, + "execution": { + "$ref": "#/$defs/ActionExecutionSource" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "inputs": { + "default": [], + "items": { + "$ref": "#/$defs/ActionInputSource" + }, + "type": "array" + }, + "plan": { + "$ref": "#/$defs/ActionPlanSource" + } + }, + "required": [ + "id", + "execution", + "plan" + ], + "type": "object" + }, + "ActionTargetSource": { + "additionalProperties": false, + "properties": { + "fromInput": { + "type": "string" + }, + "recordType": { + "type": "string" + } + }, + "type": "object" + }, + "ActionValueSource": { + "additionalProperties": false, + "properties": { + "fromEffect": { + "type": "string" + }, + "fromInput": { + "type": "string" + }, + "value": true + }, + "type": "object" + }, + "ActorKindSource": { + "enum": [ + "human", + "agent", + "service" + ], + "type": "string" + }, + "AttachmentSlotSource": { + "additionalProperties": false, + "properties": { + "classification": { + "$ref": "#/$defs/Classification" + }, + "contentTypes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "maximumBytes": { + "format": "uint32", + "maximum": 16777216, + "minimum": 1, + "type": "integer" + }, + "required": { + "type": "boolean" + } + }, + "required": [ + "id", + "required", + "maximumBytes", + "contentTypes", + "classification" + ], + "type": "object" + }, + "BatchSource": { + "additionalProperties": false, + "properties": { + "maximumBytes": { + "format": "uint32", + "maximum": 2097152, + "minimum": 1, + "type": "integer" + }, + "maximumItems": { + "format": "uint32", + "maximum": 100, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "maximumItems", + "maximumBytes" + ], + "type": "object" + }, + "BooleanFieldSourceSchema": { + "additionalProperties": false, + "properties": { + "apiName": { + "type": "string" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "required": { + "default": false, + "type": "boolean" + }, + "type": { + "enum": [ + "boolean" + ], + "type": "string" + }, + "validTimeRole": { + "$ref": "#/$defs/ValidTimeRole" + } + }, + "required": [ + "id", + "type", + "classification" + ], + "type": "object" + }, + "BoundaryOperator": { + "enum": [ + "equals", + "in" + ], + "type": "string" + }, + "Classification": { + "enum": [ + "public", + "internal", + "restricted" + ], + "type": "string" + }, + "CommitEvidenceRequirementSource": { + "additionalProperties": false, + "properties": { + "atLeast": { + "format": "int64", + "maximum": 9223372036854775807, + "minimum": -9223372036854775808, + "type": "integer" + }, + "atMost": { + "format": "int64", + "maximum": 9223372036854775807, + "minimum": -9223372036854775808, + "type": "integer" + }, + "equals": true, + "equalsFromInput": { + "type": "string" + }, + "output": { + "type": "string" + } + }, + "required": [ + "output" + ], + "type": "object" + }, + "CommitEvidenceSelectorSource": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "input": { + "type": "string" + }, + "type": { + "const": "input", + "type": "string" + } + }, + "required": [ + "type", + "input" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "field": { + "type": "string" + }, + "input": { + "type": "string" + }, + "type": { + "const": "target-field", + "type": "string" + } + }, + "required": [ + "type", + "input", + "field" + ], + "type": "object" + } + ] + }, + "CommitEvidenceSource": { + "additionalProperties": false, + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "maximumObservationAgeSeconds": { + "format": "uint64", + "maximum": 300, + "minimum": 1, + "type": "integer" + }, + "provider": { + "type": "string" + }, + "requirement": { + "type": "string" + }, + "requires": { + "default": [], + "items": { + "$ref": "#/$defs/CommitEvidenceRequirementSource" + }, + "type": "array" + }, + "subjects": { + "additionalProperties": { + "$ref": "#/$defs/CommitEvidenceSubjectSource" + }, + "propertyNames": { + "$ref": "#/$defs/ExternalId" + }, + "type": "object" + } + }, + "required": [ + "id", + "provider", + "requirement", + "subjects", + "maximumObservationAgeSeconds" + ], + "type": "object" + }, + "CommitEvidenceSubjectSource": { + "additionalProperties": false, + "properties": { + "profile": { + "type": "string" + }, + "selectors": { + "additionalProperties": { + "$ref": "#/$defs/CommitEvidenceSelectorSource" + }, + "description": "Exact governed selector-profile field map. Every profile field must be\npresent exactly once and no undeclared field is admitted.", + "propertyNames": { + "$ref": "#/$defs/ExternalId" + }, + "type": "object" + } + }, + "required": [ + "profile", + "selectors" + ], + "type": "object" + }, + "CommitGuardsSource": { + "additionalProperties": false, + "properties": { + "evidence": { + "default": [], + "items": { + "$ref": "#/$defs/CommitEvidenceSource" + }, + "type": "array" + }, + "targets": { + "default": [], + "items": { + "$ref": "#/$defs/ActionRequirementSource" + }, + "type": "array" + } + }, + "type": "object" + }, + "ComparisonOperator": { + "enum": [ + "less-than", + "less-than-or-equal", + "greater-than", + "greater-than-or-equal" + ], + "type": "string" + }, + "CompiledTaskGrantPermissionSource": { + "additionalProperties": false, + "properties": { + "collection": { + "type": "string" + }, + "operations": { + "items": { + "$ref": "#/$defs/Operation" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "collection", + "operations" + ], + "type": "object" + }, + "CompiledTaskGrantSource": { + "additionalProperties": false, + "properties": { + "permissions": { + "items": { + "$ref": "#/$defs/CompiledTaskGrantPermissionSource" + }, + "type": "array" + }, + "sourceIssuer": { + "$ref": "#/$defs/Url" + } + }, + "required": [ + "sourceIssuer", + "permissions" + ], + "type": "object" + }, + "ConsentDecisionSource": { + "additionalProperties": false, + "description": "Maps the adopter's decision codes onto the engine's decision sets.", + "properties": { + "field": { + "type": "string" + }, + "gives": { + "description": "Codes that give consent.", + "items": { + "type": "string" + }, + "type": "array" + }, + "refusals": { + "description": "Revoke codes never shown to recipients.", + "items": { + "type": "string" + }, + "type": "array" + }, + "revokes": { + "description": "Codes that supersede every give on the same key ordered no later.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "field", + "gives", + "revokes" + ], + "type": "object" + }, + "ConsentIssuerSource": { + "description": "Who an action creates consent rows for.", + "oneOf": [ + { + "const": "self", + "description": "The subject, bound through a principal link entity.", + "type": "string" + }, + { + "const": "steward", + "description": "A reviewed steward act on the subject's behalf.", + "type": "string" + } + ] + }, + "ConsentRecordSource": { + "additionalProperties": false, + "description": "The fields of a consent-record entity the engine reads. Other fields are\nignored by consent enforcement.", + "properties": { + "decision": { + "$ref": "#/$defs/ConsentDecisionSource" + }, + "purpose": { + "description": "A vocabulary-code field compared with the verified request purpose.", + "type": "string" + }, + "recipient": { + "description": "A vocabulary-code field bound to `registry-recipients`.", + "type": "string" + }, + "scope": { + "description": "A vocabulary-code field bound to `registry-consent-scopes`.", + "type": "string" + }, + "subject": { + "description": "A reference field naming the protected subject row.", + "type": "string" + }, + "validity": { + "$ref": "#/$defs/ConsentValiditySource" + } + }, + "required": [ + "subject", + "recipient", + "purpose", + "scope", + "decision", + "validity" + ], + "type": "object" + }, + "ConsentRequirementSource": { + "additionalProperties": false, + "description": "A consent check ANDed into one read permission.", + "properties": { + "on": { + "description": "The permission entity's field the consent subject references; `id` is\nthe row's own identity.", + "type": "string" + }, + "record": { + "description": "The consent-record entity checked.", + "type": "string" + } + }, + "required": [ + "record", + "on" + ], + "type": "object" + }, + "ConsentValiditySource": { + "additionalProperties": false, + "description": "Validity of a consent decision. Every give expires within\n`maximumDurationDays`.", + "properties": { + "from": { + "description": "A required timestamp field; a give is active only from this time.", + "type": "string" + }, + "maximumDurationDays": { + "description": "The longest a give lasts, in whole days of 24 hours: at most 3652,\nten years.", + "format": "uint32", + "maximum": 3652, + "minimum": 1, + "type": "integer" + }, + "until": { + "description": "An optional timestamp field ending the give earlier than\n`maximumDurationDays`.", + "type": "string" + } + }, + "required": [ + "from", + "maximumDurationDays" + ], + "type": "object" + }, + "ConstraintSource": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "fields": { + "items": { + "type": "string" + }, + "type": "array" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "type": { + "const": "unique", + "type": "string" + }, + "when": { + "items": { + "$ref": "#/$defs/UniqueWhenPredicate" + }, + "type": "array" + } + }, + "required": [ + "type", + "fields" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "left": { + "type": "string" + }, + "operator": { + "$ref": "#/$defs/ComparisonOperator" + }, + "right": { + "type": "string" + }, + "type": { + "const": "compare", + "type": "string" + } + }, + "required": [ + "type", + "left", + "operator", + "right" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "field": { + "type": "string" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "maximum": { + "format": "int64", + "maximum": 9223372036854775807, + "minimum": -9223372036854775808, + "type": "integer" + }, + "minimum": { + "format": "int64", + "maximum": 9223372036854775807, + "minimum": -9223372036854775808, + "type": "integer" + }, + "type": { + "const": "int-range", + "type": "string" + } + }, + "required": [ + "type", + "field" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "field": { + "type": "string" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "type": { + "const": "vocabulary", + "type": "string" + }, + "values": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "type", + "field", + "values" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "endField": { + "type": "string" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "lastDayField": { + "description": "The inclusive last day, named in place of `endField` when the\nRecord type's interval declares `lastDayField`.", + "type": "string" + }, + "scopeFields": { + "items": { + "type": "string" + }, + "type": "array" + }, + "startField": { + "type": "string" + }, + "type": { + "const": "temporal-non-overlap", + "type": "string" + } + }, + "required": [ + "type", + "scopeFields" + ], + "type": "object" + } + ] + }, + "CorrectionRelation": { + "description": "How a later event record relates to the one it names.", + "oneOf": [ + { + "const": "corrects", + "description": "Amends an error in the named event record.", + "type": "string" + }, + { + "const": "supersedes", + "description": "Replaces the named event record as the current interpretation.", + "type": "string" + } + ] + }, + "Crs84BboxSource": { + "additionalProperties": false, + "properties": { + "east": { + "type": "string" + }, + "north": { + "type": "string" + }, + "south": { + "type": "string" + }, + "west": { + "type": "string" + } + }, + "required": [ + "west", + "south", + "east", + "north" + ], + "type": "object" + }, + "Crs84PointFieldSourceSchema": { + "additionalProperties": false, + "properties": { + "apiName": { + "type": "string" + }, + "bbox": { + "$ref": "#/$defs/Crs84BboxSource" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "precision": { + "format": "uint32", + "maximum": 9, + "minimum": 0, + "type": "integer" + }, + "required": { + "default": false, + "type": "boolean" + }, + "type": { + "enum": [ + "crs84-point" + ], + "type": "string" + }, + "validTimeRole": { + "$ref": "#/$defs/ValidTimeRole" + } + }, + "required": [ + "id", + "type", + "classification", + "precision" + ], + "type": "object" + }, + "CurrentDatePredicateSource": { + "enum": [ + "on-or-after", + "on-or-before" + ], + "type": "string" + }, + "DateFieldSourceSchema": { + "additionalProperties": false, + "properties": { + "apiName": { + "type": "string" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource" + }, + "encrypted": { + "default": false, + "type": "boolean" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "lookup": { + "$ref": "#/$defs/FieldLookupSource" + }, + "required": { + "default": false, + "type": "boolean" + }, + "type": { + "enum": [ + "date" + ], + "type": "string" + }, + "validTimeRole": { + "$ref": "#/$defs/ValidTimeRole" + } + }, + "required": [ + "id", + "type", + "classification" + ], + "type": "object" + }, + "DecimalFieldSourceSchema": { + "additionalProperties": false, + "properties": { + "apiName": { + "type": "string" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource" + }, + "encrypted": { + "default": false, + "type": "boolean" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "lookup": { + "$ref": "#/$defs/FieldLookupSource" + }, + "maximum": { + "type": "string" + }, + "minimum": { + "type": "string" + }, + "precision": { + "format": "uint32", + "maximum": 38, + "minimum": 1, + "type": "integer" + }, + "required": { + "default": false, + "type": "boolean" + }, + "scale": { + "format": "uint32", + "maximum": 38, + "minimum": 0, + "type": "integer" + }, + "type": { + "enum": [ + "decimal" + ], + "type": "string" + }, + "validTimeRole": { + "$ref": "#/$defs/ValidTimeRole" + } + }, + "required": [ + "id", + "type", + "classification", + "precision", + "scale" + ], + "type": "object" + }, + "DerivedExecutionSource": { + "enum": [ + "live" + ], + "type": "string" + }, + "DerivedFieldSource": { + "oneOf": [ + { + "properties": { + "type": { + "const": "boolean", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "properties": { + "maximumLength": { + "format": "uint32", + "maximum": 1000000, + "minimum": 1, + "type": "integer" + }, + "minimumLength": { + "default": 0, + "format": "uint32", + "maximum": 1000000, + "minimum": 0, + "type": "integer" + }, + "type": { + "const": "string", + "type": "string" + } + }, + "required": [ + "type", + "maximumLength" + ], + "type": "object" + }, + { + "properties": { + "maximumLength": { + "format": "uint32", + "maximum": 10000000, + "minimum": 1, + "type": "integer" + }, + "type": { + "const": "text", + "type": "string" + } + }, + "required": [ + "type", + "maximumLength" + ], + "type": "object" + }, + { + "properties": { + "type": { + "const": "int64", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "properties": { + "maximum": { + "type": "string" + }, + "minimum": { + "type": "string" + }, + "precision": { + "format": "uint32", + "maximum": 38, + "minimum": 1, + "type": "integer" + }, + "scale": { + "format": "uint32", + "maximum": 38, + "minimum": 0, + "type": "integer" + }, + "type": { + "const": "decimal", + "type": "string" + } + }, + "required": [ + "type", + "precision", + "scale" + ], + "type": "object" + }, + { + "properties": { + "type": { + "const": "date", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "properties": { + "type": { + "const": "timestamp", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "properties": { + "type": { + "const": "uuid", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "properties": { + "type": { + "const": "vocabulary-code", + "type": "string" + }, + "values": { + "default": [], + "items": { + "type": "string" + }, + "type": "array" + }, + "vocabulary": { + "type": "string" + } + }, + "required": [ + "type", + "vocabulary" + ], + "type": "object" + }, + { + "properties": { + "onDelete": { + "$ref": "#/$defs/ReferenceDelete", + "default": "restrict" + }, + "target": { + "type": "string" + }, + "type": { + "const": "reference", + "type": "string" + } + }, + "required": [ + "type", + "target" + ], + "type": "object" + }, + { + "properties": { + "bbox": { + "$ref": "#/$defs/Crs84BboxSource" + }, + "precision": { + "format": "uint32", + "maximum": 9, + "minimum": 0, + "type": "integer" + }, + "type": { + "const": "crs84-point", + "type": "string" + } + }, + "required": [ + "type", + "precision" + ], + "type": "object" + }, + { + "properties": { + "maximumBytes": { + "format": "uint32", + "maximum": 1048576, + "minimum": 1, + "type": "integer" + }, + "schema": { + "x-registry-foreign": "json-schema-2020-12" + }, + "type": { + "const": "structured", + "type": "string" + } + }, + "required": [ + "type", + "maximumBytes", + "schema" + ], + "type": "object" + } + ], + "properties": { + "apiName": { + "type": "string" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource" + }, + "id": { + "$ref": "#/$defs/LocalId" + } + }, + "required": [ + "id", + "classification" + ], + "type": "object", + "unevaluatedProperties": false + }, + "DerivedSource": { + "additionalProperties": false, + "properties": { + "execution": { + "$ref": "#/$defs/DerivedExecutionSource", + "default": "live" + }, + "fields": { + "default": [], + "items": { + "$ref": "#/$defs/DerivedFieldSource" + }, + "type": "array" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "key": { + "type": "string" + }, + "sql": { + "type": "string" + } + }, + "required": [ + "id", + "sql", + "key" + ], + "type": "object" + }, + "Digest": { + "description": "A SHA-256 digest: `sha256:` followed by 64 lowercase hex digits.", + "pattern": "^sha256:[0-9a-f]{64}$", + "type": "string" + }, + "DisplayPurpose": { + "description": "The purpose a Record or Action declares for itself.", + "enum": [ + "domain", + "processing", + "technical", + "synthetic-seed" + ], + "type": "string" + }, + "DisplaySource": { + "additionalProperties": false, + "properties": { + "description": { + "$ref": "#/$defs/DisplayText" + }, + "label": { + "$ref": "#/$defs/DisplayText" + }, + "titleField": { + "type": "string" + } + }, + "type": "object" + }, + "DisplayText": { + "description": "Human-readable display text. Bidirectional embedding, override, and isolate controls, byte-order marks, line and paragraph separators, and Unicode noncharacters are refused; multilingual joiners and direction marks remain valid.", + "not": { + "pattern": "[

‪-‮⁦-⁩﷐-﷯￾￿]|🿾|🿿|𯿾|𯿿|𿿾|𿿿|񏿾|񏿿|񟿾|񟿿|񯿾|񯿿|񿿾|񿿿|򏿾|򏿿|򟿾|򟿿|򯿾|򯿿|򿿾|򿿿|󏿾|󏿿|󟿾|󟿿|󯿾|󯿿|󿿾|󿿿|􏿾|􏿿" + }, + "type": "string" + }, + "DuplicatePolicy": { + "description": "What the author says about the same source event arriving twice.", + "enum": [ + "reject", + "allow" + ], + "type": "string" + }, + "EffectiveTimeSource": { + "additionalProperties": false, + "description": "A point or a span of effect. An open end means the effect has no end.", + "properties": { + "at": { + "type": "string" + }, + "end": { + "type": "string" + }, + "start": { + "type": "string" + } + }, + "type": "object" + }, + "EntityExtensionSource": { + "additionalProperties": false, + "properties": { + "accessProfiles": { + "default": [], + "description": "Module profile contributions, read through the sentinels a project profile uses.", + "items": { + "$ref": "#/$defs/AccessProfileSource" + }, + "type": "array" + }, + "accessRequirements": { + "$ref": "#/$defs/AccessRequirementsSource", + "description": "Add mandatory requirements only when the entity has none; replacing them is refused." + }, + "constraints": { + "default": [], + "items": { + "$ref": "#/$defs/ConstraintSource" + }, + "type": "array" + }, + "derived": { + "items": { + "$ref": "#/$defs/DerivedSource" + }, + "type": "array" + }, + "fields": { + "default": [], + "items": { + "$ref": "#/$defs/FieldSource" + }, + "type": "array" + }, + "geojson": { + "$ref": "#/$defs/GeoJsonSource" + }, + "hooks": { + "default": [], + "items": { + "$ref": "#/$defs/HookSource" + }, + "type": "array" + }, + "indexes": { + "default": [], + "items": { + "$ref": "#/$defs/IndexSource" + }, + "type": "array" + }, + "mutationPolicy": { + "$ref": "#/$defs/MutationPolicySource" + }, + "readPaths": { + "items": { + "$ref": "#/$defs/ReadPathSource" + }, + "type": "array" + }, + "recordType": { + "type": "string" + }, + "selectorProfiles": { + "items": { + "$ref": "#/$defs/SelectorProfileSource" + }, + "type": "array" + }, + "timers": { + "description": "Additive timer definitions. Only a root-project `timerGrants` entry can\nenable a contributed timer.", + "items": { + "$ref": "#/$defs/TimerSource" + }, + "type": "array" + } + }, + "required": [ + "recordType" + ], + "type": "object" + }, + "EntitySource": { + "additionalProperties": false, + "properties": { + "accessLog": { + "$ref": "#/$defs/AccessLogSource", + "description": "Subject-facing record access history, separate from the operational audit." + }, + "accessProfiles": { + "default": [], + "description": "Module profile contributions, read through the sentinels a project profile uses.", + "items": { + "$ref": "#/$defs/AccessProfileSource" + }, + "type": "array" + }, + "accessRequirements": { + "$ref": "#/$defs/AccessRequirementsSource", + "description": "Mandatory request-access requirements checked against every profile, including module contributions." + }, + "apiName": { + "type": "string" + }, + "batch": { + "$ref": "#/$defs/BatchSource" + }, + "classification": { + "$ref": "#/$defs/Classification", + "default": "internal" + }, + "consentRecord": { + "$ref": "#/$defs/ConsentRecordSource", + "description": "Declares this entity's rows as subject-issued consent decisions that\n`requireConsent` permissions check before returning a subject's row." + }, + "constraints": { + "default": [], + "items": { + "$ref": "#/$defs/ConstraintSource" + }, + "type": "array" + }, + "derived": { + "items": { + "$ref": "#/$defs/DerivedSource" + }, + "type": "array" + }, + "display": { + "$ref": "#/$defs/ModelDisplaySource", + "default": {} + }, + "eventRecord": { + "$ref": "#/$defs/EventRecordSource", + "description": "Declares this record type's rows as event records: which fields\nsay what the row is about, when it happened, when it takes effect, what\nit was recorded from and what it corrects. It adds no storage, endpoint\nor authority." + }, + "fields": { + "default": [], + "items": { + "$ref": "#/$defs/FieldSource" + }, + "type": "array" + }, + "geojson": { + "$ref": "#/$defs/GeoJsonSource" + }, + "hooks": { + "default": [], + "items": { + "$ref": "#/$defs/HookSource" + }, + "type": "array" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "indexes": { + "default": [], + "items": { + "$ref": "#/$defs/IndexSource" + }, + "type": "array" + }, + "mutationMode": { + "$ref": "#/$defs/MutationMode" + }, + "mutationPolicy": { + "$ref": "#/$defs/MutationPolicySource" + }, + "primaryDataset": { + "type": "string" + }, + "readPaths": { + "items": { + "$ref": "#/$defs/ReadPathSource" + }, + "type": "array" + }, + "route": { + "type": "string" + }, + "selectorProfiles": { + "items": { + "$ref": "#/$defs/SelectorProfileSource" + }, + "type": "array" + }, + "temporal": { + "$ref": "#/$defs/TemporalSource" + }, + "timers": { + "items": { + "$ref": "#/$defs/TimerSource" + }, + "type": "array" + }, + "tombstone": { + "default": false, + "type": "boolean" + } + }, + "required": [ + "id", + "primaryDataset", + "route", + "mutationMode" + ], + "type": "object" + }, + "EventConditionSource": { + "additionalProperties": false, + "description": "Closed Version 1 event selection language.\n\nA tagged shape leaves room for a later, separately governed rule ABI\nwithout turning fields into an ad hoc expression language. The shared\nreader's union helper decodes it, so an error inside a variant keeps its\nposition (CFG-SCHEMA-8). An unset value is named in `beforeIsNull` or\n`afterIsNull`; `null` is never a comparison literal (CFG-EMPTY-1).", + "properties": { + "afterEquals": { + "additionalProperties": { + "$ref": "#/$defs/ScalarLiteral" + }, + "default": {}, + "description": "Required values after the change. Valid with created and patched triggers.", + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "afterIsNull": { + "default": [], + "description": "Fields that must be unset after the change. Valid with created and patched triggers.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "beforeEquals": { + "additionalProperties": { + "$ref": "#/$defs/ScalarLiteral" + }, + "default": {}, + "description": "Required values before the change. Valid with patched and tombstoned triggers.", + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "beforeIsNull": { + "default": [], + "description": "Fields that must be unset before the change. Valid with patched and tombstoned triggers.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "changed": { + "default": [], + "description": "Fields whose values must change. Only valid with the patched trigger.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "type": { + "const": "fields", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + "EventRecordCorrectionSource": { + "additionalProperties": false, + "properties": { + "field": { + "description": "A reference to a record type that also declares an event record.", + "type": "string" + }, + "relation": { + "$ref": "#/$defs/CorrectionRelation" + } + }, + "required": [ + "field", + "relation" + ], + "type": "object" + }, + "EventRecordRoleSource": { + "additionalProperties": false, + "description": "One named role played by a stored field.", + "properties": { + "external": { + "$ref": "#/$defs/ExternalReferenceSource", + "description": "Marks the field as an opaque identifier owned by another system." + }, + "field": { + "type": "string" + }, + "label": { + "$ref": "#/$defs/DisplayText" + }, + "role": { + "type": "string" + }, + "target": { + "description": "Asserts the record type a native reference field points at.", + "type": "string" + } + }, + "required": [ + "role", + "field" + ], + "type": "object" + }, + "EventRecordSource": { + "additionalProperties": false, + "description": "The record-level mapping of stored fields onto event record roles.", + "properties": { + "correction": { + "$ref": "#/$defs/EventRecordCorrectionSource" + }, + "effective": { + "$ref": "#/$defs/EffectiveTimeSource" + }, + "label": { + "$ref": "#/$defs/DisplayText" + }, + "occurredAt": { + "$ref": "#/$defs/EventRecordTimeSource" + }, + "sourceEventId": { + "$ref": "#/$defs/SourceEventIdSource" + }, + "sources": { + "description": "What the event record was recorded from. Recording a reference is not\nverifying it.", + "items": { + "$ref": "#/$defs/EventRecordRoleSource" + }, + "type": "array" + }, + "subjects": { + "description": "What the event record is about. At least one, at most 16. The serde\ndefault only lets compilation report the stable emptiness diagnostic.", + "items": { + "$ref": "#/$defs/EventRecordRoleSource" + }, + "type": "array" + }, + "summary": { + "description": "A `string` or `text` field holding a human summary.", + "type": "string" + } + }, + "required": [ + "subjects" + ], + "type": "object" + }, + "EventRecordTimeSource": { + "additionalProperties": false, + "description": "A point (`at`) or an interval (`start`, `end`, `meaning`). Flat optional\nmembers let the compiler address each shape error at its authored path.", + "properties": { + "at": { + "type": "string" + }, + "end": { + "type": "string" + }, + "meaning": { + "$ref": "#/$defs/IntervalMeaning" + }, + "start": { + "type": "string" + } + }, + "type": "object" + }, + "EventTrigger": { + "enum": [ + "created", + "patched", + "tombstoned" + ], + "type": "string" + }, + "EvidenceSubjectSource": { + "additionalProperties": false, + "properties": { + "profile": { + "type": "string" + } + }, + "required": [ + "profile" + ], + "type": "object" + }, + "ExternalId": { + "description": "An identifier another system issues, written exactly as its issuer gives it.", + "maxLength": 512, + "minLength": 1, + "pattern": "^[^\\u0000-\\u001F\\u007F-\\u009F]+$", + "type": "string" + }, + "ExternalReferenceSource": { + "additionalProperties": false, + "properties": { + "namespace": { + "description": "Absolute URI naming the system that owns the identifier.", + "type": "string" + } + }, + "required": [ + "namespace" + ], + "type": "object" + }, + "FieldGenerationSource": { + "description": "Server-side generation requested for a persisted business identifier.\n\nThe canonical record UUID remains independent. On a sequence, `scope`\nnames required, immutable stored fields whose values partition the\nnumbering. A random code has one namespace per field.", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "minimumDigits": { + "format": "uint32", + "maximum": 128, + "minimum": 1, + "type": "integer" + }, + "prefix": { + "default": "", + "maxLength": 128, + "pattern": "^[!-~]*$", + "type": "string" + }, + "scope": { + "default": [], + "items": { + "type": "string" + }, + "maxItems": 8, + "type": "array", + "uniqueItems": true + }, + "type": { + "const": "sequence", + "type": "string" + } + }, + "required": [ + "type", + "minimumDigits" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "length": { + "format": "uint32", + "maximum": 128, + "minimum": 1, + "type": "integer" + }, + "prefix": { + "default": "", + "maxLength": 128, + "pattern": "^[!-~]*$", + "type": "string" + }, + "type": { + "const": "random", + "type": "string" + } + }, + "required": [ + "type", + "length" + ], + "type": "object" + } + ] + }, + "FieldLookupSource": { + "additionalProperties": false, + "description": "The authored blind-index declaration for an encrypted field. Normalization\ncomposes in declared order over the canonical string form of the value;\n`unique` requests a unique index over the derived blind-index column.", + "properties": { + "normalization": { + "default": [], + "items": { + "$ref": "#/$defs/NormalizationStep" + }, + "maxItems": 8, + "type": "array" + }, + "unique": { + "default": false, + "type": "boolean" + } + }, + "type": "object" + }, + "FieldSource": { + "anyOf": [ + { + "$ref": "#/$defs/BooleanFieldSourceSchema" + }, + { + "$ref": "#/$defs/StringFieldSourceSchema" + }, + { + "$ref": "#/$defs/TextFieldSourceSchema" + }, + { + "$ref": "#/$defs/Int64FieldSourceSchema" + }, + { + "$ref": "#/$defs/DecimalFieldSourceSchema" + }, + { + "$ref": "#/$defs/DateFieldSourceSchema" + }, + { + "$ref": "#/$defs/TimestampFieldSourceSchema" + }, + { + "$ref": "#/$defs/UuidFieldSourceSchema" + }, + { + "$ref": "#/$defs/VocabularyCodeFieldSourceSchema" + }, + { + "$ref": "#/$defs/ReferenceFieldSourceSchema" + }, + { + "$ref": "#/$defs/Crs84PointFieldSourceSchema" + }, + { + "$ref": "#/$defs/StructuredFieldSourceSchema" + }, + { + "additionalProperties": false, + "properties": { + "apiName": { + "type": "string" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource" + }, + "encrypted": { + "default": false, + "type": "boolean" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "lookup": { + "$ref": "#/$defs/FieldLookupSource" + }, + "pattern": { + "type": "string" + }, + "relationship": { + "additionalProperties": false, + "properties": { + "inverseName": { + "pattern": "^[a-z][A-Za-z0-9]*$", + "type": "string" + } + }, + "type": "object" + }, + "required": { + "default": false, + "type": "boolean" + }, + "typeRef": { + "$ref": "#/$defs/LocalId" + }, + "validTimeRole": { + "$ref": "#/$defs/ValidTimeRole" + } + }, + "required": [ + "id", + "typeRef", + "classification" + ], + "type": "object" + } + ] + }, + "FunctionCapabilitySource": { + "enum": [ + "evidence" + ], + "type": "string" + }, + "FunctionLimitsSource": { + "additionalProperties": false, + "properties": { + "maximumOperations": { + "default": 10000, + "format": "uint64", + "maximum": 100000, + "minimum": 1, + "type": "integer" + }, + "maximumOutputBytes": { + "default": 8192, + "format": "uint32", + "maximum": 2097152, + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + }, + "FunctionSource": { + "additionalProperties": false, + "properties": { + "abi": { + "const": "registry.action-plan/v1", + "type": "string" + }, + "capabilities": { + "default": [], + "items": { + "$ref": "#/$defs/FunctionCapabilitySource" + }, + "type": "array", + "uniqueItems": true + }, + "entrypoint": { + "type": "string" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "limits": { + "$ref": "#/$defs/FunctionLimitsSource", + "default": { + "maximumOperations": 10000, + "maximumOutputBytes": 8192 + } + }, + "runtime": { + "$ref": "#/$defs/ActionHandlerKindSource" + }, + "source": { + "type": "string" + } + }, + "required": [ + "id", + "runtime", + "source", + "entrypoint", + "abi" + ], + "type": "object" + }, + "GeoJsonSource": { + "additionalProperties": false, + "properties": { + "geometryField": { + "type": "string" + } + }, + "required": [ + "geometryField" + ], + "type": "object" + }, + "GuardRevisionSource": { + "enum": [ + "unchanged" + ], + "type": "string" + }, + "HookHandlerSource": { + "description": "Where a hook's handler runs.\n\nThe pairing rule: `rhai` requires `script`, `wasm` requires `module`,\n`url` requires `destinationId`, and each\nkind requires exactly its own fields and nothing else. `abi` is required on\n`rhai` and `wasm` and forbidden on `url`; its value is closed and checked at\ncompile time in [`crate::validate_hooks`].", + "oneOf": [ + { + "additionalProperties": false, + "description": "A reviewed Rhai script in the project.", + "properties": { + "abi": { + "description": "The handler ABI the script speaks.", + "type": "string" + }, + "script": { + "description": "Script path in the project.", + "type": "string" + }, + "type": { + "const": "rhai", + "type": "string" + } + }, + "required": [ + "type", + "script" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "A reviewed WASM module in the project.", + "properties": { + "abi": { + "description": "The handler ABI the module speaks.", + "type": "string" + }, + "module": { + "description": "Module path in the project.", + "type": "string" + }, + "type": { + "const": "wasm", + "type": "string" + } + }, + "required": [ + "type", + "module" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "A logical destination bound to a URL and a secret at runtime. The\nruntime names the binding it looks the key up in; the project carries\nno URL or secret.", + "properties": { + "destinationId": { + "description": "Key in the runtime destination binding.", + "type": "string" + }, + "type": { + "const": "url", + "type": "string" + } + }, + "required": [ + "type", + "destinationId" + ], + "type": "object" + } + ] + }, + "HookPhase": { + "description": "When the hook runs relative to the triggering transaction.", + "oneOf": [ + { + "const": "before", + "description": "Runs inside the triggering transaction and may refuse or shape the\nchange. Local handler kinds only.", + "type": "string" + }, + { + "const": "after", + "description": "Runs after commit in the post-commit worker and cannot affect the\ntriggering transaction.", + "type": "string" + } + ] + }, + "HookSource": { + "additionalProperties": false, + "description": "One declared hook on an entity.\n\nThe shape is [`registry_platform_hooks::HookDeclaration`] with `trigger`\nand `when` closed to the vocabulary this compiler validates, and with\n`handler` optional. A hook that declares no handler is still recorded in\nthe outbox and delivered nowhere; production compilation refuses that.\n\nEntity hooks run after the triggering transaction commits, so `phase` is\nwritten and the compiler refuses any value it cannot run.", + "properties": { + "display": { + "$ref": "#/$defs/PresentationSource", + "description": "Authored presentation only; labels never establish identity or authority." + }, + "handler": { + "$ref": "#/$defs/HookHandlerSource", + "description": "Governed, destination-neutral delivery. `destinationId` is a key in\nruntime `destinations.hooks`; the project carries no URL or secret, and\ndeployment configuration may tighten the bounds it binds but cannot\nsupply or widen this authority. Production compilation requires it." + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "Stable hook contract identifier, sent as `ce-type`. Use a new identifier for a breaking payload change." + }, + "phase": { + "$ref": "#/$defs/HookPhase", + "description": "When the hook runs relative to the triggering transaction." + }, + "principal": { + "description": "The access profile a proposal from this hook is applied under.\nOptional: a hook that declares none is a non-proposing hook, and a\nproposal from one is refused and dead-lettered at delivery time.\nDeclaring none is not an authoring error.", + "type": "string" + }, + "projection": { + "description": "Declared field identifiers to include in `values`. System event metadata is included separately.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "trigger": { + "$ref": "#/$defs/EventTrigger", + "description": "Committed record change that can produce this hook." + }, + "when": { + "$ref": "#/$defs/EventConditionSource", + "description": "Optional field tests, combined with AND. Omit to run on every matching trigger." + } + }, + "required": [ + "id", + "phase", + "trigger", + "projection" + ], + "type": "object" + }, + "IndexSource": { + "additionalProperties": false, + "properties": { + "fields": { + "items": { + "type": "string" + }, + "maxItems": 31, + "type": "array" + }, + "id": { + "$ref": "#/$defs/LocalId" + } + }, + "required": [ + "id", + "fields" + ], + "type": "object" + }, + "Int64FieldSourceSchema": { + "additionalProperties": false, + "properties": { + "apiName": { + "type": "string" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "required": { + "default": false, + "type": "boolean" + }, + "type": { + "enum": [ + "int64" + ], + "type": "string" + }, + "validTimeRole": { + "$ref": "#/$defs/ValidTimeRole" + } + }, + "required": [ + "id", + "type", + "classification" + ], + "type": "object" + }, + "IntervalMeaning": { + "description": "What an event record's interval says about the event.", + "oneOf": [ + { + "const": "span", + "description": "The event lasted from start to end.", + "type": "string" + }, + { + "const": "within", + "description": "The event happened at an unknown instant between start and end.", + "type": "string" + } + ] + }, + "LocalId": { + "description": "A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.", + "pattern": "^[a-z][a-z0-9_-]{0,63}$", + "type": "string" + }, + "LookupPermissionSource": { + "additionalProperties": false, + "properties": { + "claimMapping": { + "additionalProperties": { + "type": "string" + }, + "default": {}, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "selector": { + "type": "string" + }, + "valueOrigin": { + "$ref": "#/$defs/LookupValueOrigin" + } + }, + "required": [ + "selector", + "valueOrigin" + ], + "type": "object" + }, + "LookupValueOrigin": { + "enum": [ + "request", + "verified-claim" + ], + "type": "string" + }, + "MembershipBoundarySource": { + "additionalProperties": false, + "description": "A one-hop current membership requirement, combined with every other row boundary.\nThe root field and membership key must reference the same entity. The active\nfield is Boolean, and principalField matches the profile's verified principal.", + "properties": { + "activeField": { + "type": "string" + }, + "field": { + "type": "string" + }, + "membershipKeyField": { + "type": "string" + }, + "membershipRecordType": { + "type": "string" + }, + "principalField": { + "type": "string" + } + }, + "required": [ + "field", + "membershipRecordType", + "membershipKeyField", + "principalField", + "activeField" + ], + "type": "object" + }, + "ModelDisplaySource": { + "additionalProperties": false, + "description": "How a Record or Action is presented in the declared-model view. It adds\npresentation-only grouping, which no runtime surface reads, to the plain\ndisplay text members.", + "properties": { + "description": { + "$ref": "#/$defs/DisplayText" + }, + "group": { + "$ref": "#/$defs/DisplayText", + "description": "Display group; objects sharing the exact string are listed together." + }, + "label": { + "$ref": "#/$defs/DisplayText" + }, + "purpose": { + "$ref": "#/$defs/DisplayPurpose", + "description": "What the object is for. Presentation only." + }, + "titleField": { + "type": "string" + } + }, + "type": "object" + }, + "MutationMode": { + "enum": [ + "mutable", + "create-only" + ], + "type": "string" + }, + "MutationPolicyMode": { + "enum": [ + "direct", + "proposal-required" + ], + "type": "string" + }, + "MutationPolicySource": { + "additionalProperties": false, + "properties": { + "create": { + "$ref": "#/$defs/MutationPolicyMode" + }, + "patch": { + "$ref": "#/$defs/MutationPolicyMode" + }, + "tombstone": { + "$ref": "#/$defs/MutationPolicyMode" + } + }, + "type": "object" + }, + "NormalizationStep": { + "description": "A normalization step applied to the canonical string form of an encrypted\nvalue before its blind index is derived. The vocabulary is closed.", + "oneOf": [ + { + "enum": [ + "trim", + "uppercase", + "lowercase", + "collapse-whitespace" + ], + "type": "string" + }, + { + "const": "remove-separators", + "description": "Strips spaces, hyphens, slashes, and dots from the canonical form.", + "type": "string" + }, + { + "const": "nfc", + "description": "Canonical composition (Unicode NFC), so a precomposed letter and its\nbase letter plus combining mark give the same value. Compatibility\nforms such as ligatures are not mapped.", + "type": "string" + }, + { + "const": "case-fold", + "description": "NFC, then full Unicode case folding with no locale tailoring, then NFC\nagain: `ß` and `ẞ` fold to `ss`, `ς` folds to `σ`, canonically\nequivalent spellings fold alike whatever the order of their combining\nmarks, and a capital that folds to a decomposed sequence is composed\nagain. Unlike `lowercase` it is meant for matching, so it is the case\nstep to pair with `nfc`.", + "type": "string" + } + ] + }, + "Operation": { + "oneOf": [ + { + "enum": [ + "create", + "get", + "lookup", + "list", + "patch", + "tombstone", + "batch", + "revisions", + "snapshot", + "invoke", + "start" + ], + "type": "string" + }, + { + "const": "import", + "description": "Create records through a durable ingestion run, and nothing else. The\ngrant is enabled only while an operator-opened import authority is open\nfor the entity and profile. It declares no item route and no raw batch\nroute, and change control does not count it as a direct write.", + "type": "string" + } + ] + }, + "PolicySelectionSource": { + "additionalProperties": false, + "dependentRequired": { + "digest": [ + "version" + ], + "version": [ + "digest" + ] + }, + "properties": { + "digest": { + "$ref": "#/$defs/Digest" + }, + "id": { + "$comment": "The review protocol also bounds UTF-8 bytes, which the reader checks without restricting externally issued identifiers to ASCII.", + "allOf": [ + { + "$ref": "#/$defs/ExternalId" + } + ], + "maxLength": 128 + }, + "version": { + "type": "string" + } + }, + "required": [ + "id" + ], + "type": "object" + }, + "PresentationSource": { + "additionalProperties": false, + "description": "Authored words for an object without a Record's title-field selection.", + "properties": { + "description": { + "$ref": "#/$defs/DisplayText" + }, + "label": { + "$ref": "#/$defs/DisplayText" + } + }, + "type": "object" + }, + "ProposalApplicationSource": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "mode": { + "const": "manual", + "type": "string" + } + }, + "required": [ + "mode" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "maximumAttempts": { + "default": 3, + "format": "uint32", + "maximum": 32, + "minimum": 1, + "type": "integer" + }, + "mode": { + "const": "automatic", + "type": "string" + } + }, + "required": [ + "mode" + ], + "type": "object" + } + ] + }, + "ProposalContextValueSource": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "slot": { + "$ref": "#/$defs/LocalId" + }, + "type": { + "const": "document", + "type": "string" + } + }, + "required": [ + "type", + "slot" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "input": { + "$ref": "#/$defs/LocalId" + }, + "type": { + "const": "input", + "type": "string" + } + }, + "required": [ + "type", + "input" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "field": { + "$ref": "#/$defs/LocalId" + }, + "input": { + "$ref": "#/$defs/LocalId" + }, + "type": { + "const": "record", + "type": "string" + } + }, + "required": [ + "type", + "input", + "field" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "fields": { + "items": { + "type": "string" + }, + "type": "array" + }, + "recordType": { + "$ref": "#/$defs/LocalId" + }, + "type": { + "const": "changes", + "type": "string" + } + }, + "required": [ + "type", + "recordType", + "fields" + ], + "type": "object" + } + ] + }, + "ProposalEventTransition": { + "enum": [ + "started", + "edited", + "submitted", + "revised", + "rebased", + "retried", + "cancelled", + "applied", + "rejected", + "review-returned" + ], + "type": "string" + }, + "ProposalHookSource": { + "additionalProperties": false, + "properties": { + "display": { + "$ref": "#/$defs/PresentationSource", + "description": "Authored presentation only; labels never establish identity or authority." + }, + "handler": { + "$ref": "#/$defs/HookHandlerSource" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "transitions": { + "description": "Omit to observe every committed lifecycle transition.", + "items": { + "$ref": "#/$defs/ProposalEventTransition" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "id", + "handler" + ], + "type": "object" + }, + "ProposalPolicySource": { + "additionalProperties": false, + "properties": { + "application": { + "$ref": "#/$defs/ProposalApplicationSource", + "default": { + "maximumAttempts": 3, + "mode": "automatic" + } + }, + "attachments": { + "default": [], + "items": { + "$ref": "#/$defs/AttachmentSlotSource" + }, + "type": "array" + }, + "hooks": { + "description": "Post-commit observers of the fixed, value-free Proposal lifecycle event.", + "items": { + "$ref": "#/$defs/ProposalHookSource" + }, + "type": "array" + }, + "retention": { + "$ref": "#/$defs/ProposalRetentionSource" + }, + "review": { + "$ref": "#/$defs/ProposalReviewSource" + }, + "reviewContext": { + "$ref": "#/$defs/ProposalReviewContextSource" + } + }, + "required": [ + "review", + "retention" + ], + "type": "object" + }, + "ProposalRetentionMode": { + "enum": [ + "retain", + "operator-erase" + ], + "type": "string" + }, + "ProposalRetentionSource": { + "additionalProperties": false, + "properties": { + "mode": { + "$ref": "#/$defs/ProposalRetentionMode" + } + }, + "required": [ + "mode" + ], + "type": "object" + }, + "ProposalReviewContextSource": { + "additionalProperties": false, + "properties": { + "fields": { + "additionalProperties": { + "$ref": "#/$defs/ProposalContextValueSource" + }, + "maxProperties": 64, + "propertyNames": { + "maxLength": 64, + "minLength": 1, + "not": { + "enum": [ + "id", + "recordId", + "revision", + "createdAt", + "updatedAt", + "deletedAt" + ], + "x-registry-member-names": true + }, + "pattern": "^[a-z][A-Za-z0-9]{0,63}$", + "type": "string" + }, + "type": "object", + "x-registry-member-names": true + }, + "id": { + "$ref": "#/$defs/LocalId" + } + }, + "required": [ + "id", + "fields" + ], + "type": "object" + }, + "ProposalReviewSource": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "type": { + "const": "none", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "authority": { + "type": "string" + }, + "policy": { + "$ref": "#/$defs/PolicySelectionSource" + }, + "source": { + "type": "string" + }, + "type": { + "const": "required", + "type": "string" + } + }, + "required": [ + "type", + "authority", + "source", + "policy" + ], + "type": "object" + } + ] + }, + "ProvenanceFieldSource": { + "description": "A member of a revision's `changeContext` a profile may read. Each value\nis spelled as the member it names is (CFG-NAME-2).", + "enum": [ + "kind", + "reasonCode", + "reasonText", + "sourceReferences" + ], + "type": "string", + "x-registry-member-names": true + }, + "ReadPathPermissionSource": { + "additionalProperties": false, + "properties": { + "allowCount": { + "default": false, + "type": "boolean" + }, + "filterableFields": { + "default": [], + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "path": { + "type": "string" + }, + "readableFields": { + "default": [], + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "sortableFields": { + "default": [], + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "path" + ], + "type": "object" + }, + "ReadPathSource": { + "additionalProperties": false, + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "route": { + "type": "string" + }, + "through": { + "type": "string" + }, + "to": { + "type": "string" + } + }, + "required": [ + "id", + "through", + "to", + "route" + ], + "type": "object" + }, + "ReferenceDelete": { + "enum": [ + "restrict" + ], + "type": "string" + }, + "ReferenceFieldSourceSchema": { + "additionalProperties": false, + "properties": { + "apiName": { + "type": "string" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "onDelete": { + "$ref": "#/$defs/ReferenceDelete", + "default": "restrict" + }, + "relationship": { + "additionalProperties": false, + "properties": { + "inverseName": { + "pattern": "^[a-z][A-Za-z0-9]*$", + "type": "string" + } + }, + "type": "object" + }, + "required": { + "default": false, + "type": "boolean" + }, + "target": { + "type": "string" + }, + "type": { + "enum": [ + "reference" + ], + "type": "string" + }, + "validTimeRole": { + "$ref": "#/$defs/ValidTimeRole" + } + }, + "required": [ + "id", + "type", + "classification", + "target" + ], + "type": "object" + }, + "RequiredScopes": { + "anyOf": [ + { + "const": "unrestricted", + "description": "Require no scope.", + "type": "string" + }, + { + "description": "Require every listed scope.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + ], + "description": "The scopes a token must carry to select a profile: the keyword\n`unrestricted`, or a list of at least one scope." + }, + "ReusableValueTypeSource": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "type": { + "const": "boolean", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "maximumLength": { + "format": "uint32", + "maximum": 1000000, + "minimum": 1, + "type": "integer" + }, + "minimumLength": { + "default": 0, + "format": "uint32", + "maximum": 1000000, + "minimum": 0, + "type": "integer" + }, + "type": { + "const": "string", + "type": "string" + } + }, + "required": [ + "type", + "maximumLength" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "maximumLength": { + "format": "uint32", + "maximum": 10000000, + "minimum": 1, + "type": "integer" + }, + "type": { + "const": "text", + "type": "string" + } + }, + "required": [ + "type", + "maximumLength" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "type": { + "const": "int64", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "maximum": { + "type": "string" + }, + "minimum": { + "type": "string" + }, + "precision": { + "format": "uint32", + "maximum": 38, + "minimum": 1, + "type": "integer" + }, + "scale": { + "format": "uint32", + "maximum": 38, + "minimum": 0, + "type": "integer" + }, + "type": { + "const": "decimal", + "type": "string" + } + }, + "required": [ + "type", + "precision", + "scale" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "type": { + "const": "date", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "type": { + "const": "timestamp", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "type": { + "const": "uuid", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "type": { + "const": "vocabulary-code", + "type": "string" + }, + "values": { + "default": [], + "items": { + "type": "string" + }, + "type": "array" + }, + "vocabulary": { + "type": "string" + } + }, + "required": [ + "type", + "vocabulary" + ], + "type": "object" + } + ] + }, + "RowBoundaries": { + "anyOf": [ + { + "const": "unrestricted", + "description": "Reach every row.", + "type": "string" + }, + { + "description": "Reach the rows every listed boundary binds to the caller's claims.", + "items": { + "$ref": "#/$defs/RowBoundarySource" + }, + "minItems": 1, + "type": "array" + } + ], + "description": "The rows a permission reaches: the keyword `unrestricted`, or a list of at\nleast one row boundary." + }, + "RowBoundarySource": { + "additionalProperties": false, + "properties": { + "claim": { + "type": "string" + }, + "field": { + "type": "string" + }, + "operator": { + "$ref": "#/$defs/BoundaryOperator" + } + }, + "required": [ + "field", + "claim", + "operator" + ], + "type": "object" + }, + "ScalarLiteral": { + "description": "A comparison literal: a boolean, a number, or text.", + "type": [ + "boolean", + "number", + "string" + ] + }, + "SelectorProfileSource": { + "additionalProperties": false, + "properties": { + "fields": { + "items": { + "type": "string" + }, + "type": "array" + }, + "id": { + "$ref": "#/$defs/LocalId" + } + }, + "required": [ + "id", + "fields" + ], + "type": "object" + }, + "SourceEventIdSource": { + "additionalProperties": false, + "description": "The identifier an event record carries from the system it was recorded from.", + "properties": { + "constraint": { + "description": "The authored unique constraint that enforces `duplicates: reject`.", + "type": "string" + }, + "duplicates": { + "$ref": "#/$defs/DuplicatePolicy" + }, + "field": { + "type": "string" + }, + "namespace": { + "description": "Absolute URI naming the identifier's namespace. Exactly one of\n`namespace` and `namespaceField` is declared.", + "type": "string" + }, + "namespaceField": { + "type": "string" + } + }, + "required": [ + "field", + "duplicates" + ], + "type": "object" + }, + "SpatialBboxPermissionSource": { + "additionalProperties": false, + "properties": { + "maximumLatitudeSpanDegrees": { + "type": "number" + }, + "maximumLongitudeSpanDegrees": { + "type": "number" + } + }, + "required": [ + "maximumLongitudeSpanDegrees", + "maximumLatitudeSpanDegrees" + ], + "type": "object" + }, + "SpatialQueryPermissionSource": { + "additionalProperties": false, + "properties": { + "bbox": { + "$ref": "#/$defs/SpatialBboxPermissionSource" + } + }, + "type": "object" + }, + "StringFieldSourceSchema": { + "additionalProperties": false, + "properties": { + "apiName": { + "type": "string" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource" + }, + "encrypted": { + "default": false, + "type": "boolean" + }, + "generate": { + "$ref": "#/$defs/FieldGenerationSource" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "lookup": { + "$ref": "#/$defs/FieldLookupSource" + }, + "maximumLength": { + "format": "uint32", + "maximum": 1000000, + "minimum": 1, + "type": "integer" + }, + "minimumLength": { + "default": 0, + "format": "uint32", + "maximum": 1000000, + "minimum": 0, + "type": "integer" + }, + "pattern": { + "type": "string" + }, + "required": { + "default": false, + "type": "boolean" + }, + "type": { + "enum": [ + "string" + ], + "type": "string" + }, + "validTimeRole": { + "$ref": "#/$defs/ValidTimeRole" + } + }, + "required": [ + "id", + "type", + "classification", + "maximumLength" + ], + "type": "object" + }, + "StructuredFieldSourceSchema": { + "additionalProperties": false, + "properties": { + "apiName": { + "type": "string" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource" + }, + "encrypted": { + "default": false, + "type": "boolean" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "lookup": { + "$ref": "#/$defs/FieldLookupSource" + }, + "maximumBytes": { + "format": "uint32", + "maximum": 1048576, + "minimum": 1, + "type": "integer" + }, + "required": { + "default": false, + "type": "boolean" + }, + "schema": { + "x-registry-foreign": "json-schema-2020-12" + }, + "type": { + "enum": [ + "structured" + ], + "type": "string" + }, + "validTimeRole": { + "$ref": "#/$defs/ValidTimeRole" + } + }, + "required": [ + "id", + "type", + "classification", + "maximumBytes", + "schema" + ], + "type": "object" + }, + "TemporalSource": { + "additionalProperties": false, + "properties": { + "endField": { + "description": "The exclusive end: the interval stops just before this value.", + "type": "string" + }, + "lastDayField": { + "description": "The inclusive last day of a date interval, named in place of\n`endField` when the source records the last day in force.", + "type": "string" + }, + "startField": { + "type": "string" + } + }, + "required": [ + "startField" + ], + "type": "object" + }, + "TextFieldSourceSchema": { + "additionalProperties": false, + "properties": { + "apiName": { + "type": "string" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource" + }, + "encrypted": { + "default": false, + "type": "boolean" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "lookup": { + "$ref": "#/$defs/FieldLookupSource" + }, + "maximumLength": { + "format": "uint32", + "maximum": 10000000, + "minimum": 1, + "type": "integer" + }, + "pattern": { + "type": "string" + }, + "required": { + "default": false, + "type": "boolean" + }, + "type": { + "enum": [ + "text" + ], + "type": "string" + }, + "validTimeRole": { + "$ref": "#/$defs/ValidTimeRole" + } + }, + "required": [ + "id", + "type", + "classification", + "maximumLength" + ], + "type": "object" + }, + "TimerInputSource": { + "additionalProperties": false, + "description": "One complete mapping into one ordinary Action input. Exactly one member is\nselected by compilation; the flat shape preserves authored source positions.", + "properties": { + "fromField": { + "type": "string" + }, + "fromRecordId": { + "const": true, + "type": "boolean" + }, + "fromTimer": { + "$ref": "#/$defs/TimerValueSource" + }, + "value": true + }, + "type": "object" + }, + "TimerPredicateSource": { + "additionalProperties": false, + "description": "A bounded conjunction of equality checks over current stored fields.", + "properties": { + "equals": { + "additionalProperties": { + "$ref": "#/$defs/ScalarLiteral" + }, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "type": { + "const": "fields", + "type": "string" + } + }, + "required": [ + "type", + "equals" + ], + "type": "object" + }, + "TimerSource": { + "additionalProperties": false, + "description": "One timer attached to a governed Record type.", + "properties": { + "at": { + "type": "string" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "input": { + "additionalProperties": { + "$ref": "#/$defs/TimerInputSource" + }, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "invoke": { + "type": "string" + }, + "notAfter": { + "type": "string" + }, + "rearmOn": { + "type": "string" + }, + "when": { + "$ref": "#/$defs/TimerPredicateSource" + } + }, + "required": [ + "id", + "at", + "invoke", + "input" + ], + "type": "object" + }, + "TimerValueSource": { + "description": "Runtime-owned timer facts that may be mapped into Action inputs.", + "enum": [ + "occurrence-id", + "due-at" + ], + "type": "string" + }, + "TimestampFieldSourceSchema": { + "additionalProperties": false, + "properties": { + "apiName": { + "type": "string" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "required": { + "default": false, + "type": "boolean" + }, + "type": { + "enum": [ + "timestamp" + ], + "type": "string" + }, + "validTimeRole": { + "$ref": "#/$defs/ValidTimeRole" + } + }, + "required": [ + "id", + "type", + "classification" + ], + "type": "object" + }, + "UniqueWhenPredicate": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "field": { + "type": "string" + }, + "type": { + "const": "field-equals", + "type": "string" + }, + "value": true + }, + "required": [ + "type", + "field", + "value" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "field": { + "type": "string" + }, + "type": { + "const": "field-is-null", + "type": "string" + } + }, + "required": [ + "type", + "field" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "field": { + "type": "string" + }, + "type": { + "const": "field-is-not-null", + "type": "string" + } + }, + "required": [ + "type", + "field" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "type": { + "const": "active-lifecycle", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + } + ] + }, + "Url": { + "description": "An absolute http or https URL with a host preserved as written, no user information, and no backslash, whitespace or control character. DNS case and equivalent IPv6 literals are permitted.", + "format": "uri", + "maxLength": 2048, + "pattern": "^[Hh][Tt][Tt][Pp][Ss]?://[^/?#@\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]+([/?#][^\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]*)?$", + "type": "string" + }, + "UuidFieldSourceSchema": { + "additionalProperties": false, + "properties": { + "apiName": { + "type": "string" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "required": { + "default": false, + "type": "boolean" + }, + "type": { + "enum": [ + "uuid" + ], + "type": "string" + }, + "validTimeRole": { + "$ref": "#/$defs/ValidTimeRole" + } + }, + "required": [ + "id", + "type", + "classification" + ], + "type": "object" + }, + "ValidTimeRole": { + "enum": [ + "valid-from", + "valid-to" + ], + "type": "string" + }, + "VocabularyCodeFieldSourceSchema": { + "additionalProperties": false, + "properties": { + "apiName": { + "type": "string" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "required": { + "default": false, + "type": "boolean" + }, + "type": { + "enum": [ + "vocabulary-code" + ], + "type": "string" + }, + "validTimeRole": { + "$ref": "#/$defs/ValidTimeRole" + }, + "values": { + "default": [], + "items": { + "type": "string" + }, + "type": "array" + }, + "vocabulary": { + "type": "string" + } + }, + "required": [ + "id", + "type", + "classification", + "vocabulary" + ], + "type": "object" + } + }, + "$id": "https://id.registrystack.org/schemas/breg/module/module.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "actions": { + "description": "Named Actions introduced by this module.", + "items": { + "$ref": "#/$defs/ActionSource" + }, + "type": "array" + }, + "apiVersion": { + "const": "id.registrystack.org/formats/breg/module/v1alpha1", + "type": "string" + }, + "dependencies": { + "default": [], + "description": "Identifiers of modules that must be applied before this module.", + "items": { + "type": "string" + }, + "type": "array" + }, + "extendRecordTypes": { + "default": [], + "description": "Additive contributions to entities already declared by the project or another module.", + "items": { + "$ref": "#/$defs/EntityExtensionSource" + }, + "type": "array" + }, + "functions": { + "default": [], + "items": { + "$ref": "#/$defs/FunctionSource" + }, + "type": "array" + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "Stable module identifier, referenced by the project's module lock." + }, + "kind": { + "const": "BRegModule", + "type": "string" + }, + "recordTypes": { + "default": [], + "description": "Record types introduced by this module.", + "items": { + "$ref": "#/$defs/EntitySource" + }, + "type": "array" + }, + "valueTypes": { + "additionalProperties": { + "$ref": "#/$defs/ReusableValueTypeSource" + }, + "default": {}, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "version": { + "description": "Module version recorded alongside its content digest in the project.", + "type": "string" + } + }, + "required": [ + "id", + "version", + "apiVersion", + "kind" + ], + "title": "Base Registry Engine authored module", + "type": "object" +} diff --git a/src/artifacts/sha256/2a6983bc79d8bf3bae405d3428189c364e643460bcce5930f60e21fde9c31865.json b/src/artifacts/sha256/2a6983bc79d8bf3bae405d3428189c364e643460bcce5930f60e21fde9c31865.json new file mode 100644 index 000000000..253bed08c --- /dev/null +++ b/src/artifacts/sha256/2a6983bc79d8bf3bae405d3428189c364e643460bcce5930f60e21fde9c31865.json @@ -0,0 +1,384 @@ +{ + "$defs": { + "AccessProfile": { + "additionalProperties": false, + "description": "One declared caller profile.", + "properties": { + "actorKind": { + "$ref": "#/$defs/ActorKind", + "description": "The actor kind the token must claim. Absent means any kind." + }, + "actsAs": { + "$ref": "#/$defs/ActsAs" + }, + "allowDirectContent": { + "default": false, + "type": "boolean" + }, + "burst": { + "format": "uint32", + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "description": { + "$ref": "#/$defs/DisplayText", + "description": "What the profile is for, accepted for authoring and tooling; never matched against a caller." + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "label": { + "$ref": "#/$defs/DisplayText", + "description": "A name for the profile, accepted for authoring and tooling; never matched against a caller." + }, + "maximumMessagesPerDay": { + "description": "The most messages the profile may submit in any 24 hours. Absent\nmeans no daily bound beyond the rate.", + "format": "uint32", + "maximum": 10000000, + "minimum": 1, + "type": "integer" + }, + "principalClaim": { + "$ref": "#/$defs/ExternalId", + "description": "`sub`, or the name of another string claim identifying the principal." + }, + "requesterClients": { + "description": "The OAuth clients whose tokens resolve to this profile, at least one.", + "items": { + "$ref": "#/$defs/ExternalId" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "requestsPerMinute": { + "format": "uint32", + "maximum": 60000, + "minimum": 1, + "type": "integer" + }, + "requiredScopes": { + "$ref": "#/$defs/RequiredScopes", + "description": "The scopes a token must carry: `unrestricted`, or a list of at least\none scope. Held as the listed scopes, so `unrestricted` is the empty\nlist." + }, + "senderProfiles": { + "default": [], + "description": "The sender profiles a sender may select; an operator lists none.", + "items": { + "$ref": "#/$defs/LocalId" + }, + "type": "array", + "uniqueItems": true + }, + "templates": { + "default": [], + "description": "The templates a sender may use, by id, every declared version; an\noperator lists none.", + "items": { + "$ref": "#/$defs/LocalId" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "id", + "principalClaim", + "requiredScopes", + "requesterClients", + "actsAs", + "requestsPerMinute", + "burst" + ], + "type": "object" + }, + "ActorKind": { + "description": "The closed actor-kind vocabulary, spelled exactly as the Registry Stack\ncontextual-claim profile spells it.", + "enum": [ + "human", + "agent", + "service" + ], + "type": "string" + }, + "ActsAs": { + "description": "What a profile is for. A sender submits and reads its own messages; an\noperator reads and acts on every message but submits none.", + "enum": [ + "sender", + "operator" + ], + "type": "string" + }, + "Channel": { + "description": "A delivery channel.", + "enum": [ + "email", + "sms" + ], + "type": "string" + }, + "DisplayText": { + "description": "Human-readable display text. Bidirectional embedding, override, and isolate controls, byte-order marks, line and paragraph separators, and Unicode noncharacters are refused; multilingual joiners and direction marks remain valid.", + "not": { + "pattern": "[

‪-‮⁦-⁩﷐-﷯￾￿]|🿾|🿿|𯿾|𯿿|𿿾|𿿿|񏿾|񏿿|񟿾|񟿿|񯿾|񯿿|񿿾|񿿿|򏿾|򏿿|򟿾|򟿿|򯿾|򯿿|򿿾|򿿿|󏿾|󏿿|󟿾|󟿿|󯿾|󯿿|󿿾|󿿿|􏿾|􏿿" + }, + "type": "string" + }, + "ExternalId": { + "description": "An identifier another system issues, written exactly as its issuer gives it.", + "maxLength": 512, + "minLength": 1, + "pattern": "^[^\\u0000-\\u001F\\u007F-\\u009F]+$", + "type": "string" + }, + "LocalId": { + "description": "A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.", + "pattern": "^[a-z][a-z0-9_-]{0,63}$", + "type": "string" + }, + "ProjectIdentity": { + "additionalProperties": false, + "description": "The members that name a project (CFG-ENV-6): a project's `project` block\nholds these, and may add project-wide members of the product's own.\nSchema name `ProjectIdentity`.", + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "version": { + "type": "string" + } + }, + "required": [ + "id", + "version" + ], + "type": "object" + }, + "ProviderDeclaration": { + "additionalProperties": false, + "description": "One declared provider, referenced by sender profiles through `id`.", + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "idempotentSubmit": { + "default": false, + "description": "The provider deduplicates submissions on the idempotency key the\nruntime sends, so sending one message twice delivers it once. This is\nthe one declaration of that capability: an HTTP provider's scripts\nsee the key only when it is set, and an `smtp` provider may not set\nit.", + "type": "boolean" + }, + "type": { + "$ref": "#/$defs/ProviderKind" + } + }, + "required": [ + "id", + "type" + ], + "type": "object" + }, + "ProviderKind": { + "description": "The transport a provider speaks. Its endpoint and credentials are runtime\nconfiguration; only the type is project.", + "enum": [ + "smtp", + "http" + ], + "type": "string" + }, + "RequiredScopes": { + "anyOf": [ + { + "const": "unrestricted", + "description": "Require no scope.", + "type": "string" + }, + { + "items": { + "$ref": "#/$defs/ExternalId" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + ], + "description": "The scopes a token must carry: the keyword `unrestricted`, or a list of\nat least one scope. An empty list is refused, because it reads as both\n\"none\" and \"any\" (CFG-EMPTY-2)." + }, + "RetryPolicy": { + "additionalProperties": false, + "description": "How a send that definitely failed is retried: exponential backoff that\ndoubles from `initialDelaySeconds` up to `maximumDelaySeconds`, with\njitter, until `maximumAttempts` attempts were made.", + "properties": { + "initialDelaySeconds": { + "format": "uint32", + "maximum": 86400, + "minimum": 1, + "type": "integer" + }, + "maximumAttempts": { + "format": "uint8", + "maximum": 20, + "minimum": 1, + "type": "integer" + }, + "maximumDelaySeconds": { + "description": "At least `initialDelaySeconds`.", + "format": "uint32", + "maximum": 86400, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "maximumAttempts", + "initialDelaySeconds", + "maximumDelaySeconds" + ], + "type": "object" + }, + "SenderProfile": { + "additionalProperties": false, + "description": "What a caller selects: a channel, the provider carrying it, the sender\nidentity, for SMS the most segments one message may use, and how the\nworker retries, holds, and expires its messages.", + "properties": { + "acceptDuplicates": { + "default": false, + "description": "The operator's explicit choice that a duplicate message is better\nthan a missed one, which permits `onUncertain: retry` through a\nprovider that does not deduplicate.", + "type": "boolean" + }, + "channel": { + "$ref": "#/$defs/Channel" + }, + "defaultExpirySeconds": { + "description": "How long an accepted message may wait to be sent when its request\nnames no `expiresAt`. Absent means [`DEFAULT_EXPIRY_SECONDS`].", + "format": "uint32", + "maximum": 2592000, + "minimum": 60, + "type": "integer" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "maximumSegments": { + "description": "For SMS, and only for SMS, the most segments one message may use.", + "format": "uint8", + "maximum": 10, + "minimum": 1, + "type": "integer" + }, + "onUncertain": { + "$ref": "#/$defs/UncertainPolicy", + "default": "hold", + "description": "What happens when a send may have reached the provider." + }, + "provider": { + "$ref": "#/$defs/LocalId" + }, + "retry": { + "$ref": "#/$defs/RetryPolicy", + "description": "How a send that definitely failed is retried. Absent means the\ndefaults [`SenderProfile::retry_policy`] reports." + }, + "sender": { + "description": "The from address for email, the sender identifier for SMS.", + "maxLength": 254, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "id", + "channel", + "provider", + "sender" + ], + "type": "object" + }, + "TemplateDeclaration": { + "additionalProperties": false, + "description": "One template version the project declares.", + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "version": { + "description": "A version label: 1 to 32 lowercase letters, digits, dots, or hyphens,\nstarting with a letter or digit. Quote a numeric one.", + "maxLength": 32, + "minLength": 1, + "pattern": "^[a-z0-9][a-z0-9-]*(\\.[a-z0-9-]+)*$", + "type": "string" + } + }, + "required": [ + "id", + "version" + ], + "type": "object" + }, + "UncertainPolicy": { + "description": "What the worker does with a send that may have reached the provider.", + "oneOf": [ + { + "const": "hold", + "description": "Stop the message as `unknown` until an operator settles it.", + "type": "string" + }, + { + "const": "retry", + "description": "Send it again with the same provider idempotency key.", + "type": "string" + } + ] + } + }, + "$id": "https://id.registrystack.org/schemas/messaging/project/project.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "description": "The project file as authored.", + "properties": { + "accessProfiles": { + "description": "Who may call the deployment, at least one profile: a project that\nnames no caller serves none.", + "items": { + "$ref": "#/$defs/AccessProfile" + }, + "maxItems": 256, + "minItems": 1, + "type": "array" + }, + "apiVersion": { + "const": "id.registrystack.org/formats/messaging/project/v1alpha1", + "type": "string" + }, + "kind": { + "const": "MessagingProject", + "type": "string" + }, + "project": { + "$ref": "#/$defs/ProjectIdentity" + }, + "providers": { + "items": { + "$ref": "#/$defs/ProviderDeclaration" + }, + "maxItems": 256, + "type": "array" + }, + "senderProfiles": { + "items": { + "$ref": "#/$defs/SenderProfile" + }, + "maxItems": 256, + "type": "array" + }, + "templates": { + "items": { + "$ref": "#/$defs/TemplateDeclaration" + }, + "maxItems": 256, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "apiVersion", + "kind", + "project", + "accessProfiles" + ], + "title": "Registry Messaging project", + "type": "object" +} diff --git a/src/artifacts/sha256/2cbf5e3d2fd943abfa3777b63f204feac0dc0f5c02241a121aa3a135f3d420c7.json b/src/artifacts/sha256/2cbf5e3d2fd943abfa3777b63f204feac0dc0f5c02241a121aa3a135f3d420c7.json new file mode 100644 index 000000000..59cb9cca9 --- /dev/null +++ b/src/artifacts/sha256/2cbf5e3d2fd943abfa3777b63f204feac0dc0f5c02241a121aa3a135f3d420c7.json @@ -0,0 +1,4907 @@ +{ + "$defs": { + "AccessProfile": { + "additionalProperties": false, + "properties": { + "actsAs": { + "$ref": "#/$defs/CaseworkActsAs" + }, + "description": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "type": "null" + } + ], + "description": "What the profile is for, accepted for authoring and tooling; never matched against a caller. Part of the review policy description, which any caller who may read that description can see." + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "label": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "type": "null" + } + ], + "description": "A name for the profile, accepted for authoring and tooling; never matched against a caller. Part of the review policy description, which any caller who may read that description can see." + }, + "principalClaim": { + "type": "string" + }, + "requiredScopes": { + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "id", + "principalClaim", + "requiredScopes", + "actsAs" + ], + "type": "object" + }, + "Activation": { + "additionalProperties": false, + "description": "One append-only package activation ledger row.", + "properties": { + "activationId": { + "format": "uuid", + "type": "string" + }, + "appliedAt": { + "format": "date-time", + "type": "string" + }, + "applyOrder": { + "format": "int64", + "maximum": 9223372036854775807, + "minimum": -9223372036854775808, + "type": "integer" + }, + "backupReferences": { + "items": { + "type": "string" + }, + "type": "array" + }, + "databaseId": { + "type": "string" + }, + "operatorReferenceHash": { + "type": [ + "string", + "null" + ] + }, + "packageDigest": { + "$ref": "#/$defs/Digest" + }, + "planKind": { + "$ref": "#/$defs/PlanKind" + }, + "predecessorPackageDigest": { + "anyOf": [ + { + "$ref": "#/$defs/Digest" + }, + { + "type": "null" + } + ] + }, + "roleMode": { + "$ref": "#/$defs/RoleMode" + }, + "runtimeRole": { + "description": "Present for ledgers that retain the PostgreSQL runtime user.", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "activationId", + "applyOrder", + "packageDigest", + "predecessorPackageDigest", + "databaseId", + "planKind", + "appliedAt", + "operatorReferenceHash", + "backupReferences", + "roleMode" + ], + "type": "object" + }, + "ActivationEffects": { + "additionalProperties": false, + "description": "The Casework-specific effects of an activation.", + "properties": { + "pinnedWork": { + "$ref": "#/$defs/PinnedWorkEffect" + }, + "taskTemplates": { + "items": { + "$ref": "#/$defs/TaskTemplateEffect" + }, + "type": "array" + } + }, + "required": [ + "pinnedWork", + "taskTemplates" + ], + "type": "object" + }, + "ActivationPlan": { + "additionalProperties": false, + "description": "What `caseworkctl plan` reports. It is read in a read-only transaction.", + "properties": { + "active": { + "anyOf": [ + { + "$ref": "#/$defs/Activation" + }, + { + "type": "null" + } + ] + }, + "candidatePackageDigest": { + "$ref": "#/$defs/Digest" + }, + "changesPending": { + "description": "Whether apply would record an activation.", + "type": "boolean" + }, + "databaseIdCheck": { + "$ref": "#/$defs/DatabaseIdCheck" + }, + "effects": { + "anyOf": [ + { + "$ref": "#/$defs/ActivationEffects" + }, + { + "type": "null" + } + ], + "description": "Absent when the schema is too old to read before migrating, or when\nthe runtime role lacks SELECT on a Casework table until apply\nreissues its grants." + }, + "pendingSchemaVersions": { + "items": { + "format": "int64", + "maximum": 9223372036854775807, + "minimum": -9223372036854775808, + "type": "integer" + }, + "type": "array" + }, + "planKind": { + "$ref": "#/$defs/PlanKind" + }, + "refusals": { + "items": { + "$ref": "#/$defs/ActivationRefusal" + }, + "type": "array" + }, + "runtimeRoleMode": { + "anyOf": [ + { + "$ref": "#/$defs/RoleMode" + }, + { + "type": "null" + } + ], + "description": "The role mode the planning connection's authority gives it, absent\nwhen it cannot see the ledger yet. `caseworkctl plan` connects with\nthe runtime credential, so this is the runtime role's mode." + }, + "schemaVersion": { + "description": "The newest applied schema version, or none on an empty database.", + "format": "int64", + "maximum": 9223372036854775807, + "minimum": -9223372036854775808, + "type": [ + "integer", + "null" + ] + }, + "supportedSchemaVersion": { + "format": "int64", + "maximum": 9223372036854775807, + "minimum": -9223372036854775808, + "type": "integer" + } + }, + "required": [ + "active", + "candidatePackageDigest", + "databaseIdCheck", + "planKind", + "schemaVersion", + "supportedSchemaVersion", + "pendingSchemaVersions", + "effects", + "refusals", + "runtimeRoleMode", + "changesPending" + ], + "type": "object" + }, + "ActivationRefusal": { + "additionalProperties": false, + "description": "One reason an activation is refused, with the location the operator\ncorrects and the next command.", + "properties": { + "code": { + "type": "string" + }, + "message": { + "type": "string" + }, + "path": { + "type": "string" + } + }, + "required": [ + "code", + "path", + "message" + ], + "type": "object" + }, + "ActivationStatus": { + "additionalProperties": false, + "description": "What `caseworkctl status` reports.", + "properties": { + "active": { + "anyOf": [ + { + "$ref": "#/$defs/Activation" + }, + { + "type": "null" + } + ] + }, + "history": { + "description": "Every ledger row, oldest first.", + "items": { + "$ref": "#/$defs/Activation" + }, + "type": "array" + }, + "roleMode": { + "anyOf": [ + { + "$ref": "#/$defs/RoleMode" + }, + { + "type": "null" + } + ], + "description": "The role mode this connection has, absent before the first apply." + }, + "schemaVersion": { + "format": "int64", + "maximum": 9223372036854775807, + "minimum": -9223372036854775808, + "type": [ + "integer", + "null" + ] + }, + "supportedSchemaVersion": { + "format": "int64", + "maximum": 9223372036854775807, + "minimum": -9223372036854775808, + "type": "integer" + } + }, + "required": [ + "active", + "history", + "schemaVersion", + "supportedSchemaVersion", + "roleMode" + ], + "type": "object" + }, + "CalendarPolicy": { + "additionalProperties": false, + "properties": { + "holidaySet": { + "type": "string" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "timezone": { + "type": "string" + }, + "workingWeekdays": { + "items": { + "$ref": "#/$defs/WorkingWeekday" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "id", + "timezone", + "workingWeekdays", + "holidaySet" + ], + "type": "object" + }, + "CaseworkActsAs": { + "enum": [ + "staff", + "supervisor", + "administrator", + "requester" + ], + "type": "string" + }, + "CheckScope": { + "additionalProperties": false, + "description": "A source file relative to the project and the resource path a check reports.", + "properties": { + "file": { + "minLength": 1, + "type": "string" + }, + "path": { + "description": "A pointer whose list positions use existing unique identifiers when available.", + "type": "string" + } + }, + "required": [ + "file", + "path" + ], + "type": "object" + }, + "ClockPolicy": { + "description": "The serialized form of [`ClockPolicy`]: the shape the serializer emits.", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "after": { + "$ref": "#/$defs/ElapsedDuration" + }, + "anchor": { + "$ref": "#/$defs/SubjectClockAnchor" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "type": { + "const": "subject", + "type": "string" + } + }, + "required": [ + "type", + "id", + "anchor", + "after" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "after": { + "$ref": "#/$defs/WorkingDays" + }, + "anchor": { + "$ref": "#/$defs/StageClockAnchor" + }, + "atRisk": { + "$ref": "#/$defs/WorkingDaysBefore" + }, + "calendar": { + "type": "string" + }, + "dueTime": { + "type": "string" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "reminders": { + "items": { + "$ref": "#/$defs/ClockReminder" + }, + "type": "array" + }, + "steps": { + "items": { + "$ref": "#/$defs/ClockStep" + }, + "type": "array" + }, + "type": { + "const": "stage", + "type": "string" + } + }, + "required": [ + "type", + "id", + "anchor", + "calendar", + "after", + "dueTime" + ], + "type": "object" + } + ] + }, + "ClockReassignment": { + "additionalProperties": false, + "properties": { + "queue": { + "type": "string" + } + }, + "required": [ + "queue" + ], + "type": "object" + }, + "ClockReminder": { + "additionalProperties": false, + "description": "A named reminder, written `reminders: {ID: {before: {workingDays: N}}}`.", + "properties": { + "before": { + "$ref": "#/$defs/WorkingDays" + }, + "id": { + "$ref": "#/$defs/LocalId" + } + }, + "required": [ + "id", + "before" + ], + "type": "object" + }, + "ClockStep": { + "additionalProperties": false, + "properties": { + "action": { + "$ref": "#/$defs/ClockStepAction" + }, + "at": { + "$ref": "#/$defs/ClockStepInstant" + }, + "because": { + "$ref": "#/$defs/DisplayText" + }, + "id": { + "$ref": "#/$defs/LocalId" + } + }, + "required": [ + "id", + "because", + "at", + "action" + ], + "type": "object" + }, + "ClockStepAction": { + "additionalProperties": false, + "properties": { + "reassign": { + "$ref": "#/$defs/ClockReassignment" + } + }, + "required": [ + "reassign" + ], + "type": "object" + }, + "ClockStepInstant": { + "enum": [ + "due" + ], + "type": "string" + }, + "ContentDigest": { + "maxLength": 71, + "minLength": 71, + "pattern": "^sha256:[0-9a-f]{64}$", + "type": "string" + }, + "DatabaseIdCheck": { + "description": "How a configured deployment identity compares with the ledger.", + "enum": [ + "not-recorded", + "matches", + "differs" + ], + "type": "string" + }, + "DevClient": { + "additionalProperties": false, + "properties": { + "actsAs": { + "$ref": "#/$defs/CaseworkActsAs" + }, + "assertionKeyFile": { + "type": "string" + }, + "clientIdFile": { + "type": "string" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "profile": { + "type": "string" + }, + "subject": { + "type": "string" + } + }, + "required": [ + "id", + "profile", + "actsAs", + "subject", + "clientIdFile", + "assertionKeyFile" + ], + "type": "object" + }, + "DevDirectory": { + "additionalProperties": false, + "properties": { + "revision": { + "format": "int64", + "maximum": 9223372036854775807, + "minimum": -9223372036854775808, + "type": "integer" + }, + "teams": { + "format": "uint", + "maximum": 18446744073709551615, + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "revision", + "teams" + ], + "type": "object" + }, + "DevState": { + "enum": [ + "starting", + "ready", + "stopping", + "stopped", + "failed" + ], + "type": "string" + }, + "Diagnostic": { + "additionalProperties": false, + "description": "One problem, in the shape every checking command reports (CFG-DIAG-1).\n\nMessages name keys, paths, accepted values, bounds, and the expected\nenvelope without repeating rejected scalar values (CFG-SEC-3). Warning\nacceptance metadata separately identifies the resource and carries the\nproject's deliberately authored reason.", + "properties": { + "acceptedReason": { + "description": "The project's reason for accepting this advisory warning.", + "type": [ + "string", + "null" + ] + }, + "artifact": { + "description": "The document's `kind`, or the expected kind when the document's own is\nabsent or wrong and the reader expected exactly one.", + "type": [ + "string", + "null" + ] + }, + "code": { + "type": "string" + }, + "message": { + "type": "string" + }, + "path": { + "description": "RFC 6901 JSON pointer into the document as written; `\"\"` is the root.", + "type": "string" + }, + "related": { + "items": { + "$ref": "#/$defs/Related" + }, + "type": "array" + }, + "scope": { + "anyOf": [ + { + "$ref": "#/$defs/CheckScope" + }, + { + "type": "null" + } + ], + "description": "Project-relative identity copied into a check acceptance." + }, + "severity": { + "$ref": "#/$defs/Severity" + }, + "source": { + "anyOf": [ + { + "$ref": "#/$defs/Source" + }, + { + "type": "null" + } + ] + }, + "suggestedAction": { + "type": "string" + } + }, + "required": [ + "severity", + "code", + "path", + "message", + "suggestedAction" + ], + "type": "object" + }, + "Digest": { + "description": "A SHA-256 digest: `sha256:` followed by 64 lowercase hex digits.", + "pattern": "^sha256:[0-9a-f]{64}$", + "type": "string" + }, + "DisplayText": { + "description": "Human-readable display text. Bidirectional embedding, override, and isolate controls, byte-order marks, line and paragraph separators, and Unicode noncharacters are refused; multilingual joiners and direction marks remain valid.", + "not": { + "pattern": "[

‪-‮⁦-⁩﷐-﷯￾￿]|🿾|🿿|𯿾|𯿿|𿿾|𿿿|񏿾|񏿿|񟿾|񟿿|񯿾|񯿿|񿿾|񿿿|򏿾|򏿿|򟿾|򟿿|򯿾|򯿿|򿿾|򿿿|󏿾|󏿿|󟿾|󟿿|󯿾|󯿿|󿿾|󿿿|􏿾|􏿿" + }, + "type": "string" + }, + "DoctorChecks": { + "additionalProperties": false, + "properties": { + "audit": { + "type": "string" + }, + "configuration": { + "type": "string" + }, + "database": { + "type": "string" + }, + "package": { + "type": "string" + } + }, + "required": [ + "configuration", + "package", + "database", + "audit" + ], + "type": "object" + }, + "ElapsedDuration": { + "description": "An elapsed budget in exactly one unit; a day is 24 elapsed hours.", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "minutes": { + "format": "uint32", + "maximum": 5256000, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "minutes" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "hours": { + "format": "uint32", + "maximum": 87600, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "hours" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "days": { + "format": "uint32", + "maximum": 3650, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "days" + ], + "type": "object" + } + ] + }, + "EnforcementLayer": { + "additionalProperties": false, + "description": "One place the runtime can refuse an event, in execution order within\n`LifecycleDescription::enforcement`. `events` names every event the layer\nruns for; an event absent from the list passes the layer without being\nchecked there. Where an event is raised on more than one path and the layer\ngates only some of them, the description says which. One list can report one\norder, so where a layer's position is not the one a particular event meets,\nthat layer's description names the event and where it really runs.", + "properties": { + "description": { + "type": "string" + }, + "events": { + "items": { + "type": "string" + }, + "type": "array" + }, + "id": { + "$ref": "#/$defs/LocalId" + } + }, + "required": [ + "id", + "description", + "events" + ], + "type": "object" + }, + "EvidenceRequesterContext": { + "additionalProperties": false, + "properties": { + "audience": { + "type": "string" + }, + "requesterTags": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "requesterTags", + "audience" + ], + "type": "object" + }, + "ExplainPolicy": { + "additionalProperties": false, + "properties": { + "binding": { + "$ref": "#/$defs/ReviewPolicyIdentity" + }, + "clocks": { + "items": { + "type": "string" + }, + "type": "array" + }, + "context": { + "$ref": "#/$defs/ReviewContextPolicy" + }, + "contextCustody": { + "type": "string" + }, + "decidingProfiles": { + "items": { + "type": "string" + }, + "type": "array" + }, + "dependencies": { + "$ref": "#/$defs/ReviewPolicyDependencies" + }, + "dependencyScope": { + "type": "string" + }, + "displaySchema": { + "x-registry-foreign": "json-schema-2020-12" + }, + "eligibleDecidingProfiles": { + "items": { + "type": "string" + }, + "type": "array" + }, + "label": { + "type": [ + "string", + "null" + ] + }, + "outcomes": { + "items": { + "$ref": "#/$defs/ReviewOutcomePolicy" + }, + "type": "array" + }, + "purpose": { + "$ref": "#/$defs/ReviewPurpose" + }, + "recovery": { + "items": { + "type": "string" + }, + "type": "array" + }, + "refusals": { + "items": { + "type": "string" + }, + "type": "array" + }, + "resultSchema": { + "x-registry-foreign": "json-schema-2020-12" + }, + "retention": { + "$ref": "#/$defs/ReviewRetentionPolicy" + }, + "routing": { + "items": { + "$ref": "#/$defs/RoutingRule" + }, + "type": "array" + }, + "routingFields": { + "items": { + "type": "string" + }, + "type": "array" + }, + "stages": { + "items": { + "$ref": "#/$defs/ExplainStage" + }, + "type": "array" + }, + "usedQueues": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "binding", + "purpose", + "displaySchema", + "resultSchema", + "clocks", + "context", + "contextCustody", + "stages", + "outcomes", + "routing", + "routingFields", + "usedQueues", + "decidingProfiles", + "eligibleDecidingProfiles", + "dependencyScope", + "dependencies", + "retention", + "recovery", + "refusals" + ], + "type": "object" + }, + "ExplainStaffing": { + "additionalProperties": false, + "properties": { + "caseload": { + "type": "string" + }, + "clockRecompute": { + "type": "string" + }, + "holdings": { + "type": "string" + }, + "next": { + "type": "string" + }, + "routing": { + "type": "string" + } + }, + "required": [ + "next", + "holdings", + "caseload", + "routing", + "clockRecompute" + ], + "type": "object" + }, + "ExplainStage": { + "additionalProperties": false, + "properties": { + "decidingProfiles": { + "items": { + "type": "string" + }, + "type": "array" + }, + "excludeInitiator": { + "type": "boolean" + }, + "excludePreviousStageReviewers": { + "type": "boolean" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "label": { + "type": [ + "string", + "null" + ] + }, + "negativeDecisions": { + "$ref": "#/$defs/ReviewNegativeDecisionMode" + }, + "queue": { + "type": "string" + }, + "requiredApprovals": { + "format": "uint32", + "maximum": 32, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "id", + "queue", + "decidingProfiles", + "requiredApprovals", + "negativeDecisions", + "excludeInitiator", + "excludePreviousStageReviewers" + ], + "type": "object" + }, + "ExternalId": { + "description": "An identifier another system issues, written exactly as its issuer gives it.", + "maxLength": 512, + "minLength": 1, + "pattern": "^[^\\u0000-\\u001F\\u007F-\\u009F]+$", + "type": "string" + }, + "InboxPolicy": { + "additionalProperties": false, + "properties": { + "defaultPageSize": { + "default": 25, + "format": "uint32", + "maximum": 100, + "minimum": 1, + "type": "integer" + }, + "maximumCandidateScan": { + "default": 100, + "format": "uint32", + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "maximumConcurrentSourceReads": { + "default": 4, + "format": "uint32", + "maximum": 32, + "minimum": 1, + "type": "integer" + }, + "maximumSourceReads": { + "default": 25, + "format": "uint32", + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "pageDeadlineMilliseconds": { + "default": 2000, + "format": "uint64", + "maximum": 30000, + "minimum": 100, + "type": "integer" + } + }, + "required": [ + "defaultPageSize", + "maximumCandidateScan", + "maximumSourceReads", + "maximumConcurrentSourceReads", + "pageDeadlineMilliseconds" + ], + "type": "object" + }, + "LifecycleDescription": { + "additionalProperties": false, + "properties": { + "enforcement": { + "items": { + "$ref": "#/$defs/EnforcementLayer" + }, + "type": "array" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "label": { + "type": "string" + }, + "states": { + "items": { + "$ref": "#/$defs/LifecycleState" + }, + "type": "array" + }, + "transitions": { + "items": { + "$ref": "#/$defs/LifecycleTransition" + }, + "type": "array" + } + }, + "required": [ + "id", + "label", + "states", + "transitions", + "enforcement" + ], + "type": "object" + }, + "LifecycleState": { + "additionalProperties": false, + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "incomingTransitions": { + "format": "uint", + "maximum": 18446744073709551615, + "minimum": 0, + "type": "integer" + }, + "initial": { + "type": "boolean" + }, + "outgoingTransitions": { + "format": "uint", + "maximum": 18446744073709551615, + "minimum": 0, + "type": "integer" + }, + "terminal": { + "type": "boolean" + }, + "unreachable": { + "type": "boolean" + } + }, + "required": [ + "id", + "initial", + "terminal", + "unreachable", + "incomingTransitions", + "outgoingTransitions" + ], + "type": "object" + }, + "LifecycleTransition": { + "additionalProperties": false, + "properties": { + "event": { + "type": "string" + }, + "from": { + "type": "string" + }, + "guard": { + "description": "What the state machine itself checks before it moves the state. Nothing\nthe runtime checks around it appears here; that is `enforcement`.", + "type": "string" + }, + "to": { + "type": "string" + } + }, + "required": [ + "from", + "event", + "to", + "guard" + ], + "type": "object" + }, + "LocalId": { + "description": "A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.", + "pattern": "^[a-z][a-z0-9_-]{0,63}$", + "type": "string" + }, + "PinnedWorkEffect": { + "additionalProperties": false, + "description": "The pinned-work verdict an activation reaches.", + "properties": { + "stranded": { + "items": { + "$ref": "#/$defs/StrandedWork" + }, + "type": "array" + }, + "verdict": { + "description": "`clear`, `acknowledged`, or `refused`.", + "type": "string" + } + }, + "required": [ + "verdict", + "stranded" + ], + "type": "object" + }, + "PlanKind": { + "description": "Whether an activation is the database's first or follows another.", + "enum": [ + "initial", + "successor" + ], + "type": "string" + }, + "ProducerAgreement": { + "additionalProperties": false, + "properties": { + "contextContract": { + "$ref": "#/$defs/ReviewContextContract" + }, + "providerId": { + "type": "string" + }, + "registryRevision": { + "type": "string" + }, + "schemaDigest": { + "$ref": "#/$defs/Digest" + } + }, + "required": [ + "providerId", + "contextContract", + "registryRevision", + "schemaDigest" + ], + "type": "object" + }, + "ProducerAgreementData": { + "additionalProperties": false, + "properties": { + "agreements": { + "items": { + "$ref": "#/$defs/ProducerAgreement" + }, + "type": "array" + }, + "databaseAccess": { + "type": "boolean" + }, + "networkAccess": { + "type": "boolean" + }, + "package": { + "type": "string" + }, + "packageDigest": { + "$ref": "#/$defs/Digest" + } + }, + "required": [ + "package", + "packageDigest", + "agreements", + "networkAccess", + "databaseAccess" + ], + "type": "object" + }, + "ProducerRetention": { + "additionalProperties": false, + "description": "How long Casework keeps what a producer needs to recover a submission.", + "properties": { + "receiptRetentionDays": { + "description": "Days a submission receipt stays readable for recovery, at most 365.", + "format": "uint32", + "maximum": 365, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "receiptRetentionDays" + ], + "type": "object" + }, + "ProjectIdentity": { + "additionalProperties": false, + "description": "The members that name a project (CFG-ENV-6): a project's `project` block\nholds these, and may add project-wide members of the product's own.\nSchema name `ProjectIdentity`.", + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "version": { + "type": "string" + } + }, + "required": [ + "id", + "version" + ], + "type": "object" + }, + "ProviderAddBypass": { + "additionalProperties": false, + "properties": { + "fields": { + "items": { + "type": "string" + }, + "type": "array" + }, + "mutationPolicy": { + "x-registry-passthrough": "A bounded mutationPolicy fragment from the closed BReg project format; bregctl remains its format owner." + }, + "operation": { + "type": "string" + }, + "profile": { + "type": "string" + }, + "recordType": { + "type": "string" + } + }, + "required": [ + "recordType", + "operation", + "profile", + "fields", + "mutationPolicy" + ], + "type": "object" + }, + "ProviderAddChange": { + "additionalProperties": false, + "properties": { + "explanation": { + "type": "string" + }, + "path": { + "type": "string" + }, + "yaml": { + "x-registry-passthrough": "A bounded YAML fragment from the closed BReg authoring format; bregctl remains its format owner." + } + }, + "required": [ + "path", + "explanation", + "yaml" + ], + "type": "object" + }, + "ProviderAddNotice": { + "additionalProperties": false, + "properties": { + "explanation": { + "type": "string" + }, + "yaml": { + "x-registry-passthrough": "A bounded YAML fragment from the closed BReg authoring format; bregctl remains its format owner." + } + }, + "required": [ + "explanation", + "yaml" + ], + "type": "object" + }, + "ProviderAddState": { + "enum": [ + "changes-needed", + "created", + "in-agreement" + ], + "type": "string" + }, + "QueuePolicy": { + "additionalProperties": false, + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "label": { + "$ref": "#/$defs/DisplayText" + } + }, + "required": [ + "id", + "label" + ], + "type": "object" + }, + "ReaderAuthority": { + "additionalProperties": false, + "properties": { + "operation": { + "type": "string" + }, + "profile": { + "type": [ + "string", + "null" + ] + }, + "sourceWrites": { + "type": "boolean" + } + }, + "required": [ + "profile", + "operation", + "sourceWrites" + ], + "type": "object" + }, + "Related": { + "additionalProperties": false, + "description": "A second place that explains a diagnostic, such as the first occurrence\nof a duplicate. Human output prints it as a `note:` line.", + "properties": { + "column": { + "format": "uint", + "maximum": 18446744073709551615, + "minimum": 0, + "type": [ + "integer", + "null" + ] + }, + "file": { + "type": "string" + }, + "line": { + "format": "uint", + "maximum": 18446744073709551615, + "minimum": 0, + "type": [ + "integer", + "null" + ] + }, + "message": { + "type": "string" + }, + "path": { + "type": "string" + } + }, + "required": [ + "file", + "path", + "message" + ], + "type": "object" + }, + "ReportStatus": { + "enum": [ + "complete", + "domain-refusal", + "usage-error", + "operational-failure" + ], + "type": "string" + }, + "ReviewCompletionDestinationPolicy": { + "additionalProperties": false, + "properties": { + "destinationId": { + "type": "string" + }, + "recipientBinding": { + "type": "string" + } + }, + "required": [ + "destinationId", + "recipientBinding" + ], + "type": "object" + }, + "ReviewContextCapability": { + "enum": [ + "human-display", + "service-status", + "task-grant-context", + "routing-context" + ], + "type": "string" + }, + "ReviewContextContract": { + "additionalProperties": false, + "properties": { + "id": { + "$ref": "#/$defs/ExternalId", + "description": "The producer-issued contract id, kept exactly as written: nonblank, no control characters, and at most 256 UTF-8 bytes. The byte ceiling is enforced by the Casework reader.", + "maxLength": 256, + "pattern": "\\S", + "x-registry-maxBytes": 256 + }, + "revision": { + "$ref": "#/$defs/ContentDigest" + }, + "schemaDigest": { + "$ref": "#/$defs/Digest" + } + }, + "required": [ + "id", + "revision", + "schemaDigest" + ], + "type": "object" + }, + "ReviewContextPolicy": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "mode": { + "const": "submitted", + "type": "string" + } + }, + "required": [ + "mode" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "contract": { + "$ref": "#/$defs/ReviewContextContract" + }, + "mode": { + "const": "current-source", + "type": "string" + }, + "provider": { + "type": "string" + } + }, + "required": [ + "mode", + "provider", + "contract" + ], + "type": "object" + } + ] + }, + "ReviewContextProviderPolicy": { + "additionalProperties": false, + "properties": { + "capabilities": { + "items": { + "$ref": "#/$defs/ReviewContextCapability" + }, + "type": "array", + "uniqueItems": true + }, + "deploymentRef": { + "type": "string" + }, + "description": { + "type": [ + "string", + "null" + ] + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "serviceProfiles": { + "additionalProperties": false, + "default": {}, + "properties": { + "human-display": { + "type": "string" + }, + "routing-context": { + "type": "string" + }, + "service-status": { + "type": "string" + }, + "task-grant-context": { + "type": "string" + } + }, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "sourceNamespace": { + "type": "string" + } + }, + "required": [ + "id", + "capabilities", + "sourceNamespace", + "deploymentRef", + "serviceProfiles" + ], + "type": "object" + }, + "ReviewNegativeDecisionMode": { + "oneOf": [ + { + "const": "settle", + "description": "A rejection or change request settles the whole review immediately.", + "type": "string" + }, + { + "const": "advise", + "description": "A negative decision counts toward this stage and the review continues.", + "type": "string" + } + ] + }, + "ReviewOutcomePolicy": { + "additionalProperties": false, + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "label": { + "$ref": "#/$defs/DisplayText" + }, + "publicReason": { + "$ref": "#/$defs/ReviewPublicReasonRule", + "description": "Whether a decision with this outcome gives text for release to the\nsubject's owner. There is no default: the policy author decides what\nan applicant is told." + }, + "reasonRequired": { + "type": "boolean" + }, + "resultRequired": { + "type": "boolean" + }, + "settlement": { + "$ref": "#/$defs/ReviewOutcomeSettlement" + } + }, + "required": [ + "id", + "label", + "settlement", + "reasonRequired", + "publicReason" + ], + "type": "object" + }, + "ReviewOutcomeSettlement": { + "enum": [ + "approved", + "rejected", + "changes-requested", + "answered" + ], + "type": "string" + }, + "ReviewPolicyDependencies": { + "additionalProperties": false, + "description": "Complete behavioral inputs retained beside an admitted request. Live Directory\nmembership and absence facts remain current authority, not policy inputs.", + "properties": { + "accessProfiles": { + "items": { + "$ref": "#/$defs/AccessProfile" + }, + "type": "array" + }, + "calendars": { + "items": { + "$ref": "#/$defs/CalendarPolicy" + }, + "type": "array" + }, + "clocks": { + "items": { + "$ref": "#/$defs/ClockPolicy" + }, + "type": "array" + }, + "contextProvider": { + "anyOf": [ + { + "$ref": "#/$defs/ReviewContextProviderPolicy" + }, + { + "type": "null" + } + ] + }, + "inbox": { + "$ref": "#/$defs/InboxPolicy" + }, + "queues": { + "items": { + "$ref": "#/$defs/QueuePolicy" + }, + "type": "array" + }, + "taskTemplates": { + "items": { + "$ref": "#/$defs/TaskTemplate" + }, + "type": "array" + }, + "teams": { + "items": { + "$ref": "#/$defs/TeamPolicy" + }, + "type": "array" + }, + "trustedProducers": { + "items": { + "$ref": "#/$defs/ReviewProducerPolicy" + }, + "type": "array" + } + }, + "required": [ + "accessProfiles", + "queues", + "teams", + "clocks", + "calendars", + "contextProvider", + "taskTemplates", + "trustedProducers", + "inbox" + ], + "type": "object" + }, + "ReviewPolicyIdentity": { + "additionalProperties": false, + "properties": { + "digest": { + "$ref": "#/$defs/Digest" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "version": { + "type": "string" + } + }, + "required": [ + "id", + "version", + "digest" + ], + "type": "object" + }, + "ReviewProducerPolicy": { + "additionalProperties": false, + "properties": { + "completion": { + "anyOf": [ + { + "$ref": "#/$defs/ReviewCompletionDestinationPolicy" + }, + { + "type": "null" + } + ] + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "initiatorProfile": { + "description": "The requester profile a person named as this producer's initiator\nauthenticates with to read the requester-visible history of their own\nrequests. Absent, no initiator reads anything.", + "type": [ + "string", + "null" + ] + }, + "issuer": { + "$ref": "#/$defs/Url" + }, + "profile": { + "type": "string" + }, + "retention": { + "$ref": "#/$defs/ProducerRetention" + }, + "reviewPolicies": { + "items": { + "type": "string" + }, + "type": "array" + }, + "sourceNamespaces": { + "items": { + "type": "string" + }, + "type": "array" + }, + "subject": { + "type": "string" + }, + "trustedInitiatorIssuer": { + "$ref": "#/$defs/Url" + } + }, + "required": [ + "id", + "profile", + "issuer", + "subject", + "sourceNamespaces", + "reviewPolicies", + "retention" + ], + "type": "object" + }, + "ReviewPublicReasonRule": { + "description": "Whether a decision gives a public reason with an outcome.", + "enum": [ + "required", + "optional", + "none" + ], + "type": "string" + }, + "ReviewPurpose": { + "enum": [ + "approval", + "answer" + ], + "type": "string" + }, + "ReviewRetentionPolicy": { + "additionalProperties": false, + "properties": { + "accountabilityRetentionDays": { + "format": "uint32", + "maximum": 3650, + "minimum": 1, + "type": "integer" + }, + "terminalRetentionDays": { + "format": "uint32", + "maximum": 3650, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "terminalRetentionDays", + "accountabilityRetentionDays" + ], + "type": "object" + }, + "RoleMode": { + "description": "Whether the runtime credential can write the activation ledger.", + "enum": [ + "single", + "split" + ], + "type": "string" + }, + "RoutingCondition": { + "additionalProperties": false, + "properties": { + "fields": { + "additionalProperties": { + "$ref": "#/$defs/RoutingPredicate" + }, + "propertyNames": { + "$ref": "#/$defs/ExternalId" + }, + "type": "object" + }, + "stage": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + }, + "RoutingPredicate": { + "description": "The written form of [`RoutingPredicate`], an externally tagged union the\nshared reader decodes with positions.", + "oneOf": [ + { + "additionalProperties": false, + "description": "The projected field equals this value.", + "properties": { + "equals": true + }, + "required": [ + "equals" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "The projected field equals one of these values.", + "properties": { + "oneOf": { + "items": true, + "type": "array" + } + }, + "required": [ + "oneOf" + ], + "type": "object" + } + ] + }, + "RoutingRule": { + "additionalProperties": false, + "properties": { + "because": { + "$ref": "#/$defs/DisplayText" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "label": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "type": "null" + } + ], + "description": "Optional presentation label. Stable references use `id`." + }, + "queue": { + "type": "string" + }, + "when": { + "$ref": "#/$defs/RoutingCondition" + } + }, + "required": [ + "id", + "because", + "when", + "queue" + ], + "type": "object" + }, + "SchedulingTaskPermission": { + "additionalProperties": false, + "description": "Exact Scheduling commitment authority copied into a task grant.\n\nThis duplicates the public wire shape deliberately: Casework is an\nauthority for governed templates, not a dependency on Scheduling's runtime\nor model crate.", + "properties": { + "actions": { + "items": { + "type": "string" + }, + "type": "array" + }, + "location": { + "type": "string" + }, + "service": { + "type": "string" + } + }, + "required": [ + "service", + "location", + "actions" + ], + "type": "object" + }, + "Severity": { + "description": "Whether a diagnostic refuses the input.", + "enum": [ + "error", + "warning" + ], + "type": "string" + }, + "Source": { + "additionalProperties": false, + "description": "Where a diagnostic points. `file` is the path exactly as the caller gave\nit; `line` and `column` are 1-based and absent when the problem concerns\nthe file as a whole.", + "properties": { + "column": { + "format": "uint", + "maximum": 18446744073709551615, + "minimum": 0, + "type": [ + "integer", + "null" + ] + }, + "file": { + "type": "string" + }, + "line": { + "format": "uint", + "maximum": 18446744073709551615, + "minimum": 0, + "type": [ + "integer", + "null" + ] + } + }, + "required": [ + "file" + ], + "type": "object" + }, + "StageClockAnchor": { + "additionalProperties": false, + "description": "The instant a stage clock counts from: `anchor: {type: stage-entered}`.", + "properties": { + "type": { + "$ref": "#/$defs/StageClockAnchorType" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + "StageClockAnchorType": { + "enum": [ + "stage-entered" + ], + "type": "string" + }, + "StrandedWork": { + "additionalProperties": false, + "properties": { + "policy": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "reviews": { + "format": "uint64", + "maximum": 18446744073709551615, + "minimum": 0, + "type": "integer" + }, + "version": { + "type": "string" + } + }, + "required": [ + "policy", + "version", + "reviews", + "reason" + ], + "type": "object" + }, + "SubjectClockAnchor": { + "additionalProperties": false, + "description": "The instant a subject clock counts from: `anchor: {type: request-accepted}`.", + "properties": { + "type": { + "$ref": "#/$defs/SubjectClockAnchorType" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + "SubjectClockAnchorType": { + "enum": [ + "request-accepted" + ], + "type": "string" + }, + "TaskAuthorizationMode": { + "enum": [ + "immediate", + "deferred" + ], + "type": "string" + }, + "TaskGrantBounds": { + "description": "The product-specific authority a task grant carries, chosen by its `type`\nmember. The shared reader's union helper decodes it so every error inside\na variant keeps its position (CFG-SCHEMA-8); the wire form is unchanged.", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "requirement": { + "type": "string" + }, + "type": { + "const": "evidence", + "type": "string" + } + }, + "required": [ + "type", + "requirement" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "permissions": { + "items": { + "$ref": "#/$defs/TaskPermission" + }, + "type": "array" + }, + "type": { + "const": "breg", + "type": "string" + } + }, + "required": [ + "type", + "permissions" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "permissions": { + "items": { + "$ref": "#/$defs/SchedulingTaskPermission" + }, + "type": "array" + }, + "type": { + "const": "scheduling", + "type": "string" + } + }, + "required": [ + "type", + "permissions" + ], + "type": "object" + } + ] + }, + "TaskPermission": { + "additionalProperties": false, + "properties": { + "collection": { + "type": "string" + }, + "operations": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "collection", + "operations" + ], + "type": "object" + }, + "TaskTemplate": { + "additionalProperties": false, + "allOf": [ + { + "else": { + "properties": { + "lifetimeSeconds": { + "maximum": 900 + } + } + }, + "if": { + "properties": { + "authorizationMode": { + "const": "deferred" + } + }, + "required": [ + "authorizationMode" + ] + }, + "then": { + "properties": { + "lifetimeSeconds": { + "maximum": 604800 + } + } + } + }, + { + "if": { + "properties": { + "authorizationMode": { + "const": "deferred" + } + }, + "required": [ + "authorizationMode" + ] + }, + "then": { + "properties": { + "bounds": { + "properties": { + "type": { + "not": { + "const": "evidence" + } + } + } + } + } + } + } + ], + "properties": { + "agent": { + "$ref": "#/$defs/TemplateAgent" + }, + "authorizationMode": { + "$ref": "#/$defs/TaskAuthorizationMode", + "description": "Immediate authorizations last at most fifteen minutes. Deferred is an\nexplicit governed window of at most seven days; assertion TTL stays sixty seconds." + }, + "bounds": { + "$ref": "#/$defs/TaskGrantBounds" + }, + "client": { + "type": "string" + }, + "eligibleProfiles": { + "items": { + "type": "string" + }, + "type": "array" + }, + "eligibleTeams": { + "items": { + "type": "string" + }, + "type": "array" + }, + "evidenceContext": { + "anyOf": [ + { + "$ref": "#/$defs/EvidenceRequesterContext" + }, + { + "type": "null" + } + ], + "description": "Evidence-only requester context signed into the authority assertion.\nOther products derive neither requester admission nor relying-party\naudience from these fields and therefore forbid the block entirely." + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "label": { + "$ref": "#/$defs/DisplayText" + }, + "lifetimeSeconds": { + "format": "uint64", + "maximum": 604800, + "minimum": 1, + "type": "integer" + }, + "purpose": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "reviewPolicies": { + "description": "Policies whose currently held ReviewTasks may issue this grant.", + "items": { + "type": "string" + }, + "type": "array" + }, + "scopes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "source": { + "type": "string" + }, + "subjects": { + "additionalProperties": { + "type": "string" + }, + "description": "Exact token identity keys mapped to governed source logical fields.\nValues are extracted from the approving caller's disclosed source read.", + "propertyNames": { + "$ref": "#/$defs/ExternalId" + }, + "type": "object" + }, + "version": { + "type": "string" + } + }, + "required": [ + "id", + "version", + "label", + "eligibleTeams", + "eligibleProfiles", + "source", + "agent", + "client", + "resource", + "scopes", + "purpose", + "bounds", + "subjects", + "lifetimeSeconds" + ], + "type": "object" + }, + "TaskTemplateEffect": { + "additionalProperties": false, + "properties": { + "change": { + "$ref": "#/$defs/TemplateChange" + }, + "templateId": { + "type": "string" + }, + "templateVersion": { + "type": "string" + } + }, + "required": [ + "templateId", + "templateVersion", + "change" + ], + "type": "object" + }, + "TeamPolicy": { + "additionalProperties": false, + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "label": { + "$ref": "#/$defs/DisplayText" + }, + "memberProfiles": { + "items": { + "type": "string" + }, + "type": "array" + }, + "serves": { + "items": { + "type": "string" + }, + "type": "array" + }, + "supervisorProfiles": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "id", + "label", + "serves", + "memberProfiles", + "supervisorProfiles" + ], + "type": "object" + }, + "TemplateAgent": { + "additionalProperties": false, + "description": "The agent a template names, as `casework.yaml` writes it: the issuer is\nthe URL of the token issuer that authenticates the agent (CFG-VAL-7).", + "properties": { + "issuer": { + "$ref": "#/$defs/Url" + }, + "subject": { + "type": "string" + } + }, + "required": [ + "issuer", + "subject" + ], + "type": "object" + }, + "TemplateChange": { + "description": "What an activation does to one task template version.", + "oneOf": [ + { + "const": "added", + "description": "The version is stored for the first time and becomes active.", + "type": "string" + }, + { + "const": "activated", + "description": "A stored inactive version becomes active again.", + "type": "string" + }, + { + "const": "retained", + "description": "The version stays active.", + "type": "string" + }, + { + "const": "deactivated", + "description": "An active version the package no longer declares is deactivated and\nits live grants are invalidated.", + "type": "string" + } + ] + }, + "Url": { + "description": "An absolute http or https URL with a host preserved as written, no user information, and no backslash, whitespace or control character. DNS case and equivalent IPv6 literals are permitted.", + "format": "uri", + "maxLength": 2048, + "pattern": "^[Hh][Tt][Tt][Pp][Ss]?://[^/?#@\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]+([/?#][^\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]*)?$", + "type": "string" + }, + "WorkingDays": { + "additionalProperties": false, + "description": "A number of working days: `after: {workingDays: N}`, and the lead time\ninside `before`.", + "properties": { + "workingDays": { + "format": "uint32", + "maximum": 3650, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "workingDays" + ], + "type": "object" + }, + "WorkingDaysBefore": { + "additionalProperties": false, + "description": "A lead time before a stage clock is due: `{before: {workingDays: N}}`.", + "properties": { + "before": { + "$ref": "#/$defs/WorkingDays" + } + }, + "required": [ + "before" + ], + "type": "object" + }, + "WorkingWeekday": { + "enum": [ + "monday", + "tuesday", + "wednesday", + "thursday", + "friday", + "saturday", + "sunday" + ], + "type": "string" + } + }, + "$id": "https://id.registrystack.org/schemas/casework/report/report.v1alpha2.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "allOf": [ + { + "oneOf": [ + { + "properties": { + "ok": { + "const": true + }, + "status": { + "const": "complete" + } + } + }, + { + "properties": { + "diagnostics": { + "minItems": 1 + }, + "ok": { + "const": false + }, + "status": { + "enum": [ + "domain-refusal", + "usage-error", + "operational-failure" + ] + } + } + } + ] + } + ], + "oneOf": [ + { + "additionalProperties": false, + "allOf": [ + { + "if": { + "anyOf": [ + { + "properties": { + "ok": { + "const": true + } + }, + "required": [ + "ok" + ] + }, + { + "required": [ + "created" + ] + }, + { + "required": [ + "next" + ] + }, + { + "required": [ + "template" + ] + } + ] + }, + "then": { + "required": [ + "created", + "template", + "next" + ] + } + } + ], + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/casework/report/v1alpha2", + "type": "string" + }, + "command": { + "const": "init", + "type": "string" + }, + "created": { + "type": "string" + }, + "diagnostics": { + "items": { + "$ref": "#/$defs/Diagnostic" + }, + "type": "array" + }, + "kind": { + "const": "CaseworkReport", + "type": "string" + }, + "next": { + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "status": { + "$ref": "#/$defs/ReportStatus" + }, + "template": { + "type": "string" + }, + "version": { + "type": "string" + } + }, + "required": [ + "command", + "ok", + "status", + "apiVersion", + "kind", + "version", + "diagnostics" + ], + "type": "object" + }, + { + "additionalProperties": false, + "allOf": [ + { + "if": { + "anyOf": [ + { + "properties": { + "ok": { + "const": true + } + }, + "required": [ + "ok" + ] + }, + { + "required": [ + "bregPackage" + ] + }, + { + "required": [ + "databaseAccess" + ] + }, + { + "required": [ + "filesChecked" + ] + }, + { + "required": [ + "networkAccess" + ] + }, + { + "required": [ + "policyBindings" + ] + }, + { + "required": [ + "project" + ] + }, + { + "required": [ + "runtimeConfig" + ] + } + ] + }, + "then": { + "required": [ + "project", + "policyBindings", + "filesChecked", + "networkAccess", + "databaseAccess" + ] + } + } + ], + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/casework/report/v1alpha2", + "type": "string" + }, + "bregPackage": { + "anyOf": [ + { + "$ref": "#/$defs/ProducerAgreementData" + }, + { + "type": "null" + } + ] + }, + "command": { + "const": "check", + "type": "string" + }, + "databaseAccess": { + "type": "boolean" + }, + "diagnostics": { + "items": { + "$ref": "#/$defs/Diagnostic" + }, + "type": "array" + }, + "filesChecked": { + "format": "uint", + "maximum": 18446744073709551615, + "minimum": 0, + "type": "integer" + }, + "kind": { + "const": "CaseworkReport", + "type": "string" + }, + "networkAccess": { + "type": "boolean" + }, + "ok": { + "type": "boolean" + }, + "policyBindings": { + "items": { + "$ref": "#/$defs/ReviewPolicyIdentity" + }, + "type": "array" + }, + "project": { + "type": "string" + }, + "runtimeConfig": { + "type": [ + "string", + "null" + ] + }, + "status": { + "$ref": "#/$defs/ReportStatus" + }, + "version": { + "type": "string" + } + }, + "required": [ + "command", + "ok", + "status", + "apiVersion", + "kind", + "version", + "diagnostics" + ], + "type": "object" + }, + { + "additionalProperties": false, + "allOf": [ + { + "if": { + "anyOf": [ + { + "properties": { + "ok": { + "const": true + } + }, + "required": [ + "ok" + ] + }, + { + "required": [ + "authority" + ] + }, + { + "required": [ + "calendars" + ] + }, + { + "required": [ + "clocks" + ] + }, + { + "required": [ + "contextProviders" + ] + }, + { + "required": [ + "project" + ] + }, + { + "required": [ + "reviewPolicies" + ] + }, + { + "required": [ + "staffing" + ] + }, + { + "required": [ + "trustedProducers" + ] + } + ] + }, + "then": { + "required": [ + "project", + "reviewPolicies", + "contextProviders", + "clocks", + "calendars", + "trustedProducers", + "staffing", + "authority" + ] + } + } + ], + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/casework/report/v1alpha2", + "type": "string" + }, + "authority": { + "type": "string" + }, + "calendars": { + "items": { + "$ref": "#/$defs/CalendarPolicy" + }, + "type": "array" + }, + "clocks": { + "items": { + "$ref": "#/$defs/ClockPolicy" + }, + "type": "array" + }, + "command": { + "const": "explain", + "type": "string" + }, + "contextProviders": { + "items": { + "$ref": "#/$defs/ReviewContextProviderPolicy" + }, + "type": "array" + }, + "diagnostics": { + "items": { + "$ref": "#/$defs/Diagnostic" + }, + "type": "array" + }, + "kind": { + "const": "CaseworkReport", + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "project": { + "$ref": "#/$defs/ProjectIdentity" + }, + "reviewPolicies": { + "items": { + "$ref": "#/$defs/ExplainPolicy" + }, + "type": "array" + }, + "staffing": { + "$ref": "#/$defs/ExplainStaffing" + }, + "status": { + "$ref": "#/$defs/ReportStatus" + }, + "trustedProducers": { + "items": { + "$ref": "#/$defs/ReviewProducerPolicy" + }, + "type": "array" + }, + "version": { + "type": "string" + } + }, + "required": [ + "command", + "ok", + "status", + "apiVersion", + "kind", + "version", + "diagnostics" + ], + "type": "object" + }, + { + "additionalProperties": false, + "allOf": [ + { + "if": { + "anyOf": [ + { + "properties": { + "ok": { + "const": true + } + }, + "required": [ + "ok" + ] + }, + { + "required": [ + "databaseAccess" + ] + }, + { + "required": [ + "fixtures" + ] + }, + { + "required": [ + "networkAccess" + ] + }, + { + "required": [ + "productionClosure" + ] + }, + { + "required": [ + "proofBoundary" + ] + } + ] + }, + "then": { + "required": [ + "fixtures", + "proofBoundary", + "productionClosure", + "networkAccess", + "databaseAccess" + ] + } + } + ], + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/casework/report/v1alpha2", + "type": "string" + }, + "command": { + "const": "test", + "type": "string" + }, + "databaseAccess": { + "type": "boolean" + }, + "diagnostics": { + "items": { + "$ref": "#/$defs/Diagnostic" + }, + "type": "array" + }, + "fixtures": { + "items": { + "type": "string" + }, + "type": "array" + }, + "kind": { + "const": "CaseworkReport", + "type": "string" + }, + "networkAccess": { + "type": "boolean" + }, + "ok": { + "type": "boolean" + }, + "productionClosure": { + "type": "boolean" + }, + "proofBoundary": { + "type": "string" + }, + "status": { + "$ref": "#/$defs/ReportStatus" + }, + "version": { + "type": "string" + } + }, + "required": [ + "command", + "ok", + "status", + "apiVersion", + "kind", + "version", + "diagnostics" + ], + "type": "object" + }, + { + "additionalProperties": false, + "allOf": [ + { + "if": { + "anyOf": [ + { + "properties": { + "ok": { + "const": true + } + }, + "required": [ + "ok" + ] + }, + { + "required": [ + "files" + ] + }, + { + "required": [ + "output" + ] + } + ] + }, + "then": { + "required": [ + "output", + "files" + ] + } + } + ], + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/casework/report/v1alpha2", + "type": "string" + }, + "command": { + "const": "types", + "type": "string" + }, + "diagnostics": { + "items": { + "$ref": "#/$defs/Diagnostic" + }, + "type": "array" + }, + "files": { + "items": { + "type": "string" + }, + "type": "array" + }, + "kind": { + "const": "CaseworkReport", + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "output": { + "type": "string" + }, + "status": { + "$ref": "#/$defs/ReportStatus" + }, + "version": { + "type": "string" + } + }, + "required": [ + "command", + "ok", + "status", + "apiVersion", + "kind", + "version", + "diagnostics" + ], + "type": "object" + }, + { + "additionalProperties": false, + "allOf": [ + { + "if": { + "anyOf": [ + { + "properties": { + "ok": { + "const": true + } + }, + "required": [ + "ok" + ] + }, + { + "required": [ + "accessProfiles" + ] + }, + { + "required": [ + "assertionIssuers" + ] + }, + { + "required": [ + "claims" + ] + }, + { + "required": [ + "output" + ] + }, + { + "required": [ + "product" + ] + } + ] + }, + "then": { + "required": [ + "output", + "product", + "claims", + "accessProfiles", + "assertionIssuers" + ] + } + } + ], + "properties": { + "accessProfiles": { + "format": "uint32", + "maximum": 4294967295, + "minimum": 0, + "type": "integer" + }, + "apiVersion": { + "const": "id.registrystack.org/formats/casework/report/v1alpha2", + "type": "string" + }, + "assertionIssuers": { + "format": "uint32", + "maximum": 4294967295, + "minimum": 0, + "type": "integer" + }, + "claims": { + "format": "uint32", + "maximum": 4294967295, + "minimum": 0, + "type": "integer" + }, + "command": { + "const": "generate-identity-facts", + "type": "string" + }, + "diagnostics": { + "items": { + "$ref": "#/$defs/Diagnostic" + }, + "type": "array" + }, + "kind": { + "const": "CaseworkReport", + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "output": { + "type": "string" + }, + "product": { + "type": "string" + }, + "status": { + "$ref": "#/$defs/ReportStatus" + }, + "version": { + "type": "string" + } + }, + "required": [ + "command", + "ok", + "status", + "apiVersion", + "kind", + "version", + "diagnostics" + ], + "type": "object" + }, + { + "additionalProperties": false, + "allOf": [ + { + "if": { + "anyOf": [ + { + "properties": { + "ok": { + "const": true + } + }, + "required": [ + "ok" + ] + }, + { + "required": [ + "actionId" + ] + }, + { + "required": [ + "authorityId" + ] + }, + { + "required": [ + "bypassPaths" + ] + }, + { + "required": [ + "changes" + ] + }, + { + "required": [ + "check" + ] + }, + { + "required": [ + "contextFields" + ] + }, + { + "required": [ + "deployment" + ] + }, + { + "required": [ + "inputsOnlyAlternative" + ] + }, + { + "required": [ + "next" + ] + }, + { + "required": [ + "outcome" + ] + }, + { + "required": [ + "package" + ] + }, + { + "required": [ + "pairing" + ] + }, + { + "required": [ + "pattern" + ] + }, + { + "required": [ + "policyId" + ] + }, + { + "required": [ + "project" + ] + }, + { + "required": [ + "providerId" + ] + }, + { + "required": [ + "readGrant" + ] + }, + { + "required": [ + "sourceNamespace" + ] + }, + { + "required": [ + "sourceWrites" + ] + } + ] + }, + "then": { + "required": [ + "project", + "actionId", + "pattern", + "outcome", + "sourceNamespace", + "policyId", + "authorityId", + "providerId", + "contextFields", + "changes", + "deployment", + "bypassPaths", + "sourceWrites", + "next" + ] + } + } + ], + "properties": { + "actionId": { + "type": "string" + }, + "apiVersion": { + "const": "id.registrystack.org/formats/casework/report/v1alpha2", + "type": "string" + }, + "authorityId": { + "type": "string" + }, + "bypassPaths": { + "items": { + "$ref": "#/$defs/ProviderAddBypass" + }, + "type": "array" + }, + "changes": { + "items": { + "$ref": "#/$defs/ProviderAddChange" + }, + "type": "array" + }, + "check": { + "x-registry-passthrough": "The existing typed caseworkctl check payload is embedded unchanged." + }, + "command": { + "const": "provider-add", + "type": "string" + }, + "contextFields": { + "items": { + "type": "string" + }, + "type": "array" + }, + "deployment": { + "items": { + "$ref": "#/$defs/ProviderAddChange" + }, + "type": "array" + }, + "diagnostics": { + "items": { + "$ref": "#/$defs/Diagnostic" + }, + "type": "array" + }, + "inputsOnlyAlternative": { + "anyOf": [ + { + "$ref": "#/$defs/ProviderAddNotice" + }, + { + "type": "null" + } + ] + }, + "kind": { + "const": "CaseworkReport", + "type": "string" + }, + "next": { + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "outcome": { + "$ref": "#/$defs/ProviderAddState" + }, + "package": { + "x-registry-passthrough": "The existing typed caseworkctl package payload is embedded unchanged." + }, + "pairing": { + "x-registry-passthrough": "The existing typed caseworkctl provider-pair agreement payload is embedded unchanged." + }, + "pattern": { + "type": "string" + }, + "policyId": { + "type": "string" + }, + "project": { + "type": "string" + }, + "providerId": { + "type": "string" + }, + "readGrant": { + "anyOf": [ + { + "$ref": "#/$defs/ProviderAddNotice" + }, + { + "type": "null" + } + ] + }, + "sourceNamespace": { + "type": "string" + }, + "sourceWrites": { + "type": "boolean" + }, + "status": { + "$ref": "#/$defs/ReportStatus" + }, + "version": { + "type": "string" + } + }, + "required": [ + "command", + "ok", + "status", + "apiVersion", + "kind", + "version", + "diagnostics" + ], + "type": "object" + }, + { + "additionalProperties": false, + "allOf": [ + { + "if": { + "anyOf": [ + { + "properties": { + "ok": { + "const": true + } + }, + "required": [ + "ok" + ] + }, + { + "required": [ + "applied" + ] + }, + { + "required": [ + "contract" + ] + }, + { + "required": [ + "description" + ] + }, + { + "required": [ + "next" + ] + }, + { + "required": [ + "providerId" + ] + }, + { + "required": [ + "readerAuthority" + ] + }, + { + "required": [ + "registryRevision" + ] + }, + { + "required": [ + "taskGrantAuthority" + ] + } + ] + }, + "then": { + "required": [ + "applied", + "providerId", + "description", + "contract", + "registryRevision", + "readerAuthority", + "next" + ] + } + } + ], + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/casework/report/v1alpha2", + "type": "string" + }, + "applied": { + "type": "boolean" + }, + "command": { + "const": "provider-pair", + "type": "string" + }, + "contract": { + "$ref": "#/$defs/ReviewContextContract" + }, + "description": { + "type": "string" + }, + "diagnostics": { + "items": { + "$ref": "#/$defs/Diagnostic" + }, + "type": "array" + }, + "kind": { + "const": "CaseworkReport", + "type": "string" + }, + "next": { + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "providerId": { + "type": "string" + }, + "readerAuthority": { + "$ref": "#/$defs/ReaderAuthority" + }, + "registryRevision": { + "type": "string" + }, + "status": { + "$ref": "#/$defs/ReportStatus" + }, + "taskGrantAuthority": { + "anyOf": [ + { + "$ref": "#/$defs/ReaderAuthority" + }, + { + "type": "null" + } + ] + }, + "version": { + "type": "string" + } + }, + "required": [ + "command", + "ok", + "status", + "apiVersion", + "kind", + "version", + "diagnostics" + ], + "type": "object" + }, + { + "additionalProperties": false, + "allOf": [ + { + "if": { + "anyOf": [ + { + "properties": { + "ok": { + "const": true + } + }, + "required": [ + "ok" + ] + }, + { + "required": [ + "lifecycles" + ] + } + ] + }, + "then": { + "required": [ + "lifecycles" + ] + } + } + ], + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/casework/report/v1alpha2", + "type": "string" + }, + "command": { + "const": "lifecycle", + "type": "string" + }, + "diagnostics": { + "items": { + "$ref": "#/$defs/Diagnostic" + }, + "type": "array" + }, + "kind": { + "const": "CaseworkReport", + "type": "string" + }, + "lifecycles": { + "items": { + "$ref": "#/$defs/LifecycleDescription" + }, + "type": "array" + }, + "ok": { + "type": "boolean" + }, + "status": { + "$ref": "#/$defs/ReportStatus" + }, + "version": { + "type": "string" + } + }, + "required": [ + "command", + "ok", + "status", + "apiVersion", + "kind", + "version", + "diagnostics" + ], + "type": "object" + }, + { + "additionalProperties": false, + "allOf": [ + { + "if": { + "anyOf": [ + { + "properties": { + "ok": { + "const": true + } + }, + "required": [ + "ok" + ] + }, + { + "required": [ + "dryRun" + ] + }, + { + "required": [ + "files" + ] + }, + { + "required": [ + "output" + ] + }, + { + "required": [ + "packageDigest" + ] + }, + { + "required": [ + "revision" + ] + }, + { + "required": [ + "secretsIncluded" + ] + } + ] + }, + "then": { + "required": [ + "packageDigest" + ] + } + } + ], + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/casework/report/v1alpha2", + "type": "string" + }, + "command": { + "const": "package", + "type": "string" + }, + "diagnostics": { + "items": { + "$ref": "#/$defs/Diagnostic" + }, + "type": "array" + }, + "dryRun": { + "type": [ + "boolean", + "null" + ] + }, + "files": { + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, + "kind": { + "const": "CaseworkReport", + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "output": { + "type": [ + "string", + "null" + ] + }, + "packageDigest": { + "$ref": "#/$defs/Digest" + }, + "revision": { + "type": [ + "string", + "null" + ] + }, + "secretsIncluded": { + "type": [ + "boolean", + "null" + ] + }, + "status": { + "$ref": "#/$defs/ReportStatus" + }, + "version": { + "type": "string" + } + }, + "required": [ + "command", + "ok", + "status", + "apiVersion", + "kind", + "version", + "diagnostics" + ], + "type": "object" + }, + { + "additionalProperties": false, + "allOf": [ + { + "if": { + "anyOf": [ + { + "properties": { + "ok": { + "const": true + } + }, + "required": [ + "ok" + ] + }, + { + "required": [ + "activation" + ] + }, + { + "required": [ + "checks" + ] + }, + { + "required": [ + "packageDigest" + ] + }, + { + "required": [ + "runtimeConfig" + ] + } + ] + }, + "then": { + "required": [ + "runtimeConfig", + "packageDigest", + "activation", + "checks" + ] + } + } + ], + "properties": { + "activation": { + "$ref": "#/$defs/ActivationPlan" + }, + "apiVersion": { + "const": "id.registrystack.org/formats/casework/report/v1alpha2", + "type": "string" + }, + "checks": { + "$ref": "#/$defs/DoctorChecks" + }, + "command": { + "const": "doctor", + "type": "string" + }, + "diagnostics": { + "items": { + "$ref": "#/$defs/Diagnostic" + }, + "type": "array" + }, + "kind": { + "const": "CaseworkReport", + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "packageDigest": { + "$ref": "#/$defs/Digest" + }, + "runtimeConfig": { + "type": "string" + }, + "status": { + "$ref": "#/$defs/ReportStatus" + }, + "version": { + "type": "string" + } + }, + "required": [ + "command", + "ok", + "status", + "apiVersion", + "kind", + "version", + "diagnostics" + ], + "type": "object" + }, + { + "additionalProperties": false, + "allOf": [ + { + "if": { + "anyOf": [ + { + "properties": { + "ok": { + "const": true + } + }, + "required": [ + "ok" + ] + }, + { + "required": [ + "plan" + ] + }, + { + "required": [ + "runtimeConfig" + ] + } + ] + }, + "then": { + "required": [ + "runtimeConfig", + "plan" + ] + } + } + ], + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/casework/report/v1alpha2", + "type": "string" + }, + "command": { + "const": "plan", + "type": "string" + }, + "diagnostics": { + "items": { + "$ref": "#/$defs/Diagnostic" + }, + "type": "array" + }, + "kind": { + "const": "CaseworkReport", + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "plan": { + "$ref": "#/$defs/ActivationPlan" + }, + "runtimeConfig": { + "type": "string" + }, + "status": { + "$ref": "#/$defs/ReportStatus" + }, + "version": { + "type": "string" + } + }, + "required": [ + "command", + "ok", + "status", + "apiVersion", + "kind", + "version", + "diagnostics" + ], + "type": "object" + }, + { + "additionalProperties": false, + "allOf": [ + { + "if": { + "anyOf": [ + { + "properties": { + "ok": { + "const": true + } + }, + "required": [ + "ok" + ] + }, + { + "required": [ + "activation" + ] + }, + { + "required": [ + "effects" + ] + }, + { + "required": [ + "runtimeConfig" + ] + }, + { + "required": [ + "schemaVersionsApplied" + ] + }, + { + "required": [ + "singleRoleStatement" + ] + } + ] + }, + "then": { + "required": [ + "runtimeConfig", + "activation", + "schemaVersionsApplied", + "effects", + "singleRoleStatement" + ] + } + } + ], + "properties": { + "activation": { + "$ref": "#/$defs/Activation" + }, + "apiVersion": { + "const": "id.registrystack.org/formats/casework/report/v1alpha2", + "type": "string" + }, + "command": { + "const": "apply", + "type": "string" + }, + "diagnostics": { + "items": { + "$ref": "#/$defs/Diagnostic" + }, + "type": "array" + }, + "effects": { + "$ref": "#/$defs/ActivationEffects" + }, + "kind": { + "const": "CaseworkReport", + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "runtimeConfig": { + "type": "string" + }, + "schemaVersionsApplied": { + "items": { + "format": "int64", + "maximum": 9223372036854775807, + "minimum": -9223372036854775808, + "type": "integer" + }, + "type": "array" + }, + "singleRoleStatement": { + "type": [ + "string", + "null" + ] + }, + "status": { + "$ref": "#/$defs/ReportStatus" + }, + "version": { + "type": "string" + } + }, + "required": [ + "command", + "ok", + "status", + "apiVersion", + "kind", + "version", + "diagnostics" + ], + "type": "object" + }, + { + "additionalProperties": false, + "allOf": [ + { + "if": { + "anyOf": [ + { + "properties": { + "ok": { + "const": true + } + }, + "required": [ + "ok" + ] + }, + { + "required": [ + "activation" + ] + }, + { + "required": [ + "runtimeConfig" + ] + }, + { + "required": [ + "singleRoleStatement" + ] + } + ] + }, + "then": { + "required": [ + "runtimeConfig", + "activation", + "singleRoleStatement" + ] + } + } + ], + "properties": { + "activation": { + "$ref": "#/$defs/ActivationStatus" + }, + "apiVersion": { + "const": "id.registrystack.org/formats/casework/report/v1alpha2", + "type": "string" + }, + "command": { + "const": "status", + "type": "string" + }, + "diagnostics": { + "items": { + "$ref": "#/$defs/Diagnostic" + }, + "type": "array" + }, + "kind": { + "const": "CaseworkReport", + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "runtimeConfig": { + "type": "string" + }, + "singleRoleStatement": { + "type": [ + "string", + "null" + ] + }, + "status": { + "$ref": "#/$defs/ReportStatus" + }, + "version": { + "type": "string" + } + }, + "required": [ + "command", + "ok", + "status", + "apiVersion", + "kind", + "version", + "diagnostics" + ], + "type": "object" + }, + { + "additionalProperties": false, + "allOf": [ + { + "if": { + "anyOf": [ + { + "properties": { + "ok": { + "const": true + } + }, + "required": [ + "ok" + ] + }, + { + "required": [ + "audience" + ] + }, + { + "required": [ + "caseworkUrl" + ] + }, + { + "required": [ + "clientAssertionAudience" + ] + }, + { + "required": [ + "clients" + ] + }, + { + "required": [ + "contextProviders" + ] + }, + { + "required": [ + "directory" + ] + }, + { + "required": [ + "issuer" + ] + }, + { + "required": [ + "issuerProject" + ] + }, + { + "required": [ + "journal" + ] + }, + { + "required": [ + "operatorConfig" + ] + }, + { + "required": [ + "outcome" + ] + }, + { + "required": [ + "project" + ] + }, + { + "required": [ + "resource" + ] + }, + { + "required": [ + "stateFile" + ] + }, + { + "required": [ + "tokenEndpoint" + ] + } + ] + }, + "then": { + "required": [ + "outcome", + "project", + "stateFile", + "operatorConfig", + "caseworkUrl", + "tokenEndpoint", + "issuer", + "clientAssertionAudience", + "resource", + "audience", + "journal", + "contextProviders", + "clients", + "directory" + ] + } + } + ], + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/casework/report/v1alpha2", + "type": "string" + }, + "audience": { + "type": "string" + }, + "caseworkUrl": { + "$ref": "#/$defs/Url" + }, + "clientAssertionAudience": { + "type": "string" + }, + "clients": { + "items": { + "$ref": "#/$defs/DevClient" + }, + "type": "array" + }, + "command": { + "const": "dev", + "type": "string" + }, + "contextProviders": { + "items": { + "type": "string" + }, + "type": "array" + }, + "diagnostics": { + "items": { + "$ref": "#/$defs/Diagnostic" + }, + "type": "array" + }, + "directory": { + "$ref": "#/$defs/DevDirectory" + }, + "issuer": { + "$ref": "#/$defs/Url" + }, + "issuerProject": { + "type": [ + "string", + "null" + ] + }, + "journal": { + "type": "string" + }, + "kind": { + "const": "CaseworkReport", + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "operatorConfig": { + "type": "string" + }, + "outcome": { + "$ref": "#/$defs/DevState" + }, + "project": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "stateFile": { + "type": "string" + }, + "status": { + "$ref": "#/$defs/ReportStatus" + }, + "tokenEndpoint": { + "type": "string" + }, + "version": { + "type": "string" + } + }, + "required": [ + "command", + "ok", + "status", + "apiVersion", + "kind", + "version", + "diagnostics" + ], + "type": "object" + }, + { + "additionalProperties": false, + "allOf": [ + { + "if": { + "anyOf": [ + { + "properties": { + "ok": { + "const": true + } + }, + "required": [ + "ok" + ] + }, + { + "required": [ + "events" + ] + }, + { + "required": [ + "journal" + ] + }, + { + "required": [ + "project" + ] + }, + { + "required": [ + "truncated" + ] + } + ] + }, + "then": { + "required": [ + "project", + "journal", + "events", + "truncated" + ] + } + } + ], + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/casework/report/v1alpha2", + "type": "string" + }, + "command": { + "const": "dev-events", + "type": "string" + }, + "diagnostics": { + "items": { + "$ref": "#/$defs/Diagnostic" + }, + "type": "array" + }, + "events": { + "items": { + "type": "string" + }, + "type": "array" + }, + "journal": { + "type": "string" + }, + "kind": { + "const": "CaseworkReport", + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "project": { + "type": "string" + }, + "status": { + "$ref": "#/$defs/ReportStatus" + }, + "truncated": { + "type": "boolean" + }, + "version": { + "type": "string" + } + }, + "required": [ + "command", + "ok", + "status", + "apiVersion", + "kind", + "version", + "diagnostics" + ], + "type": "object" + }, + { + "additionalProperties": false, + "allOf": [ + { + "if": { + "anyOf": [ + { + "properties": { + "ok": { + "const": true + } + }, + "required": [ + "ok" + ] + }, + { + "required": [ + "headerFile" + ] + } + ] + }, + "then": { + "required": [ + "headerFile" + ] + } + } + ], + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/casework/report/v1alpha2", + "type": "string" + }, + "command": { + "const": "dev-token", + "type": "string" + }, + "diagnostics": { + "items": { + "$ref": "#/$defs/Diagnostic" + }, + "type": "array" + }, + "headerFile": { + "type": "string" + }, + "kind": { + "const": "CaseworkReport", + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "status": { + "$ref": "#/$defs/ReportStatus" + }, + "version": { + "type": "string" + } + }, + "required": [ + "command", + "ok", + "status", + "apiVersion", + "kind", + "version", + "diagnostics" + ], + "type": "object" + }, + { + "additionalProperties": false, + "allOf": [ + { + "if": { + "anyOf": [ + { + "properties": { + "ok": { + "const": true + } + }, + "required": [ + "ok" + ] + }, + { + "required": [ + "grantExpiresAt" + ] + }, + { + "required": [ + "headerFile" + ] + } + ] + }, + "then": { + "required": [ + "headerFile", + "grantExpiresAt" + ] + } + } + ], + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/casework/report/v1alpha2", + "type": "string" + }, + "command": { + "const": "dev-grant", + "type": "string" + }, + "diagnostics": { + "items": { + "$ref": "#/$defs/Diagnostic" + }, + "type": "array" + }, + "grantExpiresAt": { + "format": "uint64", + "maximum": 18446744073709551615, + "minimum": 0, + "type": "integer" + }, + "headerFile": { + "type": "string" + }, + "kind": { + "const": "CaseworkReport", + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "status": { + "$ref": "#/$defs/ReportStatus" + }, + "version": { + "type": "string" + } + }, + "required": [ + "command", + "ok", + "status", + "apiVersion", + "kind", + "version", + "diagnostics" + ], + "type": "object" + }, + { + "additionalProperties": false, + "allOf": [ + { + "if": { + "anyOf": [ + { + "properties": { + "ok": { + "const": true + } + }, + "required": [ + "ok" + ] + }, + { + "required": [ + "clientId" + ] + }, + { + "required": [ + "subject" + ] + } + ] + }, + "then": { + "required": [ + "clientId", + "subject" + ] + } + } + ], + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/casework/report/v1alpha2", + "type": "string" + }, + "clientId": { + "type": "string" + }, + "command": { + "const": "dev-identity", + "type": "string" + }, + "diagnostics": { + "items": { + "$ref": "#/$defs/Diagnostic" + }, + "type": "array" + }, + "kind": { + "const": "CaseworkReport", + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "status": { + "$ref": "#/$defs/ReportStatus" + }, + "subject": { + "type": "string" + }, + "version": { + "type": "string" + } + }, + "required": [ + "command", + "ok", + "status", + "apiVersion", + "kind", + "version", + "diagnostics" + ], + "type": "object" + }, + { + "additionalProperties": false, + "allOf": [ + { + "if": { + "anyOf": [ + { + "properties": { + "ok": { + "const": true + } + }, + "required": [ + "ok" + ] + } + ] + }, + "then": { + "required": [] + } + }, + { + "properties": { + "ok": { + "const": false + }, + "status": { + "const": "usage-error" + } + }, + "required": [ + "ok", + "status" + ] + } + ], + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/casework/report/v1alpha2", + "type": "string" + }, + "command": { + "const": "usage", + "type": "string" + }, + "diagnostics": { + "items": { + "$ref": "#/$defs/Diagnostic" + }, + "type": "array" + }, + "kind": { + "const": "CaseworkReport", + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "status": { + "$ref": "#/$defs/ReportStatus" + }, + "version": { + "type": "string" + } + }, + "required": [ + "command", + "ok", + "status", + "apiVersion", + "kind", + "version", + "diagnostics" + ], + "type": "object" + }, + { + "additionalProperties": false, + "allOf": [ + { + "if": { + "anyOf": [ + { + "properties": { + "ok": { + "const": true + } + }, + "required": [ + "ok" + ] + } + ] + }, + "then": { + "required": [] + } + }, + { + "properties": { + "ok": { + "const": false + }, + "status": { + "const": "operational-failure" + } + }, + "required": [ + "ok", + "status" + ] + } + ], + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/casework/report/v1alpha2", + "type": "string" + }, + "command": { + "const": "internal", + "type": "string" + }, + "diagnostics": { + "items": { + "$ref": "#/$defs/Diagnostic" + }, + "type": "array" + }, + "kind": { + "const": "CaseworkReport", + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "status": { + "$ref": "#/$defs/ReportStatus" + }, + "version": { + "type": "string" + } + }, + "required": [ + "command", + "ok", + "status", + "apiVersion", + "kind", + "version", + "diagnostics" + ], + "type": "object" + } + ], + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/casework/report/v1alpha2" + }, + "kind": { + "const": "CaseworkReport" + } + }, + "required": [ + "ok", + "command", + "status", + "apiVersion", + "kind", + "version", + "diagnostics" + ], + "title": "Casework command report", + "unevaluatedProperties": false +} diff --git a/src/artifacts/sha256/3fef758cd53950ea9cef953dca6c2364188eddff2978695c70fd88237d451ece.json b/src/artifacts/sha256/3fef758cd53950ea9cef953dca6c2364188eddff2978695c70fd88237d451ece.json new file mode 100644 index 000000000..97fe8f59a --- /dev/null +++ b/src/artifacts/sha256/3fef758cd53950ea9cef953dca6c2364188eddff2978695c70fd88237d451ece.json @@ -0,0 +1,66 @@ +{ + "$defs": { + "CalendarDate": { + "format": "date", + "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$", + "type": "string" + }, + "DisplayText": { + "description": "Human-readable display text. Bidirectional embedding, override, and isolate controls, byte-order marks, line and paragraph separators, and Unicode noncharacters are refused; multilingual joiners and direction marks remain valid.", + "not": { + "pattern": "[

‪-‮⁦-⁩﷐-﷯￾￿]|🿾|🿿|𯿾|𯿿|𿿾|𿿿|񏿾|񏿿|񟿾|񟿿|񯿾|񯿿|񿿾|񿿿|򏿾|򏿿|򟿾|򟿿|򯿾|򯿿|򿿾|򿿿|󏿾|󏿿|󟿾|󟿿|󯿾|󯿿|󿿾|󿿿|􏿾|􏿿" + }, + "type": "string" + }, + "LocalId": { + "description": "A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.", + "pattern": "^[a-z][a-z0-9_-]{0,63}$", + "type": "string" + } + }, + "$id": "https://id.registrystack.org/schemas/casework/holiday-set/holiday-set.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/casework/holiday-set/v1alpha1", + "type": "string" + }, + "dates": { + "description": "The dates that are not working days, at most 3660.", + "items": { + "$ref": "#/$defs/CalendarDate" + }, + "maxItems": 3660, + "type": "array", + "uniqueItems": true + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The holiday set a calendar names in `holidaySet`." + }, + "kind": { + "const": "CaseworkHolidaySet", + "type": "string" + }, + "label": { + "$ref": "#/$defs/DisplayText", + "description": "An optional human label for the set." + }, + "revision": { + "format": "uint64", + "maximum": 9223372036854775807, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "apiVersion", + "kind", + "id", + "revision", + "dates" + ], + "title": "Registry Casework holiday set", + "type": "object" +} diff --git a/src/artifacts/sha256/4a4b93a4cca9568c089166b2d7f2ee13306b4abcba7289f4b5290d55ef44d644.json b/src/artifacts/sha256/4a4b93a4cca9568c089166b2d7f2ee13306b4abcba7289f4b5290d55ef44d644.json new file mode 100644 index 000000000..802ec895f --- /dev/null +++ b/src/artifacts/sha256/4a4b93a4cca9568c089166b2d7f2ee13306b4abcba7289f4b5290d55ef44d644.json @@ -0,0 +1,292 @@ +{ + "$defs": { + "AccessGrant": { + "additionalProperties": false, + "properties": { + "audienceFrom": { + "$ref": "#/$defs/AudienceFrom" + }, + "definition": { + "$ref": "#/$defs/LocalId" + }, + "purpose": { + "type": "string" + }, + "representations": { + "items": { + "$ref": "#/$defs/Representation" + }, + "maxItems": 4, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "subjectBinding": { + "$ref": "#/$defs/BindingMode" + }, + "subjects": { + "items": { + "$ref": "#/$defs/GrantedSubject" + }, + "maxItems": 8, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "definition", + "purpose", + "audienceFrom", + "representations", + "subjectBinding", + "subjects" + ], + "type": "object" + }, + "AccessProfile": { + "additionalProperties": false, + "properties": { + "actorKind": { + "anyOf": [ + { + "$ref": "#/$defs/ActorKind" + }, + { + "type": "null" + } + ] + }, + "authority": { + "$ref": "#/$defs/AuthorityKind" + }, + "description": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "type": "null" + } + ], + "description": "What the profile is for, accepted for authoring and tooling; never matched against a caller." + }, + "grantSourceIssuer": { + "anyOf": [ + { + "$ref": "#/$defs/Url" + }, + { + "type": "null" + } + ] + }, + "grants": { + "items": { + "$ref": "#/$defs/AccessGrant" + }, + "maxItems": 128, + "minItems": 1, + "type": "array" + }, + "label": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "type": "null" + } + ], + "description": "A name for the profile, accepted for authoring and tooling; never matched against a caller." + }, + "requesterClients": { + "items": { + "type": "string" + }, + "maxItems": 32, + "minItems": 1, + "type": [ + "array", + "null" + ], + "uniqueItems": true + }, + "requesterTags": { + "items": { + "type": "string" + }, + "maxItems": 32, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "authority", + "requesterTags", + "grants" + ], + "type": "object" + }, + "ActorKind": { + "enum": [ + "human", + "agent", + "service" + ], + "type": "string" + }, + "AudienceFrom": { + "enum": [ + "authenticated-requester" + ], + "type": "string" + }, + "AuthorityKind": { + "enum": [ + "statutory", + "organizational", + "consent", + "delegated", + "explicit-request" + ], + "type": "string" + }, + "BindingMode": { + "enum": [ + "audience-scoped", + "holder-bound" + ], + "type": "string" + }, + "DisplayText": { + "description": "Human-readable display text. Bidirectional embedding, override, and isolate controls, byte-order marks, line and paragraph separators, and Unicode noncharacters are refused; multilingual joiners and direction marks remain valid.", + "not": { + "pattern": "[

‪-‮⁦-⁩﷐-﷯￾￿]|🿾|🿿|𯿾|𯿿|𿿾|𿿿|񏿾|񏿿|񟿾|񟿿|񯿾|񯿿|񿿾|񿿿|򏿾|򏿿|򟿾|򟿿|򯿾|򯿿|򿿾|򿿿|󏿾|󏿿|󟿾|󟿿|󯿾|󯿿|󿿾|󿿿|􏿾|􏿿" + }, + "type": "string" + }, + "GrantedSubject": { + "additionalProperties": false, + "properties": { + "role": { + "$ref": "#/$defs/LocalId" + }, + "selectorProfile": { + "$ref": "#/$defs/LocalId" + }, + "valueClaims": { + "additionalProperties": { + "type": "string" + }, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": [ + "object", + "null" + ] + }, + "valueOrigin": { + "$ref": "#/$defs/ValueOrigin" + } + }, + "required": [ + "role", + "selectorProfile", + "valueOrigin" + ], + "type": "object" + }, + "LocalId": { + "description": "A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.", + "pattern": "^[a-z][a-z0-9_-]{0,63}$", + "type": "string" + }, + "PublicCheckActivation": { + "additionalProperties": false, + "properties": { + "definition": { + "$ref": "#/$defs/LocalId", + "description": "The definition whose `publicCheck` declaration this target serves." + } + }, + "required": [ + "definition" + ], + "type": "object" + }, + "Representation": { + "enum": [ + "signed-jws", + "sd-jwt-vc", + "unsigned-json", + "sd-jwt-vc-batch" + ], + "type": "string" + }, + "Url": { + "description": "An absolute http or https URL with a host preserved as written, no user information, and no backslash, whitespace or control character. DNS case and equivalent IPv6 literals are permitted.", + "format": "uri", + "maxLength": 2048, + "pattern": "^[Hh][Tt][Tt][Pp][Ss]?://[^/?#@\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]+([/?#][^\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]*)?$", + "type": "string" + }, + "ValueOrigin": { + "enum": [ + "request", + "authenticated-context", + "authenticated-grant" + ], + "type": "string" + } + }, + "$id": "https://id.registrystack.org/schemas/evidence/target-authority/target-authority.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "accessProfiles": { + "additionalProperties": { + "$ref": "#/$defs/AccessProfile" + }, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "apiVersion": { + "const": "id.registrystack.org/formats/evidence/target-authority/v1alpha1", + "type": "string" + }, + "kind": { + "const": "EvidenceTargetAuthority", + "type": "string" + }, + "project": { + "$ref": "#/$defs/LocalId" + }, + "publicCheck": { + "anyOf": [ + { + "$ref": "#/$defs/PublicCheckActivation" + }, + { + "type": "null" + } + ], + "description": "Experimental (`v1alpha1`). Activates the unauthenticated public\ncertificate check for one definition that declares `publicCheck`. A\ncheck-only instance leaves `accessProfiles` empty." + }, + "target": { + "$ref": "#/$defs/LocalId" + } + }, + "required": [ + "apiVersion", + "kind", + "target", + "project", + "accessProfiles" + ], + "title": "Evidence target authority", + "type": "object" +} diff --git a/src/artifacts/sha256/4a62c7dd8399bd3a5991efb203a34310918bad17a95b8a74c7784e6486ae6f21.json b/src/artifacts/sha256/4a62c7dd8399bd3a5991efb203a34310918bad17a95b8a74c7784e6486ae6f21.json new file mode 100644 index 000000000..f9ef61c40 --- /dev/null +++ b/src/artifacts/sha256/4a62c7dd8399bd3a5991efb203a34310918bad17a95b8a74c7784e6486ae6f21.json @@ -0,0 +1,689 @@ +{ + "$defs": { + "AnonymousHttpsAcknowledgement": { + "description": "The one named acknowledgement that admits a credential-free HTTPS\nsource. This is a security-sensitive operator decision, not a boolean\nwhose meaning can be lost in a rendered configuration.", + "oneOf": [ + { + "const": "operator-approved", + "description": "The operator reviewed and approved this fixed anonymous source.", + "type": "string" + } + ] + }, + "AuditRetention": { + "additionalProperties": false, + "description": "The audit journal's retention (`products/adapter/CONCEPT.md` section\n11), bounded by the platform access-log window.", + "properties": { + "retentionDays": { + "description": "Days a journal row is retained.", + "format": "uint32", + "maximum": 3650, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "retentionDays" + ], + "type": "object" + }, + "Cidr": { + "description": "A private network range in `addr/prefix` form, for example 10.0.0.0/8.", + "pattern": "^[0-9a-fA-F.:]+/[0-9]{1,3}$", + "type": "string" + }, + "CredentialPlacement": { + "description": "Where a shared client secret travels, Evidence's `CredentialPlacement`\nspelling.", + "oneOf": [ + { + "const": "basic-header", + "description": "`Authorization: Basic` on the token request.", + "type": "string" + }, + { + "const": "form-body", + "description": "A form parameter on the token request.", + "type": "string" + } + ] + }, + "DatabaseConfig": { + "additionalProperties": false, + "description": "The PostgreSQL connection a stateful runtime uses. Both URLs are secret\nreferences and may name the same secret.", + "properties": { + "migrationUrlRef": { + "$ref": "#/$defs/SecretReference", + "description": "Secret reference to the migration connection URL." + }, + "runtimeUrlRef": { + "$ref": "#/$defs/SecretReference", + "description": "Secret reference to the least-privileged runtime connection URL." + }, + "testOnlyPlaintext": { + "default": false, + "description": "Allow a plaintext connection. Refused outside test builds.", + "type": "boolean" + }, + "trustedRootCertificateRef": { + "$ref": "#/$defs/SecretReference", + "description": "Secret reference to a PEM root certificate the connection trusts.\nAbsent, the connection trusts the platform's root certificates." + } + }, + "required": [ + "runtimeUrlRef", + "migrationUrlRef" + ], + "type": "object" + }, + "EndpointBinding": { + "additionalProperties": false, + "description": "The environment binding of one pack endpoint: its base URL, its\ncredentials matching the endpoint's declared kind, and the optional TLS\nadditions (`products/adapter/CONCEPT.md` section 10.2).", + "properties": { + "anonymousHttps": { + "$ref": "#/$defs/AnonymousHttpsAcknowledgement", + "description": "The operator's explicit acknowledgement that a credential-free\nsource is intentionally served over verified HTTPS. Omission keeps\nthe credential-free policy closed outside numeric loopback and mTLS." + }, + "attemptTimeoutMilliseconds": { + "description": "A finite attempt-timeout override in milliseconds. Evidence may raise\nor lower its pack default under the acquisition's remaining deadline;\nfacade and job admit only a lower value within their ten-second policy.", + "format": "uint64", + "maximum": 18446744073709551615, + "minimum": 1, + "type": "integer" + }, + "baseUrl": { + "$ref": "#/$defs/Url", + "description": "The upstream origin; a fixed destination the engine never derives\nfrom a response." + }, + "credential": { + "$ref": "#/$defs/RuntimeCredential", + "description": "The credential; its kind must match the endpoint's declared kind." + }, + "endpoint": { + "$ref": "#/$defs/ExternalId", + "description": "The pack endpoint this binding configures." + }, + "maximumConcurrency": { + "default": 8, + "description": "The maximum simultaneous physical data operations admitted for this\nendpoint. Evidence programs selecting the same named connection share\none permit pool; token acquisition retains its own cache/single-flight\ncontrols.", + "format": "uint64", + "maximum": 256, + "minimum": 1, + "type": "integer" + }, + "maximumResponseBytes": { + "description": "A lower response bound than the pack declares, in bytes (1 to\n16777216, the largest bound a pack endpoint may declare); absent, the\ndeclared one applies. A value above the declared one is refused when\nthe deployment loads.", + "format": "uint64", + "maximum": 16777216, + "minimum": 1, + "type": "integer" + }, + "mtlsIdentity": { + "$ref": "#/$defs/MtlsIdentity", + "description": "The mTLS client identity, combinable with any authentication kind." + }, + "tlsTrustProfile": { + "$ref": "#/$defs/LocalId", + "description": "A trust profile under `outboundTls.trustProfiles` whose CA bundle\nthe endpoint trusts beside the system roots; absent, the endpoint\ntrusts the system roots alone." + } + }, + "required": [ + "endpoint", + "baseUrl" + ], + "type": "object" + }, + "EnvironmentSecretProviderConfig": { + "additionalProperties": false, + "description": "The environment secret provider. It takes no settings.", + "type": "object" + }, + "ExternalId": { + "description": "An identifier another system issues, written exactly as its issuer gives it.", + "maxLength": 512, + "minLength": 1, + "pattern": "^[^\\u0000-\\u001F\\u007F-\\u009F]+$", + "type": "string" + }, + "FileSecretProviderConfig": { + "additionalProperties": false, + "description": "The file secret provider.", + "properties": { + "root": { + "description": "Absolute directory holding one file per secret. Each file must be a\nregular file owned by the runtime user, mode 0400 or 0600, with exactly\none hard link.", + "pattern": "^/", + "type": "string" + } + }, + "required": [ + "root" + ], + "type": "object" + }, + "IdempotencyRetention": { + "additionalProperties": false, + "description": "Exact write-response custody in the idempotency store\n(`products/adapter/CONCEPT.md` section 9).", + "properties": { + "responseRetentionSeconds": { + "description": "Seconds an exact facade response remains available for replay. The\nspent-key tombstone remains after its response body is erased.", + "format": "uint64", + "maximum": 31536000, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "responseRetentionSeconds" + ], + "type": "object" + }, + "JwksSource": { + "description": "Where a runtime obtains the OIDC issuer's signing keys.", + "oneOf": [ + { + "additionalProperties": false, + "description": "Read `jwks_uri` from the issuer's OpenID Connect discovery document.", + "properties": { + "type": { + "const": "discovery", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Fetch the key set from this absolute `https` URI, skipping discovery.\nA plain `http` URI is accepted on loopback for supervised local\ndevelopment, and beyond loopback only when the issuer block sets\n`allowInsecureHttp`.", + "properties": { + "type": { + "const": "uri", + "type": "string" + }, + "uri": { + "$ref": "#/$defs/Url" + } + }, + "required": [ + "type", + "uri" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Read the key set from a secret, for deployments without network access\nto the issuer.", + "properties": { + "documentRef": { + "$ref": "#/$defs/SecretReference" + }, + "type": { + "const": "static", + "type": "string" + } + }, + "required": [ + "type", + "documentRef" + ], + "type": "object" + } + ] + }, + "ListenerBind": { + "description": "Socket address the runtime listens on, written host:port with an IP address host ([addr]:port for IPv6).", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "ListenerConfig": { + "additionalProperties": false, + "description": "The listener of a runtime that declares no TLS or exposure settings.", + "properties": { + "bind": { + "$ref": "#/$defs/ListenerBind" + } + }, + "required": [ + "bind" + ], + "type": "object" + }, + "LocalId": { + "description": "A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.", + "pattern": "^[a-z][a-z0-9_-]{0,63}$", + "type": "string" + }, + "MtlsIdentity": { + "additionalProperties": false, + "description": "The mTLS client identity of an endpoint, orthogonal to the\nauthentication kind (`products/adapter/CONCEPT.md` section 10.2). It is\none way a `none` endpoint reaches a non-loopback source. An operator may\ninstead acknowledge a credential-free HTTPS source on its fixed runtime\nbinding.", + "properties": { + "certificateRef": { + "$ref": "#/$defs/SecretReference", + "description": "The client certificate secret reference." + }, + "keyRef": { + "$ref": "#/$defs/SecretReference", + "description": "The client private key secret reference." + } + }, + "required": [ + "certificateRef", + "keyRef" + ], + "type": "object" + }, + "OidcIssuerConfig": { + "additionalProperties": false, + "description": "The OIDC issuer a runtime accepts access tokens from: the exact `iss`\nvalue, the `aud` value a token must carry, and where the issuer's signing\nkeys come from, written under `authentication.oidc` beside the product's\nown token rules.", + "properties": { + "allowInsecureHttp": { + "default": false, + "description": "Permit plain HTTP beyond loopback to the configured issuer and to a\nJWKS URI declared in configuration. TLS remains required unless the\noperator explicitly accepts this transport risk.", + "type": "boolean" + }, + "audience": { + "description": "The audience every accepted access token must carry in `aud`.", + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "issuer": { + "$ref": "#/$defs/Url", + "description": "Exact issuer accepted in access-token `iss` claims, an absolute\n`https` URL, or a plain `http` URL when `allowInsecureHttp` is set." + }, + "jwksSource": { + "$ref": "#/$defs/JwksSource", + "default": { + "type": "discovery" + }, + "description": "Where the issuer's signing keys come from. Absent reads the issuer's\nOpenID Connect discovery document." + } + }, + "required": [ + "issuer", + "audience" + ], + "type": "object" + }, + "OutboundTls": { + "additionalProperties": false, + "description": "The private certificate authorities endpoints may trust beside the\nsystem roots (`products/adapter/CONCEPT.md` section 10.2), in the shape\nEvidence ships: a named profile is a process-local PEM file. A CA\nbundle is not a secret, so the profile names a file, never a secret\nreference.", + "properties": { + "trustProfiles": { + "additionalProperties": { + "$ref": "#/$defs/TrustProfile" + }, + "default": {}, + "description": "The named private CA bundles.", + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + } + }, + "type": "object" + }, + "RuntimeCredential": { + "description": "The credential binding of one endpoint in the runtime config\n(`products/adapter/CONCEPT.md` section 10.2): Evidence's\n`SourceAuthentication` variant field for field, minus the pack-side\n`headerName` and `scheme`. The kind must match the endpoint's declared\nkind; the checks refuse a mismatch.", + "oneOf": [ + { + "additionalProperties": false, + "description": "No credential; matches a `none` endpoint.", + "properties": { + "type": { + "const": "none", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "The Basic credential pair.", + "properties": { + "passwordRef": { + "$ref": "#/$defs/SecretReference", + "description": "The password secret reference." + }, + "type": { + "const": "basic", + "type": "string" + }, + "usernameRef": { + "$ref": "#/$defs/SecretReference", + "description": "The username secret reference." + } + }, + "required": [ + "passwordRef", + "type", + "usernameRef" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "The static token, presented under the endpoint's declared `scheme`.", + "properties": { + "tokenRef": { + "$ref": "#/$defs/SecretReference", + "description": "The token secret reference." + }, + "type": { + "const": "static-authorization", + "type": "string" + } + }, + "required": [ + "tokenRef", + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "The static API key, sent in the endpoint's declared header.", + "properties": { + "type": { + "const": "static-api-key", + "type": "string" + }, + "valueRef": { + "$ref": "#/$defs/SecretReference", + "description": "The key secret reference." + } + }, + "required": [ + "type", + "valueRef" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "The client-credentials binding, Evidence's fields: the token\nendpoint, the client id, and the shared secret, all as references\nor fixed strings.", + "properties": { + "assumedLifetimeSeconds": { + "description": "Lifetime assumed when the provider omits `expires_in`.", + "format": "uint64", + "maximum": 86400, + "minimum": 1, + "type": "integer" + }, + "audience": { + "description": "Fixed `audience` form parameter.", + "type": "string" + }, + "clientIdRef": { + "$ref": "#/$defs/SecretReference", + "description": "The client id secret reference." + }, + "clientSecretRef": { + "$ref": "#/$defs/SecretReference", + "description": "The shared client secret reference." + }, + "credentialPlacement": { + "$ref": "#/$defs/CredentialPlacement", + "description": "Where the shared client secret travels." + }, + "maximumCacheSeconds": { + "description": "The token cache ceiling, Evidence's bound.", + "format": "uint64", + "maximum": 86400, + "minimum": 0, + "type": "integer" + }, + "resource": { + "description": "RFC 8707 resource indicator sent as a token-request form\nparameter.", + "type": "string" + }, + "scope": { + "description": "The token-request scope parameter.", + "type": "string" + }, + "tokenEndpoint": { + "$ref": "#/$defs/Url", + "description": "The token endpoint, a fixed destination never derived from a\nresponse; an absolute `http`/`https` URL the origin check\nconfines like any other destination." + }, + "type": { + "const": "oauth2-client-credentials", + "type": "string" + } + }, + "required": [ + "clientIdRef", + "clientSecretRef", + "credentialPlacement", + "maximumCacheSeconds", + "tokenEndpoint", + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "The private-key-jwt binding, Evidence's fields. The signed\nassertion always travels in the form body; there is no placement\nparameter.", + "properties": { + "assumedLifetimeSeconds": { + "format": "uint64", + "maximum": 86400, + "minimum": 1, + "type": "integer" + }, + "audience": { + "type": "string" + }, + "clientAssertionAudience": { + "description": "Audience claim of the signed assertion, defaulting to the\ntoken endpoint.", + "type": "string" + }, + "clientAssertionKeyRef": { + "$ref": "#/$defs/SecretReference", + "description": "The private JWK the client assertion is signed with." + }, + "clientIdRef": { + "$ref": "#/$defs/SecretReference", + "description": "The client id secret reference." + }, + "maximumCacheSeconds": { + "format": "uint64", + "maximum": 86400, + "minimum": 0, + "type": "integer" + }, + "resource": { + "type": "string" + }, + "scope": { + "type": "string" + }, + "tokenEndpoint": { + "$ref": "#/$defs/Url", + "description": "The token endpoint, a fixed destination never derived from a\nresponse; an absolute `http`/`https` URL the origin check\nconfines like any other destination." + }, + "type": { + "const": "oauth2-private-key-jwt", + "type": "string" + } + }, + "required": [ + "clientAssertionKeyRef", + "clientIdRef", + "maximumCacheSeconds", + "tokenEndpoint", + "type" + ], + "type": "object" + } + ] + }, + "SecretProvidersConfig": { + "additionalProperties": false, + "anyOf": [ + { + "properties": { + "file": { + "$ref": "#/$defs/FileSecretProviderConfig" + } + }, + "required": [ + "file" + ] + }, + { + "properties": { + "environment": { + "$ref": "#/$defs/EnvironmentSecretProviderConfig" + } + }, + "required": [ + "environment" + ] + } + ], + "description": "The secret providers a runtime enables. A reference is resolved only by a\nprovider declared here: `secret:file/name` under `file.root`, and\n`secret:env/NAME` only when `environment: {}` is present.", + "properties": { + "environment": { + "$ref": "#/$defs/EnvironmentSecretProviderConfig", + "description": "Enables `secret:env/NAME` references, read from the process\nenvironment. Declared as an empty mapping: `environment: {}`." + }, + "file": { + "$ref": "#/$defs/FileSecretProviderConfig", + "description": "Enables `secret:file/name` references, read from files under `root`." + } + }, + "type": "object" + }, + "SecretReference": { + "description": "An exact secret reference: secret:file/name, resolved under secretProviders.file.root, or secret:env/NAME, resolved only when secretProviders.environment is declared.", + "pattern": "^(?:secret:env/[A-Z][A-Z0-9_]{0,127}|secret:file/[a-z][a-z0-9._-]{0,127})$", + "type": "string" + }, + "TrustProfile": { + "additionalProperties": false, + "description": "One named private CA bundle: the absolute path of the process-local PEM\nfile the runtime reads.", + "properties": { + "caBundleFile": { + "description": "The absolute path of the PEM file holding the bundle's certificates.", + "type": "string" + } + }, + "required": [ + "caBundleFile" + ], + "type": "object" + }, + "Url": { + "description": "An absolute http or https URL with a host preserved as written, no user information, and no backslash, whitespace or control character. DNS case and equivalent IPv6 literals are permitted.", + "format": "uri", + "maxLength": 2048, + "pattern": "^[Hh][Tt][Tt][Pp][Ss]?://[^/?#@\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]+([/?#][^\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]*)?$", + "type": "string" + } + }, + "$id": "https://id.registrystack.org/schemas/adapter/runtime/runtime.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "description": "The operator runtime configuration artifact (`AdapterRuntimeConfig`).", + "properties": { + "allowedClients": { + "description": "The OAuth clients whose access tokens the facade admits, matched\nagainst the token's client claim. At least one: a list that admits\nevery client the issuer verifies is an omission, not a policy.", + "items": { + "$ref": "#/$defs/ExternalId" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "allowedPrivateCidrs": { + "description": "The private ranges egress may reach, at least one and at most the\nplatform bound (CFG-EMPTY-2).", + "items": { + "$ref": "#/$defs/Cidr" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "apiVersion": { + "const": "id.registrystack.org/formats/adapter/runtime/v1alpha1", + "type": "string" + }, + "audit": { + "$ref": "#/$defs/AuditRetention", + "description": "The journal retention." + }, + "cursorKeyRef": { + "$ref": "#/$defs/SecretReference", + "description": "The 32-byte secret for pagination cursors and opaque fixed Write\nguards, with separate cryptographic domains. Paginated reads and\nfixed Write require it; identifier-only reads may omit it." + }, + "cursorTtlSeconds": { + "description": "How long a cursor stays valid, in seconds (60 to 86400); absent,\n900.", + "format": "uint64", + "maximum": 86400, + "minimum": 60, + "type": "integer" + }, + "database": { + "$ref": "#/$defs/DatabaseConfig", + "description": "The PostgreSQL connections, from the platform shared block." + }, + "endpoints": { + "description": "One binding per configured endpoint.", + "items": { + "$ref": "#/$defs/EndpointBinding" + }, + "type": "array" + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The deployment this config binds." + }, + "idempotency": { + "$ref": "#/$defs/IdempotencyRetention", + "description": "Exact write-response custody. A read-only deployment may omit this;\nstartup refuses a served write without an explicit operator choice." + }, + "kind": { + "const": "AdapterRuntimeConfig", + "type": "string" + }, + "listener": { + "$ref": "#/$defs/ListenerConfig", + "description": "The facade listener, from the platform shared block." + }, + "oidc": { + "$ref": "#/$defs/OidcIssuerConfig", + "description": "The OIDC issuer that authenticates facade callers, from the\nplatform shared block (`products/adapter/CONCEPT.md` section 6)." + }, + "outboundTls": { + "$ref": "#/$defs/OutboundTls", + "description": "The private CAs endpoints may trust beside the system roots;\nabsent, every endpoint trusts the system roots alone." + }, + "previousCursorKeyRef": { + "$ref": "#/$defs/SecretReference", + "description": "The retiring key, still accepted when opening a cursor or fixed\nWrite guard so one key rotation does not strand active clients." + }, + "secretProviders": { + "$ref": "#/$defs/SecretProvidersConfig", + "description": "The secret providers this facade enables. Omission enables environment\nsecrets only; file secrets require an explicit\nabsolute `file.root`." + } + }, + "required": [ + "allowedClients", + "allowedPrivateCidrs", + "apiVersion", + "audit", + "database", + "endpoints", + "id", + "kind", + "listener", + "oidc" + ], + "title": "Registry Adapter runtime configuration", + "type": "object" +} diff --git a/src/artifacts/sha256/5660a447be61398747639c2e0ecde3b0e355c29d4ff454209d3041cd02f5d1a5.json b/src/artifacts/sha256/5660a447be61398747639c2e0ecde3b0e355c29d4ff454209d3041cd02f5d1a5.json new file mode 100644 index 000000000..25c4dbd41 --- /dev/null +++ b/src/artifacts/sha256/5660a447be61398747639c2e0ecde3b0e355c29d4ff454209d3041cd02f5d1a5.json @@ -0,0 +1,664 @@ +{ + "$defs": { + "AccessProfile": { + "additionalProperties": false, + "description": "One access profile: a named binding of scopes to concrete facade\noperations and record types, reviewed deployment policy\n(`products/adapter/CONCEPT.md` section 10.1).", + "properties": { + "id": { + "$ref": "#/$defs/LocalId", + "description": "The access profile name a caller identity is granted." + }, + "operations": { + "description": "The profile operation ids the profile may call, unique (CFG-ID-6).", + "items": { + "$ref": "#/$defs/ExternalId" + }, + "type": "array", + "uniqueItems": true + }, + "recordTypes": { + "description": "The record types the profile may touch, unique (CFG-ID-6).", + "items": { + "$ref": "#/$defs/LocalId" + }, + "type": "array", + "uniqueItems": true + }, + "scopes": { + "description": "The OIDC scopes the profile admits, unique (CFG-ID-6).", + "items": { + "$ref": "#/$defs/ExternalId" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "id", + "scopes", + "operations", + "recordTypes" + ], + "type": "object" + }, + "Binding": { + "additionalProperties": false, + "description": "One binding of a concrete contract operation to a route\n(`products/adapter/CONCEPT.md` section 7): one concrete operation per\n(profile operation, record type) pair, with the static worst-case\nupstream-call budget the checks hold the route to.", + "properties": { + "asyncCompletion": { + "$ref": "#/$defs/BindingAsyncCompletion", + "description": "The asynchronous response policy, absent for every synchronous\nbinding." + }, + "filters": { + "description": "The declared fields of the bound record type a search binding\nfilters on (`products/adapter/CONCEPT.md` section 8.11.1); the\nfacade offers exactly these as typed equality query parameters.\nEvery declared filter is required: a call that leaves one out is\nrefused as an invalid field before any script runs or source is\ncalled.\nEvery entry must name a declared field, checked at the project\nchecks; the list is unique (CFG-ID-6).", + "items": { + "$ref": "#/$defs/LocalId" + }, + "type": "array", + "uniqueItems": true + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The binding identifier." + }, + "maximumUpstreamCalls": { + "default": 4, + "description": "The declared budget of upstream sends per exchange; the static\nworst-case count must stay within it. Defaults to 4.", + "format": "uint64", + "maximum": 100000, + "minimum": 1, + "type": "integer" + }, + "operation": { + "$ref": "#/$defs/ExternalId", + "description": "The profile operation this binding serves." + }, + "recordType": { + "$ref": "#/$defs/LocalId", + "description": "The record type the concrete operation serves." + }, + "route": { + "$ref": "#/$defs/ExternalId", + "description": "The route the operation dispatches to." + } + }, + "required": [ + "id", + "operation", + "recordType", + "route" + ], + "type": "object" + }, + "BindingAsyncCompletion": { + "description": "How one asynchronous binding answers while the source operation remains\npending. Both modes use the same profile-owned status link; bounded wait\nspends only the declared finite interval and poll count first.", + "oneOf": [ + { + "additionalProperties": false, + "description": "Return the committed accepted response immediately.", + "properties": { + "type": { + "const": "status-link", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Poll within all three authored bounds, then return either a proven\nterminal response or the same committed accepted response.", + "properties": { + "maximumPolls": { + "format": "uint64", + "maximum": 100, + "minimum": 1, + "type": "integer" + }, + "pollIntervalMilliseconds": { + "format": "uint64", + "maximum": 10000, + "minimum": 10, + "type": "integer" + }, + "type": { + "const": "bounded-wait", + "type": "string" + }, + "waitTimeoutMilliseconds": { + "format": "uint64", + "maximum": 30000, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "type", + "waitTimeoutMilliseconds", + "pollIntervalMilliseconds", + "maximumPolls" + ], + "type": "object" + } + ] + }, + "BindingTransform": { + "additionalProperties": false, + "description": "One binding's project-owned transformation. Its output schema is not\nrepeated here: the binding's record type selects one Consultation\ncollection/view, and that collection owns the single `dataSchema`\nreference.", + "properties": { + "entrypoint": { + "description": "The one-argument Rhai function invoked as `entrypoint(source)`.", + "type": "string" + }, + "script": { + "$ref": "#/$defs/LocalId", + "description": "A [`ProjectScript`] id." + } + }, + "required": [ + "script", + "entrypoint" + ], + "type": "object" + }, + "ConsultationCollection": { + "additionalProperties": false, + "description": "Deployment metadata for one project record type and public view.", + "properties": { + "dataSchema": { + "$ref": "#/$defs/LocalId", + "description": "Pinned project schema for the public `data` member of this view." + }, + "lookup": { + "$ref": "#/$defs/ConsultationLookup", + "description": "Exact-selector metadata, required only when Lookup is bound." + }, + "recordType": { + "$ref": "#/$defs/LocalId", + "description": "Project record type and literal Consultation collection identifier." + }, + "registry": { + "description": "Stable identifier of the Registry that owns the Records.", + "type": "string" + }, + "search": { + "$ref": "#/$defs/ConsultationSearch", + "description": "Named-search metadata, required only when Search is bound." + }, + "transform": { + "$ref": "#/$defs/BindingTransform", + "description": "The transformation every `retrieve`, `lookup`, `list`, and `search`\nbinding of this record type follows unless `bindingTransforms` names\none for that binding." + }, + "view": { + "$ref": "#/$defs/LocalId", + "description": "Public view named by the concrete OpenAPI operation metadata. When\nomitted, the view is named after `dataSchema`." + } + }, + "required": [ + "recordType", + "registry", + "dataSchema" + ], + "type": "object" + }, + "ConsultationFacade": { + "additionalProperties": false, + "description": "One deployment of the built-in Consultation facade.", + "properties": { + "collections": { + "description": "Collection metadata, unique by the record type that also supplies the\ncollection identifier on the wire.", + "items": { + "$ref": "#/$defs/ConsultationCollection" + }, + "type": "array" + }, + "contract": { + "description": "Version-specific HTTPS OpenAPI contract published for this deployment.", + "type": "string" + } + }, + "required": [ + "contract", + "collections" + ], + "type": "object" + }, + "ConsultationLookup": { + "additionalProperties": false, + "description": "One exact selector and the project schema of its `values` member.", + "properties": { + "inputSchema": { + "$ref": "#/$defs/LocalId" + }, + "selector": { + "$ref": "#/$defs/LocalId", + "description": "Exact, at-most-one selector promised by the selected source route." + } + }, + "required": [ + "selector", + "inputSchema" + ], + "type": "object" + }, + "ConsultationSearch": { + "additionalProperties": false, + "description": "One named Search and the project schema of its `criteria` member.", + "properties": { + "inputSchema": { + "$ref": "#/$defs/LocalId" + }, + "search": { + "$ref": "#/$defs/LocalId" + } + }, + "required": [ + "search", + "inputSchema" + ], + "type": "object" + }, + "Digest": { + "description": "A SHA-256 digest: `sha256:` followed by 64 lowercase hex digits.", + "pattern": "^sha256:[0-9a-f]{64}$", + "type": "string" + }, + "ExternalId": { + "description": "An identifier another system issues, written exactly as its issuer gives it.", + "maxLength": 512, + "minLength": 1, + "pattern": "^[^\\u0000-\\u001F\\u007F-\\u009F]+$", + "type": "string" + }, + "LocalId": { + "description": "A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.", + "pattern": "^[a-z][a-z0-9_-]{0,63}$", + "type": "string" + }, + "PinnedRef": { + "additionalProperties": false, + "description": "A pinned reference to a profile or pack: plain identifier plus the\nversion and digest `adapterctl check` verifies (CFG-ID-4,\n`products/adapter/CONCEPT.md` section 6).", + "properties": { + "digest": { + "$ref": "#/$defs/Digest", + "description": "The digest the artifact's bytes must hash to." + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The referenced artifact's identifier." + }, + "version": { + "description": "The referenced artifact's version.", + "type": "string" + } + }, + "required": [ + "id", + "version", + "digest" + ], + "type": "object" + }, + "ProjectArtifacts": { + "additionalProperties": false, + "description": "The project-owned artifact inventory. Empty inventories preserve existing\ngeneric profile deployments, which keep all route behavior in their pack.", + "properties": { + "schemas": { + "default": [], + "description": "Versioned public JSON Schemas.", + "items": { + "$ref": "#/$defs/ProjectSchema" + }, + "type": "array" + }, + "scripts": { + "default": [], + "description": "Programme and public-view transformation scripts.", + "items": { + "$ref": "#/$defs/ProjectScript" + }, + "type": "array" + } + }, + "type": "object" + }, + "ProjectIdentity": { + "additionalProperties": false, + "description": "The project identity block: the deployment's own name and version\n(`products/adapter/CONCEPT.md` section 10.1). The id is a local\nidentifier (CFG-ID-1); the version is text, the same version-as-text\nrule as profiles and packs.", + "properties": { + "id": { + "$ref": "#/$defs/LocalId", + "description": "The project identifier." + }, + "version": { + "description": "The project version.", + "type": "string" + } + }, + "required": [ + "id", + "version" + ], + "type": "object" + }, + "ProjectSchema": { + "additionalProperties": false, + "description": "One project-owned public data schema. The schema bytes carry their stable,\nversioned HTTPS `$id`; this inventory binds those bytes into the project\nclosure without duplicating that public identity in YAML.", + "properties": { + "digest": { + "$ref": "#/$defs/Digest", + "description": "The exact sha256 digest of the JSON Schema bytes." + }, + "file": { + "description": "A clean path relative to the project document.", + "type": "string" + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The local name a Consultation collection uses as `dataSchema`." + } + }, + "required": [ + "id", + "file", + "digest" + ], + "type": "object" + }, + "ProjectScript": { + "additionalProperties": false, + "description": "One project-owned Rhai source. The deployment project, rather than the\nreusable source pack, owns programme and public-view transformations.", + "properties": { + "digest": { + "$ref": "#/$defs/Digest", + "description": "The exact sha256 digest of the Rhai source bytes." + }, + "file": { + "description": "A clean path relative to the project document.", + "type": "string" + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The local name transformations use." + } + }, + "required": [ + "id", + "file", + "digest" + ], + "type": "object" + }, + "RecordField": { + "additionalProperties": false, + "description": "One declared record field, typed under CFG-VAL-9 so fixture values and\nroute outputs are checked against it.", + "properties": { + "name": { + "$ref": "#/$defs/LocalId", + "description": "The field name." + }, + "required": { + "description": "Whether every record of the type carries the field.", + "type": "boolean" + }, + "type": { + "$ref": "#/$defs/RecordFieldType", + "description": "The field's value type." + } + }, + "required": [ + "name", + "type" + ], + "type": "object" + }, + "RecordFieldType": { + "description": "A record field's value type (CFG-VAL-9).", + "enum": [ + "string", + "integer", + "decimal", + "boolean", + "date", + "date-time" + ], + "type": "string" + }, + "RecordType": { + "additionalProperties": false, + "description": "One declared record type and its fields\n(`products/adapter/CONCEPT.md` section 6).", + "properties": { + "fields": { + "description": "The declared fields, unique by whole item.", + "items": { + "$ref": "#/$defs/RecordField" + }, + "type": "array", + "uniqueItems": true + }, + "name": { + "$ref": "#/$defs/LocalId", + "description": "The record type name, the `{type}` of concrete operations." + } + }, + "required": [ + "name", + "fields" + ], + "type": "object" + }, + "TemplatedRoute": { + "additionalProperties": false, + "description": "A template instantiation in a project, Camel's `templatedRoute`\n(`manual/route-template.html`). Placeholders resolve at instantiation,\nduring `adapterctl check` and at startup, never per request.", + "properties": { + "parameters": { + "additionalProperties": true, + "description": "Parameter value by parameter name; each key is a local identifier,\nthe template parameter it instantiates (CFG-ID-1).", + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "routeId": { + "$ref": "#/$defs/ExternalId", + "description": "The instantiated route id; its `from` becomes `direct:`." + }, + "routeTemplate": { + "$ref": "#/$defs/ExternalId", + "description": "The pack template this instantiation references." + } + }, + "required": [ + "routeTemplate", + "routeId" + ], + "type": "object" + }, + "WriteCollection": { + "additionalProperties": false, + "description": "Direct-write selection for one project record type. At least one of\nCreate and Update is required. Registry, view, and readable data-schema\nmetadata may be inherited from a matching Consultation collection; a\nWrite-only Update supplies them explicitly.", + "properties": { + "create": { + "$ref": "#/$defs/WriteCreate" + }, + "readDataSchema": { + "$ref": "#/$defs/LocalId", + "description": "Project schema for the companion read's public `data`, required for a\nWrite-only Update and separate by selection from each input schema." + }, + "recordType": { + "$ref": "#/$defs/LocalId", + "description": "Project record type and literal Write collection identifier." + }, + "registry": { + "description": "Stable identifier of the Registry that owns the Records.", + "type": "string" + }, + "update": { + "$ref": "#/$defs/WriteUpdate" + }, + "view": { + "$ref": "#/$defs/LocalId", + "description": "Public writable view, required for a Write-only Update." + } + }, + "required": [ + "recordType" + ], + "type": "object" + }, + "WriteCreate": { + "additionalProperties": false, + "description": "Deployment metadata for direct Create of one record.", + "properties": { + "inputSchema": { + "$ref": "#/$defs/LocalId", + "description": "Project-owned domain schema for `CreateInput.data`." + } + }, + "required": [ + "inputSchema" + ], + "type": "object" + }, + "WriteFacade": { + "additionalProperties": false, + "description": "One deployment of the built-in GovStack direct Write target. Protocol\npaths, envelopes, error shapes, and Create/Update wrappers remain\nmaintained Rust; the project selects collections and domain schemas.", + "properties": { + "collections": { + "description": "Collection metadata, unique by the record type that also supplies the\npublic collection identifier.", + "items": { + "$ref": "#/$defs/WriteCollection" + }, + "type": "array" + }, + "contract": { + "description": "Version-specific HTTPS OpenAPI contract published for this deployment.", + "type": "string" + } + }, + "required": [ + "contract", + "collections" + ], + "type": "object" + }, + "WriteUpdate": { + "additionalProperties": false, + "description": "Deployment metadata for conditional Update of one record.", + "properties": { + "companionRead": { + "$ref": "#/$defs/LocalId", + "description": "Existing same-collection read binding used by the one supporting GET.\nWhen omitted, the one `retrieve` or `writable-read` binding of the\nrecord type fills it; a record type with more than one such binding\nmust name it." + }, + "inputSchema": { + "$ref": "#/$defs/LocalId", + "description": "Project-owned domain merge-patch schema for `UpdateInput.data`." + } + }, + "required": [ + "inputSchema" + ], + "type": "object" + } + }, + "$id": "https://id.registrystack.org/schemas/adapter/project/project.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "description": "The adapter project artifact (`AdapterProject`): the declared record\nmodel, the pinned profile and pack references, the template\ninstantiations, the bindings, and the access profiles. Reading a project\nderives the members its short form leaves out; an explicit member always\nwins.", + "properties": { + "accessProfiles": { + "default": [], + "description": "The access profiles.", + "items": { + "$ref": "#/$defs/AccessProfile" + }, + "type": "array" + }, + "apiVersion": { + "const": "id.registrystack.org/formats/adapter/project/v1alpha1", + "type": "string" + }, + "artifacts": { + "$ref": "#/$defs/ProjectArtifacts", + "description": "Digest-pinned deployment-owned scripts and public schemas." + }, + "bindingTransforms": { + "additionalProperties": { + "$ref": "#/$defs/BindingTransform" + }, + "description": "Project-owned transformations keyed by the binding id they follow.\nThe map form avoids duplicating the binding or source-route identity.", + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "bindings": { + "default": [], + "description": "The bindings of contract operations to routes.", + "items": { + "$ref": "#/$defs/Binding" + }, + "type": "array" + }, + "consultation": { + "$ref": "#/$defs/ConsultationFacade", + "description": "The project metadata for the built-in Consultation facade. Its paths,\nenvelopes, problems, and protocol schemas remain maintained Rust." + }, + "kind": { + "const": "AdapterProject", + "type": "string" + }, + "pack": { + "$ref": "#/$defs/PinnedRef", + "description": "The pinned adapter pack." + }, + "parameterizedParts": { + "additionalProperties": { + "type": "string" + }, + "description": "The deployment's value for each of the profile's parameterized\nparts, keyed by part name. The engine writes each value over the\nresponse-envelope members of that name; every declared part needs\na value and no value names an undeclared part.", + "propertyNames": { + "$ref": "#/$defs/ExternalId" + }, + "type": "object" + }, + "profile": { + "$ref": "#/$defs/PinnedRef", + "description": "The pinned authored facade profile. Exactly one of this member and\n`consultation` selects the deployment's caller-facing protocol." + }, + "project": { + "$ref": "#/$defs/ProjectIdentity", + "description": "The deployment's identity." + }, + "recordTypes": { + "default": [], + "description": "The declared record types and fields. A Consultation or Write\nrecord type left out is declared with no fields.", + "items": { + "$ref": "#/$defs/RecordType" + }, + "type": "array" + }, + "templatedRoutes": { + "default": [], + "description": "The pack template instantiations, Camel's `templatedRoute`.", + "items": { + "$ref": "#/$defs/TemplatedRoute" + }, + "type": "array" + }, + "write": { + "$ref": "#/$defs/WriteFacade", + "description": "The project metadata for the built-in synchronous GovStack direct\nWrite target. It may coexist with Consultation, but never with an\nauthored generic profile." + } + }, + "required": [ + "apiVersion", + "kind", + "pack", + "project" + ], + "title": "Registry Adapter project", + "type": "object" +} diff --git a/src/artifacts/sha256/56b15b5ec2c5a799f9debd7d034cf8f7a490c76c71458720b6469c98b3a469b5.json b/src/artifacts/sha256/56b15b5ec2c5a799f9debd7d034cf8f7a490c76c71458720b6469c98b3a469b5.json new file mode 100644 index 000000000..aba53e237 --- /dev/null +++ b/src/artifacts/sha256/56b15b5ec2c5a799f9debd7d034cf8f7a490c76c71458720b6469c98b3a469b5.json @@ -0,0 +1,1079 @@ +{ + "$defs": { + "AuditConfig": { + "additionalProperties": false, + "description": "Where the audit journal is written and the key its hashes are made with.", + "properties": { + "destination": { + "$ref": "#/$defs/AuditDestinationKind", + "default": "file", + "description": "Where audit entries go: a rotated `file` (the default) or `stdout`." + }, + "hashKeyRef": { + "$ref": "#/$defs/SecretReference", + "description": "Secret reference to the audit hash key." + }, + "path": { + "description": "The absolute path of the active audit file, for `destination: file`.", + "pattern": "^/", + "type": "string" + }, + "retentionDays": { + "description": "How many days a rotated audit file is kept.", + "format": "uint32", + "maximum": 36500, + "minimum": 1, + "type": "integer" + }, + "rotateBytes": { + "description": "The size at which the active file is rotated and a new one begun.", + "format": "uint64", + "maximum": 4294967295, + "minimum": 1048576, + "type": "integer" + } + }, + "required": [ + "hashKeyRef" + ], + "type": "object" + }, + "AuditDestinationKind": { + "description": "The configured audit destination kind, as written in product configuration.", + "oneOf": [ + { + "const": "file", + "description": "Durable, rotated JSON Lines file.", + "type": "string" + }, + { + "const": "stdout", + "description": "One JSON line per entry on standard output, flushed per entry.", + "type": "string" + } + ] + }, + "AuthenticationConfig": { + "additionalProperties": false, + "properties": { + "oidc": { + "$ref": "#/$defs/OidcConfig" + } + }, + "required": [ + "oidc" + ], + "type": "object" + }, + "CallbackBodyEncoding": { + "description": "How an `hmac-sha256-body` tag is encoded in its header.", + "enum": [ + "hex", + "base64" + ], + "type": "string" + }, + "CallbackVerifierConfig": { + "description": "How the runtime authenticates one provider's inbound delivery callbacks,\nclosed and tagged by `type` in kebab-case.", + "oneOf": [ + { + "additionalProperties": false, + "description": "HMAC-SHA1 over the full external callback URL with the request's form\nparameters sorted by key and appended as `key` then `value` with no\ndelimiter, base64 in `header`. The `form-sms-gateway` example provider\npackage documents the provider scheme this matches.", + "properties": { + "header": { + "description": "The header carrying the signature.", + "maxLength": 128, + "minLength": 1, + "pattern": "^[!#$%&'*+.^_`|~0-9A-Za-z-]+$", + "type": "string" + }, + "secretRef": { + "$ref": "#/$defs/SecretReference" + }, + "type": { + "const": "hmac-sha1-url-form", + "type": "string" + }, + "url": { + "$ref": "#/$defs/Url", + "description": "The external callback URL the provider was given and signs, as it\nwas given: scheme, host, any port, and path, without a query or\nfragment. The route appends the request's own query string. A\nproxy may rewrite what the runtime receives, so the runtime never\nreconstructs this URL from the request.", + "pattern": "^https?://[^/?#]+/[^?#]*$" + } + }, + "required": [ + "type", + "url", + "header", + "secretRef" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "HMAC-SHA256 over the raw request body, encoded in `header` as\n`encoding`.", + "properties": { + "encoding": { + "$ref": "#/$defs/CallbackBodyEncoding" + }, + "header": { + "description": "The header carrying the signature.", + "maxLength": 128, + "minLength": 1, + "pattern": "^[!#$%&'*+.^_`|~0-9A-Za-z-]+$", + "type": "string" + }, + "secretRef": { + "$ref": "#/$defs/SecretReference" + }, + "type": { + "const": "hmac-sha256-body", + "type": "string" + } + }, + "required": [ + "type", + "header", + "encoding", + "secretRef" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "A secret random token carried in the callback path, for gateways that\ncan only be given a URL.", + "properties": { + "tokenRef": { + "$ref": "#/$defs/SecretReference" + }, + "type": { + "const": "path-token", + "type": "string" + } + }, + "required": [ + "type", + "tokenRef" + ], + "type": "object" + } + ] + }, + "CredentialPlacement": { + "description": "Where an OAuth client secret travels in the token request.", + "enum": [ + "basic-header", + "form-body" + ], + "type": "string" + }, + "DatabaseConfig": { + "additionalProperties": false, + "description": "The PostgreSQL connection a stateful runtime uses. Both URLs are secret\nreferences and may name the same secret.", + "properties": { + "migrationUrlRef": { + "$ref": "#/$defs/SecretReference", + "description": "Secret reference to the migration connection URL." + }, + "runtimeUrlRef": { + "$ref": "#/$defs/SecretReference", + "description": "Secret reference to the least-privileged runtime connection URL." + }, + "testOnlyPlaintext": { + "default": false, + "description": "Allow a plaintext connection. Refused outside test builds.", + "type": "boolean" + }, + "trustedRootCertificateRef": { + "$ref": "#/$defs/SecretReference", + "description": "Secret reference to a PEM root certificate the connection trusts.\nAbsent, the connection trusts the platform's root certificates." + } + }, + "required": [ + "runtimeUrlRef", + "migrationUrlRef" + ], + "type": "object" + }, + "Digest": { + "description": "A SHA-256 digest: `sha256:` followed by 64 lowercase hex digits.", + "pattern": "^sha256:[0-9a-f]{64}$", + "type": "string" + }, + "EnvironmentSecretProviderConfig": { + "additionalProperties": false, + "description": "The environment secret provider. It takes no settings.", + "type": "object" + }, + "ExternalId": { + "description": "An identifier another system issues, written exactly as its issuer gives it.", + "maxLength": 512, + "minLength": 1, + "pattern": "^[^\\u0000-\\u001F\\u007F-\\u009F]+$", + "type": "string" + }, + "FileSecretProviderConfig": { + "additionalProperties": false, + "description": "The file secret provider.", + "properties": { + "root": { + "description": "Absolute directory holding one file per secret. Each file must be a\nregular file owned by the runtime user, mode 0400 or 0600, with exactly\none hard link.", + "pattern": "^/", + "type": "string" + } + }, + "required": [ + "root" + ], + "type": "object" + }, + "HttpProviderAuthentication": { + "description": "How a send authenticates to the provider, chosen by `type`. The\ncredential is added by Rust after the prepare script returns; no script\never sees it.", + "oneOf": [ + { + "additionalProperties": false, + "description": "No credential. Only for a loopback development provider.", + "properties": { + "type": { + "const": "none", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "`Authorization: Basic` over the two resolved values.", + "properties": { + "passwordRef": { + "$ref": "#/$defs/SecretReference" + }, + "type": { + "const": "basic", + "type": "string" + }, + "usernameRef": { + "$ref": "#/$defs/SecretReference" + } + }, + "required": [ + "type", + "usernameRef", + "passwordRef" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "`Authorization: `. Absent, the scheme is `Bearer`,\nthe only one the destination substrate presents today.", + "properties": { + "scheme": { + "type": "string" + }, + "tokenRef": { + "$ref": "#/$defs/SecretReference" + }, + "type": { + "const": "static-authorization", + "type": "string" + } + }, + "required": [ + "type", + "tokenRef" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "The resolved value in the named request header.", + "properties": { + "headerName": { + "type": "string" + }, + "type": { + "const": "static-api-key", + "type": "string" + }, + "valueRef": { + "$ref": "#/$defs/SecretReference" + } + }, + "required": [ + "type", + "headerName", + "valueRef" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "The resolved value in the named query parameter, appended after the\nscript's own target.", + "properties": { + "parameterName": { + "type": "string" + }, + "type": { + "const": "static-api-key-query", + "type": "string" + }, + "valueRef": { + "$ref": "#/$defs/SecretReference" + } + }, + "required": [ + "type", + "parameterName", + "valueRef" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "AWS Signature Version 4 for a JSON API. Rust signs the final request;\ncredentials are never exposed to provider scripts.", + "properties": { + "accessKeyIdRef": { + "$ref": "#/$defs/SecretReference" + }, + "region": { + "type": "string" + }, + "secretAccessKeyRef": { + "$ref": "#/$defs/SecretReference" + }, + "service": { + "type": "string" + }, + "sessionTokenRef": { + "$ref": "#/$defs/SecretReference", + "description": "The session token for temporary credentials. Omitted, the request\nis signed without one." + }, + "type": { + "const": "aws-sigv4", + "type": "string" + } + }, + "required": [ + "type", + "region", + "service", + "accessKeyIdRef", + "secretAccessKeyRef" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "An OAuth 2.0 client-credentials bearer token, fetched from\n`tokenEndpoint` and cached.", + "properties": { + "assumedLifetimeSeconds": { + "description": "The lifetime assumed, in seconds, when the token response carries\nno `expires_in`. Omitted, `expires_in` is required.", + "format": "uint64", + "maximum": 86400, + "minimum": 10, + "type": "integer" + }, + "audience": { + "type": "string" + }, + "clientIdRef": { + "$ref": "#/$defs/SecretReference" + }, + "clientSecretRef": { + "$ref": "#/$defs/SecretReference" + }, + "credentialPlacement": { + "$ref": "#/$defs/CredentialPlacement", + "description": "Where the client secret travels. The token request carries it in\nthe form body; `basic-header` is refused until the substrate can\nplace it there." + }, + "maximumCacheSeconds": { + "description": "The longest a fetched token is reused, in seconds.", + "format": "uint64", + "maximum": 86400, + "minimum": 10, + "type": "integer" + }, + "resource": { + "type": "string" + }, + "scope": { + "type": "string" + }, + "tokenEndpoint": { + "$ref": "#/$defs/Url" + }, + "type": { + "const": "oauth2-client-credentials", + "type": "string" + } + }, + "required": [ + "type", + "tokenEndpoint", + "clientIdRef", + "clientSecretRef", + "maximumCacheSeconds" + ], + "type": "object" + } + ] + }, + "JwksSource": { + "description": "Where a runtime obtains the OIDC issuer's signing keys.", + "oneOf": [ + { + "additionalProperties": false, + "description": "Read `jwks_uri` from the issuer's OpenID Connect discovery document.", + "properties": { + "type": { + "const": "discovery", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Fetch the key set from this absolute `https` URI, skipping discovery.\nA plain `http` URI is accepted on loopback for supervised local\ndevelopment, and beyond loopback only when the issuer block sets\n`allowInsecureHttp`.", + "properties": { + "type": { + "const": "uri", + "type": "string" + }, + "uri": { + "$ref": "#/$defs/Url" + } + }, + "required": [ + "type", + "uri" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Read the key set from a secret, for deployments without network access\nto the issuer.", + "properties": { + "documentRef": { + "$ref": "#/$defs/SecretReference" + }, + "type": { + "const": "static", + "type": "string" + } + }, + "required": [ + "type", + "documentRef" + ], + "type": "object" + } + ] + }, + "ListenerBind": { + "description": "Socket address the runtime listens on, written host:port with an IP address host ([addr]:port for IPv6).", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "ListenerConfig": { + "additionalProperties": false, + "description": "The listener of a runtime that declares no TLS or exposure settings.", + "properties": { + "bind": { + "$ref": "#/$defs/ListenerBind" + } + }, + "required": [ + "bind" + ], + "type": "object" + }, + "ListenerNetworkExposure": { + "description": "The operator-declared private network placement of an HTTP listener.", + "enum": [ + "private-address", + "container-private" + ], + "type": "string" + }, + "LocalId": { + "description": "A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.", + "pattern": "^[a-z][a-z0-9_-]{0,63}$", + "type": "string" + }, + "OidcConfig": { + "additionalProperties": false, + "description": "The OIDC issuer whose access tokens this runtime accepts, the clients it\nadmits, and the claim carrying their scopes.", + "properties": { + "allowInsecureHttp": { + "default": false, + "description": "Permit plain HTTP beyond loopback to the configured issuer and to a\nJWKS URI declared in configuration. TLS remains required unless the\noperator explicitly accepts this transport risk.", + "type": "boolean" + }, + "allowedClients": { + "description": "Client identifiers whose access tokens are admitted. Required in every\nfile; an omitted or empty list, an empty or repeated client, and\n`unrestricted` are refused.", + "items": { + "minLength": 1, + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "assertionIssuers": { + "additionalProperties": { + "items": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "maxItems": 16, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "description": "Assertion authorities each client may exchange a subject token from,\nkeyed by client identifier. Omitted, no assertion-issuer rule applies;\nwritten, it lists at least one client, each with at least one\nauthority. Once a client is listed, a token it exchanged is accepted\nonly for one of that client's declared authorities, and a client that\nis not listed may exchange from no authority.", + "maxProperties": 64, + "minProperties": 1, + "propertyNames": { + "$ref": "#/$defs/ExternalId", + "maxLength": 128 + }, + "type": "object" + }, + "audience": { + "description": "The audience every accepted access token must carry in `aud`.", + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "issuer": { + "$ref": "#/$defs/Url", + "description": "Exact issuer accepted in access-token `iss` claims, an absolute\n`https` URL, or a plain `http` URL when `allowInsecureHttp` is set." + }, + "jwksSource": { + "$ref": "#/$defs/JwksSource", + "default": { + "type": "discovery" + }, + "description": "Where the issuer's signing keys come from. Absent reads the issuer's\nOpenID Connect discovery document." + }, + "scopeClaim": { + "default": "scope", + "type": "string" + } + }, + "required": [ + "issuer", + "audience", + "allowedClients" + ], + "type": "object" + }, + "PackageConfig": { + "additionalProperties": false, + "description": "The package a runtime serves: `root` is the absolute package directory,\nand `expectedDigest`, when set, pins the package digest the runtime must\nfind there. The package digest is the digest of the package's\n`SHA256SUMS` file; see [`crate::package`].", + "properties": { + "expectedDigest": { + "$ref": "#/$defs/Digest", + "description": "`sha256:` label of the package digest, the digest of the package's\n`SHA256SUMS` file. When set, the runtime refuses to start on any other\npackage." + }, + "root": { + "description": "Absolute path of the package directory.", + "pattern": "^/", + "type": "string" + } + }, + "required": [ + "root" + ], + "type": "object" + }, + "PrivateListenerConfig": { + "additionalProperties": false, + "description": "The listener of a runtime that declares its TLS termination and network\nexposure.", + "properties": { + "bind": { + "$ref": "#/$defs/ListenerBind" + }, + "networkExposure": { + "$ref": "#/$defs/ListenerNetworkExposure", + "default": "private-address" + }, + "tlsTermination": { + "$ref": "#/$defs/TlsTermination" + } + }, + "required": [ + "bind", + "tlsTermination" + ], + "type": "object" + }, + "ProviderConnection": { + "description": "One provider's runtime half. The package declares the provider's type,\nand for an `http` provider its scripts; the two halves must name the same\ntype.", + "oneOf": [ + { + "additionalProperties": false, + "description": "One SMTP provider's runtime settings, as the operator writes them.", + "properties": { + "allowedPrivateCidrs": { + "description": "Exact RFC 1918, CGNAT, or unique-local networks the relay may resolve\ninto. Every other non-public address is refused.", + "items": { + "type": "string" + }, + "maxItems": 16, + "type": "array" + }, + "attemptTimeoutMilliseconds": { + "default": 30000, + "description": "How long one attempt may take, from 1000 to 60000 milliseconds;\nomitted, 30000.", + "format": "uint64", + "maximum": 60000, + "minimum": 1000, + "type": "integer" + }, + "authentication": { + "$ref": "#/$defs/SmtpAuthentication" + }, + "host": { + "description": "The relay's DNS name or IP literal. It is resolved once per attempt and\nis the name TLS verifies the relay's certificate against.", + "type": "string" + }, + "port": { + "description": "Defaults to 587 for `starttls` and 465 for `implicit`; required for\n`development-loopback`.", + "format": "uint16", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "tls": { + "$ref": "#/$defs/SmtpTlsMode" + }, + "trustedRootCertificateRef": { + "$ref": "#/$defs/SecretReference", + "description": "A PEM root certificate trusted in addition to the public web roots,\nfor a relay behind a private certificate authority." + }, + "type": { + "const": "smtp", + "type": "string" + } + }, + "required": [ + "type", + "host", + "tls" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Runtime settings for one HTTP provider.", + "properties": { + "acknowledgeQueryStringContent": { + "default": false, + "description": "Required, and only allowed, when the package sends with `get`: the\nmessage content travels in the query string, where provider access\nlogs keep it.", + "type": "boolean" + }, + "allowedPrivateCidrs": { + "default": [], + "description": "Exact RFC 1918, CGNAT, or unique-local networks an `https` provider may\nresolve into, for an in-country gateway on a private network. Every\nother non-public address is refused. Omitted, the provider may resolve\nonly to public addresses.", + "items": { + "type": "string" + }, + "maxItems": 16, + "type": "array" + }, + "attemptTimeoutMilliseconds": { + "description": "One send's whole budget in milliseconds: resolution, connection,\nrequest, and response.", + "format": "uint64", + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "authentication": { + "$ref": "#/$defs/HttpProviderAuthentication" + }, + "baseUrl": { + "$ref": "#/$defs/Url", + "description": "The provider's origin and path prefix, ending in `/`. Every request\ntarget a script returns is relative to it and stays under it.\n`https` in production; `http` only to a loopback host." + }, + "callbackVerifier": { + "$ref": "#/$defs/CallbackVerifierConfig", + "description": "How the provider's delivery callbacks are authenticated. Required\nexactly when the package declares `receipts: callback`." + }, + "maximumConcurrentRequests": { + "description": "The most sends this deployment has in flight to the provider, at most\nthe package's declared `capabilities.maximumConcurrentRequests`.", + "format": "uint16", + "maximum": 64, + "minimum": 1, + "type": "integer" + }, + "maximumResponseBytes": { + "description": "The largest response body read, at most 1 MiB.", + "format": "uint64", + "maximum": 1048576, + "minimum": 1, + "type": "integer" + }, + "redirects": { + "$ref": "#/$defs/RedirectPolicy" + }, + "tlsTrustProfile": { + "$ref": "#/$defs/LocalId", + "description": "The operator-declared trust bundle the provider's certificate may\nchain to, by its name under `tlsTrustProfiles`. Its roots are trusted\nin addition to the system roots, not instead of them. The runtime\nresolves the name to PEM and passes it to\n[`HttpProviderSettings::activate`]." + }, + "type": { + "const": "http", + "type": "string" + } + }, + "required": [ + "type", + "baseUrl", + "attemptTimeoutMilliseconds", + "maximumResponseBytes", + "maximumConcurrentRequests", + "redirects", + "authentication" + ], + "type": "object" + } + ] + }, + "RedirectPolicy": { + "description": "Redirect handling. A provider redirect is never followed.", + "enum": [ + "deny" + ], + "type": "string" + }, + "RetentionConfig": { + "additionalProperties": false, + "description": "Retention periods the retention sweep enforces. Every value is deployment\nconfiguration: a jurisdiction's retention schedule approves the deployed\nnumbers, and the audit journal records them at startup.", + "properties": { + "payloadRetentionDays": { + "default": 7, + "description": "How long a message's rendered payload and recipient contact are kept,\nfrom 1 to 30 days.", + "format": "uint16", + "maximum": 30, + "minimum": 1, + "type": "integer" + }, + "receiptRetentionDays": { + "default": 7, + "description": "How long a submission receipt stays replayable under its idempotency\nkey, from one day to the record period and at most 365 days.", + "format": "uint16", + "maximum": 365, + "minimum": 1, + "type": "integer" + }, + "recordRetentionDays": { + "default": 90, + "description": "How long the content-free message record is kept, at least as long as\nthe payload and at most ten years.", + "format": "uint16", + "maximum": 3650, + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + }, + "SecretProvidersConfig": { + "additionalProperties": false, + "anyOf": [ + { + "properties": { + "file": { + "$ref": "#/$defs/FileSecretProviderConfig" + } + }, + "required": [ + "file" + ] + }, + { + "properties": { + "environment": { + "$ref": "#/$defs/EnvironmentSecretProviderConfig" + } + }, + "required": [ + "environment" + ] + } + ], + "description": "The secret providers a runtime enables. A reference is resolved only by a\nprovider declared here: `secret:file/name` under `file.root`, and\n`secret:env/NAME` only when `environment: {}` is present.", + "properties": { + "environment": { + "$ref": "#/$defs/EnvironmentSecretProviderConfig", + "description": "Enables `secret:env/NAME` references, read from the process\nenvironment. Declared as an empty mapping: `environment: {}`." + }, + "file": { + "$ref": "#/$defs/FileSecretProviderConfig", + "description": "Enables `secret:file/name` references, read from files under `root`." + } + }, + "type": "object" + }, + "SecretReference": { + "description": "An exact secret reference: secret:file/name, resolved under secretProviders.file.root, or secret:env/NAME, resolved only when secretProviders.environment is declared.", + "pattern": "^(?:secret:env/[A-Z][A-Z0-9_]{0,127}|secret:file/[a-z][a-z0-9._-]{0,127})$", + "type": "string" + }, + "SmtpAuthentication": { + "additionalProperties": false, + "description": "The credential pair the relay authenticates, as `secret:` references.", + "properties": { + "passwordRef": { + "$ref": "#/$defs/SecretReference" + }, + "usernameRef": { + "$ref": "#/$defs/SecretReference" + } + }, + "required": [ + "usernameRef", + "passwordRef" + ], + "type": "object" + }, + "SmtpTlsMode": { + "description": "How the connection to the relay is protected.", + "oneOf": [ + { + "const": "starttls", + "description": "Connect in plaintext and upgrade with `STARTTLS` before anything else\nis sent. The relay must offer it. Defaults to port 587.", + "type": "string" + }, + { + "const": "implicit", + "description": "TLS from the first byte. Defaults to port 465.", + "type": "string" + }, + { + "const": "development-loopback", + "description": "Plaintext to a loopback relay, for a local development server only.\nThe host must be a loopback literal or `localhost`, every resolved\naddress must be loopback, and the port must be explicit. Accepted\nonly by a test build or behind a `development-loopback` listener.", + "type": "string" + } + ] + }, + "TlsTermination": { + "description": "Declares the trusted transport boundary for a runtime's plaintext HTTP\nlistener. Production listeners require operator-controlled upstream TLS\ntermination; direct plaintext is limited to the explicit loopback-only\ndevelopment mode.", + "enum": [ + "operator-controlled-upstream", + "development-loopback" + ], + "type": "string" + }, + "TlsTrustProfileConfig": { + "additionalProperties": false, + "description": "A PEM bundle of one or more certificate authorities, held in the secret\nprovider so it is read under the same file checks as every credential.", + "properties": { + "bundleRef": { + "$ref": "#/$defs/SecretReference" + } + }, + "required": [ + "bundleRef" + ], + "type": "object" + }, + "Url": { + "description": "An absolute http or https URL with a host preserved as written, no user information, and no backslash, whitespace or control character. DNS case and equivalent IPv6 literals are permitted.", + "format": "uri", + "maxLength": 2048, + "pattern": "^[Hh][Tt][Tt][Pp][Ss]?://[^/?#@\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]+([/?#][^\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]*)?$", + "type": "string" + } + }, + "$id": "https://id.registrystack.org/schemas/messaging/runtime/runtime.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "allOf": [ + { + "if": { + "properties": { + "authentication": { + "properties": { + "oidc": { + "properties": { + "jwksSource": { + "properties": { + "documentRef": { + "pattern": "^secret:env/" + } + }, + "required": [ + "documentRef" + ] + } + }, + "required": [ + "jwksSource" + ] + } + }, + "required": [ + "oidc" + ] + } + }, + "required": [ + "authentication" + ] + }, + "then": { + "properties": { + "secretProviders": { + "properties": { + "environment": { + "$ref": "#/$defs/EnvironmentSecretProviderConfig" + } + }, + "required": [ + "environment" + ] + } + } + } + }, + { + "if": { + "properties": { + "authentication": { + "properties": { + "oidc": { + "properties": { + "jwksSource": { + "properties": { + "documentRef": { + "pattern": "^secret:file/" + } + }, + "required": [ + "documentRef" + ] + } + }, + "required": [ + "jwksSource" + ] + } + }, + "required": [ + "oidc" + ] + } + }, + "required": [ + "authentication" + ] + }, + "then": { + "properties": { + "secretProviders": { + "properties": { + "file": { + "$ref": "#/$defs/FileSecretProviderConfig" + } + }, + "required": [ + "file" + ] + } + } + } + } + ], + "description": "The operator runtime configuration document.", + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/messaging/runtime/v1alpha1", + "type": "string" + }, + "audit": { + "$ref": "#/$defs/AuditConfig" + }, + "authentication": { + "$ref": "#/$defs/AuthenticationConfig" + }, + "database": { + "$ref": "#/$defs/DatabaseConfig" + }, + "identity": { + "additionalProperties": false, + "description": "The logical database identity this deployment owns. It is independent of\nthe connection URL and PostgreSQL database name.", + "properties": { + "databaseId": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "databaseId" + ], + "type": "object" + }, + "kind": { + "const": "MessagingRuntimeConfig", + "type": "string" + }, + "listener": { + "$ref": "#/$defs/PrivateListenerConfig" + }, + "metricsListener": { + "$ref": "#/$defs/ListenerConfig" + }, + "package": { + "$ref": "#/$defs/PackageConfig" + }, + "providers": { + "additionalProperties": { + "$ref": "#/$defs/ProviderConnection" + }, + "description": "The runtime half of each package provider, by provider id: where the\nprovider is and how the runtime authenticates to it. A package\nprovider with no entry has no transport, and its messages fail with\n`provider-unconfigured`.", + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "retention": { + "$ref": "#/$defs/RetentionConfig" + }, + "secretProviders": { + "$ref": "#/$defs/SecretProvidersConfig" + }, + "tlsTrustProfiles": { + "additionalProperties": { + "$ref": "#/$defs/TlsTrustProfileConfig" + }, + "description": "Named PEM bundles an `http` provider's `tlsTrustProfile` trusts in\naddition to the system roots, at most 64.", + "maxProperties": 64, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + } + }, + "required": [ + "apiVersion", + "kind", + "package", + "listener", + "secretProviders", + "database", + "authentication", + "audit", + "identity" + ], + "title": "Registry Messaging runtime configuration", + "type": "object" +} diff --git a/src/artifacts/sha256/785867b4f14c78862010b53406f62a420e53c4b17d5c8b9f7f95636130b75bd4.json b/src/artifacts/sha256/785867b4f14c78862010b53406f62a420e53c4b17d5c8b9f7f95636130b75bd4.json new file mode 100644 index 000000000..b460d4aec --- /dev/null +++ b/src/artifacts/sha256/785867b4f14c78862010b53406f62a420e53c4b17d5c8b9f7f95636130b75bd4.json @@ -0,0 +1,1620 @@ +{ + "$defs": { + "AccessTokenAlgorithm": { + "enum": [ + "EdDSA", + "ES256", + "ES384", + "RS256", + "RS384" + ], + "type": "string" + }, + "AllowedClients": { + "anyOf": [ + { + "const": "unrestricted", + "description": "Accept a token from every client.", + "type": "string" + }, + { + "description": "Accept a token only from a listed client.", + "items": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[^\\x00-\\x20\\x7F]+$", + "type": "string" + }, + "maxItems": 128, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + ], + "description": "The OAuth clients whose tokens a runtime accepts: the keyword\n`unrestricted`, or a list of at least one client." + }, + "AuditDestinationKind": { + "description": "The configured audit destination kind, as written in product configuration.", + "oneOf": [ + { + "const": "file", + "description": "Durable, rotated JSON Lines file.", + "type": "string" + }, + { + "const": "stdout", + "description": "One JSON line per entry on standard output, flushed per entry.", + "type": "string" + } + ] + }, + "ClaimName": { + "description": "The name of one top-level claim of an access token. The reader accepts any\ntext; the runtime then refuses a name that is not a valid claim name, one\nthat repeats another contextual name, and one that is a registered or\nauthentication claim.", + "type": "string" + }, + "Classification": { + "enum": [ + "public", + "internal", + "restricted" + ], + "type": "string" + }, + "Digest": { + "description": "A SHA-256 digest: `sha256:` followed by 64 lowercase hex digits.", + "pattern": "^sha256:[0-9a-f]{64}$", + "type": "string" + }, + "EnvironmentSecretProviderConfig": { + "additionalProperties": false, + "description": "The environment secret provider. It takes no settings.", + "type": "object" + }, + "EventDestinationDnsFamily": { + "enum": [ + "dual-stack-strict", + "ipv4-only" + ], + "type": "string" + }, + "EventDestinationNetworkProfile": { + "enum": [ + "production-https", + "loopback-development-http" + ], + "type": "string" + }, + "EvidencePrivateKeyJwtConfig": { + "additionalProperties": false, + "properties": { + "assertionAudience": { + "type": "string" + }, + "clientId": { + "type": "string" + }, + "privateKeyRef": { + "$ref": "#/$defs/SecretReference" + }, + "resource": { + "type": "string" + }, + "scopes": { + "default": [], + "items": { + "type": "string" + }, + "type": "array" + }, + "tokenEndpoint": { + "type": "string" + } + }, + "required": [ + "tokenEndpoint", + "clientId", + "privateKeyRef" + ], + "type": "object" + }, + "EvidenceProviderConfig": { + "additionalProperties": false, + "oneOf": [ + { + "required": [ + "tokenRef" + ] + }, + { + "required": [ + "privateKeyJwt" + ] + } + ], + "properties": { + "baseUrl": { + "$ref": "#/$defs/Url", + "description": "The Evidence service's base URL. It is `https`; `http` is accepted\nonly for a loopback host, for local development." + }, + "caBundleRef": { + "$ref": "#/$defs/SecretReference", + "description": "PEM CA bundle for the Evidence service and its token endpoint.\nOmitted, the platform's trusted roots verify them." + }, + "privateKeyJwt": { + "$ref": "#/$defs/EvidencePrivateKeyJwtConfig", + "description": "The refreshing credential: a private-key JWT client exchange.\nExactly one of `tokenRef` and `privateKeyJwt` is written." + }, + "revokedKeyIds": { + "default": [], + "items": { + "type": "string" + }, + "type": "array" + }, + "tokenRef": { + "$ref": "#/$defs/SecretReference", + "description": "Compatibility path for a pre-issued token. Long-running providers\nshould configure `privateKeyJwt` so expiry triggers a fresh exchange.\nExactly one of `tokenRef` and `privateKeyJwt` is written." + }, + "trustBindingId": { + "type": "string" + }, + "trustedJwksRef": { + "$ref": "#/$defs/SecretReference" + } + }, + "required": [ + "baseUrl", + "trustBindingId", + "trustedJwksRef" + ], + "type": "object" + }, + "ExternalId": { + "description": "An identifier another system issues, written exactly as its issuer gives it.", + "maxLength": 512, + "minLength": 1, + "pattern": "^[^\\u0000-\\u001F\\u007F-\\u009F]+$", + "type": "string" + }, + "FileSecretProviderConfig": { + "additionalProperties": false, + "description": "The file secret provider.", + "properties": { + "root": { + "description": "Absolute directory holding one file per secret. Each file must be a\nregular file owned by the runtime user, mode 0400 or 0600, with exactly\none hard link.", + "pattern": "^/", + "type": "string" + } + }, + "required": [ + "root" + ], + "type": "object" + }, + "JwksSource": { + "description": "Where a runtime obtains the OIDC issuer's signing keys.", + "oneOf": [ + { + "additionalProperties": false, + "description": "Read `jwks_uri` from the issuer's OpenID Connect discovery document.", + "properties": { + "type": { + "const": "discovery", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Fetch the key set from this absolute `https` URI, skipping discovery.\nA plain `http` URI is accepted on loopback for supervised local\ndevelopment, and beyond loopback only when the issuer block sets\n`allowInsecureHttp`.", + "properties": { + "type": { + "const": "uri", + "type": "string" + }, + "uri": { + "$ref": "#/$defs/Url" + } + }, + "required": [ + "type", + "uri" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Read the key set from a secret, for deployments without network access\nto the issuer.", + "properties": { + "documentRef": { + "$ref": "#/$defs/SecretReference" + }, + "type": { + "const": "static", + "type": "string" + } + }, + "required": [ + "type", + "documentRef" + ], + "type": "object" + } + ] + }, + "ListenerBind": { + "description": "Socket address the runtime listens on, written host:port with an IP address host ([addr]:port for IPv6).", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "LocalId": { + "description": "A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.", + "pattern": "^[a-z][a-z0-9_-]{0,63}$", + "type": "string" + }, + "LogLevel": { + "description": "The operational log level selected by the runtime file when `BREG_LOG`\nis not set. The closed vocabulary prevents configuration from enabling\ndebug output or dependency logging.", + "enum": [ + "error", + "warn", + "info" + ], + "type": "string" + }, + "RawAttachmentStorageConfig": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "type": { + "const": "database", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "One S3-compatible bucket a runtime keeps content bytes in, and the\nruntime's credentials for it. The decode checks only the shape; the\nobject-store transport refuses a non-loopback `http` URL, a URL carrying a\npath, query, or fragment, and a malformed bucket or region name before it\nsends anything.", + "properties": { + "accessKeyIdRef": { + "$ref": "#/$defs/SecretReference" + }, + "attemptTimeoutMilliseconds": { + "default": 10000, + "description": "The longest one request may run, body included. Omitted, 10000.", + "format": "uint64", + "maximum": 60000, + "minimum": 100, + "type": "integer" + }, + "bucket": { + "description": "The bucket name: lowercase letters, digits, `-` and `.`.", + "maxLength": 63, + "minLength": 3, + "type": "string" + }, + "caBundleRef": { + "$ref": "#/$defs/SecretReference", + "description": "PEM CA bundle for the service. Omitted, the platform's trusted roots\nverify it." + }, + "pathStyle": { + "default": true, + "description": "Address the bucket as a path under `url` rather than as a host name.\nOmitted, `true`.", + "type": "boolean" + }, + "region": { + "description": "The signing region: lowercase letters, digits and `-`.", + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "secretAccessKeyRef": { + "$ref": "#/$defs/SecretReference" + }, + "sessionTokenRef": { + "$ref": "#/$defs/SecretReference" + }, + "type": { + "const": "s3", + "type": "string" + }, + "url": { + "$ref": "#/$defs/Url", + "description": "The service's base URL, with no path. It is `https`; `http` is\naccepted only for a loopback host, for local development." + } + }, + "required": [ + "type", + "url", + "bucket", + "region", + "accessKeyIdRef", + "secretAccessKeyRef" + ], + "type": "object" + } + ] + }, + "RawAttachmentVerificationConfig": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "type": { + "const": "disabled", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "One external HTTP verifier a runtime submits content bytes to for an\n`approved` or `rejected` verdict, and the runtime's bearer credential for\nit. The block carries no default: a runtime that makes verification\noptional states its own disabled form beside it.", + "properties": { + "attemptTimeoutMilliseconds": { + "default": 10000, + "description": "The longest one verification attempt may run, body included.\nOmitted, 10000.", + "format": "uint64", + "maximum": 60000, + "minimum": 100, + "type": "integer" + }, + "authorizationRef": { + "$ref": "#/$defs/SecretReference" + }, + "policyId": { + "description": "Non-secret identity of the external scanner and its rules generation.", + "maxLength": 128, + "minLength": 1, + "pattern": "^[\\x21-\\x7E]+$", + "type": "string" + }, + "type": { + "const": "http", + "type": "string" + }, + "url": { + "$ref": "#/$defs/Url", + "description": "The URL the content is posted to. It is `https`; `http` is accepted\nonly for a loopback host, for local development." + } + }, + "required": [ + "type", + "url", + "authorizationRef", + "policyId" + ], + "type": "object" + } + ] + }, + "RawAuditConfig": { + "additionalProperties": false, + "description": "The key for the keyed references an audit record carries in place of raw\nidentifiers, written `audit.hashKeyRef` beside the product's own audit\nsettings.", + "else": { + "properties": { + "path": { + "pattern": "^/+(?:(?:[^/.][^/]*|\\.(?:[^/.][^/]*|\\.[^/]+)?)/+)*(?:[^/.][^/]*|\\.(?:[^/.][^/]*|\\.[^/]+))$", + "type": "string" + } + }, + "required": [ + "path" + ] + }, + "if": { + "properties": { + "destination": { + "const": "stdout" + } + }, + "required": [ + "destination" + ] + }, + "properties": { + "destination": { + "$ref": "#/$defs/AuditDestinationKind", + "default": "file", + "description": "`file` (the default) writes a durable, rotated JSON Lines file at\n`path`; `stdout` writes one JSON line per entry to standard output." + }, + "hashKeyRef": { + "$ref": "#/$defs/SecretReference", + "description": "Secret reference to the audit hash key." + }, + "path": { + "description": "Absolute path of the active audit file. Required for, and accepted\nonly with, the `file` destination; omitted with `stdout`.", + "type": "string" + }, + "retentionDays": { + "description": "Days a rotated file is retained, accepted only with the `file`\ndestination. Omitted, a rotated file is retained for 90 days.", + "format": "uint32", + "maximum": 36500, + "minimum": 1, + "type": "integer" + }, + "rotateBytes": { + "description": "Size in bytes at which the active file rotates, accepted only with the\n`file` destination. Omitted, the file rotates at 100 MiB.", + "format": "uint64", + "maximum": 4294967295, + "minimum": 1048576, + "type": "integer" + } + }, + "required": [ + "hashKeyRef" + ], + "then": { + "not": { + "anyOf": [ + { + "required": [ + "path" + ] + }, + { + "required": [ + "rotateBytes" + ] + }, + { + "required": [ + "retentionDays" + ] + } + ] + } + }, + "type": "object" + }, + "RawAuthenticationConfig": { + "additionalProperties": false, + "properties": { + "authorityClaims": { + "$ref": "#/$defs/RawAuthorityClaimsConfig" + }, + "oidc": { + "$ref": "#/$defs/RawOidcVerifierConfig" + } + }, + "required": [ + "oidc", + "authorityClaims" + ], + "type": "object" + }, + "RawAuthorityClaimsConfig": { + "additionalProperties": false, + "properties": { + "contextual": { + "$ref": "#/$defs/RawContextualClaimNames", + "default": { + "actorKind": "registry_actor_kind", + "approver": "registry_approver", + "grantBounds": "registry_grant_bounds", + "grantClient": "registry_grant_client", + "grantExp": "registry_grant_exp", + "grantId": "registry_grant_id", + "grantResource": "registry_grant_resource", + "grantSourceIssuer": "registry_grant_source_issuer", + "purpose": "registry_purpose" + }, + "description": "The claim names that carry delegated-authority context. Each name\ndefaults to its `registry_` claim; written, every name is given." + }, + "principal": { + "maxLength": 128, + "minLength": 1, + "not": { + "enum": [ + "iss", + "aud", + "exp", + "iat", + "nbf", + "client_id", + "azp", + "jti", + "cnf" + ] + }, + "pattern": "^[\\x21-\\x7E]+$", + "type": "string" + }, + "purpose": { + "maxLength": 128, + "minLength": 1, + "not": { + "enum": [ + "iss", + "aud", + "exp", + "iat", + "nbf", + "sub", + "client_id", + "azp", + "jti", + "cnf" + ] + }, + "pattern": "^[\\x21-\\x7E]+$", + "type": "string" + }, + "trustedActors": { + "additionalProperties": { + "type": "string" + }, + "default": {}, + "propertyNames": { + "$ref": "#/$defs/ExternalId" + }, + "type": "object" + } + }, + "required": [ + "principal" + ], + "type": "object" + }, + "RawContextualClaimNames": { + "additionalProperties": false, + "properties": { + "actorKind": { + "$ref": "#/$defs/ClaimName" + }, + "approver": { + "$ref": "#/$defs/ClaimName" + }, + "grantBounds": { + "$ref": "#/$defs/ClaimName" + }, + "grantClient": { + "$ref": "#/$defs/ClaimName" + }, + "grantExp": { + "$ref": "#/$defs/ClaimName" + }, + "grantId": { + "$ref": "#/$defs/ClaimName" + }, + "grantResource": { + "$ref": "#/$defs/ClaimName" + }, + "grantSourceIssuer": { + "$ref": "#/$defs/ClaimName" + }, + "purpose": { + "$ref": "#/$defs/ClaimName" + } + }, + "required": [ + "actorKind", + "purpose", + "grantId", + "grantSourceIssuer", + "grantClient", + "grantResource", + "grantExp", + "grantBounds", + "approver" + ], + "type": "object" + }, + "RawCursorConfig": { + "additionalProperties": false, + "properties": { + "maximumAgeSeconds": { + "default": 300, + "description": "Defaults to the bounded cursor validity lifetime.", + "format": "uint64", + "maximum": 86400, + "minimum": 1, + "type": "integer" + }, + "secretRef": { + "$ref": "#/$defs/SecretReference" + } + }, + "required": [ + "secretRef" + ], + "type": "object" + }, + "RawDeploymentIdentity": { + "additionalProperties": false, + "properties": { + "databaseId": { + "maxLength": 256, + "minLength": 1, + "pattern": "^[^\\s\\x00-\\x1F\\x7F](?:[^\\x00-\\x1F\\x7F]*[^\\s\\x00-\\x1F\\x7F])?$", + "type": "string" + }, + "databaseInitializationEnvironment": { + "maxLength": 256, + "minLength": 1, + "pattern": "^[^\\s\\x00-\\x1F\\x7F](?:[^\\x00-\\x1F\\x7F]*[^\\s\\x00-\\x1F\\x7F])?$", + "type": "string" + }, + "environment": { + "maxLength": 256, + "minLength": 1, + "pattern": "^[^\\s\\x00-\\x1F\\x7F](?:[^\\x00-\\x1F\\x7F]*[^\\s\\x00-\\x1F\\x7F])?$", + "type": "string" + }, + "instanceId": { + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-z][a-z0-9_-]{0,63}$", + "type": "string" + } + }, + "required": [ + "environment", + "instanceId", + "databaseId", + "databaseInitializationEnvironment" + ], + "type": "object" + }, + "RawDestinationsConfig": { + "additionalProperties": false, + "description": "Outbound destination bindings, grouped by what sends to them.", + "properties": { + "hooks": { + "additionalProperties": { + "$ref": "#/$defs/RawEventDestinationConfig" + }, + "description": "URL hook destinations, keyed by the identifier a reviewed hook names.", + "maxProperties": 128, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + } + }, + "type": "object" + }, + "RawEventDestinationConfig": { + "additionalProperties": false, + "properties": { + "allowedPrivateCidrs": { + "description": "Explicitly allowed private network ranges in canonical CIDR notation.", + "items": { + "type": "string" + }, + "maxItems": 16, + "type": "array", + "uniqueItems": true + }, + "classificationCeiling": { + "$ref": "#/$defs/Classification", + "description": "Highest permitted classification, including fields used only in event conditions." + }, + "deliveryCeilings": { + "$ref": "#/$defs/RawEventDestinationDeliveryCeilings", + "description": "Per-destination limits that may tighten, but never increase, the compiled delivery limits." + }, + "dnsFamily": { + "$ref": "#/$defs/EventDestinationDnsFamily", + "description": "Address families to validate when resolving the destination." + }, + "hmacSha256KeyRef": { + "$ref": "#/$defs/SecretReference", + "description": "Runtime secret reference for the receiver's shared HMAC-SHA-256 key." + }, + "networkProfile": { + "$ref": "#/$defs/EventDestinationNetworkProfile", + "description": "HTTPS for production, or explicit loopback-only HTTP for local development." + }, + "origin": { + "description": "Receiver origin without a path or query, such as `https://receiver.example.com`.", + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "path": { + "description": "Absolute request path on the configured origin, such as `/events`.", + "maxLength": 4096, + "minLength": 1, + "pattern": "^/[\\x20-\\x22\\x24\\x26-\\x3E\\x40-\\x5B\\x5D-\\x7E]*$", + "type": "string" + }, + "tls": { + "$ref": "#/$defs/RawEventDestinationTlsConfig", + "description": "Optional private CA and client identity secret references for HTTPS." + } + }, + "required": [ + "origin", + "path", + "networkProfile", + "dnsFamily", + "allowedPrivateCidrs", + "hmacSha256KeyRef", + "classificationCeiling", + "deliveryCeilings" + ], + "type": "object" + }, + "RawEventDestinationDeliveryCeilings": { + "additionalProperties": false, + "properties": { + "attemptTimeoutMilliseconds": { + "description": "Maximum time allowed for one attempt, in milliseconds.", + "format": "uint32", + "maximum": 5000, + "minimum": 100, + "type": "integer" + }, + "maximumAttempts": { + "description": "Maximum total attempts in one delivery generation, including the first attempt.", + "format": "uint32", + "maximum": 5, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "attemptTimeoutMilliseconds", + "maximumAttempts" + ], + "type": "object" + }, + "RawEventDestinationTlsConfig": { + "additionalProperties": false, + "anyOf": [ + { + "required": [ + "caBundleRef" + ] + }, + { + "required": [ + "clientIdentityRef" + ] + } + ], + "properties": { + "caBundleRef": { + "$ref": "#/$defs/SecretReference", + "description": "PEM CA bundle secret reference, when the receiver uses a private\ncertificate authority. Omitted, the platform's trusted roots verify\nthe receiver. At least one of `caBundleRef` and `clientIdentityRef`\nis written." + }, + "clientIdentityRef": { + "$ref": "#/$defs/SecretReference", + "description": "PEM client identity secret reference for mutual TLS. Omitted, the\nregistry presents no client certificate." + } + }, + "type": "object" + }, + "RawFieldEncryptionConfig": { + "additionalProperties": false, + "description": "Raw `fieldEncryption` deployment block, absent by default.", + "properties": { + "provider": { + "$ref": "#/$defs/RawFieldEncryptionProvider" + } + }, + "type": "object" + }, + "RawFieldEncryptionProvider": { + "description": "Raw provider binding; the `type` member selects the custodian.", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "attemptTimeoutMilliseconds": { + "default": 5000, + "format": "uint64", + "maximum": 30000, + "minimum": 1, + "type": "integer" + }, + "keyName": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "mount": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "type": { + "const": "transit", + "type": "string" + }, + "unixSocketPath": { + "maxLength": 4096, + "minLength": 2, + "type": "string" + } + }, + "required": [ + "type", + "unixSocketPath", + "mount", + "keyName" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "dekRef": { + "$ref": "#/$defs/SecretReference", + "description": "The data encryption key, named by a `secret:file/NAME` reference;\nan environment reference is refused." + }, + "type": { + "const": "local-file", + "type": "string" + } + }, + "required": [ + "type", + "dekRef" + ], + "type": "object" + } + ] + }, + "RawJwksCacheConfig": { + "additionalProperties": false, + "properties": { + "attemptTimeoutMilliseconds": { + "default": 5000, + "description": "Defaults to the bounded JWKS fetch timeout.", + "format": "uint64", + "maximum": 30000, + "minimum": 1, + "type": "integer" + }, + "cacheTtlSeconds": { + "default": 600, + "description": "Defaults to the bounded JWKS cache time-to-live.", + "format": "uint64", + "maximum": 86400, + "minimum": 1, + "type": "integer" + }, + "maximumDocumentBytes": { + "default": 65536, + "description": "Defaults to the bounded maximum JWKS document size.", + "format": "uint64", + "maximum": 1048576, + "minimum": 1, + "type": "integer" + }, + "negativeCacheTtlSeconds": { + "default": 60, + "description": "Defaults to the bounded JWKS negative-cache time-to-live.", + "format": "uint64", + "maximum": 3600, + "minimum": 1, + "type": "integer" + }, + "outageToleranceSeconds": { + "default": 900, + "description": "Defaults to the bounded cached-key outage tolerance.", + "format": "uint64", + "maximum": 86400, + "minimum": 0, + "type": "integer" + }, + "refreshCooldownSeconds": { + "default": 30, + "description": "Defaults to the bounded JWKS refresh cooldown.", + "format": "uint64", + "maximum": 3600, + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + }, + "RawMetricsListenerConfig": { + "additionalProperties": false, + "properties": { + "bind": { + "$ref": "#/$defs/ListenerBind", + "description": "Operator-private loopback or private numeric address and named port,\nfor example `127.0.0.1:9100`." + } + }, + "required": [ + "bind" + ], + "type": "object" + }, + "RawOidcVerifierConfig": { + "additionalProperties": false, + "description": "The OIDC issuer a runtime accepts access tokens from: the exact `iss`\nvalue, the `aud` value a token must carry, and where the issuer's signing\nkeys come from, written under `authentication.oidc` beside the product's\nown token rules.", + "properties": { + "accessTokenType": { + "description": "The one admitted access-token `typ` semantics. Configuring the\nRFC 9068 access-token media type as `at+jwt` or\n`application/at+jwt` admits both spellings of that one type; any\nother value (for example `JWT`) admits only that token type, matched\ncase-insensitively.", + "maxLength": 2048, + "minLength": 1, + "pattern": "^[^\\s\\x00-\\x1F\\x7F](?:[^\\x00-\\x1F\\x7F]*[^\\s\\x00-\\x1F\\x7F])?$", + "type": "string" + }, + "allowInsecureHttp": { + "default": false, + "description": "Permit plain HTTP beyond loopback to the configured issuer and to a\nJWKS URI declared in configuration. TLS remains required unless the\noperator explicitly accepts this transport risk.", + "type": "boolean" + }, + "allowedAlgorithm": { + "$ref": "#/$defs/AccessTokenAlgorithm" + }, + "allowedClients": { + "$ref": "#/$defs/AllowedClients", + "description": "The OAuth clients whose tokens this registry accepts: `unrestricted`\nto accept a token from every client, or a list of at least one\nclient." + }, + "assertionIssuers": { + "additionalProperties": { + "items": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[^\\x00-\\x20\\x7F]+$", + "type": "string" + }, + "maxItems": 128, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "description": "The assertion authorities each client may exchange a subject token\nfrom, keyed by client identifier. Omitted, no assertion-issuer rule\napplies; written, it lists at least one client, each with at least one\nauthority, and a client not listed may exchange from no authority.", + "maxProperties": 128, + "minProperties": 1, + "propertyNames": { + "$ref": "#/$defs/ExternalId", + "maxLength": 512, + "minLength": 1, + "pattern": "^[^\\x00-\\x20\\x7F]+$" + }, + "type": "object" + }, + "audience": { + "description": "The audience every accepted access token must carry in `aud`.", + "maxLength": 512, + "minLength": 1, + "pattern": "^[^\\s\\x00-\\x1F\\x7F](?:[^\\x00-\\x1F\\x7F]*[^\\s\\x00-\\x1F\\x7F])?$", + "type": "string" + }, + "issuer": { + "$ref": "#/$defs/Url", + "description": "Exact issuer accepted in access-token `iss` claims, an absolute\n`https` URL, or a plain `http` URL when `allowInsecureHttp` is set.", + "maxLength": 2048, + "minLength": 1 + }, + "jwksCache": { + "$ref": "#/$defs/RawJwksCacheConfig", + "default": { + "attemptTimeoutMilliseconds": 5000, + "cacheTtlSeconds": 600, + "maximumDocumentBytes": 65536, + "negativeCacheTtlSeconds": 60, + "outageToleranceSeconds": 900, + "refreshCooldownSeconds": 30 + }, + "description": "Optional JWKS fetch and cache tuning. Defaults to bounded cache behavior." + }, + "jwksSource": { + "$ref": "#/$defs/JwksSource", + "description": "Where the issuer's signing keys come from. Absent reads the issuer's\nOpenID Connect discovery document." + }, + "leewayMilliseconds": { + "format": "uint64", + "maximum": 300000, + "minimum": 0, + "type": "integer" + }, + "maximumTokenLifetimeSeconds": { + "format": "uint64", + "maximum": 7200, + "minimum": 1, + "type": "integer" + }, + "revokedKeyIds": { + "description": "The signing key identifiers this registry refuses locally even while\nthe issuer publishes them. Omitted, no key is refused; written, it\nnames at least one key and does not revoke it at the issuer.", + "items": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[^\\x00-\\x20\\x7F]+$", + "type": "string" + }, + "maxItems": 128, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "scopeClaim": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[\\x21-\\x7E]+$", + "type": "string" + }, + "scopeSeparator": { + "maxLength": 1, + "minLength": 1, + "pattern": "^[^A-Za-z0-9\\x00-\\x1F\\x7F]$", + "type": "string" + } + }, + "required": [ + "issuer", + "audience", + "allowedAlgorithm", + "accessTokenType", + "scopeClaim", + "scopeSeparator", + "allowedClients", + "maximumTokenLifetimeSeconds", + "leewayMilliseconds" + ], + "type": "object" + }, + "RawOperationalTimeouts": { + "additionalProperties": false, + "properties": { + "httpRequestMilliseconds": { + "default": 10000, + "description": "Defaults to the bounded per-request HTTP timeout.", + "format": "uint64", + "maximum": 60000, + "minimum": 1, + "type": "integer" + }, + "migrationLockMilliseconds": { + "default": 30000, + "description": "Defaults to the bounded migration lock timeout.", + "format": "uint64", + "maximum": 300000, + "minimum": 1, + "type": "integer" + }, + "migrationStatementMilliseconds": { + "default": 60000, + "description": "Defaults to the bounded migration statement timeout.", + "format": "uint64", + "maximum": 3600000, + "minimum": 1, + "type": "integer" + }, + "recordLockMilliseconds": { + "default": 5000, + "description": "Defaults to the bounded record lock timeout.", + "format": "uint64", + "maximum": 30000, + "minimum": 1, + "type": "integer" + }, + "shutdownGraceMilliseconds": { + "default": 30000, + "description": "Defaults to the bounded graceful-shutdown timeout.", + "format": "uint64", + "maximum": 300000, + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + }, + "RawPackageConfig": { + "additionalProperties": false, + "description": "The package a runtime serves: `root` is the absolute package directory,\nand `expectedDigest`, when set, pins the package digest the runtime must\nfind there. The package digest is the digest of the package's\n`SHA256SUMS` file; see [`crate::package`].", + "properties": { + "expectedDigest": { + "$ref": "#/$defs/Digest", + "description": "`sha256:` label of the package digest, the digest of the package's\n`SHA256SUMS` file. When set, the runtime refuses to start on any other\npackage." + }, + "root": { + "description": "Absolute path of the package directory.", + "maxLength": 512, + "minLength": 1, + "pattern": "^/", + "type": "string" + } + }, + "required": [ + "root" + ], + "type": "object" + }, + "RawPoolBounds": { + "additionalProperties": false, + "properties": { + "createTimeoutMilliseconds": { + "default": 2000, + "description": "Defaults to the bounded PostgreSQL pool connection-creation timeout.", + "format": "uint64", + "maximum": 60000, + "minimum": 1, + "type": "integer" + }, + "maximumConnections": { + "format": "uint32", + "maximum": 128, + "minimum": 1, + "type": "integer" + }, + "recycleTimeoutMilliseconds": { + "default": 2000, + "description": "Defaults to the bounded PostgreSQL pool connection-recycle timeout.", + "format": "uint64", + "maximum": 60000, + "minimum": 1, + "type": "integer" + }, + "waitTimeoutMilliseconds": { + "default": 1000, + "description": "Defaults to the bounded PostgreSQL pool wait timeout.", + "format": "uint64", + "maximum": 60000, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "maximumConnections" + ], + "type": "object" + }, + "RawRegistryDatabase": { + "additionalProperties": false, + "description": "The registry's database: the shared database block and the connection\npool and SQL roles the registry adds.", + "properties": { + "migrationUrlRef": { + "$ref": "#/$defs/SecretReference", + "description": "Secret reference to the migration connection URL." + }, + "pool": { + "$ref": "#/$defs/RawPoolBounds" + }, + "roles": { + "$ref": "#/$defs/RawSqlRoles" + }, + "runtimeUrlRef": { + "$ref": "#/$defs/SecretReference", + "description": "Secret reference to the least-privileged runtime connection URL." + }, + "testOnlyPlaintext": { + "default": false, + "description": "Allow a plaintext connection. Refused outside test builds.", + "type": "boolean" + }, + "trustedRootCertificateRef": { + "$ref": "#/$defs/SecretReference", + "description": "Secret reference to a PEM root certificate the connection trusts.\nAbsent, the connection trusts the platform's root certificates." + } + }, + "required": [ + "runtimeUrlRef", + "migrationUrlRef", + "pool", + "roles" + ], + "type": "object" + }, + "RawRegistryListener": { + "additionalProperties": false, + "description": "The registry's listener: the shared listener block and an optional public\norigin.", + "properties": { + "bind": { + "$ref": "#/$defs/ListenerBind" + }, + "publicOrigin": { + "$ref": "#/$defs/Url", + "description": "Canonical public origin for QGIS discovery and pagination links, with\nan optional deployment path prefix such as\n`https://registry.example.org/breg`. It is `https`; `http` is accepted\nonly for a loopback host, for local development. Required when the\nregistry exposes GIS collections; omitted, the registry builds no\nabsolute discovery or paging links." + } + }, + "required": [ + "bind" + ], + "type": "object" + }, + "RawRetentionConfig": { + "additionalProperties": false, + "properties": { + "hookPayloadRetentionDays": { + "default": 7, + "description": "Defaults to the bounded retained payload lifetime for pending or dead-letter hook work.", + "format": "uint32", + "maximum": 30, + "minimum": 1, + "type": "integer" + }, + "receiptRetentionDays": { + "default": 7, + "description": "Days a held response is kept after its commit. A retry after it is\nrefused as expired and never executed; the key stays spent.", + "format": "uint32", + "maximum": 365, + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + }, + "RawReviewAuthorityConfig": { + "additionalProperties": false, + "properties": { + "completionRecipient": { + "description": "The logical recipient the review authority names in each completion\nnotification. Written together with `completionTokenRef`; omitted, no\ncompletion notification is accepted and the registry polls for\nresults.", + "type": "string" + }, + "completionTokenRef": { + "$ref": "#/$defs/SecretReference", + "description": "The bearer token the review authority presents when it notifies this\nregistry that a review completed. Written together with\n`completionRecipient`; omitted, no completion notification is\naccepted and the registry polls for results." + }, + "endpoint": { + "type": "string" + }, + "privateKeyJwt": { + "$ref": "#/$defs/RawReviewPrivateKeyJwtConfig", + "description": "A refreshing client-assertion credential for the review service.\nExactly one of `tokenRef` and `privateKeyJwt` is written." + }, + "producerId": { + "type": "string" + }, + "profile": { + "type": "string" + }, + "recoveryDays": { + "format": "uint32", + "maximum": 3650, + "minimum": 1, + "type": "integer" + }, + "tokenRef": { + "$ref": "#/$defs/SecretReference", + "description": "A static bearer token for the review service. Exactly one of\n`tokenRef` and `privateKeyJwt` is written." + } + }, + "required": [ + "endpoint", + "profile", + "producerId", + "recoveryDays" + ], + "type": "object" + }, + "RawReviewPrivateKeyJwtConfig": { + "additionalProperties": false, + "properties": { + "assertionAudience": { + "type": "string" + }, + "caBundleRef": { + "$ref": "#/$defs/SecretReference", + "description": "A PEM bundle of the roots that sign the token endpoint's certificate.\nOmitted, the platform's trusted roots verify it." + }, + "clientAssertionKeyRef": { + "$ref": "#/$defs/SecretReference" + }, + "clientIdRef": { + "$ref": "#/$defs/SecretReference" + }, + "resource": { + "type": "string" + }, + "scopes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "tokenEndpoint": { + "type": "string" + } + }, + "required": [ + "tokenEndpoint", + "clientIdRef", + "clientAssertionKeyRef", + "assertionAudience", + "resource", + "scopes" + ], + "type": "object" + }, + "RawSqlRoles": { + "additionalProperties": false, + "properties": { + "migration": { + "maxLength": 63, + "minLength": 1, + "pattern": "^[_a-z][_a-z0-9]{0,62}$", + "type": "string" + }, + "runtime": { + "maxLength": 63, + "minLength": 1, + "pattern": "^[_a-z][_a-z0-9]{0,62}$", + "type": "string" + } + }, + "required": [ + "migration", + "runtime" + ], + "type": "object" + }, + "RawWasmExecutionConfig": { + "additionalProperties": false, + "properties": { + "backend": { + "default": "pulley", + "description": "The backend handler modules are compiled and executed for: `pulley`\n(default, the portable interpreter target) or `native`. Any other\nvalue is refused as an invalid `wasmExecution` section.", + "type": "string" + }, + "maximumGuestMemoryBytes": { + "default": 33554432, + "description": "Defaults to the platform guest-memory ceiling (32 MiB).", + "format": "uint64", + "maximum": 1073741824, + "minimum": 1048576, + "type": "integer" + }, + "maximumModuleBytes": { + "default": 2097152, + "description": "Defaults to the default execution-time module ceiling (2 MiB); the\nstructural admission ceiling (5 MiB) is operator-reachable here.", + "format": "uint64", + "maximum": 5242880, + "minimum": 1024, + "type": "integer" + } + }, + "type": "object" + }, + "SecretProvidersConfig": { + "additionalProperties": false, + "anyOf": [ + { + "properties": { + "file": { + "$ref": "#/$defs/FileSecretProviderConfig" + } + }, + "required": [ + "file" + ] + }, + { + "properties": { + "environment": { + "$ref": "#/$defs/EnvironmentSecretProviderConfig" + } + }, + "required": [ + "environment" + ] + } + ], + "description": "The secret providers a runtime enables. A reference is resolved only by a\nprovider declared here: `secret:file/name` under `file.root`, and\n`secret:env/NAME` only when `environment: {}` is present.", + "properties": { + "environment": { + "$ref": "#/$defs/EnvironmentSecretProviderConfig", + "description": "Enables `secret:env/NAME` references, read from the process\nenvironment. Declared as an empty mapping: `environment: {}`." + }, + "file": { + "$ref": "#/$defs/FileSecretProviderConfig", + "description": "Enables `secret:file/name` references, read from files under `root`." + } + }, + "type": "object" + }, + "SecretReference": { + "description": "An exact secret reference: secret:file/name, resolved under secretProviders.file.root, or secret:env/NAME, resolved only when secretProviders.environment is declared.", + "pattern": "^(?:secret:env/[A-Z][A-Z0-9_]{0,127}|secret:file/[a-z][a-z0-9._-]{0,127})$", + "type": "string" + }, + "TaskGrantStatusConfig": { + "additionalProperties": false, + "description": "One task authority whose grants a runtime checks for fresh status, and the\nruntime's own credentials for that check, written as one entry of\n`taskGrantStatus`. The status route and scope default to Casework's.", + "properties": { + "baseUrl": { + "$ref": "#/$defs/Url", + "description": "The authority's base URL the status check calls. It is `https`;\n`http` is accepted only for a loopback host, for local development." + }, + "caBundleRef": { + "$ref": "#/$defs/SecretReference", + "description": "PEM CA bundle for the authority and its token endpoint. Omitted, the\nplatform's trusted roots verify them." + }, + "clientAssertionAudience": { + "$ref": "#/$defs/ExternalId" + }, + "clientId": { + "$ref": "#/$defs/ExternalId" + }, + "privateKeyRef": { + "$ref": "#/$defs/SecretReference" + }, + "sourceIssuer": { + "$ref": "#/$defs/ExternalId", + "description": "The task authority's issuer, exactly as the authority states it,\nincluding an absolute URN issuer. It is compared rather than fetched\nand must be an absolute resource URI." + }, + "statusPath": { + "default": "/v1/task-grants/{grantId}/status", + "description": "The status route appended to `baseUrl`'s path. It starts with `/` and\nhas exactly one whole `{grantId}` segment; every other segment uses\nonly letters, digits, `-`, `.`, `_`, and `~`. Omitted,\n`/v1/task-grants/{grantId}/status`.", + "type": "string" + }, + "statusResource": { + "$ref": "#/$defs/ExternalId", + "description": "The audience the runtime requests its status credential for, an\nabsolute resource URI." + }, + "statusScope": { + "$ref": "#/$defs/ExternalId", + "default": "casework:grants:status", + "description": "The one scope the runtime requests its status credential with.\nOmitted, `casework:grants:status`." + }, + "tokenEndpoint": { + "$ref": "#/$defs/Url" + } + }, + "required": [ + "sourceIssuer", + "baseUrl", + "tokenEndpoint", + "clientAssertionAudience", + "clientId", + "privateKeyRef", + "statusResource" + ], + "type": "object" + }, + "Url": { + "description": "An absolute http or https URL with a host preserved as written, no user information, and no backslash, whitespace or control character. DNS case and equivalent IPv6 literals are permitted.", + "format": "uri", + "maxLength": 2048, + "pattern": "^[Hh][Tt][Tt][Pp][Ss]?://[^/?#@\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]+([/?#][^\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]*)?$", + "type": "string" + } + }, + "$id": "https://id.registrystack.org/schemas/breg/runtime/runtime.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/breg/runtime/v1alpha1", + "type": "string" + }, + "attachmentStorage": { + "$ref": "#/$defs/RawAttachmentStorageConfig", + "default": { + "type": "database" + }, + "description": "Defaults to PostgreSQL; S3 requires a bucket with versioning never enabled." + }, + "attachmentVerification": { + "$ref": "#/$defs/RawAttachmentVerificationConfig", + "default": { + "type": "disabled" + }, + "description": "Optional external verdict hook. Disabled by default." + }, + "audit": { + "$ref": "#/$defs/RawAuditConfig" + }, + "authentication": { + "$ref": "#/$defs/RawAuthenticationConfig" + }, + "cursor": { + "$ref": "#/$defs/RawCursorConfig" + }, + "database": { + "$ref": "#/$defs/RawRegistryDatabase" + }, + "destinations": { + "$ref": "#/$defs/RawDestinationsConfig", + "description": "Outbound destination bindings. Absent by default, which binds no\ndestination." + }, + "evidenceProviders": { + "additionalProperties": { + "$ref": "#/$defs/EvidenceProviderConfig" + }, + "default": {}, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "fieldEncryption": { + "$ref": "#/$defs/RawFieldEncryptionConfig", + "default": {}, + "description": "Optional field-encryption data-key provider. Absent by default, which\nserves unencrypted entities only." + }, + "identity": { + "$ref": "#/$defs/RawDeploymentIdentity" + }, + "kind": { + "const": "BRegRuntimeConfig", + "type": "string" + }, + "listener": { + "$ref": "#/$defs/RawRegistryListener" + }, + "logLevel": { + "$ref": "#/$defs/LogLevel", + "default": "info", + "description": "Operational log level when `BREG_LOG` is not set. Defaults to `info`;\naccepted values are `error`, `warn`, and `info`." + }, + "metricsListener": { + "$ref": "#/$defs/RawMetricsListenerConfig", + "description": "Optional operator-private metrics listener. Absent by default, which\nserves no metrics surface at all." + }, + "operationalTimeouts": { + "$ref": "#/$defs/RawOperationalTimeouts", + "default": { + "httpRequestMilliseconds": 10000, + "migrationLockMilliseconds": 30000, + "migrationStatementMilliseconds": 60000, + "recordLockMilliseconds": 5000, + "shutdownGraceMilliseconds": 30000 + }, + "description": "Optional operational request, shutdown, locking, and migration timeout tuning." + }, + "package": { + "$ref": "#/$defs/RawPackageConfig" + }, + "retention": { + "$ref": "#/$defs/RawRetentionConfig", + "default": { + "hookPayloadRetentionDays": 7, + "receiptRetentionDays": 7 + }, + "description": "Optional retention windows for idempotency receipts and retained\nevent payloads. Defaults to a seven-day receipt horizon and the\nserver's bounded payload retention policy." + }, + "reviewAuthorities": { + "additionalProperties": { + "$ref": "#/$defs/RawReviewAuthorityConfig" + }, + "default": {}, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "secretProviders": { + "$ref": "#/$defs/SecretProvidersConfig" + }, + "taskGrantStatus": { + "default": [], + "items": { + "$ref": "#/$defs/TaskGrantStatusConfig" + }, + "type": "array" + }, + "wasmExecution": { + "$ref": "#/$defs/RawWasmExecutionConfig", + "default": { + "backend": "pulley", + "maximumGuestMemoryBytes": 33554432, + "maximumModuleBytes": 2097152 + }, + "description": "Optional WASM handler execution budgets. Parsed in every build;\nexecuted only in builds with the `wasm` cargo feature, on by default." + } + }, + "required": [ + "apiVersion", + "kind", + "listener", + "identity", + "secretProviders", + "database", + "package", + "authentication", + "audit", + "cursor" + ], + "title": "Base Registry Engine runtime configuration", + "type": "object" +} diff --git a/src/artifacts/sha256/87a1a61127de6eb20c130f17b2d804c8b209c7343e7e4275f480f37833b83fcf.json b/src/artifacts/sha256/87a1a61127de6eb20c130f17b2d804c8b209c7343e7e4275f480f37833b83fcf.json new file mode 100644 index 000000000..a301f6f72 --- /dev/null +++ b/src/artifacts/sha256/87a1a61127de6eb20c130f17b2d804c8b209c7343e7e4275f480f37833b83fcf.json @@ -0,0 +1,1341 @@ +{ + "$defs": { + "CaseworkActsAs": { + "enum": [ + "staff", + "supervisor", + "administrator", + "requester" + ], + "type": "string" + }, + "ClockReassignment": { + "additionalProperties": false, + "properties": { + "queue": { + "type": "string" + } + }, + "required": [ + "queue" + ], + "type": "object" + }, + "ClockStep": { + "additionalProperties": false, + "properties": { + "action": { + "$ref": "#/$defs/ClockStepAction" + }, + "at": { + "$ref": "#/$defs/ClockStepInstant" + }, + "because": { + "$ref": "#/$defs/DisplayText" + }, + "id": { + "$ref": "#/$defs/LocalId" + } + }, + "required": [ + "id", + "because", + "at", + "action" + ], + "type": "object" + }, + "ClockStepAction": { + "additionalProperties": false, + "properties": { + "reassign": { + "$ref": "#/$defs/ClockReassignment" + } + }, + "required": [ + "reassign" + ], + "type": "object" + }, + "ClockStepInstant": { + "enum": [ + "due" + ], + "type": "string" + }, + "ContentDigest": { + "maxLength": 71, + "minLength": 71, + "pattern": "^sha256:[0-9a-f]{64}$", + "type": "string" + }, + "Digest": { + "description": "A SHA-256 digest: `sha256:` followed by 64 lowercase hex digits.", + "pattern": "^sha256:[0-9a-f]{64}$", + "type": "string" + }, + "DisplayText": { + "description": "Human-readable display text. Bidirectional embedding, override, and isolate controls, byte-order marks, line and paragraph separators, and Unicode noncharacters are refused; multilingual joiners and direction marks remain valid.", + "not": { + "pattern": "[

‪-‮⁦-⁩﷐-﷯￾￿]|🿾|🿿|𯿾|𯿿|𿿾|𿿿|񏿾|񏿿|񟿾|񟿿|񯿾|񯿿|񿿾|񿿿|򏿾|򏿿|򟿾|򟿿|򯿾|򯿿|򿿾|򿿿|󏿾|󏿿|󟿾|󟿿|󯿾|󯿿|󿿾|󿿿|􏿾|􏿿" + }, + "type": "string" + }, + "ElapsedDuration": { + "description": "An elapsed budget in exactly one unit; a day is 24 elapsed hours.", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "minutes": { + "format": "uint32", + "maximum": 5256000, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "minutes" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "hours": { + "format": "uint32", + "maximum": 87600, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "hours" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "days": { + "format": "uint32", + "maximum": 3650, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "days" + ], + "type": "object" + } + ] + }, + "EvidenceRequesterContext": { + "additionalProperties": false, + "properties": { + "audience": { + "type": "string" + }, + "requesterTags": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "requesterTags", + "audience" + ], + "type": "object" + }, + "ExternalId": { + "description": "An identifier another system issues, written exactly as its issuer gives it.", + "maxLength": 512, + "minLength": 1, + "pattern": "^[^\\u0000-\\u001F\\u007F-\\u009F]+$", + "type": "string" + }, + "InboxPolicy": { + "additionalProperties": false, + "properties": { + "defaultPageSize": { + "default": 25, + "format": "uint32", + "maximum": 100, + "minimum": 1, + "type": "integer" + }, + "maximumCandidateScan": { + "default": 100, + "format": "uint32", + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "maximumConcurrentSourceReads": { + "default": 4, + "format": "uint32", + "maximum": 32, + "minimum": 1, + "type": "integer" + }, + "maximumSourceReads": { + "default": 25, + "format": "uint32", + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "pageDeadlineMilliseconds": { + "default": 2000, + "format": "uint64", + "maximum": 30000, + "minimum": 100, + "type": "integer" + } + }, + "type": "object" + }, + "LocalId": { + "description": "A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.", + "pattern": "^[a-z][a-z0-9_-]{0,63}$", + "type": "string" + }, + "ProducerRetention": { + "additionalProperties": false, + "description": "How long Casework keeps what a producer needs to recover a submission.", + "properties": { + "receiptRetentionDays": { + "description": "Days a submission receipt stays readable for recovery, at most 365.", + "format": "uint32", + "maximum": 365, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "receiptRetentionDays" + ], + "type": "object" + }, + "ProjectIdentity": { + "additionalProperties": false, + "description": "The members that name a project (CFG-ENV-6): a project's `project` block\nholds these, and may add project-wide members of the product's own.\nSchema name `ProjectIdentity`.", + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "version": { + "type": "string" + } + }, + "required": [ + "id", + "version" + ], + "type": "object" + }, + "ReviewCompletionDestinationPolicy": { + "additionalProperties": false, + "properties": { + "destinationId": { + "type": "string" + }, + "recipientBinding": { + "type": "string" + } + }, + "required": [ + "destinationId", + "recipientBinding" + ], + "type": "object" + }, + "ReviewContextCapability": { + "enum": [ + "human-display", + "service-status", + "task-grant-context", + "routing-context" + ], + "type": "string" + }, + "ReviewContextContract": { + "additionalProperties": false, + "properties": { + "id": { + "$ref": "#/$defs/ExternalId", + "description": "The producer-issued contract id, kept exactly as written: nonblank, no control characters, and at most 256 UTF-8 bytes. The byte ceiling is enforced by the Casework reader.", + "maxLength": 256, + "pattern": "\\S", + "x-registry-maxBytes": 256 + }, + "revision": { + "$ref": "#/$defs/ContentDigest" + }, + "schemaDigest": { + "$ref": "#/$defs/Digest" + } + }, + "required": [ + "id", + "revision", + "schemaDigest" + ], + "type": "object" + }, + "ReviewContextPolicy": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "mode": { + "const": "submitted", + "type": "string" + } + }, + "required": [ + "mode" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "contract": { + "$ref": "#/$defs/ReviewContextContract" + }, + "mode": { + "const": "current-source", + "type": "string" + }, + "provider": { + "type": "string" + } + }, + "required": [ + "mode", + "provider", + "contract" + ], + "type": "object" + } + ] + }, + "ReviewNegativeDecisionMode": { + "oneOf": [ + { + "const": "settle", + "description": "A rejection or change request settles the whole review immediately.", + "type": "string" + }, + { + "const": "advise", + "description": "A negative decision counts toward this stage and the review continues.", + "type": "string" + } + ] + }, + "ReviewOutcomeSettlement": { + "enum": [ + "approved", + "rejected", + "changes-requested", + "answered" + ], + "type": "string" + }, + "ReviewPublicReasonRule": { + "description": "Whether a decision gives a public reason with an outcome.", + "enum": [ + "required", + "optional", + "none" + ], + "type": "string" + }, + "ReviewPurpose": { + "enum": [ + "approval", + "answer" + ], + "type": "string" + }, + "ReviewRetentionPolicy": { + "additionalProperties": false, + "properties": { + "accountabilityRetentionDays": { + "format": "uint32", + "maximum": 3650, + "minimum": 1, + "type": "integer" + }, + "terminalRetentionDays": { + "format": "uint32", + "maximum": 3650, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "terminalRetentionDays", + "accountabilityRetentionDays" + ], + "type": "object" + }, + "ReviewStagePolicy": { + "additionalProperties": false, + "properties": { + "decidingProfiles": { + "items": { + "type": "string" + }, + "type": "array" + }, + "excludeInitiator": { + "default": false, + "type": "boolean" + }, + "excludePreviousStageReviewers": { + "default": false, + "type": "boolean" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "label": { + "$ref": "#/$defs/DisplayText", + "description": "Optional presentation label. Stable references use `id`." + }, + "negativeDecisions": { + "$ref": "#/$defs/ReviewNegativeDecisionMode", + "default": "settle", + "description": "Controls whether a rejection or change request settles the whole review.\n`settle` is the default; `advise` records and counts the decision toward\nthis non-final stage without settling the review." + }, + "queue": { + "type": "string" + }, + "requiredApprovals": { + "format": "uint32", + "maximum": 32, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "id", + "queue", + "decidingProfiles", + "requiredApprovals" + ], + "type": "object" + }, + "RoutingCondition": { + "additionalProperties": false, + "properties": { + "fields": { + "additionalProperties": { + "$ref": "#/$defs/RoutingPredicate" + }, + "propertyNames": { + "$ref": "#/$defs/ExternalId" + }, + "type": "object" + }, + "stage": { + "type": "string" + } + }, + "type": "object" + }, + "RoutingPredicate": { + "description": "The written form of [`RoutingPredicate`], an externally tagged union the\nshared reader decodes with positions.", + "oneOf": [ + { + "additionalProperties": false, + "description": "The projected field equals this value.", + "properties": { + "equals": true + }, + "required": [ + "equals" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "The projected field equals one of these values.", + "properties": { + "oneOf": { + "items": true, + "type": "array" + } + }, + "required": [ + "oneOf" + ], + "type": "object" + } + ] + }, + "RoutingRule": { + "additionalProperties": false, + "properties": { + "because": { + "$ref": "#/$defs/DisplayText" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "label": { + "$ref": "#/$defs/DisplayText", + "description": "Optional presentation label. Stable references use `id`." + }, + "queue": { + "type": "string" + }, + "when": { + "$ref": "#/$defs/RoutingCondition" + } + }, + "required": [ + "id", + "because", + "when", + "queue" + ], + "type": "object" + }, + "SchedulingTaskPermission": { + "additionalProperties": false, + "description": "Exact Scheduling commitment authority copied into a task grant.\n\nThis duplicates the public wire shape deliberately: Casework is an\nauthority for governed templates, not a dependency on Scheduling's runtime\nor model crate.", + "properties": { + "actions": { + "items": { + "type": "string" + }, + "type": "array" + }, + "location": { + "type": "string" + }, + "service": { + "type": "string" + } + }, + "required": [ + "service", + "location", + "actions" + ], + "type": "object" + }, + "StageClockAnchor": { + "additionalProperties": false, + "description": "The instant a stage clock counts from: `anchor: {type: stage-entered}`.", + "properties": { + "type": { + "$ref": "#/$defs/StageClockAnchorType" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + "StageClockAnchorType": { + "enum": [ + "stage-entered" + ], + "type": "string" + }, + "SubjectClockAnchor": { + "additionalProperties": false, + "description": "The instant a subject clock counts from: `anchor: {type: request-accepted}`.", + "properties": { + "type": { + "$ref": "#/$defs/SubjectClockAnchorType" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + "SubjectClockAnchorType": { + "enum": [ + "request-accepted" + ], + "type": "string" + }, + "TaskAuthorizationMode": { + "enum": [ + "immediate", + "deferred" + ], + "type": "string" + }, + "TaskGrantBounds": { + "description": "The product-specific authority a task grant carries, chosen by its `type`\nmember. The shared reader's union helper decodes it so every error inside\na variant keeps its position (CFG-SCHEMA-8); the wire form is unchanged.", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "requirement": { + "type": "string" + }, + "type": { + "const": "evidence", + "type": "string" + } + }, + "required": [ + "type", + "requirement" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "permissions": { + "items": { + "$ref": "#/$defs/TaskPermission" + }, + "type": "array" + }, + "type": { + "const": "breg", + "type": "string" + } + }, + "required": [ + "type", + "permissions" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "permissions": { + "items": { + "$ref": "#/$defs/SchedulingTaskPermission" + }, + "type": "array" + }, + "type": { + "const": "scheduling", + "type": "string" + } + }, + "required": [ + "type", + "permissions" + ], + "type": "object" + } + ] + }, + "TaskPermission": { + "additionalProperties": false, + "properties": { + "collection": { + "type": "string" + }, + "operations": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "collection", + "operations" + ], + "type": "object" + }, + "TemplateAgent": { + "additionalProperties": false, + "description": "The agent a template names, as `casework.yaml` writes it: the issuer is\nthe URL of the token issuer that authenticates the agent (CFG-VAL-7).", + "properties": { + "issuer": { + "$ref": "#/$defs/Url" + }, + "subject": { + "type": "string" + } + }, + "required": [ + "issuer", + "subject" + ], + "type": "object" + }, + "Url": { + "description": "An absolute http or https URL with a host preserved as written, no user information, and no backslash, whitespace or control character. DNS case and equivalent IPv6 literals are permitted.", + "format": "uri", + "maxLength": 2048, + "pattern": "^[Hh][Tt][Tt][Pp][Ss]?://[^/?#@\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]+([/?#][^\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]*)?$", + "type": "string" + }, + "WorkingDays": { + "additionalProperties": false, + "description": "A number of working days: `after: {workingDays: N}`, and the lead time\ninside `before`.", + "properties": { + "workingDays": { + "format": "uint32", + "maximum": 3650, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "workingDays" + ], + "type": "object" + }, + "WorkingDaysBefore": { + "additionalProperties": false, + "description": "A lead time before a stage clock is due: `{before: {workingDays: N}}`.", + "properties": { + "before": { + "$ref": "#/$defs/WorkingDays" + } + }, + "required": [ + "before" + ], + "type": "object" + }, + "WorkingWeekday": { + "enum": [ + "monday", + "tuesday", + "wednesday", + "thursday", + "friday", + "saturday", + "sunday" + ], + "type": "string" + } + }, + "$id": "https://id.registrystack.org/schemas/casework/project/project.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "accessProfiles": { + "additionalProperties": { + "additionalProperties": false, + "properties": { + "actsAs": { + "$ref": "#/$defs/CaseworkActsAs" + }, + "description": { + "$ref": "#/$defs/DisplayText", + "description": "What the profile is for, accepted for authoring and tooling; never matched against a caller. Part of the review policy description, which any caller who may read that description can see." + }, + "label": { + "$ref": "#/$defs/DisplayText", + "description": "A name for the profile, accepted for authoring and tooling; never matched against a caller. Part of the review policy description, which any caller who may read that description can see." + }, + "principalClaim": { + "type": "string" + }, + "requiredScopes": { + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "principalClaim", + "requiredScopes", + "actsAs" + ], + "type": "object" + }, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "apiVersion": { + "const": "id.registrystack.org/formats/casework/project/v1alpha1", + "type": "string" + }, + "calendars": { + "additionalProperties": { + "additionalProperties": false, + "properties": { + "holidaySet": { + "type": "string" + }, + "timezone": { + "type": "string" + }, + "workingWeekdays": { + "items": { + "$ref": "#/$defs/WorkingWeekday" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "timezone", + "workingWeekdays", + "holidaySet" + ], + "type": "object" + }, + "default": {}, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "clocks": { + "additionalProperties": { + "description": "The serialized form of [`ClockPolicy`]: the shape the serializer emits.", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "after": { + "$ref": "#/$defs/ElapsedDuration" + }, + "anchor": { + "$ref": "#/$defs/SubjectClockAnchor" + }, + "type": { + "const": "subject", + "type": "string" + } + }, + "required": [ + "type", + "anchor", + "after" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "after": { + "$ref": "#/$defs/WorkingDays" + }, + "anchor": { + "$ref": "#/$defs/StageClockAnchor" + }, + "atRisk": { + "$ref": "#/$defs/WorkingDaysBefore" + }, + "calendar": { + "type": "string" + }, + "dueTime": { + "type": "string" + }, + "reminders": { + "additionalProperties": { + "additionalProperties": false, + "description": "A named reminder, written `reminders: {ID: {before: {workingDays: N}}}`.", + "properties": { + "before": { + "$ref": "#/$defs/WorkingDays" + } + }, + "required": [ + "before" + ], + "type": "object" + }, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "steps": { + "items": { + "$ref": "#/$defs/ClockStep" + }, + "type": "array" + }, + "type": { + "const": "stage", + "type": "string" + } + }, + "required": [ + "type", + "anchor", + "calendar", + "after", + "dueTime" + ], + "type": "object" + } + ] + }, + "default": {}, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "contextProviders": { + "additionalProperties": { + "additionalProperties": false, + "properties": { + "capabilities": { + "items": { + "$ref": "#/$defs/ReviewContextCapability" + }, + "type": "array", + "uniqueItems": true + }, + "deploymentRef": { + "type": "string" + }, + "description": { + "type": "string" + }, + "serviceProfiles": { + "additionalProperties": false, + "default": {}, + "properties": { + "human-display": { + "type": "string" + }, + "routing-context": { + "type": "string" + }, + "service-status": { + "type": "string" + }, + "task-grant-context": { + "type": "string" + } + }, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "sourceNamespace": { + "type": "string" + } + }, + "required": [ + "capabilities", + "sourceNamespace", + "deploymentRef" + ], + "type": "object" + }, + "default": {}, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "inbox": { + "$ref": "#/$defs/InboxPolicy", + "default": { + "defaultPageSize": 25, + "maximumCandidateScan": 100, + "maximumConcurrentSourceReads": 4, + "maximumSourceReads": 25, + "pageDeadlineMilliseconds": 2000 + } + }, + "kind": { + "const": "CaseworkProject", + "type": "string" + }, + "project": { + "$ref": "#/$defs/ProjectIdentity" + }, + "queues": { + "additionalProperties": { + "additionalProperties": false, + "properties": { + "label": { + "$ref": "#/$defs/DisplayText" + } + }, + "required": [ + "label" + ], + "type": "object" + }, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "reviewPolicies": { + "additionalProperties": { + "additionalProperties": false, + "properties": { + "clocks": { + "items": { + "type": "string" + }, + "type": "array" + }, + "context": { + "$ref": "#/$defs/ReviewContextPolicy" + }, + "displaySchema": { + "x-registry-foreign": "json-schema-2020-12" + }, + "label": { + "$ref": "#/$defs/DisplayText", + "description": "Optional presentation label. Stable references use `id`." + }, + "outcomes": { + "additionalProperties": { + "additionalProperties": false, + "properties": { + "label": { + "$ref": "#/$defs/DisplayText" + }, + "publicReason": { + "$ref": "#/$defs/ReviewPublicReasonRule", + "description": "Whether a decision with this outcome gives text for release to the\nsubject's owner. There is no default: the policy author decides what\nan applicant is told." + }, + "reasonRequired": { + "type": "boolean" + }, + "resultRequired": { + "type": "boolean" + }, + "settlement": { + "$ref": "#/$defs/ReviewOutcomeSettlement" + } + }, + "required": [ + "label", + "settlement", + "reasonRequired", + "publicReason" + ], + "type": "object" + }, + "description": "Written in configuration as a mapping from each outcome id; served\nas a list by id.", + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "purpose": { + "$ref": "#/$defs/ReviewPurpose" + }, + "resultSchema": { + "x-registry-foreign": "json-schema-2020-12" + }, + "retention": { + "$ref": "#/$defs/ReviewRetentionPolicy" + }, + "routing": { + "items": { + "$ref": "#/$defs/RoutingRule" + }, + "type": "array" + }, + "stages": { + "items": { + "$ref": "#/$defs/ReviewStagePolicy" + }, + "type": "array" + }, + "version": { + "type": "string" + } + }, + "required": [ + "version", + "purpose", + "context", + "stages", + "retention", + "displaySchema" + ], + "type": "object" + }, + "default": {}, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "taskTemplates": { + "additionalProperties": { + "additionalProperties": false, + "allOf": [ + { + "else": { + "properties": { + "lifetimeSeconds": { + "maximum": 900 + } + } + }, + "if": { + "properties": { + "authorizationMode": { + "const": "deferred" + } + }, + "required": [ + "authorizationMode" + ] + }, + "then": { + "properties": { + "lifetimeSeconds": { + "maximum": 604800 + } + } + } + }, + { + "if": { + "properties": { + "authorizationMode": { + "const": "deferred" + } + }, + "required": [ + "authorizationMode" + ] + }, + "then": { + "properties": { + "bounds": { + "properties": { + "type": { + "not": { + "const": "evidence" + } + } + } + } + } + } + } + ], + "properties": { + "agent": { + "$ref": "#/$defs/TemplateAgent" + }, + "authorizationMode": { + "$ref": "#/$defs/TaskAuthorizationMode", + "description": "Immediate authorizations last at most fifteen minutes. Deferred is an\nexplicit governed window of at most seven days; assertion TTL stays sixty seconds." + }, + "bounds": { + "$ref": "#/$defs/TaskGrantBounds" + }, + "client": { + "type": "string" + }, + "eligibleProfiles": { + "items": { + "type": "string" + }, + "type": "array" + }, + "eligibleTeams": { + "items": { + "type": "string" + }, + "type": "array" + }, + "evidenceContext": { + "$ref": "#/$defs/EvidenceRequesterContext", + "description": "Evidence-only requester context signed into the authority assertion.\nOther products derive neither requester admission nor relying-party\naudience from these fields and therefore forbid the block entirely." + }, + "label": { + "$ref": "#/$defs/DisplayText" + }, + "lifetimeSeconds": { + "format": "uint64", + "maximum": 604800, + "minimum": 1, + "type": "integer" + }, + "purpose": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "reviewPolicies": { + "description": "Policies whose currently held ReviewTasks may issue this grant.", + "items": { + "type": "string" + }, + "type": "array" + }, + "scopes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "source": { + "type": "string" + }, + "subjects": { + "additionalProperties": { + "type": "string" + }, + "description": "Exact token identity keys mapped to governed source logical fields.\nValues are extracted from the approving caller's disclosed source read.", + "propertyNames": { + "$ref": "#/$defs/ExternalId" + }, + "type": "object" + }, + "version": { + "type": "string" + } + }, + "required": [ + "version", + "label", + "eligibleTeams", + "eligibleProfiles", + "source", + "agent", + "client", + "resource", + "scopes", + "purpose", + "bounds", + "subjects", + "lifetimeSeconds" + ], + "type": "object" + }, + "default": {}, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "teams": { + "additionalProperties": { + "additionalProperties": false, + "properties": { + "label": { + "$ref": "#/$defs/DisplayText" + }, + "memberProfiles": { + "items": { + "type": "string" + }, + "type": "array" + }, + "serves": { + "items": { + "type": "string" + }, + "type": "array" + }, + "supervisorProfiles": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "label", + "serves", + "memberProfiles", + "supervisorProfiles" + ], + "type": "object" + }, + "default": {}, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "trustedProducers": { + "additionalProperties": { + "additionalProperties": false, + "properties": { + "completion": { + "$ref": "#/$defs/ReviewCompletionDestinationPolicy" + }, + "initiatorProfile": { + "description": "The requester profile a person named as this producer's initiator\nauthenticates with to read the requester-visible history of their own\nrequests. Absent, no initiator reads anything.", + "type": "string" + }, + "issuer": { + "$ref": "#/$defs/Url" + }, + "profile": { + "type": "string" + }, + "retention": { + "$ref": "#/$defs/ProducerRetention" + }, + "reviewPolicies": { + "items": { + "type": "string" + }, + "type": "array" + }, + "sourceNamespaces": { + "items": { + "type": "string" + }, + "type": "array" + }, + "subject": { + "type": "string" + }, + "trustedInitiatorIssuer": { + "$ref": "#/$defs/Url" + } + }, + "required": [ + "profile", + "issuer", + "subject", + "sourceNamespaces", + "reviewPolicies", + "retention" + ], + "type": "object" + }, + "default": {}, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + } + }, + "required": [ + "apiVersion", + "kind", + "project", + "accessProfiles", + "queues" + ], + "title": "Registry Casework project", + "type": "object" +} diff --git a/src/artifacts/sha256/89428c7c4d08555b71f3d7476a45e2439fd0d2ba4b97eae6ee18be78fcbf8e3e.yaml b/src/artifacts/sha256/89428c7c4d08555b71f3d7476a45e2439fd0d2ba4b97eae6ee18be78fcbf8e3e.yaml new file mode 100644 index 000000000..6617b114b --- /dev/null +++ b/src/artifacts/sha256/89428c7c4d08555b71f3d7476a45e2439fd0d2ba4b97eae6ee18be78fcbf8e3e.yaml @@ -0,0 +1,2294 @@ +$schema: https://json-schema.org/draft/2020-12/schema +$id: https://id.registrystack.org/schemas/evidence/bundle/bundle.v1.schema.json +title: Evidence governed package configuration Version 1 +type: object +additionalProperties: false +required: + - apiVersion + - kind + - assuranceProfile + - service + - issuer + - authentication + - audit + - subjectBinding + - rateLimits + - signing + - selectorProfiles + - sourceConnections + - sources + - authorityProfiles + - requirements +properties: + apiVersion: + description: >- + Names the package configuration grammar the rest of this document is read against; the + runtime refuses any other value at startup, so a future incompatible grammar is never read + as if it were this one. + const: id.registrystack.org/formats/evidence/bundle/v1 + kind: + description: >- + Names the document type; together with `apiVersion` it tells a governed package + configuration apart from every other Registry Stack file. + const: EvidenceBundle + acquisitionCapabilities: + description: >- + Retired. An empty list is accepted, and ignored, for one release so a file written for + 0.44 still loads; any capability is refused. Delete the member: a Source binds a reviewed + Adapter pack route, and the pack declares how it reads. + deprecated: true + type: array + maxItems: 0 + project: + description: >- + Stable normalized EvidenceProject identifier. A package carrying this identifier + contains no authority profiles; startup captures a separately activated target + authority for this project and exact package digest. Each definition declares all + grant-ceiling dimensions and its representation ceiling. + $ref: '#/$defs/LocalId' + assuranceProfile: + description: >- + Declares the governed assurance boundary of the whole package, and the value is visible + in every assertion, so an authentic `local` assertion never satisfies a relying procedure + expecting a deployable profile. `local` is an authoring profile that lets a requirement + omit `fixtures` and disables no other runtime boundary; the deployable profiles require + every requirement to reference a fixture suite with complete coverage before the package + loads. + enum: + - local + - production + - evidence-grade + service: + description: >- + Carries the identity this deployment asserts under: the technical Evidence provider + identity placed in evidence and the operator-controlled trust domain of the process. + type: object + additionalProperties: false + required: + - providerId + - publicOrigin + - trustDomain + properties: + providerId: + description: >- + Technical provider URI placed in every assertion as `providedBy`. Enabling `sd-jwt-vc` + outside local assurance requires this value to be the stable HTTPS origin of the + deployment, because issuer metadata and the published JWKS URI are derived from + that origin. + type: string + format: uri + maxLength: 512 + publicOrigin: + description: >- + Exact public origin of this Evidence protected resource. Production and + evidence-grade deployments require a canonical HTTPS origin. The local + assurance profile also permits canonical HTTP on numeric 127.0.0.1 with + an explicit non-zero port for supervised tutorials. + $ref: '#/$defs/Url' + maxLength: 512 + trustDomain: + description: >- + Scopes the process to one operator-controlled trust domain, whose URI is bound into + subject bindings and into requester pseudonym scope, so the same subject yields + different pseudonyms under a different trust domain. + type: string + format: uri + maxLength: 512 + issuer: + description: >- + Carries the legal issuer identity placed in every assertion, kept separate from the + technical provider that operates the process and signs. + type: object + additionalProperties: false + required: + - uri + properties: + uri: + description: >- + Legal issuer URI placed in every assertion as `issuedBy`, and governance must authorize + the provider named in `service.providerId` to act for that issuer. + $ref: '#/$defs/uri' + publication: + description: >- + Optional provider-authored public facts that cannot be derived from the governed service, + issuer, response-format, binding-mode, and Evidence Type inventory. When present, the + runtime publishes one deterministic closed Registry Discovery description. + type: object + additionalProperties: false + required: + - serviceId + - title + - description + - endpointUrl + - jurisdictions + properties: + serviceId: {type: string, format: uri, maxLength: 512} + title: {type: string, minLength: 1, maxLength: 4096, pattern: '^[^\s\u0000-\u001F\u007F-\u009F](?:[^\u0000-\u001F\u007F-\u009F]*[^\s\u0000-\u001F\u007F-\u009F])?$', not: {pattern: '[\u2028\u2029\u202a-\u202e\u2066-\u2069\ufeff\ufdd0-\ufdef\ufffe\uffff]|🿾|🿿|𯿾|𯿿|𿿾|𿿿|񏿾|񏿿|񟿾|񟿿|񯿾|񯿿|񿿾|񿿿|򏿾|򏿿|򟿾|򟿿|򯿾|򯿿|򿿾|򿿿|󏿾|󏿿|󟿾|󟿿|󯿾|󯿿|󿿾|󿿿|􏿾|􏿿'}} + description: {type: string, minLength: 1, maxLength: 4096, pattern: '^[^\s\u0000-\u001F\u007F-\u009F](?:[^\u0000-\u001F\u007F-\u009F]*[^\s\u0000-\u001F\u007F-\u009F])?$', not: {pattern: '[\u2028\u2029\u202a-\u202e\u2066-\u2069\ufeff\ufdd0-\ufdef\ufffe\uffff]|🿾|🿿|𯿾|𯿿|𿿾|𿿿|񏿾|񏿿|񟿾|񟿿|񯿾|񯿿|񿿾|񿿿|򏿾|򏿿|򟿾|򟿿|򯿾|򯿿|򿿾|򿿿|󏿾|󏿿|󟿾|󟿿|󯿾|󯿿|󿿾|󿿿|􏿾|􏿿'}} + endpointUrl: + description: >- + Public URL Registry Discovery advertises for this Evidence service, with no query or + fragment. It requires HTTPS; the local assurance profile also permits HTTP on + localhost, 127.0.0.1, or [::1]. + $ref: '#/$defs/Url' + maxLength: 512 + jurisdictions: + type: array + minItems: 1 + maxItems: 128 + uniqueItems: true + items: {type: string, format: uri, maxLength: 512} + publisherId: {type: string, format: uri, maxLength: 512} + operatorId: {type: string, format: uri, maxLength: 512} + authentication: + description: >- + Verification policy for inbound bearer tokens: the runtime validates each token against + these values itself and ignores upstream identity headers. + $ref: '#/$defs/authentication' + audit: + description: >- + Governs audit pseudonymization for the whole deployment; `runtime.yaml` contributes only + the audit destination. + $ref: '#/$defs/audit' + subjectBinding: + description: >- + Keys the audience- and purpose-scoped subject bindings an assertion carries in place + of selector values, derived over the complete canonical role, profile, and value set + rather than as per-field hashes. + $ref: '#/$defs/subject-binding' + rateLimits: + description: >- + Governs the anti-enumeration budget for authenticated callers, counted against scoped + pseudonyms of the principal and the authority rather than against any raw selector value. + $ref: '#/$defs/rate-limits' + signing: + description: >- + Governs signature format, active and published key selection, key retirement, and assertion + validity; missing signing material fails readiness and no unsigned fallback exists. + type: object + additionalProperties: false + required: + - format + - algorithm + - activePublicJwkFile + - publishedPublicJwkFiles + - revokedKeyIds + - jwksPath + - maximumAssertionValiditySeconds + - verifierClockSkewSeconds + properties: + format: + description: >- + Fixes the wire serialization of a signed assertion to flattened JWS JSON, returned + as `application/jose+json`. + const: flattened-jws-json + algorithm: + description: >- + Binds assertion signatures to ES256 over P-256, and a verifier rejects any protected + header `alg` that differs from the algorithm bound to the trusted key. + const: ES256 + activePublicJwkFile: + description: >- + Names the bundle-held public JWK the runtime signer's key must equal exactly, proven + by one sign-and-verify test before readiness. + $ref: '#/$defs/public-jwk-path' + certificateChainFile: + description: >- + Optional PEM certificate chain, leaf first, certifying the active signing key; omission + means credentials and the served key set carry no `x5c`. The file is public material + named `public-keys/.chain.pem` for the active key's thumbprint, so a rotated or + revoked key's chain is never reused. Startup refuses a chain that does not parse, is + longer than the platform chain policy allows, has a leaf for a different key, or has + a certificate that is not valid at startup. Relying parties validate the chain to + their own trust anchors; Evidence's verifier only compares the leaf with a pinned key. + $ref: '#/$defs/certificate-chain-path' + publishedPublicJwkFiles: + description: >- + Retains predecessor public keys in the served key set so assertions signed before + a rollover still verify, for at least the maximum assertion validity plus the verifier + clock skew. + type: array + maxItems: 32 + uniqueItems: true + items: + description: >- + One retained public key served beside the active key; an entry that repeats the + active key or names a revoked identifier is rejected at startup. + $ref: '#/$defs/public-jwk-path' + revokedKeyIds: + description: >- + Emergency denylist: a listed identifier is excluded from the active set, the published + set, and the served key set, and a verifier rejects that identifier before selecting + a pinned public key. + type: array + maxItems: 33 + uniqueItems: true + items: + description: >- + One denied service key, named by its RFC 7638 thumbprint rather than by a provider-assigned + key name. + $ref: '#/$defs/service-key-id' + jwksPath: + description: >- + Route where the deployment serves its public key set; that route is not a trust + anchor, because a verifier pins the provider identity and key location through its + own governed configuration. + const: /.well-known/evidence/jwks.json + maximumAssertionValiditySeconds: + description: >- + Ceiling every `requirements[].validitySeconds` must stay within, and the base of + the window a retired public key stays published. + type: integer + minimum: 1 + maximum: 31536000 + verifierClockSkewSeconds: + description: >- + Skew a relying party applies when checking current validity, and the margin added + to the maximum assertion validity before a retired public key may be removed. + type: integer + minimum: 0 + maximum: 300 + responseFormats: + description: >- + Sets the deployment-wide ceiling of response serializations, and omission means `[signed-jws]`. + A bundle that drops signed JWS is rejected at startup, and every other listed format + additionally requires the one matched grant's `authorityProfiles.*.grants[].responseFormats` + to permit that format. + $ref: '#/$defs/response-formats' + selectorProfiles: + description: >- + Named registry of selector profiles that requirement subject roles and authority-grant + subjects reference by id; an id absent from the map fails validation before startup. + type: object + minProperties: 1 + maxProperties: 128 + propertyNames: + $ref: '#/$defs/LocalId' + additionalProperties: + description: >- + One named, closed profile of deployment-defined fields and their combined byte bound; + a profile is not an identity type, and possession of its field values does not by + itself grant authority. + $ref: '#/$defs/selector-profile' + sourceConnections: + description: >- + Reviewed non-secret destination, authentication-authority and trust policy for each + named source connection. Runtime material supplies matching credentials, endpoint + bindings and trust-anchor files without changing this governed authority. + type: object + minProperties: 1 + maxProperties: 128 + propertyNames: + $ref: '#/$defs/LocalId' + additionalProperties: + $ref: '#/$defs/source-connection' + sources: + description: >- + Complete map of pack-route bindings a requirement can reference by id in its + `acquisition` field, fixed at startup and immune to override by `runtime.yaml`. + type: object + minProperties: 1 + maxProperties: 128 + propertyNames: + $ref: '#/$defs/LocalId' + additionalProperties: + description: >- + One digest-pinned Adapter pack and route, the reviewed named connection it uses, + and the exact authorized selector fields projected into the route's named inputs. + $ref: '#/$defs/source' + authorityProfiles: + description: >- + Complete authority profiles for a legacy compiled bundle. A normalized project package + carries an empty map, and the runtime installs only the separately activated target + snapshot after package validation. Exactly one complete authority path may match; + overlapping paths deny rather than combining their permissions. + type: object + minProperties: 0 + maxProperties: 128 + propertyNames: + $ref: '#/$defs/LocalId' + additionalProperties: + description: >- + Everything one requester class may ask for. Access is per requester class rather than + per client identity, so two clients carrying the same tags have identical access. + $ref: '#/$defs/authority-profile' + maximumHolderBoundBatchSize: + description: >- + Ceiling on how many assertions one holder-bound release may carry. Omission means one, + so a bundle written before batch release cannot serve a batch; declaring a ceiling this + deployment never reaches enables nothing on its own, because each requirement still + needs its own holder-bound declaration and a grant that permits the mode. + type: integer + minimum: 1 + maximum: 16 + requirements: + description: >- + Requirement identifiers and Evidence Type URIs must each be unique across every entry; + a repeat of either rejects the whole bundle at startup. + type: array + minItems: 1 + maxItems: 128 + items: + description: >- + One independently versioned evidence definition; its configuration revision spans + only this requirement's own configuration and artifact closure, letting a relying + party pin this requirement without depending on the rest of the deployment. + $ref: '#/$defs/requirement' +allOf: + - if: + required: [project] + then: + properties: + authorityProfiles: {maxProperties: 0} + requirements: + items: + required: [grantCeiling, representations] + else: + properties: + authorityProfiles: {minProperties: 1} + - if: + properties: + assuranceProfile: + const: local + then: + properties: + authentication: + properties: + oidc: + properties: + issuer: + pattern: ^(?:https://.*|http://127\.0\.0\.1:[1-9][0-9]{0,4})$ + jwksSource: + properties: + uri: + # Local development permits a supervised issuer on the exact + # canonical loopback origin, serving its JWKS from that origin at + # any absolute path without query or fragment. The route is the + # issuer's to choose; the origin is not. + pattern: ^(?:https://.*|http://127\.0\.0\.1:[1-9][0-9]{0,4}/[^\s?#]*)$ + - if: + properties: + assuranceProfile: + enum: + - production + - evidence-grade + then: + properties: + authentication: + properties: + oidc: + properties: + issuer: + pattern: ^https:// + jwksSource: + properties: + uri: + pattern: ^https:// + sourceConnections: + additionalProperties: + properties: + endpoints: + items: + properties: + baseUrl: + pattern: '^[Hh][Tt][Tt][Pp][Ss]://' + requirements: + items: + required: + - fixtures + - if: + properties: + assuranceProfile: + enum: + - production + - evidence-grade + responseFormats: + contains: + enum: + - sd-jwt-vc + - sd-jwt-vc-batch + required: + - assuranceProfile + - responseFormats + then: + properties: + service: + properties: + providerId: + type: string + pattern: ^https://(?:[A-Za-z0-9.-]+|\[[0-9A-Fa-f:]+\])(?::[1-9][0-9]{0,4})?$ +$defs: + Digest: + type: string + pattern: ^sha256:[0-9a-f]{64}$ + description: 'A SHA-256 digest: `sha256:` followed by 64 lowercase hex digits.' + Url: + type: string + format: uri + maxLength: 2048 + pattern: '^[Hh][Tt][Tt][Pp][Ss]?://[^/?#@\u005C\u0000-\u0020\u007F-\u00A0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]+([/?#][^\u005C\u0000-\u0020\u007F-\u00A0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]*)?$' + description: An absolute http or https URL with a host preserved as written, no user information, and no backslash, whitespace or control character. DNS case and equivalent IPv6 literals are permitted. + ExternalId: + type: string + minLength: 1 + maxLength: 512 + pattern: "^[^\\u0000-\\u001F\\u007F-\\u009F]+$" + description: An identifier another system issues, written exactly as its issuer gives it. + LocalId: + type: string + pattern: ^[a-z][a-z0-9_-]{0,63}$ + description: 'A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.' + local-id: + type: string + pattern: ^[a-z][a-z0-9._-]{0,127}$ + uri: + type: string + format: uri + maxLength: 512 + response-formats: + # Closed enabled response formats. Signed flattened JWS is mandatory and + # remains the default; the unsigned and SD-JWT VC formats must each be + # enabled by the bundle and permitted by the complete matched grant. + # Omission means signed only. + type: array + minItems: 1 + maxItems: 4 + uniqueItems: true + contains: + const: signed-jws + items: + description: >- + One permitted serialization of the same assertion, which introduces no separate issuance + protocol and no credential state; a format reaches a response only when the bundle + and the one matched grant both permit that format. + enum: + - signed-jws + - unsigned-json + - sd-jwt-vc + - sd-jwt-vc-batch + subject-binding-mode: + # What the subject bindings in an assertion are derived under. Closed, with + # no default: absence at every point that references this is what means + # audience-scoped, so an existing document's meaning is unchanged and its + # projected configuration does not move. + enum: + - audience-scoped + - holder-bound + SecretReference: + type: string + pattern: ^(?:secret:env/[A-Z][A-Z0-9_]{0,127}|secret:file/[a-z][a-z0-9._-]{0,127})$ + description: 'An exact secret reference: secret:file/name, resolved under secretProviders.file.root, or secret:env/NAME, resolved only when secretProviders.environment is declared.' + relative-path: + type: string + pattern: ^(adapter-packs|adapters|derivations|schemas|codelists|fixtures|queries)/[A-Za-z0-9._/-]+$ + public-jwk-path: + type: string + pattern: ^public-keys/[A-Za-z0-9._-]+\.jwk\.json$ + certificate-chain-path: + type: string + pattern: ^public-keys/[A-Za-z0-9._-]+\.chain\.pem$ + service-key-id: + type: string + pattern: ^[A-Za-z0-9_-]{42}[AEIMQUYcgkosw048]$ + authentication: + type: object + additionalProperties: false + required: + - oidc + properties: + oidc: + description: >- + The one OpenID Connect issuer whose access tokens this deployment accepts, and the + rules a token from it must satisfy. + $ref: '#/$defs/oidc-authentication' + oidc-authentication: + type: object + additionalProperties: false + required: + - issuer + - audience + - tokenTypes + - algorithms + - jwksSource + - principalClaim + - requesterTagsClaim + - evidenceAudienceClaim + - maximumTokenLifetimeSeconds + - revokedKeyIds + - allowedClients + - requiredScopes + properties: + issuer: + description: >- + Exact token issuer an inbound access token must declare, with path-based issuers + supported; deployable bundles require HTTPS. + $ref: '#/$defs/Url' + pattern: ^https?:// + maxLength: 512 + allowInsecureHttp: + description: >- + Permits plain HTTP to the issuer and JWKS URI beyond loopback under the local assurance + profile only. Deployable bundles require HTTPS for both even when it is set, and a + production or evidence-grade bundle that sets it to true is refused. Omission is false. + type: boolean + default: false + audience: + description: >- + The one exact audience value an inbound access token must carry to be accepted; it is + also the resource this deployment advertises in its protected-resource metadata. + type: string + minLength: 1 + maxLength: 512 + tokenTypes: + description: >- + Allowlist of the exact `typ` value an inbound token's protected JWT header must + declare. + type: array + minItems: 1 + maxItems: 4 + uniqueItems: true + items: + description: >- + One exact protected-header `typ` value accepted on an inbound access token. + enum: + - at+jwt + - application/at+jwt + algorithms: + description: >- + Closes the set of signature algorithms accepted on an inbound access token, and + no algorithm fallback outside the set is permitted. + type: array + minItems: 1 + maxItems: 3 + uniqueItems: true + items: + description: >- + One signature algorithm the token verifier accepts on an inbound access token. + enum: + - EdDSA + - ES256 + - RS256 + jwksSource: + description: >- + Where the verifier fetches issuer signing keys. Evidence accepts only `type: uri`, a + fixed endpoint named in the governed bundle; discovery and static key sets are + refused. + type: object + additionalProperties: false + required: + - type + - uri + properties: + type: + description: >- + Selects the fixed-endpoint key source, the only one Evidence accepts. + const: uri + uri: + description: >- + Fixed endpoint the verifier fetches issuer signing keys from. As an endpoint the + operator declares, it inherits the declared issuer's allowance on any origin: it + may resolve to a public, private, or loopback address, while cloud-metadata and + link-local destinations remain prohibited, DNS is pinned for each fetch, and + ambient proxies and redirects are disabled. It requires HTTPS; the local assurance + profile also permits HTTP on the exact numeric 127.0.0.1 loopback origin with an + explicit port, or elsewhere under allowInsecureHttp. + $ref: '#/$defs/Url' + pattern: ^https?:// + maxLength: 512 + tlsTrustProfile: + description: >- + Logical name resolved to an exact private certificate authority file bound in + `runtime.yaml`, trusted beside the system roots for the `jwksSource.uri` connection + alone. Omission trusts only the system roots, and the profile is rejected outright + when `jwksSource.uri` is a local HTTP origin. + $ref: '#/$defs/local-id' + principalClaim: + description: >- + The only claim read as the principal, whose absence denies the request; `client_id`, + `azp`, request data, and proxy headers are not fallbacks. + $ref: '#/$defs/claim-name' + requesterTagsClaim: + description: >- + Names the verified claim whose tag list selects which authority profile can match + the request. + $ref: '#/$defs/claim-name' + evidenceAudienceClaim: + description: >- + Names the verified claim that fixes the audience an assertion is issued to, and + the public request cannot choose another audience. + $ref: '#/$defs/claim-name' + claims: + description: >- + Optional direct claim-name mapping for the shared contextual-authorization profile. + Omission uses the registry_* names defined by the profile. Names remain direct JWT + members even when they contain a dot. + $ref: '#/$defs/contextual-claim-names' + maximumTokenLifetimeSeconds: + description: >- + Caps the accepted `exp - iat` interval, and its presence requires `iat` and an `exp` + greater than `iat`. + type: integer + minimum: 1 + maximum: 86400 + revokedKeyIds: + description: >- + Emergency denylist of issuer key identifiers, checked before cached JWKS key selection + so a compromised key is refused even while the cache still holds the key. + type: array + maxItems: 32 + uniqueItems: true + items: + description: >- + One issuer key identifier the verifier refuses, whatever the cached JWKS still + holds. + type: string + minLength: 1 + maxLength: 256 + pattern: ^[^\u0000-\u001F\u007F-\u009F]+$ + actorClaim: + description: >- + Names the verified claim read as the actor alongside the principal, and omitting + the key enables no fallback actor source. + $ref: '#/$defs/claim-name' + allowedClients: + description: >- + Machine-client admission every bundle decides, matched against the verified token's + `client_id`/`azp`; never `sub`. The keyword `unrestricted` admits every client the + issuer vouched for; a list admits exactly the clients it names. An omitted key and + an empty list are refused. Audience plus static issuer-governed attributes alone + cannot establish that a client was granted this resource's permission, which is + what `requiredScopes` closes. + oneOf: + - description: Admit every client the issuer vouched for. + const: unrestricted + - description: Admit exactly the listed clients. + type: array + minItems: 1 + maxItems: 32 + uniqueItems: true + items: + description: One client identifier admitted to call this deployment. + type: string + minLength: 1 + maxLength: 128 + assertionIssuers: + description: >- + Per-client assertion-authority admission for a token that carries the + platform verifier's `registry_assertion_issuer` claim, keyed by the + client identifier the token's `client_id`/`azp` names and naming the + issuers that client may present the claim as. Omitting the key + applies no rule, so every exchanged token is admitted regardless of + the claim. A token that carries no such claim is never affected by + this admission. + type: object + minProperties: 1 + maxProperties: 32 + propertyNames: + $ref: '#/$defs/ExternalId' + maxLength: 128 + additionalProperties: + description: >- + The issuers one client may present the `registry_assertion_issuer` + claim as. + type: array + minItems: 1 + maxItems: 8 + uniqueItems: true + items: + description: One issuer URL the client may present the claim as. + type: string + minLength: 1 + maxLength: 512 + requiredScopes: + description: >- + Scope gate every bundle decides, read from the verified token's scope set after + signature verification and before any authority claim is read. The keyword + `unrestricted` applies no scope gate; a list names the scopes every inbound token + must carry. An omitted key and an empty list are refused; a missing scope is never + inferred from tags, principal, roles, `sub`, or request fields. + oneOf: + - description: Apply no scope gate. + const: unrestricted + - description: Require every listed scope. + type: array + minItems: 1 + maxItems: 32 + uniqueItems: true + items: + description: One RFC 6749 scope-token every inbound token must carry. + type: string + minLength: 1 + maxLength: 256 + pattern: ^[\x21\x23-\x5B\x5D-\x7E]+$ + if: + required: + - jwksSource + properties: + jwksSource: + properties: + uri: + pattern: ^http:// + then: + not: + required: + - tlsTrustProfile + audit: + type: object + additionalProperties: false + required: + - hashKeyRef + - hashKeyVersion + properties: + hashKeyRef: + description: >- + Points at the secret Rust derives the audit pseudonym key from; the same reference + cannot also serve `subjectBinding.secretRef`. Every audit gate is fail + closed whatever this section says, so an authorization refusal, access attempt, or + disclosure release whose entry cannot be written stops the response instead of being + served unaudited. + $ref: '#/$defs/SecretReference' + hashKeyVersion: + description: >- + Stamped into every audit pseudonym as its version prefix, so pseudonyms produced + under different audit key material stay distinguishable within one audit log. + type: integer + minimum: 1 + maximum: 2147483647 + subject-binding: + type: object + additionalProperties: false + required: + - secretRef + - keyVersion + properties: + secretRef: + description: >- + Points at the secret keying every subject binding; that reference and its resolved + bytes must both differ from the audit master, and a match fails startup. + $ref: '#/$defs/SecretReference' + keyVersion: + description: >- + Scopes each derived binding and appears in the binding value, so a new version changes + every binding a relying party already retains as an expectation. + type: integer + minimum: 1 + maximum: 2147483647 + rate-limits: + type: object + additionalProperties: false + required: + - requestsPerPrincipalPerMinute + - burstPerPrincipal + - failedSelectorAttemptsPerPrincipalAuthorityPerMinute + properties: + requestsPerPrincipalPerMinute: + description: >- + Rate at which one principal's request budget refills, spread continuously across + the minute rather than granted in full at its start. + type: integer + minimum: 1 + maximum: 1000000 + burstPerPrincipal: + description: >- + Capacity of one principal's request bucket, bounding how many requests may arrive + back to back before `requestsPerPrincipalPerMinute` governs the pace. + type: integer + minimum: 1 + maximum: 100000 + failedSelectorAttemptsPerPrincipalAuthorityPerMinute: + description: >- + Budget for selector-resolution failures, checked before source access and consumed + only when selector validation itself fails, so repeated probing is refused before + it reaches a source. + type: integer + minimum: 1 + maximum: 100000 + claim-name: + type: string + pattern: ^[A-Za-z_][A-Za-z0-9_.-]{0,127}$ + contextual-claim-names: + type: object + additionalProperties: false + properties: + actorKind: {$ref: '#/$defs/claim-name', default: registry_actor_kind} + purpose: {$ref: '#/$defs/claim-name', default: registry_purpose} + grantId: {$ref: '#/$defs/claim-name', default: registry_grant_id} + grantSourceIssuer: {$ref: '#/$defs/claim-name', default: registry_grant_source_issuer} + grantClient: {$ref: '#/$defs/claim-name', default: registry_grant_client} + grantResource: {$ref: '#/$defs/claim-name', default: registry_grant_resource} + grantExp: {$ref: '#/$defs/claim-name', default: registry_grant_exp} + grantBounds: {$ref: '#/$defs/claim-name', default: registry_grant_bounds} + approver: {$ref: '#/$defs/claim-name', default: registry_approver} + claim-path: + type: string + pattern: ^[A-Za-z_][A-Za-z0-9_-]*(\.[A-Za-z_][A-Za-z0-9_-]*)*$ + selector-profile: + type: object + additionalProperties: false + required: + - maximumAggregateBytes + - fields + properties: + maximumAggregateBytes: + description: >- + Caps the summed canonical byte size of every field value resolved for one authorized + use of the profile; exceeding it denies the request. + type: integer + minimum: 1 + maximum: 8192 + fields: + description: >- + Closed map of the profile's field declarations, keyed by adopter-chosen names that + are opaque to Rust and carry no meaning of their own. + type: object + minProperties: 1 + maxProperties: 16 + propertyNames: + $ref: '#/$defs/LocalId' + additionalProperties: + description: >- + One field's exact declaration: Rust matches a supplied value against it verbatim, + performing no case folding, normalization, transliteration, tokenization, partial-date + matching, or fuzzy scoring. + $ref: '#/$defs/selector-field' + selector-field: + oneOf: + - type: object + additionalProperties: false + required: + - type + - minimumBytes + - maximumBytes + properties: + type: + description: >- + Selects the field's scalar kind, fixing which other declaration keys are required; + a supplied value of a different kind is rejected. + const: string + minimumBytes: + description: >- + Inclusive lower bound, in UTF-8 bytes, on this field's accepted string value; + it cannot exceed the field's own `maximumBytes`. + type: integer + minimum: 1 + maximum: 8192 + maximumBytes: + description: >- + Inclusive upper bound, in UTF-8 bytes, on this field's accepted string or `controlled-code` + value; it cannot exceed the profile's `maximumAggregateBytes`. + type: integer + minimum: 1 + maximum: 8192 + - type: object + additionalProperties: false + required: + - type + properties: + type: + const: date + - type: object + additionalProperties: false + required: + - type + properties: + type: + const: uuid + - type: object + additionalProperties: false + required: + - type + - minimum + - maximum + properties: + type: + const: integer + minimum: + description: >- + Inclusive lower bound on this field's accepted integer selector value; a submitted + value less than this bound is rejected rather than clamped. + type: integer + minimum: -9007199254740991 + maximum: 9007199254740991 + maximum: + description: >- + Inclusive upper bound on this field's accepted integer selector value; a submitted + value greater than this bound is rejected rather than clamped. + type: integer + minimum: -9007199254740991 + maximum: 9007199254740991 + - type: object + additionalProperties: false + required: + - type + properties: + type: + const: boolean + - type: object + additionalProperties: false + required: + - type + - codelist + - codelistVersion + - maximumBytes + properties: + type: + const: controlled-code + codelist: + description: >- + Path to the bundled codelist artifact a `controlled-code` value must belong + to; a missing referenced artifact fails bundle loading. + $ref: '#/$defs/relative-path' + codelistVersion: + description: >- + Version this field's `controlled-code` values are pinned to; it must equal the + referenced codelist artifact's own version or bundle loading fails. + type: string + minLength: 1 + maxLength: 128 + maximumBytes: + type: integer + minimum: 1 + maximum: 8192 + source: + type: object + additionalProperties: false + required: [pack, route, connection, posture, factSchema] + properties: + pack: + description: Exact Adapter pack identity and package-relative captured closure. + type: object + additionalProperties: false + required: [id, version, digest, artifactPrefix] + properties: + id: {$ref: '#/$defs/LocalId'} + version: {type: string, minLength: 1, maxLength: 128, pattern: '^\S+$'} + digest: {$ref: '#/$defs/Digest'} + artifactPrefix: + allOf: + - {$ref: '#/$defs/relative-path'} + - {pattern: '^adapter-packs/[a-z][a-z0-9_-]{0,63}/[0-9a-f]{64}$'} + route: + description: Named Evidence source route compiled from the pinned pack. + $ref: '#/$defs/LocalId' + connection: + description: Named governed policy and matching runtime resource owner. + $ref: '#/$defs/LocalId' + inputs: + description: Named route inputs projected only from authorized selectors. + type: object + propertyNames: {$ref: '#/$defs/ExternalId'} + additionalProperties: + type: object + additionalProperties: false + required: [selector] + properties: + selector: + type: object + additionalProperties: false + required: [role, profile, field] + properties: + role: {$ref: '#/$defs/LocalId'} + profile: {$ref: '#/$defs/LocalId'} + field: {$ref: '#/$defs/LocalId'} + posture: + description: Reviewed minimization posture, equal to the pinned route contract. + enum: [source-derived, field-projected, record-transformed] + factSchema: + description: Final facts schema, equal to the pinned source schema unless a governed projection is selected. + allOf: + - {$ref: '#/$defs/relative-path'} + - {pattern: '^schemas/'} + projection: + description: Package-owned projection of matched native facts under the acquisition deadline. + type: object + additionalProperties: false + required: [script, entrypoint, digest] + properties: + script: + allOf: + - {$ref: '#/$defs/relative-path'} + - {pattern: '^derivations/.*\.rhai$'} + entrypoint: {type: string, minLength: 1, maxLength: 128, pattern: '^[A-Za-z_][A-Za-z0-9_]*$'} + digest: {$ref: '#/$defs/Digest'} + allOf: + - if: {required: [projection]} + then: + properties: + posture: {const: record-transformed} + source-connection: + type: object + additionalProperties: false + required: [endpoints] + properties: + endpoints: + description: Reviewed endpoint policies, one per distinct endpoint name; empty grants no network authority. + type: array + items: {$ref: '#/$defs/source-endpoint-policy'} + source-endpoint-policy: + type: object + additionalProperties: false + required: [endpoint, baseUrl, clientIdentity, authentication] + properties: + endpoint: {$ref: '#/$defs/LocalId'} + baseUrl: + description: >- + Exact reviewed origin and base path, without a query or fragment. The shared engine + additionally checks canonical path segments at startup. Deployable assurance + profiles require HTTPS. + Only local fixtures may use canonical numeric-loopback HTTP; unauthenticated + local sources additionally require an origin with an explicit non-zero port. + allOf: + - {$ref: '#/$defs/Url'} + - oneOf: + - {pattern: '^[Hh][Tt][Tt][Pp][Ss]://[^?#]+$'} + - pattern: >- + ^http://(?:127\.(?:0|[1-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.(?:0|[1-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.(?:0|[1-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])|\[::1\])(?::(?:[1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]))?(?:/[^?#]*)?$ + tlsTrustProfile: {$ref: '#/$defs/LocalId'} + clientIdentity: {enum: [forbidden, required]} + authentication: {$ref: '#/$defs/source-authentication-policy'} + allOf: + - if: + required: [authentication, clientIdentity] + properties: + authentication: + required: [type] + properties: + type: {const: none} + clientIdentity: {const: forbidden} + then: + properties: + baseUrl: + pattern: >- + ^http://(?:127\.(?:0|[1-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.(?:0|[1-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.(?:0|[1-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])|\[::1\]):(?:[1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$ + source-authentication-policy: + oneOf: + - type: object + additionalProperties: false + required: [type] + properties: + type: {const: none} + - type: object + additionalProperties: false + required: [type] + properties: + type: {const: basic} + - type: object + additionalProperties: false + required: [type] + properties: + type: {const: static-authorization} + - type: object + additionalProperties: false + required: [type] + properties: + type: {const: static-api-key} + - type: object + additionalProperties: false + required: [type, tokenEndpoint, credentialPlacement] + properties: + type: {const: oauth2-client-credentials} + tokenEndpoint: {$ref: '#/$defs/Url'} + scope: {type: string, minLength: 1, maxLength: 512} + audience: {type: string, minLength: 1, maxLength: 512} + resource: {type: string, minLength: 1, maxLength: 512, format: uri} + credentialPlacement: {enum: [basic-header, form-body]} + - type: object + additionalProperties: false + required: [type, tokenEndpoint] + properties: + type: {const: oauth2-private-key-jwt} + tokenEndpoint: {$ref: '#/$defs/Url'} + clientAssertionAudience: {type: string, minLength: 1, maxLength: 512} + scope: {type: string, minLength: 1, maxLength: 512} + audience: {type: string, minLength: 1, maxLength: 512} + resource: {type: string, minLength: 1, maxLength: 512, format: uri} + selector-input: + type: object + additionalProperties: false + required: + - role + - alternatives + properties: + role: + description: >- + Subject role this selector input covers, unique across the declaration; the runtime + resolves request subjects by role rather than by array position. + $ref: '#/$defs/local-id' + alternatives: + description: >- + Closed set of profile and field combinations permitted for the role; the runtime + materializes only the combination the matched authority grant carries, never the + union of every alternative declared. + type: array + minItems: 1 + maxItems: 16 + items: + description: >- + One permitted selector profile paired with the exact field subset that alternative + exposes. + type: object + additionalProperties: false + required: + - profile + - fields + properties: + profile: + description: >- + Selector profile this alternative admits for the role; a profile absent from + `selectorProfiles` is rejected at startup. + $ref: '#/$defs/local-id' + fields: + description: >- + Exact subset of the named profile's declared fields this alternative exposes, + which is how a consumer is handed less than the authorized selector carries. + type: array + minItems: 1 + maxItems: 16 + uniqueItems: true + items: + description: >- + One selector field name, which the named profile must declare or the bundle + is rejected at startup. + type: string + pattern: ^[a-z][a-z0-9._-]{0,63}$ + authority-profile: + type: object + additionalProperties: false + required: + - kind + - requesterTags + - grants + properties: + kind: + description: >- + Declared basis of authority for this profile's grants; a request whose verified + token carries an actor claim matches only a `delegated` profile. + enum: + - statutory + - organizational + - consent + - delegated + - explicit-request + actorKind: + description: >- + Restrict this authority profile to the verified actor kind. An agent without + a task grant must use a profile explicitly bound to agent. Normalized target + authority must explicitly name a kind inside the definition's actor ceiling; + omission cannot turn that ceiling into wildcard authority. + enum: [human, agent, service] + requesterTags: + description: >- + Complete tag set the claim named by `authentication.requesterTagsClaim` must contain + for this profile to match, so adding a tag narrows the profile rather than widening + it. + type: array + minItems: 1 + maxItems: 32 + uniqueItems: true + items: + description: >- + One tag that must be present in the verified claim; differentiated requirements, + purposes, or `valueClaims` are expressed by issuing different tags rather than + by naming individual clients. + $ref: '#/$defs/local-id' + requesterClients: + description: >- + Exact verified OAuth clients allowed to exercise this profile's authenticated-grant + paths. Required and nonempty when any subject uses authenticated-grant. + type: array + minItems: 1 + maxItems: 32 + uniqueItems: true + items: {type: string, minLength: 1, maxLength: 128} + grantSourceIssuer: + description: >- + Exact trusted issuer that supplied the immutable task-grant context before token + exchange. Required when any subject uses authenticated-grant. + $ref: '#/$defs/uri' + grants: + description: >- + Complete set of authorized paths this requester class has. Permissions are never + unioned across grants, so one grant must cover an entire request on its own. + type: array + minItems: 1 + maxItems: 128 + items: + description: >- + One authorized path, binding a single requirement, a single purpose, the audience + origin, and the referenced requirement's complete subject-role set. + type: object + additionalProperties: false + required: + - requirement + - purpose + - audienceFrom + - subjects + properties: + requirement: + description: >- + The one requirement this path authorizes, named by its exact requirement URI; + a requirement no bundle entry declares fails startup. + $ref: '#/$defs/uri' + purpose: + description: >- + The one purpose this path authorizes, matched exactly against the request + purpose; a purpose the referenced requirement does not declare fails startup. + type: string + pattern: ^[a-z][a-z0-9._:-]{0,127}$ + audienceFrom: + description: >- + Binds the assertion audience to the requester's verified evidence audience + claim, so the public request cannot name another audience. For a normalized + definition the resolved audience must also fit its authored audience ceiling + before selector values, credentials or sources are accessed. + const: authenticated-requester + responseFormats: + description: >- + Serializations this path permits, defaulting to signed JWS alone when omitted. + Unsigned and SD-JWT VC output each require both the bundle-level `responseFormats` + and the one matched grant to permit them. Holder-bound grants may name only + SD-JWT forms; the mandatory signed-JWS package format does not widen this grant. + type: array + minItems: 1 + maxItems: 4 + uniqueItems: true + items: {enum: [signed-jws, unsigned-json, sd-jwt-vc, sd-jwt-vc-batch]} + subjectBindingModes: + description: >- + Subject-binding modes this path permits, defaulting to audience-scoped alone when + omitted or empty. Permitting a serialization is not permitting a binding mode: + a path widened to `sd-jwt-vc` gains no right to issue holder-bound assertions + until that mode is named here. A path may name `holder-bound` alone, which + permits nothing else. + type: array + maxItems: 2 + uniqueItems: true + items: + description: >- + One binding mode this path permits, which is the operator half of a two-sided + gate; a requirement declaring a mode no grant for it permits is unreachable + and is rejected at startup. + $ref: '#/$defs/subject-binding-mode' + subjects: + description: >- + Authorization for the referenced requirement's complete subject-role set; + a grant that omits a declared role, or repeats one, fails startup. + type: array + minItems: 1 + maxItems: 8 + items: + description: >- + Authorization for one subject role, fixing which selector profile identifies + the subject and where that subject's selector values may originate. + type: object + additionalProperties: false + required: + - role + - selectorProfile + - valueOrigin + properties: + role: + description: >- + Names the requirement subject role this authorization covers; a role + the requirement's `subjectRoles` does not declare fails startup, and + no role may appear twice in one grant. + $ref: '#/$defs/local-id' + selectorProfile: + description: >- + The selector profile whose field set identifies this role's subject; + a profile the requirement's `subjectRoles` entry does not permit for + the role fails startup. + $ref: '#/$defs/local-id' + valueOrigin: + description: >- + Fixes where this role's selector values originate. A `request` origin + takes values from the closed public request and prohibits `valueClaims`; + `authenticated-context` rejects caller values and reads the exact `valueClaims` + map; `authenticated-grant` reads that same map and additionally requires a + verified grant whose trusted source issuer, requester client, purpose, and + Evidence requirement bound match exactly one authority profile. + enum: + - authenticated-context + - authenticated-grant + - request + valueClaims: + description: >- + Maps every field of the named selector profile to the claim path in + the verified access token that supplies that field's value. Missing, + extra, duplicate-target, or invalid claim paths fail startup. + type: object + minProperties: 1 + maxProperties: 16 + propertyNames: + $ref: '#/$defs/LocalId' + additionalProperties: + description: >- + Claim path resolved only from the strictly verified access token, + so a caller-supplied selector, grant reference, or approval value + cannot supply the field. + $ref: '#/$defs/claim-path' + allOf: + - if: + required: + - valueOrigin + properties: + valueOrigin: + enum: + - authenticated-context + - authenticated-grant + then: + required: + - valueClaims + - if: + required: + - valueOrigin + properties: + valueOrigin: + const: request + then: + not: + required: + - valueClaims + acquisition: + description: >- + Selects the configured source of each acquisition channel. The pinned pack route owns + every preparation, extraction, branching and bounded data operation in that + acquisition. `source` is the source channel's Source. The optional `holderPresented` + block is the holder-presented channel: a Source whose pack route reaches an endpoint + with the `wallet-presentation-v1` host protocol, and the selector profiles whose + requests acquire through it. A request's selector profile selects exactly one + channel, so a profile listed under `holderPresented` never reaches `source`, and a + `source` Source never uses the wallet presentation protocol. `source` may be omitted + only beside `holderPresented`, and then `holderPresented.selectorProfiles` lists + every selector profile the definition's subject roles allow. + type: object + additionalProperties: false + anyOf: + - required: [source] + - required: [holderPresented] + properties: + source: {$ref: '#/$defs/local-id'} + holderPresented: + description: >- + The holder-presented channel. The definition offers only the signed JWS representation, + because a holder-presented assertion answers as a signed flattened JWS. + type: object + additionalProperties: false + required: [source, selectorProfiles] + properties: + source: {$ref: '#/$defs/local-id'} + selectorProfiles: + description: >- + Selector profiles that select this channel. Each is a profile one of the + definition's subject roles allows. + type: array + minItems: 1 + maxItems: 16 + uniqueItems: true + items: {$ref: '#/$defs/local-id'} + requirement: + type: object + additionalProperties: false + required: + - handle + - uri + - kind + - acquisition + - purposes + - subjectRoles + - referenceFrameworks + - evidenceType + - validitySeconds + - derivation + - concepts + - disclosureGuard + - existenceDisclosure + properties: + question: + description: Human-facing presentation; excluded from the definition behavior revision. + type: string + minLength: 1 + maxLength: 2048 + not: + pattern: '[\u2028\u2029\u202a-\u202e\u2066-\u2069\ufeff\ufdd0-\ufdef\ufffe\uffff]|🿾|🿿|𯿾|𯿿|𿿾|𿿿|񏿾|񏿿|񟿾|񟿿|񯿾|񯿿|񿿾|񿿿|򏿾|򏿿|򟿾|򟿿|򯿾|򯿿|򿿾|򿿿|󏿾|󏿿|󟿾|󟿿|󯿾|󯿿|󿿾|󿿿|􏿾|􏿿' + grantCeiling: + description: >- + Package-owned authority, actor, value-origin and audience ceilings. The definition's + purposes, subject-role selector profiles, representations and subjectBinding supply + the remaining dimensions. A target grant can narrow the complete tuple only. + type: object + additionalProperties: false + required: [authorities, actorKinds, valueOrigins, audiences] + properties: + authorities: + type: array + minItems: 1 + maxItems: 5 + uniqueItems: true + items: {enum: [statutory, organizational, consent, delegated, explicit-request]} + actorKinds: + type: array + minItems: 1 + maxItems: 3 + uniqueItems: true + items: {enum: [human, agent, service]} + valueOrigins: + type: array + minItems: 1 + maxItems: 3 + uniqueItems: true + items: {enum: [request, authenticated-context, authenticated-grant]} + audiences: + type: array + minItems: 1 + maxItems: 32 + uniqueItems: true + items: {$ref: '#/$defs/uri'} + representations: + description: >- + Definition-specific serialization ceiling inside the package responseFormats. + The one complete target grant and binding mode must also permit the selected format. + type: array + minItems: 1 + maxItems: 4 + uniqueItems: true + items: {enum: [signed-jws, unsigned-json, sd-jwt-vc, sd-jwt-vc-batch]} + x-runtime-validation: Each format must be permitted by the definition binding mode. + handle: + description: >- + Stable local authoring, inspection and generated-code identifier for this definition. + Public requests select its exact Requirement URI; this handle is not a substitute + wire identity and is never inferred from that URI. + $ref: '#/$defs/local-id' + uri: + description: >- + Stable requirement URI a public request names to select this requirement; the runtime + looks up requirements by this exact value and no other. + $ref: '#/$defs/uri' + kind: + description: >- + Requirement classification carried unchanged into every assertion issued for this + requirement. + enum: + - criterion + - information-requirement + - constraint + subjectBinding: + description: >- + What this requirement's subject bindings are derived under; omission means + `audience-scoped`, which is what every requirement written before this key existed + did. A `holder-bound` requirement is rejected at startup unless the bundle and at + least one grant for it both permit a serialization the mode allows, which is + `sd-jwt-vc` or `sd-jwt-vc-batch`, and unless none of its concepts uses an + entity-reference value form, whose pointer only the audience it was scoped to + could resolve. + $ref: '#/$defs/subject-binding-mode' + acquisition: + description: >- + Fixes this requirement's complete source-request shape to one call over a single + source, or to a fixed sequence of calls named here; no response content chooses + a different source or an additional call. + $ref: '#/$defs/acquisition' + purposes: + description: >- + Closed set of purpose codes this definition can be requested under. One complete + target grant must bind an allowed purpose with every declared subject role, selector + profile and value origin. Package validity does not itself create target authority. + type: array + minItems: 1 + maxItems: 32 + uniqueItems: true + items: + description: >- + One purpose code eligible for this requirement; an authority-profile grant must + name this exact code before a request under it is authorized. + type: string + pattern: ^[a-z][a-z0-9._:-]{0,127}$ + subjectRoles: + description: >- + Complete set of subject positions this requirement resolves; incoming request array + order carries no meaning, and resolved subjects are always canonicalized to this + array's declaration order before signing. + type: array + minItems: 1 + maxItems: 8 + items: + description: >- + One subject position this requirement resolves; a request supplying a different + number of subjects, a duplicate role, or a role this requirement does not declare + is unauthorized. + type: object + additionalProperties: false + required: + - role + - cardinality + - selectorProfiles + properties: + role: + description: >- + Deployment-chosen identifier distinguishing this subject position from the + requirement's others; requests, grants, and derivation inputs all address + the position by this exact value, never by array position. + type: string + pattern: '^[a-z][a-z0-9._-]{0,63}$' + cardinality: + description: >- + Fixes this subject position to a single resolved value; Evidence Version 1 + defines no plural or list-valued role. + const: one + selectorProfiles: + description: >- + Selector profiles permitted for this subject position; every one of them must + be reachable by some authority-profile grant for every code in `purposes`, + or the bundle fails to load. + type: array + minItems: 1 + maxItems: 16 + uniqueItems: true + items: + description: >- + One selector profile id permitted for this position; it must name an entry + in the bundle's `selectorProfiles` map, or the bundle fails to load. + $ref: '#/$defs/local-id' + referenceFrameworks: + description: >- + Governed legal or procedural framework URIs carried as a whole into every assertion + issued for this requirement. + type: array + minItems: 1 + maxItems: 16 + uniqueItems: true + items: + description: >- + One governed framework URI in that set, copied unchanged into the assertion alongside + its siblings; the runtime does not select or rank among them. + $ref: '#/$defs/uri' + evidenceType: + description: >- + Exact Evidence Type URI placed in every assertion issued for this requirement; it + must be unique across the bundle, and a duplicate rejects the bundle at startup. + $ref: '#/$defs/uri' + observationTimezone: + description: >- + IANA timezone resolving `legal_local_date` and `legal_local_time` from the runtime-supplied + `observed_at` instant; an unrecognized name fails validation, and omitting the field + resolves both values in UTC instead. + type: string + minLength: 1 + maxLength: 128 + validitySeconds: + description: >- + Sets the assertion's validity window measured from `issuedAt`; the bundle fails + to load if this exceeds `signing.maximumAssertionValiditySeconds`. + type: integer + minimum: 1 + maximum: 31536000 + derivation: + description: >- + Determines which Rhai script computes the requirement's concept values as `derive/3`, + and what minimized selector inputs and closed typed parameters that script is allowed + to see. + type: object + additionalProperties: false + required: + - script + - parameters + properties: + script: + description: >- + Bundle-relative Rhai script compiled at startup to expose the requirement's + `derive/3` entry point before the runtime reaches readiness. + $ref: '#/$defs/relative-path' + selectorInputs: + description: >- + Optional closed set of authorized selector roles the derivation may read; omission + means `derive/3` receives an empty selector map. + type: array + maxItems: 8 + items: + description: >- + Declares one subject role the derivation may read, together with the closed + profile alternatives permitted for that role; only the alternative matching + the authorized request subject reaches `derive/3`. + $ref: '#/$defs/selector-input' + parameters: + description: >- + Closed set of adopter-named parameter values available to the requirement's + derivation; the map cannot carry secrets or runtime authority. + type: object + maxProperties: 32 + propertyNames: + $ref: '#/$defs/LocalId' + additionalProperties: + description: >- + One named parameter's value, closed to a bounded string, a safe integer, a + boolean, one typed canonical decimal, or a bounded array of decimal bucket + boundaries whose own bounds reuse that same typed-decimal shape. + $ref: '#/$defs/parameter-value' + concepts: + description: >- + Declares the complete, closed set of values this requirement's assertion may disclose; + a value the derivation produces under an identifier absent from this list fails + evaluation instead of being disclosed. + type: array + minItems: 1 + maxItems: 16 + items: + description: >- + One value the requirement may disclose, corresponding to exactly one `cccev:InformationConcept`, + and becoming one entry of the assertion's supported values when the derivation + produces that value. + type: object + additionalProperties: false + required: + - handle + - uri + - type + - required + properties: + handle: + description: >- + Stable application-facing key for this output in typed client + result maps. It is governed explicitly and is never inferred + from the concept URI. + $ref: '#/$defs/local-id' + uri: + description: >- + Stable identifier that names this concept as `providesValueFor` in the assertion + and, unless an `sdJwtVc.claim` override is declared, is also the concept's + claim name in the SD-JWT VC serialization. + $ref: '#/$defs/uri' + type: + enum: + - boolean + - controlled-code + - controlled-category + - bounded-identifier + - bounded-integer + - bounded-decimal + - date-bucket + - time-bucket + - audience-scoped-entity-reference + - controlled-code-list + - entity-reference-list + - reviewed-structured-value + required: + description: >- + Whether the derivation must produce a value for this concept; a missing required + concept fails the whole evaluation, and a missing optional concept is left + out of the disclosed supported values. + type: boolean + constraints: + description: >- + Closed bounds a derived value must satisfy before it is accepted into evidence; + the `allOf` branch below that matches the concept's `type` fixes their exact shape. + sdJwtVc: + description: >- + Optional per-concept projection that the concept declaration may set only + for `reviewed-structured-value` concepts, selecting how that structured value's + fields are exposed as SD-JWT VC disclosures. + $ref: '#/$defs/sd-jwt-vc-concept-projection' + allOf: + - oneOf: + - properties: + type: + description: >- + Selects the concept's closed value shape, which fixes the exact set + of keys `constraints` must declare and no others. + const: boolean + constraints: + description: >- + Closed, form-specific bounds a derived value must satisfy before it + is accepted into evidence; which keys apply is fixed entirely by the + concept's `type`. + $ref: '#/$defs/boolean-constraints' + - required: + - constraints + properties: + type: + const: controlled-code + constraints: + $ref: '#/$defs/controlled-code-constraints' + - required: + - constraints + properties: + type: + const: controlled-category + constraints: + $ref: '#/$defs/controlled-category-constraints' + - required: + - constraints + properties: + type: + const: bounded-identifier + constraints: + $ref: '#/$defs/bounded-identifier-constraints' + - required: + - constraints + properties: + type: + const: bounded-integer + constraints: + $ref: '#/$defs/bounded-integer-constraints' + - required: + - constraints + properties: + type: + const: bounded-decimal + constraints: + $ref: '#/$defs/bounded-decimal-constraints' + - required: + - constraints + properties: + type: + const: date-bucket + constraints: + $ref: '#/$defs/bucket-constraints' + - required: + - constraints + properties: + type: + const: time-bucket + constraints: + $ref: '#/$defs/bucket-constraints' + - required: + - constraints + properties: + type: + const: audience-scoped-entity-reference + constraints: + $ref: '#/$defs/entity-reference-constraints' + - required: + - constraints + properties: + type: + const: controlled-code-list + constraints: + $ref: '#/$defs/controlled-code-list-constraints' + - required: + - constraints + properties: + type: + const: entity-reference-list + constraints: + $ref: '#/$defs/entity-reference-list-constraints' + - required: + - constraints + properties: + type: + const: reviewed-structured-value + constraints: + $ref: '#/$defs/reviewed-structured-value-constraints' + - if: + required: + - sdJwtVc + then: + properties: + type: + const: reviewed-structured-value + fixtures: + description: >- + Bundle-relative path to this requirement's sanitized fixture suite; omitting it + is accepted only under `assuranceProfile: local`, and `production` or `evidence-grade` + refuse to load without it and its complete case coverage. + $ref: '#/$defs/relative-path' + disclosureGuard: + description: >- + Binds this requirement's release to the reviewed disclosure families a human combined-disclosure + review has already assessed. + type: object + additionalProperties: false + required: + - families + properties: + families: + description: >- + Non-empty set of those reviewed family URIs; sharing even one family with another + enabled requirement rejects the whole bundle at startup. + type: array + minItems: 1 + maxItems: 16 + uniqueItems: true + items: + description: >- + One reviewed disclosure-family URI; this exact value, not what it represents, + is what the startup check compares for reuse across requirements. + $ref: '#/$defs/uri' + existenceDisclosure: + description: >- + Governs the outward shape of an unresolved outcome: the runtime returns one identical + public problem whether the subject was absent, ambiguous, or found with inconsistent + derivation inputs, so a caller cannot distinguish the cause from the response. + enum: + - collapse-unresolved + publicCheck: + description: >- + Experimental (`v1alpha1`). Declares that this requirement can answer an + unauthenticated certificate check once a target authority activates it. Names the + Source fact that carries the check code and the two concepts that form the public + answer; the status concept is a controlled category and the fields concept is a + reviewed structured value, and they are different concepts. The requirement has one + subject role with one selector profile of one field, acquires through one Source, + and declares no holder-presented channel. Omitted when the requirement declares no + public check, so existing configuration revisions do not change. + type: object + additionalProperties: false + required: + - checkCodeFact + - statusOutput + - fieldsOutput + properties: + checkCodeFact: + description: Name of the Source fact that carries the check code the caller must present. + type: string + minLength: 1 + maxLength: 128 + statusOutput: + description: Handle of the controlled-category concept that carries the public status. + type: string + fieldsOutput: + description: Handle of the reviewed-structured-value concept that carries the public fields. + type: string + boolean-constraints: + type: object + additionalProperties: false + maxProperties: 0 + controlled-code-constraints: + type: object + additionalProperties: false + required: + - codelist + - codelistVersion + - maximumBytes + properties: + codelist: + description: >- + Bundle-relative path to the closed codelist artifact whose entries fix exact membership + for `controlled-code`, `controlled-category`, and `controlled-code-list` concepts, + validated at startup. + $ref: '#/$defs/relative-path' + codelistVersion: + description: >- + Version tag paired with `codelist` for `controlled-code` and `controlled-code-list` + concepts that must exactly equal the referenced codelist artifact's own declared + version, or the bundle fails to load. + type: string + minLength: 1 + maxLength: 128 + maximumBytes: + description: >- + Caps the disclosed byte length of a `controlled-code`, `controlled-category`, or + `audience-scoped-entity-reference` concept's value; a value or projected reference + longer than the cap fails validation instead of being truncated. + type: integer + minimum: 1 + maximum: 8192 + bounded-identifier-constraints: + description: >- + A source-owned immutable identifier is disclosed as an exact JSON string. Its ASCII + prefix is fixed by the governed bundle; the nonempty suffix begins with an ASCII + letter or digit and then contains only ASCII letters, digits, dots, underscores, or + hyphens. The full string must fit the declared UTF-8 byte bounds. + type: object + additionalProperties: false + required: [prefix, minimumBytes, maximumBytes] + properties: + prefix: + description: >- + Exact ASCII prefix ending in a dot, underscore, hyphen, colon, slash, or hash. + It may contain only ASCII letters, digits, and those six separators. + type: string + minLength: 1 + maxLength: 512 + pattern: '^[A-Za-z0-9._:/#-]*[._:/#-]$' + minimumBytes: + type: integer + minimum: 1 + maximum: 1024 + maximumBytes: + type: integer + minimum: 1 + maximum: 1024 + controlled-category-constraints: + type: object + additionalProperties: false + required: + - categoryScheme + - schemeVersion + - codelist + - maximumBytes + properties: + categoryScheme: + description: >- + URI naming the reviewed category vocabulary a `controlled-category` concept's value + must belong to; matched against `schemeVersion` and `codelist` at startup, it enforces + exact category membership and rejects any unreviewed category. + $ref: '#/$defs/uri' + schemeVersion: + description: >- + Version tag that must exactly equal a referenced codelist artifact's own declared + version at startup; pairs with `categoryScheme` for `controlled-category` concepts + and with `bucketScheme` for `date-bucket` and `time-bucket` concepts. + type: string + minLength: 1 + maxLength: 128 + codelist: + $ref: '#/$defs/relative-path' + maximumBytes: + type: integer + minimum: 1 + maximum: 8192 + bounded-integer-constraints: + type: object + additionalProperties: false + required: + - minimum + - maximum + properties: + minimum: + description: >- + Inclusive lower bound paired with `maximum` for `bounded-integer` and `bounded-decimal` + concepts; a derived value under it fails evaluation instead of being disclosed. + type: integer + minimum: -9007199254740991 + maximum: 9007199254740991 + maximum: + description: >- + Inclusive upper bound paired with `minimum` for `bounded-integer` and `bounded-decimal` + concepts; a derived value over it fails evaluation instead of being disclosed. + type: integer + minimum: -9007199254740991 + maximum: 9007199254740991 + bounded-decimal-constraints: + type: object + additionalProperties: false + required: + - minimum + - maximum + - maximumScale + properties: + minimum: + $ref: '#/$defs/canonical-decimal-text' + maximum: + $ref: '#/$defs/canonical-decimal-text' + maximumScale: + description: >- + Upper bound on the number of fractional digits accepted for a `bounded-decimal` + concept's derived value; a finer scale fails validation instead of being rounded. + type: integer + minimum: 0 + maximum: 9 + canonical-decimal-text: + type: string + pattern: ^-?(0|[1-9][0-9]*)(\.[0-9]*[1-9])?$ + bucket-constraints: + type: object + additionalProperties: false + required: + - bucketScheme + - schemeVersion + properties: + bucketScheme: + description: >- + URI naming the reviewed bucket scheme for a `date-bucket` or `time-bucket` concept; + paired with `schemeVersion`, `bucketScheme` resolves to exactly one codelist artifact, + so only the matched bucket code is disclosed and the underlying date, instant, or + duration never appears in the assertion. + $ref: '#/$defs/uri' + schemeVersion: + type: string + minLength: 1 + maxLength: 128 + entity-reference-constraints: + type: object + additionalProperties: false + required: + - maximumBytes + properties: + maximumBytes: + type: integer + minimum: 1 + maximum: 8192 + controlled-code-list-constraints: + type: object + additionalProperties: false + required: + - codelist + - codelistVersion + - minimumItems + - maximumItems + - unique + properties: + codelist: + $ref: '#/$defs/relative-path' + codelistVersion: + type: string + minLength: 1 + maxLength: 128 + minimumItems: + description: >- + Inclusive lower bound paired with `maximumItems` on how many items a `controlled-code-list` + or `entity-reference-list` concept discloses; a shorter derived list fails validation. + type: integer + minimum: 1 + maximum: 64 + maximumItems: + description: >- + Inclusive upper bound paired with `minimumItems` on how many items a `controlled-code-list` + or `entity-reference-list` concept discloses; a longer derived list fails validation. + type: integer + minimum: 1 + maximum: 64 + unique: + description: >- + Requires every item in a `controlled-code-list` or `entity-reference-list` concept's + disclosed list to be pairwise distinct; a duplicate item fails validation instead + of being deduplicated or disclosed twice. + const: true + entity-reference-list-constraints: + type: object + additionalProperties: false + required: + - minimumItems + - maximumItems + - unique + properties: + minimumItems: + type: integer + minimum: 1 + maximum: 64 + maximumItems: + type: integer + minimum: 1 + maximum: 64 + unique: + const: true + reviewed-structured-value-constraints: + type: object + additionalProperties: false + required: + - schema + - maximumSerializedBytes + properties: + schema: + description: >- + URI resolving to exactly one closed JSON Schema artifact in the immutable bundle + that a `reviewed-structured-value` concept's fields are validated against; the schema + closes every property, so unexpected or additional JSON in the derived value fails + validation. + $ref: '#/$defs/uri' + maximumSerializedBytes: + description: >- + Caps the serialized JSON byte length of a `reviewed-structured-value` concept's + entire disclosed object; an oversized derived value fails validation before signing. + type: integer + minimum: 1 + maximum: 65536 + sd-jwt-vc-concept-projection: + type: object + additionalProperties: false + required: + - claim + - disclosure + properties: + claim: + description: >- + Public claim name substituted for the concept identifier in the SD-JWT VC response; + it must be unique within the requirement and cannot collide with a profile-owned + claim. + type: string + pattern: ^[A-Za-z][A-Za-z0-9_]{0,63}$ + disclosure: + description: >- + Fixes where the structured value's field-level disclosures are exposed in the SD-JWT + VC claim set: as an always-visible top-level object under `sdJwtVc.claim`. + const: top-level + parameter-value: + oneOf: + - type: string + maxLength: 1024 + - type: integer + minimum: -9007199254740991 + maximum: 9007199254740991 + - type: boolean + - $ref: '#/$defs/decimal-value' + - type: array + minItems: 1 + maxItems: 64 + items: + description: >- + One decimal bucket boundary in an ordered array parameter, evaluated by the `bucket_number` + primitive to classify a derived decimal into the matching boundary's code; each + lower bound must equal the previous boundary's upper bound, and a gap fails validation + at startup. + $ref: '#/$defs/bucket-boundary' + decimal-value: + type: object + additionalProperties: false + required: + - type + - value + properties: + type: + description: >- + Literal `decimal` discriminator marking the typed-decimal form, required wherever + that form appears and present only alongside `value`. + const: decimal + value: + description: >- + Canonical decimal text of the typed-decimal form, restricted to exact finite decimal + text with no exponent, no leading zero, and no trailing fractional zero. + type: string + pattern: ^-?(0|[1-9][0-9]*)(\.[0-9]*[1-9])?$ + bucket-boundary: + type: object + additionalProperties: false + required: + - minimumInclusive + - maximumExclusive + - code + properties: + minimumInclusive: + description: >- + Inclusive lower bound of this boundary's half-open interval, expressed with the + same typed-decimal shape as a scalar parameter value. + $ref: '#/$defs/decimal-value' + maximumExclusive: + description: >- + Exclusive upper bound of this boundary's half-open interval, expressed with the + same typed-decimal shape as a scalar parameter value. + $ref: '#/$defs/decimal-value' + code: + description: >- + Output code returned when a derived decimal falls inside this boundary's interval; + duplicate codes across the array fail validation at startup. + type: string + pattern: ^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$ +bundle_layout: + root: evidence.yaml + allowed_directories: + - adapter-packs + - adapters + - derivations + - schemas + - codelists + - fixtures + - public-keys + - queries + symlinks: prohibited + path_escape: prohibited + unknown_files: prohibited +atomic_revision: + digest: sha256 over a canonical sorted path manifest plus exact file bytes + trust: Established by operator deployment controls, not by the digest itself. + lifetime: >- + Mounted read-only and loaded once; reload, merge, mutation, fallback, and partial serving + are prohibited. +startup_checks: + - Unique stable identifiers and no dangling references. + - Complete role/profile/origin/authority/source bindings. + - >- + Secret references resolve without expanding values into YAML or diagnostics. + - >- + Scripts compile and use only the Version 1 ABI and primitive allowlist. + - Schemas and codelists are closed, versioned, bounded, and referenced. + - >- + Each reviewed structured-value schema URI resolves to exactly one schema artifact by its + `$id`; missing, duplicate, unreferenced, or open schemas fail startup. + - >- + Each date- or time-bucket scheme URI and version resolves to exactly one reviewed codelist + artifact; missing, duplicate, or unreferenced schemes fail startup. + - >- + Fixtures cover positive, negative, boundary, missing, no-match, ambiguous, source failure, + and anti-reconstruction cases. When an initial HTTP source declares unresolvedProblem, one + data-free declaredUnresolved case may satisfy both no-match and ambiguous coverage because + the upstream contract has already collapsed those states; the fixture carries no lookup + label or Problem Details members. + - >- + The complete simultaneously enabled requirement set passes disclosure-combination review. + - >- + No two enabled requirements share a disclosureGuard family; a shared family rejects the + bundle regardless of purposes, audiences, requester entitlements, or rate limits. + - >- + Each context-derived or grant-derived subject has valueClaims whose keys exactly equal + the named selector profile field set; missing, extra, duplicate-target, or invalid claim + paths fail startup. + - Request-derived subjects have no valueClaims. + - >- + Each source route input maps to exactly one authorized selector role, profile and field; + pack route logic receives only those named minimized values. + - >- + Configured authority claim names are distinct and none names a registered JWT claim; `sub` + is permitted for principalClaim alone, because it already carries the principal. A repeated + or shadowing name would read one verified token member as something the issuer wrote for + another purpose. + - >- + For authenticated-grant origin, the complete shared task-grant claim set must be present and + unexpired. The signed principal, client, resource, source issuer, purpose, authority, and + Evidence requirement bound must exactly match verified request context and the selected + profile before selector resolution. A present malformed grant cannot fall back to a standing + profile. + - >- + Required signing, audit, credential, and source dependencies are ready. + - >- + The active and published public JWK files are public-only exact ES256 P-256 JWKs whose + 43-character kid equals their RFC 7638 thumbprint; paths, kids, and key material are unique + and no revoked identifier is active, published, or served. + - >- + The active plus published set contains at most 33 keys. A published predecessor remains + available for the maximum assertion validity plus clock skew, unless emergency revocation + requires immediate removal and denylisting. + - >- + The runtime signer matches the governed active public JWK exactly and passes a startup + sign-and-verify test; local assurance uses local-jwk and production or evidence-grade + uses Transit. + - >- + Every secret reference uses the closed file-secret grammar and is resolved beneath runtime.yaml + secretProviders.file.root. + - >- + Every selected pack route, endpoint, script, query, host-protocol configuration and Evidence + schema is present in the digest-pinned captured pack closure before startup succeeds. + - >- + Every source and derivation selector-input contract is closed and cross-referenced to the + exact authorized role/profile/field set. +secret_policy: + permitted: >- + Secret references matching the exact secret-reference grammar only: `secret:file/name` + logical names, and `secret:env/NAME` variable names, which resolve only when the runtime + enables secretProviders.environment. + prohibited: >- + private key, password, bearer token, client secret, or expanded environment value in any + bundle file + oauth_placement_rule: >- + Client credentials travel in the Authorization header or the token request body only. + There is no query-string placement, so no credential can reach a token URL, and the token + URL, body, response, and debug output are still fully redacted. + file_provider_rule: >- + Resolve secret:file logical names beneath the configured owner-controlled file root, reject + symlinks and path traversal, require regular owner-only files, and parse values as data. + environment_provider_rule: >- + Resolve secret:env names from the process environment only when the runtime declares + secretProviders.environment; a bundle reference naming the environment is refused at + startup otherwise, and values are parsed as data. + environment_expression_rule: >- + The bundle is parsed as written. A `${...}` environment expression in any bundle key or + string value is refused at startup, naming the field and never the expression; + substitution applies to runtime.yaml only. +deployment_rules: + authentication: >- + Evidence independently validates the bearer token against exact configured issuer, audience, + token type, algorithm, and JWKS; upstream identity headers are ignored and rejected if + mapped + audit: >- + keyed pseudonymization remains governed and every audit gate is fail closed; the audit + destination, path, rotation size, and retention come only from runtime.yaml + rate_limit_labels: >- + principal and authority use scoped pseudonyms; raw selector values are never labels or + keys + source_urls: >- + Each reachable pack endpoint must match exactly one reviewed connection policy and one runtime + binding for destination, authentication, trust and client identity. Plain HTTP remains limited + to the engine's explicit development/private-service profiles. + runtime_split: >- + runtime.yaml cannot override any field in this schema; the two closed documents have independent + digests and immutable startup lifetimes diff --git a/src/artifacts/sha256/9d68a7c21821319603e16c3fb1a381e206a4f488a3eae95c9544180004ae2ea3.json b/src/artifacts/sha256/9d68a7c21821319603e16c3fb1a381e206a4f488a3eae95c9544180004ae2ea3.json new file mode 100644 index 000000000..36236290a --- /dev/null +++ b/src/artifacts/sha256/9d68a7c21821319603e16c3fb1a381e206a4f488a3eae95c9544180004ae2ea3.json @@ -0,0 +1,1052 @@ +{ + "$defs": { + "AccessConfig": { + "additionalProperties": false, + "description": "The OIDC issuer a runtime accepts access tokens from: the exact `iss`\nvalue, the `aud` value a token must carry, and where the issuer's signing\nkeys come from, written under `authentication.oidc` beside the product's\nown token rules.", + "properties": { + "allowInsecureHttp": { + "default": false, + "description": "Permit plain HTTP beyond loopback to the configured issuer and to a\nJWKS URI declared in configuration. TLS remains required unless the\noperator explicitly accepts this transport risk.", + "type": "boolean" + }, + "assertionIssuers": { + "additionalProperties": { + "items": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "maxItems": 16, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "description": "Assertion authorities each client may exchange a subject token from,\nkeyed by client identifier. Omitted, no assertion-issuer rule applies;\nwritten, it lists at least one client, each with at least one\nauthority. Once a client is listed, a token it exchanged is accepted\nonly for one of that client's declared authorities, and a client that\nis not listed may exchange from no authority.", + "maxProperties": 64, + "minProperties": 1, + "propertyNames": { + "$ref": "#/$defs/ExternalId", + "maxLength": 128 + }, + "type": "object" + }, + "audience": { + "description": "The audience every accepted access token must carry in `aud`.", + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "issuer": { + "$ref": "#/$defs/Url", + "description": "Exact issuer accepted in access-token `iss` claims, an absolute\n`https` URL, or a plain `http` URL when `allowInsecureHttp` is set." + }, + "jwksSource": { + "$ref": "#/$defs/JwksSource", + "default": { + "type": "discovery" + }, + "description": "Where the issuer's signing keys come from. Absent reads the issuer's\nOpenID Connect discovery document." + }, + "policies": { + "additionalProperties": { + "$ref": "#/$defs/ClientPolicy" + }, + "maxProperties": 64, + "minProperties": 1, + "propertyNames": { + "$ref": "#/$defs/ExternalId", + "maxLength": 128 + }, + "type": "object" + }, + "scopeClaim": { + "$ref": "#/$defs/ExternalId", + "default": "registry_scopes", + "maxLength": 128 + } + }, + "required": [ + "issuer", + "audience", + "policies" + ], + "type": "object" + }, + "Action": { + "enum": [ + "start", + "status", + "inspect", + "retry-same", + "cancel", + "reconcile", + "doctor", + "restore-hold", + "release-restore-hold", + "release-admission-hold", + "complete-execution-recovery", + "retain" + ], + "type": "string" + }, + "AuthorizationConfig": { + "additionalProperties": false, + "properties": { + "clientAssertionAudience": { + "$ref": "#/$defs/ExternalId" + }, + "clientId": { + "$ref": "#/$defs/ExternalId", + "maxLength": 256 + }, + "resource": { + "$ref": "#/$defs/ExternalId" + }, + "scopes": { + "items": { + "$ref": "#/$defs/ExternalId" + }, + "maxItems": 32, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "signingKeyRef": { + "$ref": "#/$defs/SecretReference" + }, + "taskAuthority": { + "$ref": "#/$defs/TaskAuthorityConfig" + }, + "tokenEndpoint": { + "$ref": "#/$defs/Url" + } + }, + "required": [ + "tokenEndpoint", + "clientId", + "signingKeyRef", + "resource", + "scopes" + ], + "type": "object" + }, + "ClientPolicy": { + "additionalProperties": false, + "allOf": [ + { + "else": { + "required": [ + "workflows" + ] + }, + "if": { + "properties": { + "actions": { + "items": { + "enum": [ + "doctor", + "restore-hold", + "release-restore-hold", + "release-admission-hold", + "complete-execution-recovery", + "retain" + ] + } + } + } + }, + "then": { + "not": { + "required": [ + "workflows" + ] + } + } + } + ], + "properties": { + "actions": { + "items": { + "$ref": "#/$defs/Action" + }, + "maxItems": 15, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "operator": { + "default": false, + "type": "boolean" + }, + "requiredScopes": { + "items": { + "$ref": "#/$defs/ExternalId" + }, + "maxItems": 64, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "subjects": { + "description": "The exact token `sub` values this policy admits, compared byte for\nbyte as the issuer writes them: the client's own service-account\nsubject, or the named operators an operator policy serves. Each is at\nmost 512 bytes. A verified token from this client whose subject is not\nlisted is refused, and the list has no unrestricted form.", + "items": { + "$ref": "#/$defs/ExternalId" + }, + "maxItems": 64, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "workflows": { + "description": "The workflows this policy's run actions reach: start, status, inspect,\nretry-same, cancel and reconcile. Required when the policy lists a run\naction and refused when it lists none.", + "items": { + "$ref": "#/$defs/ExternalId", + "maxLength": 64, + "pattern": "^[A-Za-z0-9_-]+$" + }, + "maxItems": 64, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "subjects", + "requiredScopes", + "actions" + ], + "type": "object" + }, + "ConnectionConfig": { + "description": "One logical connection namespace. The discriminator selects its complete\ndeployment contract; a connection cannot borrow another variant's authority.", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "authorization": { + "$ref": "#/$defs/AuthorizationConfig" + }, + "baseUrl": { + "$ref": "#/$defs/Url" + }, + "profile": { + "$ref": "#/$defs/ExternalId" + }, + "requestLink": { + "description": "An `https` URL template, or `http` on a loopback address, with exactly\none `{proposalId}` placeholder after the host. Inspection offers it as\n\"Open the request\".", + "maxLength": 2048, + "pattern": "^(https://[^{}]+|http://(127(\\.[0-9]{1,3}){3}|\\[::1\\])(:[0-9]{1,5})?)/[^{}]*\\{proposalId\\}[^{}]*$", + "type": "string" + }, + "resultCheckSeconds": { + "default": 900, + "description": "Spaces scheduled reads of a followed Proposal. It decides only how a\nwaiting run is read, so it stays outside the binding digest.", + "format": "uint32", + "maximum": 86400, + "minimum": 60, + "type": "integer" + }, + "type": { + "const": "breg", + "type": "string" + } + }, + "required": [ + "type", + "baseUrl", + "authorization", + "profile" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "authorization": { + "$ref": "#/$defs/AuthorizationConfig" + }, + "baseUrl": { + "$ref": "#/$defs/Url" + }, + "completion": { + "$ref": "#/$defs/ReviewCompletionConfig", + "description": "Authenticated minimized wake-ups; omission uses polling only." + }, + "producer": { + "$ref": "#/$defs/LocalId" + }, + "profile": { + "$ref": "#/$defs/ExternalId" + }, + "resultCheckSeconds": { + "default": 900, + "format": "uint32", + "maximum": 86400, + "minimum": 60, + "type": "integer" + }, + "type": { + "const": "casework-review-producer", + "type": "string" + } + }, + "required": [ + "type", + "baseUrl", + "authorization", + "profile", + "producer" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "authorization": { + "$ref": "#/$defs/AuthorizationConfig" + }, + "baseUrl": { + "$ref": "#/$defs/Url" + }, + "type": { + "const": "messaging", + "type": "string" + } + }, + "required": [ + "type", + "baseUrl", + "authorization" + ], + "type": "object" + }, + { + "additionalProperties": false, + "allOf": [ + { + "else": { + "not": { + "required": [ + "observationAuthorization" + ] + } + }, + "if": { + "properties": { + "authorization": { + "properties": { + "taskAuthority": { + "type": "object" + } + }, + "required": [ + "taskAuthority" + ] + } + } + }, + "then": { + "required": [ + "observationAuthorization" + ] + } + } + ], + "properties": { + "authorization": { + "$ref": "#/$defs/AuthorizationConfig" + }, + "baseUrl": { + "$ref": "#/$defs/Url" + }, + "observationAuthorization": { + "$ref": "#/$defs/AuthorizationConfig", + "description": "Ordinary receipt reads under the original owner, without taskAuthority." + }, + "type": { + "const": "scheduling", + "type": "string" + } + }, + "required": [ + "type", + "baseUrl", + "authorization" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "The reviewed directory contract and environment-specific destination.", + "properties": { + "attemptTimeoutMilliseconds": { + "default": 2000, + "format": "uint64", + "maximum": 2000, + "minimum": 1, + "type": "integer" + }, + "authorization": { + "$ref": "#/$defs/AuthorizationConfig", + "description": "Omission makes the configured read public; it never inherits a caller token.", + "not": { + "required": [ + "taskAuthority" + ] + } + }, + "baseUrl": { + "$ref": "#/$defs/Url", + "pattern": "^[^\\s\\\\]+$" + }, + "commandPath": { + "$ref": "#/$defs/ExternalId", + "description": "The one exact relative path that `external.command/v1` may POST to.\nOmission keeps the connection read-only." + }, + "maximumResponseBytes": { + "default": 65536, + "format": "uint64", + "maximum": 65536, + "minimum": 1, + "type": "integer" + }, + "paths": { + "items": { + "$ref": "#/$defs/ExternalId" + }, + "maxItems": 16, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "queryParameters": { + "description": "Omission permits no query parameters.", + "items": { + "$ref": "#/$defs/ExternalId" + }, + "maxItems": 16, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "responseSchema": { + "description": "Local JSON Schema for the complete {status, body} response.", + "x-registry-foreign": "json-schema-2020-12" + }, + "type": { + "const": "external-http", + "type": "string" + } + }, + "required": [ + "type", + "baseUrl", + "paths", + "responseSchema" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "attemptTimeoutMilliseconds": { + "default": 8000, + "format": "uint64", + "maximum": 8000, + "minimum": 1, + "type": "integer" + }, + "authorization": { + "$ref": "#/$defs/DecisionAuthorization" + }, + "baseUrl": { + "$ref": "#/$defs/Url", + "pattern": "^[^\\s\\\\]+$" + }, + "maximumRequestBytes": { + "default": 65536, + "format": "uint64", + "maximum": 65536, + "minimum": 1, + "type": "integer" + }, + "maximumResponseBytes": { + "default": 65536, + "format": "uint64", + "maximum": 65536, + "minimum": 1, + "type": "integer" + }, + "model": { + "$ref": "#/$defs/ExternalId" + }, + "protocol": { + "$ref": "#/$defs/DecisionProtocol" + }, + "type": { + "const": "evaluation", + "type": "string" + } + }, + "required": [ + "type", + "protocol", + "baseUrl", + "model", + "authorization" + ], + "type": "object" + } + ] + }, + "DatabaseConfig": { + "additionalProperties": false, + "description": "The PostgreSQL connection a stateful runtime uses. Both URLs are secret\nreferences and may name the same secret.", + "properties": { + "migrationUrlRef": { + "$ref": "#/$defs/SecretReference", + "description": "Secret reference to the migration connection URL." + }, + "runtimeUrlRef": { + "$ref": "#/$defs/SecretReference", + "description": "Secret reference to the least-privileged runtime connection URL." + }, + "testOnlyPlaintext": { + "default": false, + "description": "Allow a plaintext connection. Refused outside test builds.", + "type": "boolean" + }, + "trustedRootCertificateRef": { + "$ref": "#/$defs/SecretReference", + "description": "Secret reference to a PEM root certificate the connection trusts.\nAbsent, the connection trusts the platform's root certificates." + } + }, + "required": [ + "runtimeUrlRef", + "migrationUrlRef" + ], + "type": "object" + }, + "DecisionAuthorization": { + "description": "Explicit service identity. Local authorization is limited to numeric loopback.", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "bearer": { + "additionalProperties": false, + "properties": { + "principal": { + "$ref": "#/$defs/ExternalId" + }, + "tokenRef": { + "$ref": "#/$defs/SecretReference" + } + }, + "required": [ + "tokenRef", + "principal" + ], + "type": "object" + } + }, + "required": [ + "bearer" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "local": { + "additionalProperties": false, + "type": "object" + } + }, + "required": [ + "local" + ], + "type": "object" + } + ] + }, + "DecisionProtocol": { + "enum": [ + "system-one", + "openai-decisions" + ], + "type": "string" + }, + "DeploymentConfig": { + "additionalProperties": false, + "properties": { + "activeStateKey": { + "format": "uint32", + "maximum": 4294967295, + "minimum": 1, + "type": "integer" + }, + "admissionKeyRef": { + "$ref": "#/$defs/SecretReference" + }, + "auditFile": { + "pattern": "^/+(?:(?:[^/.][^/]*|\\.(?:[^/.][^/]*|\\.[^/]+)?)/+)*(?:[^/.][^/]*|\\.(?:[^/.][^/]*|\\.[^/]+))$", + "type": "string" + }, + "auditKeyRef": { + "$ref": "#/$defs/SecretReference" + }, + "authentication": { + "$ref": "#/$defs/AccessConfig" + }, + "databaseId": { + "$ref": "#/$defs/ExternalId", + "maxLength": 128 + }, + "listener": { + "$ref": "#/$defs/PrivateListenerConfig" + }, + "metricsListener": { + "$ref": "#/$defs/ListenerConfig", + "description": "The operator-private socket `/metrics` is served on. When it is\nomitted, no metrics are served." + }, + "packages": { + "description": "One pinned package per workflow. List each package root and digest once.", + "items": { + "allOf": [ + { + "$ref": "#/$defs/PackageConfig" + }, + { + "properties": { + "expectedDigest": { + "$ref": "#/$defs/Digest" + } + }, + "required": [ + "expectedDigest" + ] + } + ], + "unevaluatedProperties": false + }, + "maxItems": 16, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "runtimeRole": { + "maxLength": 63, + "pattern": "^[a-z_][a-z0-9_]{0,62}$", + "type": "string" + }, + "stateKeys": { + "additionalProperties": false, + "maxProperties": 16, + "minProperties": 1, + "patternProperties": { + "^[^\\u0000-\\u001F\\u007F-\\u009F]+$": { + "$ref": "#/$defs/StateKeyConfig" + } + }, + "propertyNames": { + "$ref": "#/$defs/ExternalId", + "maxLength": 10, + "pattern": "^[1-9][0-9]*$" + }, + "type": "object" + } + }, + "required": [ + "databaseId", + "runtimeRole", + "packages", + "listener", + "authentication", + "auditFile", + "auditKeyRef", + "activeStateKey", + "stateKeys", + "admissionKeyRef" + ], + "type": "object" + }, + "Digest": { + "description": "A SHA-256 digest: `sha256:` followed by 64 lowercase hex digits.", + "pattern": "^sha256:[0-9a-f]{64}$", + "type": "string" + }, + "EnvironmentSecretProviderConfig": { + "additionalProperties": false, + "description": "The environment secret provider. It takes no settings.", + "type": "object" + }, + "EventSourceConfig": { + "additionalProperties": false, + "description": "Trusted producer binding. Event vocabulary and mapping stay in the package.", + "properties": { + "signingKeyRef": { + "$ref": "#/$defs/SecretReference", + "description": "Protected reference to the raw HMAC-SHA-256 key, at least 32 bytes." + }, + "source": { + "$ref": "#/$defs/ExternalId", + "description": "Exact absolute producer URI that signed event envelopes must declare." + } + }, + "required": [ + "source", + "signingKeyRef" + ], + "type": "object" + }, + "ExternalId": { + "description": "An identifier another system issues, written exactly as its issuer gives it.", + "maxLength": 512, + "minLength": 1, + "pattern": "^[^\\u0000-\\u001F\\u007F-\\u009F]+$", + "type": "string" + }, + "FileSecretProviderConfig": { + "additionalProperties": false, + "description": "The file secret provider.", + "properties": { + "root": { + "description": "Absolute directory holding one file per secret. Each file must be a\nregular file owned by the runtime user, mode 0400 or 0600, with exactly\none hard link.", + "pattern": "^/", + "type": "string" + } + }, + "required": [ + "root" + ], + "type": "object" + }, + "JwksSource": { + "description": "Where a runtime obtains the OIDC issuer's signing keys.", + "oneOf": [ + { + "additionalProperties": false, + "description": "Read `jwks_uri` from the issuer's OpenID Connect discovery document.", + "properties": { + "type": { + "const": "discovery", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Fetch the key set from this absolute `https` URI, skipping discovery.\nA plain `http` URI is accepted on loopback for supervised local\ndevelopment, and beyond loopback only when the issuer block sets\n`allowInsecureHttp`.", + "properties": { + "type": { + "const": "uri", + "type": "string" + }, + "uri": { + "$ref": "#/$defs/Url" + } + }, + "required": [ + "type", + "uri" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Read the key set from a secret, for deployments without network access\nto the issuer.", + "properties": { + "documentRef": { + "$ref": "#/$defs/SecretReference" + }, + "type": { + "const": "static", + "type": "string" + } + }, + "required": [ + "type", + "documentRef" + ], + "type": "object" + } + ] + }, + "ListenerBind": { + "description": "Socket address the runtime listens on, written host:port with an IP address host ([addr]:port for IPv6).", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "ListenerConfig": { + "additionalProperties": false, + "description": "The listener of a runtime that declares no TLS or exposure settings.", + "properties": { + "bind": { + "$ref": "#/$defs/ListenerBind" + } + }, + "required": [ + "bind" + ], + "type": "object" + }, + "ListenerNetworkExposure": { + "description": "The operator-declared private network placement of an HTTP listener.", + "enum": [ + "private-address", + "container-private" + ], + "type": "string" + }, + "LocalId": { + "description": "A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.", + "pattern": "^[a-z][a-z0-9_-]{0,63}$", + "type": "string" + }, + "PackageConfig": { + "additionalProperties": false, + "description": "The package a runtime serves: `root` is the absolute package directory,\nand `expectedDigest`, when set, pins the package digest the runtime must\nfind there. The package digest is the digest of the package's\n`SHA256SUMS` file; see [`crate::package`].", + "properties": { + "expectedDigest": { + "$ref": "#/$defs/Digest", + "description": "`sha256:` label of the package digest, the digest of the package's\n`SHA256SUMS` file. When set, the runtime refuses to start on any other\npackage." + }, + "root": { + "description": "Absolute path of the package directory.", + "pattern": "^/", + "type": "string" + } + }, + "required": [ + "root" + ], + "type": "object" + }, + "PrivateListenerConfig": { + "additionalProperties": false, + "description": "The listener of a runtime that declares its TLS termination and network\nexposure.", + "properties": { + "bind": { + "$ref": "#/$defs/ListenerBind" + }, + "networkExposure": { + "$ref": "#/$defs/ListenerNetworkExposure", + "default": "private-address" + }, + "tlsTermination": { + "$ref": "#/$defs/TlsTermination" + } + }, + "required": [ + "bind", + "tlsTermination" + ], + "type": "object" + }, + "ReviewCompletionConfig": { + "additionalProperties": false, + "description": "How Casework's completion event for this connection's review requests is\nauthenticated. The event only wakes a waiting run: the run reads the result\nitself with its own producer authorization.", + "properties": { + "bearerTokenRef": { + "$ref": "#/$defs/SecretReference", + "description": "The bearer token Casework's completion destination sends." + }, + "recipientBinding": { + "description": "The recipientBinding the Casework project names for this producer's\ncompletion destination: 1 to 256 printable ASCII characters without\nspaces. Casework sends it in the registry-recipient-binding header.", + "maxLength": 256, + "minLength": 1, + "pattern": "^[!-~]{1,256}$", + "type": "string" + } + }, + "required": [ + "recipientBinding", + "bearerTokenRef" + ], + "type": "object" + }, + "SecretProvidersConfig": { + "additionalProperties": false, + "anyOf": [ + { + "properties": { + "file": { + "$ref": "#/$defs/FileSecretProviderConfig" + } + }, + "required": [ + "file" + ] + }, + { + "properties": { + "environment": { + "$ref": "#/$defs/EnvironmentSecretProviderConfig" + } + }, + "required": [ + "environment" + ] + } + ], + "description": "The secret providers a runtime enables. A reference is resolved only by a\nprovider declared here: `secret:file/name` under `file.root`, and\n`secret:env/NAME` only when `environment: {}` is present.", + "properties": { + "environment": { + "$ref": "#/$defs/EnvironmentSecretProviderConfig", + "description": "Enables `secret:env/NAME` references, read from the process\nenvironment. Declared as an empty mapping: `environment: {}`." + }, + "file": { + "$ref": "#/$defs/FileSecretProviderConfig", + "description": "Enables `secret:file/name` references, read from files under `root`." + } + }, + "type": "object" + }, + "SecretReference": { + "description": "An exact secret reference: secret:file/name, resolved under secretProviders.file.root, or secret:env/NAME, resolved only when secretProviders.environment is declared.", + "pattern": "^(?:secret:env/[A-Z][A-Z0-9_]{0,127}|secret:file/[a-z][a-z0-9._-]{0,127})$", + "type": "string" + }, + "StateKeyConfig": { + "additionalProperties": false, + "properties": { + "keyRef": { + "$ref": "#/$defs/SecretReference" + } + }, + "required": [ + "keyRef" + ], + "type": "object" + }, + "TaskAuthorityConfig": { + "additionalProperties": false, + "properties": { + "baseUrl": { + "$ref": "#/$defs/Url" + }, + "bootstrapResource": { + "$ref": "#/$defs/ExternalId" + }, + "exchangeAudience": { + "$ref": "#/$defs/ExternalId" + }, + "issuer": { + "$ref": "#/$defs/ExternalId" + }, + "subject": { + "$ref": "#/$defs/ExternalId" + } + }, + "required": [ + "baseUrl", + "issuer", + "subject", + "exchangeAudience", + "bootstrapResource" + ], + "type": "object" + }, + "TlsTermination": { + "description": "Declares the trusted transport boundary for a runtime's plaintext HTTP\nlistener. Production listeners require operator-controlled upstream TLS\ntermination; direct plaintext is limited to the explicit loopback-only\ndevelopment mode.", + "enum": [ + "operator-controlled-upstream", + "development-loopback" + ], + "type": "string" + }, + "Url": { + "description": "An absolute http or https URL with a host preserved as written, no user information, and no backslash, whitespace or control character. DNS case and equivalent IPv6 literals are permitted.", + "format": "uri", + "maxLength": 2048, + "pattern": "^[Hh][Tt][Tt][Pp][Ss]?://[^/?#@\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]+([/?#][^\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]*)?$", + "type": "string" + } + }, + "$id": "https://id.registrystack.org/schemas/coordinator/runtime/runtime.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/coordinator/runtime/v1alpha1", + "type": "string" + }, + "connections": { + "additionalProperties": { + "$ref": "#/$defs/ConnectionConfig" + }, + "description": "Named deployment bindings with one explicit type per connection.", + "maxProperties": 16, + "minProperties": 1, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "database": { + "allOf": [ + { + "$ref": "#/$defs/DatabaseConfig" + }, + { + "properties": { + "testOnlyPlaintext": { + "const": false + } + } + } + ], + "unevaluatedProperties": false + }, + "deployment": { + "$ref": "#/$defs/DeploymentConfig" + }, + "eventSources": { + "additionalProperties": { + "$ref": "#/$defs/EventSourceConfig" + }, + "description": "Optional trusted event producers keyed by the logical IDs used in Workflow triggers.", + "maxProperties": 16, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "kind": { + "const": "CoordinatorRuntimeConfig", + "type": "string" + }, + "minimumObservationIntervalSeconds": { + "default": 30, + "description": "Stricter deployment spacing for every product completion observation.", + "format": "uint32", + "maximum": 86400, + "minimum": 30, + "type": "integer" + }, + "namespace": { + "maxLength": 60, + "pattern": "^coordinator_[a-z0-9_]*$", + "type": "string" + }, + "secretProviders": { + "$ref": "#/$defs/SecretProvidersConfig" + } + }, + "required": [ + "secretProviders", + "database", + "namespace", + "connections", + "apiVersion", + "kind" + ], + "title": "RuntimeConfig", + "type": "object" +} diff --git a/src/artifacts/sha256/a21e02c4ca6980e0eb4dc733b99b1fdb465aec8fa1c661ec70e86d71d4146e06.json b/src/artifacts/sha256/a21e02c4ca6980e0eb4dc733b99b1fdb465aec8fa1c661ec70e86d71d4146e06.json new file mode 100644 index 000000000..d6f5060b4 --- /dev/null +++ b/src/artifacts/sha256/a21e02c4ca6980e0eb4dc733b99b1fdb465aec8fa1c661ec70e86d71d4146e06.json @@ -0,0 +1,506 @@ +{ + "$defs": { + "AffectedRowBounds": { + "additionalProperties": false, + "properties": { + "maximum": { + "description": "The document member `maximum`.", + "format": "uint64", + "maximum": 100000000, + "minimum": 0, + "type": "integer" + }, + "minimum": { + "description": "The document member `minimum`.", + "format": "uint64", + "maximum": 100000000, + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "minimum", + "maximum" + ], + "type": "object" + }, + "ChunkCursorProtocol": { + "enum": [ + "record-id-uuid-array" + ], + "type": "string" + }, + "CompiledRegistryChangeCode": { + "enum": [ + "registry-identity-changed", + "registry-version-changed", + "record-timer-store-added", + "entity-added", + "entity-removed", + "entity-physical-name-changed", + "entity-route-changed", + "entity-mutation-mode-changed", + "entity-classification-changed", + "entity-access-requirements-changed", + "entity-access-log-changed", + "entity-geo-json-changed", + "entity-temporal-changed", + "field-added-optional", + "field-added-required", + "field-removed", + "field-type-changed", + "field-vocabulary-codes-added", + "field-length-widened", + "field-physical-name-changed", + "field-requiredness-changed", + "field-generation-changed", + "field-pattern-added", + "field-pattern-changed", + "field-pattern-removed", + "field-encryption-changed", + "field-lookup-changed", + "field-classification-changed", + "field-temporal-role-changed", + "derived-relation-added", + "derived-relation-removed", + "derived-relation-changed", + "reference-target-changed", + "constraint-added", + "constraint-removed", + "constraint-changed", + "index-added", + "index-removed", + "index-changed", + "access-profile-added", + "access-profile-removed", + "access-profile-changed", + "route-added", + "route-removed", + "route-changed", + "query-inventory-changed", + "event-added", + "event-removed", + "event-changed", + "timer-added", + "timer-removed", + "timer-changed", + "action-added", + "action-removed", + "action-changed", + "consent-record-changed", + "recipient-organization-added", + "recipient-organization-removed", + "recipient-organization-changed", + "recipient-group-added", + "recipient-group-removed", + "recipient-group-changed", + "statistical-dataset-added", + "statistical-dataset-removed", + "statistical-dataset-changed" + ], + "type": "string" + }, + "CompiledRegistryChangeTarget": { + "additionalProperties": false, + "properties": { + "kind": { + "$ref": "#/$defs/CompiledRegistryChangeTargetKind" + }, + "memberId": { + "type": "string" + }, + "recordTypeId": { + "type": "string" + } + }, + "required": [ + "kind" + ], + "type": "object" + }, + "CompiledRegistryChangeTargetKind": { + "enum": [ + "registry", + "record-type", + "field", + "derived-relation", + "constraint", + "index", + "access-profile", + "route", + "query-inventory", + "event", + "timer", + "action", + "recipient", + "statistical-dataset" + ], + "type": "string" + }, + "LocalId": { + "description": "A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.", + "pattern": "^[a-z][a-z0-9_-]{0,63}$", + "type": "string" + }, + "ReviewedChangeCover": { + "additionalProperties": false, + "properties": { + "code": { + "$ref": "#/$defs/CompiledRegistryChangeCode" + }, + "target": { + "$ref": "#/$defs/CompiledRegistryChangeTarget" + } + }, + "required": [ + "code", + "target" + ], + "type": "object" + }, + "ReviewedFieldEncryptionHistory": { + "description": "What the reviewed plan does with the plaintext history that exists before\na field-encryption flip activates. `EraseAndRebaseline` destroys the full\nper-record history after activation through the operator lifecycle;\n`RetainPlaintextHistory` keeps serving pre-flip revisions as they were\nwritten, scoped by the flip boundary.", + "enum": [ + "erase-and-rebaseline", + "retain-plaintext-history" + ], + "type": "string" + }, + "ReviewedMigrationAssertionDescriptor": { + "additionalProperties": false, + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "sqlPath": { + "type": "string" + } + }, + "required": [ + "id", + "sqlPath" + ], + "type": "object" + }, + "ReviewedMigrationChangeClass": { + "description": "The descriptor's schema vocabulary mirrors `descriptor_problems`, while\ncompiled package changes retain their broader internal classification.", + "enum": [ + "data-backfill-required", + "access-or-disclosure-change", + "destructive-or-irreversible" + ], + "type": "string" + }, + "ReviewedMigrationObject": { + "additionalProperties": false, + "properties": { + "kind": { + "$ref": "#/$defs/ReviewedMigrationObjectKind" + }, + "member": { + "description": "The document member `member`.", + "type": "string" + }, + "physicalName": { + "type": "string" + }, + "recordType": { + "description": "The document member `recordType`.", + "type": "string" + }, + "schema": { + "type": "string" + }, + "table": { + "type": "string" + } + }, + "required": [ + "schema", + "table", + "recordType", + "kind", + "physicalName" + ], + "type": "object" + }, + "ReviewedMigrationObjectKind": { + "enum": [ + "record-type", + "field", + "constraint", + "index" + ], + "type": "string" + }, + "ReviewedMigrationRecovery": { + "description": "How an interrupted activation of the reviewed plan is recovered.\n`bregctl plan --format json` prints the same word.", + "enum": [ + "exact-target-resume" + ], + "type": "string" + }, + "ReviewedMigrationStepDescriptor": { + "description": "One reviewed step, tagged by `type` (CFG-ID-7). Rust field names keep\ntheir engine spelling; each serde rename names the document member.", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "affectedRows": { + "$ref": "#/$defs/AffectedRowBounds" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "objects": { + "items": { + "$ref": "#/$defs/ReviewedMigrationObject" + }, + "type": "array" + }, + "sqlPath": { + "type": "string" + }, + "type": { + "const": "transactional-sql", + "type": "string" + } + }, + "required": [ + "type", + "id", + "sqlPath", + "objects" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "chunkSize": { + "format": "uint32", + "maximum": 1000, + "minimum": 1, + "type": "integer" + }, + "cursor": { + "$ref": "#/$defs/ChunkCursorProtocol" + }, + "exactAffectedRows": { + "type": "boolean" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "lockTimeoutMilliseconds": { + "description": "The document member `lockTimeoutMilliseconds`.", + "format": "uint64", + "maximum": 300000, + "minimum": 1, + "type": "integer" + }, + "maximumTotalRows": { + "description": "The document member `maximumTotalRows`.", + "format": "uint64", + "maximum": 100000000, + "minimum": 1, + "type": "integer" + }, + "objects": { + "items": { + "$ref": "#/$defs/ReviewedMigrationObject" + }, + "type": "array" + }, + "recordType": { + "description": "The document member `recordType`.", + "type": "string" + }, + "sqlPath": { + "type": "string" + }, + "statementTimeoutMilliseconds": { + "description": "The document member `statementTimeoutMilliseconds`.", + "format": "uint64", + "maximum": 3600000, + "minimum": 1, + "type": "integer" + }, + "type": { + "const": "chunked-backfill", + "type": "string" + } + }, + "required": [ + "type", + "id", + "recordType", + "sqlPath", + "objects", + "cursor", + "chunkSize", + "maximumTotalRows", + "lockTimeoutMilliseconds", + "statementTimeoutMilliseconds", + "exactAffectedRows" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "The engine-executed field-encryption backfill: it seals the plaintext\ncolumn of every covered field into envelopes and blind indexes, chunk\nby chunk, with the journal and cursor effects each chunk commits. It\ncarries no authored SQL; its bound statement content is the canonical\nJSON of this descriptor step, so the ledger checksum pins it without a\nSQL artifact. A step whose objects name only blind-index columns is\ninstead the re-index of a changed normalization list: it re-derives\neach digest from the stored envelope and touches nothing else.", + "properties": { + "chunkSize": { + "format": "uint32", + "maximum": 1000, + "minimum": 1, + "type": "integer" + }, + "cursor": { + "$ref": "#/$defs/ChunkCursorProtocol" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "lockTimeoutMilliseconds": { + "description": "The document member `lockTimeoutMilliseconds`.", + "format": "uint64", + "maximum": 300000, + "minimum": 1, + "type": "integer" + }, + "maximumTotalRows": { + "description": "The document member `maximumTotalRows`.", + "format": "uint64", + "maximum": 100000000, + "minimum": 1, + "type": "integer" + }, + "objects": { + "items": { + "$ref": "#/$defs/ReviewedMigrationObject" + }, + "type": "array" + }, + "recordType": { + "description": "The document member `recordType`.", + "type": "string" + }, + "statementTimeoutMilliseconds": { + "description": "The document member `statementTimeoutMilliseconds`.", + "format": "uint64", + "maximum": 3600000, + "minimum": 1, + "type": "integer" + }, + "type": { + "const": "field-encryption-backfill", + "type": "string" + } + }, + "required": [ + "type", + "id", + "recordType", + "objects", + "cursor", + "chunkSize", + "maximumTotalRows", + "lockTimeoutMilliseconds", + "statementTimeoutMilliseconds" + ], + "type": "object" + } + ] + } + }, + "$id": "https://id.registrystack.org/schemas/breg/migration-descriptor/migration-descriptor.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "description": "A reviewed migration's `descriptor.json`. Rust field names keep their\nengine spelling; each serde rename names the document member.", + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/breg/migration-descriptor/v1alpha1", + "description": "The format and version this file is written in.", + "type": "string" + }, + "backupBindingPath": { + "type": "string" + }, + "changeClass": { + "$ref": "#/$defs/ReviewedMigrationChangeClass" + }, + "covers": { + "items": { + "$ref": "#/$defs/ReviewedChangeCover" + }, + "type": "array" + }, + "history": { + "$ref": "#/$defs/ReviewedFieldEncryptionHistory", + "description": "The reviewed choice for pre-flip plaintext history. Required exactly\nwhen a cover turns field encryption on; carried with no default so a\nmissing or silently assumed choice can never reach a plan." + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "kind": { + "const": "BRegMigrationDescriptor", + "description": "The kind of document this file is.", + "type": "string" + }, + "lockTimeoutMilliseconds": { + "description": "The document member `lockTimeoutMilliseconds`.", + "format": "uint64", + "maximum": 300000, + "minimum": 1, + "type": "integer" + }, + "postAssertions": { + "items": { + "$ref": "#/$defs/ReviewedMigrationAssertionDescriptor" + }, + "type": "array" + }, + "preAssertions": { + "items": { + "$ref": "#/$defs/ReviewedMigrationAssertionDescriptor" + }, + "type": "array" + }, + "recovery": { + "$ref": "#/$defs/ReviewedMigrationRecovery" + }, + "rehearsalReceiptPath": { + "type": "string" + }, + "statementTimeoutMilliseconds": { + "description": "The document member `statementTimeoutMilliseconds`.", + "format": "uint64", + "maximum": 3600000, + "minimum": 1, + "type": "integer" + }, + "steps": { + "items": { + "$ref": "#/$defs/ReviewedMigrationStepDescriptor" + }, + "type": "array" + } + }, + "required": [ + "apiVersion", + "kind", + "id", + "changeClass", + "covers", + "recovery", + "lockTimeoutMilliseconds", + "statementTimeoutMilliseconds", + "steps", + "preAssertions", + "postAssertions", + "rehearsalReceiptPath" + ], + "title": "Base Registry Engine reviewed migration descriptor", + "type": "object" +} diff --git a/src/artifacts/sha256/a8d908e534dffcbeee5b1e3352007a4205e0a4614c64a24fd22130f59f0ff264.json b/src/artifacts/sha256/a8d908e534dffcbeee5b1e3352007a4205e0a4614c64a24fd22130f59f0ff264.json new file mode 100644 index 000000000..677c71e35 --- /dev/null +++ b/src/artifacts/sha256/a8d908e534dffcbeee5b1e3352007a4205e0a4614c64a24fd22130f59f0ff264.json @@ -0,0 +1,2641 @@ +{ + "$defs": { + "AggregationStrategy": { + "description": "An aggregation strategy, compiled in and named after Camel's built-ins,\nplus two JSON additions marked as such in\n`products/adapter/CONCEPT.md` section 8.6. Tagged by `type` on the\nwire; every variant is a struct variant, the shape\n`registry-platform-yaml`'s `tagged_union!` reads.", + "oneOf": [ + { + "additionalProperties": false, + "description": "Keep the newest exchange: the default for `enrich`, which replaces\nthe body with the resource reply.", + "properties": { + "type": { + "const": "use-latest", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Keep the original exchange: the default for `split`. With\n`propagateException` false, the split's item failures are\nswallowed and the original message returns\n(manual/split-eip.html, `UseOriginalAggregationStrategy`).", + "properties": { + "propagateException": { + "description": "Whether an item failure is raised after the split completes;\nCamel's default is true.", + "type": "boolean" + }, + "type": { + "const": "use-original", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Concatenate the split results into one list, Camel's `groupedBody`.", + "properties": { + "type": { + "const": "grouped-body", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Append one array's elements into another, refusing a duplicate\n`uniqueBy` value with the `aggregation.duplicate` class.", + "properties": { + "from": { + "description": "The array property the elements are appended into.", + "type": "string" + }, + "into": { + "description": "The message body member the array lands in.", + "type": "string" + }, + "properties": { + "additionalProperties": { + "type": "string" + }, + "description": "Property names carried out of each reply, each naming a\nsingular `jsonpath` on the reply body; an absent selection\nremoves the property (section 8.11.7).", + "type": "object" + }, + "type": { + "const": "json-array-append", + "type": "string" + }, + "uniqueBy": { + "description": "Member whose value must stay unique across appended elements.", + "type": "string" + } + }, + "required": [ + "from", + "into", + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Merge one JSON object into another. No duplicate refusal.", + "properties": { + "from": { + "description": "The object property merged into the body.", + "type": "string" + }, + "into": { + "description": "The message body member the object lands in.", + "type": "string" + }, + "properties": { + "additionalProperties": { + "type": "string" + }, + "description": "Property names carried out of each reply, each naming a\nsingular `jsonpath` on the reply body; an absent selection\nremoves the property (section 8.11.7).", + "type": "object" + }, + "type": { + "const": "json-merge", + "type": "string" + } + }, + "required": [ + "from", + "into", + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "A custom strategy: a Rhai entrypoint over the old and new bodies,\nnamed `oldExchange` and `newExchange` after Camel's own\n`AggregationStrategy.aggregate`.", + "properties": { + "expression": { + "$ref": "#/$defs/RhaiExpression", + "description": "The script file and entrypoint, resolved against the pack's\nscript inventory." + }, + "type": { + "const": "rhai", + "type": "string" + } + }, + "required": [ + "expression", + "type" + ], + "type": "object" + } + ] + }, + "AsyncAcceptedId": { + "additionalProperties": false, + "description": "One JSONPath selector extracting the bounded source operation id from a\ndeclared 202 response. The closed object deliberately admits no other\nexpression language.", + "properties": { + "jsonpath": { + "type": "string" + } + }, + "required": [ + "jsonpath" + ], + "type": "object" + }, + "AsyncUncertaintyRecovery": { + "additionalProperties": false, + "description": "A source-native lookup that can prove the disposition of a host-supplied\ncorrelation id after the initial non-safe send became uncertain.", + "properties": { + "requestHeader": { + "$ref": "#/$defs/ExternalId", + "description": "The one reviewed source-owned request header carrying the id." + }, + "statusRoute": { + "$ref": "#/$defs/ExternalId", + "description": "The safe internal route resolving that correlation id." + } + }, + "required": [ + "requestHeader", + "statusRoute" + ], + "type": "object" + }, + "Capabilities": { + "additionalProperties": false, + "description": "The engine capabilities a pack requires: the components, languages, and\nEIPs its routes use. The ctl refuses a pack the binary cannot run\n(`products/adapter/CONCEPT.md` section 6).", + "properties": { + "components": { + "default": [], + "description": "The components the pack's routes reach.", + "items": { + "$ref": "#/$defs/ComponentKind" + }, + "type": "array", + "uniqueItems": true + }, + "eips": { + "default": [], + "description": "The EIPs the pack's routes use.", + "items": { + "$ref": "#/$defs/Eip" + }, + "type": "array", + "uniqueItems": true + }, + "languages": { + "default": [], + "description": "The expression languages the pack's routes use.", + "items": { + "$ref": "#/$defs/Language" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "ChoiceStep": { + "additionalProperties": false, + "description": "A `choice` step: first matching predicate wins, as Camel's Content-Based\nRouter.", + "properties": { + "otherwise": { + "$ref": "#/$defs/Otherwise", + "description": "The fallback clause." + }, + "when": { + "description": "The clauses, in declaration order.", + "items": { + "$ref": "#/$defs/When" + }, + "type": "array" + } + }, + "required": [ + "when" + ], + "type": "object" + }, + "CircuitBreakerStep": { + "additionalProperties": false, + "description": "A `circuitBreaker` step: resilience4j semantics and defaults\n(`products/adapter/CONCEPT.md` section 8.7), per EIP node,\nprocess-local. Divergence: a rejected call always raises\n`breaker.open`, and `onFallback` runs on failure and on rejection.", + "properties": { + "automaticTransitionFromOpenToHalfOpenEnabled": { + "description": "Automatic open-to-half-open transition (default false).", + "type": "boolean" + }, + "failureRateThreshold": { + "description": "Failure-rate percentage that opens the breaker (resilience4j\ndefault 50).", + "format": "uint32", + "maximum": 100, + "minimum": 1, + "type": "integer" + }, + "ignoreException": { + "description": "Closed classes that count as neither success nor failure. This filter\ntakes precedence over `recordException`, as resilience4j specifies.", + "items": { + "$ref": "#/$defs/ErrorClass" + }, + "maxItems": 37, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "maximumHalfOpenCalls": { + "description": "Permitted half-open calls (default 10).", + "format": "uint32", + "maximum": 4294967295, + "minimum": 1, + "type": "integer" + }, + "minimumNumberOfCalls": { + "description": "Calls recorded before the breaker judges (default 100).", + "format": "uint32", + "maximum": 4294967295, + "minimum": 1, + "type": "integer" + }, + "onFallback": { + "$ref": "#/$defs/OnFallback", + "description": "The fallback, run on a recorded failure and on rejection; its output\nis validated like any route output." + }, + "openStateWaitSeconds": { + "description": "Seconds the breaker stays open (resilience4j\n`waitDurationInOpenState`, default 60).", + "format": "uint32", + "maximum": 4294967295, + "minimum": 1, + "type": "integer" + }, + "recordException": { + "description": "Closed classes that count as breaker failures. When omitted, every\ncatchable failure counts. A named parent covers its descendants, as\nCamel's Java exception predicate covers inheriting exceptions.", + "items": { + "$ref": "#/$defs/ErrorClass" + }, + "maxItems": 37, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "slidingWindowCalls": { + "description": "The count-based window size in calls (default 100); the window type\nis fixed count-based and not configurable.", + "format": "uint32", + "maximum": 4294967295, + "minimum": 1, + "type": "integer" + }, + "slowCallDurationThresholdSeconds": { + "description": "Seconds over which a call counts as slow (default 60).", + "format": "uint32", + "maximum": 4294967295, + "minimum": 1, + "type": "integer" + }, + "slowCallRateThreshold": { + "description": "Slow-call-rate percentage that opens the breaker (default 100).", + "format": "uint32", + "maximum": 100, + "minimum": 1, + "type": "integer" + }, + "steps": { + "description": "The guarded steps.", + "items": { + "$ref": "#/$defs/Step" + }, + "type": "array" + } + }, + "type": "object" + }, + "CodeMap": { + "additionalProperties": false, + "description": "One code map: an explicit conversion table, the port of Camel's type\nconverter (`products/adapter/CONCEPT.md` sections 8.6 and 8.10). No\nconverter chains; a key with no entry raises `conversion.unmapped`.\nThe member stays small enough for CFG-YAML-6 so its content can move to\na digest-pinned data file without a format change.", + "properties": { + "entries": { + "additionalProperties": true, + "description": "The conversion entries; each key is the upstream's own code value,\nthe wire name the source system documents (CFG-ID-2).", + "propertyNames": { + "$ref": "#/$defs/ExternalId" + }, + "type": "object" + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The map identifier." + } + }, + "required": [ + "id", + "entries" + ], + "type": "object" + }, + "ComponentKind": { + "description": "A component kind, the ported subset of Camel's component library\n(`products/adapter/CONCEPT.md` sections 8.8 and 17.2). `rest` is the\nfacade consumer; `direct` calls routes in process; `http`, `graphql`,\n`postgres` and `sqlite-extract` are read-only producers; `file`, `rabbitmq`,\nand `sftp` are job-only sources a facade route may never reach (section\n17.1).", + "enum": [ + "direct", + "file", + "graphql", + "http", + "postgres", + "rabbitmq", + "rest", + "sftp", + "sqlite-extract" + ], + "type": "string" + }, + "ConvertStep": { + "additionalProperties": false, + "description": "One conversion step: `convertBodyTo`, `convertHeaderTo`, and the\n`convertPropertyTo` addition (`products/adapter/CONCEPT.md`\nsection 8.6). Camel's `charset` option is not ported, and `type`\nnames a code map, never a Java type.", + "properties": { + "mandatory": { + "description": "Whether a miss fails the exchange; Camel's default true.", + "type": "boolean" + }, + "name": { + "description": "The header or property name the named forms convert; absent on\n`convertBodyTo`.", + "type": "string" + }, + "toName": { + "description": "The name the converted value lands under, beside the original;\nmeaningful only with `name`.", + "type": "string" + }, + "type": { + "description": "The conversion source, spelled `codeMap:` for a code map the\npack declares.", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + "CsvDecoder": { + "additionalProperties": false, + "description": "The CSV decoder options, the port of Camel's `CsvDataFormat` at\ncamel-4.23.0 restricted to a bounded row decoder\n(`products/adapter/CONCEPT.md` section 8.10, the CSV row). Every kept\noption cites the Java field it ports, and every default is that\nfield's effective default: the reference `DEFAULT` format's comma\ndelimiter, double quote, no comment marker, header record on, and no\ntrimming. The dropped options and the reason each is dropped are\nrecorded in `products/adapter/scratch/core/port-record.md`. Our rows\nare maps keyed by the header record, so `useMaps` has no false form\nhere; type inference is refused, so a field decodes as the text the\nfile carries.", + "properties": { + "commentMarker": { + "description": "The comment marker; absent, comments are off, the reference\nformat's default. Ports `commentMarker`\n(camel-4.23.0:core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/CsvDataFormat.java#commentMarker);\nthe separate `commentMarkerDisabled` flag is folded into absence.", + "maxLength": 1, + "minLength": 1, + "type": "string" + }, + "delimiter": { + "description": "The field delimiter. Ports `delimiter`\n(camel-4.23.0:core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/CsvDataFormat.java#delimiter,\n\"The default value is , (comma)\"; the component-side field the\nengine reads is a `Character`), typed as one character so the\nreader refuses a multi-character delimiter.", + "maxLength": 1, + "minLength": 1, + "type": "string" + }, + "encoding": { + "$ref": "#/$defs/DecoderEncoding", + "description": "The encoding the bytes are decoded with; UTF-8 only." + }, + "header": { + "description": "Whether the file's first record is the column header the row maps\nare keyed by. Ports `headerDisabled`, complemented: Camel's\ndefault keeps headers enabled, so the default here is true\n(camel-4.23.0:core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/CsvDataFormat.java#headerDisabled).\nThe comma-separated header rename list of Camel's `header` field\nis not ported: renaming columns is mapping work, and the row map\nkeys are the file's own header names.", + "type": "boolean" + }, + "quote": { + "description": "The quote character. Ports `quote`\n(camel-4.23.0:core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/CsvDataFormat.java#quote,\n\"The quote character to use. The default is double-quote\ncharacter.\").", + "maxLength": 1, + "minLength": 1, + "type": "string" + }, + "quoteDisabled": { + "description": "Whether quoting is off. Ports `quoteDisabled`\n(camel-4.23.0:core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/CsvDataFormat.java#quoteDisabled);\nfalse keeps Camel's default quoting on.", + "type": "boolean" + }, + "trim": { + "description": "Whether leading and trailing blanks are trimmed. Ports `trim`\n(camel-4.23.0:core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/CsvDataFormat.java#trim);\nfalse keeps the reference format's default.", + "type": "boolean" + } + }, + "type": "object" + }, + "DecoderEncoding": { + "description": "The character encoding a decoder reads. UTF-8 only: Camel carries a\ncharset per exchange where its CSV data format has no encoding option\nof its own; the bounded decoder pins one encoding instead\n(`products/adapter/CONCEPT.md` section 17.2).", + "oneOf": [ + { + "const": "utf-8", + "description": "UTF-8, the only encoding the decoders read.", + "type": "string" + } + ] + }, + "DefaultErrorHandler": { + "additionalProperties": false, + "description": "Camel's `defaultErrorHandler`: a redelivery policy nested under\n`redeliveryPolicy`, as Camel's YAML DSL writes it\n(`products/adapter/CONCEPT.md` section 8.7; CFG-NAME spelling inside).\n`delayPattern` is not ported. Redelivery is per failing endpoint send,\nas in Camel.", + "properties": { + "redeliveryPolicy": { + "$ref": "#/$defs/RedeliveryOptions", + "description": "The nested redelivery policy; the default carries no redelivery,\nso the error propagates after the first attempt." + }, + "retryWhile": { + "$ref": "#/$defs/Expression", + "description": "Stop redelivering early while this predicate holds (Camel\n`retryWhile`, an option of the default error handler as in\nCamel's `DefaultErrorHandlerDefinition`, not of the redelivery\npolicy; section 8.7). Divergence from Camel: the predicate only\nstops redelivery earlier and `maximumRedeliveries` remains the\nhard cap, where Camel lets `retryWhile` override it, so\n`maximumUpstreamCalls` stays a check-time guarantee. The checks\nrefuse the predicate when the handler's policy carries no\nredeliveries." + } + }, + "type": "object" + }, + "Digest": { + "description": "A SHA-256 digest: `sha256:` followed by 64 lowercase hex digits.", + "pattern": "^sha256:[0-9a-f]{64}$", + "type": "string" + }, + "DoCatch": { + "additionalProperties": false, + "description": "A `doCatch` clause of a `doTry`.", + "properties": { + "exception": { + "description": "The matched classes, unique (CFG-ID-6).", + "items": { + "$ref": "#/$defs/ErrorClass" + }, + "type": "array", + "uniqueItems": true + }, + "onWhen": { + "$ref": "#/$defs/Expression", + "description": "Narrow the clause with a predicate." + }, + "steps": { + "description": "The clause's steps.", + "items": { + "$ref": "#/$defs/Step" + }, + "type": "array" + } + }, + "required": [ + "exception" + ], + "type": "object" + }, + "DoFinally": { + "additionalProperties": false, + "description": "The `doFinally` clause of a `doTry`.", + "properties": { + "steps": { + "description": "The always-run steps.", + "items": { + "$ref": "#/$defs/Step" + }, + "type": "array" + } + }, + "type": "object" + }, + "DoTryStep": { + "additionalProperties": false, + "description": "A `doTry` step, ported as in Camel (`manual/try-catch-finally.html`).", + "properties": { + "doCatch": { + "description": "The catch clauses, in declaration order.", + "items": { + "$ref": "#/$defs/DoCatch" + }, + "type": "array" + }, + "doFinally": { + "$ref": "#/$defs/DoFinally", + "description": "The finally clause." + }, + "steps": { + "description": "The guarded steps.", + "items": { + "$ref": "#/$defs/Step" + }, + "type": "array" + } + }, + "type": "object" + }, + "Eip": { + "description": "An EIP a pack may require of the engine, named after the step union in\n`crate::route` (`products/adapter/CONCEPT.md` section 8.6).", + "enum": [ + "choice", + "circuitBreaker", + "convertBodyTo", + "convertHeaderTo", + "convertPropertyTo", + "doTry", + "enrich", + "errorHandler", + "filter", + "idempotentConsumer", + "loop", + "onException", + "pollEnrich", + "removeHeader", + "removeProperty", + "script", + "setBody", + "setHeader", + "setProperty", + "split", + "stop", + "throttle", + "throwException", + "to", + "transform", + "validate" + ], + "type": "string" + }, + "Endpoint": { + "additionalProperties": false, + "description": "One endpoint a route may send to: the component, the authentication\nkind, the declared response headers, the endpoint operations with their\n`idempotentUpstream` claims, and the tested upstream versions\n(`products/adapter/CONCEPT.md` sections 6, 8.8, and 10.2).", + "properties": { + "attemptTimeoutMilliseconds": { + "description": "The longest one attempt to this endpoint may take, in milliseconds.\nEvidence defaults an omission to 30 seconds; facade and job require an\nexplicit value within their ten-second policy. The profile compiler\nowns that policy rather than the shared wire shape.", + "format": "uint64", + "maximum": 18446744073709551615, + "minimum": 1, + "type": "integer" + }, + "authentication": { + "$ref": "#/$defs/EndpointAuthentication", + "description": "The upstream authentication kind, with its non-secret parameters." + }, + "component": { + "$ref": "#/$defs/ComponentKind", + "description": "The producer component: `http`, `graphql`, or the read-only\n`postgres` source; or the job-only `file` and `sftp` sources a\n`pollEnrich` step reads (section 17.1)." + }, + "hostProtocol": { + "$ref": "#/$defs/HostProtocol", + "description": "A host-implemented source protocol selected explicitly by this\nendpoint, with its reviewed, digest-pinned public configuration." + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The endpoint identifier `http:`, `graphql:`, `postgres:`, and the\n`pollEnrich` URIs name." + }, + "keyColumn": { + "$ref": "#/$defs/ExternalId", + "description": "The PostgreSQL result column whose scalar is the source item's\nstable identity. Required for a `postgres` endpoint and absent\nfrom every other component." + }, + "maximumResponseBytes": { + "description": "The largest response body one send to this endpoint may take in, in\nbytes. Required, no default; a value above the platform cap is\nrefused, never shortened. The runtime binding may lower it, never\nraise it. A facade-reachable endpoint stays within the facade\nceiling and a source-route-only endpoint may declare up to the\nplatform cap (`products/adapter/CONCEPT.md` section 8.8); the checks\nrefuse the facade-reachable excess\nunder `adapter.job.endpoint-response-bound`.", + "format": "uint64", + "maximum": 16777216, + "minimum": 1, + "type": "integer" + }, + "operationName": { + "description": "The GraphQL operation name.", + "type": "string" + }, + "operations": { + "description": "The operations this endpoint serves, each with its\n`idempotentUpstream` claim.", + "items": { + "$ref": "#/$defs/EndpointOperation" + }, + "type": "array" + }, + "parameterOrder": { + "description": "The reviewed names bound to the PostgreSQL query's contiguous\n`$1`-onward positions, in order. Omitted only when the query has\nno parameters, and absent from every non-PostgreSQL component.", + "items": { + "$ref": "#/$defs/ExternalId" + }, + "type": "array", + "uniqueItems": true + }, + "queryFile": { + "description": "The GraphQL query file, from the pack's query-file inventory.\nRequired for a `graphql` endpoint.", + "type": "string" + }, + "requestHeaders": { + "description": "The request headers the engine sends upstream on every send to\nthis endpoint, Camel's `HeaderFilterStrategy` as an allowlist,\nunique (CFG-ID-6). Never allowlistable: the reserved header names\nof `products/adapter/CONCEPT.md` section 8.11.4 and this\nendpoint's own api-key header name.", + "items": { + "$ref": "#/$defs/ExternalId" + }, + "type": "array", + "uniqueItems": true + }, + "responseHeaders": { + "description": "The response headers the engine copies onto the exchange, Camel's\n`HeaderFilterStrategy` as an allowlist, unique (CFG-ID-6).", + "items": { + "$ref": "#/$defs/ExternalId" + }, + "type": "array", + "uniqueItems": true + }, + "sqliteExtract": { + "$ref": "#/$defs/SqliteExtractDeclaration", + "description": "The reviewed statement and bounds of a SQLite extract producer.\nFilesystem locations are supplied by the host's logical extract binding." + }, + "testedVersions": { + "description": "The upstream versions this pack was tested against.", + "items": { + "type": "string" + }, + "type": "array" + }, + "variables": { + "$ref": "#/$defs/Expression", + "description": "The GraphQL variables expression." + } + }, + "required": [ + "id", + "component", + "authentication", + "maximumResponseBytes" + ], + "type": "object" + }, + "EndpointAsyncCompletion": { + "additionalProperties": false, + "description": "The source-native acceptance and status proof contract for one endpoint\noperation. Caller paths, envelopes, waiting policy, and custody remain\noutside the pack.", + "properties": { + "acceptedId": { + "$ref": "#/$defs/AsyncAcceptedId" + }, + "statusRoute": { + "$ref": "#/$defs/ExternalId" + }, + "uncertaintyRecovery": { + "$ref": "#/$defs/AsyncUncertaintyRecovery" + } + }, + "required": [ + "acceptedId", + "statusRoute" + ], + "type": "object" + }, + "EndpointAuthentication": { + "description": "The authentication kind a pack endpoint declares\n(`products/adapter/CONCEPT.md` section 10.2): the kind tag itself, plus\nonly the API-intrinsic parameters (`headerName` for `static-api-key`,\n`scheme` for `static-authorization`). Every credential value lives in\nthe runtime config, in [`RuntimeCredential`].", + "oneOf": [ + { + "additionalProperties": false, + "description": "Nothing is sent. The checks admit it only for numeric loopback, an\nendpoint with an mTLS client identity, or an explicitly acknowledged\ncredential-free HTTPS source.", + "properties": { + "type": { + "const": "none", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "`Authorization: Basic` from the runtime's `usernameRef` and\n`passwordRef`.", + "properties": { + "type": { + "const": "basic", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "`Authorization: ` from the runtime's `tokenRef`;\n`scheme` defaults to `Bearer`, Evidence's spelling.", + "properties": { + "scheme": { + "description": "The RFC 9110 scheme the resolved token is presented under.", + "type": "string" + }, + "type": { + "const": "static-authorization", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "One declared header from the runtime's `valueRef`; reserved header\nnames are refused.", + "properties": { + "headerName": { + "description": "The header the key travels under.", + "type": "string" + }, + "type": { + "const": "static-api-key", + "type": "string" + } + }, + "required": [ + "headerName", + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "The RFC 6749 client-credentials grant with a shared secret; the\nruntime binds `tokenEndpoint`, `clientIdRef`, and `clientSecretRef`.", + "properties": { + "type": { + "const": "oauth2-client-credentials", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "The RFC 7523 private-key-jwt grant; the runtime binds\n`tokenEndpoint`, `clientIdRef`, and `clientAssertionKeyRef`. The\nsigned assertion always travels in the form body, as in Evidence,\nso this kind carries no placement parameter.", + "properties": { + "type": { + "const": "oauth2-private-key-jwt", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + } + ] + }, + "EndpointOperation": { + "additionalProperties": false, + "description": "One operation of an endpoint, with the reviewed write claim\n(`products/adapter/CONCEPT.md` sections 8.7 and 9): redelivery over a\nnon-safe send is admitted only when the endpoint operation declares\n`idempotentUpstream: true`.", + "properties": { + "asyncCompletion": { + "$ref": "#/$defs/EndpointAsyncCompletion", + "description": "The source-native asynchronous acceptance and status proof contract." + }, + "graphql": { + "$ref": "#/$defs/GraphQlOperationKind", + "description": "The GraphQL operation kind the pinned query file declares, on a\n`graphql` endpoint; a send naming this operation is safe only for\na query (`products/adapter/CONCEPT.md` section 8.8)." + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The operation identifier a `to` step's `operation` member names." + }, + "idempotentUpstream": { + "description": "The reviewed claim that repeating this operation's send is safe,\nfor example an upstream create with client-supplied UIDs.", + "type": "boolean" + }, + "safeUpstream": { + "description": "The reviewed claim that the upstream serves this operation's POST\nas its safe search form, as FHIR servers serve `POST _search`\n(`products/adapter/CONCEPT.md` section 8.8): a route of a read\noperation may then reach the send. The claim names POST only; a\nPUT, PATCH, or graphql mutation send never reads it.", + "type": "boolean" + } + }, + "required": [ + "id" + ], + "type": "object" + }, + "EnrichStep": { + "additionalProperties": false, + "description": "An `enrich` step: call a static endpoint and merge the reply. Static URI\nonly; absent a strategy, the reply replaces the body (Camel's default).", + "properties": { + "aggregateOnException": { + "description": "Whether to aggregate the reply of a failed call (Camel default\nfalse; failure propagates to the error handler).", + "type": "boolean" + }, + "aggregationStrategy": { + "$ref": "#/$defs/AggregationStrategy", + "description": "The aggregation strategy." + }, + "parameters": { + "$ref": "#/$defs/ToParameters", + "description": "The request method, query, and operation, as a `to` send carries\nthem; the method's safety carries the write-safety rules of\n`crate::checks`." + }, + "uri": { + "$ref": "#/$defs/SendUri", + "description": "The static destination." + } + }, + "required": [ + "uri" + ], + "type": "object" + }, + "ErrorClass": { + "description": "A closed error class, the port of Camel's Java exception hierarchy (`products/adapter/CONCEPT.md` section 8.7).", + "enum": [ + "aggregation.duplicate", + "breaker.open", + "budget.exhausted", + "conversion.unmapped", + "credential.rejected", + "disclosure.violation", + "egress.refused", + "loop.maximum-iterations-reached", + "script", + "script.budget-exceeded", + "throttle.rejected", + "upstream", + "upstream.connection", + "upstream.http", + "upstream.malformed", + "upstream.redirect", + "upstream.timeout", + "upstream.too-large", + "validation", + "outcome", + "outcome.conflict", + "outcome.invalid-request", + "outcome.not-found", + "outcome.rejected", + "facade", + "facade.conflict", + "facade.forbidden", + "facade.idempotency-mismatch", + "facade.invalid-cursor", + "facade.invalid-field", + "facade.invalid-request", + "facade.method-not-allowed", + "facade.not-acceptable", + "facade.not-found", + "facade.payload-too-large", + "facade.unauthenticated", + "facade.unsupported-media-type" + ], + "type": "string" + }, + "ErrorHandlerStep": { + "additionalProperties": false, + "description": "The route `errorHandler` step: `defaultErrorHandler` (no redelivery,\nthe error propagates) or `noErrorHandler`. Exactly one member is set.", + "properties": { + "defaultErrorHandler": { + "$ref": "#/$defs/DefaultErrorHandler", + "description": "The default error handler with its redelivery policy." + }, + "noErrorHandler": { + "$ref": "#/$defs/NoErrorHandler", + "description": "The no-op error handler: failures propagate untouched." + } + }, + "type": "object" + }, + "EvidenceAcquisitionPosture": { + "description": "The closed input and final-fact schemas of an Evidence source route.\nBoth artifacts are supplied with the pack and digest-pinned, so a host\ncan compile the route without filesystem or network access.", + "enum": [ + "source-derived", + "field-projected", + "record-transformed" + ], + "type": "string" + }, + "EvidenceRouteContract": { + "additionalProperties": false, + "properties": { + "acquisitionPosture": { + "$ref": "#/$defs/EvidenceAcquisitionPosture", + "description": "The least-invasive acquisition posture the reviewed route satisfies.\nOmission is conservative for packs authored before this declaration." + }, + "factsSchema": { + "$ref": "#/$defs/ScriptReference", + "description": "The JSON Schema for the route's final facts value." + }, + "inputsSchema": { + "$ref": "#/$defs/ScriptReference", + "description": "The JSON Schema for the reviewed acquisition inputs." + } + }, + "required": [ + "inputsSchema", + "factsSchema" + ], + "type": "object" + }, + "Expression": { + "description": "An expression in one of the ported languages, externally tagged by\nlanguage name as in Camel's YAML DSL (`products/adapter/CONCEPT.md`\nsection 8.5). `rhai` replaces Simple, Groovy, JavaScript, and `bean`.\nA predicate is an expression whose result is a boolean; the runtime\nnever coerces.\n\nRound-trip forms are covered beside the steps that carry them, in\n`crate::route`.", + "oneOf": [ + { + "additionalProperties": false, + "description": "A literal JSON value, Camel's `constant` language.", + "properties": { + "constant": true + }, + "required": [ + "constant" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "A message header by name, Camel's `header` language.", + "properties": { + "header": { + "type": "string" + } + }, + "required": [ + "header" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "An exchange property by name, Camel's `exchangeProperty` language.", + "properties": { + "exchangeProperty": { + "type": "string" + } + }, + "required": [ + "exchangeProperty" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "An inline RFC 9535 JSONPath selector over the message body, as\nCamel's `jsonpath` language but on the IETF standard.", + "properties": { + "jsonpath": { + "type": "string" + } + }, + "required": [ + "jsonpath" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "A digest-pinned Rhai script and entrypoint.", + "properties": { + "rhai": { + "$ref": "#/$defs/RhaiExpression" + } + }, + "required": [ + "rhai" + ], + "type": "object" + } + ] + }, + "ExternalId": { + "description": "An identifier another system issues, written exactly as its issuer gives it.", + "maxLength": 512, + "minLength": 1, + "pattern": "^[^\\u0000-\\u001F\\u007F-\\u009F]+$", + "type": "string" + }, + "FilterStep": { + "additionalProperties": false, + "description": "A `filter` step: an inline predicate beside the guarded steps, as\nCamel's Message Filter writes it. `CamelFilterMatched` records the\noutcome; the route continues after the filter either way. Exactly one\nlanguage key must be present; `crate::checks` refuses zero or several\nunder an adapter code, and the reader refuses any unknown key\n(`config.unknown-key`, CFG-SCHEMA-8).", + "properties": { + "constant": { + "description": "The `constant` language member." + }, + "exchangeProperty": { + "description": "The `exchangeProperty` language member.", + "type": "string" + }, + "header": { + "description": "The `header` language member.", + "type": "string" + }, + "jsonpath": { + "description": "The `jsonpath` language member.", + "type": "string" + }, + "rhai": { + "$ref": "#/$defs/RhaiExpression", + "description": "The `rhai` language member." + }, + "statusPropertyName": { + "description": "The exchange property that records the boolean outcome, absent by\ndefault: Camel 4's `statusPropertyName`. Camel 4 sets no fixed\nfilter property, and neither does the port\n(`products/adapter/CONCEPT.md` section 8.6).", + "type": "string" + }, + "steps": { + "description": "The steps that run only on match.", + "items": { + "$ref": "#/$defs/Step" + }, + "type": "array" + } + }, + "type": "object" + }, + "GraphQlOperationKind": { + "description": "The GraphQL operation kind an endpoint operation declares, as the\npinned query file writes it (`products/adapter/CONCEPT.md` section\n8.8).", + "oneOf": [ + { + "const": "query", + "description": "A read; the only kind that keeps a graphql send safe.", + "type": "string" + }, + { + "const": "mutation", + "description": "A write; non-safe under every write-safety rule.", + "type": "string" + } + ] + }, + "HostProtocol": { + "additionalProperties": false, + "description": "One closed host protocol selection. The engine recognizes only protocols\na host registry installs; an unknown id fails closed at compilation.", + "properties": { + "config": { + "$ref": "#/$defs/ScriptReference", + "description": "The reviewed public protocol configuration." + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The protocol implementation id in the host registry." + } + }, + "required": [ + "id", + "config" + ], + "type": "object" + }, + "HttpMethod": { + "description": "An HTTP method a facade operation or an upstream send may declare. The\nmethod decides send safety: `GET` is safe, the write methods are not\n(`products/adapter/CONCEPT.md` sections 8.7 and 9).", + "enum": [ + "GET", + "POST", + "PUT", + "PATCH" + ], + "type": "string" + }, + "IdempotentConsumerStep": { + "additionalProperties": false, + "description": "An `idempotentConsumer` step (`products/adapter/CONCEPT.md` section 9).\nThe key is namespaced by caller identity and concrete operation and\nbound to the request digest; a duplicate replays the recorded facade\nresponse; `skipDuplicate` is not ported.", + "properties": { + "completionEager": { + "description": "Release the key on completion (Camel default false).", + "type": "boolean" + }, + "eager": { + "description": "Add the key before processing (Camel default true).", + "type": "boolean" + }, + "expression": { + "$ref": "#/$defs/Expression", + "description": "The key expression, conventionally the caller's `Idempotency-Key`\nheader." + }, + "removeOnFailure": { + "description": "Remove the key on failure before any upstream effect (Camel default\ntrue).", + "type": "boolean" + }, + "steps": { + "description": "The guarded steps.", + "items": { + "$ref": "#/$defs/Step" + }, + "type": "array" + } + }, + "required": [ + "expression" + ], + "type": "object" + }, + "Language": { + "description": "An expression language a pack may require of the engine\n(`products/adapter/CONCEPT.md` section 8.5).", + "enum": [ + "constant", + "header", + "exchangeProperty", + "jsonpath", + "rhai" + ], + "type": "string" + }, + "LocalId": { + "description": "A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.", + "pattern": "^[a-z][a-z0-9_-]{0,63}$", + "type": "string" + }, + "LoopStep": { + "additionalProperties": false, + "description": "A `loop` step (`products/adapter/CONCEPT.md` sections 8.6 and 5.5).\nCamel's shape with our bound: the count or predicate is the same flat\nsingle-language-key form as `filter` and `when`, and `doWhile: true`\nmakes the expression a predicate loop (Camel's boolean flag, default\nfalse). `maximumIterations` stays mandatory, a declared divergence:\nthe check refuses its absence and the runtime enforces it again.\nReaching the bound with a dynamic count above it, or a predicate\nstill holding, raises the catchable `loop.maximum-iterations-reached`\nclass, never a silent stop. Pagination is `loop` with `doWhile` over\nthe upstream cursor.", + "properties": { + "constant": { + "description": "The `constant` language member: the iteration count, or with\n`doWhile`, the predicate's constant form." + }, + "copy": { + "description": "Whether each iteration works on a copy of the message (Camel\ndefault false).", + "type": "boolean" + }, + "doWhile": { + "description": "Camel's `doWhile` flag: true makes the expression a predicate\nevaluated after each iteration; false makes it a count.", + "type": "boolean" + }, + "exchangeProperty": { + "description": "The `exchangeProperty` language member.", + "type": "string" + }, + "header": { + "description": "The `header` language member.", + "type": "string" + }, + "jsonpath": { + "description": "The `jsonpath` language member.", + "type": "string" + }, + "maximumIterations": { + "description": "The mandatory iteration bound; the check refuses its absence and\nthe runtime enforces it again.", + "format": "uint64", + "maximum": 100000, + "minimum": 1, + "type": "integer" + }, + "rhai": { + "$ref": "#/$defs/RhaiExpression", + "description": "The `rhai` language member." + }, + "steps": { + "description": "The repeated steps.", + "items": { + "$ref": "#/$defs/Step" + }, + "type": "array" + } + }, + "type": "object" + }, + "NoErrorHandler": { + "additionalProperties": false, + "description": "Camel's `noErrorHandler`. The empty mapping `{}` is the whole variant.", + "type": "object" + }, + "OnExceptionStep": { + "additionalProperties": false, + "description": "An `onException` clause over the closed error-class hierarchy\n(`products/adapter/CONCEPT.md` section 8.7). No clause may name an\nuncatchable class; `crate::checks` refuses one that does. Redelivery\nnests under `redeliveryPolicy`, as Camel's exception clause does in\nYAML (`manual/exception-clause.html`, `manual/exception-redelivery.html`).", + "properties": { + "continued": { + "description": "Whether the route resumes after the failure point (Camel\n`continued`).", + "type": "boolean" + }, + "exception": { + "description": "The matched classes, unique (CFG-ID-6).", + "items": { + "$ref": "#/$defs/ErrorClass" + }, + "type": "array", + "uniqueItems": true + }, + "handled": { + "description": "Whether the clause consumes the error (Camel `handled`). True ends\nthe exchange with the clause's result.", + "type": "boolean" + }, + "onWhen": { + "$ref": "#/$defs/Expression", + "description": "Narrow the clause with a predicate (Camel `onWhen`)." + }, + "redeliveryPolicy": { + "$ref": "#/$defs/RedeliveryOptions", + "description": "Redelivery options, as on the error handler, nested under\n`redeliveryPolicy`." + }, + "retryWhile": { + "$ref": "#/$defs/Expression", + "description": "Stop redelivering early while this predicate holds (Camel\n`retryWhile`, an option of the clause as in Camel's\n`OnExceptionDefinition`, not of the redelivery policy; section\n8.7). Divergence from Camel: the predicate only stops redelivery\nearlier and `maximumRedeliveries` remains the hard cap, where\nCamel lets `retryWhile` override it, so `maximumUpstreamCalls`\nstays a check-time guarantee. The redeliveries behind it are the\nclause's own policy, or the route handler's when the clause\ndeclares no policy and produces no output steps. An output-bearing\nclause instead has Camel's clause-local default of zero\nredeliveries. The checks refuse the predicate when its effective\npolicy carries none." + }, + "steps": { + "description": "The clause's steps.", + "items": { + "$ref": "#/$defs/Step" + }, + "type": "array" + } + }, + "required": [ + "exception" + ], + "type": "object" + }, + "OnFallback": { + "additionalProperties": false, + "description": "The `onFallback` of a `circuitBreaker`.", + "properties": { + "steps": { + "description": "The fallback steps.", + "items": { + "$ref": "#/$defs/Step" + }, + "type": "array" + } + }, + "type": "object" + }, + "Otherwise": { + "additionalProperties": false, + "description": "The `otherwise` clause of a `choice`.", + "properties": { + "steps": { + "description": "The steps the clause runs when no `when` matched.", + "items": { + "$ref": "#/$defs/Step" + }, + "type": "array" + } + }, + "type": "object" + }, + "PollDecoder": { + "anyOf": [ + { + "$ref": "#/$defs/CsvDecoder", + "description": "A `csv` declaration with its options; an empty mapping selects csv\nat Camel's defaults." + }, + { + "description": "A bare decoder name.", + "type": "string" + } + ], + "description": "The decoder a `pollEnrich` step selects. A mapping form is a `csv`\ndeclaration with its options, the only decoder that carries options; a\nbare string names one of `csv`, `jsonl`, `rabbitmq-json`, or `raw`. One member carries\nboth forms, so `decoder: csv` and `decoder: {\"delimiter\": \";\"}` read\nthe same way. The node kind chooses the form (CFG-SCHEMA-8), so a\nmisspelt CSV option is reported at its own key with its position." + }, + "PollEnrichStep": { + "additionalProperties": false, + "description": "A `pollEnrich` step, the bounded job-only port of Camel's Poll Enricher\n(`products/adapter/CONCEPT.md` sections 17.1 and 17.2). It reads one\nbounded page from a static `file:`, `rabbitmq:`, or `sftp:` endpoint the pack\ndeclares; no dynamic endpoint expression and no `consumerSendTo` are\nported. Absent a strategy, the page replaces the body, as `enrich`\nreplaces it. `timeoutMilliseconds` is mandatory: the checks refuse its\nabsence under `adapter.job.poll-timeout`, and the reader refuses a\nvalue outside 1 to 10000 (the platform-frozen per-attempt ceiling of\n`products/adapter/CONCEPT.md` section 8.8 holds for every endpoint). The step never appears in a\nfacade-reachable route (`adapter.job.poll-facade-refused`).", + "properties": { + "aggregationStrategy": { + "$ref": "#/$defs/AggregationStrategy", + "description": "The aggregation strategy, Camel's Poll Enricher aggregation;\nabsent, the page replaces the body, like `enrich` with no strategy." + }, + "decoder": { + "$ref": "#/$defs/PollDecoder", + "description": "The decoder the read applies: absent, `raw`, the file bytes' digest\npage; `csv` decodes rows with the options of [`CsvDecoder`], written\neither as the bare name `csv` or as a mapping of its options;\n`jsonl` decodes one bounded JSON value per line. `rabbitmq-json`\ndecodes exactly one bounded broker message and is valid only for a\n`rabbitmq:` source. The checks refuse any other name or a mismatched\nprofile under `adapter.job.decoder-unknown`." + }, + "keyPointer": { + "description": "RFC 6901 selector of the opaque business-key string in a decoded row.\nRequired for CSV and JSONL, forbidden for raw files and broker messages.\nAt most 512 bytes.", + "maxLength": 512, + "type": "string" + }, + "timeoutMilliseconds": { + "description": "The mandatory poll timeout in milliseconds, bounded 1 to 10000.", + "format": "uint64", + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "uri": { + "description": "The static job source URI: `file:`,\n`rabbitmq:`, or `sftp:`, naming a declared pack endpoint of the matching\ncomponent. The authoring checks refuse an unknown endpoint\n(`adapter.job.poll-endpoint-unknown`) and an endpoint whose\ncomponent does not match the scheme\n(`adapter.job.poll-endpoint-kind`).", + "type": "string" + } + }, + "required": [ + "uri" + ], + "type": "object" + }, + "RedeliveryOptions": { + "additionalProperties": false, + "description": "The redelivery option set, shared by the error handler and an\n`onException` clause (`products/adapter/CONCEPT.md` section 8.7; the\nnesting under `redeliveryPolicy` follows Camel's own YAML DSL,\n`manual/exception-clause.html` and `manual/exception-redelivery.html`).\nOption spellings stay ours (CFG-NAME); only the nesting is Camel's.\nOnly the non-default members serialize.", + "properties": { + "backOffMultiplier": { + "description": "The exponential multiplier (default 2); it grows delays, so the\nreader refuses a value below 1 (CFG-QTY-4).", + "format": "double", + "type": "number" + }, + "collisionAvoidanceFactor": { + "description": "The jitter fraction (default 0.15).", + "format": "double", + "type": "number" + }, + "maximumRedeliveries": { + "description": "Redeliveries after the first attempt (default 0; at most 100,\nCFG-QTY-4).", + "format": "uint32", + "maximum": 100, + "minimum": 0, + "type": "integer" + }, + "maximumRetryDelaySeconds": { + "description": "The delay ceiling in seconds (default 60); zero cannot bound a\ndelay.", + "format": "uint32", + "maximum": 4294967295, + "minimum": 1, + "type": "integer" + }, + "retryDelaySeconds": { + "description": "Delay between redeliveries in seconds (default 1); zero cannot\nbound a delay.", + "format": "uint32", + "maximum": 4294967295, + "minimum": 1, + "type": "integer" + }, + "useCollisionAvoidance": { + "description": "Add collision avoidance jitter (default false).", + "type": "boolean" + }, + "useExponentialBackOff": { + "description": "Grow the delay exponentially (default false).", + "type": "boolean" + } + }, + "type": "object" + }, + "ResumeBinding": { + "additionalProperties": false, + "description": "One resume binding of a non-safe send: the source-native identifier a\nlater step needs, read by an RFC 9535 selector and stored typed as an\nidentifier, never as an arbitrary value\n(`products/adapter/CONCEPT.md` section 9).", + "properties": { + "name": { + "$ref": "#/$defs/LocalId", + "description": "The binding name later steps reference." + }, + "path": { + "description": "The RFC 9535 selector that reads the identifier from the reply.", + "type": "string" + } + }, + "required": [ + "name", + "path" + ], + "type": "object" + }, + "RhaiExpression": { + "additionalProperties": false, + "description": "A Rhai expression reference: the digest-pinned file from the pack's\nscript inventory and the precompiled entrypoint to call\n(`products/adapter/CONCEPT.md` sections 5.6 and 8.5). Inline code is\nrefused (CFG-EMBED-1).", + "properties": { + "entrypoint": { + "description": "The precompiled entrypoint the engine calls.", + "type": "string" + }, + "file": { + "description": "The script file path, resolved against the pack's script inventory.", + "type": "string" + } + }, + "required": [ + "file", + "entrypoint" + ], + "type": "object" + }, + "RouteDefinition": { + "additionalProperties": false, + "description": "A route as Camel's YAML DSL writes it: one `from`, `direct:` only, and\nan ordered step list (`products/adapter/CONCEPT.md` section 8.3). Pack\ntemplates carry the same steps without the `from`; the instantiated\nroute's `from` is `direct:`.", + "properties": { + "from": { + "$ref": "#/$defs/RouteFrom", + "description": "The route consumer; `direct:` only." + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The route identifier `direct:` targets and bindings name." + }, + "steps": { + "description": "The ordered steps.", + "items": { + "$ref": "#/$defs/Step" + }, + "type": "array" + } + }, + "required": [ + "id", + "from" + ], + "type": "object" + }, + "RouteFrom": { + "additionalProperties": false, + "description": "The `from` of a route: Camel's route consumer, bounded to `direct:`\n(divergence: the `rest` consumer dispatches to `direct:` routes;\nsection 8.8).", + "properties": { + "uri": { + "$ref": "#/$defs/SendUri", + "description": "A `direct:` URI." + } + }, + "required": [ + "uri" + ], + "type": "object" + }, + "RouteTemplate": { + "additionalProperties": false, + "description": "A route template, Camel's `routeTemplate` without its `from`\n(`products/adapter/CONCEPT.md` section 8.4): the instantiated route's\n`from` is `direct:`, bound by the contract.", + "properties": { + "id": { + "$ref": "#/$defs/LocalId", + "description": "The template identifier `templatedRoutes` reference." + }, + "parameters": { + "description": "The typed parameters the template body references.", + "items": { + "$ref": "#/$defs/TemplateParameter" + }, + "type": "array" + }, + "readSupport": { + "$ref": "#/$defs/SourceReadSupport", + "description": "Source-neutral read semantics every instantiation of this template\npreserves. Public protocol and view names remain project-owned." + }, + "steps": { + "description": "The template body, with `{{name}}` and `{{?name}}` placeholders.", + "items": { + "$ref": "#/$defs/Step" + }, + "type": "array" + }, + "writeSupport": { + "$ref": "#/$defs/SourceWriteSupport", + "description": "Source-neutral direct-write guarantees every instantiation of this\ntemplate preserves. Public protocol and domain schemas remain\nproject-owned." + } + }, + "required": [ + "id" + ], + "type": "object" + }, + "ScriptReference": { + "additionalProperties": false, + "description": "A script seam: code in its own file beside the pack, referenced by a\nrelative path and pinned by digest (CFG-EMBED-1). Scripts never carry\ncredentials and never construct URLs; the `http` component builds every\nrequest from its declared template\n(`products/adapter/CONCEPT.md` section 5.6).", + "properties": { + "digest": { + "$ref": "#/$defs/Digest", + "description": "The `sha256:` digest the file must hash to." + }, + "path": { + "description": "The script file, relative to the pack document.", + "type": "string" + } + }, + "required": [ + "path", + "digest" + ], + "type": "object" + }, + "SendUri": { + "description": "The destination of a `to` or `enrich` send: a `direct:` route, an\n`http:`, `graphql:`, or `postgres:` endpoint declared in the pack\n(`products/adapter/CONCEPT.md` sections 8.3, 8.8, and 17.2). The URI is\nstatic; no `toD` is ported. A `file:` or `sftp:` URI parses so the\nauthoring checks can refuse it under its own code\n(`adapter.job.send-component-refused`): a job source is read through the\n`pollEnrich` step, never through a send.", + "pattern": "^(direct|http|graphql|postgres|file|rabbitmq|sftp|sqlite-extract):.+$", + "type": "string" + }, + "SetHeaderStep": { + "additionalProperties": false, + "description": "A `setHeader` step.", + "properties": { + "name": { + "description": "The header name; bounded and engine-validated.", + "type": "string" + }, + "value": { + "$ref": "#/$defs/Expression", + "description": "The value expression." + } + }, + "required": [ + "name", + "value" + ], + "type": "object" + }, + "SetPropertyStep": { + "additionalProperties": false, + "description": "A `setProperty` step.", + "properties": { + "name": { + "description": "The exchange property name.", + "type": "string" + }, + "value": { + "$ref": "#/$defs/Expression", + "description": "The value expression." + } + }, + "required": [ + "name", + "value" + ], + "type": "object" + }, + "SourceComparison": { + "description": "Closed reusable comparison semantics a source route can implement.", + "enum": [ + "equality" + ], + "type": "string" + }, + "SourceOrderDirection": { + "enum": [ + "ascending", + "descending" + ], + "type": "string" + }, + "SourceOrderTerm": { + "additionalProperties": false, + "description": "One deterministic source order term. Direction is explicit so a project\nand generated contract never infer it from a provider default.", + "properties": { + "direction": { + "$ref": "#/$defs/SourceOrderDirection" + }, + "name": { + "$ref": "#/$defs/ExternalId" + } + }, + "required": [ + "name", + "direction" + ], + "type": "object" + }, + "SourceReadInput": { + "additionalProperties": false, + "description": "One source-native page input and the comparisons the source route\nimplements for it. Names are pack-local, not public field names.", + "properties": { + "comparisons": { + "items": { + "$ref": "#/$defs/SourceComparison" + }, + "type": "array", + "uniqueItems": true + }, + "name": { + "$ref": "#/$defs/ExternalId" + } + }, + "required": [ + "name", + "comparisons" + ], + "type": "object" + }, + "SourceReadSupport": { + "description": "Source-neutral read semantics a pack explicitly promises for one route.\nPublic Consultation capability, selector, Search, schema, and view names\nbelong to the project and never enter this reusable source contract.\nThe host never infers guarantees from a route name or a successfully\ndecoded body.", + "oneOf": [ + { + "additionalProperties": false, + "description": "Exact resolution that returns at most one source item for the complete\nnative input key. A project can map this to Retrieve or Lookup.", + "properties": { + "inputs": { + "items": { + "$ref": "#/$defs/ExternalId" + }, + "type": "array", + "uniqueItems": true + }, + "type": { + "const": "read-one", + "type": "string" + } + }, + "required": [ + "type", + "inputs" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "A bounded page with explicit completion and a deterministic order.\nA project can map supported native inputs to List filters or a named\nSearch without changing this source-owned contract.", + "properties": { + "inputs": { + "default": [], + "items": { + "$ref": "#/$defs/SourceReadInput" + }, + "type": "array", + "uniqueItems": true + }, + "order": { + "items": { + "$ref": "#/$defs/SourceOrderTerm" + }, + "type": "array", + "uniqueItems": true + }, + "type": { + "const": "read-page", + "type": "string" + }, + "uniqueTieBreaker": { + "$ref": "#/$defs/ExternalId" + } + }, + "required": [ + "type", + "order", + "uniqueTieBreaker" + ], + "type": "object" + } + ] + }, + "SourceRecovery": { + "description": "The recovery semantics of a source route's `next` cursor, the closed\nset CONCEPT 17.2 pins.", + "oneOf": [ + { + "const": "exact-replay", + "description": "A replayed cursor re-reads the same bytes, such as a file digest\nand position.", + "type": "string" + }, + { + "const": "key-deduplicated", + "description": "Upstream pages may shift between reads; the consumer deduplicates\nby key.", + "type": "string" + } + ] + }, + "SourceRouteDecl": { + "additionalProperties": false, + "description": "One source route of the governed-ingestion mode\n(`products/adapter/CONCEPT.md` sections 17.1 and 17.2): a route\ndefinition's steps plus the item-contract declaration. A source route\nis an entry point of the job mode, never a subroutine: a facade\nbinding naming it, or a `direct:` send targeting it, refuses\n(`adapter.job.source-bound-refused`,\n`adapter.job.source-called-refused`). There is no `from`: the\n`from: file:` consumer form was rejected with the job's read step\n(section 17.2).", + "properties": { + "edits": { + "description": "How the source reports edits to items the scan has already read,\none of [`SOURCE_EDIT_VALUES`]: `ordered`, where an edit moves the\nitem past the read position or items never change so an ordinary\npass suffices, or `rescan`, where an edit can stay behind the\nposition and the declared `rescanDelaySeconds` starts an ordinary\npass from the first page. Mandatory; the checks refuse its absence\nunder `adapter.job.source-edits-required` and a value outside the\nclosed set under `adapter.job.source-edits-unknown`.", + "type": "string" + }, + "evidence": { + "$ref": "#/$defs/EvidenceRouteContract", + "description": "The Evidence acquisition contract when this source route is a\nlistener-free, read-only Evidence entry point." + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The source route identifier the job definition names." + }, + "nextRecovery": { + "$ref": "#/$defs/SourceRecovery", + "description": "The recovery semantics of `next`. Mandatory; the checks refuse its\nabsence under `adapter.job.source-recovery-required`." + }, + "readSupport": { + "$ref": "#/$defs/SourceReadSupport", + "description": "The source-neutral read semantics this route explicitly supports. A\nfacade host maps these native inputs and guarantees to its public\nprotocol; it never infers them from a route id or source brand." + }, + "rescanDelaySeconds": { + "description": "The seconds between a `rescan` source route's ordinary passes from\nthe first page, from\n[`MINIMUM_SOURCE_RESCAN_DELAY_SECONDS`] to\n[`MAXIMUM_SOURCE_RESCAN_DELAY_SECONDS`] (one minute to one day).\nMandatory beside `edits: rescan`, refused beside `edits: ordered`,\nand range-checked; the checks police all three under\n`adapter.job.source-rescan-delay`.", + "format": "uint64", + "maximum": 86400, + "minimum": 60, + "type": "integer" + }, + "scan": { + "$ref": "#/$defs/SourceScan", + "description": "Whether the scan ends. Mandatory; the checks refuse its absence\nunder `adapter.job.source-scan-required`." + }, + "steps": { + "description": "The ordered steps, as an internal route's body.", + "items": { + "$ref": "#/$defs/Step" + }, + "type": "array" + } + }, + "required": [ + "id" + ], + "type": "object" + }, + "SourceScan": { + "description": "Whether a source route's scan ends: the closed set CONCEPT 17.2 pins\nfor the item contract.", + "oneOf": [ + { + "const": "finite", + "description": "The scan ends: `next` is absent at the end.", + "type": "string" + }, + { + "const": "ongoing", + "description": "The scan continues: the job re-runs the route until stopped.", + "type": "string" + } + ] + }, + "SourceWriteSupport": { + "description": "Source-neutral direct-write semantics explicitly promised by one reusable\npack route template. A host never infers these guarantees from an HTTP\nmethod, provider brand, route id, or successful fixture.\n\nEach variant names one fixed guarantee set; the only value a pack chooses\nis the finite provider-owned window in which the source guarantees an\nexact same-key replay. The host keeps its own idempotency custody within,\nnever beyond, that declared window.", + "oneOf": [ + { + "additionalProperties": false, + "description": "Create exactly one source record, replay an exact same-key retry, and\nreturn the durable key the source assigns in [`SourceWriteReceipt`].", + "properties": { + "replayWindowSeconds": { + "description": "Seconds for which the source guarantees an exact same-key replay.", + "format": "uint64", + "maximum": 31536000, + "minimum": 1, + "type": "integer" + }, + "type": { + "const": "create-one", + "type": "string" + } + }, + "required": [ + "type", + "replayWindowSeconds" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Update exactly one source record, replay an exact same-key retry, and\ncompare and commit the supplied native validator in the same atomic\nmutation boundary.", + "properties": { + "replayWindowSeconds": { + "description": "Seconds for which the source guarantees an exact same-key replay.", + "format": "uint64", + "maximum": 31536000, + "minimum": 1, + "type": "integer" + }, + "type": { + "const": "conditional-update-one", + "type": "string" + } + }, + "required": [ + "type", + "replayWindowSeconds" + ], + "type": "object" + } + ] + }, + "SplitStep": { + "additionalProperties": false, + "description": "A `split` step (`products/adapter/CONCEPT.md` sections 8.6 and 5.5).\n`parallelProcessing`, `streaming`, and `timeout` are not ported.", + "properties": { + "aggregationStrategy": { + "$ref": "#/$defs/AggregationStrategy", + "description": "The aggregation strategy; absent, the original message is returned,\nCamel's default." + }, + "errorThreshold": { + "description": "Camel's failure accounting: the share of failed pieces (a ratio\nfrom 0 to 1) that stops the split.", + "format": "double", + "type": "number" + }, + "expression": { + "$ref": "#/$defs/Expression", + "description": "The expression that produces the pieces." + }, + "maximumFailedRecords": { + "description": "Camel's failure accounting: the maximum failed pieces.", + "format": "uint64", + "maximum": 100000, + "minimum": 1, + "type": "integer" + }, + "maximumItems": { + "description": "The mandatory piece bound; the check refuses its absence and the\nruntime enforces it again.", + "format": "uint64", + "maximum": 100000, + "minimum": 1, + "type": "integer" + }, + "steps": { + "description": "The steps applied to each piece.", + "items": { + "$ref": "#/$defs/Step" + }, + "type": "array" + }, + "stopOnException": { + "description": "Whether a failing piece stops the split (Camel default false). A\nnon-safe send inside a split requires true. Exclusive with the\nfailure accounting below; the checks refuse both.", + "type": "boolean" + } + }, + "required": [ + "expression" + ], + "type": "object" + }, + "SqliteExtractColumn": { + "additionalProperties": false, + "properties": { + "name": { + "$ref": "#/$defs/ExternalId" + }, + "type": { + "$ref": "#/$defs/SqliteExtractColumnType" + } + }, + "required": [ + "name", + "type" + ], + "type": "object" + }, + "SqliteExtractColumnType": { + "enum": [ + "string", + "integer", + "number", + "boolean" + ], + "type": "string" + }, + "SqliteExtractDeclaration": { + "additionalProperties": false, + "description": "A read-only statement over one host-captured SQLite extract. Its SQL is\npinned with the pack, while its parameters may receive only route values.", + "properties": { + "columns": { + "items": { + "$ref": "#/$defs/SqliteExtractColumn" + }, + "type": "array" + }, + "concurrency": { + "format": "uint64", + "maximum": 1024, + "minimum": 1, + "type": "integer" + }, + "extractProfile": { + "$ref": "#/$defs/LocalId" + }, + "maximumCellBytes": { + "format": "uint64", + "maximum": 8388608, + "minimum": 1, + "type": "integer" + }, + "maximumExtractAgeSeconds": { + "format": "uint64", + "maximum": 2592000, + "minimum": 1, + "type": "integer" + }, + "maximumRows": { + "format": "uint64", + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "maximumStatementSteps": { + "format": "uint64", + "maximum": 1000000000, + "minimum": 1, + "type": "integer" + }, + "parameters": { + "items": { + "$ref": "#/$defs/SqliteExtractParameter" + }, + "type": "array" + }, + "statement": { + "$ref": "#/$defs/ScriptReference" + } + }, + "required": [ + "extractProfile", + "statement", + "columns", + "parameters", + "maximumExtractAgeSeconds", + "maximumRows", + "maximumCellBytes", + "maximumStatementSteps", + "concurrency" + ], + "type": "object" + }, + "SqliteExtractParameter": { + "additionalProperties": false, + "properties": { + "name": { + "$ref": "#/$defs/ExternalId" + }, + "required": { + "default": true, + "type": "boolean" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "Step": { + "description": "One step of a route body, externally tagged by the Camel EIP name\n(CFG-ID-7). Every port-table row for Increments 0 to 3 has a variant,\nso the format does not change when a later increment lands\n(`products/adapter/CONCEPT.md` section 8.10).\n\nStep round-trip forms are pinned one per variant by the tests of this\nmodule; each test names the Camel 4.x page the variant's semantics port\nfrom.", + "oneOf": [ + { + "additionalProperties": false, + "description": "Send to a static endpoint or route. No `toD` is ported.", + "properties": { + "to": { + "$ref": "#/$defs/ToStep" + } + }, + "required": [ + "to" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Set the message body from an expression.", + "properties": { + "setBody": { + "$ref": "#/$defs/Expression" + } + }, + "required": [ + "setBody" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Set the message body from an expression (Camel's `transform`).", + "properties": { + "transform": { + "$ref": "#/$defs/Expression" + } + }, + "required": [ + "transform" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Set one message header.", + "properties": { + "setHeader": { + "$ref": "#/$defs/SetHeaderStep" + } + }, + "required": [ + "setHeader" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Set one exchange property.", + "properties": { + "setProperty": { + "$ref": "#/$defs/SetPropertyStep" + } + }, + "required": [ + "setProperty" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Remove one message header by name.", + "properties": { + "removeHeader": { + "type": "string" + } + }, + "required": [ + "removeHeader" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Remove one exchange property by name.", + "properties": { + "removeProperty": { + "type": "string" + } + }, + "required": [ + "removeProperty" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Run an expression for effect on properties without changing the\nbody, as Camel's `script` EIP.", + "properties": { + "script": { + "$ref": "#/$defs/Expression" + } + }, + "required": [ + "script" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Convert the message body through a code map\n(`products/adapter/CONCEPT.md` section 8.6).", + "properties": { + "convertBodyTo": { + "$ref": "#/$defs/ConvertStep" + } + }, + "required": [ + "convertBodyTo" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Convert one message header through a code map.", + "properties": { + "convertHeaderTo": { + "$ref": "#/$defs/ConvertStep" + } + }, + "required": [ + "convertHeaderTo" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Convert one exchange property through a code map.", + "properties": { + "convertPropertyTo": { + "$ref": "#/$defs/ConvertStep" + } + }, + "required": [ + "convertPropertyTo" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Content-based router: the first matching `when` wins.", + "properties": { + "choice": { + "$ref": "#/$defs/ChoiceStep" + } + }, + "required": [ + "choice" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Message filter: nested steps run only on match; the route continues\nafter the filter either way.", + "properties": { + "filter": { + "$ref": "#/$defs/FilterStep" + } + }, + "required": [ + "filter" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "A failing predicate raises the `validation` class.", + "properties": { + "validate": { + "$ref": "#/$defs/ValidateStep" + } + }, + "required": [ + "validate" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Validate the complete provider response body against one reviewed,\ndigest-pinned JSON Schema before extraction. A mismatch is a terminal\nsource-protocol refusal, not a catchable route validation outcome.", + "properties": { + "validateSchema": { + "$ref": "#/$defs/ScriptReference" + } + }, + "required": [ + "validateSchema" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Stop routing the exchange.", + "properties": { + "stop": { + "$ref": "#/$defs/StopStep" + } + }, + "required": [ + "stop" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Raise a closed error class now; the route's clauses handle it like\nany error (`products/adapter/CONCEPT.md` section 8.11.6).", + "properties": { + "throwException": { + "$ref": "#/$defs/ThrowExceptionStep" + } + }, + "required": [ + "throwException" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Split a message into pieces and aggregate them.", + "properties": { + "split": { + "$ref": "#/$defs/SplitStep" + } + }, + "required": [ + "split" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Repeat a block a bounded number of times.", + "properties": { + "loop": { + "$ref": "#/$defs/LoopStep" + } + }, + "required": [ + "loop" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Call a static endpoint and merge its reply.", + "properties": { + "enrich": { + "$ref": "#/$defs/EnrichStep" + } + }, + "required": [ + "enrich" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Poll a job source through a static `file:` or `sftp:` URI and merge\nor replace the body with one bounded page\n(`products/adapter/CONCEPT.md` sections 17.1 and 17.2). Job-only:\nthe authoring checks refuse the step in every facade-reachable\nroute.", + "properties": { + "pollEnrich": { + "$ref": "#/$defs/PollEnrichStep" + } + }, + "required": [ + "pollEnrich" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Wrap steps in a resilience4j circuit breaker with `onFallback`.", + "properties": { + "circuitBreaker": { + "$ref": "#/$defs/CircuitBreakerStep" + } + }, + "required": [ + "circuitBreaker" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Throttle sends; a waiting exchange waits at most until its\ndeadline, then raises `throttle.rejected`.", + "properties": { + "throttle": { + "$ref": "#/$defs/ThrottleStep" + } + }, + "required": [ + "throttle" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Wrap a write route in idempotent consumption\n(`products/adapter/CONCEPT.md` section 9).", + "properties": { + "idempotentConsumer": { + "$ref": "#/$defs/IdempotentConsumerStep" + } + }, + "required": [ + "idempotentConsumer" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "The route's error handler: `defaultErrorHandler` or\n`noErrorHandler`. The exhausted exchange is always journaled; the\njournal is the fixed dead letter.", + "properties": { + "errorHandler": { + "$ref": "#/$defs/ErrorHandlerStep" + } + }, + "required": [ + "errorHandler" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "An exception clause over the closed error-class hierarchy.", + "properties": { + "onException": { + "$ref": "#/$defs/OnExceptionStep" + } + }, + "required": [ + "onException" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "`doTry` with `doCatch` and `doFinally` clauses.", + "properties": { + "doTry": { + "$ref": "#/$defs/DoTryStep" + } + }, + "required": [ + "doTry" + ], + "type": "object" + } + ] + }, + "StopStep": { + "additionalProperties": false, + "description": "A `stop` step. The empty mapping `{}` is the whole variant.", + "type": "object" + }, + "TemplateParameter": { + "additionalProperties": false, + "description": "A route template parameter (`products/adapter/CONCEPT.md` section 8.4).\nDivergence from Camel: typed and checked under CFG-VAL-9, where Camel\nparameters are untyped strings.", + "properties": { + "defaultValue": { + "description": "The value used when the instantiation omits the parameter." + }, + "description": { + "description": "What the parameter means, for the reviewed pack.", + "type": "string" + }, + "name": { + "$ref": "#/$defs/LocalId", + "description": "The parameter name, referenced as `{{name}}` or `{{?name}}`; a\nlocal identifier, the same taxonomy an instantiation's binding\nkeys carry (CFG-ID-1)." + }, + "required": { + "description": "Whether instantiation without the parameter is refused.", + "type": "boolean" + }, + "type": { + "$ref": "#/$defs/TemplateParameterType", + "description": "The value type checked at instantiation." + } + }, + "required": [ + "name", + "type" + ], + "type": "object" + }, + "TemplateParameterType": { + "description": "A template parameter's value type (CFG-VAL-9).", + "oneOf": [ + { + "enum": [ + "string", + "integer", + "number", + "boolean" + ], + "type": "string" + }, + { + "const": "map", + "description": "A flat, bounded string-to-string map, whose only use in a template\nbody is a whole-value `constant` placeholder.", + "type": "string" + } + ] + }, + "ThrottleMode": { + "description": "Throttle mode, Camel 4's `mode` option.", + "oneOf": [ + { + "const": "total-requests", + "description": "Total requests per period (Camel default).", + "type": "string" + }, + { + "const": "concurrent-requests", + "description": "Concurrent requests.", + "type": "string" + } + ] + }, + "ThrottleStep": { + "additionalProperties": false, + "description": "A `throttle` step (`products/adapter/CONCEPT.md` section 8.6).\nDivergence: a waiting exchange waits at most until its deadline, then\nraises `throttle.rejected`.", + "properties": { + "limit": { + "$ref": "#/$defs/Expression", + "description": "The request limit per period, an expression as Camel 4 reads it." + }, + "mode": { + "$ref": "#/$defs/ThrottleMode", + "description": "Total or concurrent requests (Camel default total)." + }, + "rejectExecution": { + "description": "Whether to reject immediately instead of waiting (Camel default\nfalse).", + "type": "boolean" + }, + "steps": { + "description": "The throttled steps.", + "items": { + "$ref": "#/$defs/Step" + }, + "type": "array" + }, + "timePeriodMilliseconds": { + "description": "The period in milliseconds (Camel default 1000); zero cannot bound\na period.", + "format": "uint32", + "maximum": 4294967295, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "limit" + ], + "type": "object" + }, + "ThrowExceptionStep": { + "additionalProperties": false, + "description": "A `throwException` step: raise one closed error class, with an\noptional bounded constant message\n(`products/adapter/CONCEPT.md` section 8.11.6). The checks refuse a\nboundary or facade class, which never enters a route.", + "properties": { + "data": { + "$ref": "#/$defs/Expression", + "description": "The optional expression producing the selected problem's declared,\nclosed data object. The runtime validates it before disclosure." + }, + "exceptionType": { + "$ref": "#/$defs/ErrorClass", + "description": "The closed class to raise; a catchable class, typically an\n`outcome.*` class." + }, + "message": { + "description": "The optional constant message; no expression is ported.", + "type": "string" + } + }, + "required": [ + "exceptionType" + ], + "type": "object" + }, + "ToParameters": { + "additionalProperties": false, + "description": "The parameters of an upstream send, Camel's `http` component options\n(`products/adapter/CONCEPT.md` section 8.8). The path template's\n`{{name}}` segments are filled from `pathParameters` expressions and\npercent-encoded by the engine as single segments; query members are\nengine-encoded.", + "properties": { + "body": { + "$ref": "#/$defs/Expression", + "description": "The request body expression, marshalled to JSON." + }, + "httpMethod": { + "$ref": "#/$defs/HttpMethod", + "description": "The request method; an `http:` send declares it, a `graphql:` send\nomits it. Its safety carries the write-safety rules of\n`crate::checks`." + }, + "httpUri": { + "$ref": "#/$defs/Expression", + "description": "An origin-pinned link carried as an expression instead of `path`\n(`products/adapter/CONCEPT.md` section 8.11.5): at send time the\nengine parses the value as an absolute URL and refuses it with\n`egress.refused` unless it stays inside the endpoint's origin and\nbase path, carries no userinfo or fragment, and fits the URL\nlength bound. The checks refuse a send carrying both members, a\nquery beside this one, and this member on a non-http send." + }, + "okStatusCodeRange": { + "description": "The inclusive status range treated as success (Camel default\n`200-299`).", + "type": "string" + }, + "operation": { + "$ref": "#/$defs/ExternalId", + "description": "The endpoint operation this send invokes, when the pack declares\nendpoint operations; write-safety checks read its\n`idempotentUpstream` claim." + }, + "path": { + "description": "The path template, e.g. `/v2/cases/{{type}}`.", + "type": "string" + }, + "pathParameters": { + "additionalProperties": { + "$ref": "#/$defs/Expression" + }, + "description": "Path-template segment name to expression; each key is a local\nidentifier (CFG-ID-1).", + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "query": { + "additionalProperties": { + "$ref": "#/$defs/Expression" + }, + "description": "Query parameter name to expression; each key is the upstream's\nwire parameter name, an external identifier, because the key is\nwhat the source system documents, not a name the pack defines\n(CFG-ID-1).", + "propertyNames": { + "$ref": "#/$defs/ExternalId" + }, + "type": "object" + }, + "queryParameters": { + "additionalProperties": { + "$ref": "#/$defs/Expression" + }, + "description": "Named parameter name to expression of a `postgres:` send, each key\na parameter the endpoint's digest-pinned query file declares\n(`products/adapter/CONCEPT.md` section 8.10, the SQL row; CFG-ID-1\nkeys, engine-evaluated expressions). The checks refuse more than\nsixteen parameters (`adapter.job.postgres-parameters-unbounded`)\nand the member on any non-postgres send.", + "propertyNames": { + "$ref": "#/$defs/ExternalId" + }, + "type": "object" + }, + "resumeBindings": { + "description": "The source-native identifiers a later write-resume step needs\n(`products/adapter/CONCEPT.md` section 9).", + "items": { + "$ref": "#/$defs/ResumeBinding" + }, + "type": "array" + }, + "throwExceptionOnFailure": { + "description": "Whether a failure status raises an error (Camel default true).", + "type": "boolean" + } + }, + "type": "object" + }, + "ToStep": { + "additionalProperties": false, + "description": "A `to` send: the static destination and its parameters\n(`products/adapter/CONCEPT.md` section 8.8). The `http` component\nbuilds the request from the declared template; no expression can change\nthe origin or inject a path segment.", + "properties": { + "parameters": { + "$ref": "#/$defs/ToParameters", + "description": "The send parameters; `direct:` sends carry none." + }, + "uri": { + "$ref": "#/$defs/SendUri", + "description": "The static destination." + } + }, + "required": [ + "uri" + ], + "type": "object" + }, + "ValidateStep": { + "additionalProperties": false, + "description": "A `validate` step.", + "properties": { + "expression": { + "$ref": "#/$defs/Expression", + "description": "The predicate; failure raises the `validation` class." + } + }, + "required": [ + "expression" + ], + "type": "object" + }, + "When": { + "additionalProperties": false, + "description": "One `when` clause of a `choice`: an inline predicate expression (the\nlanguage key sits beside `steps`, as Camel's YAML DSL writes it) and\nthe steps it guards. Exactly one language key must be present;\n`crate::checks` refuses zero or several under an adapter code, and the\nreader refuses any unknown key (`config.unknown-key`, CFG-SCHEMA-8).", + "properties": { + "constant": { + "description": "The `constant` language member." + }, + "exchangeProperty": { + "description": "The `exchangeProperty` language member.", + "type": "string" + }, + "header": { + "description": "The `header` language member.", + "type": "string" + }, + "jsonpath": { + "description": "The `jsonpath` language member.", + "type": "string" + }, + "rhai": { + "$ref": "#/$defs/RhaiExpression", + "description": "The `rhai` language member." + }, + "steps": { + "description": "The steps the clause runs on match.", + "items": { + "$ref": "#/$defs/Step" + }, + "type": "array" + } + }, + "type": "object" + } + }, + "$id": "https://id.registrystack.org/schemas/adapter/pack/pack.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "description": "The adapter pack artifact (`AdapterPack`), a per-source-system catalog:\nendpoint declarations, route templates with typed parameters, internal\n`direct:` routes, code maps, script references with digest pins, and\nthe required engine capabilities.", + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/adapter/pack/v1alpha1", + "type": "string" + }, + "capabilities": { + "$ref": "#/$defs/Capabilities", + "default": { + "components": [], + "eips": [], + "languages": [] + }, + "description": "The engine capabilities the pack requires." + }, + "codeMaps": { + "default": [], + "description": "The code maps routes convert values through.", + "items": { + "$ref": "#/$defs/CodeMap" + }, + "type": "array" + }, + "endpoints": { + "default": [], + "description": "The endpoints routes send to.", + "items": { + "$ref": "#/$defs/Endpoint" + }, + "type": "array" + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The pack identifier a project pins." + }, + "kind": { + "const": "AdapterPack", + "type": "string" + }, + "openApi": { + "$ref": "#/$defs/ScriptReference", + "description": "The provider OpenAPI document used by consumer tooling such as\nEvidence source mocks, captured and digest-pinned with the pack." + }, + "queryFiles": { + "default": [], + "description": "The GraphQL query-file inventory, each file digest-pinned.", + "items": { + "$ref": "#/$defs/ScriptReference" + }, + "type": "array", + "uniqueItems": true + }, + "routeTemplates": { + "default": [], + "description": "The route templates projects instantiate.", + "items": { + "$ref": "#/$defs/RouteTemplate" + }, + "type": "array" + }, + "routes": { + "default": [], + "description": "The internal `direct:` routes shared sub-flows call.", + "items": { + "$ref": "#/$defs/RouteDefinition" + }, + "type": "array" + }, + "scripts": { + "default": [], + "description": "The Rhai script inventory, each file digest-pinned (CFG-EMBED-1).", + "items": { + "$ref": "#/$defs/ScriptReference" + }, + "type": "array", + "uniqueItems": true + }, + "sourceRoutes": { + "default": [], + "description": "The governed-ingestion source routes the job mode runs\n(`products/adapter/CONCEPT.md` sections 17.1 and 17.2). Entry\npoints of the job mode; a facade route never reaches one.", + "items": { + "$ref": "#/$defs/SourceRouteDecl" + }, + "type": "array" + }, + "testedVersions": { + "description": "The upstream versions this pack was tested against, pack-wide.", + "items": { + "type": "string" + }, + "type": "array" + }, + "version": { + "description": "The pack's own version; a project pin names it next to the digest\n(CFG-ID-4).", + "type": "string" + } + }, + "required": [ + "apiVersion", + "id", + "kind", + "testedVersions", + "version" + ], + "title": "Registry Adapter pack", + "type": "object" +} diff --git a/src/artifacts/sha256/b22c06678f15e4a5aa028df61819cde8d37ce2311e1249a3a8fcc18d00aa3eab.json b/src/artifacts/sha256/b22c06678f15e4a5aa028df61819cde8d37ce2311e1249a3a8fcc18d00aa3eab.json new file mode 100644 index 000000000..86a87fba3 --- /dev/null +++ b/src/artifacts/sha256/b22c06678f15e4a5aa028df61819cde8d37ce2311e1249a3a8fcc18d00aa3eab.json @@ -0,0 +1,1142 @@ +{ + "$defs": { + "ActionReference": { + "additionalProperties": false, + "properties": { + "contract": { + "$ref": "#/$defs/LocalId", + "description": "The local generated contract import that owns this definition." + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The exact definition ID within that generated contract." + } + }, + "required": [ + "contract", + "id" + ], + "type": "object" + }, + "AuthoredCompletion": { + "oneOf": [ + { + "additionalProperties": false, + "description": "Repeats the accepted read under host-owned transport and credentials.", + "properties": { + "interpret": { + "$ref": "#/$defs/LocalId", + "description": "The typed pure Function that turns the saved command and response into an observation." + }, + "intervalSeconds": { + "description": "Seconds between pending observations; the host may impose a stricter minimum.", + "format": "uint32", + "maximum": 86400, + "minimum": 1, + "type": "integer" + }, + "type": { + "const": "bounded-poll", + "type": "string" + } + }, + "required": [ + "type", + "interpret", + "intervalSeconds" + ], + "type": "object" + } + ] + }, + "AuthoredCompletionReference": { + "additionalProperties": false, + "properties": { + "name": { + "$ref": "#/$defs/LocalId", + "description": "One named completion on the referenced call Operation." + }, + "step": { + "$ref": "#/$defs/LocalId", + "description": "The preceding accepted call or completed wait Step whose value is read." + } + }, + "required": [ + "step", + "name" + ], + "type": "object" + }, + "AuthoredCondition": { + "additionalProperties": false, + "description": "One reference and exactly one test of it.", + "properties": { + "equals": { + "default": null, + "description": "Holds when the value equals this string, number or boolean of the same kind.", + "x-registry-foreign": "json" + }, + "greater": { + "default": null, + "description": "Holds when the value is above this number, or after this calendar date such as `2026-01-31` when the reference declares `format: date`.", + "x-registry-foreign": "json" + }, + "less": { + "default": null, + "description": "Holds when the value is below this number, or before this calendar date such as `2026-01-31` when the reference declares `format: date`.", + "x-registry-foreign": "json" + }, + "oneOf": { + "description": "Holds when the value equals one of these strings, numbers or booleans, all of one kind.", + "items": { + "x-registry-foreign": "json" + }, + "type": "array" + }, + "present": { + "description": "`true` holds when the value exists and is not null; `false` holds when it is missing or null. Put `present: true` before a test on an optional value to guard it.", + "type": "boolean" + }, + "value": { + "$ref": "#/$defs/Reference", + "description": "The value tested. Only `present` accepts a value that is missing or null; every other test fails the run on one." + } + }, + "required": [ + "value" + ], + "type": "object" + }, + "AuthoredEventTrigger": { + "additionalProperties": false, + "properties": { + "dataSchema": { + "$ref": "#/$defs/ExternalId", + "description": "Exact producer data-schema identifier accepted by this trigger." + }, + "description": { + "$ref": "#/$defs/DisplayText", + "description": "An optional explanation of when this start fires; it has no execution or authorization effect." + }, + "event": { + "$ref": "#/$defs/Schema", + "description": "Schema for the complete authenticated event envelope before input mapping." + }, + "eventType": { + "$ref": "#/$defs/ExternalId", + "description": "Exact producer event type accepted by this trigger." + }, + "input": { + "$ref": "#/$defs/AuthoredMapping", + "description": "Ordinary typed Mapping from the event envelope to Workflow start input." + }, + "label": { + "$ref": "#/$defs/DisplayText", + "description": "An optional human label for this start; it changes neither stable identity nor behavior revision." + }, + "source": { + "$ref": "#/$defs/LocalId", + "description": "Logical producer binding declared in runtime eventSources." + } + }, + "required": [ + "source", + "eventType", + "dataSchema", + "event", + "input" + ], + "type": "object" + }, + "AuthoredFunction": { + "additionalProperties": false, + "properties": { + "description": { + "$ref": "#/$defs/DisplayText", + "description": "An optional explanation for readers; it has no execution or authorization effect." + }, + "entrypoint": { + "description": "One public source function taking exactly one named-input object.", + "type": "string" + }, + "inputs": { + "additionalProperties": { + "$ref": "#/$defs/Schema" + }, + "description": "Named input schemas or references; every declared input is required exactly once.", + "maxProperties": 16, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "label": { + "$ref": "#/$defs/DisplayText", + "description": "An optional human label; it changes neither stable identity nor behavior revision." + }, + "limits": { + "$ref": "#/$defs/NarrowedLimits", + "description": "Optional narrowing of the bounded pure profile; omitted limits retain the default ceiling." + }, + "output": { + "$ref": "#/$defs/Schema", + "description": "The declared result schema or mapping; Functions and the host enforce it." + }, + "runtime": { + "$ref": "#/$defs/FunctionRuntime", + "description": "The pinned pure runtime; rhai has no clock, network, database or credential capability." + }, + "source": { + "description": "A local reviewed source asset inside the project directory.", + "type": "string" + } + }, + "required": [ + "runtime", + "source", + "entrypoint", + "inputs", + "output" + ], + "type": "object" + }, + "AuthoredMapping": { + "oneOf": [ + { + "additionalProperties": false, + "description": "Computes a value with a declared typed pure Function.", + "properties": { + "function": { + "$ref": "#/$defs/LocalId", + "description": "A declared pure Function called with an object of named inputs." + }, + "inputs": { + "additionalProperties": { + "$ref": "#/$defs/Reference" + }, + "description": "Named input schemas or references; every declared input is required exactly once.", + "maxProperties": 16, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "type": { + "const": "function", + "type": "string" + } + }, + "required": [ + "type", + "function", + "inputs" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Builds an object from named references, literals and nested fields.", + "properties": { + "fields": { + "$ref": "#/$defs/Fields", + "description": "Object members built from typed references, literals or nested fields." + }, + "type": { + "const": "fields", + "type": "string" + } + }, + "required": [ + "type", + "fields" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Decides a choose step by comparing values: `matched` when the conditions hold, `unmatched` when they do not.", + "properties": { + "all": { + "description": "One to sixteen conditions that must all hold; give exactly one of `all` or `any`. Conditions run in order and stop at the first that does not hold.", + "items": { + "$ref": "#/$defs/AuthoredCondition" + }, + "maxItems": 16, + "minItems": 1, + "type": "array" + }, + "any": { + "description": "One to sixteen conditions of which one must hold; give exactly one of `all` or `any`. Conditions run in order and stop at the first that holds.", + "items": { + "$ref": "#/$defs/AuthoredCondition" + }, + "maxItems": 16, + "minItems": 1, + "type": "array" + }, + "type": { + "const": "compare", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Reads the Workflow input.", + "properties": { + "path": { + "$ref": "#/$defs/JsonPointer", + "description": "An optional RFC 6901 pointer; omit it to read the entire value." + }, + "type": { + "const": "input", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Reads an earlier accepted call or completed wait on every incoming route.", + "properties": { + "path": { + "$ref": "#/$defs/JsonPointer", + "description": "An optional RFC 6901 pointer; omit it to read the entire value." + }, + "step": { + "$ref": "#/$defs/LocalId", + "description": "The preceding accepted call or completed wait Step whose value is read." + }, + "type": { + "const": "step", + "type": "string" + } + }, + "required": [ + "type", + "step" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Supplies one bounded literal JSON value.", + "properties": { + "type": { + "const": "literal", + "type": "string" + }, + "value": { + "description": "A literal JSON value; it remains subject to bounded value checks.", + "x-registry-foreign": "json" + } + }, + "required": [ + "type", + "value" + ], + "type": "object" + } + ] + }, + "AuthoredOperation": { + "additionalProperties": false, + "properties": { + "action": { + "$ref": "#/$defs/ActionReference", + "description": "An exact BReg Action specialization from one generated contract import." + }, + "completions": { + "additionalProperties": { + "$ref": "#/$defs/AuthoredCompletion" + }, + "description": "Named bounded completion contracts; the host enforces their observation semantics.", + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "connection": { + "$ref": "#/$defs/LocalId", + "description": "The logical deployment connection. It grants no authority." + }, + "description": { + "$ref": "#/$defs/DisplayText", + "description": "An optional explanation for readers; it has no execution or authorization effect." + }, + "interpret": { + "$ref": "#/$defs/LocalId", + "description": "The typed pure Function that interprets an external command's provider\nresponse into an accepted result, a declared refusal or an uncertain\noutcome. Required on, and accepted only on, `external.command/v1`." + }, + "label": { + "$ref": "#/$defs/DisplayText", + "description": "An optional human label; it changes neither stable identity nor behavior revision." + }, + "record": { + "$ref": "#/$defs/RecordReference", + "description": "Limit BReg read replies to the imported record schema's API field names.\nFields may be hidden by access policy, and their value types remain open." + }, + "responseSchema": { + "$ref": "#/$defs/Schema", + "description": "An optional typed response specialization for the bounded external GET\nor external command Operation." + }, + "template": { + "$ref": "#/$defs/TemplateReference", + "description": "Fix a Messaging template version, its locales and its data schema." + }, + "uses": { + "$ref": "#/$defs/Operation", + "description": "One exact versioned host catalog contract." + } + }, + "required": [ + "uses", + "connection" + ], + "type": "object" + }, + "AuthoredStep": { + "oneOf": [ + { + "additionalProperties": false, + "description": "Waits until a computed RFC 3339 instant.", + "properties": { + "description": { + "$ref": "#/$defs/DisplayText", + "description": "An optional explanation for readers; it has no execution or authorization effect." + }, + "label": { + "$ref": "#/$defs/DisplayText", + "description": "An optional human label; it changes neither stable identity nor behavior revision." + }, + "next": { + "$ref": "#/$defs/LocalId", + "description": "The next Step on the successful completion route." + }, + "type": { + "const": "wait-until", + "type": "string" + }, + "waitUntil": { + "$ref": "#/$defs/AuthoredMapping", + "description": "A mapping producing an RFC 3339 instant with an offset." + } + }, + "required": [ + "type", + "waitUntil", + "next" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Observes one named completion of an earlier accepted call.", + "properties": { + "completion": { + "$ref": "#/$defs/AuthoredCompletionReference", + "description": "A preceding accepted call Step and one named Operation completion." + }, + "description": { + "$ref": "#/$defs/DisplayText", + "description": "An optional explanation for readers; it has no execution or authorization effect." + }, + "label": { + "$ref": "#/$defs/DisplayText", + "description": "An optional human label; it changes neither stable identity nor behavior revision." + }, + "next": { + "$ref": "#/$defs/LocalId", + "description": "The next Step on the successful completion route." + }, + "onCancel": { + "$ref": "#/$defs/LocalId", + "description": "An optional Step taken after authorized cancellation while waiting; no completion value is available there." + }, + "onTimeout": { + "$ref": "#/$defs/LocalId", + "description": "An optional Step taken when this wait expires; no completion value is available there." + }, + "timeoutSeconds": { + "description": "Maximum seconds to wait; it must be shorter than the Workflow deadline.", + "format": "uint32", + "maximum": 31536000, + "minimum": 1, + "type": "integer" + }, + "type": { + "const": "wait-for", + "type": "string" + } + }, + "required": [ + "type", + "completion", + "timeoutSeconds", + "next" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Calls one resolved Operation alias under the current connection authority.", + "properties": { + "description": { + "$ref": "#/$defs/DisplayText", + "description": "An optional explanation for readers; it has no execution or authorization effect." + }, + "input": { + "$ref": "#/$defs/AuthoredMapping", + "description": "The typed Workflow start input, or a mapping supplying the called Operation input." + }, + "label": { + "$ref": "#/$defs/DisplayText", + "description": "An optional human label; it changes neither stable identity nor behavior revision." + }, + "next": { + "$ref": "#/$defs/LocalId", + "description": "The next Step on the successful completion route." + }, + "onDeclaredRefusal": { + "$ref": "#/$defs/LocalId", + "description": "A separate Step taken only for a validated package-declared business refusal.\nOmit it to fail the run with `product-refused` on a declared refusal too." + }, + "operation": { + "$ref": "#/$defs/LocalId", + "description": "One local Operation alias declared under operations." + }, + "type": { + "const": "call", + "type": "string" + } + }, + "required": [ + "type", + "operation", + "input", + "next" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Selects one explicit graph edge by a typed case label.", + "properties": { + "cases": { + "additionalProperties": { + "$ref": "#/$defs/LocalId" + }, + "description": "Explicit label-to-Step edges; no implicit fall-through exists.", + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "choose": { + "$ref": "#/$defs/AuthoredMapping", + "description": "A typed mapping producing one of the declared case labels." + }, + "description": { + "$ref": "#/$defs/DisplayText", + "description": "An optional explanation for readers; it has no execution or authorization effect." + }, + "expected": { + "$ref": "#/$defs/LocalId", + "description": "The everyday case for readers and diagram tools; it has no execution or revision effect." + }, + "label": { + "$ref": "#/$defs/DisplayText", + "description": "An optional human label; it changes neither stable identity nor behavior revision." + }, + "type": { + "const": "choose", + "type": "string" + } + }, + "required": [ + "type", + "choose", + "cases" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Finishes with one declared typed outcome.", + "properties": { + "description": { + "$ref": "#/$defs/DisplayText", + "description": "An optional explanation for readers; it has no execution or authorization effect." + }, + "label": { + "$ref": "#/$defs/DisplayText", + "description": "An optional human label; it changes neither stable identity nor behavior revision." + }, + "outcome": { + "$ref": "#/$defs/LocalId", + "description": "One declared terminal outcome name." + }, + "output": { + "$ref": "#/$defs/AuthoredMapping", + "description": "The declared result schema or mapping; Functions and the host enforce it." + }, + "type": { + "const": "finish", + "type": "string" + } + }, + "required": [ + "type", + "outcome" + ], + "type": "object" + } + ] + }, + "AuthoredWorkflow": { + "additionalProperties": false, + "properties": { + "deadlineSeconds": { + "description": "Maximum seconds from Run admission to expiry, from 1 to 31536000.", + "format": "uint32", + "maximum": 31536000, + "minimum": 1, + "type": "integer" + }, + "eventTriggers": { + "additionalProperties": { + "$ref": "#/$defs/AuthoredEventTrigger" + }, + "description": "Optional authenticated product-event starts keyed by stable trigger ID.", + "maxProperties": 16, + "minProperties": 0, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "input": { + "$ref": "#/$defs/Schema", + "description": "The typed Workflow start input, or a mapping supplying the called Operation input." + }, + "outcomes": { + "additionalProperties": { + "$ref": "#/$defs/Schema" + }, + "description": "Named terminal result schemas used by finish Steps.", + "maxProperties": 64, + "minProperties": 1, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "start": { + "$ref": "#/$defs/LocalId", + "description": "The stable Step ID every Run begins at." + }, + "steps": { + "additionalProperties": { + "$ref": "#/$defs/AuthoredStep" + }, + "description": "Steps keyed by stable ID; map ordering has no execution meaning.", + "maxProperties": 64, + "minProperties": 1, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + } + }, + "required": [ + "input", + "deadlineSeconds", + "start", + "steps", + "outcomes" + ], + "type": "object" + }, + "ContractProduct": { + "enum": [ + "breg", + "messaging" + ], + "type": "string" + }, + "DisplayText": { + "description": "Human-readable display text. Bidirectional embedding, override, and isolate controls, byte-order marks, line and paragraph separators, and Unicode noncharacters are refused; multilingual joiners and direction marks remain valid.", + "not": { + "pattern": "[

‪-‮⁦-⁩﷐-﷯￾￿]|🿾|🿿|𯿾|𯿿|𿿾|𿿿|񏿾|񏿿|񟿾|񟿿|񯿾|񯿿|񿿾|񿿿|򏿾|򏿿|򟿾|򟿿|򯿾|򯿿|򿿾|򿿿|󏿾|󏿿|󟿾|󟿿|󯿾|󯿿|󿿾|󿿿|􏿾|􏿿" + }, + "type": "string" + }, + "ExternalId": { + "description": "An identifier another system issues, written exactly as its issuer gives it.", + "maxLength": 512, + "minLength": 1, + "pattern": "^[^\\u0000-\\u001F\\u007F-\\u009F]+$", + "type": "string" + }, + "FieldName": { + "description": "A member name a fields mapping writes.", + "pattern": "^[A-Za-z][A-Za-z0-9_-]{0,63}$", + "type": "string" + }, + "Fields": { + "additionalProperties": { + "$ref": "#/$defs/Member" + }, + "description": "Object members built from one typed reference, literal or nested fields mapping each. A mapping nests at most 4 levels deep and holds at most 64 members across its levels.", + "maxProperties": 64, + "propertyNames": { + "allOf": [ + { + "$ref": "#/$defs/ExternalId" + }, + { + "$ref": "#/$defs/FieldName" + } + ] + }, + "type": "object" + }, + "FunctionRuntime": { + "enum": [ + "rhai" + ], + "type": "string" + }, + "ImportedContract": { + "additionalProperties": false, + "properties": { + "source": { + "description": "A generated JSON artifact inside the project directory.", + "type": "string" + }, + "type": { + "$ref": "#/$defs/ContractProduct", + "description": "The producer of this generated public contract artifact." + } + }, + "required": [ + "type", + "source" + ], + "type": "object" + }, + "JsonPointer": { + "description": "An RFC 6901 JSON Pointer into the referenced value, such as /member/0. Omit path to use the whole value.", + "maxLength": 256, + "pattern": "^/([^~]|~[01])*$", + "type": "string" + }, + "LocalId": { + "description": "A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.", + "pattern": "^[a-z][a-z0-9_-]{0,63}$", + "type": "string" + }, + "Member": { + "oneOf": [ + { + "additionalProperties": false, + "description": "Reads the Workflow input.", + "properties": { + "path": { + "$ref": "#/$defs/JsonPointer", + "description": "An optional RFC 6901 pointer; omit it to read the entire value." + }, + "type": { + "const": "input", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Reads an earlier accepted call or completed wait on every incoming route.", + "properties": { + "path": { + "$ref": "#/$defs/JsonPointer", + "description": "An optional RFC 6901 pointer; omit it to read the entire value." + }, + "step": { + "$ref": "#/$defs/LocalId", + "description": "The preceding accepted call or completed wait Step whose value is read." + }, + "type": { + "const": "step", + "type": "string" + } + }, + "required": [ + "type", + "step" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Supplies one bounded literal JSON value.", + "properties": { + "type": { + "const": "literal", + "type": "string" + }, + "value": { + "description": "A literal JSON value; it remains subject to bounded value checks.", + "x-registry-foreign": "json" + } + }, + "required": [ + "type", + "value" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Builds a nested object member by member, never with a Function.", + "properties": { + "fields": { + "$ref": "#/$defs/Fields", + "description": "Object members built from typed references, literals or nested fields." + }, + "type": { + "const": "fields", + "type": "string" + } + }, + "required": [ + "type", + "fields" + ], + "type": "object" + } + ] + }, + "NarrowedLimits": { + "additionalProperties": false, + "description": "Omitted limits use the bounded pure default; explicit values only narrow it.", + "properties": { + "arrayItems": { + "description": "Maximum array entries, from 1 to the 256-entry profile ceiling.", + "format": "uint32", + "maximum": 256, + "minimum": 1, + "type": "integer" + }, + "callLevels": { + "description": "Maximum nested calls, from 1 to the 32-level profile ceiling.", + "format": "uint32", + "maximum": 32, + "minimum": 1, + "type": "integer" + }, + "expressionDepth": { + "description": "Maximum expression nesting, from 1 to the 64-level profile ceiling.", + "format": "uint32", + "maximum": 64, + "minimum": 1, + "type": "integer" + }, + "mapEntries": { + "description": "Maximum object entries, from 1 to the 256-entry profile ceiling.", + "format": "uint32", + "maximum": 256, + "minimum": 1, + "type": "integer" + }, + "operations": { + "description": "Maximum interpreter operations, from 1 to the 100000-operation profile ceiling.", + "format": "uint32", + "maximum": 100000, + "minimum": 1, + "type": "integer" + }, + "sourceBytes": { + "description": "Maximum source bytes, from 1 to the 65536-byte profile ceiling.", + "format": "uint32", + "maximum": 65536, + "minimum": 1, + "type": "integer" + }, + "stringBytes": { + "description": "Maximum string bytes, from 1 to the 16384-byte profile ceiling.", + "format": "uint32", + "maximum": 16384, + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + }, + "Operation": { + "enum": [ + "breg.read-record/v1", + "messaging.submit-message/v1", + "scheduling.read-service/v1", + "scheduling.read-availability/v1", + "scheduling.create-appointment/v1", + "scheduling.read-appointment/v1", + "scheduling.create-hold/v1", + "scheduling.release-hold/v1", + "scheduling.confirm-hold/v1", + "scheduling.reschedule-appointment/v1", + "scheduling.cancel-appointment/v1", + "breg.invoke-action/v1", + "external.get/v1", + "evaluation.evaluate/v1", + "casework.submit-review-request/v1", + "casework.cancel-review-request/v1", + "scheduling.preview-availability/v1", + "external.command/v1", + "breg.read-in-force/v1", + "breg.read-proposal/v1", + "breg.start-proposal/v1", + "breg.submit-proposal/v1", + "breg.cancel-proposal/v1", + "breg.lookup-record/v1", + "breg.read-record/v2" + ], + "type": "string" + }, + "ProjectIdentity": { + "additionalProperties": false, + "description": "The members that name a project (CFG-ENV-6): a project's `project` block\nholds these, and may add project-wide members of the product's own.\nSchema name `ProjectIdentity`.", + "properties": { + "id": { + "$ref": "#/$defs/LocalId", + "description": "The stable Workflow API name, also the enclosing Project ID." + }, + "version": { + "description": "The human release label; it is distinct from the computed Workflow revision.", + "type": "string" + } + }, + "required": [ + "id", + "version" + ], + "type": "object" + }, + "RecordReference": { + "additionalProperties": false, + "properties": { + "contract": { + "$ref": "#/$defs/LocalId", + "description": "The local generated BReg record schema import." + } + }, + "required": [ + "contract" + ], + "type": "object" + }, + "Reference": { + "oneOf": [ + { + "additionalProperties": false, + "description": "Reads the Workflow input.", + "properties": { + "path": { + "$ref": "#/$defs/JsonPointer", + "description": "An optional RFC 6901 pointer; omit it to read the entire value." + }, + "type": { + "const": "input", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Reads an earlier accepted call or completed wait on every incoming route.", + "properties": { + "path": { + "$ref": "#/$defs/JsonPointer", + "description": "An optional RFC 6901 pointer; omit it to read the entire value." + }, + "step": { + "$ref": "#/$defs/LocalId", + "description": "The preceding accepted call or completed wait Step whose value is read." + }, + "type": { + "const": "step", + "type": "string" + } + }, + "required": [ + "type", + "step" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Supplies one bounded literal JSON value.", + "properties": { + "type": { + "const": "literal", + "type": "string" + }, + "value": { + "description": "A literal JSON value; it remains subject to bounded value checks.", + "x-registry-foreign": "json" + } + }, + "required": [ + "type", + "value" + ], + "type": "object" + } + ] + }, + "Schema": { + "description": "A whole JSON Schema or one compile-time schema reference. Schema keywords\nretain their independently owned JSON Schema spelling.", + "x-registry-foreign": "json-schema-2020-12" + }, + "TemplateReference": { + "additionalProperties": false, + "properties": { + "contract": { + "$ref": "#/$defs/LocalId", + "description": "The local generated Messaging template contract import." + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The exact template ID in the imported contract." + }, + "version": { + "description": "The exact template version label, quoted when numeric.", + "type": "string" + } + }, + "required": [ + "contract", + "id", + "version" + ], + "type": "object" + } + }, + "$id": "https://id.registrystack.org/schemas/coordinator/project/project.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "description": "A project contains one finite Workflow and its reusable typed assets.", + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/coordinator/project/v1alpha1", + "description": "The format and version this document is written in.", + "type": "string" + }, + "contracts": { + "additionalProperties": { + "$ref": "#/$defs/ImportedContract" + }, + "description": "Generated local public product contracts imported at compile time; no runtime discovery occurs.", + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "description": { + "$ref": "#/$defs/DisplayText", + "description": "An optional explanation for readers; it has no execution or authorization effect." + }, + "functions": { + "additionalProperties": { + "$ref": "#/$defs/AuthoredFunction" + }, + "description": "Named typed bounded pure computations over one object of named inputs.", + "maxProperties": 128, + "minProperties": 0, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "kind": { + "const": "CoordinatorProject", + "description": "The kind of document this is.", + "type": "string" + }, + "label": { + "$ref": "#/$defs/DisplayText", + "description": "An optional human label; it changes neither stable identity nor behavior revision." + }, + "operations": { + "additionalProperties": { + "$ref": "#/$defs/AuthoredOperation" + }, + "description": "Local aliases for exact versioned host Operations and logical deployment connections.", + "maxProperties": 64, + "minProperties": 0, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "project": { + "allOf": [ + { + "$ref": "#/$defs/ProjectIdentity", + "description": "The shared identity: project.id identifies this Workflow and project.version is a human release label." + }, + { + "properties": { + "version": { + "description": "A bounded human release label; it does not replace the computed Workflow revision.", + "maxLength": 64, + "minLength": 1, + "pattern": "^[A-Za-z0-9_-]+$", + "type": "string" + } + } + } + ], + "description": "The shared Project identity; its version is a human release label, not the computed Workflow revision.", + "unevaluatedProperties": false + }, + "types": { + "additionalProperties": { + "$ref": "#/$defs/Schema" + }, + "description": "Reusable named JSON Schemas, referenced with typeRef in whole-schema positions.", + "maxProperties": 128, + "minProperties": 0, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "workflow": { + "$ref": "#/$defs/AuthoredWorkflow", + "description": "The one finite acyclic Workflow graph this project defines." + } + }, + "required": [ + "project", + "workflow", + "apiVersion", + "kind" + ], + "title": "CoordinatorProject", + "type": "object" +} diff --git a/src/artifacts/sha256/b5f7140e63c4307838e4b26286f0aad064577c7facc5e7423e1b63887d9afb95.json b/src/artifacts/sha256/b5f7140e63c4307838e4b26286f0aad064577c7facc5e7423e1b63887d9afb95.json new file mode 100644 index 000000000..7a291e07d --- /dev/null +++ b/src/artifacts/sha256/b5f7140e63c4307838e4b26286f0aad064577c7facc5e7423e1b63887d9afb95.json @@ -0,0 +1,846 @@ +{ + "$defs": { + "AssuranceProfile": { + "description": "The assurance boundary the runtime file declares for its seals. The\nmember and the values are Evidence's.", + "oneOf": [ + { + "const": "local", + "description": "Seals sign with a `local-jwk` key file and are test seals: documents\nprint them as test seals (`signing.testOnly` is true).", + "type": "string" + }, + { + "const": "production", + "description": "Seals sign through Transit: `signing.testOnly` is false.", + "type": "string" + } + ] + }, + "AuditDestinationKind": { + "description": "The configured audit destination kind, as written in product configuration.", + "oneOf": [ + { + "const": "file", + "description": "Durable, rotated JSON Lines file.", + "type": "string" + }, + { + "const": "stdout", + "description": "One JSON line per entry on standard output, flushed per entry.", + "type": "string" + } + ] + }, + "AuditRuntime": { + "additionalProperties": false, + "description": "The audit block every Registry Stack product shares: a `file` (the\ndefault) or `stdout` destination, with rotation and retention for a file.", + "else": { + "required": [ + "path" + ] + }, + "if": { + "properties": { + "destination": { + "const": "stdout" + } + }, + "required": [ + "destination" + ] + }, + "properties": { + "destination": { + "$ref": "#/$defs/AuditDestinationKind", + "default": "file", + "description": "Where audit lines go: `file` or `stdout`." + }, + "path": { + "description": "The absolute path of the active audit file, for a `file` destination.", + "pattern": "^/+(?:(?:[^/.][^/]*|\\.(?:[^/.][^/]*|\\.[^/]+)?)/+)*(?:[^/.][^/]*|\\.(?:[^/.][^/]*|\\.[^/]+))$", + "type": "string" + }, + "retentionDays": { + "description": "Days a rotated file is kept, for a `file` destination. Default: 90.", + "format": "uint32", + "maximum": 36500, + "minimum": 1, + "type": "integer" + }, + "rotateBytes": { + "description": "Size at which the active file rotates, in bytes, for a `file`\ndestination. Default: 100 MiB.", + "format": "uint64", + "maximum": 4294967295, + "minimum": 1048576, + "type": "integer" + } + }, + "then": { + "not": { + "anyOf": [ + { + "required": [ + "path" + ] + }, + { + "required": [ + "rotateBytes" + ] + }, + { + "required": [ + "retentionDays" + ] + } + ] + } + }, + "type": "object" + }, + "AuthenticationRuntime": { + "additionalProperties": false, + "oneOf": [ + { + "not": { + "required": [ + "apiKeyRef" + ] + }, + "required": [ + "oidc" + ] + }, + { + "not": { + "required": [ + "oidc" + ] + }, + "required": [ + "apiKeyRef" + ] + } + ], + "properties": { + "apiKeyRef": { + "$ref": "#/$defs/SecretReference", + "description": "Secret reference to the caller API key, under a declared provider.\nOmit when OIDC authentication is configured." + }, + "oidc": { + "$ref": "#/$defs/OidcRuntime" + } + }, + "type": "object" + }, + "Digest": { + "description": "A SHA-256 digest: `sha256:` followed by 64 lowercase hex digits.", + "pattern": "^sha256:[0-9a-f]{64}$", + "type": "string" + }, + "EnvironmentSecretProviderConfig": { + "additionalProperties": false, + "description": "The environment secret provider. It takes no settings.", + "type": "object" + }, + "ExternalId": { + "description": "An identifier another system issues, written exactly as its issuer gives it.", + "maxLength": 512, + "minLength": 1, + "pattern": "^[^\\u0000-\\u001F\\u007F-\\u009F]+$", + "type": "string" + }, + "FileSecretProviderConfig": { + "additionalProperties": false, + "description": "The file secret provider.", + "properties": { + "root": { + "description": "Absolute directory holding one file per secret. Each file must be a\nregular file owned by the runtime user, mode 0400 or 0600, with exactly\none hard link.", + "pattern": "^/", + "type": "string" + } + }, + "required": [ + "root" + ], + "type": "object" + }, + "JwksSource": { + "description": "Where a runtime obtains the OIDC issuer's signing keys.", + "oneOf": [ + { + "additionalProperties": false, + "description": "Read `jwks_uri` from the issuer's OpenID Connect discovery document.", + "properties": { + "type": { + "const": "discovery", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Fetch the key set from this absolute `https` URI, skipping discovery.\nA plain `http` URI is accepted on loopback for supervised local\ndevelopment, and beyond loopback only when the issuer block sets\n`allowInsecureHttp`.", + "properties": { + "type": { + "const": "uri", + "type": "string" + }, + "uri": { + "$ref": "#/$defs/Url" + } + }, + "required": [ + "type", + "uri" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Read the key set from a secret, for deployments without network access\nto the issuer.", + "properties": { + "documentRef": { + "$ref": "#/$defs/SecretReference" + }, + "type": { + "const": "static", + "type": "string" + } + }, + "required": [ + "type", + "documentRef" + ], + "type": "object" + } + ] + }, + "LimitsRuntime": { + "additionalProperties": false, + "properties": { + "maximumConcurrentRenders": { + "description": "Most renders in flight at once. Default: the CPU count, at most 8.", + "format": "uint64", + "maximum": 64, + "minimum": 1, + "type": "integer" + }, + "maximumOutputBytes": { + "default": 8388608, + "description": "Largest PDF a render may produce, in bytes.", + "format": "uint64", + "maximum": 8388608, + "minimum": 1, + "type": "integer" + }, + "maximumRequestBytes": { + "default": 8388608, + "description": "Largest request body (data and base64 assets), in bytes. The httpsec\ndefault is 1 MiB; renders with photos need a conscious, bounded raise.", + "format": "uint64", + "maximum": 67108864, + "minimum": 1, + "type": "integer" + }, + "renderTimeoutSeconds": { + "default": 20, + "description": "Wall-clock budget per render, in seconds; the worker is killed at\nthis bound.", + "format": "uint64", + "maximum": 3600, + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + }, + "ListenerBind": { + "description": "Socket address the runtime listens on, written host:port with an IP address host ([addr]:port for IPv6).", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "ListenerNetworkExposure": { + "description": "The operator-declared private network placement of an HTTP listener.", + "enum": [ + "private-address", + "container-private" + ], + "type": "string" + }, + "ListenerRuntime": { + "additionalProperties": false, + "properties": { + "bind": { + "$ref": "#/$defs/ListenerBind", + "allOf": [ + { + "$ref": "#/$defs/socketPort" + }, + { + "anyOf": [ + { + "$ref": "#/$defs/ipv4SocketHost" + }, + { + "$ref": "#/$defs/ipv6HexSocketHost" + }, + { + "$ref": "#/$defs/ipv6MixedSocketHost" + } + ] + } + ], + "description": "Loopback, private, or link-local address to listen on. A public or\nall-interfaces bind is refused when the file is read. TLS is the\nproxy's job, not Render's." + }, + "networkExposure": { + "$ref": "#/$defs/ListenerNetworkExposure", + "default": "private-address" + }, + "shutdownGraceMilliseconds": { + "default": 30000, + "description": "Time allowed for renders and seals in flight to finish at shutdown,\nin milliseconds. Open connections get the same again.", + "format": "uint64", + "maximum": 3600000, + "minimum": 1000, + "type": "integer" + } + }, + "required": [ + "bind" + ], + "type": "object" + }, + "LocalId": { + "description": "A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.", + "pattern": "^[a-z][a-z0-9_-]{0,63}$", + "type": "string" + }, + "OidcAllowedClients": { + "anyOf": [ + { + "const": "unrestricted", + "description": "Admit a token from every client the issuer verifies.", + "type": "string" + }, + { + "description": "Admit a token only from a listed client.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + ], + "description": "How `allowedClients` is written (CFG-EMPTY-2): the keyword `unrestricted`,\nor a list of at least one client. An empty list is refused, because it\nreads as both \"none\" and \"any\"." + }, + "OidcRuntime": { + "additionalProperties": false, + "description": "Serving-adapter OIDC configuration. The pure rendering library never reads it.", + "properties": { + "allowInsecureHttp": { + "default": false, + "description": "Permit plain HTTP beyond loopback to the configured issuer and to a\nJWKS URI declared in configuration. TLS remains required unless the\noperator explicitly accepts this transport risk.", + "type": "boolean" + }, + "allowedClients": { + "$ref": "#/$defs/OidcAllowedClients", + "description": "The OAuth clients whose access tokens are admitted: `unrestricted` to\nadmit a token from every client the issuer verifies, or a list of at\nleast one distinct client. A runtime decides whether `unrestricted`\nis acceptable in production." + }, + "assertionIssuers": { + "additionalProperties": { + "items": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "maxItems": 16, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "description": "Assertion authorities each client may exchange a subject token from,\nkeyed by client identifier. Omitted, no assertion-issuer rule applies;\nwritten, it lists at least one client, each with at least one\nauthority. Once a client is listed, a token it exchanged is accepted\nonly for one of that client's declared authorities, and a client that\nis not listed may exchange from no authority.", + "maxProperties": 64, + "minProperties": 1, + "propertyNames": { + "$ref": "#/$defs/ExternalId", + "maxLength": 128 + }, + "type": "object" + }, + "audience": { + "description": "The audience every accepted access token must carry in `aud`.", + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "issuer": { + "$ref": "#/$defs/Url", + "description": "Exact issuer accepted in access-token `iss` claims, an absolute\n`https` URL, or a plain `http` URL when `allowInsecureHttp` is set." + }, + "jwksSource": { + "$ref": "#/$defs/JwksSource", + "default": { + "type": "discovery" + }, + "description": "Where the issuer's signing keys come from. Absent reads the issuer's\nOpenID Connect discovery document." + } + }, + "required": [ + "issuer", + "audience", + "allowedClients" + ], + "type": "object" + }, + "PackageConfig": { + "additionalProperties": false, + "description": "The package a runtime serves: `root` is the absolute package directory,\nand `expectedDigest`, when set, pins the package digest the runtime must\nfind there. The package digest is the digest of the package's\n`SHA256SUMS` file; see [`crate::package`].", + "properties": { + "expectedDigest": { + "$ref": "#/$defs/Digest", + "description": "`sha256:` label of the package digest, the digest of the package's\n`SHA256SUMS` file. When set, the runtime refuses to start on any other\npackage." + }, + "root": { + "description": "Absolute path of the package directory.", + "pattern": "^/", + "type": "string" + } + }, + "required": [ + "root" + ], + "type": "object" + }, + "SealRuntime": { + "additionalProperties": false, + "description": "One seal: the signer, the certificate chain, the timestamp policy, and\nthe clients allowed to use it.", + "oneOf": [ + { + "not": { + "required": [ + "withoutTimestamp" + ] + }, + "required": [ + "timestampAuthority" + ] + }, + { + "not": { + "required": [ + "timestampAuthority" + ] + }, + "required": [ + "withoutTimestamp" + ] + } + ], + "properties": { + "allowedClients": { + "description": "The OIDC clients allowed to seal with this seal: a list of at least\none client, each also admitted by `authentication.oidc.allowedClients`. There is\nno `unrestricted` form and no wildcard: a seal issues documents in the\ninstitution's name, so every seal-capable client is named. Keep these\nclients separate from any citizen-facing client.", + "items": { + "$ref": "#/$defs/ExternalId", + "not": { + "anyOf": [ + { + "const": "unrestricted" + }, + { + "pattern": "\\*" + } + ] + } + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "certificateChainFile": { + "description": "Absolute path of the PEM certificate chain file, the seal's own\ncertificate first, then each issuer. It is absolute like Render's\nother runtime paths, so a runtime file names deployment locations,\nnot locations relative to wherever the file was copied.", + "not": { + "pattern": "(^|/)\\.{1,2}(/|$)" + }, + "pattern": "^/(?:[^/]+/)*[^/]+$", + "type": "string" + }, + "signer": { + "$ref": "#/$defs/SealSignerRuntime", + "description": "Binds the seal to the private-key transport that produces its\nsignature. Selects the signer transport for this seal: `local-jwk`\nresolves a file-provider secret directly, `transit` calls a\nworkload-local Transit signing proxy over a Unix socket. Under\n`assuranceProfile: production` a seal signs through `transit` only;\nunder `local` it signs with a `local-jwk` key file only." + }, + "timestampAuthority": { + "$ref": "#/$defs/TimestampAuthorityRuntime", + "description": "The RFC 3161 timestamp authority that timestamps each seal (PAdES\nB-T), so the seal keeps validating after its certificate expires.\nExactly one of `timestampAuthority` and `withoutTimestamp` is\nrequired." + }, + "withoutTimestamp": { + "$ref": "#/$defs/WithoutTimestamp", + "description": "Seal without a timestamp (PAdES B-B). The only value states the\nconsequence the operator accepts: a seal without a timestamp stops\nvalidating when its certificate expires, which is usually before the\ndocument stops mattering. Exactly one of `timestampAuthority` and\n`withoutTimestamp` is required." + } + }, + "required": [ + "signer", + "certificateChainFile", + "allowedClients" + ], + "type": "object" + }, + "SealSignerRuntime": { + "description": "The private-key transport a seal signs through. The `type` member names\nthe variant.", + "oneOf": [ + { + "additionalProperties": false, + "description": "Resolves a file-provider secret directly; for `assuranceProfile: local`.", + "properties": { + "privateKeyRef": { + "$ref": "#/$defs/SecretReference", + "description": "Names the file-provider secret holding the local signing private\nkey material, read only when `signer.type` is `local-jwk`; the\nvalue is a reference, and configuration never carries the key\nbytes themselves. The secret is one private JSON Web Key, the\nform `registry-render keygen` writes." + }, + "type": { + "const": "local-jwk", + "type": "string" + } + }, + "required": [ + "type", + "privateKeyRef" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Calls a workload-local Transit signing proxy over a Unix socket. The\nkey is an ECDSA P-256 Transit key, so the seal signs ES256, and it\nnever leaves Transit.", + "properties": { + "attemptTimeoutMilliseconds": { + "description": "Bounds how long the runtime waits on each call to the Transit\nsigning proxy; because a `transit` signer keeps no local fallback\nkey, a call that exceeds this bound fails the seal request rather\nthan blocking it indefinitely.", + "format": "uint64", + "maximum": 30000, + "minimum": 1, + "type": "integer" + }, + "keyName": { + "$ref": "#/$defs/LocalId", + "description": "Names the specific key within `signer.mount` this signer calls;\ncombined with `signer.mount` and `signer.keyVersion`, it reaches\nexactly one pinned Transit key." + }, + "keyVersion": { + "description": "Pins signing to one exact Transit key version rather than a\n`latest` alias, so a provider-side rotation cannot silently\nreplace the key bytes behind an unchanged seal certificate.", + "format": "uint32", + "maximum": 4294967295, + "minimum": 1, + "type": "integer" + }, + "mount": { + "$ref": "#/$defs/LocalId", + "description": "Names the Transit secrets-engine mount this signer calls; it is a\npath segment in the local Transit-proxy request URL, not a\nfilesystem location." + }, + "type": { + "const": "transit", + "type": "string" + }, + "unixSocketPath": { + "description": "Absolute Unix socket path used to reach the workload-local Transit\nsigning proxy; the runtime supplies no provider token over this\nconnection, because token custody and renewal stay with the proxy.", + "not": { + "pattern": "(^|/)\\.{1,2}(/|$)" + }, + "pattern": "^/(?:[^/]+/)*[^/]+$", + "type": "string" + } + }, + "required": [ + "type", + "unixSocketPath", + "mount", + "keyName", + "keyVersion", + "attemptTimeoutMilliseconds" + ], + "type": "object" + } + ] + }, + "SecretProvidersConfig": { + "additionalProperties": false, + "anyOf": [ + { + "properties": { + "file": { + "$ref": "#/$defs/FileSecretProviderConfig" + } + }, + "required": [ + "file" + ] + }, + { + "properties": { + "environment": { + "$ref": "#/$defs/EnvironmentSecretProviderConfig" + } + }, + "required": [ + "environment" + ] + } + ], + "description": "The secret providers a runtime enables. A reference is resolved only by a\nprovider declared here: `secret:file/name` under `file.root`, and\n`secret:env/NAME` only when `environment: {}` is present.", + "properties": { + "environment": { + "$ref": "#/$defs/EnvironmentSecretProviderConfig", + "description": "Enables `secret:env/NAME` references, read from the process\nenvironment. Declared as an empty mapping: `environment: {}`." + }, + "file": { + "$ref": "#/$defs/FileSecretProviderConfig", + "description": "Enables `secret:file/name` references, read from files under `root`." + } + }, + "type": "object" + }, + "SecretReference": { + "description": "An exact secret reference: secret:file/name, resolved under secretProviders.file.root, or secret:env/NAME, resolved only when secretProviders.environment is declared.", + "pattern": "^(?:secret:env/[A-Z][A-Z0-9_]{0,127}|secret:file/[a-z][a-z0-9._-]{0,127})$", + "type": "string" + }, + "SigningRuntime": { + "additionalProperties": false, + "description": "Document sealing: the seals this deployment can apply. A seal is a PAdES\nsignature made with the institution's own key. Which document types use\nwhich seal is decided in the bundle manifest (`seal` on a document type),\nnever by the caller.", + "properties": { + "seals": { + "additionalProperties": { + "$ref": "#/$defs/SealRuntime" + }, + "description": "The seals, keyed by the local identifier the bundle manifest's `seal`\nnames. At least one seal is required: omit `signing` to turn sealing\noff.", + "minProperties": 1, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + } + }, + "required": [ + "seals" + ], + "type": "object" + }, + "TimestampAuthorityRuntime": { + "additionalProperties": false, + "description": "The RFC 3161 timestamp authority a seal uses.", + "properties": { + "attemptTimeoutMilliseconds": { + "default": 10000, + "description": "Time allowed for one request to the authority, in milliseconds.", + "format": "uint64", + "maximum": 60000, + "minimum": 1000, + "type": "integer" + }, + "caBundleRef": { + "$ref": "#/$defs/SecretReference", + "description": "PEM CA bundle for the authority. Omitted, the platform's trusted\nroots verify it." + }, + "url": { + "$ref": "#/$defs/Url", + "allOf": [ + { + "pattern": "^(?:[Hh][Tt][Tt][Pp][Ss]://|[Hh][Tt][Tt][Pp]://(?:[Ll][Oo][Cc][Aa][Ll][Hh][Oo][Ss][Tt]|127(?:\\.[0-9]{1,3}){3}|\\[::1\\])(?:[:/?#]|$))" + } + ], + "description": "Absolute `https` URL of the authority. `http` is accepted only for a\nloopback host (`localhost`, `127.0.0.0/8`, `[::1]`), for a test\nauthority on the same machine." + } + }, + "required": [ + "url" + ], + "type": "object" + }, + "Url": { + "description": "An absolute http or https URL with a host preserved as written, no user information, and no backslash, whitespace or control character. DNS case and equivalent IPv6 literals are permitted.", + "format": "uri", + "maxLength": 2048, + "pattern": "^[Hh][Tt][Tt][Pp][Ss]?://[^/?#@\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]+([/?#][^\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]*)?$", + "type": "string" + }, + "WithoutTimestamp": { + "description": "The acknowledgement a seal needs to go without a timestamp.", + "oneOf": [ + { + "const": "seal-stops-validating-when-certificate-expires", + "description": "The seal carries no timestamp, so it stops validating when its\ncertificate expires.", + "type": "string" + } + ] + }, + "ipv4SocketHost": { + "description": "Four canonical decimal IPv4 octets followed by a decimal port.", + "pattern": "^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?|0)\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?|0):[0-9]+$" + }, + "ipv6HexSocketHost": { + "description": "A bracketed hexadecimal IPv6 literal, including every RFC 3986 compression position, followed by a decimal port.", + "pattern": "^\\[(?:(?:[0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4}|(?:[0-9A-Fa-f]{1,4}:){1,7}:|(?:[0-9A-Fa-f]{1,4}:){1,6}:[0-9A-Fa-f]{1,4}|(?:[0-9A-Fa-f]{1,4}:){1,5}(?::[0-9A-Fa-f]{1,4}){1,2}|(?:[0-9A-Fa-f]{1,4}:){1,4}(?::[0-9A-Fa-f]{1,4}){1,3}|(?:[0-9A-Fa-f]{1,4}:){1,3}(?::[0-9A-Fa-f]{1,4}){1,4}|(?:[0-9A-Fa-f]{1,4}:){1,2}(?::[0-9A-Fa-f]{1,4}){1,5}|[0-9A-Fa-f]{1,4}:(?:(?::[0-9A-Fa-f]{1,4}){1,6})|:(?:(?::[0-9A-Fa-f]{1,4}){1,7}|:))\\]:[0-9]+$" + }, + "ipv6MixedSocketHost": { + "description": "A bracketed IPv6 literal whose final 32 bits use canonical dotted-decimal IPv4 notation, followed by a decimal port.", + "pattern": "^\\[(?:(?:[0-9A-Fa-f]{1,4}:){6}|::(?:[0-9A-Fa-f]{1,4}:){5}|(?:[0-9A-Fa-f]{1,4})?::(?:[0-9A-Fa-f]{1,4}:){4}|(?:(?:[0-9A-Fa-f]{1,4}:){0,1}[0-9A-Fa-f]{1,4})?::(?:[0-9A-Fa-f]{1,4}:){3}|(?:(?:[0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})?::(?:[0-9A-Fa-f]{1,4}:){2}|(?:(?:[0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})?::[0-9A-Fa-f]{1,4}:|(?:(?:[0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})?::)(?:(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?|0)\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?|0)\\]:[0-9]+$" + }, + "socketPort": { + "description": "A decimal u16 port, including zero and Rust-compatible leading zeroes.", + "pattern": ":0*(?:[0-9]{1,4}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$" + } + }, + "$id": "https://id.registrystack.org/schemas/render/runtime/runtime.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "allOf": [ + { + "if": { + "properties": { + "signing": { + "properties": { + "seals": { + "minProperties": 1 + } + }, + "required": [ + "seals" + ] + } + }, + "required": [ + "signing" + ] + }, + "then": { + "required": [ + "assuranceProfile" + ] + } + }, + { + "if": { + "properties": { + "assuranceProfile": { + "const": "local" + } + }, + "required": [ + "assuranceProfile" + ] + }, + "then": { + "properties": { + "signing": { + "properties": { + "seals": { + "additionalProperties": { + "properties": { + "signer": { + "properties": { + "type": { + "const": "local-jwk" + } + } + } + } + } + } + } + } + } + } + }, + { + "if": { + "properties": { + "assuranceProfile": { + "const": "production" + } + }, + "required": [ + "assuranceProfile" + ] + }, + "then": { + "properties": { + "signing": { + "properties": { + "seals": { + "additionalProperties": { + "properties": { + "signer": { + "properties": { + "type": { + "const": "transit" + } + } + } + } + } + } + } + } + } + } + } + ], + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/render/runtime/v1alpha1", + "type": "string" + }, + "assuranceProfile": { + "$ref": "#/$defs/AssuranceProfile", + "description": "The assurance boundary of this deployment's seals, the same member\nand values Evidence declares. Required when `signing` declares a\nseal, and unused otherwise. `local` signs with a `local-jwk` key\nfile and marks every seal a test seal; `production` signs through\n`transit` only, so a production key never leaves Transit." + }, + "audit": { + "$ref": "#/$defs/AuditRuntime" + }, + "authentication": { + "$ref": "#/$defs/AuthenticationRuntime" + }, + "kind": { + "const": "RenderRuntimeConfig", + "type": "string" + }, + "limits": { + "$ref": "#/$defs/LimitsRuntime" + }, + "listener": { + "$ref": "#/$defs/ListenerRuntime" + }, + "package": { + "$ref": "#/$defs/PackageConfig", + "allOf": [ + { + "properties": { + "root": { + "not": { + "pattern": "(^|/)\\.{1,2}(/|$)" + } + } + } + } + ], + "description": "The verified bundle package Render serves." + }, + "secretProviders": { + "$ref": "#/$defs/SecretProvidersConfig", + "description": "Providers for secret references. Omit when the authentication mode uses\nno secret references." + }, + "signing": { + "$ref": "#/$defs/SigningRuntime", + "description": "Optional document sealing. Omit it and Render loads no signer, makes\nno timestamp call, and cannot seal any document." + } + }, + "required": [ + "apiVersion", + "kind", + "listener", + "package", + "authentication", + "audit" + ], + "title": "Registry Render runtime configuration", + "type": "object" +} diff --git a/src/artifacts/sha256/c347ed37907da3fbef25720354b8042c3ce8477437c4a38b81ce2aa718c0b96c.json b/src/artifacts/sha256/c347ed37907da3fbef25720354b8042c3ce8477437c4a38b81ce2aa718c0b96c.json new file mode 100644 index 000000000..1857229df --- /dev/null +++ b/src/artifacts/sha256/c347ed37907da3fbef25720354b8042c3ce8477437c4a38b81ce2aa718c0b96c.json @@ -0,0 +1,314 @@ +{ + "$defs": { + "AccessProfile": { + "additionalProperties": false, + "description": "One access profile: the scopes (and, where it is bound to them, the\npurposes) a client receives by being granted it.", + "properties": { + "actorKind": { + "anyOf": [ + { + "$ref": "#/$defs/ActorKind" + }, + { + "type": "null" + } + ], + "description": "The `registry_actor_kind` the product requires of every principal\nthat holds this profile, when it requires one without selecting the\nprofile by it. A product that selects by the claim states it in\n`selectedBy` instead. On an exchange profile it is the kind the\nproduct requires of the client's own bootstrap token, which the\nproduct checks before it issues the assertion. Omitted: the profile\nadmits any kind." + }, + "admittedActorKinds": { + "description": "The `registry_actor_kind` values the product admits for this profile\nwithout selecting it by them, when it admits only some kinds. A\nprofile that selects by the claim, or requires one kind, states that\nin `selectedBy` or `actorKind` instead. Omitted: the profile admits\nany kind.", + "items": { + "$ref": "#/$defs/ActorKind" + }, + "type": "array", + "uniqueItems": true + }, + "exchange": { + "anyOf": [ + { + "$ref": "#/$defs/ExchangeBinding" + }, + { + "type": "null" + } + ] + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "purposes": { + "items": { + "type": "string" + }, + "maxItems": 16, + "type": "array", + "uniqueItems": true + }, + "refusedClaims": { + "description": "Declared claims the product refuses a token for this profile with:\nit never selects the profile for a principal that carries any of\nthem. On an exchange profile the product applies it to the exchanged\ntoken, not to the client's own. Omitted: no claim refuses the\nprofile.", + "items": { + "pattern": "^[A-Za-z0-9_]{1,128}$", + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "requesterClients": { + "description": "Narrows `allowedClients` for this profile; omitted narrows nothing.", + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ], + "uniqueItems": true + }, + "requiredClaims": { + "description": "Declared claims the product refuses a token for this profile without.\nThe token subject (`sub`) is always present and is never listed. A\nclaim the generator derives (`registry_actor_kind`,\n`registry_purpose`) counts as carried. Omitted: the profile requires\nno claim beyond those the other members state.", + "items": { + "pattern": "^[A-Za-z0-9_]{1,128}$", + "type": "string" + }, + "maxItems": 64, + "type": "array", + "uniqueItems": true + }, + "scopes": { + "items": { + "type": "string" + }, + "maxItems": 32, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "selectedBy": { + "additionalProperties": { + "items": { + "type": "string" + }, + "maxItems": 32, + "type": "array", + "uniqueItems": true + }, + "description": "The claim values by which the product selects this profile: for each\nclaim name, the values a principal's claim must carry. A `string`\nclaim names exactly one value; a `string-array` claim names at least\none, all of which the principal must carry. Omitted: the product\ndoes not select this profile by claim values, so no claim check\napplies to it.", + "maxProperties": 64, + "propertyNames": { + "$ref": "#/$defs/ExternalId", + "allOf": [ + { + "pattern": "^[A-Za-z0-9_]{1,128}$" + } + ] + }, + "type": "object" + } + }, + "required": [ + "id", + "scopes" + ], + "type": "object" + }, + "ActorKind": { + "description": "The kind of principal a token represents, as `registry_actor_kind`\ncarries it.", + "enum": [ + "human", + "agent", + "service" + ], + "type": "string" + }, + "Admission": { + "anyOf": [ + { + "const": "unrestricted" + }, + { + "items": { + "$ref": "#/$defs/ExternalId" + }, + "maxItems": 256, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + ], + "description": "`unrestricted`, or the exact client ids the product admits." + }, + "AssertionIssuer": { + "additionalProperties": false, + "description": "One external authority whose signed assertions a product accepts for\ntoken exchange.", + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "issuer": { + "$ref": "#/$defs/Url" + }, + "jwksUrl": { + "$ref": "#/$defs/Url" + }, + "mapping": { + "$ref": "#/$defs/AssertionMapping" + }, + "projectedClaims": { + "additionalProperties": { + "$ref": "#/$defs/ClaimType" + }, + "description": "The signed claims a first-party signer projects, by name.", + "propertyNames": { + "$ref": "#/$defs/ExternalId", + "allOf": [ + { + "pattern": "^[A-Za-z0-9_]{1,128}$" + } + ] + }, + "type": "object" + } + }, + "required": [ + "id", + "issuer", + "jwksUrl", + "mapping" + ], + "type": "object" + }, + "AssertionMapping": { + "description": "How an assertion authority's signed claims become token claims.", + "oneOf": [ + { + "const": "institutional-grant", + "description": "An institutional grant: the issuer derives grant provenance.", + "type": "string" + }, + { + "const": "first-party", + "description": "A first-party signer: only `projectedClaims` are copied.", + "type": "string" + } + ] + }, + "ClaimType": { + "description": "The type of a claim's value.", + "enum": [ + "string", + "string-array" + ], + "type": "string" + }, + "ExchangeBinding": { + "additionalProperties": false, + "description": "A profile that is reached by exchanging an assertion, not by presenting\nits scopes directly.", + "properties": { + "assertionIssuerId": { + "description": "The `id` of an entry of `assertionIssuers`.", + "type": "string" + }, + "bootstrapAudience": { + "description": "The audience of the resource that accepts the assertion.", + "type": "string" + }, + "bootstrapScope": { + "description": "The one scope a client holds to present an assertion.", + "type": "string" + } + }, + "required": [ + "assertionIssuerId", + "bootstrapAudience", + "bootstrapScope" + ], + "type": "object" + }, + "ExternalId": { + "description": "An identifier another system issues, written exactly as its issuer gives it.", + "maxLength": 512, + "minLength": 1, + "pattern": "^[^\\u0000-\\u001F\\u007F-\\u009F]+$", + "type": "string" + }, + "LocalId": { + "description": "A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.", + "pattern": "^[a-z][a-z0-9_-]{0,63}$", + "type": "string" + }, + "Url": { + "description": "An absolute http or https URL with a host preserved as written, no user information, and no backslash, whitespace or control character. DNS case and equivalent IPv6 literals are permitted.", + "format": "uri", + "maxLength": 2048, + "pattern": "^[Hh][Tt][Tt][Pp][Ss]?://[^/?#@\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]+([/?#][^\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]*)?$", + "type": "string" + } + }, + "$id": "https://id.registrystack.org/schemas/platform/identity-facts/identity-facts.v1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "description": "What one product expects of the issuer.", + "properties": { + "accessProfiles": { + "items": { + "$ref": "#/$defs/AccessProfile" + }, + "maxItems": 64, + "type": "array" + }, + "allowedClients": { + "$ref": "#/$defs/Admission" + }, + "apiVersion": { + "const": "id.registrystack.org/formats/platform/identity-facts/v1", + "type": "string" + }, + "assertionIssuers": { + "items": { + "$ref": "#/$defs/AssertionIssuer" + }, + "maxItems": 8, + "type": "array" + }, + "audience": { + "type": "string" + }, + "claims": { + "additionalProperties": { + "$ref": "#/$defs/ClaimType" + }, + "description": "The claims the product reads from a token, by name.", + "maxProperties": 64, + "propertyNames": { + "$ref": "#/$defs/ExternalId", + "allOf": [ + { + "pattern": "^[A-Za-z0-9_]{1,128}$" + } + ] + }, + "type": "object" + }, + "issuer": { + "$ref": "#/$defs/Url" + }, + "kind": { + "const": "PlatformIdentityFacts", + "type": "string" + }, + "product": { + "description": "The product that wrote these facts, as a local identifier.", + "type": "string" + } + }, + "required": [ + "apiVersion", + "kind", + "product", + "issuer", + "audience", + "allowedClients" + ], + "title": "Registry Stack identity facts", + "type": "object" +} diff --git a/src/artifacts/sha256/c731a74bea9e4d649dd2e0d074e20a10e617c6ef844ec6f8223fae78b3f0b28d.yaml b/src/artifacts/sha256/c731a74bea9e4d649dd2e0d074e20a10e617c6ef844ec6f8223fae78b3f0b28d.yaml new file mode 100644 index 000000000..6daae6fb3 --- /dev/null +++ b/src/artifacts/sha256/c731a74bea9e4d649dd2e0d074e20a10e617c6ef844ec6f8223fae78b3f0b28d.yaml @@ -0,0 +1,275 @@ +$schema: https://json-schema.org/draft/2020-12/schema +$id: https://id.registrystack.org/schemas/evidence/holder-bound-verification-policy/holder-bound-verification-policy.v1.schema.json +title: Evidence relying-procedure holder-bound presentation verification policy Version 1 +type: object +additionalProperties: false +required: + - apiVersion + - kind + - subjectBinding + - expectedAssuranceProfile + - issuedBy + - providedBy + - requirement + - evidenceType + - expectedIssuancePurpose + - configurationRevision + - expectedSubjects + - expectedOutputs + - maximumAssertionLifetimeSeconds + - revokedKeyIds + - keyBindingAudience + - keyBindingNonce + - maximumKeyBindingAgeSeconds +properties: + apiVersion: + const: id.registrystack.org/formats/evidence/holder-bound-verification-policy/v1 + kind: + const: EvidenceHolderBoundVerificationPolicy + subjectBinding: + const: holder-bound + description: >- + The binding mode this document governs. It is stated rather than + inferred, so a holder-bound presentation and an audience-scoped response + can never be verified under each other's expectations. + expectedAssuranceProfile: {enum: [local, production, evidence-grade]} + issuedBy: {type: string, format: uri, maxLength: 512} + providedBy: {type: string, format: uri, maxLength: 512} + requirement: {type: string, format: uri, maxLength: 512} + evidenceType: {type: string, format: uri, maxLength: 512} + expectedIssuancePurpose: + type: string + pattern: '^[a-z][a-z0-9._:-]{0,127}$' + description: >- + The purpose the credential was issued under, compared as signed issuance + provenance. It is named for what it is: a record of why the assertion was + produced, never a downstream use limit, licence, or authorization for + what the relying party may now do with it. + configurationRevision: + type: string + pattern: '^sha256:[a-f0-9]{64}$' + description: >- + The requirement-scoped revision the relying party pinned, as the + requirement's own definition published it. A deployment's unrelated edits + do not change it. + expectedSubjects: + type: array + minItems: 1 + maxItems: 8 + uniqueItems: true + description: >- + Unordered set of unique role-bound opaque bindings, pinned from + independent trusted state and never recomputed. A holder-bound binding is + an HMAC under a deployment secret, so a relying party cannot derive it + from the holder key and this document carries no expectation that could + be mistaken for a derivation input. Subject order alone is never + semantic. + items: {$ref: '#/$defs/expected-subject'} + expectedOutputs: + type: array + minItems: 1 + maxItems: 16 + uniqueItems: true + description: >- + Expected concept identifiers, value forms, and cardinalities, one per + disclosed Supported Value. A holder-bound requirement cannot declare an + entity-reference value form, so an expectation naming one can never be + satisfied. + items: {$ref: '#/$defs/expected-output'} + maximumAssertionLifetimeSeconds: + type: integer + minimum: 1 + maximum: 31536000 + description: Longest acceptable validUntil minus issuedAt interval. + revokedKeyIds: + type: array + maxItems: 33 + uniqueItems: true + items: {type: string, pattern: '^[A-Za-z0-9_-]{42}[AEIMQUYcgkosw048]$'} + description: Emergency denylist of Evidence service-key RFC 7638 thumbprints, checked before a pinned JWKS key is selected. An empty list is explicit. It denies service signing keys and never holder keys. + keyBindingAudience: + type: string + format: uri + maxLength: 512 + description: >- + The audience the relying party itself put in the challenge it issued. It + is verifier-asserted rather than issuer-signed, so it proves who the + presenter addressed and never who the issuer intended. + keyBindingNonce: + type: string + pattern: '^[A-Za-z0-9_-]{43}$' + description: >- + The exact nonce from the challenge the relying party issued and retained. + Comparing it is not consuming it: the same presentation verifies again + under the same document, and retiring a nonce belongs to the relying + party's own challenge lifecycle. + maximumKeyBindingAgeSeconds: + type: integer + minimum: 1 + maximum: 300 + description: >- + Longest accepted interval between the key-binding JWT's iat and the + verification instant. It bounds how stale a proof of possession may be + and is not a replay window, because no state records that a proof was + already accepted. + acceptedChannels: + type: array + minItems: 1 + maxItems: 2 + uniqueItems: true + items: {enum: [source, holder-presented]} + description: >- + The channels this procedure accepts, from the closed channel vocabulary. + Omitting it means source only, so a procedure written before the channel + member existed refuses an assertion that a holder presented. An empty + list is refused; an open choice is every channel listed. + maximumCredentialAgeSeconds: + type: integer + minimum: 1 + maximum: 315360000 + description: >- + Longest acceptable observedAt minus presentedCredential.issuedAt, applied + to holder-presented assertions only. Omitting it means no bound on the + credential's age. + clockSkewSeconds: + type: integer + minimum: 0 + maximum: 300 + default: 0 + description: >- + The only tolerance in this document, applied to assertion validity and to + how far ahead of the verification instant a key-binding iat may sit. + Omitting it means zero tolerance. There is no second skew knob. + expectedHolderKeyThumbprint: + type: string + pattern: '^[A-Za-z0-9_-]{42}[AEIMQUYcgkosw048]$' + description: >- + Optional RFC 7638 thumbprint of a pre-established holder key. Supply it + only when the relying party already knows which holder it is talking to, + to authenticate that specific key. It is not needed to prove possession: + the key-binding JWT signature over cnf establishes that on its own, and + requiring this field would force every relying party into an out-of-band + holder registration it may not have. +$defs: + expected-subject: + type: object + additionalProperties: false + required: [role, binding] + properties: + role: {type: string, pattern: '^[a-z][a-z0-9._-]{0,63}$'} + binding: {type: string, pattern: '^urn:evidence:subject:v[1-9][0-9]*_[A-Za-z0-9_-]{43}$'} + expected-output: + type: object + additionalProperties: false + required: [handle, concept, required, form] + properties: + handle: {type: string, pattern: '^[a-z][a-z0-9._-]{0,127}$'} + concept: {type: string, format: uri, maxLength: 512} + required: {type: boolean} + form: {$ref: '#/$defs/expected-form'} + expected-form: + oneOf: + - type: object + additionalProperties: false + required: [type] + properties: + type: {const: boolean} + - type: object + additionalProperties: false + required: [type] + properties: + type: {const: integer} + - type: object + additionalProperties: false + required: [type] + properties: + type: {const: string} + - type: object + additionalProperties: false + required: [type] + properties: + type: {const: date-bucket} + - type: object + additionalProperties: false + required: [type] + properties: + type: {const: time-bucket} + - type: object + additionalProperties: false + required: [type] + properties: + type: {const: entity-reference} + - type: object + additionalProperties: false + required: [type] + properties: + type: {const: structured} + - type: object + additionalProperties: false + required: [type, items, minimumItems, maximumItems, unique] + properties: + type: {const: list} + items: {enum: [string, entity-reference]} + minimumItems: {type: integer, minimum: 1, maximum: 64} + maximumItems: {type: integer, minimum: 1, maximum: 64} + unique: {const: true} +ownership: + document: relying party + producer: the relying procedure that issued the key-binding challenge and pinned the expected subject bindings from independent trusted state + consumer: offline re-verification by the `evidence verify-presentation` operator command +command: + surface: evidence verify-presentation --sd-jwt-vc-presentation --jwks --policy [--at ] + sd-jwt-vc-presentation: one stored SD-JWT VC presentation file, in the issued compact serialization with the holder's key-binding JWT appended after the last tilde + format_selection: naming the input states its shape; a stored credential ending in a trailing tilde carries no key-binding JWT and is refused rather than verified without possession + key_binding_input: the key-binding JWT is part of the compact presentation, so there is no separate input file for it + policy_scope: this document governs holder-bound presentations only, and the Version 1 document governs audience-scoped signed JWS and SD-JWT VC responses; neither command accepts the other's document + jwks: the pinned trusted key set, which is the complete trust set for the run + policy: one document accepted by this schema + at: strict RFC 3339 at zero offset; system time when omitted + network: prohibited; no socket is opened, no metadata is resolved, and no key is fetched + input_bound: every input file is refused above 1 MiB before it is read + replay: verifying the same presentation twice succeeds twice; the command compares the expected nonce without consuming it and retains no state between runs +output: + lines: + - 'verified-at: the chosen verification instant' + - 'authentic: yes or no, printed once verification ran' + - 'possession: what the run proved and what it did not, per possession_statement below, printed for an authentic presentation before its currency is known' + - 'currently-valid: yes or no, printed only for an authentic presentation' + inspection: on full success the verified Evidence JSON is also printed, for the operator who already holds the stored presentation + failure: only the closed class is reported, on standard error, with no field-level detail + classes: [malformed, protected-header, key, signature, payload, policy, time, disclosure, key-binding] + disclosure_class: reported only when the presented disclosures do not reconstruct the payload the issuer signature covers + key_binding_class: >- + Reported for every key-binding failure, including an absent key-binding + JWT, a signer other than the confirmation key, a rejected header member or + algorithm, a mismatched audience, nonce, or sd_hash, and an iat outside the + accepted window. A presentation whose issuer signature verifies and whose + key binding fails is rejected, never reported as an issuer-only success. + possession_statement: >- + Success proves the presenter held the confirmation key's private key when + the key-binding JWT was signed. It does not prove that the presentation is + fresh, single-use, or unreplayed. + exit_codes: + 0: authentic, possession proven, and currently valid + 3: authentic and possession proven, but not currently valid + 1: every other outcome, including a policy mismatch, a key-binding failure, an unusable input document, and an unreadable file +$comment: >- + Every expectation and revoked-key decision in this document must come from independent trusted state, + such as the challenge the relying party issued and retained and an accepted + original transaction. Copying values out of the presentation under + verification proves nothing, and a policy that omitted an expectation would + silently skip a comparison, so the document is closed and every field except + clockSkewSeconds, expectedHolderKeyThumbprint, acceptedChannels, and + maximumCredentialAgeSeconds is required. The optional + holder key thumbprint authenticates a pre-established holder and is not what + proves possession; the key-binding signature over the credential's own + confirmation key is. A failed comparison reports one generic class and never + which comparison failed: the expected role-bound subject set, the expected + output contract, and every other policy expectation report the one policy + class, and the expected key-binding audience, nonce, and proof age report the + one key-binding class, so re-verification is never an oracle. Because key + binding is verified before any policy comparison runs, a failed possession + proof also never reveals whether the policy would have matched. Authenticity, proven possession, + and current usability are separate answers: a presentation may be + cryptographically authentic and possession-proven without being current + evidence. diff --git a/src/artifacts/sha256/cab7ff0a619109662b006d87d211743af4a9cc64977c0f01b64889e691d24a84.json b/src/artifacts/sha256/cab7ff0a619109662b006d87d211743af4a9cc64977c0f01b64889e691d24a84.json new file mode 100644 index 000000000..91ee846a4 --- /dev/null +++ b/src/artifacts/sha256/cab7ff0a619109662b006d87d211743af4a9cc64977c0f01b64889e691d24a84.json @@ -0,0 +1,5775 @@ +{ + "$defs": { + "AccessLogExemptionSource": { + "additionalProperties": false, + "description": "Delayed subject disclosure for reads under one access profile.", + "properties": { + "delayDays": { + "description": "Days after the read when the entry becomes visible to the subject.", + "format": "uint16", + "maximum": 3649, + "minimum": 1, + "type": "integer" + }, + "reason": { + "allOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + ], + "description": "Bounded policy reason retained and audited with each delayed entry." + }, + "sourceRecordType": { + "description": "Record type whose access profile authorizes the read. Omitted for direct reads of the logged record type.", + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-z][a-z0-9_-]*$", + "type": "string" + } + }, + "required": [ + "reason", + "delayDays" + ], + "type": "object" + }, + "AccessLogSource": { + "additionalProperties": false, + "description": "Governed subject-facing access-log policy for an entity.", + "properties": { + "exemptions": { + "additionalProperties": { + "$ref": "#/$defs/AccessLogExemptionSource" + }, + "description": "Access profiles whose entries become subject-visible only after a policy delay.", + "maxProperties": 64, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "retentionDays": { + "default": 90, + "description": "Days each entry remains available before bounded background erasure.", + "format": "uint16", + "maximum": 3650, + "minimum": 1, + "type": "integer" + }, + "subjectField": { + "description": "Required plaintext string or text field matched to the subject's verified principal.", + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-z][a-z0-9_-]*$", + "type": "string" + }, + "trustedIntermediaries": { + "description": "Verified intermediary client IDs allowed to forward original requester attribution.", + "items": { + "type": "string" + }, + "maxItems": 64, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "subjectField" + ], + "type": "object" + }, + "AccessProfileSource": { + "additionalProperties": false, + "properties": { + "actorKind": { + "$ref": "#/$defs/ActorKindSource" + }, + "allowCount": { + "type": "boolean" + }, + "allowDataExport": { + "default": false, + "type": "boolean" + }, + "default": { + "default": false, + "type": "boolean" + }, + "display": { + "$ref": "#/$defs/PresentationSource" + }, + "filterableFields": { + "default": [], + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "lookups": { + "items": { + "$ref": "#/$defs/LookupPermissionSource" + }, + "type": "array" + }, + "membershipBoundaries": { + "items": { + "$ref": "#/$defs/MembershipBoundarySource" + }, + "type": "array" + }, + "operations": { + "items": { + "$ref": "#/$defs/Operation" + }, + "type": "array", + "uniqueItems": true + }, + "principalClaim": { + "description": "The token claim that names the caller. Every profile serves authenticated callers, so every profile names one.", + "type": "string" + }, + "provenanceFields": { + "items": { + "$ref": "#/$defs/ProvenanceFieldSource" + }, + "type": "array", + "uniqueItems": true + }, + "readPaths": { + "items": { + "$ref": "#/$defs/ReadPathPermissionSource" + }, + "type": "array" + }, + "readableFields": { + "default": [], + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "requesterClients": { + "description": "The OAuth clients whose tokens may select this profile. Omit to accept every client.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "requireConsent": { + "items": { + "$ref": "#/$defs/ConsentRequirementSource" + }, + "type": "array" + }, + "requiredPurposes": { + "description": "The verified token's purpose must match one listed value. Omit to accept every purpose.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "requiredScopes": { + "$ref": "#/$defs/RequiredScopes", + "description": "The scopes the verified token must carry: `unrestricted`, or a list of at least one scope, all of which must be present." + }, + "revisionAccess": { + "default": false, + "type": "boolean" + }, + "rowBoundaries": { + "$ref": "#/$defs/RowBoundaries", + "description": "Row reach: `unrestricted`, or a list of at least one row boundary." + }, + "sortableFields": { + "default": [], + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "spatialQueries": { + "$ref": "#/$defs/SpatialQueryPermissionSource" + }, + "taskGrant": { + "$ref": "#/$defs/CompiledTaskGrantSource" + }, + "writableFields": { + "default": [], + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "id", + "principalClaim", + "requiredScopes", + "operations", + "rowBoundaries" + ], + "type": "object" + }, + "AccessRequirementsSource": { + "additionalProperties": false, + "description": "Compile-time requirements, not grants. Profiles must explicitly satisfy them.", + "properties": { + "allowedPurposes": { + "description": "Every profile must restrict purpose to a subset of these values. Omit to demand no purpose.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "requiredScopes": { + "description": "Every profile must require all these scopes. Requirements never grant access. Omit to demand no scope.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "rowBoundaries": { + "description": "Every profile must include these exact field, verified-claim, and operator bindings. Omit to demand no row boundary.", + "items": { + "$ref": "#/$defs/RowBoundarySource" + }, + "minItems": 1, + "type": "array" + } + }, + "type": "object" + }, + "ActionEffectSource": { + "additionalProperties": false, + "properties": { + "clear": { + "default": [], + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "operation": { + "$ref": "#/$defs/Operation" + }, + "set": { + "additionalProperties": { + "$ref": "#/$defs/ActionValueSource" + }, + "default": {}, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "target": { + "$ref": "#/$defs/ActionTargetSource" + } + }, + "required": [ + "target", + "operation" + ], + "type": "object" + }, + "ActionEvidenceSource": { + "additionalProperties": false, + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "maximumObservationAgeSeconds": { + "format": "uint64", + "maximum": 300, + "minimum": 1, + "type": "integer" + }, + "outputs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "provider": { + "type": "string" + }, + "requirement": { + "type": "string" + }, + "subjects": { + "additionalProperties": { + "$ref": "#/$defs/EvidenceSubjectSource" + }, + "propertyNames": { + "$ref": "#/$defs/ExternalId" + }, + "type": "object" + } + }, + "required": [ + "id", + "provider", + "requirement", + "subjects", + "outputs", + "maximumObservationAgeSeconds" + ], + "type": "object" + }, + "ActionExecutionSource": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "mode": { + "const": "immediate", + "type": "string" + } + }, + "required": [ + "mode" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "mode": { + "const": "proposal", + "type": "string" + }, + "proposal": { + "$ref": "#/$defs/ProposalPolicySource" + } + }, + "required": [ + "mode", + "proposal" + ], + "type": "object" + } + ] + }, + "ActionHandlerKindSource": { + "description": "The authored action-handler backend. The wasm backend is admitted when\nthis build of the compiler carries the `wasm` cargo feature, which\nvalidates a declared WASM handler module against the platform guest\nABI at compile time; without that feature a declared WASM handler is\nrefused with the pinned `breg.action.handler-wasm-build-unsupported`\ndiagnostic.", + "enum": [ + "rhai", + "wasm" + ], + "type": "string" + }, + "ActionHandlerRefusalSource": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "label": { + "$ref": "#/$defs/DisplayText" + } + }, + "required": [ + "code", + "label" + ], + "type": "object" + }, + "ActionHandlerWriteSource": { + "additionalProperties": false, + "properties": { + "fields": { + "items": { + "type": "string" + }, + "type": "array" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "operation": { + "$ref": "#/$defs/Operation" + }, + "target": { + "$ref": "#/$defs/ActionTargetSource" + } + }, + "required": [ + "id", + "target", + "operation", + "fields" + ], + "type": "object" + }, + "ActionInputSource": { + "anyOf": [ + { + "oneOf": [ + { + "properties": { + "type": { + "const": "boolean", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "properties": { + "maximumLength": { + "format": "uint32", + "maximum": 1000000, + "minimum": 1, + "type": "integer" + }, + "minimumLength": { + "default": 0, + "format": "uint32", + "maximum": 1000000, + "minimum": 0, + "type": "integer" + }, + "type": { + "const": "string", + "type": "string" + } + }, + "required": [ + "type", + "maximumLength" + ], + "type": "object" + }, + { + "properties": { + "maximumLength": { + "format": "uint32", + "maximum": 10000000, + "minimum": 1, + "type": "integer" + }, + "type": { + "const": "text", + "type": "string" + } + }, + "required": [ + "type", + "maximumLength" + ], + "type": "object" + }, + { + "properties": { + "type": { + "const": "int64", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "properties": { + "maximum": { + "type": "string" + }, + "minimum": { + "type": "string" + }, + "precision": { + "format": "uint32", + "maximum": 38, + "minimum": 1, + "type": "integer" + }, + "scale": { + "format": "uint32", + "maximum": 38, + "minimum": 0, + "type": "integer" + }, + "type": { + "const": "decimal", + "type": "string" + } + }, + "required": [ + "type", + "precision", + "scale" + ], + "type": "object" + }, + { + "properties": { + "type": { + "const": "date", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "properties": { + "type": { + "const": "timestamp", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "properties": { + "type": { + "const": "uuid", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "properties": { + "type": { + "const": "vocabulary-code", + "type": "string" + }, + "values": { + "default": [], + "items": { + "type": "string" + }, + "type": "array" + }, + "vocabulary": { + "type": "string" + } + }, + "required": [ + "type", + "vocabulary" + ], + "type": "object" + }, + { + "properties": { + "onDelete": { + "$ref": "#/$defs/ReferenceDelete", + "default": "restrict" + }, + "target": { + "type": "string" + }, + "type": { + "const": "reference", + "type": "string" + } + }, + "required": [ + "type", + "target" + ], + "type": "object" + }, + { + "properties": { + "bbox": { + "$ref": "#/$defs/Crs84BboxSource" + }, + "precision": { + "format": "uint32", + "maximum": 9, + "minimum": 0, + "type": "integer" + }, + "type": { + "const": "crs84-point", + "type": "string" + } + }, + "required": [ + "type", + "precision" + ], + "type": "object" + }, + { + "properties": { + "maximumBytes": { + "format": "uint32", + "maximum": 1048576, + "minimum": 1, + "type": "integer" + }, + "schema": { + "x-registry-foreign": "json-schema-2020-12" + }, + "type": { + "const": "structured", + "type": "string" + } + }, + "required": [ + "type", + "maximumBytes", + "schema" + ], + "type": "object" + } + ], + "properties": { + "apiName": { + "type": "string" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource", + "default": {} + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "pattern": { + "description": "Native PostgreSQL ARE expression the submitted string must match, in the\ndialect and with the bounds of a Record field `pattern`.", + "type": "string" + }, + "required": { + "default": false, + "type": "boolean" + } + }, + "required": [ + "id", + "classification" + ], + "type": "object", + "unevaluatedProperties": false + }, + { + "additionalProperties": false, + "properties": { + "apiName": { + "type": "string" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "pattern": { + "type": "string" + }, + "required": { + "default": false, + "type": "boolean" + }, + "typeRef": { + "$ref": "#/$defs/LocalId" + } + }, + "required": [ + "id", + "typeRef", + "classification" + ], + "type": "object" + } + ] + }, + "ActionPermissionSource": { + "additionalProperties": false, + "description": "What a profile may do with one action. An action has no rows of its own:\nthe row reach of what it touches is written on each target.", + "properties": { + "action": { + "type": "string" + }, + "operations": { + "items": { + "$ref": "#/$defs/Operation" + }, + "type": "array", + "uniqueItems": true + }, + "results": { + "default": [], + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "targets": { + "default": [], + "items": { + "$ref": "#/$defs/ActionTargetPermissionSource" + }, + "type": "array" + } + }, + "required": [ + "action", + "operations" + ], + "type": "object" + }, + "ActionPlanSource": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "effects": { + "items": { + "$ref": "#/$defs/ActionEffectSource" + }, + "type": "array" + }, + "type": { + "const": "fixed", + "type": "string" + } + }, + "required": [ + "type", + "effects" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "function": { + "type": "string" + }, + "inputs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "refusals": { + "default": [], + "items": { + "$ref": "#/$defs/ActionHandlerRefusalSource" + }, + "type": "array" + }, + "type": { + "const": "function", + "type": "string" + }, + "writes": { + "items": { + "$ref": "#/$defs/ActionHandlerWriteSource" + }, + "type": "array" + } + }, + "required": [ + "type", + "function", + "inputs", + "writes" + ], + "type": "object" + } + ] + }, + "ActionRequirementSource": { + "additionalProperties": false, + "properties": { + "atLeast": { + "format": "int64", + "maximum": 9223372036854775807, + "minimum": -9223372036854775808, + "type": "integer" + }, + "atLeastFromInput": { + "description": "Requires the stored value to be at or above the named required action\ninput of the same date, instant, or integer type.", + "type": "string" + }, + "atMost": { + "format": "int64", + "maximum": 9223372036854775807, + "minimum": -9223372036854775808, + "type": "integer" + }, + "atMostFromInput": { + "description": "Requires the stored value to be at or below the named required action\ninput of the same date, instant, or integer type.", + "type": "string" + }, + "currentDate": { + "$ref": "#/$defs/CurrentDatePredicateSource" + }, + "equals": { + "$ref": "#/$defs/ScalarLiteral" + }, + "equalsFromInput": { + "type": "string" + }, + "field": { + "default": "", + "type": "string" + }, + "input": { + "type": "string" + }, + "isNull": { + "const": true, + "description": "Requires the stored value to be unset. Only `true` is read.", + "type": "boolean" + }, + "reason": { + "$ref": "#/$defs/LocalId", + "description": "Stable application copy key; disclosure still requires readable guard facts." + }, + "revision": { + "$ref": "#/$defs/GuardRevisionSource" + } + }, + "required": [ + "input" + ], + "type": "object" + }, + "ActionSource": { + "additionalProperties": false, + "properties": { + "apiName": { + "type": "string" + }, + "commitGuards": { + "$ref": "#/$defs/CommitGuardsSource", + "default": { + "evidence": [], + "targets": [] + } + }, + "consentIssuer": { + "$ref": "#/$defs/ConsentIssuerSource" + }, + "display": { + "$ref": "#/$defs/ModelDisplaySource", + "default": {} + }, + "evidence": { + "items": { + "$ref": "#/$defs/ActionEvidenceSource" + }, + "type": "array" + }, + "execution": { + "$ref": "#/$defs/ActionExecutionSource" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "inputs": { + "default": [], + "items": { + "$ref": "#/$defs/ActionInputSource" + }, + "type": "array" + }, + "plan": { + "$ref": "#/$defs/ActionPlanSource" + } + }, + "required": [ + "id", + "execution", + "plan" + ], + "type": "object" + }, + "ActionTargetPermissionSource": { + "additionalProperties": false, + "properties": { + "recordType": { + "type": "string" + }, + "rowBoundaries": { + "$ref": "#/$defs/RowBoundaries", + "description": "Row reach: `unrestricted`, or a list of at least one row boundary." + } + }, + "required": [ + "recordType", + "rowBoundaries" + ], + "type": "object" + }, + "ActionTargetSource": { + "additionalProperties": false, + "properties": { + "fromInput": { + "type": "string" + }, + "recordType": { + "type": "string" + } + }, + "type": "object" + }, + "ActionValueSource": { + "additionalProperties": false, + "properties": { + "fromEffect": { + "type": "string" + }, + "fromInput": { + "type": "string" + }, + "value": true + }, + "type": "object" + }, + "ActorKindSource": { + "enum": [ + "human", + "agent", + "service" + ], + "type": "string" + }, + "AttachmentSlotSource": { + "additionalProperties": false, + "properties": { + "classification": { + "$ref": "#/$defs/Classification" + }, + "contentTypes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "maximumBytes": { + "format": "uint32", + "maximum": 16777216, + "minimum": 1, + "type": "integer" + }, + "required": { + "type": "boolean" + } + }, + "required": [ + "id", + "required", + "maximumBytes", + "contentTypes", + "classification" + ], + "type": "object" + }, + "BatchSource": { + "additionalProperties": false, + "properties": { + "maximumBytes": { + "format": "uint32", + "maximum": 2097152, + "minimum": 1, + "type": "integer" + }, + "maximumItems": { + "format": "uint32", + "maximum": 100, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "maximumItems", + "maximumBytes" + ], + "type": "object" + }, + "BooleanFieldSourceSchema": { + "additionalProperties": false, + "properties": { + "apiName": { + "type": "string" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "required": { + "default": false, + "type": "boolean" + }, + "type": { + "enum": [ + "boolean" + ], + "type": "string" + }, + "validTimeRole": { + "$ref": "#/$defs/ValidTimeRole" + } + }, + "required": [ + "id", + "type", + "classification" + ], + "type": "object" + }, + "BoundaryOperator": { + "enum": [ + "equals", + "in" + ], + "type": "string" + }, + "Classification": { + "enum": [ + "public", + "internal", + "restricted" + ], + "type": "string" + }, + "CommitEvidenceRequirementSource": { + "additionalProperties": false, + "properties": { + "atLeast": { + "format": "int64", + "maximum": 9223372036854775807, + "minimum": -9223372036854775808, + "type": "integer" + }, + "atMost": { + "format": "int64", + "maximum": 9223372036854775807, + "minimum": -9223372036854775808, + "type": "integer" + }, + "equals": true, + "equalsFromInput": { + "type": "string" + }, + "output": { + "type": "string" + } + }, + "required": [ + "output" + ], + "type": "object" + }, + "CommitEvidenceSelectorSource": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "input": { + "type": "string" + }, + "type": { + "const": "input", + "type": "string" + } + }, + "required": [ + "type", + "input" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "field": { + "type": "string" + }, + "input": { + "type": "string" + }, + "type": { + "const": "target-field", + "type": "string" + } + }, + "required": [ + "type", + "input", + "field" + ], + "type": "object" + } + ] + }, + "CommitEvidenceSource": { + "additionalProperties": false, + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "maximumObservationAgeSeconds": { + "format": "uint64", + "maximum": 300, + "minimum": 1, + "type": "integer" + }, + "provider": { + "type": "string" + }, + "requirement": { + "type": "string" + }, + "requires": { + "default": [], + "items": { + "$ref": "#/$defs/CommitEvidenceRequirementSource" + }, + "type": "array" + }, + "subjects": { + "additionalProperties": { + "$ref": "#/$defs/CommitEvidenceSubjectSource" + }, + "propertyNames": { + "$ref": "#/$defs/ExternalId" + }, + "type": "object" + } + }, + "required": [ + "id", + "provider", + "requirement", + "subjects", + "maximumObservationAgeSeconds" + ], + "type": "object" + }, + "CommitEvidenceSubjectSource": { + "additionalProperties": false, + "properties": { + "profile": { + "type": "string" + }, + "selectors": { + "additionalProperties": { + "$ref": "#/$defs/CommitEvidenceSelectorSource" + }, + "description": "Exact governed selector-profile field map. Every profile field must be\npresent exactly once and no undeclared field is admitted.", + "propertyNames": { + "$ref": "#/$defs/ExternalId" + }, + "type": "object" + } + }, + "required": [ + "profile", + "selectors" + ], + "type": "object" + }, + "CommitGuardsSource": { + "additionalProperties": false, + "properties": { + "evidence": { + "default": [], + "items": { + "$ref": "#/$defs/CommitEvidenceSource" + }, + "type": "array" + }, + "targets": { + "default": [], + "items": { + "$ref": "#/$defs/ActionRequirementSource" + }, + "type": "array" + } + }, + "type": "object" + }, + "ComparisonOperator": { + "enum": [ + "less-than", + "less-than-or-equal", + "greater-than", + "greater-than-or-equal" + ], + "type": "string" + }, + "CompiledTaskGrantPermissionSource": { + "additionalProperties": false, + "properties": { + "collection": { + "type": "string" + }, + "operations": { + "items": { + "$ref": "#/$defs/Operation" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "collection", + "operations" + ], + "type": "object" + }, + "CompiledTaskGrantSource": { + "additionalProperties": false, + "properties": { + "permissions": { + "items": { + "$ref": "#/$defs/CompiledTaskGrantPermissionSource" + }, + "type": "array" + }, + "sourceIssuer": { + "$ref": "#/$defs/Url" + } + }, + "required": [ + "sourceIssuer", + "permissions" + ], + "type": "object" + }, + "ConsentDecisionSource": { + "additionalProperties": false, + "description": "Maps the adopter's decision codes onto the engine's decision sets.", + "properties": { + "field": { + "type": "string" + }, + "gives": { + "description": "Codes that give consent.", + "items": { + "type": "string" + }, + "type": "array" + }, + "refusals": { + "description": "Revoke codes never shown to recipients.", + "items": { + "type": "string" + }, + "type": "array" + }, + "revokes": { + "description": "Codes that supersede every give on the same key ordered no later.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "field", + "gives", + "revokes" + ], + "type": "object" + }, + "ConsentIssuerSource": { + "description": "Who an action creates consent rows for.", + "oneOf": [ + { + "const": "self", + "description": "The subject, bound through a principal link entity.", + "type": "string" + }, + { + "const": "steward", + "description": "A reviewed steward act on the subject's behalf.", + "type": "string" + } + ] + }, + "ConsentRecordSource": { + "additionalProperties": false, + "description": "The fields of a consent-record entity the engine reads. Other fields are\nignored by consent enforcement.", + "properties": { + "decision": { + "$ref": "#/$defs/ConsentDecisionSource" + }, + "purpose": { + "description": "A vocabulary-code field compared with the verified request purpose.", + "type": "string" + }, + "recipient": { + "description": "A vocabulary-code field bound to `registry-recipients`.", + "type": "string" + }, + "scope": { + "description": "A vocabulary-code field bound to `registry-consent-scopes`.", + "type": "string" + }, + "subject": { + "description": "A reference field naming the protected subject row.", + "type": "string" + }, + "validity": { + "$ref": "#/$defs/ConsentValiditySource" + } + }, + "required": [ + "subject", + "recipient", + "purpose", + "scope", + "decision", + "validity" + ], + "type": "object" + }, + "ConsentRequirementSource": { + "additionalProperties": false, + "description": "A consent check ANDed into one read permission.", + "properties": { + "on": { + "description": "The permission entity's field the consent subject references; `id` is\nthe row's own identity.", + "type": "string" + }, + "record": { + "description": "The consent-record entity checked.", + "type": "string" + } + }, + "required": [ + "record", + "on" + ], + "type": "object" + }, + "ConsentValiditySource": { + "additionalProperties": false, + "description": "Validity of a consent decision. Every give expires within\n`maximumDurationDays`.", + "properties": { + "from": { + "description": "A required timestamp field; a give is active only from this time.", + "type": "string" + }, + "maximumDurationDays": { + "description": "The longest a give lasts, in whole days of 24 hours: at most 3652,\nten years.", + "format": "uint32", + "maximum": 3652, + "minimum": 1, + "type": "integer" + }, + "until": { + "description": "An optional timestamp field ending the give earlier than\n`maximumDurationDays`.", + "type": "string" + } + }, + "required": [ + "from", + "maximumDurationDays" + ], + "type": "object" + }, + "ConstraintSource": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "fields": { + "items": { + "type": "string" + }, + "type": "array" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "type": { + "const": "unique", + "type": "string" + }, + "when": { + "items": { + "$ref": "#/$defs/UniqueWhenPredicate" + }, + "type": "array" + } + }, + "required": [ + "type", + "fields" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "left": { + "type": "string" + }, + "operator": { + "$ref": "#/$defs/ComparisonOperator" + }, + "right": { + "type": "string" + }, + "type": { + "const": "compare", + "type": "string" + } + }, + "required": [ + "type", + "left", + "operator", + "right" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "field": { + "type": "string" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "maximum": { + "format": "int64", + "maximum": 9223372036854775807, + "minimum": -9223372036854775808, + "type": "integer" + }, + "minimum": { + "format": "int64", + "maximum": 9223372036854775807, + "minimum": -9223372036854775808, + "type": "integer" + }, + "type": { + "const": "int-range", + "type": "string" + } + }, + "required": [ + "type", + "field" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "field": { + "type": "string" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "type": { + "const": "vocabulary", + "type": "string" + }, + "values": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "type", + "field", + "values" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "endField": { + "type": "string" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "lastDayField": { + "description": "The inclusive last day, named in place of `endField` when the\nRecord type's interval declares `lastDayField`.", + "type": "string" + }, + "scopeFields": { + "items": { + "type": "string" + }, + "type": "array" + }, + "startField": { + "type": "string" + }, + "type": { + "const": "temporal-non-overlap", + "type": "string" + } + }, + "required": [ + "type", + "scopeFields" + ], + "type": "object" + } + ] + }, + "CorrectionRelation": { + "description": "How a later event record relates to the one it names.", + "oneOf": [ + { + "const": "corrects", + "description": "Amends an error in the named event record.", + "type": "string" + }, + { + "const": "supersedes", + "description": "Replaces the named event record as the current interpretation.", + "type": "string" + } + ] + }, + "Crs84BboxSource": { + "additionalProperties": false, + "properties": { + "east": { + "type": "string" + }, + "north": { + "type": "string" + }, + "south": { + "type": "string" + }, + "west": { + "type": "string" + } + }, + "required": [ + "west", + "south", + "east", + "north" + ], + "type": "object" + }, + "Crs84PointFieldSourceSchema": { + "additionalProperties": false, + "properties": { + "apiName": { + "type": "string" + }, + "bbox": { + "$ref": "#/$defs/Crs84BboxSource" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "precision": { + "format": "uint32", + "maximum": 9, + "minimum": 0, + "type": "integer" + }, + "required": { + "default": false, + "type": "boolean" + }, + "type": { + "enum": [ + "crs84-point" + ], + "type": "string" + }, + "validTimeRole": { + "$ref": "#/$defs/ValidTimeRole" + } + }, + "required": [ + "id", + "type", + "classification", + "precision" + ], + "type": "object" + }, + "CurrentDatePredicateSource": { + "enum": [ + "on-or-after", + "on-or-before" + ], + "type": "string" + }, + "DatasetOperation": { + "description": "One thing a profile may do with a statistical dataset.", + "oneOf": [ + { + "const": "read-live", + "description": "Read the dataset's live counts.", + "type": "string" + }, + { + "const": "publish", + "description": "Publish and withdraw the dataset's releases. One profile holds it per dataset.", + "type": "string" + }, + { + "const": "read-releases", + "description": "Read the dataset's releases.", + "type": "string" + } + ] + }, + "DatasetPermissionSource": { + "additionalProperties": false, + "description": "What a profile may do with one statistical dataset.", + "properties": { + "dataset": { + "$ref": "#/$defs/LocalId", + "description": "The statistical dataset the permission names." + }, + "operations": { + "description": "What the profile may do with the dataset. A profile that holds `read-live` or `publish` on a dataset with a publisher also holds `read-releases`.", + "items": { + "$ref": "#/$defs/DatasetOperation" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "dataset", + "operations" + ], + "type": "object" + }, + "DatasetSource": { + "additionalProperties": false, + "properties": { + "display": { + "$ref": "#/$defs/DisplaySource", + "default": {} + }, + "id": { + "$ref": "#/$defs/LocalId" + } + }, + "required": [ + "id" + ], + "type": "object" + }, + "DateFieldSourceSchema": { + "additionalProperties": false, + "properties": { + "apiName": { + "type": "string" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource" + }, + "encrypted": { + "default": false, + "type": "boolean" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "lookup": { + "$ref": "#/$defs/FieldLookupSource" + }, + "required": { + "default": false, + "type": "boolean" + }, + "type": { + "enum": [ + "date" + ], + "type": "string" + }, + "validTimeRole": { + "$ref": "#/$defs/ValidTimeRole" + } + }, + "required": [ + "id", + "type", + "classification" + ], + "type": "object" + }, + "DecimalFieldSourceSchema": { + "additionalProperties": false, + "properties": { + "apiName": { + "type": "string" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource" + }, + "encrypted": { + "default": false, + "type": "boolean" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "lookup": { + "$ref": "#/$defs/FieldLookupSource" + }, + "maximum": { + "type": "string" + }, + "minimum": { + "type": "string" + }, + "precision": { + "format": "uint32", + "maximum": 38, + "minimum": 1, + "type": "integer" + }, + "required": { + "default": false, + "type": "boolean" + }, + "scale": { + "format": "uint32", + "maximum": 38, + "minimum": 0, + "type": "integer" + }, + "type": { + "enum": [ + "decimal" + ], + "type": "string" + }, + "validTimeRole": { + "$ref": "#/$defs/ValidTimeRole" + } + }, + "required": [ + "id", + "type", + "classification", + "precision", + "scale" + ], + "type": "object" + }, + "DerivedExecutionSource": { + "enum": [ + "live" + ], + "type": "string" + }, + "DerivedFieldSource": { + "oneOf": [ + { + "properties": { + "type": { + "const": "boolean", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "properties": { + "maximumLength": { + "format": "uint32", + "maximum": 1000000, + "minimum": 1, + "type": "integer" + }, + "minimumLength": { + "default": 0, + "format": "uint32", + "maximum": 1000000, + "minimum": 0, + "type": "integer" + }, + "type": { + "const": "string", + "type": "string" + } + }, + "required": [ + "type", + "maximumLength" + ], + "type": "object" + }, + { + "properties": { + "maximumLength": { + "format": "uint32", + "maximum": 10000000, + "minimum": 1, + "type": "integer" + }, + "type": { + "const": "text", + "type": "string" + } + }, + "required": [ + "type", + "maximumLength" + ], + "type": "object" + }, + { + "properties": { + "type": { + "const": "int64", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "properties": { + "maximum": { + "type": "string" + }, + "minimum": { + "type": "string" + }, + "precision": { + "format": "uint32", + "maximum": 38, + "minimum": 1, + "type": "integer" + }, + "scale": { + "format": "uint32", + "maximum": 38, + "minimum": 0, + "type": "integer" + }, + "type": { + "const": "decimal", + "type": "string" + } + }, + "required": [ + "type", + "precision", + "scale" + ], + "type": "object" + }, + { + "properties": { + "type": { + "const": "date", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "properties": { + "type": { + "const": "timestamp", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "properties": { + "type": { + "const": "uuid", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "properties": { + "type": { + "const": "vocabulary-code", + "type": "string" + }, + "values": { + "default": [], + "items": { + "type": "string" + }, + "type": "array" + }, + "vocabulary": { + "type": "string" + } + }, + "required": [ + "type", + "vocabulary" + ], + "type": "object" + }, + { + "properties": { + "onDelete": { + "$ref": "#/$defs/ReferenceDelete", + "default": "restrict" + }, + "target": { + "type": "string" + }, + "type": { + "const": "reference", + "type": "string" + } + }, + "required": [ + "type", + "target" + ], + "type": "object" + }, + { + "properties": { + "bbox": { + "$ref": "#/$defs/Crs84BboxSource" + }, + "precision": { + "format": "uint32", + "maximum": 9, + "minimum": 0, + "type": "integer" + }, + "type": { + "const": "crs84-point", + "type": "string" + } + }, + "required": [ + "type", + "precision" + ], + "type": "object" + }, + { + "properties": { + "maximumBytes": { + "format": "uint32", + "maximum": 1048576, + "minimum": 1, + "type": "integer" + }, + "schema": { + "x-registry-foreign": "json-schema-2020-12" + }, + "type": { + "const": "structured", + "type": "string" + } + }, + "required": [ + "type", + "maximumBytes", + "schema" + ], + "type": "object" + } + ], + "properties": { + "apiName": { + "type": "string" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource" + }, + "id": { + "$ref": "#/$defs/LocalId" + } + }, + "required": [ + "id", + "classification" + ], + "type": "object", + "unevaluatedProperties": false + }, + "DerivedSource": { + "additionalProperties": false, + "properties": { + "execution": { + "$ref": "#/$defs/DerivedExecutionSource", + "default": "live" + }, + "fields": { + "default": [], + "items": { + "$ref": "#/$defs/DerivedFieldSource" + }, + "type": "array" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "key": { + "type": "string" + }, + "sql": { + "type": "string" + } + }, + "required": [ + "id", + "sql", + "key" + ], + "type": "object" + }, + "Digest": { + "description": "A SHA-256 digest: `sha256:` followed by 64 lowercase hex digits.", + "pattern": "^sha256:[0-9a-f]{64}$", + "type": "string" + }, + "DisplayPurpose": { + "description": "The purpose a Record or Action declares for itself.", + "enum": [ + "domain", + "processing", + "technical", + "synthetic-seed" + ], + "type": "string" + }, + "DisplaySource": { + "additionalProperties": false, + "properties": { + "description": { + "$ref": "#/$defs/DisplayText" + }, + "label": { + "$ref": "#/$defs/DisplayText" + }, + "titleField": { + "type": "string" + } + }, + "type": "object" + }, + "DisplayText": { + "description": "Human-readable display text. Bidirectional embedding, override, and isolate controls, byte-order marks, line and paragraph separators, and Unicode noncharacters are refused; multilingual joiners and direction marks remain valid.", + "not": { + "pattern": "[

‪-‮⁦-⁩﷐-﷯￾￿]|🿾|🿿|𯿾|𯿿|𿿾|𿿿|񏿾|񏿿|񟿾|񟿿|񯿾|񯿿|񿿾|񿿿|򏿾|򏿿|򟿾|򟿿|򯿾|򯿿|򿿾|򿿿|󏿾|󏿿|󟿾|󟿿|󯿾|󯿿|󿿾|󿿿|􏿾|􏿿" + }, + "type": "string" + }, + "DuplicatePolicy": { + "description": "What the author says about the same source event arriving twice.", + "enum": [ + "reject", + "allow" + ], + "type": "string" + }, + "EffectiveTimeSource": { + "additionalProperties": false, + "description": "A point or a span of effect. An open end means the effect has no end.", + "properties": { + "at": { + "type": "string" + }, + "end": { + "type": "string" + }, + "start": { + "type": "string" + } + }, + "type": "object" + }, + "EntityPermissionSource": { + "additionalProperties": false, + "description": "What a profile may do with one entity.", + "properties": { + "allowCount": { + "default": false, + "type": "boolean" + }, + "allowDataExport": { + "default": false, + "type": "boolean" + }, + "filterableFields": { + "default": [], + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "lookups": { + "default": [], + "items": { + "$ref": "#/$defs/LookupPermissionSource" + }, + "type": "array" + }, + "membershipBoundaries": { + "default": [], + "description": "Current active membership required for each stored reference key.", + "items": { + "$ref": "#/$defs/MembershipBoundarySource" + }, + "type": "array" + }, + "operations": { + "items": { + "$ref": "#/$defs/Operation" + }, + "type": "array", + "uniqueItems": true + }, + "provenanceFields": { + "default": [], + "items": { + "$ref": "#/$defs/ProvenanceFieldSource" + }, + "type": "array", + "uniqueItems": true + }, + "readPaths": { + "default": [], + "items": { + "$ref": "#/$defs/ReadPathPermissionSource" + }, + "type": "array" + }, + "readableFields": { + "default": [], + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "recordType": { + "type": "string" + }, + "requireConsent": { + "default": [], + "description": "Current subject-issued consent required for each row, ANDed.", + "items": { + "$ref": "#/$defs/ConsentRequirementSource" + }, + "type": "array" + }, + "revisionAccess": { + "default": false, + "type": "boolean" + }, + "rowBoundaries": { + "$ref": "#/$defs/RowBoundaries", + "description": "Row reach: `unrestricted`, or a list of at least one row boundary." + }, + "sortableFields": { + "default": [], + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "spatialQueries": { + "$ref": "#/$defs/SpatialQueryPermissionSource" + }, + "writableFields": { + "default": [], + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "recordType", + "operations", + "rowBoundaries" + ], + "type": "object" + }, + "EntitySource": { + "additionalProperties": false, + "properties": { + "accessLog": { + "$ref": "#/$defs/AccessLogSource", + "description": "Subject-facing record access history, separate from the operational audit." + }, + "accessProfiles": { + "default": [], + "description": "Module profile contributions, read through the sentinels a project profile uses.", + "items": { + "$ref": "#/$defs/AccessProfileSource" + }, + "type": "array" + }, + "accessRequirements": { + "$ref": "#/$defs/AccessRequirementsSource", + "description": "Mandatory request-access requirements checked against every profile, including module contributions." + }, + "apiName": { + "type": "string" + }, + "batch": { + "$ref": "#/$defs/BatchSource" + }, + "classification": { + "$ref": "#/$defs/Classification", + "default": "internal" + }, + "consentRecord": { + "$ref": "#/$defs/ConsentRecordSource", + "description": "Declares this entity's rows as subject-issued consent decisions that\n`requireConsent` permissions check before returning a subject's row." + }, + "constraints": { + "default": [], + "items": { + "$ref": "#/$defs/ConstraintSource" + }, + "type": "array" + }, + "derived": { + "items": { + "$ref": "#/$defs/DerivedSource" + }, + "type": "array" + }, + "display": { + "$ref": "#/$defs/ModelDisplaySource", + "default": {} + }, + "eventRecord": { + "$ref": "#/$defs/EventRecordSource", + "description": "Declares this record type's rows as event records: which fields\nsay what the row is about, when it happened, when it takes effect, what\nit was recorded from and what it corrects. It adds no storage, endpoint\nor authority." + }, + "fields": { + "default": [], + "items": { + "$ref": "#/$defs/FieldSource" + }, + "type": "array" + }, + "geojson": { + "$ref": "#/$defs/GeoJsonSource" + }, + "hooks": { + "default": [], + "items": { + "$ref": "#/$defs/HookSource" + }, + "type": "array" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "indexes": { + "default": [], + "items": { + "$ref": "#/$defs/IndexSource" + }, + "type": "array" + }, + "mutationMode": { + "$ref": "#/$defs/MutationMode" + }, + "mutationPolicy": { + "$ref": "#/$defs/MutationPolicySource" + }, + "primaryDataset": { + "type": "string" + }, + "readPaths": { + "items": { + "$ref": "#/$defs/ReadPathSource" + }, + "type": "array" + }, + "route": { + "type": "string" + }, + "selectorProfiles": { + "items": { + "$ref": "#/$defs/SelectorProfileSource" + }, + "type": "array" + }, + "temporal": { + "$ref": "#/$defs/TemporalSource" + }, + "timers": { + "items": { + "$ref": "#/$defs/TimerSource" + }, + "type": "array" + }, + "tombstone": { + "default": false, + "type": "boolean" + } + }, + "required": [ + "id", + "primaryDataset", + "route", + "mutationMode" + ], + "type": "object" + }, + "EventConditionSource": { + "additionalProperties": false, + "description": "Closed Version 1 event selection language.\n\nA tagged shape leaves room for a later, separately governed rule ABI\nwithout turning fields into an ad hoc expression language. The shared\nreader's union helper decodes it, so an error inside a variant keeps its\nposition (CFG-SCHEMA-8). An unset value is named in `beforeIsNull` or\n`afterIsNull`; `null` is never a comparison literal (CFG-EMPTY-1).", + "properties": { + "afterEquals": { + "additionalProperties": { + "$ref": "#/$defs/ScalarLiteral" + }, + "default": {}, + "description": "Required values after the change. Valid with created and patched triggers.", + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "afterIsNull": { + "default": [], + "description": "Fields that must be unset after the change. Valid with created and patched triggers.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "beforeEquals": { + "additionalProperties": { + "$ref": "#/$defs/ScalarLiteral" + }, + "default": {}, + "description": "Required values before the change. Valid with patched and tombstoned triggers.", + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "beforeIsNull": { + "default": [], + "description": "Fields that must be unset before the change. Valid with patched and tombstoned triggers.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "changed": { + "default": [], + "description": "Fields whose values must change. Only valid with the patched trigger.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "type": { + "const": "fields", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + "EventRecordCorrectionSource": { + "additionalProperties": false, + "properties": { + "field": { + "description": "A reference to a record type that also declares an event record.", + "type": "string" + }, + "relation": { + "$ref": "#/$defs/CorrectionRelation" + } + }, + "required": [ + "field", + "relation" + ], + "type": "object" + }, + "EventRecordRoleSource": { + "additionalProperties": false, + "description": "One named role played by a stored field.", + "properties": { + "external": { + "$ref": "#/$defs/ExternalReferenceSource", + "description": "Marks the field as an opaque identifier owned by another system." + }, + "field": { + "type": "string" + }, + "label": { + "$ref": "#/$defs/DisplayText" + }, + "role": { + "type": "string" + }, + "target": { + "description": "Asserts the record type a native reference field points at.", + "type": "string" + } + }, + "required": [ + "role", + "field" + ], + "type": "object" + }, + "EventRecordSource": { + "additionalProperties": false, + "description": "The record-level mapping of stored fields onto event record roles.", + "properties": { + "correction": { + "$ref": "#/$defs/EventRecordCorrectionSource" + }, + "effective": { + "$ref": "#/$defs/EffectiveTimeSource" + }, + "label": { + "$ref": "#/$defs/DisplayText" + }, + "occurredAt": { + "$ref": "#/$defs/EventRecordTimeSource" + }, + "sourceEventId": { + "$ref": "#/$defs/SourceEventIdSource" + }, + "sources": { + "description": "What the event record was recorded from. Recording a reference is not\nverifying it.", + "items": { + "$ref": "#/$defs/EventRecordRoleSource" + }, + "type": "array" + }, + "subjects": { + "description": "What the event record is about. At least one, at most 16. The serde\ndefault only lets compilation report the stable emptiness diagnostic.", + "items": { + "$ref": "#/$defs/EventRecordRoleSource" + }, + "type": "array" + }, + "summary": { + "description": "A `string` or `text` field holding a human summary.", + "type": "string" + } + }, + "required": [ + "subjects" + ], + "type": "object" + }, + "EventRecordTimeSource": { + "additionalProperties": false, + "description": "A point (`at`) or an interval (`start`, `end`, `meaning`). Flat optional\nmembers let the compiler address each shape error at its authored path.", + "properties": { + "at": { + "type": "string" + }, + "end": { + "type": "string" + }, + "meaning": { + "$ref": "#/$defs/IntervalMeaning" + }, + "start": { + "type": "string" + } + }, + "type": "object" + }, + "EventTrigger": { + "enum": [ + "created", + "patched", + "tombstoned" + ], + "type": "string" + }, + "EvidenceProviderSource": { + "additionalProperties": false, + "properties": { + "contracts": { + "type": "string" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "subjectResolution": { + "$ref": "#/$defs/EvidenceSubjectResolution" + } + }, + "required": [ + "id", + "contracts", + "subjectResolution" + ], + "type": "object" + }, + "EvidenceSubjectResolution": { + "enum": [ + "trusted-provider-exact-selector" + ], + "type": "string" + }, + "EvidenceSubjectSource": { + "additionalProperties": false, + "properties": { + "profile": { + "type": "string" + } + }, + "required": [ + "profile" + ], + "type": "object" + }, + "ExternalId": { + "description": "An identifier another system issues, written exactly as its issuer gives it.", + "maxLength": 512, + "minLength": 1, + "pattern": "^[^\\u0000-\\u001F\\u007F-\\u009F]+$", + "type": "string" + }, + "ExternalReferenceSource": { + "additionalProperties": false, + "properties": { + "namespace": { + "description": "Absolute URI naming the system that owns the identifier.", + "type": "string" + } + }, + "required": [ + "namespace" + ], + "type": "object" + }, + "FieldGenerationSource": { + "description": "Server-side generation requested for a persisted business identifier.\n\nThe canonical record UUID remains independent. On a sequence, `scope`\nnames required, immutable stored fields whose values partition the\nnumbering. A random code has one namespace per field.", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "minimumDigits": { + "format": "uint32", + "maximum": 128, + "minimum": 1, + "type": "integer" + }, + "prefix": { + "default": "", + "maxLength": 128, + "pattern": "^[!-~]*$", + "type": "string" + }, + "scope": { + "default": [], + "items": { + "type": "string" + }, + "maxItems": 8, + "type": "array", + "uniqueItems": true + }, + "type": { + "const": "sequence", + "type": "string" + } + }, + "required": [ + "type", + "minimumDigits" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "length": { + "format": "uint32", + "maximum": 128, + "minimum": 1, + "type": "integer" + }, + "prefix": { + "default": "", + "maxLength": 128, + "pattern": "^[!-~]*$", + "type": "string" + }, + "type": { + "const": "random", + "type": "string" + } + }, + "required": [ + "type", + "length" + ], + "type": "object" + } + ] + }, + "FieldLookupSource": { + "additionalProperties": false, + "description": "The authored blind-index declaration for an encrypted field. Normalization\ncomposes in declared order over the canonical string form of the value;\n`unique` requests a unique index over the derived blind-index column.", + "properties": { + "normalization": { + "default": [], + "items": { + "$ref": "#/$defs/NormalizationStep" + }, + "maxItems": 8, + "type": "array" + }, + "unique": { + "default": false, + "type": "boolean" + } + }, + "type": "object" + }, + "FieldSource": { + "anyOf": [ + { + "$ref": "#/$defs/BooleanFieldSourceSchema" + }, + { + "$ref": "#/$defs/StringFieldSourceSchema" + }, + { + "$ref": "#/$defs/TextFieldSourceSchema" + }, + { + "$ref": "#/$defs/Int64FieldSourceSchema" + }, + { + "$ref": "#/$defs/DecimalFieldSourceSchema" + }, + { + "$ref": "#/$defs/DateFieldSourceSchema" + }, + { + "$ref": "#/$defs/TimestampFieldSourceSchema" + }, + { + "$ref": "#/$defs/UuidFieldSourceSchema" + }, + { + "$ref": "#/$defs/VocabularyCodeFieldSourceSchema" + }, + { + "$ref": "#/$defs/ReferenceFieldSourceSchema" + }, + { + "$ref": "#/$defs/Crs84PointFieldSourceSchema" + }, + { + "$ref": "#/$defs/StructuredFieldSourceSchema" + }, + { + "additionalProperties": false, + "properties": { + "apiName": { + "type": "string" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource" + }, + "encrypted": { + "default": false, + "type": "boolean" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "lookup": { + "$ref": "#/$defs/FieldLookupSource" + }, + "pattern": { + "type": "string" + }, + "relationship": { + "additionalProperties": false, + "properties": { + "inverseName": { + "pattern": "^[a-z][A-Za-z0-9]*$", + "type": "string" + } + }, + "type": "object" + }, + "required": { + "default": false, + "type": "boolean" + }, + "typeRef": { + "$ref": "#/$defs/LocalId" + }, + "validTimeRole": { + "$ref": "#/$defs/ValidTimeRole" + } + }, + "required": [ + "id", + "typeRef", + "classification" + ], + "type": "object" + } + ] + }, + "FunctionCapabilitySource": { + "enum": [ + "evidence" + ], + "type": "string" + }, + "FunctionLimitsSource": { + "additionalProperties": false, + "properties": { + "maximumOperations": { + "default": 10000, + "format": "uint64", + "maximum": 100000, + "minimum": 1, + "type": "integer" + }, + "maximumOutputBytes": { + "default": 8192, + "format": "uint32", + "maximum": 2097152, + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + }, + "FunctionSource": { + "additionalProperties": false, + "properties": { + "abi": { + "const": "registry.action-plan/v1", + "type": "string" + }, + "capabilities": { + "default": [], + "items": { + "$ref": "#/$defs/FunctionCapabilitySource" + }, + "type": "array", + "uniqueItems": true + }, + "entrypoint": { + "type": "string" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "limits": { + "$ref": "#/$defs/FunctionLimitsSource", + "default": { + "maximumOperations": 10000, + "maximumOutputBytes": 8192 + } + }, + "runtime": { + "$ref": "#/$defs/ActionHandlerKindSource" + }, + "source": { + "type": "string" + } + }, + "required": [ + "id", + "runtime", + "source", + "entrypoint", + "abi" + ], + "type": "object" + }, + "GeoJsonSource": { + "additionalProperties": false, + "properties": { + "geometryField": { + "type": "string" + } + }, + "required": [ + "geometryField" + ], + "type": "object" + }, + "GuardRevisionSource": { + "enum": [ + "unchanged" + ], + "type": "string" + }, + "HookHandlerSource": { + "description": "Where a hook's handler runs.\n\nThe pairing rule: `rhai` requires `script`, `wasm` requires `module`,\n`url` requires `destinationId`, and each\nkind requires exactly its own fields and nothing else. `abi` is required on\n`rhai` and `wasm` and forbidden on `url`; its value is closed and checked at\ncompile time in [`crate::validate_hooks`].", + "oneOf": [ + { + "additionalProperties": false, + "description": "A reviewed Rhai script in the project.", + "properties": { + "abi": { + "description": "The handler ABI the script speaks.", + "type": "string" + }, + "script": { + "description": "Script path in the project.", + "type": "string" + }, + "type": { + "const": "rhai", + "type": "string" + } + }, + "required": [ + "type", + "script" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "A reviewed WASM module in the project.", + "properties": { + "abi": { + "description": "The handler ABI the module speaks.", + "type": "string" + }, + "module": { + "description": "Module path in the project.", + "type": "string" + }, + "type": { + "const": "wasm", + "type": "string" + } + }, + "required": [ + "type", + "module" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "A logical destination bound to a URL and a secret at runtime. The\nruntime names the binding it looks the key up in; the project carries\nno URL or secret.", + "properties": { + "destinationId": { + "description": "Key in the runtime destination binding.", + "type": "string" + }, + "type": { + "const": "url", + "type": "string" + } + }, + "required": [ + "type", + "destinationId" + ], + "type": "object" + } + ] + }, + "HookPhase": { + "description": "When the hook runs relative to the triggering transaction.", + "oneOf": [ + { + "const": "before", + "description": "Runs inside the triggering transaction and may refuse or shape the\nchange. Local handler kinds only.", + "type": "string" + }, + { + "const": "after", + "description": "Runs after commit in the post-commit worker and cannot affect the\ntriggering transaction.", + "type": "string" + } + ] + }, + "HookSource": { + "additionalProperties": false, + "description": "One declared hook on an entity.\n\nThe shape is [`registry_platform_hooks::HookDeclaration`] with `trigger`\nand `when` closed to the vocabulary this compiler validates, and with\n`handler` optional. A hook that declares no handler is still recorded in\nthe outbox and delivered nowhere; production compilation refuses that.\n\nEntity hooks run after the triggering transaction commits, so `phase` is\nwritten and the compiler refuses any value it cannot run.", + "properties": { + "display": { + "$ref": "#/$defs/PresentationSource", + "description": "Authored presentation only; labels never establish identity or authority." + }, + "handler": { + "$ref": "#/$defs/HookHandlerSource", + "description": "Governed, destination-neutral delivery. `destinationId` is a key in\nruntime `destinations.hooks`; the project carries no URL or secret, and\ndeployment configuration may tighten the bounds it binds but cannot\nsupply or widen this authority. Production compilation requires it." + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "Stable hook contract identifier, sent as `ce-type`. Use a new identifier for a breaking payload change." + }, + "phase": { + "$ref": "#/$defs/HookPhase", + "description": "When the hook runs relative to the triggering transaction." + }, + "principal": { + "description": "The access profile a proposal from this hook is applied under.\nOptional: a hook that declares none is a non-proposing hook, and a\nproposal from one is refused and dead-lettered at delivery time.\nDeclaring none is not an authoring error.", + "type": "string" + }, + "projection": { + "description": "Declared field identifiers to include in `values`. System event metadata is included separately.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "trigger": { + "$ref": "#/$defs/EventTrigger", + "description": "Committed record change that can produce this hook." + }, + "when": { + "$ref": "#/$defs/EventConditionSource", + "description": "Optional field tests, combined with AND. Omit to run on every matching trigger." + } + }, + "required": [ + "id", + "phase", + "trigger", + "projection" + ], + "type": "object" + }, + "IndexSource": { + "additionalProperties": false, + "properties": { + "fields": { + "items": { + "type": "string" + }, + "maxItems": 31, + "type": "array" + }, + "id": { + "$ref": "#/$defs/LocalId" + } + }, + "required": [ + "id", + "fields" + ], + "type": "object" + }, + "Int64FieldSourceSchema": { + "additionalProperties": false, + "properties": { + "apiName": { + "type": "string" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "required": { + "default": false, + "type": "boolean" + }, + "type": { + "enum": [ + "int64" + ], + "type": "string" + }, + "validTimeRole": { + "$ref": "#/$defs/ValidTimeRole" + } + }, + "required": [ + "id", + "type", + "classification" + ], + "type": "object" + }, + "IntervalMeaning": { + "description": "What an event record's interval says about the event.", + "oneOf": [ + { + "const": "span", + "description": "The event lasted from start to end.", + "type": "string" + }, + { + "const": "within", + "description": "The event happened at an unknown instant between start and end.", + "type": "string" + } + ] + }, + "LocalId": { + "description": "A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.", + "pattern": "^[a-z][a-z0-9_-]{0,63}$", + "type": "string" + }, + "LookupPermissionSource": { + "additionalProperties": false, + "properties": { + "claimMapping": { + "additionalProperties": { + "type": "string" + }, + "default": {}, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "selector": { + "type": "string" + }, + "valueOrigin": { + "$ref": "#/$defs/LookupValueOrigin" + } + }, + "required": [ + "selector", + "valueOrigin" + ], + "type": "object" + }, + "LookupValueOrigin": { + "enum": [ + "request", + "verified-claim" + ], + "type": "string" + }, + "ManifestProjectionApplicationProfileSource": { + "additionalProperties": false, + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "version": { + "type": "string" + } + }, + "required": [ + "id", + "version" + ], + "type": "object" + }, + "ManifestProjectionAuthoritySource": { + "additionalProperties": false, + "description": "An identified public authority, shaped like the catalogue publisher.\nIt projects to a Registry Manifest `authorities[]` entry. Without an\n`iri`, the authority IRI is derived from the canonical base IRI.", + "properties": { + "authorityType": { + "type": "string" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "iri": { + "type": "string" + }, + "name": { + "$ref": "#/$defs/DisplayText" + } + }, + "required": [ + "id", + "name" + ], + "type": "object" + }, + "ManifestProjectionCatalogSource": { + "additionalProperties": false, + "properties": { + "applicationProfiles": { + "default": [], + "items": { + "$ref": "#/$defs/ManifestProjectionApplicationProfileSource" + }, + "type": "array" + }, + "baseUrl": { + "$ref": "#/$defs/Url" + }, + "conformsTo": { + "default": [], + "items": { + "type": "string" + }, + "type": "array" + }, + "description": { + "$ref": "#/$defs/ManifestProjectionTextSource" + }, + "participantId": { + "type": "string" + }, + "publisher": { + "$ref": "#/$defs/ManifestProjectionPublisherSource" + }, + "standards": { + "$ref": "#/$defs/ManifestProjectionStandardsSource", + "default": {} + }, + "title": { + "$ref": "#/$defs/ManifestProjectionTextSource" + } + }, + "required": [ + "baseUrl", + "title", + "publisher" + ], + "type": "object" + }, + "ManifestProjectionDataServiceSource": { + "additionalProperties": false, + "properties": { + "conformsTo": { + "type": "string" + }, + "description": { + "$ref": "#/$defs/ManifestProjectionTextSource" + }, + "endpointDescription": { + "type": "string" + }, + "endpointUrl": { + "$ref": "#/$defs/Url" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "iri": { + "type": "string" + }, + "servesDatasets": { + "items": { + "type": "string" + }, + "type": "array" + }, + "title": { + "$ref": "#/$defs/ManifestProjectionTextSource" + } + }, + "required": [ + "id", + "title", + "endpointUrl", + "servesDatasets" + ], + "type": "object" + }, + "ManifestProjectionDatasetSource": { + "additionalProperties": false, + "properties": { + "accessProfile": { + "type": "string" + }, + "applicableLegislation": { + "default": [], + "items": { + "type": "string" + }, + "type": "array" + }, + "classificationCeiling": { + "$ref": "#/$defs/Classification" + }, + "conformsTo": { + "default": [], + "items": { + "type": "string" + }, + "type": "array" + }, + "description": { + "$ref": "#/$defs/ManifestProjectionTextSource" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "iri": { + "type": "string" + }, + "owner": { + "$ref": "#/$defs/DisplayText" + }, + "spatialCoverage": { + "type": "string" + }, + "status": { + "$ref": "#/$defs/ManifestProjectionDatasetStatus" + }, + "title": { + "$ref": "#/$defs/ManifestProjectionTextSource" + }, + "version": { + "type": "string" + } + }, + "required": [ + "id", + "title" + ], + "type": "object" + }, + "ManifestProjectionDatasetStatus": { + "enum": [ + "under-development", + "active", + "completed", + "deprecated", + "withdrawn" + ], + "type": "string" + }, + "ManifestProjectionDistributionSource": { + "additionalProperties": false, + "properties": { + "accessService": { + "type": "string" + }, + "accessUrl": { + "$ref": "#/$defs/Url" + }, + "dataset": { + "type": "string" + }, + "description": { + "$ref": "#/$defs/ManifestProjectionTextSource" + }, + "downloadUrl": { + "$ref": "#/$defs/Url" + }, + "format": { + "type": "string" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "iri": { + "type": "string" + }, + "mediaType": { + "type": "string" + }, + "title": { + "$ref": "#/$defs/ManifestProjectionTextSource" + } + }, + "required": [ + "id", + "dataset" + ], + "type": "object" + }, + "ManifestProjectionEntitySource": { + "additionalProperties": false, + "properties": { + "conceptUri": { + "type": "string" + }, + "description": { + "$ref": "#/$defs/ManifestProjectionTextSource" + }, + "fields": { + "default": [], + "items": { + "$ref": "#/$defs/ManifestProjectionFieldSource" + }, + "type": "array" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "identifiers": { + "default": [], + "items": { + "$ref": "#/$defs/ManifestProjectionIdentifierSource" + }, + "type": "array" + }, + "title": { + "$ref": "#/$defs/ManifestProjectionTextSource" + } + }, + "required": [ + "id" + ], + "type": "object" + }, + "ManifestProjectionFieldSource": { + "additionalProperties": false, + "properties": { + "concepts": { + "default": [], + "items": { + "type": "string" + }, + "type": "array" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "language": { + "type": "string" + }, + "relationshipConceptUri": { + "type": "string" + }, + "relationshipRole": { + "type": "string" + }, + "unit": { + "type": "string" + } + }, + "required": [ + "id" + ], + "type": "object" + }, + "ManifestProjectionIdentifierSource": { + "additionalProperties": false, + "properties": { + "field": { + "type": "string" + }, + "kind": { + "type": "string" + } + }, + "required": [ + "field", + "kind" + ], + "type": "object" + }, + "ManifestProjectionPublicServiceSource": { + "additionalProperties": false, + "properties": { + "competentAuthority": { + "$ref": "#/$defs/LocalId", + "description": "The id of the `authorities[]` entry legally competent for this\nservice (CPSV-AP `hasCompetentAuthority`)." + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "title": { + "$ref": "#/$defs/ManifestProjectionTextSource" + } + }, + "required": [ + "id", + "title", + "competentAuthority" + ], + "type": "object" + }, + "ManifestProjectionPublisherSource": { + "additionalProperties": false, + "properties": { + "authorityType": { + "type": "string" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "iri": { + "type": "string" + }, + "name": { + "$ref": "#/$defs/DisplayText" + } + }, + "required": [ + "id", + "name" + ], + "type": "object" + }, + "ManifestProjectionSource": { + "additionalProperties": false, + "properties": { + "accessProfile": { + "type": "string" + }, + "authorities": { + "description": "The identified public authorities the Manifest names. The public\nservice names its competent authority from this list by id.", + "items": { + "$ref": "#/$defs/ManifestProjectionAuthoritySource" + }, + "type": "array" + }, + "catalog": { + "$ref": "#/$defs/ManifestProjectionCatalogSource" + }, + "classificationCeiling": { + "$ref": "#/$defs/Classification" + }, + "dataServices": { + "items": { + "$ref": "#/$defs/ManifestProjectionDataServiceSource" + }, + "type": "array" + }, + "datasets": { + "items": { + "$ref": "#/$defs/ManifestProjectionDatasetSource" + }, + "type": "array" + }, + "distributions": { + "items": { + "$ref": "#/$defs/ManifestProjectionDistributionSource" + }, + "type": "array" + }, + "entities": { + "default": [], + "items": { + "$ref": "#/$defs/ManifestProjectionEntitySource" + }, + "type": "array" + }, + "publicService": { + "$ref": "#/$defs/ManifestProjectionPublicServiceSource" + }, + "vocabularies": { + "default": [], + "items": { + "$ref": "#/$defs/ManifestProjectionVocabularySource" + }, + "type": "array" + } + }, + "required": [ + "accessProfile", + "classificationCeiling", + "catalog", + "authorities", + "publicService", + "datasets", + "dataServices" + ], + "type": "object" + }, + "ManifestProjectionStandardsSource": { + "additionalProperties": false, + "properties": { + "dcat": { + "type": "string" + }, + "jsonSchema": { + "type": "string" + }, + "shacl": { + "type": "string" + } + }, + "type": "object" + }, + "ManifestProjectionTextSource": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "additionalProperties": { + "$ref": "#/$defs/DisplayText" + }, + "propertyNames": { + "$ref": "#/$defs/ExternalId" + }, + "type": "object" + } + ], + "description": "One plain string, or a mapping from language tag to text." + }, + "ManifestProjectionVocabularyConceptSource": { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "iri": { + "type": "string" + }, + "label": { + "$ref": "#/$defs/ManifestProjectionTextSource" + } + }, + "required": [ + "code" + ], + "type": "object" + }, + "ManifestProjectionVocabularySource": { + "additionalProperties": false, + "properties": { + "concepts": { + "default": [], + "items": { + "$ref": "#/$defs/ManifestProjectionVocabularyConceptSource" + }, + "type": "array" + }, + "externalReference": { + "type": "string" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "schemeIri": { + "type": "string" + }, + "version": { + "type": "string" + } + }, + "required": [ + "id", + "schemeIri" + ], + "type": "object" + }, + "MembershipBoundarySource": { + "additionalProperties": false, + "description": "A one-hop current membership requirement, combined with every other row boundary.\nThe root field and membership key must reference the same entity. The active\nfield is Boolean, and principalField matches the profile's verified principal.", + "properties": { + "activeField": { + "type": "string" + }, + "field": { + "type": "string" + }, + "membershipKeyField": { + "type": "string" + }, + "membershipRecordType": { + "type": "string" + }, + "principalField": { + "type": "string" + } + }, + "required": [ + "field", + "membershipRecordType", + "membershipKeyField", + "principalField", + "activeField" + ], + "type": "object" + }, + "ModelDisplaySource": { + "additionalProperties": false, + "description": "How a Record or Action is presented in the declared-model view. It adds\npresentation-only grouping, which no runtime surface reads, to the plain\ndisplay text members.", + "properties": { + "description": { + "$ref": "#/$defs/DisplayText" + }, + "group": { + "$ref": "#/$defs/DisplayText", + "description": "Display group; objects sharing the exact string are listed together." + }, + "label": { + "$ref": "#/$defs/DisplayText" + }, + "purpose": { + "$ref": "#/$defs/DisplayPurpose", + "description": "What the object is for. Presentation only." + }, + "titleField": { + "type": "string" + } + }, + "type": "object" + }, + "ModuleLockSource": { + "additionalProperties": false, + "properties": { + "digest": { + "$ref": "#/$defs/Digest" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "version": { + "type": "string" + } + }, + "required": [ + "id", + "version" + ], + "type": "object" + }, + "MutationMode": { + "enum": [ + "mutable", + "create-only" + ], + "type": "string" + }, + "MutationPolicyMode": { + "enum": [ + "direct", + "proposal-required" + ], + "type": "string" + }, + "MutationPolicySource": { + "additionalProperties": false, + "properties": { + "create": { + "$ref": "#/$defs/MutationPolicyMode" + }, + "patch": { + "$ref": "#/$defs/MutationPolicyMode" + }, + "tombstone": { + "$ref": "#/$defs/MutationPolicyMode" + } + }, + "type": "object" + }, + "NormalizationStep": { + "description": "A normalization step applied to the canonical string form of an encrypted\nvalue before its blind index is derived. The vocabulary is closed.", + "oneOf": [ + { + "enum": [ + "trim", + "uppercase", + "lowercase", + "collapse-whitespace" + ], + "type": "string" + }, + { + "const": "remove-separators", + "description": "Strips spaces, hyphens, slashes, and dots from the canonical form.", + "type": "string" + }, + { + "const": "nfc", + "description": "Canonical composition (Unicode NFC), so a precomposed letter and its\nbase letter plus combining mark give the same value. Compatibility\nforms such as ligatures are not mapped.", + "type": "string" + }, + { + "const": "case-fold", + "description": "NFC, then full Unicode case folding with no locale tailoring, then NFC\nagain: `ß` and `ẞ` fold to `ss`, `ς` folds to `σ`, canonically\nequivalent spellings fold alike whatever the order of their combining\nmarks, and a capital that folds to a decomposed sequence is composed\nagain. Unlike `lowercase` it is meant for matching, so it is the case\nstep to pair with `nfc`.", + "type": "string" + } + ] + }, + "Operation": { + "oneOf": [ + { + "enum": [ + "create", + "get", + "lookup", + "list", + "patch", + "tombstone", + "batch", + "revisions", + "snapshot", + "invoke", + "start" + ], + "type": "string" + }, + { + "const": "import", + "description": "Create records through a durable ingestion run, and nothing else. The\ngrant is enabled only while an operator-opened import authority is open\nfor the entity and profile. It declares no item route and no raw batch\nroute, and change control does not count it as a direct write.", + "type": "string" + } + ] + }, + "PackageIdentitySource": { + "additionalProperties": false, + "properties": { + "sourceRevision": { + "type": "string" + } + }, + "required": [ + "sourceRevision" + ], + "type": "object" + }, + "PermissionsSource": { + "additionalProperties": false, + "description": "What an access profile may do. Each member lists the permissions that name\none kind of subject, and a member that is omitted or empty grants nothing.", + "properties": { + "actions": { + "default": [], + "description": "The actions the profile may invoke: one permission for each action it names.", + "items": { + "$ref": "#/$defs/ActionPermissionSource" + }, + "type": "array" + }, + "datasets": { + "default": [], + "description": "What the profile may do with statistical datasets: one permission for each dataset it names.", + "items": { + "$ref": "#/$defs/DatasetPermissionSource" + }, + "type": "array" + }, + "proposals": { + "default": [], + "items": { + "$ref": "#/$defs/ProposalPermissionSource" + }, + "type": "array" + }, + "records": { + "default": [], + "description": "What the profile may do with entities: one permission for each entity it names.", + "items": { + "$ref": "#/$defs/EntityPermissionSource" + }, + "type": "array" + } + }, + "type": "object" + }, + "PolicySelectionSource": { + "additionalProperties": false, + "dependentRequired": { + "digest": [ + "version" + ], + "version": [ + "digest" + ] + }, + "properties": { + "digest": { + "$ref": "#/$defs/Digest" + }, + "id": { + "$comment": "The review protocol also bounds UTF-8 bytes, which the reader checks without restricting externally issued identifiers to ASCII.", + "allOf": [ + { + "$ref": "#/$defs/ExternalId" + } + ], + "maxLength": 128 + }, + "version": { + "type": "string" + } + }, + "required": [ + "id" + ], + "type": "object" + }, + "PresentationSource": { + "additionalProperties": false, + "description": "Authored words for an object without a Record's title-field selection.", + "properties": { + "description": { + "$ref": "#/$defs/DisplayText" + }, + "label": { + "$ref": "#/$defs/DisplayText" + } + }, + "type": "object" + }, + "ProjectAccessProfileSource": { + "additionalProperties": false, + "description": "One access profile as a project writes it.", + "properties": { + "actorKind": { + "$ref": "#/$defs/ActorKindSource" + }, + "default": { + "default": false, + "type": "boolean" + }, + "display": { + "$ref": "#/$defs/PresentationSource", + "description": "Authored presentation only; labels never establish identity or authority." + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "permissions": { + "$ref": "#/$defs/PermissionsSource", + "default": { + "actions": [], + "datasets": [], + "proposals": [], + "records": [] + }, + "description": "What the profile may do, grouped by what each permission names. Omit when the profile grants nothing." + }, + "principalClaim": { + "description": "The token claim that names the caller. Every profile serves authenticated callers, so every profile names one.", + "type": "string" + }, + "requesterClients": { + "description": "The OAuth clients whose tokens may select this profile. Omit to accept every client.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "requiredPurposes": { + "description": "The verified token's purpose must match one listed value. Omit to accept every purpose.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "requiredScopes": { + "$ref": "#/$defs/RequiredScopes", + "description": "The scopes the verified token must carry: `unrestricted`, or a list of at least one scope, all of which must be present." + }, + "taskGrant": { + "$ref": "#/$defs/TaskGrantSource" + } + }, + "required": [ + "id", + "principalClaim", + "requiredScopes" + ], + "type": "object" + }, + "ProposalApplicationSource": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "mode": { + "const": "manual", + "type": "string" + } + }, + "required": [ + "mode" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "maximumAttempts": { + "default": 3, + "format": "uint32", + "maximum": 32, + "minimum": 1, + "type": "integer" + }, + "mode": { + "const": "automatic", + "type": "string" + } + }, + "required": [ + "mode" + ], + "type": "object" + } + ] + }, + "ProposalContextValueSource": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "slot": { + "$ref": "#/$defs/LocalId" + }, + "type": { + "const": "document", + "type": "string" + } + }, + "required": [ + "type", + "slot" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "input": { + "$ref": "#/$defs/LocalId" + }, + "type": { + "const": "input", + "type": "string" + } + }, + "required": [ + "type", + "input" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "field": { + "$ref": "#/$defs/LocalId" + }, + "input": { + "$ref": "#/$defs/LocalId" + }, + "type": { + "const": "record", + "type": "string" + } + }, + "required": [ + "type", + "input", + "field" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "fields": { + "items": { + "type": "string" + }, + "type": "array" + }, + "recordType": { + "$ref": "#/$defs/LocalId" + }, + "type": { + "const": "changes", + "type": "string" + } + }, + "required": [ + "type", + "recordType", + "fields" + ], + "type": "object" + } + ] + }, + "ProposalEventTransition": { + "enum": [ + "started", + "edited", + "submitted", + "revised", + "rebased", + "retried", + "cancelled", + "applied", + "rejected", + "review-returned" + ], + "type": "string" + }, + "ProposalHookSource": { + "additionalProperties": false, + "properties": { + "display": { + "$ref": "#/$defs/PresentationSource", + "description": "Authored presentation only; labels never establish identity or authority." + }, + "handler": { + "$ref": "#/$defs/HookHandlerSource" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "transitions": { + "description": "Omit to observe every committed lifecycle transition.", + "items": { + "$ref": "#/$defs/ProposalEventTransition" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "id", + "handler" + ], + "type": "object" + }, + "ProposalOperation": { + "enum": [ + "get", + "list", + "edit", + "submit", + "revise", + "cancel", + "apply", + "rebase", + "retry", + "get-review-status", + "get-review-context", + "get-task-grant-context", + "get-application-actor" + ], + "type": "string" + }, + "ProposalOwnership": { + "enum": [ + "caller" + ], + "type": "string" + }, + "ProposalPermissionSource": { + "additionalProperties": false, + "properties": { + "action": { + "type": "string" + }, + "operations": { + "items": { + "$ref": "#/$defs/ProposalOperation" + }, + "type": "array", + "uniqueItems": true + }, + "ownership": { + "$ref": "#/$defs/ProposalOwnership" + }, + "readableAttachments": { + "default": [], + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "readableContextFields": { + "default": [], + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "readableInputs": { + "default": [], + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "reviewAuthority": { + "type": "string" + }, + "targets": { + "default": [], + "items": { + "$ref": "#/$defs/ProposalTargetPermissionSource" + }, + "type": "array" + }, + "writableAttachments": { + "default": [], + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "writableInputs": { + "description": "Action inputs this grant may set. Absent leaves every declared input writable.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "action", + "operations" + ], + "type": "object" + }, + "ProposalPolicySource": { + "additionalProperties": false, + "properties": { + "application": { + "$ref": "#/$defs/ProposalApplicationSource", + "default": { + "maximumAttempts": 3, + "mode": "automatic" + } + }, + "attachments": { + "default": [], + "items": { + "$ref": "#/$defs/AttachmentSlotSource" + }, + "type": "array" + }, + "hooks": { + "description": "Post-commit observers of the fixed, value-free Proposal lifecycle event.", + "items": { + "$ref": "#/$defs/ProposalHookSource" + }, + "type": "array" + }, + "retention": { + "$ref": "#/$defs/ProposalRetentionSource" + }, + "review": { + "$ref": "#/$defs/ProposalReviewSource" + }, + "reviewContext": { + "$ref": "#/$defs/ProposalReviewContextSource" + } + }, + "required": [ + "review", + "retention" + ], + "type": "object" + }, + "ProposalRetentionMode": { + "enum": [ + "retain", + "operator-erase" + ], + "type": "string" + }, + "ProposalRetentionSource": { + "additionalProperties": false, + "properties": { + "mode": { + "$ref": "#/$defs/ProposalRetentionMode" + } + }, + "required": [ + "mode" + ], + "type": "object" + }, + "ProposalReviewContextSource": { + "additionalProperties": false, + "properties": { + "fields": { + "additionalProperties": { + "$ref": "#/$defs/ProposalContextValueSource" + }, + "maxProperties": 64, + "propertyNames": { + "maxLength": 64, + "minLength": 1, + "not": { + "enum": [ + "id", + "recordId", + "revision", + "createdAt", + "updatedAt", + "deletedAt" + ], + "x-registry-member-names": true + }, + "pattern": "^[a-z][A-Za-z0-9]{0,63}$", + "type": "string" + }, + "type": "object", + "x-registry-member-names": true + }, + "id": { + "$ref": "#/$defs/LocalId" + } + }, + "required": [ + "id", + "fields" + ], + "type": "object" + }, + "ProposalReviewSource": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "type": { + "const": "none", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "authority": { + "type": "string" + }, + "policy": { + "$ref": "#/$defs/PolicySelectionSource" + }, + "source": { + "type": "string" + }, + "type": { + "const": "required", + "type": "string" + } + }, + "required": [ + "type", + "authority", + "source", + "policy" + ], + "type": "object" + } + ] + }, + "ProposalTargetPermissionSource": { + "additionalProperties": false, + "properties": { + "recordType": { + "type": "string" + }, + "rowBoundaries": { + "$ref": "#/$defs/RowBoundaries" + } + }, + "required": [ + "recordType", + "rowBoundaries" + ], + "type": "object" + }, + "ProvenanceFieldSource": { + "description": "A member of a revision's `changeContext` a profile may read. Each value\nis spelled as the member it names is (CFG-NAME-2).", + "enum": [ + "kind", + "reasonCode", + "reasonText", + "sourceReferences" + ], + "type": "string", + "x-registry-member-names": true + }, + "ReadPathPermissionSource": { + "additionalProperties": false, + "properties": { + "allowCount": { + "default": false, + "type": "boolean" + }, + "filterableFields": { + "default": [], + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "path": { + "type": "string" + }, + "readableFields": { + "default": [], + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "sortableFields": { + "default": [], + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "path" + ], + "type": "object" + }, + "ReadPathSource": { + "additionalProperties": false, + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "route": { + "type": "string" + }, + "through": { + "type": "string" + }, + "to": { + "type": "string" + } + }, + "required": [ + "id", + "through", + "to", + "route" + ], + "type": "object" + }, + "RecipientGroupSource": { + "additionalProperties": false, + "description": "A frozen, named list of declared organizations. Groups do not nest.", + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "members": { + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "$ref": "#/$defs/DisplayText" + } + }, + "required": [ + "id", + "name", + "members" + ], + "type": "object" + }, + "RecipientOrganizationSource": { + "additionalProperties": false, + "description": "One named organization. Its clients are the verified OAuth clients that act\nfor it; an organization with no clients is retired and keeps its code.", + "properties": { + "clients": { + "items": { + "type": "string" + }, + "type": "array" + }, + "contact": { + "$ref": "#/$defs/DisplayText" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "name": { + "$ref": "#/$defs/DisplayText" + } + }, + "required": [ + "id", + "name", + "contact", + "clients" + ], + "type": "object" + }, + "RecipientsSource": { + "additionalProperties": false, + "description": "Declared consent recipients. Organization and group ids share one\nnamespace and form the append-only `registry-recipients` vocabulary.", + "properties": { + "groups": { + "items": { + "$ref": "#/$defs/RecipientGroupSource" + }, + "type": "array" + }, + "organizations": { + "default": [], + "items": { + "$ref": "#/$defs/RecipientOrganizationSource" + }, + "type": "array" + } + }, + "type": "object" + }, + "ReferenceDelete": { + "enum": [ + "restrict" + ], + "type": "string" + }, + "ReferenceFieldSourceSchema": { + "additionalProperties": false, + "properties": { + "apiName": { + "type": "string" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "onDelete": { + "$ref": "#/$defs/ReferenceDelete", + "default": "restrict" + }, + "relationship": { + "additionalProperties": false, + "properties": { + "inverseName": { + "pattern": "^[a-z][A-Za-z0-9]*$", + "type": "string" + } + }, + "type": "object" + }, + "required": { + "default": false, + "type": "boolean" + }, + "target": { + "type": "string" + }, + "type": { + "enum": [ + "reference" + ], + "type": "string" + }, + "validTimeRole": { + "$ref": "#/$defs/ValidTimeRole" + } + }, + "required": [ + "id", + "type", + "classification", + "target" + ], + "type": "object" + }, + "RegistryIdentitySource": { + "additionalProperties": false, + "properties": { + "canonicalBaseIri": { + "type": "string" + }, + "defaultLanguage": { + "type": "string" + }, + "display": { + "$ref": "#/$defs/DisplaySource", + "default": {} + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "timezone": { + "description": "The IANA time zone the registry answers \"today\" in, such as\n`Asia/Colombo`. Required when the project reads a date-interval\n`:current`, compares a `currentDate` requirement, calls\n`registry_context.evaluation_date()` on a live read, or declares a\nstatistics dataset.", + "type": "string" + }, + "version": { + "type": "string" + } + }, + "required": [ + "id", + "version", + "defaultLanguage", + "canonicalBaseIri" + ], + "type": "object" + }, + "RequiredScopes": { + "anyOf": [ + { + "const": "unrestricted", + "description": "Require no scope.", + "type": "string" + }, + { + "description": "Require every listed scope.", + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + ], + "description": "The scopes a token must carry to select a profile: the keyword\n`unrestricted`, or a list of at least one scope." + }, + "ReusableValueTypeSource": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "type": { + "const": "boolean", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "maximumLength": { + "format": "uint32", + "maximum": 1000000, + "minimum": 1, + "type": "integer" + }, + "minimumLength": { + "default": 0, + "format": "uint32", + "maximum": 1000000, + "minimum": 0, + "type": "integer" + }, + "type": { + "const": "string", + "type": "string" + } + }, + "required": [ + "type", + "maximumLength" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "maximumLength": { + "format": "uint32", + "maximum": 10000000, + "minimum": 1, + "type": "integer" + }, + "type": { + "const": "text", + "type": "string" + } + }, + "required": [ + "type", + "maximumLength" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "type": { + "const": "int64", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "maximum": { + "type": "string" + }, + "minimum": { + "type": "string" + }, + "precision": { + "format": "uint32", + "maximum": 38, + "minimum": 1, + "type": "integer" + }, + "scale": { + "format": "uint32", + "maximum": 38, + "minimum": 0, + "type": "integer" + }, + "type": { + "const": "decimal", + "type": "string" + } + }, + "required": [ + "type", + "precision", + "scale" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "type": { + "const": "date", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "type": { + "const": "timestamp", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "type": { + "const": "uuid", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "type": { + "const": "vocabulary-code", + "type": "string" + }, + "values": { + "default": [], + "items": { + "type": "string" + }, + "type": "array" + }, + "vocabulary": { + "type": "string" + } + }, + "required": [ + "type", + "vocabulary" + ], + "type": "object" + } + ] + }, + "ReviewAuthoritySource": { + "additionalProperties": false, + "properties": { + "display": { + "$ref": "#/$defs/DisplaySource", + "default": {} + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "protocol": { + "type": "string" + } + }, + "required": [ + "id", + "protocol" + ], + "type": "object" + }, + "RowBoundaries": { + "anyOf": [ + { + "const": "unrestricted", + "description": "Reach every row.", + "type": "string" + }, + { + "description": "Reach the rows every listed boundary binds to the caller's claims.", + "items": { + "$ref": "#/$defs/RowBoundarySource" + }, + "minItems": 1, + "type": "array" + } + ], + "description": "The rows a permission reaches: the keyword `unrestricted`, or a list of at\nleast one row boundary." + }, + "RowBoundarySource": { + "additionalProperties": false, + "properties": { + "claim": { + "type": "string" + }, + "field": { + "type": "string" + }, + "operator": { + "$ref": "#/$defs/BoundaryOperator" + } + }, + "required": [ + "field", + "claim", + "operator" + ], + "type": "object" + }, + "ScalarLiteral": { + "description": "A comparison literal: a boolean, a number, or text.", + "type": [ + "boolean", + "number", + "string" + ] + }, + "SelectorProfileSource": { + "additionalProperties": false, + "properties": { + "fields": { + "items": { + "type": "string" + }, + "type": "array" + }, + "id": { + "$ref": "#/$defs/LocalId" + } + }, + "required": [ + "id", + "fields" + ], + "type": "object" + }, + "SourceEventIdSource": { + "additionalProperties": false, + "description": "The identifier an event record carries from the system it was recorded from.", + "properties": { + "constraint": { + "description": "The authored unique constraint that enforces `duplicates: reject`.", + "type": "string" + }, + "duplicates": { + "$ref": "#/$defs/DuplicatePolicy" + }, + "field": { + "type": "string" + }, + "namespace": { + "description": "Absolute URI naming the identifier's namespace. Exactly one of\n`namespace` and `namespaceField` is declared.", + "type": "string" + }, + "namespaceField": { + "type": "string" + } + }, + "required": [ + "field", + "duplicates" + ], + "type": "object" + }, + "SpatialBboxPermissionSource": { + "additionalProperties": false, + "properties": { + "maximumLatitudeSpanDegrees": { + "type": "number" + }, + "maximumLongitudeSpanDegrees": { + "type": "number" + } + }, + "required": [ + "maximumLongitudeSpanDegrees", + "maximumLatitudeSpanDegrees" + ], + "type": "object" + }, + "SpatialQueryPermissionSource": { + "additionalProperties": false, + "properties": { + "bbox": { + "$ref": "#/$defs/SpatialBboxPermissionSource" + } + }, + "type": "object" + }, + "StatisticalDatasetSource": { + "additionalProperties": false, + "properties": { + "dimensions": { + "description": "Unit Record fields used to group counts. Each field must be boolean or\nvocabulary-code, and each may appear once. `period`, `value`, and `status`\nare reserved output columns and cannot be dimension field names.", + "items": { + "type": "string" + }, + "type": "array" + }, + "disclosure": { + "$ref": "#/$defs/StatisticalDisclosureSource" + }, + "display": { + "$ref": "#/$defs/PresentationSource", + "description": "Authored presentation only; labels never establish identity or authority." + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "period": { + "$ref": "#/$defs/StatisticalPeriodSource" + }, + "population": { + "type": "string" + }, + "unit": { + "type": "string" + } + }, + "required": [ + "id", + "unit", + "population", + "period", + "dimensions" + ], + "type": "object" + }, + "StatisticalDisclosureSource": { + "additionalProperties": false, + "properties": { + "minimumCount": { + "format": "uint64", + "maximum": 9007199254740991, + "minimum": 2, + "type": "integer" + }, + "roundingBase": { + "format": "uint64", + "maximum": 9007199254740991, + "minimum": 2, + "type": "integer" + } + }, + "required": [ + "minimumCount", + "roundingBase" + ], + "type": "object" + }, + "StatisticalPeriodGranularitySource": { + "enum": [ + "day", + "month", + "quarter", + "year" + ], + "type": "string" + }, + "StatisticalPeriodSource": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "field": { + "description": "Date field on the unit Record that places each row in a period.", + "type": "string" + }, + "firstPeriod": { + "type": "string" + }, + "granularity": { + "$ref": "#/$defs/StatisticalPeriodGranularitySource" + }, + "type": { + "const": "flow", + "type": "string" + } + }, + "required": [ + "type", + "field", + "granularity", + "firstPeriod" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "firstPeriod": { + "type": "string" + }, + "granularity": { + "$ref": "#/$defs/StatisticalPeriodGranularitySource" + }, + "type": { + "const": "stock", + "type": "string" + }, + "validity": { + "$ref": "#/$defs/StatisticalValiditySource" + } + }, + "required": [ + "type", + "granularity", + "firstPeriod", + "validity" + ], + "type": "object" + } + ] + }, + "StatisticalTemporalValiditySource": { + "enum": [ + "temporal" + ], + "type": "string" + }, + "StatisticalValidityFieldsSource": { + "additionalProperties": false, + "properties": { + "from": { + "description": "Required date field on the unit Record marking the start of validity.", + "type": "string" + }, + "until": { + "description": "Optional date field marking the end of validity. A missing or null end\nleaves the row valid until a later bound is stored.", + "type": "string" + } + }, + "required": [ + "from" + ], + "type": "object" + }, + "StatisticalValiditySource": { + "anyOf": [ + { + "$ref": "#/$defs/StatisticalTemporalValiditySource" + }, + { + "$ref": "#/$defs/StatisticalValidityFieldsSource" + } + ], + "description": "The scalar `temporal`, or a mapping naming the validity fields." + }, + "StringFieldSourceSchema": { + "additionalProperties": false, + "properties": { + "apiName": { + "type": "string" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource" + }, + "encrypted": { + "default": false, + "type": "boolean" + }, + "generate": { + "$ref": "#/$defs/FieldGenerationSource" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "lookup": { + "$ref": "#/$defs/FieldLookupSource" + }, + "maximumLength": { + "format": "uint32", + "maximum": 1000000, + "minimum": 1, + "type": "integer" + }, + "minimumLength": { + "default": 0, + "format": "uint32", + "maximum": 1000000, + "minimum": 0, + "type": "integer" + }, + "pattern": { + "type": "string" + }, + "required": { + "default": false, + "type": "boolean" + }, + "type": { + "enum": [ + "string" + ], + "type": "string" + }, + "validTimeRole": { + "$ref": "#/$defs/ValidTimeRole" + } + }, + "required": [ + "id", + "type", + "classification", + "maximumLength" + ], + "type": "object" + }, + "StructuredFieldSourceSchema": { + "additionalProperties": false, + "properties": { + "apiName": { + "type": "string" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource" + }, + "encrypted": { + "default": false, + "type": "boolean" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "lookup": { + "$ref": "#/$defs/FieldLookupSource" + }, + "maximumBytes": { + "format": "uint32", + "maximum": 1048576, + "minimum": 1, + "type": "integer" + }, + "required": { + "default": false, + "type": "boolean" + }, + "schema": { + "x-registry-foreign": "json-schema-2020-12" + }, + "type": { + "enum": [ + "structured" + ], + "type": "string" + }, + "validTimeRole": { + "$ref": "#/$defs/ValidTimeRole" + } + }, + "required": [ + "id", + "type", + "classification", + "maximumBytes", + "schema" + ], + "type": "object" + }, + "TaskGrantSource": { + "additionalProperties": false, + "properties": { + "sourceIssuer": { + "$ref": "#/$defs/Url" + } + }, + "required": [ + "sourceIssuer" + ], + "type": "object" + }, + "TemporalSource": { + "additionalProperties": false, + "properties": { + "endField": { + "description": "The exclusive end: the interval stops just before this value.", + "type": "string" + }, + "lastDayField": { + "description": "The inclusive last day of a date interval, named in place of\n`endField` when the source records the last day in force.", + "type": "string" + }, + "startField": { + "type": "string" + } + }, + "required": [ + "startField" + ], + "type": "object" + }, + "TextFieldSourceSchema": { + "additionalProperties": false, + "properties": { + "apiName": { + "type": "string" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource" + }, + "encrypted": { + "default": false, + "type": "boolean" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "lookup": { + "$ref": "#/$defs/FieldLookupSource" + }, + "maximumLength": { + "format": "uint32", + "maximum": 10000000, + "minimum": 1, + "type": "integer" + }, + "pattern": { + "type": "string" + }, + "required": { + "default": false, + "type": "boolean" + }, + "type": { + "enum": [ + "text" + ], + "type": "string" + }, + "validTimeRole": { + "$ref": "#/$defs/ValidTimeRole" + } + }, + "required": [ + "id", + "type", + "classification", + "maximumLength" + ], + "type": "object" + }, + "TimerGrantSource": { + "additionalProperties": false, + "description": "Root-owned autonomous authority for one exact Record timer.", + "properties": { + "recordType": { + "$ref": "#/$defs/LocalId" + }, + "timer": { + "$ref": "#/$defs/LocalId" + } + }, + "required": [ + "recordType", + "timer" + ], + "type": "object" + }, + "TimerInputSource": { + "additionalProperties": false, + "description": "One complete mapping into one ordinary Action input. Exactly one member is\nselected by compilation; the flat shape preserves authored source positions.", + "properties": { + "fromField": { + "type": "string" + }, + "fromRecordId": { + "const": true, + "type": "boolean" + }, + "fromTimer": { + "$ref": "#/$defs/TimerValueSource" + }, + "value": true + }, + "type": "object" + }, + "TimerPredicateSource": { + "additionalProperties": false, + "description": "A bounded conjunction of equality checks over current stored fields.", + "properties": { + "equals": { + "additionalProperties": { + "$ref": "#/$defs/ScalarLiteral" + }, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "type": { + "const": "fields", + "type": "string" + } + }, + "required": [ + "type", + "equals" + ], + "type": "object" + }, + "TimerSource": { + "additionalProperties": false, + "description": "One timer attached to a governed Record type.", + "properties": { + "at": { + "type": "string" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "input": { + "additionalProperties": { + "$ref": "#/$defs/TimerInputSource" + }, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "invoke": { + "type": "string" + }, + "notAfter": { + "type": "string" + }, + "rearmOn": { + "type": "string" + }, + "when": { + "$ref": "#/$defs/TimerPredicateSource" + } + }, + "required": [ + "id", + "at", + "invoke", + "input" + ], + "type": "object" + }, + "TimerValueSource": { + "description": "Runtime-owned timer facts that may be mapped into Action inputs.", + "enum": [ + "occurrence-id", + "due-at" + ], + "type": "string" + }, + "TimestampFieldSourceSchema": { + "additionalProperties": false, + "properties": { + "apiName": { + "type": "string" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "required": { + "default": false, + "type": "boolean" + }, + "type": { + "enum": [ + "timestamp" + ], + "type": "string" + }, + "validTimeRole": { + "$ref": "#/$defs/ValidTimeRole" + } + }, + "required": [ + "id", + "type", + "classification" + ], + "type": "object" + }, + "UniqueWhenPredicate": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "field": { + "type": "string" + }, + "type": { + "const": "field-equals", + "type": "string" + }, + "value": true + }, + "required": [ + "type", + "field", + "value" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "field": { + "type": "string" + }, + "type": { + "const": "field-is-null", + "type": "string" + } + }, + "required": [ + "type", + "field" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "field": { + "type": "string" + }, + "type": { + "const": "field-is-not-null", + "type": "string" + } + }, + "required": [ + "type", + "field" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "type": { + "const": "active-lifecycle", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + } + ] + }, + "Url": { + "description": "An absolute http or https URL with a host preserved as written, no user information, and no backslash, whitespace or control character. DNS case and equivalent IPv6 literals are permitted.", + "format": "uri", + "maxLength": 2048, + "pattern": "^[Hh][Tt][Tt][Pp][Ss]?://[^/?#@\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]+([/?#][^\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]*)?$", + "type": "string" + }, + "UuidFieldSourceSchema": { + "additionalProperties": false, + "properties": { + "apiName": { + "type": "string" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "required": { + "default": false, + "type": "boolean" + }, + "type": { + "enum": [ + "uuid" + ], + "type": "string" + }, + "validTimeRole": { + "$ref": "#/$defs/ValidTimeRole" + } + }, + "required": [ + "id", + "type", + "classification" + ], + "type": "object" + }, + "ValidTimeRole": { + "enum": [ + "valid-from", + "valid-to" + ], + "type": "string" + }, + "VocabularyCodeFieldSourceSchema": { + "additionalProperties": false, + "properties": { + "apiName": { + "type": "string" + }, + "classification": { + "$ref": "#/$defs/Classification" + }, + "display": { + "$ref": "#/$defs/DisplaySource" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "required": { + "default": false, + "type": "boolean" + }, + "type": { + "enum": [ + "vocabulary-code" + ], + "type": "string" + }, + "validTimeRole": { + "$ref": "#/$defs/ValidTimeRole" + }, + "values": { + "default": [], + "items": { + "type": "string" + }, + "type": "array" + }, + "vocabulary": { + "type": "string" + } + }, + "required": [ + "id", + "type", + "classification", + "vocabulary" + ], + "type": "object" + }, + "VocabularySource": { + "additionalProperties": false, + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "values": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "id", + "values" + ], + "type": "object" + } + }, + "$id": "https://id.registrystack.org/schemas/breg/project/project.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "accessProfiles": { + "default": [], + "items": { + "$ref": "#/$defs/ProjectAccessProfileSource" + }, + "type": "array" + }, + "actions": { + "items": { + "$ref": "#/$defs/ActionSource" + }, + "type": "array" + }, + "apiVersion": { + "const": "id.registrystack.org/formats/breg/project/v1alpha1", + "type": "string" + }, + "datasets": { + "default": [], + "items": { + "$ref": "#/$defs/DatasetSource" + }, + "type": "array" + }, + "evidenceProviders": { + "items": { + "$ref": "#/$defs/EvidenceProviderSource" + }, + "type": "array" + }, + "functions": { + "default": [], + "items": { + "$ref": "#/$defs/FunctionSource" + }, + "type": "array" + }, + "kind": { + "const": "BRegProject", + "type": "string" + }, + "manifestProjection": { + "$ref": "#/$defs/ManifestProjectionSource" + }, + "modules": { + "default": [], + "items": { + "$ref": "#/$defs/ModuleLockSource" + }, + "type": "array" + }, + "package": { + "$ref": "#/$defs/PackageIdentitySource" + }, + "project": { + "$ref": "#/$defs/RegistryIdentitySource" + }, + "recipients": { + "$ref": "#/$defs/RecipientsSource", + "description": "Named organizations and frozen groups that consent may be given to." + }, + "recordTypes": { + "default": [], + "items": { + "$ref": "#/$defs/EntitySource" + }, + "type": "array" + }, + "retiredConsentScopes": { + "description": "Consent scope codes of removed gated profiles, kept so existing consent\nrows still validate. A retired scope matches nothing.", + "items": { + "type": "string" + }, + "type": "array" + }, + "reviewAuthorities": { + "default": [], + "items": { + "$ref": "#/$defs/ReviewAuthoritySource" + }, + "type": "array" + }, + "statisticalDatasets": { + "description": "Declared count tables computed from governed Registry records.", + "items": { + "$ref": "#/$defs/StatisticalDatasetSource" + }, + "type": "array" + }, + "timerGrants": { + "description": "Root-owned enablement of autonomous Record timers. Modules may declare\ntimers, but cannot contribute this authority.", + "items": { + "$ref": "#/$defs/TimerGrantSource" + }, + "type": "array" + }, + "valueTypes": { + "additionalProperties": { + "$ref": "#/$defs/ReusableValueTypeSource" + }, + "default": {}, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "vocabularies": { + "default": [], + "items": { + "$ref": "#/$defs/VocabularySource" + }, + "type": "array" + } + }, + "required": [ + "apiVersion", + "kind", + "project" + ], + "title": "Base Registry Engine authored project", + "type": "object" +} diff --git a/src/artifacts/sha256/cdc74748bb3e149abc012ed32d5f3518867e70465a51a88628df99903bd9df5f.json b/src/artifacts/sha256/cdc74748bb3e149abc012ed32d5f3518867e70465a51a88628df99903bd9df5f.json new file mode 100644 index 000000000..2c72786e6 --- /dev/null +++ b/src/artifacts/sha256/cdc74748bb3e149abc012ed32d5f3518867e70465a51a88628df99903bd9df5f.json @@ -0,0 +1,123 @@ +{ + "$defs": { + "DocumentFile": { + "additionalProperties": false, + "description": "One document type as `manifest.yaml` writes it.", + "properties": { + "entryFile": { + "description": "Entry point relative to the bundle root: a `.typ` file inside the\nbundle.", + "not": { + "pattern": "^/|\\.\\." + }, + "pattern": "\\.typ$", + "type": "string" + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "Stable document identifier used in requests and routes." + }, + "labels": { + "default": [], + "description": "Label tables the template receives, by locale: each names\n`labels/.yaml`.", + "items": { + "$ref": "#/$defs/LocalId" + }, + "type": "array", + "uniqueItems": true + }, + "pdfStandard": { + "$ref": "#/$defs/PdfStandardSpec", + "description": "PDF standard for this document; plain PDF when absent." + }, + "schemaFile": { + "description": "JSON Schema (draft 2020-12) for the request data, relative to the\nbundle root: a `.json` file inside the bundle.", + "not": { + "pattern": "^/|\\.\\." + }, + "pattern": "\\.json$", + "type": "string" + }, + "seal": { + "$ref": "#/$defs/LocalId", + "description": "The seal this document type is issued under: a local identifier that\nthe serving runtime's `signing.seals` binds to key material. Omit it\nand the document type cannot be sealed. The bundle never holds a key,\na certificate, or a client list." + }, + "version": { + "description": "The document's own version; printed on paper by templates that wish to.", + "format": "uint32", + "maximum": 4294967295, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "id", + "version", + "entryFile" + ], + "type": "object" + }, + "LocalId": { + "description": "A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.", + "pattern": "^[a-z][a-z0-9_-]{0,63}$", + "type": "string" + }, + "PdfStandardSpec": { + "description": "The PDF standard a document is rendered under. Mirrors the Typst CLI's\nspellings exactly so bundles and CLI examples agree.", + "enum": [ + "1.4", + "1.5", + "1.6", + "1.7", + "2.0", + "a-1b", + "a-1a", + "a-2b", + "a-2u", + "a-2a", + "a-3b", + "a-3u", + "a-3a", + "a-4", + "a-4f", + "a-4e", + "ua-1" + ], + "type": "string" + } + }, + "$id": "https://id.registrystack.org/schemas/render/bundle/bundle.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "description": "`manifest.yaml`: the document types a bundle declares.", + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/render/bundle/v1alpha1", + "type": "string" + }, + "bundleVersion": { + "description": "Author-defined bundle version, monotonic per bundle.", + "format": "uint32", + "maximum": 4294967295, + "minimum": 1, + "type": "integer" + }, + "documents": { + "description": "The document types, each with an id unique in the bundle.", + "items": { + "$ref": "#/$defs/DocumentFile" + }, + "type": "array" + }, + "kind": { + "const": "RenderBundle", + "type": "string" + } + }, + "required": [ + "apiVersion", + "kind", + "bundleVersion" + ], + "title": "Registry Render bundle manifest", + "type": "object" +} diff --git a/src/artifacts/sha256/d54c2e60d478680238197bd57d5d5baf83975cf6f30a359d0d331d31f333495f.yaml b/src/artifacts/sha256/d54c2e60d478680238197bd57d5d5baf83975cf6f30a359d0d331d31f333495f.yaml new file mode 100644 index 000000000..ec094945d --- /dev/null +++ b/src/artifacts/sha256/d54c2e60d478680238197bd57d5d5baf83975cf6f30a359d0d331d31f333495f.yaml @@ -0,0 +1,197 @@ +$schema: https://json-schema.org/draft/2020-12/schema +$id: https://id.registrystack.org/schemas/evidence/verification-policy/verification-policy.v1.schema.json +title: Evidence relying-procedure verification policy Version 1 +type: object +additionalProperties: false +required: + - apiVersion + - kind + - expectedAssuranceProfile + - issuedBy + - providedBy + - requirement + - evidenceType + - purpose + - audience + - configurationRevision + - requestNonce + - expectedSubjects + - expectedOutputs + - maximumAssertionLifetimeSeconds + - revokedKeyIds +properties: + apiVersion: + const: id.registrystack.org/formats/evidence/verification-policy/v1 + kind: + const: EvidenceVerificationPolicy + expectedAssuranceProfile: {enum: [local, production, evidence-grade]} + issuedBy: {type: string, format: uri, maxLength: 512} + providedBy: {type: string, format: uri, maxLength: 512} + requirement: {type: string, format: uri, maxLength: 512} + evidenceType: {type: string, format: uri, maxLength: 512} + purpose: {type: string, pattern: '^[a-z][a-z0-9._:-]{0,127}$'} + audience: {type: string, format: uri, maxLength: 512} + configurationRevision: + type: string + pattern: '^sha256:[a-f0-9]{64}$' + description: >- + The requirement-scoped revision the relying party pinned, as the + requirement's own definition published it. A deployment's unrelated edits + do not change it. + requestNonce: + type: string + pattern: '^[A-Za-z0-9_-]{43}$' + description: The exact nonce from the independently retained original request. + expectedSubjects: + type: array + minItems: 1 + maxItems: 8 + uniqueItems: true + description: Unordered set of unique role-bound opaque bindings. Subject order alone is never semantic. + items: {$ref: '#/$defs/expected-subject'} + expectedOutputs: + type: array + minItems: 1 + maxItems: 16 + uniqueItems: true + description: Expected concept identifiers, value forms, and cardinalities, one per disclosed Supported Value. + items: {$ref: '#/$defs/expected-output'} + maximumAssertionLifetimeSeconds: + type: integer + minimum: 1 + maximum: 31536000 + description: Longest acceptable validUntil minus issuedAt interval. + revokedKeyIds: + type: array + maxItems: 33 + uniqueItems: true + items: {type: string, pattern: '^[A-Za-z0-9_-]{42}[AEIMQUYcgkosw048]$'} + description: Emergency denylist of Evidence service-key RFC 7638 thumbprints, checked before a pinned JWKS key is selected. An empty list is explicit. + acceptedChannels: + type: array + minItems: 1 + maxItems: 2 + uniqueItems: true + items: {enum: [source, holder-presented]} + description: >- + The channels this procedure accepts, from the closed channel vocabulary. + Omitting it means source only, so a procedure written before the channel + member existed refuses an assertion that a holder presented. An empty + list is refused; an open choice is every channel listed. + maximumCredentialAgeSeconds: + type: integer + minimum: 1 + maximum: 315360000 + description: >- + Longest acceptable observedAt minus presentedCredential.issuedAt, applied + to holder-presented assertions only. Omitting it means no bound on the + credential's age. + clockSkewSeconds: + type: integer + minimum: 0 + maximum: 300 + default: 0 + description: Optional. Omitting it means zero tolerance. +$defs: + expected-subject: + type: object + additionalProperties: false + required: [role, binding] + properties: + role: {type: string, pattern: '^[a-z][a-z0-9._-]{0,63}$'} + binding: {type: string, pattern: '^urn:evidence:subject:v[1-9][0-9]*_[A-Za-z0-9_-]{43}$'} + expected-output: + type: object + additionalProperties: false + required: [handle, concept, required, form] + properties: + handle: {type: string, pattern: '^[a-z][a-z0-9._-]{0,127}$'} + concept: {type: string, format: uri, maxLength: 512} + required: {type: boolean} + form: {$ref: '#/$defs/expected-form'} + expected-form: + oneOf: + - type: object + additionalProperties: false + required: [type] + properties: + type: {const: boolean} + - type: object + additionalProperties: false + required: [type] + properties: + type: {const: integer} + - type: object + additionalProperties: false + required: [type] + properties: + type: {const: string} + - type: object + additionalProperties: false + required: [type] + properties: + type: {const: date-bucket} + - type: object + additionalProperties: false + required: [type] + properties: + type: {const: time-bucket} + - type: object + additionalProperties: false + required: [type] + properties: + type: {const: entity-reference} + - type: object + additionalProperties: false + required: [type] + properties: + type: {const: structured} + - type: object + additionalProperties: false + required: [type, items, minimumItems, maximumItems, unique] + properties: + type: {const: list} + items: {enum: [string, entity-reference]} + minimumItems: {type: integer, minimum: 1, maximum: 64} + maximumItems: {type: integer, minimum: 1, maximum: 64} + unique: {const: true} +ownership: + document: relying party + producer: the relying procedure that retained the original request and accepted the original transaction + consumer: offline re-verification by the `evidence verify` operator command +command: + surface: evidence verify (--jws | --sd-jwt-vc ) --jwks --policy [--at ] + jws: one stored flattened JWS JSON response file + sd-jwt-vc: one stored SD-JWT VC response file, in the issued compact serialization + format_selection: exactly one stored response file is named, and naming it states its format; the command never infers a format from a file's contents, so a stored response is never re-verified under the other format's rules + policy_scope: this document governs the two audience-scoped formats, signed JWS and SD-JWT VC, because the same Evidence payload is verified whichever serialization carried it; a holder-bound presentation carries no audience or request nonce to compare and is governed by the holder-bound document instead, and neither command accepts the other's document + jwks: the pinned trusted key set, which is the complete trust set for the run + policy: one document accepted by this schema + at: strict RFC 3339 at zero offset; system time when omitted + network: prohibited; no socket is opened, no metadata is resolved, and no key is fetched + input_bound: every input file is refused above 1 MiB before it is read +output: + lines: + - 'verified-at: the chosen verification instant' + - 'authentic: yes or no, printed once verification ran' + - 'currently-valid: yes or no, printed only for an authentic response' + inspection: on full success the verified Evidence JSON is also printed, for the operator who already holds the stored response + failure: only the closed class is reported, on standard error, with no field-level detail + classes: [malformed, protected-header, key, signature, payload, policy, time, disclosure, key-binding] + disclosure_class: reported only for a stored SD-JWT VC whose disclosures do not reconstruct the payload the signature covers + key_binding_class: never reported by this command, which verifies audience-scoped responses and asks nothing about possession; it is listed here because the failure-class vocabulary is one closed list shared by both verification commands + exit_codes: + 0: authentic and currently valid + 3: authentic but not currently valid + 1: every other outcome, including a policy mismatch, an unusable input document, and an unreadable file +$comment: >- + Every expectation and revoked-key decision in this document must come from independent trusted state, + such as the independently retained original request and an accepted original + transaction. Copying values out of the JWS under verification proves nothing, + and a policy that omitted an expectation would silently skip a comparison, so + the document is closed and every field except clockSkewSeconds, acceptedChannels, and maximumCredentialAgeSeconds is required. A + failed comparison, including the expected nonce, the expected role-bound + subject set, and the expected output contract, reports the one generic policy + class, so re-verification is never an oracle for which hidden comparison + failed. Authenticity and current usability are separate answers: an expired + assertion stays cryptographically authentic without being current evidence. diff --git a/src/artifacts/sha256/d68323a93d34904b5bc49870512e03baf519fd86b2a88078df69e68ee417242f.json b/src/artifacts/sha256/d68323a93d34904b5bc49870512e03baf519fd86b2a88078df69e68ee417242f.json new file mode 100644 index 000000000..aa5e6b414 --- /dev/null +++ b/src/artifacts/sha256/d68323a93d34904b5bc49870512e03baf519fd86b2a88078df69e68ee417242f.json @@ -0,0 +1,1067 @@ +{ + "$defs": { + "AnonymousHttpsAcknowledgement": { + "description": "The one named acknowledgement that admits a credential-free HTTPS\nsource. This is a security-sensitive operator decision, not a boolean\nwhose meaning can be lost in a rendered configuration.", + "oneOf": [ + { + "const": "operator-approved", + "description": "The operator reviewed and approved this fixed anonymous source.", + "type": "string" + } + ] + }, + "Cidr": { + "description": "A private network range in `addr/prefix` form, for example 10.0.0.0/8.", + "pattern": "^[0-9a-fA-F.:]+/[0-9]{1,3}$", + "type": "string" + }, + "CredentialPlacement": { + "description": "Where a shared client secret travels, Evidence's `CredentialPlacement`\nspelling.", + "oneOf": [ + { + "const": "basic-header", + "description": "`Authorization: Basic` on the token request.", + "type": "string" + }, + { + "const": "form-body", + "description": "A form parameter on the token request.", + "type": "string" + } + ] + }, + "EndpointBinding": { + "additionalProperties": false, + "description": "The environment binding of one pack endpoint: its base URL, its\ncredentials matching the endpoint's declared kind, and the optional TLS\nadditions (`products/adapter/CONCEPT.md` section 10.2).", + "properties": { + "anonymousHttps": { + "$ref": "#/$defs/AnonymousHttpsAcknowledgement", + "description": "The operator's explicit acknowledgement that a credential-free\nsource is intentionally served over verified HTTPS. Omission keeps\nthe credential-free policy closed outside numeric loopback and mTLS." + }, + "attemptTimeoutMilliseconds": { + "description": "A finite attempt-timeout override in milliseconds. Evidence may raise\nor lower its pack default under the acquisition's remaining deadline;\nfacade and job admit only a lower value within their ten-second policy.", + "format": "uint64", + "maximum": 18446744073709551615, + "minimum": 1, + "type": "integer" + }, + "baseUrl": { + "$ref": "#/$defs/Url", + "description": "The upstream origin; a fixed destination the engine never derives\nfrom a response." + }, + "credential": { + "$ref": "#/$defs/RuntimeCredential", + "description": "The credential; its kind must match the endpoint's declared kind." + }, + "endpoint": { + "$ref": "#/$defs/ExternalId", + "description": "The pack endpoint this binding configures." + }, + "maximumConcurrency": { + "default": 8, + "description": "The maximum simultaneous physical data operations admitted for this\nendpoint. Evidence programs selecting the same named connection share\none permit pool; token acquisition retains its own cache/single-flight\ncontrols.", + "format": "uint64", + "maximum": 256, + "minimum": 1, + "type": "integer" + }, + "maximumResponseBytes": { + "description": "A lower response bound than the pack declares, in bytes (1 to\n16777216, the largest bound a pack endpoint may declare); absent, the\ndeclared one applies. A value above the declared one is refused when\nthe deployment loads.", + "format": "uint64", + "maximum": 16777216, + "minimum": 1, + "type": "integer" + }, + "mtlsIdentity": { + "$ref": "#/$defs/MtlsIdentity", + "description": "The mTLS client identity, combinable with any authentication kind." + }, + "tlsTrustProfile": { + "$ref": "#/$defs/LocalId", + "description": "A trust profile under `outboundTls.trustProfiles` whose CA bundle\nthe endpoint trusts beside the system roots; absent, the endpoint\ntrusts the system roots alone." + } + }, + "required": [ + "endpoint", + "baseUrl" + ], + "type": "object" + }, + "EnvironmentSecretProviderConfig": { + "additionalProperties": false, + "description": "The environment secret provider. It takes no settings.", + "type": "object" + }, + "ExternalId": { + "description": "An identifier another system issues, written exactly as its issuer gives it.", + "maxLength": 512, + "minLength": 1, + "pattern": "^[^\\u0000-\\u001F\\u007F-\\u009F]+$", + "type": "string" + }, + "FileSecretProviderConfig": { + "additionalProperties": false, + "description": "The file secret provider.", + "properties": { + "root": { + "description": "Absolute directory holding one file per secret. Each file must be a\nregular file owned by the runtime user, mode 0400 or 0600, with exactly\none hard link.", + "pattern": "^/", + "type": "string" + } + }, + "required": [ + "root" + ], + "type": "object" + }, + "FileSource": { + "additionalProperties": false, + "anyOf": [ + { + "required": [ + "doneFileName" + ] + }, + { + "properties": { + "readLock": { + "const": "changed" + } + }, + "required": [ + "readLock" + ] + }, + { + "required": [ + "producerAtomicHandover" + ] + } + ], + "description": "The runtime binding of one `file` source endpoint: the absolute base\ndirectory the read never leaves, the namespace the item keys carry,\nand the read behavior of the camel-file port.", + "properties": { + "directory": { + "description": "The absolute path of the directory the read lists and reads. A\nrelative path refuses at the reader.", + "type": "string" + }, + "doneFileName": { + "description": "The done-file a candidate must have beside it: a literal name, or\nthe candidate's own name inside a fixed prefix and suffix\n(`$simple{file:name}` or `${file:name}`). Absent, no done-file\ncheck runs.", + "type": "string" + }, + "include": { + "description": "The Ant-style glob a candidate file name must match; absent,\nevery file is a candidate. A glob carrying a path separator\nrefuses at the reader: the read is non-recursive.", + "type": "string" + }, + "maxMessagesPerPoll": { + "description": "Camel's `maxMessagesPerPoll`, accepted for Camel parity; absent,\n500. One read emits at most one file, so the member bounds\nnothing a read does not already bound.", + "format": "uint32", + "maximum": 4294967295, + "minimum": 1, + "type": "integer" + }, + "namespace": { + "description": "The namespace every item key of this source carries.", + "type": "string" + }, + "producerAtomicHandover": { + "const": true, + "description": "The producer's declaration that a file appears in the directory\nonly once complete, renamed in after it is written. A source\ndeclares this, a `doneFileName`, or `readLock: changed`; one with\nnone refuses.", + "type": "boolean" + }, + "readLock": { + "$ref": "#/$defs/ReadLock", + "description": "The read lock; absent, `none`." + }, + "readLockCheckIntervalMilliseconds": { + "description": "The `changed` lock's space between its two checks, in\nmilliseconds (100 to 5000); absent, 1000. Refused beside any read\nlock but `changed`.", + "format": "uint64", + "maximum": 5000, + "minimum": 100, + "type": "integer" + }, + "readLockTimeoutMilliseconds": { + "description": "The `changed` lock's timeout, in milliseconds (1 to 10000, the\npollEnrich step's own timeout ceiling); absent, 10000. Refused\nbeside any read lock but `changed`.", + "format": "uint64", + "maximum": 10000, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "directory", + "namespace" + ], + "type": "object" + }, + "HookIngress": { + "additionalProperties": false, + "properties": { + "listener": { + "$ref": "#/$defs/PrivateListenerConfig", + "allOf": [ + { + "if": { + "properties": { + "bind": { + "pattern": ":0$" + } + }, + "required": [ + "bind" + ] + }, + "then": { + "properties": { + "tlsTermination": { + "const": "development-loopback" + } + } + } + } + ], + "properties": { + "bind": { + "description": "Canonical loopback socket address. The schema accepts canonical IPv4 127/8 octets and [::1], with an unpadded decimal port from 0 through 65535.", + "pattern": "^(?:127(?:\\.(?:0|[1-9][0-9]?|1[0-9]{2}|2[0-4][0-9]|25[0-5])){3}|\\[::1\\]):(?:0|[1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$" + } + }, + "unevaluatedProperties": false + }, + "sources": { + "additionalProperties": { + "$ref": "#/$defs/HookSource" + }, + "maxProperties": 16, + "minProperties": 1, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + } + }, + "required": [ + "listener", + "sources" + ], + "type": "object" + }, + "HookSource": { + "additionalProperties": false, + "properties": { + "burst": { + "format": "uint64", + "maximum": 1000, + "minimum": 1, + "type": "integer" + }, + "passwordRef": { + "$ref": "#/$defs/SecretReference" + }, + "requestsPerMinute": { + "format": "uint64", + "maximum": 60000, + "minimum": 1, + "type": "integer" + }, + "usernameRef": { + "$ref": "#/$defs/SecretReference" + } + }, + "required": [ + "usernameRef", + "passwordRef", + "requestsPerMinute", + "burst" + ], + "type": "object" + }, + "JobSources": { + "additionalProperties": false, + "description": "The job source bindings, keyed by the pack endpoint each binds.", + "properties": { + "file": { + "additionalProperties": { + "$ref": "#/$defs/FileSource" + }, + "description": "The file sources, keyed by endpoint id.", + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "postgres": { + "additionalProperties": { + "$ref": "#/$defs/PostgresSource" + }, + "description": "The read-only postgres sources, keyed by endpoint id.", + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "rabbitmq": { + "additionalProperties": { + "$ref": "#/$defs/RabbitMqSource" + }, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "sftp": { + "additionalProperties": { + "$ref": "#/$defs/SftpSource" + }, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + } + }, + "type": "object" + }, + "JobStore": { + "additionalProperties": false, + "description": "The job store block: the item table's single connection reference.\nSecret references only, resolved by the job host.", + "properties": { + "runtimeUrlRef": { + "$ref": "#/$defs/SecretReference", + "description": "The runtime connection reference of the item table's database." + }, + "testOnlyPlaintext": { + "description": "Plaintext connections for the loopback test database only;\nrefused when true in any build without the job host's test\nfeature.", + "type": "boolean" + }, + "trustedRootCertificateRef": { + "$ref": "#/$defs/SecretReference", + "description": "The root certificate the connection trusts beside the platform\nroots; absent, the platform roots alone." + } + }, + "required": [ + "runtimeUrlRef" + ], + "type": "object" + }, + "ListenerBind": { + "description": "Socket address the runtime listens on, written host:port with an IP address host ([addr]:port for IPv6).", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "ListenerNetworkExposure": { + "description": "The operator-declared private network placement of an HTTP listener.", + "enum": [ + "private-address", + "container-private" + ], + "type": "string" + }, + "LocalId": { + "description": "A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.", + "pattern": "^[a-z][a-z0-9_-]{0,63}$", + "type": "string" + }, + "MtlsIdentity": { + "additionalProperties": false, + "description": "The mTLS client identity of an endpoint, orthogonal to the\nauthentication kind (`products/adapter/CONCEPT.md` section 10.2). It is\none way a `none` endpoint reaches a non-loopback source. An operator may\ninstead acknowledge a credential-free HTTPS source on its fixed runtime\nbinding.", + "properties": { + "certificateRef": { + "$ref": "#/$defs/SecretReference", + "description": "The client certificate secret reference." + }, + "keyRef": { + "$ref": "#/$defs/SecretReference", + "description": "The client private key secret reference." + } + }, + "required": [ + "certificateRef", + "keyRef" + ], + "type": "object" + }, + "OutboundTls": { + "additionalProperties": false, + "description": "The private certificate authorities endpoints may trust beside the\nsystem roots (`products/adapter/CONCEPT.md` section 10.2), in the shape\nEvidence ships: a named profile is a process-local PEM file. A CA\nbundle is not a secret, so the profile names a file, never a secret\nreference.", + "properties": { + "trustProfiles": { + "additionalProperties": { + "$ref": "#/$defs/TrustProfile" + }, + "default": {}, + "description": "The named private CA bundles.", + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + } + }, + "type": "object" + }, + "PostgresSource": { + "additionalProperties": false, + "description": "The runtime binding of one read-only `postgres` source endpoint: its\nown pool, with its own credential and TLS posture.", + "properties": { + "database": { + "description": "The source database.", + "type": "string" + }, + "host": { + "description": "The source host.", + "type": "string" + }, + "namespace": { + "description": "The namespace every item key of this source carries.", + "type": "string" + }, + "passwordRef": { + "$ref": "#/$defs/SecretReference", + "description": "The reference the source password resolves from." + }, + "port": { + "description": "The source port (1 to 65535); absent, 5432.", + "format": "uint64", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "tls": { + "$ref": "#/$defs/SourceTls", + "description": "The TLS posture of the connection; absent, the system roots with\nTLS required." + }, + "user": { + "description": "The source user.", + "type": "string" + } + }, + "required": [ + "host", + "database", + "user", + "passwordRef", + "namespace" + ], + "type": "object" + }, + "PrivateListenerConfig": { + "additionalProperties": false, + "description": "The listener of a runtime that declares its TLS termination and network\nexposure.", + "properties": { + "bind": { + "$ref": "#/$defs/ListenerBind" + }, + "networkExposure": { + "$ref": "#/$defs/ListenerNetworkExposure", + "default": "private-address" + }, + "tlsTermination": { + "$ref": "#/$defs/TlsTermination" + } + }, + "required": [ + "bind", + "tlsTermination" + ], + "type": "object" + }, + "RabbitMqSource": { + "additionalProperties": false, + "description": "One manually settled RabbitMQ source. The broker must independently enforce\na hard `max_message_size`; the client byte ceiling is post-allocation.", + "properties": { + "connectionTimeoutMilliseconds": { + "format": "uint64", + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "deadLetterExchange": { + "type": "string" + }, + "deadLetterQueue": { + "type": "string" + }, + "deadLetterRoutingKey": { + "type": "string" + }, + "declareTopology": { + "type": "boolean" + }, + "heartbeatSeconds": { + "format": "uint64", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "host": { + "type": "string" + }, + "maximumOutstandingDeliveries": { + "format": "uint64", + "maximum": 64, + "minimum": 1, + "type": "integer" + }, + "namespace": { + "type": "string" + }, + "passwordRef": { + "$ref": "#/$defs/SecretReference" + }, + "port": { + "format": "uint64", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "queue": { + "type": "string" + }, + "tls": { + "$ref": "#/$defs/SourceTls" + }, + "user": { + "type": "string" + }, + "vhost": { + "type": "string" + } + }, + "required": [ + "host", + "user", + "passwordRef", + "queue", + "deadLetterExchange", + "deadLetterQueue", + "deadLetterRoutingKey", + "namespace" + ], + "type": "object" + }, + "ReadLock": { + "description": "The read lock of one file source.", + "oneOf": [ + { + "const": "none", + "description": "No lock: a candidate is read as it stands.", + "type": "string" + }, + { + "const": "changed", + "description": "Camel's `changed` lock: the file's length and last-modified time\nstable across two checks spaced the check interval apart.", + "type": "string" + } + ] + }, + "RuntimeCredential": { + "description": "The credential binding of one endpoint in the runtime config\n(`products/adapter/CONCEPT.md` section 10.2): Evidence's\n`SourceAuthentication` variant field for field, minus the pack-side\n`headerName` and `scheme`. The kind must match the endpoint's declared\nkind; the checks refuse a mismatch.", + "oneOf": [ + { + "additionalProperties": false, + "description": "No credential; matches a `none` endpoint.", + "properties": { + "type": { + "const": "none", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "The Basic credential pair.", + "properties": { + "passwordRef": { + "$ref": "#/$defs/SecretReference", + "description": "The password secret reference." + }, + "type": { + "const": "basic", + "type": "string" + }, + "usernameRef": { + "$ref": "#/$defs/SecretReference", + "description": "The username secret reference." + } + }, + "required": [ + "passwordRef", + "type", + "usernameRef" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "The static token, presented under the endpoint's declared `scheme`.", + "properties": { + "tokenRef": { + "$ref": "#/$defs/SecretReference", + "description": "The token secret reference." + }, + "type": { + "const": "static-authorization", + "type": "string" + } + }, + "required": [ + "tokenRef", + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "The static API key, sent in the endpoint's declared header.", + "properties": { + "type": { + "const": "static-api-key", + "type": "string" + }, + "valueRef": { + "$ref": "#/$defs/SecretReference", + "description": "The key secret reference." + } + }, + "required": [ + "type", + "valueRef" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "The client-credentials binding, Evidence's fields: the token\nendpoint, the client id, and the shared secret, all as references\nor fixed strings.", + "properties": { + "assumedLifetimeSeconds": { + "description": "Lifetime assumed when the provider omits `expires_in`.", + "format": "uint64", + "maximum": 86400, + "minimum": 1, + "type": "integer" + }, + "audience": { + "description": "Fixed `audience` form parameter.", + "type": "string" + }, + "clientIdRef": { + "$ref": "#/$defs/SecretReference", + "description": "The client id secret reference." + }, + "clientSecretRef": { + "$ref": "#/$defs/SecretReference", + "description": "The shared client secret reference." + }, + "credentialPlacement": { + "$ref": "#/$defs/CredentialPlacement", + "description": "Where the shared client secret travels." + }, + "maximumCacheSeconds": { + "description": "The token cache ceiling, Evidence's bound.", + "format": "uint64", + "maximum": 86400, + "minimum": 0, + "type": "integer" + }, + "resource": { + "description": "RFC 8707 resource indicator sent as a token-request form\nparameter.", + "type": "string" + }, + "scope": { + "description": "The token-request scope parameter.", + "type": "string" + }, + "tokenEndpoint": { + "$ref": "#/$defs/Url", + "description": "The token endpoint, a fixed destination never derived from a\nresponse; an absolute `http`/`https` URL the origin check\nconfines like any other destination." + }, + "type": { + "const": "oauth2-client-credentials", + "type": "string" + } + }, + "required": [ + "clientIdRef", + "clientSecretRef", + "credentialPlacement", + "maximumCacheSeconds", + "tokenEndpoint", + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "The private-key-jwt binding, Evidence's fields. The signed\nassertion always travels in the form body; there is no placement\nparameter.", + "properties": { + "assumedLifetimeSeconds": { + "format": "uint64", + "maximum": 86400, + "minimum": 1, + "type": "integer" + }, + "audience": { + "type": "string" + }, + "clientAssertionAudience": { + "description": "Audience claim of the signed assertion, defaulting to the\ntoken endpoint.", + "type": "string" + }, + "clientAssertionKeyRef": { + "$ref": "#/$defs/SecretReference", + "description": "The private JWK the client assertion is signed with." + }, + "clientIdRef": { + "$ref": "#/$defs/SecretReference", + "description": "The client id secret reference." + }, + "maximumCacheSeconds": { + "format": "uint64", + "maximum": 86400, + "minimum": 0, + "type": "integer" + }, + "resource": { + "type": "string" + }, + "scope": { + "type": "string" + }, + "tokenEndpoint": { + "$ref": "#/$defs/Url", + "description": "The token endpoint, a fixed destination never derived from a\nresponse; an absolute `http`/`https` URL the origin check\nconfines like any other destination." + }, + "type": { + "const": "oauth2-private-key-jwt", + "type": "string" + } + }, + "required": [ + "clientAssertionKeyRef", + "clientIdRef", + "maximumCacheSeconds", + "tokenEndpoint", + "type" + ], + "type": "object" + } + ] + }, + "SecretProvidersConfig": { + "additionalProperties": false, + "anyOf": [ + { + "properties": { + "file": { + "$ref": "#/$defs/FileSecretProviderConfig" + } + }, + "required": [ + "file" + ] + }, + { + "properties": { + "environment": { + "$ref": "#/$defs/EnvironmentSecretProviderConfig" + } + }, + "required": [ + "environment" + ] + } + ], + "description": "The secret providers a runtime enables. A reference is resolved only by a\nprovider declared here: `secret:file/name` under `file.root`, and\n`secret:env/NAME` only when `environment: {}` is present.", + "properties": { + "environment": { + "$ref": "#/$defs/EnvironmentSecretProviderConfig", + "description": "Enables `secret:env/NAME` references, read from the process\nenvironment. Declared as an empty mapping: `environment: {}`." + }, + "file": { + "$ref": "#/$defs/FileSecretProviderConfig", + "description": "Enables `secret:file/name` references, read from files under `root`." + } + }, + "type": "object" + }, + "SecretReference": { + "description": "An exact secret reference: secret:file/name, resolved under secretProviders.file.root, or secret:env/NAME, resolved only when secretProviders.environment is declared.", + "pattern": "^(?:secret:env/[A-Z][A-Z0-9_]{0,127}|secret:file/[a-z][a-z0-9._-]{0,127})$", + "type": "string" + }, + "SftpCompletion": { + "description": "Exactly one producer completion protocol. `DoneFile` requires the producer\nto remove a stale marker before replacement and publish it only after an\natomic handover. `CompletedName` requires that atomic handover directly.", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "name": { + "description": "A flat literal name or one $simple{file:name} placeholder. Remove a stale marker before replacement and publish the marker only after atomic handover.", + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "type": { + "const": "done-file", + "type": "string" + } + }, + "required": [ + "type", + "name" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "producerAtomicHandover": { + "const": true, + "description": "The producer promises that only an atomic rename publishes a completed final name.", + "type": "boolean" + }, + "type": { + "const": "completed-name", + "type": "string" + } + }, + "required": [ + "type", + "producerAtomicHandover" + ], + "type": "object" + } + ] + }, + "SftpCredential": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "passwordRef": { + "$ref": "#/$defs/SecretReference" + }, + "type": { + "const": "password", + "type": "string" + } + }, + "required": [ + "type", + "passwordRef" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "passphraseRef": { + "$ref": "#/$defs/SecretReference" + }, + "privateKeyRef": { + "$ref": "#/$defs/SecretReference" + }, + "type": { + "const": "private-key", + "type": "string" + } + }, + "required": [ + "type", + "privateKeyRef" + ], + "type": "object" + } + ] + }, + "SftpSource": { + "additionalProperties": false, + "description": "One read-only SFTP source. The dedicated account must be confined by the\nserver to `baseDirectory`; SFTP v3 client path checks are not an atomic\nfilesystem jail.", + "properties": { + "baseDirectory": { + "type": "string" + }, + "completion": { + "$ref": "#/$defs/SftpCompletion" + }, + "credential": { + "$ref": "#/$defs/SftpCredential" + }, + "host": { + "type": "string" + }, + "include": { + "description": "A bounded flat-name glob. * spans any run and ? spans one Unicode scalar; path separators and control characters are refused.", + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "maximumListingEntries": { + "format": "uint32", + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "namespace": { + "type": "string" + }, + "pinnedHostKey": { + "description": "One complete OpenSSH Ed25519 or P-256 public key; check parses and validates it without network or secret access.", + "maxLength": 16384, + "minLength": 1, + "type": "string" + }, + "port": { + "format": "uint64", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "user": { + "type": "string" + } + }, + "required": [ + "host", + "user", + "baseDirectory", + "pinnedHostKey", + "credential", + "namespace", + "completion" + ], + "type": "object" + }, + "SourceTls": { + "description": "The TLS posture of one postgres or RabbitMQ source connection.\nPlaintext is a test-build posture only and is not part of the format.", + "oneOf": [ + { + "additionalProperties": false, + "description": "The platform trust roots, TLS required, no client certificate.", + "properties": { + "type": { + "const": "system-roots", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "One private CA bundle file beside the platform roots.", + "properties": { + "caBundleFile": { + "description": "The absolute path of the PEM file holding the bundle.", + "type": "string" + }, + "type": { + "const": "ca-bundle", + "type": "string" + } + }, + "required": [ + "type", + "caBundleFile" + ], + "type": "object" + } + ] + }, + "TlsTermination": { + "description": "Declares the trusted transport boundary for a runtime's plaintext HTTP\nlistener. Production listeners require operator-controlled upstream TLS\ntermination; direct plaintext is limited to the explicit loopback-only\ndevelopment mode.", + "enum": [ + "operator-controlled-upstream", + "development-loopback" + ], + "type": "string" + }, + "TrustProfile": { + "additionalProperties": false, + "description": "One named private CA bundle: the absolute path of the process-local PEM\nfile the runtime reads.", + "properties": { + "caBundleFile": { + "description": "The absolute path of the PEM file holding the bundle's certificates.", + "type": "string" + } + }, + "required": [ + "caBundleFile" + ], + "type": "object" + }, + "Url": { + "description": "An absolute http or https URL with a host preserved as written, no user information, and no backslash, whitespace or control character. DNS case and equivalent IPv6 literals are permitted.", + "format": "uri", + "maxLength": 2048, + "pattern": "^[Hh][Tt][Tt][Pp][Ss]?://[^/?#@\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]+([/?#][^\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]*)?$", + "type": "string" + } + }, + "$id": "https://id.registrystack.org/schemas/adapter/job-runtime/job-runtime.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "description": "The ingestion job runtime configuration: shared endpoint bindings beside\njob-only sources, store, and host-owned destination bindings. It states\nnone of the facade's members (`listener`, `database`, `oidc`,\n`allowedClients`, `audit`, `idempotency`, the cursor custody).", + "properties": { + "allowedPrivateCidrs": { + "default": [], + "description": "The private ranges egress may reach. Omission is a secure empty\nallowlist for a listener-free program with no network endpoints.\nThe facade's `AdapterRuntimeConfig` retains its nonempty requirement.", + "items": { + "$ref": "#/$defs/Cidr" + }, + "type": "array", + "uniqueItems": true + }, + "apiVersion": { + "const": "id.registrystack.org/formats/adapter/job-runtime/v1alpha1", + "type": "string" + }, + "destinations": {}, + "endpoints": { + "description": "One binding per configured endpoint.", + "items": { + "$ref": "#/$defs/EndpointBinding" + }, + "type": "array" + }, + "hookIngress": { + "$ref": "#/$defs/HookIngress" + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The deployment this binding configures." + }, + "kind": { + "const": "AdapterJobRuntimeConfig", + "type": "string" + }, + "outboundTls": { + "$ref": "#/$defs/OutboundTls", + "description": "The private CAs endpoints may trust beside the system roots;\nabsent, every endpoint trusts the system roots alone." + }, + "secretProviders": { + "$ref": "#/$defs/SecretProvidersConfig" + }, + "sources": { + "$ref": "#/$defs/JobSources", + "description": "The governed-ingestion source bindings. Absent, the deployment\nbinds no job source; a pack whose source route reads one refuses\nat the job compile, never at the first read." + }, + "store": { + "$ref": "#/$defs/JobStore", + "description": "The job store: the item table's database. Read by the job host,\nnot by the job compile; absent, the document configures no job\nstore and the host refuses to run a pass." + } + }, + "required": [ + "apiVersion", + "endpoints", + "id", + "kind" + ], + "title": "Registry Adapter ingestion job runtime configuration", + "type": "object" +} diff --git a/src/artifacts/sha256/f1a66ef70359e4078ee3ae3426d378d65fbb62ab2f64545081d3d4973a8b28ad.json b/src/artifacts/sha256/f1a66ef70359e4078ee3ae3426d378d65fbb62ab2f64545081d3d4973a8b28ad.json new file mode 100644 index 000000000..cfaf9c14a --- /dev/null +++ b/src/artifacts/sha256/f1a66ef70359e4078ee3ae3426d378d65fbb62ab2f64545081d3d4973a8b28ad.json @@ -0,0 +1,487 @@ +{ + "$defs": { + "DestinationMapping": { + "additionalProperties": false, + "description": "One job-owned direct-destination mapping. Its file is resolved relative to\nthe job document, not the provider pack, so an institution can reuse the\nsame source integration without forking it for programme semantics.", + "properties": { + "digest": { + "$ref": "#/$defs/Digest", + "description": "The exact sha256 digest of the mapping source bytes." + }, + "entrypoint": { + "description": "The precompiled one-argument entrypoint the job host calls.", + "type": "string" + }, + "file": { + "description": "The clean relative path of the Rhai source beside the job document.", + "type": "string" + } + }, + "required": [ + "file", + "entrypoint", + "digest" + ], + "type": "object" + }, + "Digest": { + "description": "A SHA-256 digest: `sha256:` followed by 64 lowercase hex digits.", + "pattern": "^sha256:[0-9a-f]{64}$", + "type": "string" + }, + "DirectBregMode": { + "description": "The fixed operation form the direct destination expects metadata to\ndisclose. It never changes mode after an item refusal.", + "oneOf": [ + { + "const": "immediate", + "description": "Invoke the Action and receive its terminal receipt.", + "type": "string" + }, + { + "const": "proposal", + "description": "Start and submit one Proposal.", + "type": "string" + } + ] + }, + "JobDestination": { + "description": "The two governed-ingestion destinations. The authored job selects one;\na refusal never selects or falls back to the other.", + "oneOf": [ + { + "additionalProperties": false, + "description": "Map the projection in-process and invoke one BReg Action, either\nimmediately or through Proposal start and submit.", + "properties": { + "accessProfile": { + "description": "The caller-filtered BReg access profile selected in metadata.", + "type": "string" + }, + "action": { + "description": "The BReg Action identifier selected in metadata.", + "type": "string" + }, + "binding": { + "$ref": "#/$defs/LocalId", + "description": "The runtime destination binding id." + }, + "mapping": { + "$ref": "#/$defs/DestinationMapping", + "description": "The job-owned, digest-pinned Rhai mapping from the declared\nprojection to the operation input." + }, + "mode": { + "$ref": "#/$defs/DirectBregMode", + "description": "Whether the selected Action is expected to be immediate or a\nProposal. A metadata mismatch refuses rather than changing mode." + }, + "receiptRetentionDays": { + "description": "The deployment's expected BReg receipt retention horizon.", + "format": "uint16", + "maximum": 3650, + "minimum": 1, + "type": "integer" + }, + "type": { + "const": "direct-breg", + "type": "string" + } + }, + "required": [ + "accessProfile", + "action", + "binding", + "mapping", + "mode", + "receiptRetentionDays", + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Sign the declared projection as an event for one Coordinator workflow\ntrigger. Coordinator owns any lookup, choice, wait, or review flow.", + "properties": { + "binding": { + "$ref": "#/$defs/LocalId", + "description": "The runtime destination binding id." + }, + "dataSchema": { + "description": "The schema identifier for the projected event data.", + "type": "string" + }, + "eventType": { + "description": "The event type identifier.", + "type": "string" + }, + "revisedReceiver": { + "$ref": "#/$defs/RevisedEventReceiver", + "description": "Optional receiver for a changed item, inside the same workflow and\nruntime binding. Absent, revised items remain held." + }, + "source": { + "description": "The event source identifier.", + "type": "string" + }, + "trigger": { + "$ref": "#/$defs/LocalId", + "description": "The reviewed event trigger id inside the workflow." + }, + "type": { + "const": "signed-coordinator-event", + "type": "string" + }, + "workflow": { + "$ref": "#/$defs/LocalId", + "description": "The reviewed Coordinator workflow id." + } + }, + "required": [ + "binding", + "dataSchema", + "eventType", + "source", + "trigger", + "type", + "workflow" + ], + "type": "object" + } + ] + }, + "JobIdentity": { + "additionalProperties": false, + "description": "The job identity block: the job's own name and version, the same\nidentity shape the project carries (CFG-ENV-6).", + "properties": { + "id": { + "$ref": "#/$defs/LocalId", + "description": "The job identifier." + }, + "version": { + "description": "The job version.", + "type": "string" + } + }, + "required": [ + "id", + "version" + ], + "type": "object" + }, + "JobProfile": { + "additionalProperties": false, + "description": "The explicit, bounded profile of one job (`products/adapter/CONCEPT.md`\nsection 17.2). Every member is mandatory and checked; the engine\nenforces each bound again at the edge. The facade ceilings of section\n8.8 are unchanged: the per-attempt timeout stays at the platform-frozen\nceiling, and only a source-route-only endpoint's response bound may\nrise, to the platform cap.", + "properties": { + "maximumPageBytes": { + "description": "The largest serialized item page, in bytes (1 to 16777216).", + "format": "uint64", + "maximum": 16777216, + "minimum": 1, + "type": "integer" + }, + "maximumPageItems": { + "description": "The most items one produced page may carry (1 to 10000).", + "format": "uint32", + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "maximumResponseBytes": { + "description": "The largest response body one send of the job may take in, in\nbytes (1 to 16777216). Where an endpoint declares a tighter bound,\nthe lower of the two applies; the checks refuse a profile tighter\nthan an endpoint the source route reaches.", + "format": "uint64", + "maximum": 16777216, + "minimum": 1, + "type": "integer" + }, + "maximumUpstreamCalls": { + "description": "The job's own upstream-call budget: the largest static worst-case\nnumber of upstream calls one pass may make (1 to 1000). The checks\nrefuse a budget below the source route's worst-case call count\nunder `adapter.job.call-budget`, reusing the same walk the facade\nbinding's `maximumUpstreamCalls` stands on, so one budget shape\ncovers both modes.", + "format": "uint64", + "maximum": 1000, + "minimum": 1, + "type": "integer" + }, + "pageDeadlineMilliseconds": { + "description": "The longest one source-route run may take, in milliseconds\n(1 to 600000).", + "format": "uint64", + "maximum": 600000, + "minimum": 1, + "type": "integer" + }, + "read": { + "$ref": "#/$defs/ReadBounds", + "description": "The bounds of the reads the decoders produce. Required in effect\nwhere the source route reads a file or a PostgreSQL row, refused\nunder `adapter.job.profile-read-required` when absent there; a\nroute that reaches neither may omit it." + } + }, + "required": [ + "pageDeadlineMilliseconds", + "maximumResponseBytes", + "maximumPageItems", + "maximumPageBytes", + "maximumUpstreamCalls" + ], + "type": "object" + }, + "JobSource": { + "additionalProperties": false, + "description": "The pack and source route a job runs: the pack pinned by version and\ndigest exactly as a project pins it (CFG-ID-4), and the\n`sourceRoutes` id of the route that acquires.", + "properties": { + "pack": { + "$ref": "#/$defs/PinnedRef", + "description": "The pinned adapter pack." + }, + "route": { + "description": "The source route the job runs, a `sourceRoutes` id of the pinned\npack.", + "type": "string" + } + }, + "required": [ + "pack", + "route" + ], + "type": "object" + }, + "JobTrigger": { + "additionalProperties": false, + "description": "One trigger of the job: the declaration of when a pass starts. A\ntrigger carries no data into the pass; a hook only starts a pass,\nwhich then re-reads the source from the saved position, and a hook\nbody is never trusted or stored (`products/adapter/CONCEPT.md`\nsection 17.2).\n\nThe interval options port the scheduled polling consumer options of\nCamel's scheduler component\n(camel-4.23.0:components/camel-scheduler/src/main/docs/scheduler-component.adoc);\nthe option names and their Camel defaults are read from the shared\n`ScheduledPollEndpoint` base the scheduler endpoint extends\n(camel-4.23.0:core/camel-support/src/main/java/org/apache/camel/support/ScheduledPollEndpoint.java),\nnot invented. Recorded divergences: Camel's `delay` default is that\nfile's `DEFAULT_DELAY` of 500 milliseconds and its `initialDelay`\ndefault is `DEFAULT_INITIAL_DELAY` of 1000 milliseconds, where the\njob pins 60000 and 0; and Camel's `backoffMultiplier` field defaults\nto 0, which turns backoff off, where the job's default of 1 skips no\npass and the checks bound the value. The skip semantics (once an idle\nor error threshold is met, a multiplier of M skips M - 1 polls before\nthe next attempt) are the consumer's own\n(camel-4.23.0:core/camel-support/src/main/java/org/apache/camel/support/ScheduledPollConsumer.java#doRun).", + "properties": { + "backoffErrorThreshold": { + "description": "The consecutive failed passes that put the trigger into backoff.\nPorts `backoffErrorThreshold`\n(camel-4.23.0:core/camel-support/src/main/java/org/apache/camel/support/ScheduledPollEndpoint.java#backoffErrorThreshold,\n\"The number of subsequent error polls (failed due some error)\nthat should happen before the backoffMultipler should kick-in\").\nDefault 0, off; the checks bound the value to\n[`MAXIMUM_TRIGGER_BACKOFF_THRESHOLD`].", + "format": "uint32", + "maximum": 100, + "minimum": 0, + "type": "integer" + }, + "backoffIdleThreshold": { + "description": "The consecutive idle passes that put the trigger into backoff.\nPorts `backoffIdleThreshold`\n(camel-4.23.0:core/camel-support/src/main/java/org/apache/camel/support/ScheduledPollEndpoint.java#backoffIdleThreshold,\n\"The number of subsequent idle polls that should happen before\nthe backoffMultipler should kick-in\"). Default 0, off; the checks\nbound the value to [`MAXIMUM_TRIGGER_BACKOFF_THRESHOLD`].", + "format": "uint32", + "maximum": 100, + "minimum": 0, + "type": "integer" + }, + "backoffMultiplier": { + "description": "How many intervals the next attempt waits once an idle or error\nthreshold is met: a multiplier of M skips M - 1 passes, so the\nnext attempt lands M intervals after the last pass. Ports\n`backoffMultiplier`\n(camel-4.23.0:core/camel-support/src/main/java/org/apache/camel/support/ScheduledPollEndpoint.java#backoffMultiplier,\n\"The multiplier is then the number of polls that will be skipped\nbefore the next actual attempt is happening again\"); Camel\nrequires an idle or error threshold beside it, and its field\ndefault of 0 turns backoff off. Camel's `doRun` skips while its\nbackoff counter, counted from 1, stays below the multiplier, so it\ntoo skips M - 1 polls. The job default of 1\nskips no pass, and the checks bound the value from\n[`MINIMUM_TRIGGER_BACKOFF_MULTIPLIER`] to\n[`MAXIMUM_TRIGGER_BACKOFF_MULTIPLIER`].", + "format": "uint32", + "maximum": 10, + "minimum": 1, + "type": "integer" + }, + "binding": { + "$ref": "#/$defs/LocalId", + "description": "The operator binding supplying this hook's credentials and rate limit." + }, + "delayMilliseconds": { + "description": "The milliseconds between two interval passes, from\n[`MINIMUM_TRIGGER_DELAY_MILLISECONDS`] to\n[`MAXIMUM_TRIGGER_DELAY_MILLISECONDS`]. Ports `delay`\n(camel-4.23.0:core/camel-support/src/main/java/org/apache/camel/support/ScheduledPollEndpoint.java#delay,\n\"Milliseconds before the next poll\"; Camel's default is that\nfile's 500-millisecond `DEFAULT_DELAY`). The job default is\n[`DEFAULT_TRIGGER_DELAY_MILLISECONDS`], one minute.", + "format": "uint64", + "maximum": 86400000, + "minimum": 1000, + "type": "integer" + }, + "greedy": { + "description": "Whether a pass starts again immediately when the previous one\nread at least one item. Ports `greedy`\n(camel-4.23.0:core/camel-support/src/main/java/org/apache/camel/support/ScheduledPollEndpoint.java#greedy,\n\"If greedy is enabled, then the ScheduledPollConsumer will run\nimmediately again, if the previous run polled 1 or more\nmessages\"; the scheduler component doc\ncamel-4.23.0:components/camel-scheduler/src/main/docs/scheduler-component.adoc\nwarns that a greedy scheduler keeps firing). Default false,\nCamel's.", + "type": "boolean" + }, + "initialDelayMilliseconds": { + "description": "The milliseconds before the first interval pass starts, from 0 to\n[`MAXIMUM_TRIGGER_INITIAL_DELAY_MILLISECONDS`]. Ports\n`initialDelay`\n(camel-4.23.0:core/camel-support/src/main/java/org/apache/camel/support/ScheduledPollEndpoint.java#initialDelay,\n\"Milliseconds before the first poll starts\"; Camel's default is\nthat file's 1000-millisecond `DEFAULT_INITIAL_DELAY`). The job\ndefault of 0 starts the first pass immediately.", + "format": "uint64", + "maximum": 86400000, + "minimum": 0, + "type": "integer" + }, + "kind": { + "description": "The trigger kind, one of [`TRIGGER_KIND_VALUES`]: `interval` or\n`hook`. Mandatory in effect:\nthe checks refuse a trigger that names no kind, or a kind outside\nthe closed set, under `adapter.job.trigger-kind`.", + "enum": [ + "interval", + "hook" + ], + "type": "string" + }, + "path": { + "description": "The clean listener path that wakes a pass. The pass re-reads the\nauthoritative source; hook bodies never become source items.", + "maxLength": 256, + "pattern": "^(/([A-Za-z0-9_~-][A-Za-z0-9._~-]*|\\.[A-Za-z0-9_~-][A-Za-z0-9._~-]*|\\.\\.[A-Za-z0-9._~-]+))+$", + "type": "string" + } + }, + "required": [ + "kind" + ], + "type": "object" + }, + "LocalId": { + "description": "A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.", + "pattern": "^[a-z][a-z0-9_-]{0,63}$", + "type": "string" + }, + "PinnedRef": { + "additionalProperties": false, + "description": "A pinned reference to a profile or pack: plain identifier plus the\nversion and digest `adapterctl check` verifies (CFG-ID-4,\n`products/adapter/CONCEPT.md` section 6).", + "properties": { + "digest": { + "$ref": "#/$defs/Digest", + "description": "The digest the artifact's bytes must hash to." + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The referenced artifact's identifier." + }, + "version": { + "description": "The referenced artifact's version.", + "type": "string" + } + }, + "required": [ + "id", + "version", + "digest" + ], + "type": "object" + }, + "ProjectionDecl": { + "additionalProperties": false, + "description": "The projection of one source item the destination needs\n(`products/adapter/CONCEPT.md` sections 17.2 and 17.3): the dotted\npaths of the item `value` the destination receives, and what the\nitem row's Last digest covers.\n\nThe projection is the job's data-minimization declaration. The\nsource route shapes each item's `value` as a projection of the\ndestination's fields, not the captured source record (section 17.2),\nand the job host enforces the declared list at hand-off (section\n17.3): for each item it delivers, the pass builds an object with one\nmember per declared field, in declaration order, carrying the value\nat that path (or `null` where the path misses), and hands the\ndestination that object. A member the route shaped beyond the\ndeclared fields never leaves the job host. The item digest covers\nthe projected object, or under [`ProjectionDigestOf::Value`] the item\n`value` as the route shaped it together with the sorted declared\nfield list, so a field-list edit re-flags every item either way. The\npass also stores\n[`AdapterJob::projection_digest`] on the job's state row so status\nshows a projection edit; items re-flag only through their own item\ndigests.", + "properties": { + "digestOf": { + "$ref": "#/$defs/ProjectionDigestOf", + "description": "What the item row's Last digest covers: `projection`, the\nserialized projected fields (the default), or `value`, the item\n`value` as the source route shaped it together with the sorted\ndeclared field list. A `value` digest means an item counts as\nchanged when any part of its shaped value changed or the field\nlist changed, and the projection then names only what the\ndestination reads." + }, + "fields": { + "description": "The projected paths, each a dotted identifier path whose segments\ncarry ASCII letters, digits, underscores, and dashes, at most\n[`MAXIMUM_PROJECTION_SEGMENTS`] segments and\n[`MAXIMUM_PROJECTION_FIELD_CHARACTERS`] characters; at most\n[`MAXIMUM_PROJECTION_FIELDS`] paths and at most\n[`MAXIMUM_PROJECTION_BYTES`] bytes serialized. The checks refuse a\njob that declares no fields under\n`adapter.job.projection-shape` and any other fault of the list\nunder `adapter.job.projection-shape` or\n`adapter.job.projection-bound`.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "ProjectionDigestOf": { + "description": "What the item row's Last digest covers, the closed set the projection\nblock pins.", + "oneOf": [ + { + "const": "projection", + "description": "The serialized projected fields, the default: an item counts as\nchanged when what the destination needs changed.", + "type": "string" + }, + { + "const": "value", + "description": "The whole item `value` as the source route shaped it, members\nbeyond the declared fields included, together with the sorted\ndeclared field list: the list decides what the destination\nreceives, so editing it re-flags every item.", + "type": "string" + } + ] + }, + "ReadBounds": { + "additionalProperties": false, + "description": "The read bounds of one job profile: what one poll may take in and what\none decoded row may carry (`products/adapter/CONCEPT.md` section\n17.2). Every read has a count, byte, and deadline bound.", + "properties": { + "maximumFieldBytes": { + "description": "The largest one decoded field may take, in bytes (1 to 65536).", + "format": "uint64", + "maximum": 65536, + "minimum": 1, + "type": "integer" + }, + "maximumFileBytes": { + "description": "The largest file one read may take in, in bytes (1 to 1073741824).\nA bigger file is refused, never partially read.", + "format": "uint64", + "maximum": 1073741824, + "minimum": 1, + "type": "integer" + }, + "maximumRowBytes": { + "description": "The largest one decoded row or line may take, in bytes\n(1 to 1048576).", + "format": "uint64", + "maximum": 1048576, + "minimum": 1, + "type": "integer" + }, + "maximumRowsPerPage": { + "description": "The most decoded rows one page may carry (1 to 10000); never more\nthan the page's own `maximumPageItems`.", + "format": "uint32", + "maximum": 10000, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "maximumFileBytes", + "maximumRowBytes", + "maximumFieldBytes", + "maximumRowsPerPage" + ], + "type": "object" + }, + "RevisedEventReceiver": { + "additionalProperties": false, + "description": "The explicitly reviewed event receiver for revised source items.", + "properties": { + "dataSchema": { + "description": "The revised event data schema identifier.", + "type": "string" + }, + "eventType": { + "description": "The revised event type identifier.", + "type": "string" + }, + "trigger": { + "$ref": "#/$defs/LocalId", + "description": "The revised-item trigger inside the destination workflow." + } + }, + "required": [ + "trigger", + "eventType", + "dataSchema" + ], + "type": "object" + } + }, + "$id": "https://id.registrystack.org/schemas/adapter/job/job.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "description": "The ingestion job definition (`AdapterJob`): an identity, the pinned\npack and its source route, the item projection and the pass triggers,\nand the bounded job profile (`products/adapter/CONCEPT.md` sections\n17.1 and 17.2). The `apiVersion` and `kind` envelope members are\ncarried and validated like every other Adapter artifact's, through the\nloader's format constants [`ADAPTER_JOB_API_VERSION`] and\n[`ADAPTER_JOB_KIND`].", + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/adapter/job/v1alpha1", + "description": "The format envelope version.", + "type": "string" + }, + "destination": { + "$ref": "#/$defs/JobDestination", + "description": "The one reviewed destination this job hands every item to. Runtime\nconnection material is bound separately by `binding`." + }, + "job": { + "$ref": "#/$defs/JobIdentity", + "description": "The job's identity." + }, + "kind": { + "const": "AdapterJob", + "description": "The format kind: `AdapterJob`.", + "type": "string" + }, + "profile": { + "$ref": "#/$defs/JobProfile", + "description": "The bounded job profile." + }, + "projection": { + "$ref": "#/$defs/ProjectionDecl", + "default": {}, + "description": "The projection of each source item the destination needs; the checks\nrefuse a job that declares none, so every job's data minimization\nis explicit." + }, + "source": { + "$ref": "#/$defs/JobSource", + "description": "The pinned pack and the source route the job runs." + }, + "triggers": { + "description": "The triggers that decide when a pass starts; the checks refuse an\nempty list, so every job names at least one.", + "items": { + "$ref": "#/$defs/JobTrigger" + }, + "type": "array" + } + }, + "required": [ + "apiVersion", + "kind", + "job", + "source", + "destination", + "profile" + ], + "title": "Registry Adapter ingestion job", + "type": "object" +} diff --git a/src/artifacts/sha256/f91af7d0c873134675c27063eafcea7500210443225dd0f9e8309e1f6680f13d.json b/src/artifacts/sha256/f91af7d0c873134675c27063eafcea7500210443225dd0f9e8309e1f6680f13d.json new file mode 100644 index 000000000..e67cbc38b --- /dev/null +++ b/src/artifacts/sha256/f91af7d0c873134675c27063eafcea7500210443225dd0f9e8309e1f6680f13d.json @@ -0,0 +1,1223 @@ +{ + "$defs": { + "Acquisition": { + "additionalProperties": false, + "properties": { + "holderPresented": { + "anyOf": [ + { + "$ref": "#/$defs/HolderPresented" + }, + { + "type": "null" + } + ], + "description": "A wallet presentation Source for the selector profiles it lists. A\nrequest on one of those profiles acquires only through this Source." + }, + "source": { + "anyOf": [ + { + "$ref": "#/$defs/LocalId" + }, + { + "type": "null" + } + ], + "description": "One reviewed route owns the complete bounded provider interaction for\nthe selector profiles that `holderPresented` does not claim. Optional\nonly when `holderPresented` lists every profile the subject roles allow." + } + }, + "type": "object" + }, + "AcquisitionPosture": { + "enum": [ + "source-derived", + "field-projected", + "record-transformed" + ], + "type": "string" + }, + "ActorKind": { + "enum": [ + "human", + "agent", + "service" + ], + "type": "string" + }, + "AssertionDefinition": { + "additionalProperties": false, + "properties": { + "acquisition": { + "$ref": "#/$defs/Acquisition" + }, + "derive": { + "$ref": "#/$defs/FunctionCall" + }, + "description": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "type": "null" + } + ], + "description": "Human explanation for authors and reviewers; excluded from behavior revisions." + }, + "disclosureGuard": true, + "existenceDisclosure": { + "default": "collapse-unresolved", + "type": "string" + }, + "fixtures": { + "type": [ + "string", + "null" + ] + }, + "grantCeiling": { + "$ref": "#/$defs/GrantCeiling" + }, + "label": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "type": "null" + } + ], + "description": "Optional presentation label. Stable references use the identifier." + }, + "observationTimezone": { + "default": "UTC", + "type": "string" + }, + "outputs": { + "additionalProperties": { + "$ref": "#/$defs/Output" + }, + "maxProperties": 16, + "minProperties": 1, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "publicCheck": { + "anyOf": [ + { + "$ref": "#/$defs/PublicCheck" + }, + { + "type": "null" + } + ], + "description": "Experimental (`v1alpha1`). Declares that this definition may answer the\nunauthenticated public certificate check once a target authority\nactivates it. Declaring it grants nothing by itself." + }, + "purpose": { + "type": "string" + }, + "question": { + "$ref": "#/$defs/DisplayText" + }, + "representations": { + "items": { + "$ref": "#/$defs/Representation" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "semantics": { + "$ref": "#/$defs/Semantics" + }, + "subjectBinding": { + "$ref": "#/$defs/BindingMode" + }, + "subjects": { + "items": { + "$ref": "#/$defs/Subject" + }, + "type": "array" + }, + "validitySeconds": { + "format": "uint64", + "maximum": 31536000, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "question", + "semantics", + "purpose", + "grantCeiling", + "subjects", + "acquisition", + "derive", + "outputs", + "validitySeconds", + "subjectBinding", + "representations" + ], + "type": "object" + }, + "AuthorityKind": { + "enum": [ + "statutory", + "organizational", + "consent", + "delegated", + "explicit-request" + ], + "type": "string" + }, + "BindingMode": { + "enum": [ + "audience-scoped", + "holder-bound" + ], + "type": "string" + }, + "DeriveSelectorInput": { + "additionalProperties": false, + "properties": { + "alternatives": { + "items": { + "$ref": "#/$defs/SelectorAlternative" + }, + "maxItems": 8, + "minItems": 1, + "type": "array" + }, + "role": { + "$ref": "#/$defs/LocalId" + } + }, + "required": [ + "role", + "alternatives" + ], + "type": "object" + }, + "DisplayText": { + "description": "Human-readable display text. Bidirectional embedding, override, and isolate controls, byte-order marks, line and paragraph separators, and Unicode noncharacters are refused; multilingual joiners and direction marks remain valid.", + "not": { + "pattern": "[

‪-‮⁦-⁩﷐-﷯￾￿]|🿾|🿿|𯿾|𯿿|𿿾|𿿿|񏿾|񏿿|񟿾|񟿿|񯿾|񯿿|񿿾|񿿿|򏿾|򏿿|򟿾|򟿿|򯿾|򯿿|򿿾|򿿿|󏿾|󏿿|󟿾|󟿿|󯿾|󯿿|󿿾|󿿿|􏿾|􏿿" + }, + "type": "string" + }, + "ExternalId": { + "description": "An identifier another system issues, written exactly as its issuer gives it.", + "maxLength": 512, + "minLength": 1, + "pattern": "^[^\\u0000-\\u001F\\u007F-\\u009F]+$", + "type": "string" + }, + "Field": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "description": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "type": "null" + } + ] + }, + "label": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "type": "null" + } + ] + }, + "maximumBytes": { + "format": "uint64", + "maximum": 8192, + "minimum": 1, + "type": "integer" + }, + "minimumBytes": { + "format": "uint64", + "maximum": 8192, + "minimum": 1, + "type": "integer" + }, + "type": { + "const": "string", + "type": "string" + } + }, + "required": [ + "type", + "minimumBytes", + "maximumBytes" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "description": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "type": "null" + } + ] + }, + "label": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "type": "null" + } + ] + }, + "type": { + "const": "date", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "description": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "type": "null" + } + ] + }, + "label": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "type": "null" + } + ] + }, + "type": { + "const": "uuid", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "description": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "type": "null" + } + ] + }, + "label": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "type": "null" + } + ] + }, + "maximum": { + "format": "int64", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "minimum": { + "format": "int64", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "type": { + "const": "integer", + "type": "string" + } + }, + "required": [ + "type", + "minimum", + "maximum" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "description": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "type": "null" + } + ] + }, + "label": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "type": "null" + } + ] + }, + "type": { + "const": "boolean", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "codelist": { + "type": "string" + }, + "codelistVersion": { + "type": "string" + }, + "description": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "type": "null" + } + ] + }, + "label": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "type": "null" + } + ] + }, + "maximumBytes": { + "format": "uint64", + "maximum": 8192, + "minimum": 1, + "type": "integer" + }, + "type": { + "const": "controlled-code", + "type": "string" + } + }, + "required": [ + "type", + "codelist", + "codelistVersion", + "maximumBytes" + ], + "type": "object" + } + ] + }, + "Function": { + "additionalProperties": false, + "properties": { + "description": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "type": "null" + } + ], + "description": "Human explanation for authors and reviewers; excluded from behavior revisions." + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "interface": { + "$ref": "#/$defs/FunctionInterface" + }, + "label": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "type": "null" + } + ], + "description": "Optional presentation label. Stable references use the identifier." + }, + "source": { + "type": "string" + } + }, + "required": [ + "id", + "interface", + "source" + ], + "type": "object" + }, + "FunctionCall": { + "additionalProperties": false, + "properties": { + "function": { + "$ref": "#/$defs/LocalId" + }, + "parameters": { + "additionalProperties": true, + "type": "object", + "x-registry-passthrough": "Literal reviewed Function parameter bindings, checked at the named Function call site." + }, + "selectorInputs": { + "items": { + "$ref": "#/$defs/DeriveSelectorInput" + }, + "type": "array" + } + }, + "required": [ + "function" + ], + "type": "object" + }, + "FunctionInterface": { + "enum": [ + "assertion-derive/v1" + ], + "type": "string" + }, + "GrantCeiling": { + "additionalProperties": false, + "properties": { + "actorKinds": { + "items": { + "$ref": "#/$defs/ActorKind" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "audiences": { + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "authorities": { + "items": { + "$ref": "#/$defs/AuthorityKind" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "valueOrigins": { + "items": { + "$ref": "#/$defs/ValueOrigin" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "authorities", + "actorKinds", + "valueOrigins", + "audiences" + ], + "type": "object" + }, + "HolderPresented": { + "additionalProperties": false, + "properties": { + "selectorProfiles": { + "items": { + "$ref": "#/$defs/LocalId" + }, + "maxItems": 16, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "source": { + "$ref": "#/$defs/LocalId" + } + }, + "required": [ + "source", + "selectorProfiles" + ], + "type": "object" + }, + "LocalId": { + "description": "A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.", + "pattern": "^[a-z][a-z0-9_-]{0,63}$", + "type": "string" + }, + "Output": { + "additionalProperties": false, + "properties": { + "bucketScheme": { + "type": [ + "string", + "null" + ] + }, + "categoryScheme": { + "type": [ + "string", + "null" + ] + }, + "codelist": { + "type": [ + "string", + "null" + ] + }, + "codelistVersion": { + "type": [ + "string", + "null" + ] + }, + "concept": { + "type": "string" + }, + "description": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "type": "null" + } + ], + "description": "Human explanation for authors and reviewers; excluded from behavior revisions." + }, + "label": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "type": "null" + } + ], + "description": "Optional presentation label. Stable references use the identifier." + }, + "maximum": { + "anyOf": [ + { + "$ref": "#/$defs/OutputNumericBound" + }, + { + "type": "null" + } + ] + }, + "maximumBytes": { + "format": "uint64", + "maximum": 8192, + "minimum": 1, + "type": [ + "integer", + "null" + ] + }, + "maximumItems": { + "format": "uint64", + "maximum": 64, + "minimum": 1, + "type": [ + "integer", + "null" + ] + }, + "maximumScale": { + "format": "uint64", + "maximum": 9, + "minimum": 0, + "type": [ + "integer", + "null" + ] + }, + "maximumSerializedBytes": { + "format": "uint64", + "maximum": 65536, + "minimum": 1, + "type": [ + "integer", + "null" + ] + }, + "minimum": { + "anyOf": [ + { + "$ref": "#/$defs/OutputNumericBound" + }, + { + "type": "null" + } + ] + }, + "minimumBytes": { + "format": "uint64", + "maximum": 1024, + "minimum": 1, + "type": [ + "integer", + "null" + ] + }, + "minimumItems": { + "format": "uint64", + "maximum": 64, + "minimum": 1, + "type": [ + "integer", + "null" + ] + }, + "prefix": { + "type": [ + "string", + "null" + ] + }, + "schema": { + "type": [ + "string", + "null" + ] + }, + "schemeVersion": { + "type": [ + "string", + "null" + ] + }, + "sdJwtVc": { + "anyOf": [ + { + "$ref": "#/$defs/OutputProjection" + }, + { + "type": "null" + } + ] + }, + "type": { + "enum": [ + "boolean", + "controlled-code", + "controlled-category", + "bounded-identifier", + "bounded-integer", + "bounded-decimal", + "date-bucket", + "time-bucket", + "audience-scoped-entity-reference", + "controlled-code-list", + "entity-reference-list", + "reviewed-structured-value" + ], + "type": "string" + }, + "unique": { + "type": [ + "boolean", + "null" + ] + }, + "values": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "concept", + "type" + ], + "type": "object" + }, + "OutputNumericBound": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "maxLength": 30, + "minLength": 1, + "pattern": "^-?(0|[1-9][0-9]*)(\\.[0-9]*[1-9])?$", + "type": "string" + } + ] + }, + "OutputProjection": { + "additionalProperties": false, + "properties": { + "claim": { + "maxLength": 64, + "minLength": 1, + "pattern": "^[A-Za-z][A-Za-z0-9_]{0,63}$", + "type": "string" + }, + "disclosure": { + "$ref": "#/$defs/ProjectionDisclosure" + } + }, + "required": [ + "claim", + "disclosure" + ], + "type": "object" + }, + "PackReference": { + "additionalProperties": false, + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "version": { + "type": "string" + } + }, + "required": [ + "id", + "version" + ], + "type": "object" + }, + "ProjectionDisclosure": { + "enum": [ + "top-level" + ], + "type": "string" + }, + "PublicCheck": { + "additionalProperties": false, + "description": "The public certificate check's view of one assertion definition: where the\nstored check code is read from, and which two outputs form the answer. Other\noutputs of the definition stay on the relying-service path.", + "properties": { + "checkCodeFact": { + "description": "Name of a string fact of the acquiring Source holding the stored check\ncode. The code is compared and then removed; no Output can carry it.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "fieldsOutput": { + "$ref": "#/$defs/LocalId", + "description": "Output id of a reviewed structured value whose `fields` object is the\nprinted content of the answer." + }, + "statusOutput": { + "$ref": "#/$defs/LocalId", + "description": "Output id of a controlled category whose values lie within `valid`,\n`suspended`, `revoked` and `expired`." + } + }, + "required": [ + "checkCodeFact", + "statusOutput", + "fieldsOutput" + ], + "type": "object" + }, + "Representation": { + "enum": [ + "signed-jws", + "sd-jwt-vc", + "unsigned-json", + "sd-jwt-vc-batch" + ], + "type": "string" + }, + "SelectorAlternative": { + "additionalProperties": false, + "properties": { + "fields": { + "items": { + "$ref": "#/$defs/LocalId" + }, + "maxItems": 16, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "profile": { + "$ref": "#/$defs/LocalId" + } + }, + "required": [ + "profile", + "fields" + ], + "type": "object" + }, + "SelectorProfile": { + "additionalProperties": false, + "properties": { + "description": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "type": "null" + } + ], + "description": "Human explanation for authors and reviewers; excluded from behavior revisions." + }, + "fields": { + "additionalProperties": { + "$ref": "#/$defs/Field" + }, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "label": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "type": "null" + } + ], + "description": "Optional presentation label. Stable references use the identifier." + }, + "maximumAggregateBytes": { + "format": "uint64", + "maximum": 8192, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "maximumAggregateBytes", + "fields" + ], + "type": "object" + }, + "Semantics": { + "additionalProperties": false, + "properties": { + "evidenceType": { + "type": "string" + }, + "kind": { + "type": "string" + }, + "referenceFrameworks": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "requirement": { + "type": "string" + } + }, + "required": [ + "requirement", + "kind", + "evidenceType", + "referenceFrameworks" + ], + "type": "object" + }, + "Source": { + "additionalProperties": false, + "properties": { + "acquisitionPosture": { + "$ref": "#/$defs/AcquisitionPosture" + }, + "connection": { + "$ref": "#/$defs/LocalId" + }, + "description": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "type": "null" + } + ], + "description": "Human explanation for authors and reviewers; excluded from behavior revisions." + }, + "inputs": { + "additionalProperties": { + "$ref": "#/$defs/SourceInput" + }, + "propertyNames": { + "$ref": "#/$defs/ExternalId" + }, + "type": "object" + }, + "label": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "type": "null" + } + ], + "description": "Optional presentation label. Stable references use the identifier." + }, + "pack": { + "$ref": "#/$defs/PackReference" + }, + "projection": { + "anyOf": [ + { + "$ref": "#/$defs/SourceProjection" + }, + { + "type": "null" + } + ], + "description": "Optional project-owned projection of matched native facts. Acquisition\nand lookup classification remain in the reusable pack." + }, + "route": { + "$ref": "#/$defs/LocalId" + } + }, + "required": [ + "pack", + "route", + "connection", + "acquisitionPosture" + ], + "type": "object" + }, + "SourceInput": { + "additionalProperties": false, + "properties": { + "selector": { + "$ref": "#/$defs/SourceInputSelector" + } + }, + "required": [ + "selector" + ], + "type": "object" + }, + "SourceInputSelector": { + "additionalProperties": false, + "properties": { + "field": { + "$ref": "#/$defs/LocalId" + }, + "profile": { + "$ref": "#/$defs/LocalId" + }, + "role": { + "$ref": "#/$defs/LocalId" + } + }, + "required": [ + "role", + "profile", + "field" + ], + "type": "object" + }, + "SourceProjection": { + "additionalProperties": false, + "description": "A reviewed source-facts projection and its versioned output JSON Schema.", + "properties": { + "entrypoint": { + "type": "string" + }, + "schema": { + "type": "string" + }, + "source": { + "type": "string" + } + }, + "required": [ + "source", + "entrypoint", + "schema" + ], + "type": "object" + }, + "Subject": { + "additionalProperties": false, + "properties": { + "role": { + "$ref": "#/$defs/LocalId" + }, + "selectors": { + "items": { + "$ref": "#/$defs/LocalId" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "role", + "selectors" + ], + "type": "object" + }, + "ValueOrigin": { + "enum": [ + "request", + "authenticated-context", + "authenticated-grant" + ], + "type": "string" + } + }, + "$id": "https://id.registrystack.org/schemas/evidence/project/project.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/evidence/project/v1alpha1", + "type": "string" + }, + "assertionDefinitions": { + "additionalProperties": { + "$ref": "#/$defs/AssertionDefinition" + }, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "description": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "type": "null" + } + ], + "description": "Human explanation for authors and reviewers; excluded from behavior revisions." + }, + "functions": { + "items": { + "$ref": "#/$defs/Function" + }, + "type": "array" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "kind": { + "const": "EvidenceProject", + "type": "string" + }, + "label": { + "anyOf": [ + { + "$ref": "#/$defs/DisplayText" + }, + { + "type": "null" + } + ], + "description": "Optional presentation label. Stable references use the identifier." + }, + "maximumHolderBoundBatchSize": { + "description": "Maximum assertions released together in one holder-bound batch; omission means one.", + "format": "uint64", + "maximum": 16, + "minimum": 1, + "type": [ + "integer", + "null" + ] + }, + "selectorProfiles": { + "additionalProperties": { + "$ref": "#/$defs/SelectorProfile" + }, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "sources": { + "additionalProperties": { + "$ref": "#/$defs/Source" + }, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + } + }, + "required": [ + "apiVersion", + "kind", + "id", + "selectorProfiles", + "functions", + "sources", + "assertionDefinitions" + ], + "title": "Evidence project", + "type": "object" +} diff --git a/src/artifacts/sha256/fb01195c02d6b94784e17ea07f6de45f56370df8af933a2bb2142a3fd18c9146.json b/src/artifacts/sha256/fb01195c02d6b94784e17ea07f6de45f56370df8af933a2bb2142a3fd18c9146.json new file mode 100644 index 000000000..0ccb7606b --- /dev/null +++ b/src/artifacts/sha256/fb01195c02d6b94784e17ea07f6de45f56370df8af933a2bb2142a3fd18c9146.json @@ -0,0 +1,575 @@ +{ + "$defs": { + "AccessTokenAlgorithm": { + "description": "The signature algorithms an offer token may be signed with.\n\nThe same closed vocabulary Evidence accepts on its own resource-server\nprofile. Mixing families is refused when the configuration loads rather than\nwhen the first token arrives.", + "enum": [ + "EdDSA", + "ES256", + "RS256" + ], + "type": "string" + }, + "AuditDestinationKind": { + "description": "The configured audit destination kind, as written in product configuration.", + "oneOf": [ + { + "const": "file", + "description": "Durable, rotated JSON Lines file.", + "type": "string" + }, + { + "const": "stdout", + "description": "One JSON line per entry on standard output, flushed per entry.", + "type": "string" + } + ] + }, + "AuditDocument": { + "additionalProperties": false, + "description": "The process-local audit destination and keyed-pseudonym secret.", + "properties": { + "destination": { + "$ref": "#/$defs/AuditDestinationKind", + "default": "file" + }, + "hashKeyRef": { + "$ref": "#/$defs/SecretReference", + "description": "Secret reference to the audit hash key." + }, + "path": { + "pattern": "^/", + "type": "string" + }, + "retentionDays": { + "format": "uint32", + "maximum": 36500, + "minimum": 1, + "type": "integer" + }, + "rotateBytes": { + "format": "uint64", + "maximum": 4294967295, + "minimum": 1048576, + "type": "integer" + } + }, + "required": [ + "hashKeyRef" + ], + "type": "object" + }, + "ClaimNamesDocument": { + "additionalProperties": false, + "description": "The contextual claim names an offer-token issuer uses. Each is distinct,\nand none is a registered or authentication claim.", + "properties": { + "actorKind": { + "$ref": "#/$defs/ExternalId", + "default": "registry_actor_kind" + }, + "approver": { + "$ref": "#/$defs/ExternalId", + "default": "registry_approver" + }, + "grantBounds": { + "$ref": "#/$defs/ExternalId", + "default": "registry_grant_bounds" + }, + "grantClient": { + "$ref": "#/$defs/ExternalId", + "default": "registry_grant_client" + }, + "grantExp": { + "$ref": "#/$defs/ExternalId", + "default": "registry_grant_exp" + }, + "grantId": { + "$ref": "#/$defs/ExternalId", + "default": "registry_grant_id" + }, + "grantResource": { + "$ref": "#/$defs/ExternalId", + "default": "registry_grant_resource" + }, + "grantSourceIssuer": { + "$ref": "#/$defs/ExternalId", + "default": "registry_grant_source_issuer" + }, + "purpose": { + "$ref": "#/$defs/ExternalId", + "default": "registry_purpose" + } + }, + "type": "object" + }, + "Draft13ProfileDocument": { + "additionalProperties": false, + "description": "The Draft 13 compatibility profile switch. It takes no settings.", + "type": "object" + }, + "EnvironmentSecretProviderConfig": { + "additionalProperties": false, + "description": "The environment secret provider. It takes no settings.", + "type": "object" + }, + "EvidenceDocument": { + "additionalProperties": false, + "description": "The Evidence deployment this service requests credentials from.", + "properties": { + "baseUrl": { + "$ref": "#/$defs/Url", + "description": "The Evidence base URL, with no query or fragment. https in strict mode." + } + }, + "required": [ + "baseUrl" + ], + "type": "object" + }, + "ExternalId": { + "description": "An identifier another system issues, written exactly as its issuer gives it.", + "maxLength": 512, + "minLength": 1, + "pattern": "^[^\\u0000-\\u001F\\u007F-\\u009F]+$", + "type": "string" + }, + "FileSecretProviderConfig": { + "additionalProperties": false, + "description": "The file secret provider.", + "properties": { + "root": { + "description": "Absolute directory holding one file per secret. Each file must be a\nregular file owned by the runtime user, mode 0400 or 0600, with exactly\none hard link.", + "pattern": "^/", + "type": "string" + } + }, + "required": [ + "root" + ], + "type": "object" + }, + "IdentifierRestriction": { + "anyOf": [ + { + "const": "unrestricted", + "description": "Admit any value.", + "type": "string" + }, + { + "description": "Admit exactly these values.", + "items": { + "$ref": "#/$defs/ExternalId" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + ], + "description": "Which values a gate admits: the keyword `unrestricted`, or a nonempty list\nof the admitted values. An empty list is refused, because it reads as both\n\"nothing\" and \"anything\"." + }, + "ListenerBind": { + "description": "Socket address the runtime listens on, written host:port with an IP address host ([addr]:port for IPv6).", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "ListenerConfig": { + "additionalProperties": false, + "description": "The listener of a runtime that declares no TLS or exposure settings.", + "properties": { + "bind": { + "$ref": "#/$defs/ListenerBind" + } + }, + "required": [ + "bind" + ], + "type": "object" + }, + "ListenerDocument": { + "additionalProperties": false, + "description": "The listener a wallet and an adopter reach.", + "properties": { + "bind": { + "$ref": "#/$defs/ListenerBind" + }, + "maximumRequestBytes": { + "default": 16384, + "description": "The largest request body accepted, in bytes. A limit no wallet request\ncan survive leaves the service reporting itself ready while every\nrequest fails.", + "format": "uint32", + "maximum": 1048576, + "minimum": 1024, + "type": "integer" + }, + "requestTimeoutMilliseconds": { + "default": 5000, + "description": "How long one request may take, in milliseconds.", + "format": "uint64", + "maximum": 30000, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "bind" + ], + "type": "object" + }, + "OffersDocument": { + "additionalProperties": false, + "description": "The authorization boundary of the adopter-facing offer endpoint.", + "properties": { + "algorithms": { + "default": [ + "EdDSA" + ], + "description": "The one signature algorithm an offer token may be signed with.", + "items": { + "$ref": "#/$defs/AccessTokenAlgorithm" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "allowInsecureHttp": { + "default": false, + "description": "Permit plain HTTP beyond loopback to the offer-token issuer and to\n`jwksUri`.", + "type": "boolean" + }, + "allowedClients": { + "$ref": "#/$defs/IdentifierRestriction", + "description": "Client identifiers permitted to create offers, each at most 128 bytes,\nor `unrestricted` for any client the issuer vouched for." + }, + "audiences": { + "description": "The audiences this service answers to, each at most 256 bytes. A token\nissued for anything else is refused.", + "items": { + "$ref": "#/$defs/ExternalId" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "claims": { + "$ref": "#/$defs/ClaimNamesDocument", + "default": { + "actorKind": "registry_actor_kind", + "approver": "registry_approver", + "grantBounds": "registry_grant_bounds", + "grantClient": "registry_grant_client", + "grantExp": "registry_grant_exp", + "grantId": "registry_grant_id", + "grantResource": "registry_grant_resource", + "grantSourceIssuer": "registry_grant_source_issuer", + "purpose": "registry_purpose" + }, + "description": "Contextual claim names used by this offer-token issuer. Keep these\naligned with Evidence when both verify tokens from the same deployment." + }, + "issuer": { + "$ref": "#/$defs/Url", + "description": "The authorization server that issues offer tokens, compared exactly\nagainst a token's `iss`. https in strict mode." + }, + "jwksUri": { + "$ref": "#/$defs/Url", + "description": "The offer-token issuer's key set. https in strict mode." + }, + "maximumTokenLifetimeSeconds": { + "default": 900, + "description": "The longest lifetime an offer token may carry, in seconds.", + "format": "uint64", + "maximum": 3600, + "minimum": 60, + "type": "integer" + }, + "requiredScopes": { + "$ref": "#/$defs/IdentifierRestriction", + "description": "Scopes every offer token must carry, each an RFC 6749 scope token of at\nmost 256 bytes, or `unrestricted` for no scope gate. Generated\nconfigurations state `oid4vci:offer`." + } + }, + "required": [ + "issuer", + "jwksUri", + "audiences", + "allowedClients", + "requiredScopes" + ], + "type": "object" + }, + "RateLimitsDocument": { + "additionalProperties": false, + "description": "Request budgets. A request over its budget is answered 429 with a\n`Retry-After` header.", + "properties": { + "offerBurst": { + "default": 60, + "description": "The most offers one authorized principal may create in a burst.", + "format": "uint32", + "maximum": 100000, + "minimum": 1, + "type": "integer" + }, + "offersPerPrincipalPerMinute": { + "default": 600, + "description": "Offers one authorized principal may create per minute.", + "format": "uint32", + "maximum": 100000, + "minimum": 1, + "type": "integer" + }, + "walletRequestBurst": { + "default": 300, + "description": "The most requests each wallet endpoint admits in a burst.", + "format": "uint32", + "maximum": 100000, + "minimum": 1, + "type": "integer" + }, + "walletRequestsPerMinute": { + "default": 3000, + "description": "Requests per minute each of the token, nonce and credential endpoints\ntakes from all wallets together.", + "format": "uint32", + "maximum": 1000000, + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + }, + "SecretProvidersConfig": { + "additionalProperties": false, + "anyOf": [ + { + "properties": { + "file": { + "$ref": "#/$defs/FileSecretProviderConfig" + } + }, + "required": [ + "file" + ] + }, + { + "properties": { + "environment": { + "$ref": "#/$defs/EnvironmentSecretProviderConfig" + } + }, + "required": [ + "environment" + ] + } + ], + "description": "The secret providers a runtime enables. A reference is resolved only by a\nprovider declared here: `secret:file/name` under `file.root`, and\n`secret:env/NAME` only when `environment: {}` is present.", + "properties": { + "environment": { + "$ref": "#/$defs/EnvironmentSecretProviderConfig", + "description": "Enables `secret:env/NAME` references, read from the process\nenvironment. Declared as an empty mapping: `environment: {}`." + }, + "file": { + "$ref": "#/$defs/FileSecretProviderConfig", + "description": "Enables `secret:file/name` references, read from files under `root`." + } + }, + "type": "object" + }, + "SecretReference": { + "description": "An exact secret reference: secret:file/name, resolved under secretProviders.file.root, or secret:env/NAME, resolved only when secretProviders.environment is declared.", + "pattern": "^(?:secret:env/[A-Z][A-Z0-9_]{0,127}|secret:file/[a-z][a-z0-9._-]{0,127})$", + "type": "string" + }, + "StoreDocument": { + "additionalProperties": false, + "description": "The bounds of the in-memory store.", + "properties": { + "accessTokenLifetimeSeconds": { + "default": 300, + "description": "How long an access token lives, in seconds.", + "format": "uint64", + "maximum": 900, + "minimum": 60, + "type": "integer" + }, + "maximumOffers": { + "default": 4096, + "description": "How many offers the store holds. A store too small to hold a\ndeployment's live offers refuses new ones rather than forgetting old\nones.", + "format": "uint32", + "maximum": 1048576, + "minimum": 256, + "type": "integer" + }, + "maximumTransactionCodeAttempts": { + "default": 3, + "description": "How many wrong transaction codes an offer survives.", + "format": "uint32", + "maximum": 10, + "minimum": 1, + "type": "integer" + }, + "nonceLifetimeSeconds": { + "default": 120, + "description": "How long a nonce lives, in seconds; at most the access token lifetime.", + "format": "uint64", + "maximum": 900, + "minimum": 30, + "type": "integer" + }, + "offerLifetimeSeconds": { + "default": 300, + "description": "How long an offer lives, in seconds. Minutes, in both directions:\nshorter than a person can scan a code and read a message, and the flow\ncannot complete; longer, and a stolen offer stays useful.", + "format": "uint64", + "maximum": 900, + "minimum": 60, + "type": "integer" + } + }, + "type": "object" + }, + "TokenClientDocument": { + "additionalProperties": false, + "description": "The identity this service authenticates to its token issuer with.", + "properties": { + "clientAssertionAudience": { + "$ref": "#/$defs/Url", + "description": "The value the endpoint expects as the client assertion `aud`. Absent\nmeans the token endpoint, which is the usual registration." + }, + "clientId": { + "$ref": "#/$defs/ExternalId", + "description": "The client identifier registered with the token issuer, at most 128\nbytes." + }, + "privateKeyRef": { + "$ref": "#/$defs/SecretReference", + "description": "The client's own private JWK, as `secret:file/` under\n`secretProviders.file.root` or `secret:env/`. Resolved when the\noutbound client is built, never logged and never rendered." + }, + "resource": { + "$ref": "#/$defs/ExternalId", + "description": "The fixed RFC 8707 resource identifier of the Evidence API: an\nabsolute URI with no fragment or user information." + }, + "scopes": { + "description": "The exact scopes requested from the issuer for Evidence access: 1 to\n32 distinct RFC 6749 scope tokens. Absent requests no scope.", + "items": { + "$ref": "#/$defs/ExternalId" + }, + "maxItems": 32, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "tokenEndpoint": { + "$ref": "#/$defs/Url", + "description": "The token endpoint, with no query or fragment. https in strict mode." + } + }, + "required": [ + "tokenEndpoint", + "clientId", + "privateKeyRef" + ], + "type": "object" + }, + "Url": { + "description": "An absolute http or https URL with a host preserved as written, no user information, and no backslash, whitespace or control character. DNS case and equivalent IPv6 literals are permitted.", + "format": "uri", + "maxLength": 2048, + "pattern": "^[Hh][Tt][Tt][Pp][Ss]?://[^/?#@\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]+([/?#][^\\u005C\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]*)?$", + "type": "string" + }, + "ValidationMode": { + "description": "The transport validation boundary selected for this process.\n\nA two-axis transport vocabulary with deliberately no third assurance\nconcept: a delivery front end that graded itself on its own scale would\ninvent a security property nothing else in the stack recognizes.", + "oneOf": [ + { + "const": "strict", + "description": "Every published and called origin uses https.", + "type": "string" + }, + { + "const": "supervised-local-development", + "description": "One supervised process group on loopback: the credential issuer is a\ncanonical `http://127.0.0.1:` origin the listener binds exactly,\nand every called origin is https or a 127.0.0.1 HTTP origin.", + "type": "string" + } + ] + } + }, + "$id": "https://id.registrystack.org/schemas/evidence/oid4vci-runtime/oid4vci-runtime.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "description": "The wallet-delivery runtime file: one deployment of the OID4VCI delivery\nfront end for Evidence credentials.", + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/evidence/oid4vci-runtime/v1alpha1", + "description": "The format version of this file.", + "type": "string" + }, + "audit": { + "$ref": "#/$defs/AuditDocument", + "description": "The required durable audit journal for offer attribution and delivery\noutcomes. `stdout` is available for a collector-managed deployment;\nonly a file destination supplies durability itself." + }, + "credentialIssuer": { + "$ref": "#/$defs/Url", + "description": "The `credential_issuer` identifier this service publishes, and the\nvalue a wallet proof must carry as its `aud`: a bare origin with no\npath, query, or fragment. https in strict mode. A trailing slash is\nremoved, so what is published and what is compared are the same bytes." + }, + "draft13Profile": { + "$ref": "#/$defs/Draft13ProfileDocument", + "description": "Serves the OpenID4VCI Draft 13 compatibility profile beside the 1.0\nFinal profile, at its own issuer identifier: the `credentialIssuer`\nfollowed by `/protocol/oid4vci/draft-13`. Written as an empty mapping,\n`draft13Profile: {}`; absent means the profile is not served and none of\nits routes exist. It shares the offer store and the offer authorization\nwith the 1.0 profile, and an offer made for one profile cannot be\nredeemed through the other." + }, + "evidence": { + "$ref": "#/$defs/EvidenceDocument", + "description": "The Evidence deployment this service requests credentials from." + }, + "kind": { + "const": "EvidenceOid4vciRuntimeConfig", + "description": "The document kind.", + "type": "string" + }, + "listener": { + "$ref": "#/$defs/ListenerDocument", + "description": "The listener a wallet and an adopter reach." + }, + "metricsListener": { + "$ref": "#/$defs/ListenerConfig", + "description": "The optional operator-only metrics listener: a loopback or private\naddress the delivery listener does not use. Absent means no metrics\nendpoint exists." + }, + "offers": { + "$ref": "#/$defs/OffersDocument", + "description": "The authorization boundary of the adopter-facing offer endpoint." + }, + "rateLimits": { + "$ref": "#/$defs/RateLimitsDocument", + "description": "Request budgets. Absent means the defaults of each member." + }, + "secretProviders": { + "$ref": "#/$defs/SecretProvidersConfig", + "description": "The secret providers `tokenClient.privateKeyRef` may name." + }, + "store": { + "$ref": "#/$defs/StoreDocument", + "default": { + "accessTokenLifetimeSeconds": 300, + "maximumOffers": 4096, + "maximumTransactionCodeAttempts": 3, + "nonceLifetimeSeconds": 120, + "offerLifetimeSeconds": 300 + }, + "description": "The bounds of the in-memory store." + }, + "tokenClient": { + "$ref": "#/$defs/TokenClientDocument", + "description": "The identity this service authenticates to its token issuer with." + }, + "validationMode": { + "$ref": "#/$defs/ValidationMode", + "default": "strict", + "description": "The transport validation boundary. Absent means strict." + } + }, + "required": [ + "apiVersion", + "kind", + "credentialIssuer", + "listener", + "secretProviders", + "audit", + "evidence", + "tokenClient", + "offers" + ], + "title": "Evidence OID4VCI delivery runtime configuration", + "type": "object" +} diff --git a/src/artifacts/sha256/ff888718d437664e4ca5095c5e58016539c58e535f512ea873a210929fd5df80.json b/src/artifacts/sha256/ff888718d437664e4ca5095c5e58016539c58e535f512ea873a210929fd5df80.json new file mode 100644 index 000000000..c11b7d7e9 --- /dev/null +++ b/src/artifacts/sha256/ff888718d437664e4ca5095c5e58016539c58e535f512ea873a210929fd5df80.json @@ -0,0 +1,617 @@ +{ + "$defs": { + "ArrivalOffering": { + "additionalProperties": false, + "description": "The arrival-window block of an offering.", + "properties": { + "horizonDays": { + "description": "How far ahead of the window's start booking is open.", + "format": "uint32", + "maximum": 3650, + "minimum": 1, + "type": "integer" + }, + "leadTimeMinutes": { + "description": "The earliest lead time a caller may book the window at.", + "format": "uint32", + "maximum": 5256000, + "minimum": 1, + "type": "integer" + }, + "window": { + "$ref": "#/$defs/LocalId", + "description": "The published window this offering serves arrivals in. An offering\nthat omits it serves every records-published window whose `offering`\nnames it, and a request picks one of those windows by its start." + } + }, + "required": [ + "leadTimeMinutes", + "horizonDays" + ], + "type": "object" + }, + "Channel": { + "description": "The authenticated channel a subquota limits.", + "enum": [ + "public", + "assisted", + "urgent", + "walk-in" + ], + "type": "string" + }, + "DisplayText": { + "description": "Human-readable display text. Bidirectional embedding, override, and isolate controls, byte-order marks, line and paragraph separators, and Unicode noncharacters are refused; multilingual joiners and direction marks remain valid.", + "not": { + "pattern": "[

‪-‮⁦-⁩﷐-﷯￾￿]|🿾|🿿|𯿾|𯿿|𿿾|𿿿|񏿾|񏿿|񟿾|񟿿|񯿾|񯿿|񿿾|񿿿|򏿾|򏿿|򟿾|򟿿|򯿾|򯿿|򿿾|򿿿|󏿾|󏿿|󟿾|󟿿|󯿾|󯿿|󿿾|󿿿|􏿾|􏿿" + }, + "type": "string" + }, + "DurationSelectionPolicy": { + "additionalProperties": false, + "description": "A bounded lattice of caller-selectable service durations.", + "properties": { + "incrementMinutes": { + "format": "uint32", + "maximum": 10080, + "minimum": 1, + "type": "integer" + }, + "maximumMinutes": { + "format": "uint32", + "maximum": 10080, + "minimum": 1, + "type": "integer" + }, + "minimumMinutes": { + "format": "uint32", + "maximum": 10080, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "minimumMinutes", + "maximumMinutes", + "incrementMinutes" + ], + "type": "object" + }, + "ExactTimeOffering": { + "additionalProperties": false, + "description": "The exact-time block of an offering: appointment length, protections, and\nthe pool that backs it.", + "properties": { + "allowResourceSelection": { + "description": "Whether a request may constrain allocation to one exact pool member.\nOmitted or false, every exact-time request uses fungible selection.", + "type": "boolean" + }, + "bufferAfterMinutes": { + "description": "Cleanup time occupied after the displayed end.", + "format": "uint32", + "maximum": 1440, + "minimum": 0, + "type": "integer" + }, + "bufferBeforeMinutes": { + "description": "Setup time occupied before the displayed start.", + "format": "uint32", + "maximum": 1440, + "minimum": 0, + "type": "integer" + }, + "durationMinutes": { + "format": "uint32", + "maximum": 10080, + "minimum": 1, + "type": "integer" + }, + "durationSelection": { + "$ref": "#/$defs/DurationSelectionPolicy", + "description": "The request-selectable duration lattice. Omitted, the offering accepts\nonly `durationMinutes`; a request that omits its duration always uses\n`durationMinutes` in either form." + }, + "horizonDays": { + "description": "How far ahead booking is open.", + "format": "uint32", + "maximum": 3650, + "minimum": 1, + "type": "integer" + }, + "leadTimeMinutes": { + "description": "The earliest lead time a caller may book at.", + "format": "uint32", + "maximum": 5256000, + "minimum": 1, + "type": "integer" + }, + "maximumRecipients": { + "description": "The largest party the offering serves.", + "format": "uint32", + "maximum": 2147483647, + "minimum": 1, + "type": "integer" + }, + "openingCoverage": { + "$ref": "#/$defs/OpeningCoverage", + "description": "The interval published openings and closures constrain. Omitted, only\nthe displayed service interval must be covered; buffers still consume\nledger capacity outside it." + }, + "partyCounts": { + "$ref": "#/$defs/PartyCountsRequirement", + "description": "Whether a request must declare human party counts. Omitted, counts are\nrequired. Only exact-time offerings may opt out for resource bookings." + }, + "pool": { + "$ref": "#/$defs/LocalId", + "description": "The pool of interchangeable members backing this offering. A pool is\nits members, never an independent counter." + }, + "startIncrementMinutes": { + "description": "The grid displayed starts must land on.", + "format": "uint32", + "maximum": 1440, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "durationMinutes", + "bufferBeforeMinutes", + "bufferAfterMinutes", + "leadTimeMinutes", + "horizonDays", + "pool", + "startIncrementMinutes", + "maximumRecipients" + ], + "type": "object" + }, + "HoldPolicy": { + "additionalProperties": false, + "description": "The hold policy every offering inherits.", + "properties": { + "because": { + "$ref": "#/$defs/DisplayText" + }, + "maximumPerCaller": { + "description": "The most live holds one caller may keep at once.", + "format": "uint32", + "maximum": 2147483647, + "minimum": 1, + "type": "integer" + }, + "ttlMinutes": { + "description": "How long a hold keeps its capacity under an explicitly authored policy.", + "format": "uint32", + "maximum": 10080, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "ttlMinutes", + "maximumPerCaller", + "because" + ], + "type": "object" + }, + "HolidaySet": { + "additionalProperties": false, + "description": "A named, revisioned set of holiday dates.", + "properties": { + "dates": { + "description": "The dates the set closes. A set that closes no date omits the member.", + "items": { + "type": "string" + }, + "maxItems": 256, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "label": { + "$ref": "#/$defs/DisplayText", + "description": "An optional human label for the set; the id names it when absent." + }, + "revision": { + "format": "uint64", + "maximum": 9223372036854775807, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "id", + "revision" + ], + "type": "object" + }, + "HookPolicy": { + "additionalProperties": false, + "description": "One observer hook: the shared Registry Stack hook declaration narrowed to\nthe closed Scheduling contract. It runs after commit, follows one of four\nappointment event triggers, delivers to a URL destination, and takes\nno condition and no proposal principal.", + "properties": { + "handler": { + "$ref": "#/$defs/ObserverHandler" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "phase": { + "$ref": "#/$defs/ObserverPhase" + }, + "projection": { + "description": "The fields of the trigger's closed projection the observer receives.\nA hook that needs none lists none.", + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "trigger": { + "$ref": "#/$defs/ObserverTrigger" + } + }, + "required": [ + "id", + "phase", + "trigger", + "projection", + "handler" + ], + "type": "object" + }, + "LocalId": { + "description": "A local identifier: a lowercase letter, then up to 63 lowercase letters, digits, `_`, or `-`.", + "pattern": "^[a-z][a-z0-9_-]{0,63}$", + "type": "string" + }, + "ObserverHandler": { + "description": "Where an observer hook delivers, chosen by its `type` member. Scheduling\ndelivers to a URL destination the runtime configuration binds, and to\nnothing else.", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "destinationId": { + "$ref": "#/$defs/LocalId" + }, + "type": { + "const": "url", + "type": "string" + } + }, + "required": [ + "type", + "destinationId" + ], + "type": "object" + } + ] + }, + "ObserverPhase": { + "description": "When an observer hook runs. Scheduling runs every hook after the\nappointment transaction commits, never inside its capacity transaction.", + "enum": [ + "after" + ], + "type": "string" + }, + "ObserverTrigger": { + "description": "The appointment event an observer hook follows.", + "enum": [ + "appointment.confirmed", + "appointment.rescheduled", + "appointment.cancelled", + "appointment.attendance-observed" + ], + "type": "string" + }, + "OfferingPolicy": { + "additionalProperties": false, + "description": "One bookable thing a deployment offers.", + "properties": { + "arrival": { + "$ref": "#/$defs/ArrivalOffering", + "description": "Present exactly when `mode` is `arrival-window`." + }, + "because": { + "$ref": "#/$defs/DisplayText" + }, + "cancellationCutoffMinutes": { + "description": "How late before the displayed start a booking may still be cancelled.", + "format": "uint32", + "maximum": 5256000, + "minimum": 0, + "type": "integer" + }, + "duplicateActiveKey": { + "$ref": "#/$defs/LocalId", + "description": "The caller attribute an active-booking duplicate check keys on, when\nthe service defines one. Phone numbers and email addresses are never\nvalid duplicate keys." + }, + "exactTime": { + "$ref": "#/$defs/ExactTimeOffering", + "description": "Present exactly when `mode` is `exact-time`." + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "label": { + "$ref": "#/$defs/DisplayText" + }, + "location": { + "$ref": "#/$defs/LocalId" + }, + "mode": { + "$ref": "#/$defs/SchedulingMode" + }, + "prerequisites": { + "description": "Prerequisite references a requesting party must hold. An offering\nwith no prerequisite omits the member.", + "items": { + "type": "string" + }, + "maxItems": 256, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "reminders": { + "description": "Authored reminder offsets for this offering. The runtime mints one\nrevision-bound intent per offset whose due time is still ahead when\nthe appointment commits; message transport stays external (INT-02).\nAn offering with no reminders omits the member or lists none.", + "items": { + "$ref": "#/$defs/ReminderOffsetPolicy" + }, + "maxItems": 256, + "type": "array" + }, + "requiresCapabilities": { + "description": "Capabilities every backing member must have for this offering. An\noffering that requires none omits the member.", + "items": { + "$ref": "#/$defs/LocalId" + }, + "maxItems": 256, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "service": { + "$ref": "#/$defs/LocalId" + } + }, + "required": [ + "id", + "service", + "label", + "mode", + "location", + "because", + "cancellationCutoffMinutes" + ], + "type": "object" + }, + "OpeningCoverage": { + "description": "Which interval must stay inside published openings and outside closures.\nBuffers always occupy ledger capacity regardless of this choice.", + "oneOf": [ + { + "const": "service-interval", + "description": "Published openings constrain the caller-visible service interval.", + "type": "string" + }, + { + "const": "occupied-interval", + "description": "Published openings constrain service plus setup and cleanup buffers.", + "type": "string" + } + ] + }, + "OpeningPatternPolicy": { + "additionalProperties": false, + "description": "A bounded weekly opening pattern over local wall-clock time. The timezone\ncomes from the location record the pattern references.", + "properties": { + "because": { + "$ref": "#/$defs/DisplayText" + }, + "effectiveFrom": { + "type": "string" + }, + "effectiveUntil": { + "type": "string" + }, + "endTime": { + "type": "string" + }, + "holidaySet": { + "$ref": "#/$defs/LocalId" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "location": { + "$ref": "#/$defs/LocalId" + }, + "startTime": { + "type": "string" + }, + "weekdays": { + "items": { + "$ref": "#/$defs/PolicyWeekday" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "id", + "location", + "holidaySet", + "weekdays", + "startTime", + "endTime", + "effectiveFrom", + "effectiveUntil", + "because" + ], + "type": "object" + }, + "PartyCountsRequirement": { + "description": "Whether an exact-time offering requires declared human party counts.\nArrival-window offerings always require them because recipient counts drive\ntheir capacity units.", + "enum": [ + "required", + "optional" + ], + "type": "string" + }, + "PolicyWeekday": { + "description": "One weekday of an opening pattern.", + "enum": [ + "mon", + "tue", + "wed", + "thu", + "fri", + "sat", + "sun" + ], + "type": "string" + }, + "ProjectIdentity": { + "additionalProperties": false, + "description": "The members that name a project (CFG-ENV-6): a project's `project` block\nholds these, and may add project-wide members of the product's own.\nSchema name `ProjectIdentity`.", + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "version": { + "type": "string" + } + }, + "required": [ + "id", + "version" + ], + "type": "object" + }, + "ReminderOffsetPolicy": { + "additionalProperties": false, + "description": "One authored reminder offset: a notification intent becomes due this many\nminutes before the displayed start of an appointment on the offering.", + "properties": { + "because": { + "$ref": "#/$defs/DisplayText" + }, + "offsetMinutes": { + "format": "uint32", + "maximum": 5256000, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "offsetMinutes", + "because" + ], + "type": "object" + }, + "SchedulingMode": { + "description": "How an offering delivers its service.", + "enum": [ + "exact-time", + "arrival-window" + ], + "type": "string" + }, + "ServicePolicy": { + "additionalProperties": false, + "description": "A service a deployment schedules.", + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "label": { + "$ref": "#/$defs/DisplayText" + } + }, + "required": [ + "id", + "label" + ], + "type": "object" + } + }, + "$id": "https://id.registrystack.org/schemas/scheduling/project/project.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "description": "The authored scheduling project, `scheduling.yaml`.", + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/scheduling/project/v1alpha1", + "type": "string" + }, + "channels": { + "description": "The channels this deployment serves. The vocabulary is closed by the\n`Channel` type itself; the declaration narrows it to the served\nsubset, every subquota must draw on a declared channel, and a request\nnaming anything else is refused. The set is required and holds at\nleast one channel: a deployment that names none serves none.", + "items": { + "$ref": "#/$defs/Channel" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "holdPolicy": { + "$ref": "#/$defs/HoldPolicy" + }, + "holidaySets": { + "items": { + "$ref": "#/$defs/HolidaySet" + }, + "maxItems": 256, + "minItems": 1, + "type": "array" + }, + "hooks": { + "description": "Observer hooks. A project with none omits the member.", + "items": { + "$ref": "#/$defs/HookPolicy" + }, + "maxItems": 256, + "type": "array" + }, + "kind": { + "const": "SchedulingProject", + "type": "string" + }, + "offerings": { + "items": { + "$ref": "#/$defs/OfferingPolicy" + }, + "maxItems": 256, + "minItems": 1, + "type": "array" + }, + "openings": { + "items": { + "$ref": "#/$defs/OpeningPatternPolicy" + }, + "maxItems": 256, + "minItems": 1, + "type": "array" + }, + "project": { + "$ref": "#/$defs/ProjectIdentity" + }, + "services": { + "items": { + "$ref": "#/$defs/ServicePolicy" + }, + "maxItems": 256, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "apiVersion", + "kind", + "project", + "services", + "offerings", + "holidaySets", + "openings", + "channels", + "holdPolicy" + ], + "title": "Registry Scheduling project", + "type": "object" +} diff --git a/src/catalogs/contexts.json b/src/catalogs/contexts.json index 09fdda42f..638c24628 100644 --- a/src/catalogs/contexts.json +++ b/src/catalogs/contexts.json @@ -11,7 +11,7 @@ "source": "src/artifacts/sha256/c336506f4dcd7e266155e8cd1ff9710766bc240f395e27b0480b2e193e74e2ee.jsonld", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "products/registry-record/profile/registry-record-v1.md", "sha256": "c8685157d8e2982b00657a2a3b2fe729cf54792d76134cf22aa1be1cc7abf4a8" }, diff --git a/src/catalogs/namespaces.json b/src/catalogs/namespaces.json index f2a1d6156..9d8d34053 100644 --- a/src/catalogs/namespaces.json +++ b/src/catalogs/namespaces.json @@ -10,7 +10,7 @@ "owner": "registry-manifest", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-manifest-core/src/lib.rs", "sha256": "707b3d0306d9eab8e4f8148310482ceff7912368c50b147931dceafe54dadc74" } diff --git a/src/catalogs/problems.json b/src/catalogs/problems.json index 693ee4e2c..91335bc9e 100644 --- a/src/catalogs/problems.json +++ b/src/catalogs/problems.json @@ -1,5 +1,5 @@ { - "generated_from": "https://github.com/registrystack/registry-stack/blob/c0487fdbe36db15eadaecccb5bcd5e03317267b4/products/identifiers/generated/catalog.v1.json", + "generated_from": "https://github.com/registrystack/registry-stack/blob/4ee5c22b4ae739882a5047ac8ae3d12c29097f8b/products/identifiers/generated/catalog.v1.json", "generated_at": "1970-01-01T00:00:00.000Z", "entries": [ { @@ -18,7 +18,7 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -39,7 +39,7 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -60,7 +60,7 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -81,7 +81,7 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -102,7 +102,7 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -144,7 +144,7 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -165,7 +165,7 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -186,7 +186,7 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -207,7 +207,7 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -228,7 +228,7 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -249,7 +249,7 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -270,7 +270,7 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -291,7 +291,7 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -312,7 +312,7 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -333,7 +333,7 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -354,7 +354,7 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -375,7 +375,7 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -396,7 +396,7 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -417,7 +417,7 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -438,7 +438,7 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -459,7 +459,7 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -480,7 +480,7 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -522,7 +522,7 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -543,7 +543,7 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -564,7 +564,7 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -585,7 +585,7 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -606,7 +606,7 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -627,7 +627,7 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -648,7 +648,7 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -669,7 +669,7 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -690,7 +690,7 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -711,7 +711,7 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -732,7 +732,7 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -753,7 +753,7 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/problem.rs", "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } @@ -774,7 +774,7 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -795,7 +795,7 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -816,7 +816,7 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -837,7 +837,7 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -858,7 +858,7 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -879,7 +879,7 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -900,7 +900,7 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -921,7 +921,7 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -942,7 +942,7 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -963,7 +963,7 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -984,7 +984,7 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -1005,7 +1005,7 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -1026,7 +1026,7 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -1047,7 +1047,7 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -1068,7 +1068,7 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -1089,7 +1089,7 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -1110,7 +1110,7 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -1131,7 +1131,7 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -1152,7 +1152,7 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -1173,7 +1173,7 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -1236,7 +1236,7 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -1257,7 +1257,7 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -1278,7 +1278,7 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -1299,7 +1299,7 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -1320,7 +1320,7 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -1341,7 +1341,7 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -1362,7 +1362,7 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -1383,7 +1383,7 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -1404,7 +1404,7 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -1425,7 +1425,7 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -1446,7 +1446,7 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -1467,7 +1467,7 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -1488,7 +1488,7 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -1509,7 +1509,7 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -1530,7 +1530,7 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -1635,7 +1635,7 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -1656,7 +1656,7 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/problem.rs", "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } @@ -1845,9 +1845,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -1866,9 +1866,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -1887,9 +1887,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -1908,9 +1908,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -1929,9 +1929,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -1950,9 +1950,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -1971,9 +1971,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -1992,9 +1992,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -2013,9 +2013,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -2034,9 +2034,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -2055,9 +2055,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -2076,9 +2076,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -2097,9 +2097,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -2118,9 +2118,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -2139,9 +2139,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -2160,9 +2160,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -2181,9 +2181,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -2202,9 +2202,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -2223,9 +2223,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -2244,9 +2244,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -2265,9 +2265,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -2286,9 +2286,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -2307,9 +2307,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -2328,9 +2328,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -2349,9 +2349,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -2370,9 +2370,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -2391,9 +2391,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -2412,9 +2412,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -2433,9 +2433,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -2454,9 +2454,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -2475,9 +2475,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -2496,9 +2496,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -2517,9 +2517,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -2538,9 +2538,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -2559,9 +2559,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -2580,9 +2580,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -2601,9 +2601,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -2622,9 +2622,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -2643,9 +2643,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -2664,9 +2664,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -2685,9 +2685,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -2706,9 +2706,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -2727,9 +2727,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -2748,9 +2748,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -2769,9 +2769,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -2790,9 +2790,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" } }, { @@ -2811,7 +2811,7 @@ "source": "registry-stack/crates/registry-discovery/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-discovery/src/problem.rs", "sha256": "cd37f4a483c9d29c5ed4cbffa11756ef78207d9df1e6e62b7f93de36a30b43e3" } @@ -2832,7 +2832,7 @@ "source": "registry-stack/crates/registry-discovery/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-discovery/src/problem.rs", "sha256": "cd37f4a483c9d29c5ed4cbffa11756ef78207d9df1e6e62b7f93de36a30b43e3" } @@ -2853,7 +2853,7 @@ "source": "registry-stack/crates/registry-discovery/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-discovery/src/problem.rs", "sha256": "cd37f4a483c9d29c5ed4cbffa11756ef78207d9df1e6e62b7f93de36a30b43e3" } @@ -2874,7 +2874,7 @@ "source": "registry-stack/crates/registry-discovery/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-discovery/src/problem.rs", "sha256": "cd37f4a483c9d29c5ed4cbffa11756ef78207d9df1e6e62b7f93de36a30b43e3" } @@ -2895,7 +2895,7 @@ "source": "registry-stack/crates/registry-documents-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -2916,7 +2916,7 @@ "source": "registry-stack/crates/registry-documents-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -2937,7 +2937,7 @@ "source": "registry-stack/crates/registry-documents-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -2958,7 +2958,7 @@ "source": "registry-stack/crates/registry-documents-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -2979,7 +2979,7 @@ "source": "registry-stack/crates/registry-documents-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -3000,7 +3000,7 @@ "source": "registry-stack/crates/registry-documents-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -3021,7 +3021,7 @@ "source": "registry-stack/crates/registry-documents-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -3042,7 +3042,7 @@ "source": "registry-stack/crates/registry-documents-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -3063,7 +3063,7 @@ "source": "registry-stack/crates/registry-documents-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -3084,7 +3084,7 @@ "source": "registry-stack/crates/registry-documents-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -3105,7 +3105,7 @@ "source": "registry-stack/crates/registry-documents-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -3126,7 +3126,7 @@ "source": "registry-stack/crates/registry-documents-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -3147,7 +3147,7 @@ "source": "registry-stack/crates/registry-documents-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -3168,7 +3168,7 @@ "source": "registry-stack/crates/registry-documents-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -3189,7 +3189,7 @@ "source": "registry-stack/crates/registry-documents-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -3210,7 +3210,7 @@ "source": "registry-stack/crates/registry-documents-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -3231,7 +3231,7 @@ "source": "registry-stack/crates/registry-documents-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -3252,7 +3252,7 @@ "source": "registry-stack/crates/registry-documents-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -3273,7 +3273,7 @@ "source": "registry-stack/crates/registry-documents-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -3294,7 +3294,7 @@ "source": "registry-stack/crates/registry-documents-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -3315,7 +3315,7 @@ "source": "registry-stack/crates/registry-documents-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -3336,7 +3336,7 @@ "source": "registry-stack/crates/registry-documents-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -3357,7 +3357,7 @@ "source": "registry-stack/crates/registry-documents-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -3378,11 +3378,368 @@ "source": "registry-stack/crates/registry-documents-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } }, + { + "product": "registry-evidence-oid4vp", + "code": "audit-unavailable", + "path": "audit-unavailable", + "title": "Service Unavailable", + "description": "The audit destination did not accept the operation. Try again after the service recovers.", + "kind": "problem", + "status": "active", + "compatibility_line": "v1alpha1", + "owner": "evidence", + "http_statuses": [ + 503 + ], + "source": "registry-stack/crates/registry-evidence-oid4vp/src/problem.rs", + "source_reference": { + "repository": "registry-stack", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + } + }, + { + "product": "registry-evidence-oid4vp", + "code": "body-too-large", + "path": "body-too-large", + "title": "Payload Too Large", + "description": "The request body exceeds the accepted size.", + "kind": "problem", + "status": "active", + "compatibility_line": "v1alpha1", + "owner": "evidence", + "http_statuses": [ + 413 + ], + "source": "registry-stack/crates/registry-evidence-oid4vp/src/problem.rs", + "source_reference": { + "repository": "registry-stack", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + } + }, + { + "product": "registry-evidence-oid4vp", + "code": "capacity", + "path": "capacity", + "title": "Service Unavailable", + "description": "The service is at capacity or holds as many sessions as it allows. Retry after the interval given.", + "kind": "problem", + "status": "active", + "compatibility_line": "v1alpha1", + "owner": "evidence", + "http_statuses": [ + 503 + ], + "source": "registry-stack/crates/registry-evidence-oid4vp/src/problem.rs", + "source_reference": { + "repository": "registry-stack", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + } + }, + { + "product": "registry-evidence-oid4vp", + "code": "internal-error", + "path": "internal-error", + "title": "Internal Server Error", + "description": "The request could not be completed.", + "kind": "problem", + "status": "active", + "compatibility_line": "v1alpha1", + "owner": "evidence", + "http_statuses": [ + 500 + ], + "source": "registry-stack/crates/registry-evidence-oid4vp/src/problem.rs", + "source_reference": { + "repository": "registry-stack", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + } + }, + { + "product": "registry-evidence-oid4vp", + "code": "invalid-request", + "path": "invalid-request", + "title": "Invalid Request", + "description": "The request body is malformed or does not have the required members.", + "kind": "problem", + "status": "active", + "compatibility_line": "v1alpha1", + "owner": "evidence", + "http_statuses": [ + 400 + ], + "source": "registry-stack/crates/registry-evidence-oid4vp/src/problem.rs", + "source_reference": { + "repository": "registry-stack", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + } + }, + { + "product": "registry-evidence-oid4vp", + "code": "issuer-unavailable", + "path": "issuer-unavailable", + "title": "Service Unavailable", + "description": "The token issuer is unavailable. Retry after the interval given.", + "kind": "problem", + "status": "active", + "compatibility_line": "v1alpha1", + "owner": "evidence", + "http_statuses": [ + 503 + ], + "source": "registry-stack/crates/registry-evidence-oid4vp/src/problem.rs", + "source_reference": { + "repository": "registry-stack", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + } + }, + { + "product": "registry-evidence-oid4vp", + "code": "method-not-allowed", + "path": "method-not-allowed", + "title": "Method Not Allowed", + "description": "The route exists but not for this method.", + "kind": "problem", + "status": "active", + "compatibility_line": "v1alpha1", + "owner": "evidence", + "http_statuses": [ + 405 + ], + "source": "registry-stack/crates/registry-evidence-oid4vp/src/problem.rs", + "source_reference": { + "repository": "registry-stack", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + } + }, + { + "product": "registry-evidence-oid4vp", + "code": "not-found", + "path": "not-found", + "title": "Not Found", + "description": "The requested route does not exist.", + "kind": "problem", + "status": "active", + "compatibility_line": "v1alpha1", + "owner": "evidence", + "http_statuses": [ + 404 + ], + "source": "registry-stack/crates/registry-evidence-oid4vp/src/problem.rs", + "source_reference": { + "repository": "registry-stack", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + } + }, + { + "product": "registry-evidence-oid4vp", + "code": "not-yet-presented", + "path": "not-yet-presented", + "title": "Not Yet Presented", + "description": "The wallet has not presented yet.", + "kind": "problem", + "status": "active", + "compatibility_line": "v1alpha1", + "owner": "evidence", + "http_statuses": [ + 409 + ], + "source": "registry-stack/crates/registry-evidence-oid4vp/src/problem.rs", + "source_reference": { + "repository": "registry-stack", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + } + }, + { + "product": "registry-evidence-oid4vp", + "code": "rate-limited", + "path": "rate-limited", + "title": "Too Many Requests", + "description": "Too many requests. Retry after the interval given.", + "kind": "problem", + "status": "active", + "compatibility_line": "v1alpha1", + "owner": "evidence", + "http_statuses": [ + 429 + ], + "source": "registry-stack/crates/registry-evidence-oid4vp/src/problem.rs", + "source_reference": { + "repository": "registry-stack", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + } + }, + { + "product": "registry-evidence-oid4vp", + "code": "request-not-found", + "path": "request-not-found", + "title": "Not Found", + "description": "The request object is unknown, expired, or no longer pending.", + "kind": "problem", + "status": "active", + "compatibility_line": "v1alpha1", + "owner": "evidence", + "http_statuses": [ + 404 + ], + "source": "registry-stack/crates/registry-evidence-oid4vp/src/problem.rs", + "source_reference": { + "repository": "registry-stack", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + } + }, + { + "product": "registry-evidence-oid4vp", + "code": "request-timeout", + "path": "request-timeout", + "title": "Request Timeout", + "description": "The request took longer than the service waits.", + "kind": "problem", + "status": "active", + "compatibility_line": "v1alpha1", + "owner": "evidence", + "http_statuses": [ + 408 + ], + "source": "registry-stack/crates/registry-evidence-oid4vp/src/problem.rs", + "source_reference": { + "repository": "registry-stack", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + } + }, + { + "product": "registry-evidence-oid4vp", + "code": "session-not-found", + "path": "session-not-found", + "title": "Not Found", + "description": "The session is unknown, expired, already read, or created by another principal.", + "kind": "problem", + "status": "active", + "compatibility_line": "v1alpha1", + "owner": "evidence", + "http_statuses": [ + 404 + ], + "source": "registry-stack/crates/registry-evidence-oid4vp/src/problem.rs", + "source_reference": { + "repository": "registry-stack", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + } + }, + { + "product": "registry-evidence-oid4vp", + "code": "unauthorized", + "path": "unauthorized", + "title": "Unauthorized", + "description": "A valid bearer token is required.", + "kind": "problem", + "status": "active", + "compatibility_line": "v1alpha1", + "owner": "evidence", + "http_statuses": [ + 401 + ], + "source": "registry-stack/crates/registry-evidence-oid4vp/src/problem.rs", + "source_reference": { + "repository": "registry-stack", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + } + }, + { + "product": "registry-evidence-oid4vp", + "code": "unknown-policy", + "path": "unknown-policy", + "title": "Unknown Policy", + "description": "No presentation policy has the identifier given.", + "kind": "problem", + "status": "active", + "compatibility_line": "v1alpha1", + "owner": "evidence", + "http_statuses": [ + 422 + ], + "source": "registry-stack/crates/registry-evidence-oid4vp/src/problem.rs", + "source_reference": { + "repository": "registry-stack", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + } + }, + { + "product": "registry-evidence-oid4vp", + "code": "unsupported-media-type", + "path": "unsupported-media-type", + "title": "Unsupported Media Type", + "description": "The request body is not application/json.", + "kind": "problem", + "status": "active", + "compatibility_line": "v1alpha1", + "owner": "evidence", + "http_statuses": [ + 415 + ], + "source": "registry-stack/crates/registry-evidence-oid4vp/src/problem.rs", + "source_reference": { + "repository": "registry-stack", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + } + }, + { + "product": "registry-evidence-oid4vp", + "code": "wallet-error", + "path": "wallet-error", + "title": "Wallet Error", + "description": "The wallet reported an error instead of presenting. The closed category names it.", + "kind": "problem", + "status": "active", + "compatibility_line": "v1alpha1", + "owner": "evidence", + "http_statuses": [ + 422 + ], + "source": "registry-stack/crates/registry-evidence-oid4vp/src/problem.rs", + "source_reference": { + "repository": "registry-stack", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + } + }, { "product": "registry-evidence", "code": "auth.invalid_credential", @@ -3420,7 +3777,7 @@ "source": "registry-stack/crates/registry-evidence/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-evidence/src/problem.rs", "sha256": "09e2898f19ebef1f3bf4699280261a4c7549b05eb9f8d30dba60ab2973bc06f9" } @@ -3441,7 +3798,7 @@ "source": "registry-stack/crates/registry-evidence/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-evidence/src/problem.rs", "sha256": "09e2898f19ebef1f3bf4699280261a4c7549b05eb9f8d30dba60ab2973bc06f9" } @@ -3483,7 +3840,7 @@ "source": "registry-stack/crates/registry-evidence/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-evidence/src/problem.rs", "sha256": "09e2898f19ebef1f3bf4699280261a4c7549b05eb9f8d30dba60ab2973bc06f9" } @@ -3525,7 +3882,7 @@ "source": "registry-stack/crates/registry-evidence/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-evidence/src/problem.rs", "sha256": "09e2898f19ebef1f3bf4699280261a4c7549b05eb9f8d30dba60ab2973bc06f9" } @@ -3546,7 +3903,7 @@ "source": "registry-stack/crates/registry-evidence/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-evidence/src/problem.rs", "sha256": "09e2898f19ebef1f3bf4699280261a4c7549b05eb9f8d30dba60ab2973bc06f9" } @@ -3567,7 +3924,7 @@ "source": "registry-stack/crates/registry-evidence/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-evidence/src/problem.rs", "sha256": "09e2898f19ebef1f3bf4699280261a4c7549b05eb9f8d30dba60ab2973bc06f9" } @@ -3609,7 +3966,7 @@ "source": "registry-stack/crates/registry-evidence/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-evidence/src/problem.rs", "sha256": "09e2898f19ebef1f3bf4699280261a4c7549b05eb9f8d30dba60ab2973bc06f9" } @@ -3651,7 +4008,7 @@ "source": "registry-stack/crates/registry-evidence/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-evidence/src/problem.rs", "sha256": "09e2898f19ebef1f3bf4699280261a4c7549b05eb9f8d30dba60ab2973bc06f9" } @@ -3672,7 +4029,7 @@ "source": "registry-stack/crates/registry-evidence/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-evidence/src/problem.rs", "sha256": "09e2898f19ebef1f3bf4699280261a4c7549b05eb9f8d30dba60ab2973bc06f9" } @@ -3693,7 +4050,7 @@ "source": "registry-stack/crates/registry-evidence/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-evidence/src/problem.rs", "sha256": "09e2898f19ebef1f3bf4699280261a4c7549b05eb9f8d30dba60ab2973bc06f9" } @@ -3714,7 +4071,7 @@ "source": "registry-stack/crates/registry-messaging-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -3735,7 +4092,7 @@ "source": "registry-stack/crates/registry-messaging-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -3756,7 +4113,7 @@ "source": "registry-stack/crates/registry-messaging-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -3777,7 +4134,7 @@ "source": "registry-stack/crates/registry-messaging-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -3798,7 +4155,7 @@ "source": "registry-stack/crates/registry-messaging-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -3819,7 +4176,7 @@ "source": "registry-stack/crates/registry-messaging-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -3840,7 +4197,7 @@ "source": "registry-stack/crates/registry-messaging-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -3861,7 +4218,7 @@ "source": "registry-stack/crates/registry-messaging-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -3882,7 +4239,7 @@ "source": "registry-stack/crates/registry-messaging-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -3903,7 +4260,7 @@ "source": "registry-stack/crates/registry-messaging-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -3924,7 +4281,7 @@ "source": "registry-stack/crates/registry-messaging-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -3945,7 +4302,7 @@ "source": "registry-stack/crates/registry-messaging-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -3966,7 +4323,7 @@ "source": "registry-stack/crates/registry-messaging-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -3987,7 +4344,7 @@ "source": "registry-stack/crates/registry-messaging-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -4008,7 +4365,7 @@ "source": "registry-stack/crates/registry-messaging-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -4029,7 +4386,7 @@ "source": "registry-stack/crates/registry-messaging-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -4050,7 +4407,7 @@ "source": "registry-stack/crates/registry-messaging-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -4071,7 +4428,7 @@ "source": "registry-stack/crates/registry-messaging-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -4092,7 +4449,7 @@ "source": "registry-stack/crates/registry-messaging-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -4113,7 +4470,7 @@ "source": "registry-stack/crates/registry-messaging-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -4134,7 +4491,7 @@ "source": "registry-stack/crates/registry-messaging-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -4155,7 +4512,7 @@ "source": "registry-stack/crates/registry-messaging-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -4176,7 +4533,7 @@ "source": "registry-stack/crates/registry-messaging-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -4197,7 +4554,7 @@ "source": "registry-stack/crates/registry-messaging-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -4218,7 +4575,7 @@ "source": "registry-stack/crates/registry-messaging-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -4239,7 +4596,7 @@ "source": "registry-stack/crates/registry-messaging-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -4260,7 +4617,7 @@ "source": "registry-stack/crates/registry-messaging-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -8095,7 +8452,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8116,7 +8473,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8137,7 +8494,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8158,7 +8515,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8179,7 +8536,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8200,7 +8557,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8221,7 +8578,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8242,7 +8599,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8263,7 +8620,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8284,7 +8641,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8305,7 +8662,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8326,7 +8683,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8347,7 +8704,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8368,7 +8725,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8389,7 +8746,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8410,7 +8767,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8431,7 +8788,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8452,7 +8809,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8473,7 +8830,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8494,7 +8851,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8515,7 +8872,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8536,7 +8893,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8557,7 +8914,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8578,7 +8935,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8599,7 +8956,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8620,7 +8977,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8641,7 +8998,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8662,7 +9019,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8683,7 +9040,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8704,7 +9061,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8725,7 +9082,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8746,7 +9103,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8767,7 +9124,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/src/catalogs/profiles.json b/src/catalogs/profiles.json index 756f40450..c7f14ef91 100644 --- a/src/catalogs/profiles.json +++ b/src/catalogs/profiles.json @@ -11,7 +11,7 @@ "source": "src/artifacts/sha256/24d0950eb2c1a76d5005850e1145f675ad65df5231867907b41d11fdd2979cdc.jsonld", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "products/breg/contracts/odrl-profile.jsonld", "sha256": "24d0950eb2c1a76d5005850e1145f675ad65df5231867907b41d11fdd2979cdc" }, @@ -30,7 +30,7 @@ "source": "src/artifacts/sha256/c8685157d8e2982b00657a2a3b2fe729cf54792d76134cf22aa1be1cc7abf4a8.md", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "products/registry-record/profile/registry-record-v1.md", "sha256": "c8685157d8e2982b00657a2a3b2fe729cf54792d76134cf22aa1be1cc7abf4a8" }, diff --git a/src/catalogs/schemas.json b/src/catalogs/schemas.json index 3ac1f4ab3..b2713f399 100644 --- a/src/catalogs/schemas.json +++ b/src/catalogs/schemas.json @@ -11,7 +11,7 @@ "source": "src/artifacts/sha256/7d694df0140e03e1a4c1e6a564e52d69a7d334b9e0063d8aeded24d28b83d182.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/proposal_hooks.rs", "sha256": "02fe083f3d06c107298847923f42c0036ee98d5ba12347e527e886c0cedd2178" }, @@ -29,9 +29,9 @@ "source": "src/artifacts/sha256/5bfd55b2ccee480035ee9db13b8fb3a99ac5a2e9cd01645fdda8dfeb593eb688.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-adapterctl/src/schemas.rs", - "sha256": "ee38dfe66d555d580545cec1b5d8e4148d1d108d194d5680c3dca63bbfbfd7c9" + "sha256": "4d73d31f4f7e2221fc7bfcdbb5eaa36c1e675fdfd2372721518fb760f35e13bd" }, "artifact_sha256": "5bfd55b2ccee480035ee9db13b8fb3a99ac5a2e9cd01645fdda8dfeb593eb688", "immutable_uri": "https://id.registrystack.org/artifacts/sha256/5bfd55b2ccee480035ee9db13b8fb3a99ac5a2e9cd01645fdda8dfeb593eb688.json" @@ -47,9 +47,9 @@ "source": "src/artifacts/sha256/ca14df9aafa49fd2018a12869e54f4058e29de07f01c0cbc0dd13f069649bcc9.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-adapterctl/src/schemas.rs", - "sha256": "ee38dfe66d555d580545cec1b5d8e4148d1d108d194d5680c3dca63bbfbfd7c9" + "sha256": "4d73d31f4f7e2221fc7bfcdbb5eaa36c1e675fdfd2372721518fb760f35e13bd" }, "artifact_sha256": "ca14df9aafa49fd2018a12869e54f4058e29de07f01c0cbc0dd13f069649bcc9", "immutable_uri": "https://id.registrystack.org/artifacts/sha256/ca14df9aafa49fd2018a12869e54f4058e29de07f01c0cbc0dd13f069649bcc9.json" @@ -62,15 +62,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "adapter", - "source": "src/artifacts/sha256/c1be1e7bc8efa01de429ea5a5cd7c19da49d9766d71839602a0e81cecc447d8b.json", + "source": "src/artifacts/sha256/d68323a93d34904b5bc49870512e03baf519fd86b2a88078df69e68ee417242f.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-adapterctl/src/schemas.rs", - "sha256": "ee38dfe66d555d580545cec1b5d8e4148d1d108d194d5680c3dca63bbfbfd7c9" + "sha256": "4d73d31f4f7e2221fc7bfcdbb5eaa36c1e675fdfd2372721518fb760f35e13bd" }, - "artifact_sha256": "c1be1e7bc8efa01de429ea5a5cd7c19da49d9766d71839602a0e81cecc447d8b", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/c1be1e7bc8efa01de429ea5a5cd7c19da49d9766d71839602a0e81cecc447d8b.json" + "artifact_sha256": "d68323a93d34904b5bc49870512e03baf519fd86b2a88078df69e68ee417242f", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/d68323a93d34904b5bc49870512e03baf519fd86b2a88078df69e68ee417242f.json" }, { "uri": "https://id.registrystack.org/schemas/adapter/job/job.v1alpha1.schema.json", @@ -80,15 +80,33 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "adapter", - "source": "src/artifacts/sha256/38818527ae8cf4435485ea3f283af51b41c4d1d1e0e26d04ab3e59c158c150a7.json", + "source": "src/artifacts/sha256/f1a66ef70359e4078ee3ae3426d378d65fbb62ab2f64545081d3d4973a8b28ad.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-adapterctl/src/schemas.rs", - "sha256": "ee38dfe66d555d580545cec1b5d8e4148d1d108d194d5680c3dca63bbfbfd7c9" + "sha256": "4d73d31f4f7e2221fc7bfcdbb5eaa36c1e675fdfd2372721518fb760f35e13bd" }, - "artifact_sha256": "38818527ae8cf4435485ea3f283af51b41c4d1d1e0e26d04ab3e59c158c150a7", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/38818527ae8cf4435485ea3f283af51b41c4d1d1e0e26d04ab3e59c158c150a7.json" + "artifact_sha256": "f1a66ef70359e4078ee3ae3426d378d65fbb62ab2f64545081d3d4973a8b28ad", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/f1a66ef70359e4078ee3ae3426d378d65fbb62ab2f64545081d3d4973a8b28ad.json" + }, + { + "uri": "https://id.registrystack.org/schemas/adapter/mapping/mapping.v1alpha1.schema.json", + "title": "Registry Adapter mapping model", + "description": "Registry Adapter project, profile, pack, fixture, runtime configuration, ingestion job, job runtime configuration, and effective contract JSON Schema.", + "kind": "schema", + "status": "active", + "compatibility_line": "v1alpha1", + "owner": "adapter", + "source": "src/artifacts/sha256/1a713af021f69a27c5c7f58b22464cd227972173f9935b2fc3a0a48eda51e6f5.json", + "source_reference": { + "repository": "registry-stack", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", + "path": "crates/registry-adapterctl/src/schemas.rs", + "sha256": "4d73d31f4f7e2221fc7bfcdbb5eaa36c1e675fdfd2372721518fb760f35e13bd" + }, + "artifact_sha256": "1a713af021f69a27c5c7f58b22464cd227972173f9935b2fc3a0a48eda51e6f5", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/1a713af021f69a27c5c7f58b22464cd227972173f9935b2fc3a0a48eda51e6f5.json" }, { "uri": "https://id.registrystack.org/schemas/adapter/pack/pack.v1alpha1.schema.json", @@ -98,15 +116,33 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "adapter", - "source": "src/artifacts/sha256/6031baaabca785fe6e0adfed4336fa555839e18ae1a3136cf3e895ad5e6f6dcb.json", + "source": "src/artifacts/sha256/a8d908e534dffcbeee5b1e3352007a4205e0a4614c64a24fd22130f59f0ff264.json", + "source_reference": { + "repository": "registry-stack", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", + "path": "crates/registry-adapterctl/src/schemas.rs", + "sha256": "4d73d31f4f7e2221fc7bfcdbb5eaa36c1e675fdfd2372721518fb760f35e13bd" + }, + "artifact_sha256": "a8d908e534dffcbeee5b1e3352007a4205e0a4614c64a24fd22130f59f0ff264", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/a8d908e534dffcbeee5b1e3352007a4205e0a4614c64a24fd22130f59f0ff264.json" + }, + { + "uri": "https://id.registrystack.org/schemas/adapter/preview-expectations/preview-expectations.v1alpha1.schema.json", + "title": "Registry Adapter preview expectations", + "description": "Registry Adapter project, profile, pack, fixture, runtime configuration, ingestion job, job runtime configuration, and effective contract JSON Schema.", + "kind": "schema", + "status": "active", + "compatibility_line": "v1alpha1", + "owner": "adapter", + "source": "src/artifacts/sha256/05ca00c30b9126084ea5d52e17db5002f7afb46e9aceac121fe42489afc5caa1.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-adapterctl/src/schemas.rs", - "sha256": "ee38dfe66d555d580545cec1b5d8e4148d1d108d194d5680c3dca63bbfbfd7c9" + "sha256": "4d73d31f4f7e2221fc7bfcdbb5eaa36c1e675fdfd2372721518fb760f35e13bd" }, - "artifact_sha256": "6031baaabca785fe6e0adfed4336fa555839e18ae1a3136cf3e895ad5e6f6dcb", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/6031baaabca785fe6e0adfed4336fa555839e18ae1a3136cf3e895ad5e6f6dcb.json" + "artifact_sha256": "05ca00c30b9126084ea5d52e17db5002f7afb46e9aceac121fe42489afc5caa1", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/05ca00c30b9126084ea5d52e17db5002f7afb46e9aceac121fe42489afc5caa1.json" }, { "uri": "https://id.registrystack.org/schemas/adapter/profile/profile.v1alpha1.schema.json", @@ -119,9 +155,9 @@ "source": "src/artifacts/sha256/8032fd67f82f517cade8e55c4d3972bc5481a957b84a4cb70b3f40f82ac970d3.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-adapterctl/src/schemas.rs", - "sha256": "ee38dfe66d555d580545cec1b5d8e4148d1d108d194d5680c3dca63bbfbfd7c9" + "sha256": "4d73d31f4f7e2221fc7bfcdbb5eaa36c1e675fdfd2372721518fb760f35e13bd" }, "artifact_sha256": "8032fd67f82f517cade8e55c4d3972bc5481a957b84a4cb70b3f40f82ac970d3", "immutable_uri": "https://id.registrystack.org/artifacts/sha256/8032fd67f82f517cade8e55c4d3972bc5481a957b84a4cb70b3f40f82ac970d3.json" @@ -134,15 +170,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "adapter", - "source": "src/artifacts/sha256/2a31e088e66073cf94b5d3769aebbeef3552cafa59c2281405be83ccd5390435.json", + "source": "src/artifacts/sha256/5660a447be61398747639c2e0ecde3b0e355c29d4ff454209d3041cd02f5d1a5.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-adapterctl/src/schemas.rs", - "sha256": "ee38dfe66d555d580545cec1b5d8e4148d1d108d194d5680c3dca63bbfbfd7c9" + "sha256": "4d73d31f4f7e2221fc7bfcdbb5eaa36c1e675fdfd2372721518fb760f35e13bd" }, - "artifact_sha256": "2a31e088e66073cf94b5d3769aebbeef3552cafa59c2281405be83ccd5390435", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/2a31e088e66073cf94b5d3769aebbeef3552cafa59c2281405be83ccd5390435.json" + "artifact_sha256": "5660a447be61398747639c2e0ecde3b0e355c29d4ff454209d3041cd02f5d1a5", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/5660a447be61398747639c2e0ecde3b0e355c29d4ff454209d3041cd02f5d1a5.json" }, { "uri": "https://id.registrystack.org/schemas/adapter/runtime/runtime.v1alpha1.schema.json", @@ -152,15 +188,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "adapter", - "source": "src/artifacts/sha256/169ce8657f2ab5a3140216b6aeeeaaaf7dfcea0f508364a76de142b93c6a0a14.json", + "source": "src/artifacts/sha256/4a62c7dd8399bd3a5991efb203a34310918bad17a95b8a74c7784e6486ae6f21.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-adapterctl/src/schemas.rs", - "sha256": "ee38dfe66d555d580545cec1b5d8e4148d1d108d194d5680c3dca63bbfbfd7c9" + "sha256": "4d73d31f4f7e2221fc7bfcdbb5eaa36c1e675fdfd2372721518fb760f35e13bd" }, - "artifact_sha256": "169ce8657f2ab5a3140216b6aeeeaaaf7dfcea0f508364a76de142b93c6a0a14", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/169ce8657f2ab5a3140216b6aeeeaaaf7dfcea0f508364a76de142b93c6a0a14.json" + "artifact_sha256": "4a62c7dd8399bd3a5991efb203a34310918bad17a95b8a74c7784e6486ae6f21", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/4a62c7dd8399bd3a5991efb203a34310918bad17a95b8a74c7784e6486ae6f21.json" }, { "uri": "https://id.registrystack.org/schemas/breg/access-explanation/access-explanation.v1alpha4.schema.json", @@ -245,7 +281,7 @@ "source": "src/artifacts/sha256/e9bae5707ef92498b162083958fc0af4c1c043e74eec71252259e70bab88b73d.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "products/breg/contracts/explain/AccessExplanation.schema.json", "sha256": "e9bae5707ef92498b162083958fc0af4c1c043e74eec71252259e70bab88b73d" }, @@ -263,7 +299,7 @@ "source": "src/artifacts/sha256/18b0b088010cf8ddacae0ffaada4defe030e67eb1fb05c4b282e03ecf62a29a8.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "products/breg/contracts/explain/AccessPreview.schema.json", "sha256": "18b0b088010cf8ddacae0ffaada4defe030e67eb1fb05c4b282e03ecf62a29a8" }, @@ -281,7 +317,7 @@ "source": "src/artifacts/sha256/5e2e840d023549e7184ace57e19928c29c90e5601a84ed1bf86b1a03f0f08948.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/artifacts.rs", "sha256": "8e7e1c82cc1ddb3bc1d41866c812c2ff7d0007d0b57b83422260681ff549e795" }, @@ -353,7 +389,7 @@ "source": "src/artifacts/sha256/d0263a9335d657c23078e5190210f580db884a0608bd6591daebfcb2447a7bbd.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "products/breg/contracts/explain/ActionsExplanation.schema.json", "sha256": "d0263a9335d657c23078e5190210f580db884a0608bd6591daebfcb2447a7bbd" }, @@ -407,7 +443,7 @@ "source": "src/artifacts/sha256/f52ad0028a6479717062d38de052df5c1d8e1b0c8b63c478980a3897cc2675cd.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-bregctl/src/tool_schema.rs", "sha256": "28567d54120dd29d734ddcd3e10c4c6ee128eb7b2d195e4c77bd1cd6c9bc5cfd" }, @@ -443,7 +479,7 @@ "source": "src/artifacts/sha256/5020d8c8d12191760b03bfd268a0f11a8a88b7bc06982063573b7e48c9950fae.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-bregctl/src/tool_schema.rs", "sha256": "28567d54120dd29d734ddcd3e10c4c6ee128eb7b2d195e4c77bd1cd6c9bc5cfd" }, @@ -461,7 +497,7 @@ "source": "src/artifacts/sha256/52b076a8325b63e0bcaffb71d348e0239cea4d48be094100a018ef8a819fdab5.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "products/breg/contracts/event-record-view/EventRecordView.schema.json", "sha256": "52b076a8325b63e0bcaffb71d348e0239cea4d48be094100a018ef8a819fdab5" }, @@ -497,7 +533,7 @@ "source": "src/artifacts/sha256/13bb8f2e95d3244f368dccb5ea2c9779ad14a7b3f4661f61487cf56f983b2d45.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "products/breg/contracts/explain/EventsExplanation.schema.json", "sha256": "13bb8f2e95d3244f368dccb5ea2c9779ad14a7b3f4661f61487cf56f983b2d45" }, @@ -515,7 +551,7 @@ "source": "src/artifacts/sha256/ea3e859161f961767bc44b463a025feefc17662dd31fa7ba4c67f71b0188f1bc.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-bregctl/src/tool_schema.rs", "sha256": "28567d54120dd29d734ddcd3e10c4c6ee128eb7b2d195e4c77bd1cd6c9bc5cfd" }, @@ -533,7 +569,7 @@ "source": "src/artifacts/sha256/10006d4e4cd3b8ef2d9e742793967293c7bbdca89a8c11676310a7c4f4c1adc8.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-bregctl/src/tool_schema.rs", "sha256": "28567d54120dd29d734ddcd3e10c4c6ee128eb7b2d195e4c77bd1cd6c9bc5cfd" }, @@ -605,7 +641,7 @@ "source": "src/artifacts/sha256/738c5151b6085ee5a5da8d60334f70b179e740bc1af9cb2888325436c338d546.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "products/breg/contracts/explain/LifecycleExplanation.schema.json", "sha256": "738c5151b6085ee5a5da8d60334f70b179e740bc1af9cb2888325436c338d546" }, @@ -623,7 +659,7 @@ "source": "src/artifacts/sha256/34d05bd2adc4b41a65becd76fa288943d2636b7b60e4cfaf17c026dbd962b0f1.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg-mcp/src/schema.rs", "sha256": "3e23892d238d9ae9f0fe5b88af8ff394e07891dec5d9c60fb04026c08edce6c2" }, @@ -638,15 +674,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "breg", - "source": "src/artifacts/sha256/8177563ac1261680db7070b59f8b651d1cfe8c33cb5423891902bab4d5f8173e.json", + "source": "src/artifacts/sha256/a21e02c4ca6980e0eb4dc733b99b1fdb465aec8fa1c661ec70e86d71d4146e06.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-bregctl/src/tool_schema.rs", "sha256": "28567d54120dd29d734ddcd3e10c4c6ee128eb7b2d195e4c77bd1cd6c9bc5cfd" }, - "artifact_sha256": "8177563ac1261680db7070b59f8b651d1cfe8c33cb5423891902bab4d5f8173e", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/8177563ac1261680db7070b59f8b651d1cfe8c33cb5423891902bab4d5f8173e.json" + "artifact_sha256": "a21e02c4ca6980e0eb4dc733b99b1fdb465aec8fa1c661ec70e86d71d4146e06", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/a21e02c4ca6980e0eb4dc733b99b1fdb465aec8fa1c661ec70e86d71d4146e06.json" }, { "uri": "https://id.registrystack.org/schemas/breg/model-explanation/model-explanation.v1alpha4.schema.json", @@ -713,7 +749,7 @@ "source": "src/artifacts/sha256/c5c5461590e22ba0896a312e9235ad707c066b803c14759f34d402c186823797.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "products/breg/contracts/explain/ModelExplanation.schema.json", "sha256": "c5c5461590e22ba0896a312e9235ad707c066b803c14759f34d402c186823797" }, @@ -731,7 +767,7 @@ "source": "src/artifacts/sha256/975478df7cdc216115fcf370f1478ffc3309c6ac6ae47f79be1c8b358c90dd7e.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-bregctl/src/tool_schema.rs", "sha256": "28567d54120dd29d734ddcd3e10c4c6ee128eb7b2d195e4c77bd1cd6c9bc5cfd" }, @@ -746,15 +782,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "breg", - "source": "src/artifacts/sha256/9949f5e3a10d4deb0038359d76d1f59b160449472bcd0b6c99e45ad776d20f80.json", + "source": "src/artifacts/sha256/2948465f69e8dd8856e245826adb47addbb0b0b3ae5a4a3eece660dfa77ba060.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/schema.rs", "sha256": "72890db9bee57302bf2dcca70dd6629c24bcd9634414fc507e218fd52daed9f9" }, - "artifact_sha256": "9949f5e3a10d4deb0038359d76d1f59b160449472bcd0b6c99e45ad776d20f80", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/9949f5e3a10d4deb0038359d76d1f59b160449472bcd0b6c99e45ad776d20f80.json" + "artifact_sha256": "2948465f69e8dd8856e245826adb47addbb0b0b3ae5a4a3eece660dfa77ba060", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/2948465f69e8dd8856e245826adb47addbb0b0b3ae5a4a3eece660dfa77ba060.json" }, { "uri": "https://id.registrystack.org/schemas/breg/project/project.v1alpha1.schema.json", @@ -764,15 +800,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "breg", - "source": "src/artifacts/sha256/4babace1053c7b8446b682ce2db17a220263e669b397a414d98ead9d47af459a.json", + "source": "src/artifacts/sha256/cab7ff0a619109662b006d87d211743af4a9cc64977c0f01b64889e691d24a84.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/schema.rs", "sha256": "72890db9bee57302bf2dcca70dd6629c24bcd9634414fc507e218fd52daed9f9" }, - "artifact_sha256": "4babace1053c7b8446b682ce2db17a220263e669b397a414d98ead9d47af459a", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/4babace1053c7b8446b682ce2db17a220263e669b397a414d98ead9d47af459a.json" + "artifact_sha256": "cab7ff0a619109662b006d87d211743af4a9cc64977c0f01b64889e691d24a84", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/cab7ff0a619109662b006d87d211743af4a9cc64977c0f01b64889e691d24a84.json" }, { "uri": "https://id.registrystack.org/schemas/breg/proposals-explanation/proposals-explanation.v1alpha1.schema.json", @@ -821,7 +857,7 @@ "source": "src/artifacts/sha256/809cf2a9a47ab9ba73dd108671963982724f8c9852f5c3ff904496704d0c8357.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "products/breg/contracts/explain/ProposalsExplanation.schema.json", "sha256": "809cf2a9a47ab9ba73dd108671963982724f8c9852f5c3ff904496704d0c8357" }, @@ -857,7 +893,7 @@ "source": "src/artifacts/sha256/c30a70ce60b1946e6eb3cd0ebf1267841c97be81115f61e0bbf713262bfd59a3.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "products/breg/contracts/explain/QueriesExplanation.schema.json", "sha256": "c30a70ce60b1946e6eb3cd0ebf1267841c97be81115f61e0bbf713262bfd59a3" }, @@ -875,7 +911,7 @@ "source": "src/artifacts/sha256/1c547522ee09c598590eaa302615aaabb5e5628516f85f2f5558989af25210b1.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg-review/src/schema.rs", "sha256": "88a916f23e3a50eb7f392a708ce6b089ffbb51b98e5cf102eccfc2e753da8814" }, @@ -911,7 +947,7 @@ "source": "src/artifacts/sha256/1d26b2aee434f0e83ef227e9a502912e72f4ce60510852db5b9d6be1554a6f83.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "products/breg/contracts/explain/RoutesExplanation.schema.json", "sha256": "1d26b2aee434f0e83ef227e9a502912e72f4ce60510852db5b9d6be1554a6f83" }, @@ -926,15 +962,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "breg", - "source": "src/artifacts/sha256/55959ae4cc86f1cd393cca382d7cdfd367ccc703c8676a350af4299b59ebb043.json", + "source": "src/artifacts/sha256/785867b4f14c78862010b53406f62a420e53c4b17d5c8b9f7f95636130b75bd4.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-breg/src/schema.rs", "sha256": "72890db9bee57302bf2dcca70dd6629c24bcd9634414fc507e218fd52daed9f9" }, - "artifact_sha256": "55959ae4cc86f1cd393cca382d7cdfd367ccc703c8676a350af4299b59ebb043", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/55959ae4cc86f1cd393cca382d7cdfd367ccc703c8676a350af4299b59ebb043.json" + "artifact_sha256": "785867b4f14c78862010b53406f62a420e53c4b17d5c8b9f7f95636130b75bd4", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/785867b4f14c78862010b53406f62a420e53c4b17d5c8b9f7f95636130b75bd4.json" }, { "uri": "https://id.registrystack.org/schemas/breg/schema-test-credentials/schema-test-credentials.v1.schema.json", @@ -947,7 +983,7 @@ "source": "src/artifacts/sha256/598f916ebbe176797484afdd5d55165e6567d39bd0094b6876e5419908e0b78c.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-bregctl/src/tool_schema.rs", "sha256": "28567d54120dd29d734ddcd3e10c4c6ee128eb7b2d195e4c77bd1cd6c9bc5cfd" }, @@ -1037,7 +1073,7 @@ "source": "src/artifacts/sha256/2481544f84d61d0bd21ba44e31e7bdefcbf9e10b12d3b103fc100ebead1e346e.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-caseworkctl/src/schema.rs", "sha256": "4f5378799ebb3a0f65b82eff6f654d8323679bf147214eb68c821bbd6c94733a" }, @@ -1181,7 +1217,7 @@ "source": "src/artifacts/sha256/b9158ab194325cbd1a807922d07d35f4616eff823d9b1c76892e73f330443cdd.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework-core/src/schema.rs", "sha256": "1604cf79433172ea4553b2f56365ea9e999a515aa3f16d60959cc652972ae185" }, @@ -1196,15 +1232,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "casework", - "source": "src/artifacts/sha256/7131a57da2c495a5f2142ab5e682e6b95cfda65a2e60d743c15c5c0c00b175dd.json", + "source": "src/artifacts/sha256/3fef758cd53950ea9cef953dca6c2364188eddff2978695c70fd88237d451ece.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework-core/src/schema.rs", "sha256": "1604cf79433172ea4553b2f56365ea9e999a515aa3f16d60959cc652972ae185" }, - "artifact_sha256": "7131a57da2c495a5f2142ab5e682e6b95cfda65a2e60d743c15c5c0c00b175dd", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/7131a57da2c495a5f2142ab5e682e6b95cfda65a2e60d743c15c5c0c00b175dd.json" + "artifact_sha256": "3fef758cd53950ea9cef953dca6c2364188eddff2978695c70fd88237d451ece", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/3fef758cd53950ea9cef953dca6c2364188eddff2978695c70fd88237d451ece.json" }, { "uri": "https://id.registrystack.org/schemas/casework/init-report/init-report.v1alpha3.schema.json", @@ -1286,15 +1322,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "casework", - "source": "src/artifacts/sha256/618dd00144eced267ce239c8412381a555e488af08cb7d6936e63dd963463b0a.json", + "source": "src/artifacts/sha256/87a1a61127de6eb20c130f17b2d804c8b209c7343e7e4275f480f37833b83fcf.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework-core/src/schema.rs", "sha256": "1604cf79433172ea4553b2f56365ea9e999a515aa3f16d60959cc652972ae185" }, - "artifact_sha256": "618dd00144eced267ce239c8412381a555e488af08cb7d6936e63dd963463b0a", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/618dd00144eced267ce239c8412381a555e488af08cb7d6936e63dd963463b0a.json" + "artifact_sha256": "87a1a61127de6eb20c130f17b2d804c8b209c7343e7e4275f480f37833b83fcf", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/87a1a61127de6eb20c130f17b2d804c8b209c7343e7e4275f480f37833b83fcf.json" }, { "uri": "https://id.registrystack.org/schemas/casework/report/report.v1alpha1.schema.json", @@ -1322,15 +1358,15 @@ "status": "active", "compatibility_line": "v1alpha2", "owner": "casework", - "source": "src/artifacts/sha256/9d026bf36a11bc83493f835f028ff52092e0f6c4cd42b471024ead336b6d8a9e.json", + "source": "src/artifacts/sha256/2cbf5e3d2fd943abfa3777b63f204feac0dc0f5c02241a121aa3a135f3d420c7.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "products/casework/scripts/generate_cli_schemas.py", "sha256": "1af0958150a6476245c5019f6bc55ae2b3fbe87e88b43900bb75cac4786f0674" }, - "artifact_sha256": "9d026bf36a11bc83493f835f028ff52092e0f6c4cd42b471024ead336b6d8a9e", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/9d026bf36a11bc83493f835f028ff52092e0f6c4cd42b471024ead336b6d8a9e.json" + "artifact_sha256": "2cbf5e3d2fd943abfa3777b63f204feac0dc0f5c02241a121aa3a135f3d420c7", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/2cbf5e3d2fd943abfa3777b63f204feac0dc0f5c02241a121aa3a135f3d420c7.json" }, { "uri": "https://id.registrystack.org/schemas/casework/retention-erase-report/retention-erase-report.v1alpha3.schema.json", @@ -1361,7 +1397,7 @@ "source": "src/artifacts/sha256/ef82e91c0f0c3366bd62967be8453e90920341c246a6d05f56e4b4b4b8eb85b0.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-casework/src/schema.rs", "sha256": "47d65004647fa541fef411bd213072d25a35384d5e48d03f8fdb51e5569e1bf8" }, @@ -1484,15 +1520,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "coordinator", - "source": "src/artifacts/sha256/472c4861ab27a301f077784e63cd06891ef4b73813aab1dd802c567daac70d16.json", + "source": "src/artifacts/sha256/b22c06678f15e4a5aa028df61819cde8d37ce2311e1249a3a8fcc18d00aa3eab.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/authoring.rs", - "sha256": "ae097b5904283e2c57ae726020a6376fe02b975391df284e67e08e5b3ddaf64c" + "sha256": "032aa502fa63b5e7fe1cfb8f400be84d0802637409ac82ddf9f40152c482b91f" }, - "artifact_sha256": "472c4861ab27a301f077784e63cd06891ef4b73813aab1dd802c567daac70d16", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/472c4861ab27a301f077784e63cd06891ef4b73813aab1dd802c567daac70d16.json" + "artifact_sha256": "b22c06678f15e4a5aa028df61819cde8d37ce2311e1249a3a8fcc18d00aa3eab", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/b22c06678f15e4a5aa028df61819cde8d37ce2311e1249a3a8fcc18d00aa3eab.json" }, { "uri": "https://id.registrystack.org/schemas/coordinator/runtime/runtime.v1alpha1.schema.json", @@ -1502,15 +1538,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "coordinator", - "source": "src/artifacts/sha256/bbbc49cc6aa19d2b6329db459ac7d5c8635583e2a0ca63f2d75556840a804202.json", + "source": "src/artifacts/sha256/9d68a7c21821319603e16c3fb1a381e206a4f488a3eae95c9544180004ae2ea3.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/runtime.rs", "sha256": "e544e9afbc39d84d18936d8ea1fffd903ebd94121db10d142394fa5d02ec5916" }, - "artifact_sha256": "bbbc49cc6aa19d2b6329db459ac7d5c8635583e2a0ca63f2d75556840a804202", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/bbbc49cc6aa19d2b6329db459ac7d5c8635583e2a0ca63f2d75556840a804202.json" + "artifact_sha256": "9d68a7c21821319603e16c3fb1a381e206a4f488a3eae95c9544180004ae2ea3", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/9d68a7c21821319603e16c3fb1a381e206a4f488a3eae95c9544180004ae2ea3.json" }, { "uri": "https://id.registrystack.org/schemas/coordinator/scenarios/scenarios.v1alpha1.schema.json", @@ -1523,7 +1559,7 @@ "source": "src/artifacts/sha256/e42e044eb828ff7e12f0a199fc95065c04baeadf91773c2d28ba9a1b0252090e.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-coordinator/src/scenarios.rs", "sha256": "e20158e5382f690d46879161f32b5adda80385767b2c99b6efb11f166d43a394" }, @@ -1541,7 +1577,7 @@ "source": "src/artifacts/sha256/47cbeecaaa07a52b0af259faff736b4e32e6a0c1ed674634b4cc6815cb369fd4.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "products/discovery/schemas/evidence-mapping.schema.json", "sha256": "47cbeecaaa07a52b0af259faff736b4e32e6a0c1ed674634b4cc6815cb369fd4" }, @@ -1559,7 +1595,7 @@ "source": "src/artifacts/sha256/97014247dcc83bc148d355a5e56ffaf8ab0a522cd0f462c93a97fda19bcb6ffc.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "products/discovery/schemas/index.schema.json", "sha256": "97014247dcc83bc148d355a5e56ffaf8ab0a522cd0f462c93a97fda19bcb6ffc" }, @@ -1577,7 +1613,7 @@ "source": "src/artifacts/sha256/19f90f5a2f87b250dcd54d16fe1810fbea6bdd58e6ec46891e20b3c5110605d5.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "products/discovery/schemas/origins.schema.json", "sha256": "19f90f5a2f87b250dcd54d16fe1810fbea6bdd58e6ec46891e20b3c5110605d5" }, @@ -1595,7 +1631,7 @@ "source": "src/artifacts/sha256/d4c5894f466ce1683e7d0b3db2b86413fa71cb7cea81843d12dc1ccbafd5cff8.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "products/discovery/schemas/runtime.schema.json", "sha256": "d4c5894f466ce1683e7d0b3db2b86413fa71cb7cea81843d12dc1ccbafd5cff8" }, @@ -1613,7 +1649,7 @@ "source": "src/artifacts/sha256/dc7d339a46f7450b1c158e7c5bce237f3c1c5ea54a03c1b3fa3e53cb54a1c4a1.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents/src/schema.rs", "sha256": "9d6fc4ae1e652e78cb3de6410e3fb044ea2883e468db99e10bbb7ac4022a4914" }, @@ -1631,7 +1667,7 @@ "source": "src/artifacts/sha256/d341927b2bb9a139cebe16a2edff9acaf6b069c9863b6f6f12108be6e4cd0731.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents/src/schema.rs", "sha256": "9d6fc4ae1e652e78cb3de6410e3fb044ea2883e468db99e10bbb7ac4022a4914" }, @@ -1649,7 +1685,7 @@ "source": "src/artifacts/sha256/02988cabcddaa2560bc4efae9d8ad45bbc800fb2be14abfbb59533112e1c892a.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents/src/schema.rs", "sha256": "9d6fc4ae1e652e78cb3de6410e3fb044ea2883e468db99e10bbb7ac4022a4914" }, @@ -1664,15 +1700,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "documents", - "source": "src/artifacts/sha256/43d58cc3028e7a97f91929625aeff1ec243f937e16ee455de8f3cb1caa4675b7.json", + "source": "src/artifacts/sha256/26884cc061cde1b1e5f6eb60d59b738c4522d9451c3ebef0f0e0ac007f17a7e9.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents/src/schema.rs", "sha256": "9d6fc4ae1e652e78cb3de6410e3fb044ea2883e468db99e10bbb7ac4022a4914" }, - "artifact_sha256": "43d58cc3028e7a97f91929625aeff1ec243f937e16ee455de8f3cb1caa4675b7", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/43d58cc3028e7a97f91929625aeff1ec243f937e16ee455de8f3cb1caa4675b7.json" + "artifact_sha256": "26884cc061cde1b1e5f6eb60d59b738c4522d9451c3ebef0f0e0ac007f17a7e9", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/26884cc061cde1b1e5f6eb60d59b738c4522d9451c3ebef0f0e0ac007f17a7e9.json" }, { "uri": "https://id.registrystack.org/schemas/documents/runtime/runtime.v1alpha1.schema.json", @@ -1685,7 +1721,7 @@ "source": "src/artifacts/sha256/8f4833f26187b81d360edb0849313806ecdc55191a2dc1bbad731023130fa873.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-documents/src/schema.rs", "sha256": "9d6fc4ae1e652e78cb3de6410e3fb044ea2883e468db99e10bbb7ac4022a4914" }, @@ -1703,7 +1739,7 @@ "source": "src/artifacts/sha256/5fd729f00c7942e6422b726a75b02d931218c416a1caffdfb7b129fd8ff22c4c.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-evidence-authoring/src/schema.rs", "sha256": "62464b27cb80552652f785f820ed3655cc9d48aa65dba30dcaea5696c5e79f70" }, @@ -1754,16 +1790,16 @@ "status": "active", "compatibility_line": "v1", "owner": "evidence", - "source": "src/artifacts/sha256/2847a56eda9c8b838d28fde619853c36851acc57b094b74ec2665150f1ace8d4.yaml", + "source": "src/artifacts/sha256/89428c7c4d08555b71f3d7476a45e2439fd0d2ba4b97eae6ee18be78fcbf8e3e.yaml", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "products/evidence/contracts/bundle.schema.yaml", - "sha256": "2847a56eda9c8b838d28fde619853c36851acc57b094b74ec2665150f1ace8d4" + "sha256": "89428c7c4d08555b71f3d7476a45e2439fd0d2ba4b97eae6ee18be78fcbf8e3e" }, - "artifact_sha256": "2847a56eda9c8b838d28fde619853c36851acc57b094b74ec2665150f1ace8d4", + "artifact_sha256": "89428c7c4d08555b71f3d7476a45e2439fd0d2ba4b97eae6ee18be78fcbf8e3e", "artifact_media_type": "application/yaml", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/2847a56eda9c8b838d28fde619853c36851acc57b094b74ec2665150f1ace8d4.yaml" + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/89428c7c4d08555b71f3d7476a45e2439fd0d2ba4b97eae6ee18be78fcbf8e3e.yaml" }, { "uri": "https://id.registrystack.org/schemas/evidence/client-contracts/client-contracts.v1.schema.json", @@ -1776,7 +1812,7 @@ "source": "src/artifacts/sha256/777f3b0aaf8129b9beacba85c188dce0b7aa841fe459c9ee517253eb49c7dc53.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-evidence-client/src/schema.rs", "sha256": "b28e799ebc6f2da79fb99e53af3b117aef9bc6d544a89c9fac1935572d6f0508" }, @@ -1794,7 +1830,7 @@ "source": "src/artifacts/sha256/67cddb577791407b017c46465860c1a1674b45d3b7ed4005a2ea12cea3bb61d5.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-evidence-client/src/schema.rs", "sha256": "b28e799ebc6f2da79fb99e53af3b117aef9bc6d544a89c9fac1935572d6f0508" }, @@ -1812,9 +1848,9 @@ "source": "src/artifacts/sha256/b131ade304b8fa1e4afbf5ab8be445d72f8117d75cf996a00d9d20d774575ea1.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-evidence/src/schema.rs", - "sha256": "c598415dc0abd9f1cb985c9bda305aaf6d926ed286732ff5428bda8dc3469b79" + "sha256": "0bee443cca46038f06a5c0298500b6d8ba8d06b35a40fce742d1a5666521413e" }, "artifact_sha256": "b131ade304b8fa1e4afbf5ab8be445d72f8117d75cf996a00d9d20d774575ea1", "immutable_uri": "https://id.registrystack.org/artifacts/sha256/b131ade304b8fa1e4afbf5ab8be445d72f8117d75cf996a00d9d20d774575ea1.json" @@ -1827,15 +1863,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "evidence", - "source": "src/artifacts/sha256/912661673c41c1119a8bd83809c66cc2d38b16e171c963b4988175c74f627664.json", + "source": "src/artifacts/sha256/0f8f2332533c8577677e7a53f62a0ac400c08233f13ced03e168331d8058c2c8.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-evidence/src/schema.rs", - "sha256": "c598415dc0abd9f1cb985c9bda305aaf6d926ed286732ff5428bda8dc3469b79" + "sha256": "0bee443cca46038f06a5c0298500b6d8ba8d06b35a40fce742d1a5666521413e" }, - "artifact_sha256": "912661673c41c1119a8bd83809c66cc2d38b16e171c963b4988175c74f627664", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/912661673c41c1119a8bd83809c66cc2d38b16e171c963b4988175c74f627664.json" + "artifact_sha256": "0f8f2332533c8577677e7a53f62a0ac400c08233f13ced03e168331d8058c2c8", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/0f8f2332533c8577677e7a53f62a0ac400c08233f13ced03e168331d8058c2c8.json" }, { "uri": "https://id.registrystack.org/schemas/evidence/holder-bound-verification-policy/holder-bound-verification-policy.v1.schema.json", @@ -1845,16 +1881,16 @@ "status": "active", "compatibility_line": "v1", "owner": "evidence", - "source": "src/artifacts/sha256/37d6a662a61c9a5730be870e1d202209d0bebeb658968f978f317bb8995c1cb5.yaml", + "source": "src/artifacts/sha256/c731a74bea9e4d649dd2e0d074e20a10e617c6ef844ec6f8223fae78b3f0b28d.yaml", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "products/evidence/contracts/holder-bound-verification-policy.schema.yaml", - "sha256": "37d6a662a61c9a5730be870e1d202209d0bebeb658968f978f317bb8995c1cb5" + "sha256": "c731a74bea9e4d649dd2e0d074e20a10e617c6ef844ec6f8223fae78b3f0b28d" }, - "artifact_sha256": "37d6a662a61c9a5730be870e1d202209d0bebeb658968f978f317bb8995c1cb5", + "artifact_sha256": "c731a74bea9e4d649dd2e0d074e20a10e617c6ef844ec6f8223fae78b3f0b28d", "artifact_media_type": "application/yaml", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/37d6a662a61c9a5730be870e1d202209d0bebeb658968f978f317bb8995c1cb5.yaml" + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/c731a74bea9e4d649dd2e0d074e20a10e617c6ef844ec6f8223fae78b3f0b28d.yaml" }, { "uri": "https://id.registrystack.org/schemas/evidence/mock-plan/mock-plan.v1alpha1.schema.json", @@ -1867,7 +1903,7 @@ "source": "src/artifacts/sha256/761a6a1300c328344666ebacdb7c811deefd80ed293e9bc4c0adea3cd435b9c5.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-evidence-authoring/src/schema.rs", "sha256": "62464b27cb80552652f785f820ed3655cc9d48aa65dba30dcaea5696c5e79f70" }, @@ -1882,15 +1918,33 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "evidence", - "source": "src/artifacts/sha256/701ee38be07cd80d8fd73a393abfb243511d3accd7a34124893c39781d883191.json", + "source": "src/artifacts/sha256/fb01195c02d6b94784e17ea07f6de45f56370df8af933a2bb2142a3fd18c9146.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-evidence-oid4vci/src/schema.rs", - "sha256": "0cc005a1e55672ce3a11ad5fd0c4e714155ec6e4b003328bd025a88d29d455b3" + "sha256": "9e58fd6d09d319ddeffec54795a92fc910a0a9ccb361734ea8f7ce698c043540" }, - "artifact_sha256": "701ee38be07cd80d8fd73a393abfb243511d3accd7a34124893c39781d883191", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/701ee38be07cd80d8fd73a393abfb243511d3accd7a34124893c39781d883191.json" + "artifact_sha256": "fb01195c02d6b94784e17ea07f6de45f56370df8af933a2bb2142a3fd18c9146", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/fb01195c02d6b94784e17ea07f6de45f56370df8af933a2bb2142a3fd18c9146.json" + }, + { + "uri": "https://id.registrystack.org/schemas/evidence/oid4vp-runtime/oid4vp-runtime.v1alpha1.schema.json", + "title": "Evidence OpenID4VP verifier runtime configuration", + "description": "Evidence OpenID4VP verifier runtime configuration JSON Schema.", + "kind": "schema", + "status": "active", + "compatibility_line": "v1alpha1", + "owner": "evidence", + "source": "src/artifacts/sha256/225b0d03402f422442432fd5195ccf3483ef79cf744d883bbfb9e96ba89e6465.json", + "source_reference": { + "repository": "registry-stack", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", + "path": "crates/registry-evidence-oid4vp/src/schema.rs", + "sha256": "7f111792435d2d9d6c18174e157b8ff05b3f19d733c2ea19f7327eaa99268eb4" + }, + "artifact_sha256": "225b0d03402f422442432fd5195ccf3483ef79cf744d883bbfb9e96ba89e6465", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/225b0d03402f422442432fd5195ccf3483ef79cf744d883bbfb9e96ba89e6465.json" }, { "uri": "https://id.registrystack.org/schemas/evidence/project/project.v1alpha1.schema.json", @@ -1900,15 +1954,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "evidence", - "source": "src/artifacts/sha256/62c45846105e0231417e0450568a899ea05f78f41250b450353c074407cc5f26.json", + "source": "src/artifacts/sha256/f91af7d0c873134675c27063eafcea7500210443225dd0f9e8309e1f6680f13d.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-evidence-authoring/src/schema.rs", "sha256": "62464b27cb80552652f785f820ed3655cc9d48aa65dba30dcaea5696c5e79f70" }, - "artifact_sha256": "62c45846105e0231417e0450568a899ea05f78f41250b450353c074407cc5f26", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/62c45846105e0231417e0450568a899ea05f78f41250b450353c074407cc5f26.json" + "artifact_sha256": "f91af7d0c873134675c27063eafcea7500210443225dd0f9e8309e1f6680f13d", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/f91af7d0c873134675c27063eafcea7500210443225dd0f9e8309e1f6680f13d.json" }, { "uri": "https://id.registrystack.org/schemas/evidence/question/question.v1alpha1.schema.json", @@ -1936,16 +1990,16 @@ "status": "active", "compatibility_line": "v1", "owner": "evidence", - "source": "src/artifacts/sha256/fd4ef085ef94087f5fa6d846a284957345d5463df44372c5667ea1a8cf643d0d.yaml", + "source": "src/artifacts/sha256/24b19bc056dd4048d1f02b3270743d3c30c052cb5875b240e8d9b5d06029ecfb.yaml", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "products/evidence/contracts/runtime.schema.yaml", - "sha256": "fd4ef085ef94087f5fa6d846a284957345d5463df44372c5667ea1a8cf643d0d" + "sha256": "24b19bc056dd4048d1f02b3270743d3c30c052cb5875b240e8d9b5d06029ecfb" }, - "artifact_sha256": "fd4ef085ef94087f5fa6d846a284957345d5463df44372c5667ea1a8cf643d0d", + "artifact_sha256": "24b19bc056dd4048d1f02b3270743d3c30c052cb5875b240e8d9b5d06029ecfb", "artifact_media_type": "application/yaml", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/fd4ef085ef94087f5fa6d846a284957345d5463df44372c5667ea1a8cf643d0d.yaml" + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/24b19bc056dd4048d1f02b3270743d3c30c052cb5875b240e8d9b5d06029ecfb.yaml" }, { "uri": "https://id.registrystack.org/schemas/evidence/selector/selector.v1alpha1.schema.json", @@ -1976,7 +2030,7 @@ "source": "src/artifacts/sha256/8ebfd8d54b92be742595c6bc1d4a71a570ae04ab80e85d0d276522f0967ab7bf.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-evidence-authoring/src/schema.rs", "sha256": "62464b27cb80552652f785f820ed3655cc9d48aa65dba30dcaea5696c5e79f70" }, @@ -2009,15 +2063,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "evidence", - "source": "src/artifacts/sha256/a1bab27c4778502d75e2041b7d38dd0dc9cfffaa91d52625813b16cf694b9b22.json", + "source": "src/artifacts/sha256/4a4b93a4cca9568c089166b2d7f2ee13306b4abcba7289f4b5290d55ef44d644.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-evidence-authoring/src/schema.rs", "sha256": "62464b27cb80552652f785f820ed3655cc9d48aa65dba30dcaea5696c5e79f70" }, - "artifact_sha256": "a1bab27c4778502d75e2041b7d38dd0dc9cfffaa91d52625813b16cf694b9b22", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/a1bab27c4778502d75e2041b7d38dd0dc9cfffaa91d52625813b16cf694b9b22.json" + "artifact_sha256": "4a4b93a4cca9568c089166b2d7f2ee13306b4abcba7289f4b5290d55ef44d644", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/4a4b93a4cca9568c089166b2d7f2ee13306b4abcba7289f4b5290d55ef44d644.json" }, { "uri": "https://id.registrystack.org/schemas/evidence/target-governance/target-governance.v1alpha1.schema.json", @@ -2066,7 +2120,7 @@ "source": "src/artifacts/sha256/bb19696ad1cf4f6c89de72d1b50da9f8897761cd15066c4281500836306ea09e.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-evidence-authoring/src/schema.rs", "sha256": "62464b27cb80552652f785f820ed3655cc9d48aa65dba30dcaea5696c5e79f70" }, @@ -2081,16 +2135,16 @@ "status": "active", "compatibility_line": "v1", "owner": "evidence", - "source": "src/artifacts/sha256/b6a7e7200bf014a4b31dd064aa39bcbdb60fb624ef8c305f4c3431958b47bb12.yaml", + "source": "src/artifacts/sha256/d54c2e60d478680238197bd57d5d5baf83975cf6f30a359d0d331d31f333495f.yaml", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "products/evidence/contracts/verification-policy.schema.yaml", - "sha256": "b6a7e7200bf014a4b31dd064aa39bcbdb60fb624ef8c305f4c3431958b47bb12" + "sha256": "d54c2e60d478680238197bd57d5d5baf83975cf6f30a359d0d331d31f333495f" }, - "artifact_sha256": "b6a7e7200bf014a4b31dd064aa39bcbdb60fb624ef8c305f4c3431958b47bb12", + "artifact_sha256": "d54c2e60d478680238197bd57d5d5baf83975cf6f30a359d0d331d31f333495f", "artifact_media_type": "application/yaml", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/b6a7e7200bf014a4b31dd064aa39bcbdb60fb624ef8c305f4c3431958b47bb12.yaml" + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/d54c2e60d478680238197bd57d5d5baf83975cf6f30a359d0d331d31f333495f.yaml" }, { "uri": "https://id.registrystack.org/schemas/identifiers/catalog.v1.schema.json", @@ -2103,7 +2157,7 @@ "source": "src/artifacts/sha256/e45632976b2436dc468805b78e6ac35d4cb05340b260370d011eee68fcf28c5d.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "products/identifiers/contracts/catalog.v1.schema.json", "sha256": "e45632976b2436dc468805b78e6ac35d4cb05340b260370d011eee68fcf28c5d" }, @@ -2121,7 +2175,7 @@ "source": "src/artifacts/sha256/b68362a53e0abd42941a79dc6bd280538a5510c9046dc8fb53cbdd29be3d898e.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-manifest-cli/src/schema.rs", "sha256": "19d037ee50b143b70576b4ce50808883e0ccb831373f72d42beed770a67d8eae" }, @@ -2139,7 +2193,7 @@ "source": "src/artifacts/sha256/f8e367082254b713f8347ccb9055d7ac527ddef43b06b33239f8d81d0ed11012.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-manifest-cli/src/schema.rs", "sha256": "19d037ee50b143b70576b4ce50808883e0ccb831373f72d42beed770a67d8eae" }, @@ -2154,15 +2208,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "messaging", - "source": "src/artifacts/sha256/af3c4d9d5e6da2a07c2d26fc9a06f7bdb3358f6145c54b25d7a045d3066c09e6.json", + "source": "src/artifacts/sha256/2a6983bc79d8bf3bae405d3428189c364e643460bcce5930f60e21fde9c31865.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging/src/schema.rs", "sha256": "566657f59c1c8bb5059c0e0e2faa499f559a6fe905d1d8b1aba2eff781f62a09" }, - "artifact_sha256": "af3c4d9d5e6da2a07c2d26fc9a06f7bdb3358f6145c54b25d7a045d3066c09e6", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/af3c4d9d5e6da2a07c2d26fc9a06f7bdb3358f6145c54b25d7a045d3066c09e6.json" + "artifact_sha256": "2a6983bc79d8bf3bae405d3428189c364e643460bcce5930f60e21fde9c31865", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/2a6983bc79d8bf3bae405d3428189c364e643460bcce5930f60e21fde9c31865.json" }, { "uri": "https://id.registrystack.org/schemas/messaging/provider/provider.v1alpha1.schema.json", @@ -2175,7 +2229,7 @@ "source": "src/artifacts/sha256/06439b2e8b23831f90676f4103605a1fc7e79e34f9e8935023cf173e122934de.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging/src/schema.rs", "sha256": "566657f59c1c8bb5059c0e0e2faa499f559a6fe905d1d8b1aba2eff781f62a09" }, @@ -2190,15 +2244,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "messaging", - "source": "src/artifacts/sha256/d2c4ef5c2ca281c720117c95c5b136be7353d1da70a99f9c9455dd6b94dcae7b.json", + "source": "src/artifacts/sha256/56b15b5ec2c5a799f9debd7d034cf8f7a490c76c71458720b6469c98b3a469b5.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging/src/schema.rs", "sha256": "566657f59c1c8bb5059c0e0e2faa499f559a6fe905d1d8b1aba2eff781f62a09" }, - "artifact_sha256": "d2c4ef5c2ca281c720117c95c5b136be7353d1da70a99f9c9455dd6b94dcae7b", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/d2c4ef5c2ca281c720117c95c5b136be7353d1da70a99f9c9455dd6b94dcae7b.json" + "artifact_sha256": "56b15b5ec2c5a799f9debd7d034cf8f7a490c76c71458720b6469c98b3a469b5", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/56b15b5ec2c5a799f9debd7d034cf8f7a490c76c71458720b6469c98b3a469b5.json" }, { "uri": "https://id.registrystack.org/schemas/messaging/template/template.v1alpha1.schema.json", @@ -2211,7 +2265,7 @@ "source": "src/artifacts/sha256/5d99a71fc7fb00d3d4f6f4ffc4f6399570e60497e53a080cd571fc0ef3bd0d42.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-messaging/src/schema.rs", "sha256": "566657f59c1c8bb5059c0e0e2faa499f559a6fe905d1d8b1aba2eff781f62a09" }, @@ -2229,7 +2283,7 @@ "source": "src/artifacts/sha256/3fa0953ce1c3effc0a35c61e5c93d484d5b948e5f64478999c6ea671e588b3d1.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-platform-yaml/src/check_acceptances.rs", "sha256": "9f01dd394d730e590710e430baf1928ee3e02bb52c1d3ab53b41e447ac692fd2" }, @@ -2247,7 +2301,7 @@ "source": "src/artifacts/sha256/c0ceb9cbec8393e03e125d10b4d512107bc120c7b5d31398cfd9256c78a49aee.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-cli-api/src/schema.rs", "sha256": "78e2cceb547c9691ee7636d8d3527aebde5a54570fa69c2fbced8b3583f561b1" }, @@ -2265,13 +2319,49 @@ "source": "src/artifacts/sha256/5ea2b8f0276de7b574efc392e72672179ce8e1ccea923dc62f10cbb115274099.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-cli-api/src/schema.rs", "sha256": "78e2cceb547c9691ee7636d8d3527aebde5a54570fa69c2fbced8b3583f561b1" }, "artifact_sha256": "5ea2b8f0276de7b574efc392e72672179ce8e1ccea923dc62f10cbb115274099", "immutable_uri": "https://id.registrystack.org/artifacts/sha256/5ea2b8f0276de7b574efc392e72672179ce8e1ccea923dc62f10cbb115274099.json" }, + { + "uri": "https://id.registrystack.org/schemas/platform/identity-deployment/identity-deployment.v1.schema.json", + "title": "Registry Stack identity deployment", + "description": "Registry Stack identity deployment JSON Schema.", + "kind": "schema", + "status": "active", + "compatibility_line": "v1", + "owner": "platform", + "source": "src/artifacts/sha256/20b5224ee58a88324552ba4eef77132273ac2b6609e178db001dc57dd1d63077.json", + "source_reference": { + "repository": "registry-stack", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", + "path": "crates/registry-thunderid-tooling/src/schema.rs", + "sha256": "3c54de0035540767520565700458e3bb8cf74eb4394ca6c67b908f045a76211b" + }, + "artifact_sha256": "20b5224ee58a88324552ba4eef77132273ac2b6609e178db001dc57dd1d63077", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/20b5224ee58a88324552ba4eef77132273ac2b6609e178db001dc57dd1d63077.json" + }, + { + "uri": "https://id.registrystack.org/schemas/platform/identity-facts/identity-facts.v1.schema.json", + "title": "Registry Stack identity facts", + "description": "Registry Stack product identity facts JSON Schema.", + "kind": "schema", + "status": "active", + "compatibility_line": "v1", + "owner": "platform", + "source": "src/artifacts/sha256/c347ed37907da3fbef25720354b8042c3ce8477437c4a38b81ce2aa718c0b96c.json", + "source_reference": { + "repository": "registry-stack", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", + "path": "crates/registry-thunderid-tooling/src/schema.rs", + "sha256": "3c54de0035540767520565700458e3bb8cf74eb4394ca6c67b908f045a76211b" + }, + "artifact_sha256": "c347ed37907da3fbef25720354b8042c3ce8477437c4a38b81ce2aa718c0b96c", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/c347ed37907da3fbef25720354b8042c3ce8477437c4a38b81ce2aa718c0b96c.json" + }, { "uri": "https://id.registrystack.org/schemas/platform/mcp-runtime/mcp-runtime.v1alpha1.schema.json", "title": "Registry Stack configurable MCP gateway runtime configuration", @@ -2283,7 +2373,7 @@ "source": "src/artifacts/sha256/28757cb955ea96d628ff2442cc9dd7ce4f11998edada848a834ef9dfbc3c5c3e.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-mcp/src/schema.rs", "sha256": "92b053026e128997664c3981e09347cb4d2f1bd1c34dd96f646db0b37bdb4d7c" }, @@ -2301,9 +2391,9 @@ "source": "src/artifacts/sha256/706e5506bf8bb44d7717ff00e841af2f862502437f3502c3eeadde91a0465030.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-thunderid-tooling/src/schema.rs", - "sha256": "a0d71d083c0502cd9f9805451c1f80a1f0cf5623df094886cb1a6a140ce8bfe0" + "sha256": "3c54de0035540767520565700458e3bb8cf74eb4394ca6c67b908f045a76211b" }, "artifact_sha256": "706e5506bf8bb44d7717ff00e841af2f862502437f3502c3eeadde91a0465030", "immutable_uri": "https://id.registrystack.org/artifacts/sha256/706e5506bf8bb44d7717ff00e841af2f862502437f3502c3eeadde91a0465030.json" @@ -2319,7 +2409,7 @@ "source": "src/artifacts/sha256/e9ddb96d7b521da29b033353ffa854e2e003b1c952f9aad847b30ed1e3b8cf2a.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "products/registry-record/schema/registry-record-v1.schema.json", "sha256": "e9ddb96d7b521da29b033353ffa854e2e003b1c952f9aad847b30ed1e3b8cf2a" }, @@ -2442,15 +2532,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "render", - "source": "src/artifacts/sha256/48c416e7a409cde355bb7e7a1a1bd8eac6248e65867fd76b55b777d4b6e335d2.json", + "source": "src/artifacts/sha256/cdc74748bb3e149abc012ed32d5f3518867e70465a51a88628df99903bd9df5f.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-render/src/schema.rs", - "sha256": "187b3c8a7cb457962a2cadc80432af5c81124641ca356f539f634a5c2403a309" + "sha256": "acd150211c62d59faa685a76727ffa2e52d9f6e858ec49a10f51add49f430f30" }, - "artifact_sha256": "48c416e7a409cde355bb7e7a1a1bd8eac6248e65867fd76b55b777d4b6e335d2", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/48c416e7a409cde355bb7e7a1a1bd8eac6248e65867fd76b55b777d4b6e335d2.json" + "artifact_sha256": "cdc74748bb3e149abc012ed32d5f3518867e70465a51a88628df99903bd9df5f", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/cdc74748bb3e149abc012ed32d5f3518867e70465a51a88628df99903bd9df5f.json" }, { "uri": "https://id.registrystack.org/schemas/render/labels/labels.v1alpha1.schema.json", @@ -2463,9 +2553,9 @@ "source": "src/artifacts/sha256/f511f546980251198954678790b986a5aa2cb4f037bd463f20531b8c9736d28b.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-render/src/schema.rs", - "sha256": "187b3c8a7cb457962a2cadc80432af5c81124641ca356f539f634a5c2403a309" + "sha256": "acd150211c62d59faa685a76727ffa2e52d9f6e858ec49a10f51add49f430f30" }, "artifact_sha256": "f511f546980251198954678790b986a5aa2cb4f037bd463f20531b8c9736d28b", "immutable_uri": "https://id.registrystack.org/artifacts/sha256/f511f546980251198954678790b986a5aa2cb4f037bd463f20531b8c9736d28b.json" @@ -2478,15 +2568,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "render", - "source": "src/artifacts/sha256/e853c774b697a8debb56537eb3a14c4e8c32f9fa8771eba1cd05eb397505b3c6.json", + "source": "src/artifacts/sha256/b5f7140e63c4307838e4b26286f0aad064577c7facc5e7423e1b63887d9afb95.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-render/src/schema.rs", - "sha256": "187b3c8a7cb457962a2cadc80432af5c81124641ca356f539f634a5c2403a309" + "sha256": "acd150211c62d59faa685a76727ffa2e52d9f6e858ec49a10f51add49f430f30" }, - "artifact_sha256": "e853c774b697a8debb56537eb3a14c4e8c32f9fa8771eba1cd05eb397505b3c6", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/e853c774b697a8debb56537eb3a14c4e8c32f9fa8771eba1cd05eb397505b3c6.json" + "artifact_sha256": "b5f7140e63c4307838e4b26286f0aad064577c7facc5e7423e1b63887d9afb95", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/b5f7140e63c4307838e4b26286f0aad064577c7facc5e7423e1b63887d9afb95.json" }, { "uri": "https://id.registrystack.org/schemas/scheduling/fixture/fixture.v1alpha1.schema.json", @@ -2499,7 +2589,7 @@ "source": "src/artifacts/sha256/dbb4bea390c11e37fee5840aef5eab34e39a4f5d34bb72354fcf38f041bbb974.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/schema.rs", "sha256": "7b0439b0479c783a02f1a2b4bd0633fe8440b8b015ca7c8978668f5a988ca1cc" }, @@ -2514,15 +2604,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "scheduling", - "source": "src/artifacts/sha256/1cb82ae0e7ec13bf7d54b109546a4d68cb2b3b031868941728dba209bea8bf21.json", + "source": "src/artifacts/sha256/ff888718d437664e4ca5095c5e58016539c58e535f512ea873a210929fd5df80.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/schema.rs", "sha256": "7b0439b0479c783a02f1a2b4bd0633fe8440b8b015ca7c8978668f5a988ca1cc" }, - "artifact_sha256": "1cb82ae0e7ec13bf7d54b109546a4d68cb2b3b031868941728dba209bea8bf21", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/1cb82ae0e7ec13bf7d54b109546a4d68cb2b3b031868941728dba209bea8bf21.json" + "artifact_sha256": "ff888718d437664e4ca5095c5e58016539c58e535f512ea873a210929fd5df80", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/ff888718d437664e4ca5095c5e58016539c58e535f512ea873a210929fd5df80.json" }, { "uri": "https://id.registrystack.org/schemas/scheduling/records/records.v1alpha1.schema.json", @@ -2535,7 +2625,7 @@ "source": "src/artifacts/sha256/77ab388672f3d58275b278a94ebdddcf24828565af707f6720646cf1e09608e8.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling-core/src/schema.rs", "sha256": "7b0439b0479c783a02f1a2b4bd0633fe8440b8b015ca7c8978668f5a988ca1cc" }, @@ -2553,7 +2643,7 @@ "source": "src/artifacts/sha256/eaf6f80ebeb9ebb3896982b2b334a1926e30fca4d62615c368d4b69e9c3366af.json", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "crates/registry-scheduling/src/schema.rs", "sha256": "72c9a636e83d70101ef7110c0da9cd257cb8b3789f6df27910890eabbf8ae990" }, diff --git a/src/catalogs/vocabularies.json b/src/catalogs/vocabularies.json index 615383981..f59151406 100644 --- a/src/catalogs/vocabularies.json +++ b/src/catalogs/vocabularies.json @@ -10,7 +10,7 @@ "owner": "breg", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "products/breg/contracts/odrl-profile.jsonld", "sha256": "24d0950eb2c1a76d5005850e1145f675ad65df5231867907b41d11fdd2979cdc" } @@ -55,7 +55,7 @@ "owner": "registry-record", "source_reference": { "repository": "registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "path": "products/registry-record/context/registry-record-v1.jsonld", "sha256": "c336506f4dcd7e266155e8cd1ff9710766bc240f395e27b0480b2e193e74e2ee" } diff --git a/src/upstream/catalog.v1.json b/src/upstream/catalog.v1.json index 201969ea9..368477f87 100644 --- a/src/upstream/catalog.v1.json +++ b/src/upstream/catalog.v1.json @@ -1410,7 +1410,7 @@ "description": "Starts stay held after a restore until an operator releases the admission hold.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" }, "problem": { "code": "admission.held", @@ -1429,7 +1429,7 @@ "description": "This instance runs in recovery-only mode and admits no runs. Send starts to the ordinary service.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" }, "problem": { "code": "admission.recovery-only", @@ -1448,7 +1448,7 @@ "description": "The operation may have completed, but its audited result could not be released. Inspect the run before repeating the operation.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" }, "problem": { "code": "audit.response-unavailable", @@ -1467,7 +1467,7 @@ "description": "The bearer credential is missing, invalid, or expired.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" }, "problem": { "code": "authentication.refused", @@ -1486,7 +1486,7 @@ "description": "The run's original connection settings differ from this service's runtime configuration.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" }, "problem": { "code": "binding.conflict", @@ -1505,7 +1505,7 @@ "description": "Connection settings that runs in progress use differ from this service's runtime configuration.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" }, "problem": { "code": "binding.live-conflict", @@ -1524,7 +1524,7 @@ "description": "That step is not waiting.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" }, "problem": { "code": "check.not-waiting", @@ -1543,7 +1543,7 @@ "description": "The workflow's workflow definition, one of its mappings or one of its functions refused the request.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" }, "problem": { "code": "definition.refused", @@ -1562,7 +1562,7 @@ "description": "An apply changed the active packages after this service started. Restart it with the runtime file that apply used.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" }, "problem": { "code": "deployment.activation-changed", @@ -1581,7 +1581,7 @@ "description": "The deployment's activation, runtime configuration or state key custody check failed.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" }, "problem": { "code": "deployment.refused", @@ -1600,7 +1600,7 @@ "description": "An evaluation may have completed at its provider, so the run is never evaluated again.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" }, "problem": { "code": "evaluation.uncertain", @@ -1619,7 +1619,7 @@ "description": "The signed event must satisfy the accepted canonical envelope and typed event contract.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" }, "problem": { "code": "event.invalid", @@ -1638,7 +1638,7 @@ "description": "Restore the configured event source signing key and its enabled secret provider before retrying delivery.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" }, "problem": { "code": "event.source-unavailable", @@ -1657,7 +1657,7 @@ "description": "The signed event exceeds the event value profile: 131072 canonical bytes, 32 levels of nesting, 4096 values, 256 items per array, 256 members per object, and 16384 bytes per string. Have the producer project fewer or smaller fields into the event.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" }, "problem": { "code": "event.too-large", @@ -1676,7 +1676,7 @@ "description": "Send a fresh signed delivery from the exact configured source to its accepted trigger.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" }, "problem": { "code": "event.unauthenticated", @@ -1695,7 +1695,7 @@ "description": "Execution is under restore hold until an operator releases it.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" }, "problem": { "code": "execution.held", @@ -1714,7 +1714,7 @@ "description": "Supply an Idempotency-Key header of 1 to 256 bytes.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" }, "problem": { "code": "idempotency.key-invalid", @@ -1733,7 +1733,7 @@ "description": "This idempotency key already started a run with different input.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" }, "problem": { "code": "idempotency.key-reused", @@ -1752,7 +1752,7 @@ "description": "The start input does not satisfy the workflow's declared input schema and value bounds.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" }, "problem": { "code": "input.invalid", @@ -1771,7 +1771,7 @@ "description": "An unkeyed mutation may have completed at its provider, so the run never sends it again.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" }, "problem": { "code": "mutation.uncertain", @@ -1790,7 +1790,7 @@ "description": "The caller's policy does not allow this operation.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" }, "problem": { "code": "operation.not-authorized", @@ -1809,7 +1809,7 @@ "description": "The original command's receipt can no longer be recovered. This is not evidence that the command was not sent.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" }, "problem": { "code": "receipt.expired", @@ -1828,7 +1828,7 @@ "description": "The run's progress changed while it was being reconciled. Inspect it again.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" }, "problem": { "code": "reconcile.raced", @@ -1847,7 +1847,7 @@ "description": "Reconcile applies only to a held mutation with a prepared command, its original binding and no active lease.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" }, "problem": { "code": "reconcile.refused", @@ -1866,7 +1866,7 @@ "description": "The held operation has no original-result lookup.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" }, "problem": { "code": "reconcile.unsupported", @@ -1885,7 +1885,7 @@ "description": "The request body exceeds the accepted size: 65536 bytes for a JSON request, or 1048576 bytes for a signed event delivery.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" }, "problem": { "code": "request.body-too-large", @@ -1904,7 +1904,7 @@ "description": "The request could not be read as a Coordinator request.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" }, "problem": { "code": "request.invalid", @@ -1923,7 +1923,7 @@ "description": "The list limit must be between 1 and 100.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" }, "problem": { "code": "request.limit-out-of-range", @@ -1942,7 +1942,7 @@ "description": "The route exists but not for this method.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" }, "problem": { "code": "request.method-not-allowed", @@ -1961,7 +1961,7 @@ "description": "The requested route does not exist.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" }, "problem": { "code": "request.not-found", @@ -1980,7 +1980,7 @@ "description": "The reason or recovery reference must be a bounded reference without personal data or control characters.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" }, "problem": { "code": "request.reason-invalid", @@ -1999,7 +1999,7 @@ "description": "The retention cutoff must be in the past and the limit between 1 and 100.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" }, "problem": { "code": "request.retention-invalid", @@ -2018,7 +2018,7 @@ "description": "The request body could not be processed.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" }, "problem": { "code": "request.unprocessable", @@ -2037,7 +2037,7 @@ "description": "The request body is not JSON.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" }, "problem": { "code": "request.unsupported-media-type", @@ -2056,7 +2056,7 @@ "description": "This recovery action requires execution to be under restore hold.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" }, "problem": { "code": "restore.hold-required", @@ -2075,7 +2075,7 @@ "description": "Held work no longer matches its protected definition or prepared command.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" }, "problem": { "code": "restore.lease-incompatible", @@ -2094,7 +2094,7 @@ "description": "Execution history must be complete and the prior deployment fenced before recovery is reviewed.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" }, "problem": { "code": "restore.review-required", @@ -2113,7 +2113,7 @@ "description": "Held work remains unresolved, so the restore hold cannot be released.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" }, "problem": { "code": "restore.unresolved", @@ -2132,7 +2132,7 @@ "description": "Retry-same applies only to held work before its original deadline.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" }, "problem": { "code": "retry.refused", @@ -2151,7 +2151,7 @@ "description": "This service's Coordinator version cannot interpret the run's pinned definition.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" }, "problem": { "code": "run.definition-incompatible", @@ -2170,7 +2170,7 @@ "description": "No run with this identifier is visible to the caller.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" }, "problem": { "code": "run.not-visible", @@ -2189,7 +2189,7 @@ "description": "Retention erased this run's payloads, so it can no longer be retried or reconciled.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" }, "problem": { "code": "run.payload-erased", @@ -2208,7 +2208,7 @@ "description": "Coordinator could not complete the request.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" }, "problem": { "code": "runtime.failure", @@ -2227,7 +2227,7 @@ "description": "A dependency of the Coordinator, such as its database, audit stream or token verifier, is unavailable. Try again after the service recovers.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" }, "problem": { "code": "service.unavailable", @@ -2246,7 +2246,7 @@ "description": "This deployment does not serve the named workflow.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" }, "problem": { "code": "workflow.not-served", @@ -2265,7 +2265,7 @@ "description": "The expected workflow revision differs from the active revision or the original admission.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + "sha256": "8c1a94809b8a61a3b15e1d913d70b64f29bfefe15010e74be0cc1561ed854a24" }, "problem": { "code": "workflow.revision-mismatch", @@ -2806,6 +2806,329 @@ ] } }, + { + "uri": "https://id.registrystack.org/problems/registry-evidence-oid4vp/audit-unavailable", + "kind": "problem", + "status": "active", + "compatibilityLine": "v1alpha1", + "owner": "evidence", + "title": "Service Unavailable", + "description": "The audit destination did not accept the operation. Try again after the service recovers.", + "source": { + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + }, + "problem": { + "code": "audit-unavailable", + "httpStatuses": [ + 503 + ] + } + }, + { + "uri": "https://id.registrystack.org/problems/registry-evidence-oid4vp/body-too-large", + "kind": "problem", + "status": "active", + "compatibilityLine": "v1alpha1", + "owner": "evidence", + "title": "Payload Too Large", + "description": "The request body exceeds the accepted size.", + "source": { + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + }, + "problem": { + "code": "body-too-large", + "httpStatuses": [ + 413 + ] + } + }, + { + "uri": "https://id.registrystack.org/problems/registry-evidence-oid4vp/capacity", + "kind": "problem", + "status": "active", + "compatibilityLine": "v1alpha1", + "owner": "evidence", + "title": "Service Unavailable", + "description": "The service is at capacity or holds as many sessions as it allows. Retry after the interval given.", + "source": { + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + }, + "problem": { + "code": "capacity", + "httpStatuses": [ + 503 + ] + } + }, + { + "uri": "https://id.registrystack.org/problems/registry-evidence-oid4vp/internal-error", + "kind": "problem", + "status": "active", + "compatibilityLine": "v1alpha1", + "owner": "evidence", + "title": "Internal Server Error", + "description": "The request could not be completed.", + "source": { + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + }, + "problem": { + "code": "internal-error", + "httpStatuses": [ + 500 + ] + } + }, + { + "uri": "https://id.registrystack.org/problems/registry-evidence-oid4vp/invalid-request", + "kind": "problem", + "status": "active", + "compatibilityLine": "v1alpha1", + "owner": "evidence", + "title": "Invalid Request", + "description": "The request body is malformed or does not have the required members.", + "source": { + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + }, + "problem": { + "code": "invalid-request", + "httpStatuses": [ + 400 + ] + } + }, + { + "uri": "https://id.registrystack.org/problems/registry-evidence-oid4vp/issuer-unavailable", + "kind": "problem", + "status": "active", + "compatibilityLine": "v1alpha1", + "owner": "evidence", + "title": "Service Unavailable", + "description": "The token issuer is unavailable. Retry after the interval given.", + "source": { + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + }, + "problem": { + "code": "issuer-unavailable", + "httpStatuses": [ + 503 + ] + } + }, + { + "uri": "https://id.registrystack.org/problems/registry-evidence-oid4vp/method-not-allowed", + "kind": "problem", + "status": "active", + "compatibilityLine": "v1alpha1", + "owner": "evidence", + "title": "Method Not Allowed", + "description": "The route exists but not for this method.", + "source": { + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + }, + "problem": { + "code": "method-not-allowed", + "httpStatuses": [ + 405 + ] + } + }, + { + "uri": "https://id.registrystack.org/problems/registry-evidence-oid4vp/not-found", + "kind": "problem", + "status": "active", + "compatibilityLine": "v1alpha1", + "owner": "evidence", + "title": "Not Found", + "description": "The requested route does not exist.", + "source": { + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + }, + "problem": { + "code": "not-found", + "httpStatuses": [ + 404 + ] + } + }, + { + "uri": "https://id.registrystack.org/problems/registry-evidence-oid4vp/not-yet-presented", + "kind": "problem", + "status": "active", + "compatibilityLine": "v1alpha1", + "owner": "evidence", + "title": "Not Yet Presented", + "description": "The wallet has not presented yet.", + "source": { + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + }, + "problem": { + "code": "not-yet-presented", + "httpStatuses": [ + 409 + ] + } + }, + { + "uri": "https://id.registrystack.org/problems/registry-evidence-oid4vp/rate-limited", + "kind": "problem", + "status": "active", + "compatibilityLine": "v1alpha1", + "owner": "evidence", + "title": "Too Many Requests", + "description": "Too many requests. Retry after the interval given.", + "source": { + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + }, + "problem": { + "code": "rate-limited", + "httpStatuses": [ + 429 + ] + } + }, + { + "uri": "https://id.registrystack.org/problems/registry-evidence-oid4vp/request-not-found", + "kind": "problem", + "status": "active", + "compatibilityLine": "v1alpha1", + "owner": "evidence", + "title": "Not Found", + "description": "The request object is unknown, expired, or no longer pending.", + "source": { + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + }, + "problem": { + "code": "request-not-found", + "httpStatuses": [ + 404 + ] + } + }, + { + "uri": "https://id.registrystack.org/problems/registry-evidence-oid4vp/request-timeout", + "kind": "problem", + "status": "active", + "compatibilityLine": "v1alpha1", + "owner": "evidence", + "title": "Request Timeout", + "description": "The request took longer than the service waits.", + "source": { + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + }, + "problem": { + "code": "request-timeout", + "httpStatuses": [ + 408 + ] + } + }, + { + "uri": "https://id.registrystack.org/problems/registry-evidence-oid4vp/session-not-found", + "kind": "problem", + "status": "active", + "compatibilityLine": "v1alpha1", + "owner": "evidence", + "title": "Not Found", + "description": "The session is unknown, expired, already read, or created by another principal.", + "source": { + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + }, + "problem": { + "code": "session-not-found", + "httpStatuses": [ + 404 + ] + } + }, + { + "uri": "https://id.registrystack.org/problems/registry-evidence-oid4vp/unauthorized", + "kind": "problem", + "status": "active", + "compatibilityLine": "v1alpha1", + "owner": "evidence", + "title": "Unauthorized", + "description": "A valid bearer token is required.", + "source": { + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + }, + "problem": { + "code": "unauthorized", + "httpStatuses": [ + 401 + ] + } + }, + { + "uri": "https://id.registrystack.org/problems/registry-evidence-oid4vp/unknown-policy", + "kind": "problem", + "status": "active", + "compatibilityLine": "v1alpha1", + "owner": "evidence", + "title": "Unknown Policy", + "description": "No presentation policy has the identifier given.", + "source": { + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + }, + "problem": { + "code": "unknown-policy", + "httpStatuses": [ + 422 + ] + } + }, + { + "uri": "https://id.registrystack.org/problems/registry-evidence-oid4vp/unsupported-media-type", + "kind": "problem", + "status": "active", + "compatibilityLine": "v1alpha1", + "owner": "evidence", + "title": "Unsupported Media Type", + "description": "The request body is not application/json.", + "source": { + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + }, + "problem": { + "code": "unsupported-media-type", + "httpStatuses": [ + 415 + ] + } + }, + { + "uri": "https://id.registrystack.org/problems/registry-evidence-oid4vp/wallet-error", + "kind": "problem", + "status": "active", + "compatibilityLine": "v1alpha1", + "owner": "evidence", + "title": "Wallet Error", + "description": "The wallet reported an error instead of presenting. The closed category names it.", + "source": { + "path": "crates/registry-evidence-oid4vp/src/problem.rs", + "sha256": "50c4a646136a40b41e7026302ca16d6cfa757e84cc3b11394ca669fedfe8d644" + }, + "problem": { + "code": "wallet-error", + "httpStatuses": [ + 422 + ] + } + }, { "uri": "https://id.registrystack.org/problems/registry-evidence/auth/invalid-credential", "kind": "problem", @@ -4182,7 +4505,7 @@ "description": "Registry Adapter project, profile, pack, fixture, runtime configuration, ingestion job, job runtime configuration, and effective contract JSON Schema.", "source": { "path": "crates/registry-adapterctl/src/schemas.rs", - "sha256": "ee38dfe66d555d580545cec1b5d8e4148d1d108d194d5680c3dca63bbfbfd7c9" + "sha256": "4d73d31f4f7e2221fc7bfcdbb5eaa36c1e675fdfd2372721518fb760f35e13bd" }, "artifact": { "path": "products/adapter/schemas/effective-contract.v1alpha1.schema.json", @@ -4200,7 +4523,7 @@ "description": "Registry Adapter project, profile, pack, fixture, runtime configuration, ingestion job, job runtime configuration, and effective contract JSON Schema.", "source": { "path": "crates/registry-adapterctl/src/schemas.rs", - "sha256": "ee38dfe66d555d580545cec1b5d8e4148d1d108d194d5680c3dca63bbfbfd7c9" + "sha256": "4d73d31f4f7e2221fc7bfcdbb5eaa36c1e675fdfd2372721518fb760f35e13bd" }, "artifact": { "path": "products/adapter/schemas/fixture.v1alpha1.schema.json", @@ -4218,11 +4541,11 @@ "description": "Registry Adapter project, profile, pack, fixture, runtime configuration, ingestion job, job runtime configuration, and effective contract JSON Schema.", "source": { "path": "crates/registry-adapterctl/src/schemas.rs", - "sha256": "ee38dfe66d555d580545cec1b5d8e4148d1d108d194d5680c3dca63bbfbfd7c9" + "sha256": "4d73d31f4f7e2221fc7bfcdbb5eaa36c1e675fdfd2372721518fb760f35e13bd" }, "artifact": { "path": "products/adapter/schemas/job-runtime.v1alpha1.schema.json", - "sha256": "c1be1e7bc8efa01de429ea5a5cd7c19da49d9766d71839602a0e81cecc447d8b", + "sha256": "d68323a93d34904b5bc49870512e03baf519fd86b2a88078df69e68ee417242f", "mediaType": "application/schema+json" } }, @@ -4236,11 +4559,29 @@ "description": "Registry Adapter project, profile, pack, fixture, runtime configuration, ingestion job, job runtime configuration, and effective contract JSON Schema.", "source": { "path": "crates/registry-adapterctl/src/schemas.rs", - "sha256": "ee38dfe66d555d580545cec1b5d8e4148d1d108d194d5680c3dca63bbfbfd7c9" + "sha256": "4d73d31f4f7e2221fc7bfcdbb5eaa36c1e675fdfd2372721518fb760f35e13bd" }, "artifact": { "path": "products/adapter/schemas/job.v1alpha1.schema.json", - "sha256": "38818527ae8cf4435485ea3f283af51b41c4d1d1e0e26d04ab3e59c158c150a7", + "sha256": "f1a66ef70359e4078ee3ae3426d378d65fbb62ab2f64545081d3d4973a8b28ad", + "mediaType": "application/schema+json" + } + }, + { + "uri": "https://id.registrystack.org/schemas/adapter/mapping/mapping.v1alpha1.schema.json", + "kind": "schema", + "status": "active", + "compatibilityLine": "v1alpha1", + "owner": "adapter", + "title": "Registry Adapter mapping model", + "description": "Registry Adapter project, profile, pack, fixture, runtime configuration, ingestion job, job runtime configuration, and effective contract JSON Schema.", + "source": { + "path": "crates/registry-adapterctl/src/schemas.rs", + "sha256": "4d73d31f4f7e2221fc7bfcdbb5eaa36c1e675fdfd2372721518fb760f35e13bd" + }, + "artifact": { + "path": "products/adapter/schemas/mapping.v1alpha1.schema.json", + "sha256": "1a713af021f69a27c5c7f58b22464cd227972173f9935b2fc3a0a48eda51e6f5", "mediaType": "application/schema+json" } }, @@ -4254,11 +4595,29 @@ "description": "Registry Adapter project, profile, pack, fixture, runtime configuration, ingestion job, job runtime configuration, and effective contract JSON Schema.", "source": { "path": "crates/registry-adapterctl/src/schemas.rs", - "sha256": "ee38dfe66d555d580545cec1b5d8e4148d1d108d194d5680c3dca63bbfbfd7c9" + "sha256": "4d73d31f4f7e2221fc7bfcdbb5eaa36c1e675fdfd2372721518fb760f35e13bd" }, "artifact": { "path": "products/adapter/schemas/pack.v1alpha1.schema.json", - "sha256": "6031baaabca785fe6e0adfed4336fa555839e18ae1a3136cf3e895ad5e6f6dcb", + "sha256": "a8d908e534dffcbeee5b1e3352007a4205e0a4614c64a24fd22130f59f0ff264", + "mediaType": "application/schema+json" + } + }, + { + "uri": "https://id.registrystack.org/schemas/adapter/preview-expectations/preview-expectations.v1alpha1.schema.json", + "kind": "schema", + "status": "active", + "compatibilityLine": "v1alpha1", + "owner": "adapter", + "title": "Registry Adapter preview expectations", + "description": "Registry Adapter project, profile, pack, fixture, runtime configuration, ingestion job, job runtime configuration, and effective contract JSON Schema.", + "source": { + "path": "crates/registry-adapterctl/src/schemas.rs", + "sha256": "4d73d31f4f7e2221fc7bfcdbb5eaa36c1e675fdfd2372721518fb760f35e13bd" + }, + "artifact": { + "path": "products/adapter/schemas/preview-expectations.v1alpha1.schema.json", + "sha256": "05ca00c30b9126084ea5d52e17db5002f7afb46e9aceac121fe42489afc5caa1", "mediaType": "application/schema+json" } }, @@ -4272,7 +4631,7 @@ "description": "Registry Adapter project, profile, pack, fixture, runtime configuration, ingestion job, job runtime configuration, and effective contract JSON Schema.", "source": { "path": "crates/registry-adapterctl/src/schemas.rs", - "sha256": "ee38dfe66d555d580545cec1b5d8e4148d1d108d194d5680c3dca63bbfbfd7c9" + "sha256": "4d73d31f4f7e2221fc7bfcdbb5eaa36c1e675fdfd2372721518fb760f35e13bd" }, "artifact": { "path": "products/adapter/schemas/profile.v1alpha1.schema.json", @@ -4290,11 +4649,11 @@ "description": "Registry Adapter project, profile, pack, fixture, runtime configuration, ingestion job, job runtime configuration, and effective contract JSON Schema.", "source": { "path": "crates/registry-adapterctl/src/schemas.rs", - "sha256": "ee38dfe66d555d580545cec1b5d8e4148d1d108d194d5680c3dca63bbfbfd7c9" + "sha256": "4d73d31f4f7e2221fc7bfcdbb5eaa36c1e675fdfd2372721518fb760f35e13bd" }, "artifact": { "path": "products/adapter/schemas/project.v1alpha1.schema.json", - "sha256": "2a31e088e66073cf94b5d3769aebbeef3552cafa59c2281405be83ccd5390435", + "sha256": "5660a447be61398747639c2e0ecde3b0e355c29d4ff454209d3041cd02f5d1a5", "mediaType": "application/schema+json" } }, @@ -4308,11 +4667,11 @@ "description": "Registry Adapter project, profile, pack, fixture, runtime configuration, ingestion job, job runtime configuration, and effective contract JSON Schema.", "source": { "path": "crates/registry-adapterctl/src/schemas.rs", - "sha256": "ee38dfe66d555d580545cec1b5d8e4148d1d108d194d5680c3dca63bbfbfd7c9" + "sha256": "4d73d31f4f7e2221fc7bfcdbb5eaa36c1e675fdfd2372721518fb760f35e13bd" }, "artifact": { "path": "products/adapter/schemas/runtime.v1alpha1.schema.json", - "sha256": "169ce8657f2ab5a3140216b6aeeeaaaf7dfcea0f508364a76de142b93c6a0a14", + "sha256": "4a62c7dd8399bd3a5991efb203a34310918bad17a95b8a74c7784e6486ae6f21", "mediaType": "application/schema+json" } }, @@ -4546,7 +4905,7 @@ }, "artifact": { "path": "products/breg/generated/tools/migration-descriptor.v1alpha1.schema.json", - "sha256": "8177563ac1261680db7070b59f8b651d1cfe8c33cb5423891902bab4d5f8173e", + "sha256": "a21e02c4ca6980e0eb4dc733b99b1fdb465aec8fa1c661ec70e86d71d4146e06", "mediaType": "application/schema+json" } }, @@ -4600,7 +4959,7 @@ }, "artifact": { "path": "products/breg/generated/authoring/registry-module.schema.json", - "sha256": "9949f5e3a10d4deb0038359d76d1f59b160449472bcd0b6c99e45ad776d20f80", + "sha256": "2948465f69e8dd8856e245826adb47addbb0b0b3ae5a4a3eece660dfa77ba060", "mediaType": "application/schema+json" } }, @@ -4618,7 +4977,7 @@ }, "artifact": { "path": "products/breg/generated/authoring/registry-project.schema.json", - "sha256": "4babace1053c7b8446b682ce2db17a220263e669b397a414d98ead9d47af459a", + "sha256": "cab7ff0a619109662b006d87d211743af4a9cc64977c0f01b64889e691d24a84", "mediaType": "application/schema+json" } }, @@ -4708,7 +5067,7 @@ }, "artifact": { "path": "products/breg/generated/runtime/runtime.schema.json", - "sha256": "55959ae4cc86f1cd393cca382d7cdfd367ccc703c8676a350af4299b59ebb043", + "sha256": "785867b4f14c78862010b53406f62a420e53c4b17d5c8b9f7f95636130b75bd4", "mediaType": "application/schema+json" } }, @@ -4780,7 +5139,7 @@ }, "artifact": { "path": "products/casework/generated/holiday-set/holiday-set.schema.json", - "sha256": "7131a57da2c495a5f2142ab5e682e6b95cfda65a2e60d743c15c5c0c00b175dd", + "sha256": "3fef758cd53950ea9cef953dca6c2364188eddff2978695c70fd88237d451ece", "mediaType": "application/schema+json" } }, @@ -4798,7 +5157,7 @@ }, "artifact": { "path": "products/casework/generated/project/project.schema.json", - "sha256": "618dd00144eced267ce239c8412381a555e488af08cb7d6936e63dd963463b0a", + "sha256": "87a1a61127de6eb20c130f17b2d804c8b209c7343e7e4275f480f37833b83fcf", "mediaType": "application/schema+json" } }, @@ -4816,7 +5175,7 @@ }, "artifact": { "path": "products/casework/contracts/cli/report.schema.json", - "sha256": "9d026bf36a11bc83493f835f028ff52092e0f6c4cd42b471024ead336b6d8a9e", + "sha256": "2cbf5e3d2fd943abfa3777b63f204feac0dc0f5c02241a121aa3a135f3d420c7", "mediaType": "application/schema+json" } }, @@ -4848,11 +5207,11 @@ "description": "Registry Coordinator portable project authoring JSON Schema.", "source": { "path": "crates/registry-coordinator/src/authoring.rs", - "sha256": "ae097b5904283e2c57ae726020a6376fe02b975391df284e67e08e5b3ddaf64c" + "sha256": "032aa502fa63b5e7fe1cfb8f400be84d0802637409ac82ddf9f40152c482b91f" }, "artifact": { "path": "products/coordinator/generated/project/project.schema.json", - "sha256": "472c4861ab27a301f077784e63cd06891ef4b73813aab1dd802c567daac70d16", + "sha256": "b22c06678f15e4a5aa028df61819cde8d37ce2311e1249a3a8fcc18d00aa3eab", "mediaType": "application/schema+json" } }, @@ -4870,7 +5229,7 @@ }, "artifact": { "path": "products/coordinator/generated/runtime/runtime.schema.json", - "sha256": "bbbc49cc6aa19d2b6329db459ac7d5c8635583e2a0ca63f2d75556840a804202", + "sha256": "9d68a7c21821319603e16c3fb1a381e206a4f488a3eae95c9544180004ae2ea3", "mediaType": "application/schema+json" } }, @@ -5032,7 +5391,7 @@ }, "artifact": { "path": "products/documents/generated/project/project.schema.json", - "sha256": "43d58cc3028e7a97f91929625aeff1ec243f937e16ee455de8f3cb1caa4675b7", + "sha256": "26884cc061cde1b1e5f6eb60d59b738c4522d9451c3ebef0f0e0ac007f17a7e9", "mediaType": "application/schema+json" } }, @@ -5082,11 +5441,11 @@ "description": "Evidence frozen Version 1 contract and configuration schemas, written as YAML.", "source": { "path": "products/evidence/contracts/bundle.schema.yaml", - "sha256": "2847a56eda9c8b838d28fde619853c36851acc57b094b74ec2665150f1ace8d4" + "sha256": "89428c7c4d08555b71f3d7476a45e2439fd0d2ba4b97eae6ee18be78fcbf8e3e" }, "artifact": { "path": "products/evidence/contracts/bundle.schema.yaml", - "sha256": "2847a56eda9c8b838d28fde619853c36851acc57b094b74ec2665150f1ace8d4", + "sha256": "89428c7c4d08555b71f3d7476a45e2439fd0d2ba4b97eae6ee18be78fcbf8e3e", "mediaType": "application/yaml" } }, @@ -5136,7 +5495,7 @@ "description": "Evidence code list JSON Schema.", "source": { "path": "crates/registry-evidence/src/schema.rs", - "sha256": "c598415dc0abd9f1cb985c9bda305aaf6d926ed286732ff5428bda8dc3469b79" + "sha256": "0bee443cca46038f06a5c0298500b6d8ba8d06b35a40fce742d1a5666521413e" }, "artifact": { "path": "products/evidence/generated/codelist/codelist.schema.json", @@ -5154,11 +5513,11 @@ "description": "Evidence fixture JSON Schema.", "source": { "path": "crates/registry-evidence/src/schema.rs", - "sha256": "c598415dc0abd9f1cb985c9bda305aaf6d926ed286732ff5428bda8dc3469b79" + "sha256": "0bee443cca46038f06a5c0298500b6d8ba8d06b35a40fce742d1a5666521413e" }, "artifact": { "path": "products/evidence/generated/fixture/fixture.schema.json", - "sha256": "912661673c41c1119a8bd83809c66cc2d38b16e171c963b4988175c74f627664", + "sha256": "0f8f2332533c8577677e7a53f62a0ac400c08233f13ced03e168331d8058c2c8", "mediaType": "application/schema+json" } }, @@ -5172,11 +5531,11 @@ "description": "Evidence frozen Version 1 contract and configuration schemas, written as YAML.", "source": { "path": "products/evidence/contracts/holder-bound-verification-policy.schema.yaml", - "sha256": "37d6a662a61c9a5730be870e1d202209d0bebeb658968f978f317bb8995c1cb5" + "sha256": "c731a74bea9e4d649dd2e0d074e20a10e617c6ef844ec6f8223fae78b3f0b28d" }, "artifact": { "path": "products/evidence/contracts/holder-bound-verification-policy.schema.yaml", - "sha256": "37d6a662a61c9a5730be870e1d202209d0bebeb658968f978f317bb8995c1cb5", + "sha256": "c731a74bea9e4d649dd2e0d074e20a10e617c6ef844ec6f8223fae78b3f0b28d", "mediaType": "application/yaml" } }, @@ -5208,11 +5567,29 @@ "description": "Evidence OID4VCI delivery runtime configuration JSON Schema.", "source": { "path": "crates/registry-evidence-oid4vci/src/schema.rs", - "sha256": "0cc005a1e55672ce3a11ad5fd0c4e714155ec6e4b003328bd025a88d29d455b3" + "sha256": "9e58fd6d09d319ddeffec54795a92fc910a0a9ccb361734ea8f7ce698c043540" }, "artifact": { "path": "products/evidence/generated/oid4vci-runtime/oid4vci-runtime.schema.json", - "sha256": "701ee38be07cd80d8fd73a393abfb243511d3accd7a34124893c39781d883191", + "sha256": "fb01195c02d6b94784e17ea07f6de45f56370df8af933a2bb2142a3fd18c9146", + "mediaType": "application/schema+json" + } + }, + { + "uri": "https://id.registrystack.org/schemas/evidence/oid4vp-runtime/oid4vp-runtime.v1alpha1.schema.json", + "kind": "schema", + "status": "active", + "compatibilityLine": "v1alpha1", + "owner": "evidence", + "title": "Evidence OpenID4VP verifier runtime configuration", + "description": "Evidence OpenID4VP verifier runtime configuration JSON Schema.", + "source": { + "path": "crates/registry-evidence-oid4vp/src/schema.rs", + "sha256": "7f111792435d2d9d6c18174e157b8ff05b3f19d733c2ea19f7327eaa99268eb4" + }, + "artifact": { + "path": "products/evidence/generated/oid4vp-runtime/oid4vp-runtime.schema.json", + "sha256": "225b0d03402f422442432fd5195ccf3483ef79cf744d883bbfb9e96ba89e6465", "mediaType": "application/schema+json" } }, @@ -5230,7 +5607,7 @@ }, "artifact": { "path": "crates/registry-evidencectl/schemas/authoring/project.schema.json", - "sha256": "62c45846105e0231417e0450568a899ea05f78f41250b450353c074407cc5f26", + "sha256": "f91af7d0c873134675c27063eafcea7500210443225dd0f9e8309e1f6680f13d", "mediaType": "application/schema+json" } }, @@ -5244,11 +5621,11 @@ "description": "Evidence frozen Version 1 contract and configuration schemas, written as YAML.", "source": { "path": "products/evidence/contracts/runtime.schema.yaml", - "sha256": "fd4ef085ef94087f5fa6d846a284957345d5463df44372c5667ea1a8cf643d0d" + "sha256": "24b19bc056dd4048d1f02b3270743d3c30c052cb5875b240e8d9b5d06029ecfb" }, "artifact": { "path": "products/evidence/contracts/runtime.schema.yaml", - "sha256": "fd4ef085ef94087f5fa6d846a284957345d5463df44372c5667ea1a8cf643d0d", + "sha256": "24b19bc056dd4048d1f02b3270743d3c30c052cb5875b240e8d9b5d06029ecfb", "mediaType": "application/yaml" } }, @@ -5284,7 +5661,7 @@ }, "artifact": { "path": "crates/registry-evidencectl/schemas/authoring/target-authority.schema.json", - "sha256": "a1bab27c4778502d75e2041b7d38dd0dc9cfffaa91d52625813b16cf694b9b22", + "sha256": "4a4b93a4cca9568c089166b2d7f2ee13306b4abcba7289f4b5290d55ef44d644", "mediaType": "application/schema+json" } }, @@ -5316,11 +5693,11 @@ "description": "Evidence frozen Version 1 contract and configuration schemas, written as YAML.", "source": { "path": "products/evidence/contracts/verification-policy.schema.yaml", - "sha256": "b6a7e7200bf014a4b31dd064aa39bcbdb60fb624ef8c305f4c3431958b47bb12" + "sha256": "d54c2e60d478680238197bd57d5d5baf83975cf6f30a359d0d331d31f333495f" }, "artifact": { "path": "products/evidence/contracts/verification-policy.schema.yaml", - "sha256": "b6a7e7200bf014a4b31dd064aa39bcbdb60fb624ef8c305f4c3431958b47bb12", + "sha256": "d54c2e60d478680238197bd57d5d5baf83975cf6f30a359d0d331d31f333495f", "mediaType": "application/yaml" } }, @@ -5392,7 +5769,7 @@ }, "artifact": { "path": "products/messaging/generated/authoring/project.schema.json", - "sha256": "af3c4d9d5e6da2a07c2d26fc9a06f7bdb3358f6145c54b25d7a045d3066c09e6", + "sha256": "2a6983bc79d8bf3bae405d3428189c364e643460bcce5930f60e21fde9c31865", "mediaType": "application/schema+json" } }, @@ -5428,7 +5805,7 @@ }, "artifact": { "path": "products/messaging/generated/runtime/runtime.schema.json", - "sha256": "d2c4ef5c2ca281c720117c95c5b136be7353d1da70a99f9c9455dd6b94dcae7b", + "sha256": "56b15b5ec2c5a799f9debd7d034cf8f7a490c76c71458720b6469c98b3a469b5", "mediaType": "application/schema+json" } }, @@ -5504,6 +5881,42 @@ "mediaType": "application/schema+json" } }, + { + "uri": "https://id.registrystack.org/schemas/platform/identity-deployment/identity-deployment.v1.schema.json", + "kind": "schema", + "status": "active", + "compatibilityLine": "v1", + "owner": "platform", + "title": "Registry Stack identity deployment", + "description": "Registry Stack identity deployment JSON Schema.", + "source": { + "path": "crates/registry-thunderid-tooling/src/schema.rs", + "sha256": "3c54de0035540767520565700458e3bb8cf74eb4394ca6c67b908f045a76211b" + }, + "artifact": { + "path": "products/platform/schemas/identity-deployment.schema.json", + "sha256": "20b5224ee58a88324552ba4eef77132273ac2b6609e178db001dc57dd1d63077", + "mediaType": "application/schema+json" + } + }, + { + "uri": "https://id.registrystack.org/schemas/platform/identity-facts/identity-facts.v1.schema.json", + "kind": "schema", + "status": "active", + "compatibilityLine": "v1", + "owner": "platform", + "title": "Registry Stack identity facts", + "description": "Registry Stack product identity facts JSON Schema.", + "source": { + "path": "crates/registry-thunderid-tooling/src/schema.rs", + "sha256": "3c54de0035540767520565700458e3bb8cf74eb4394ca6c67b908f045a76211b" + }, + "artifact": { + "path": "products/platform/schemas/identity-facts.schema.json", + "sha256": "c347ed37907da3fbef25720354b8042c3ce8477437c4a38b81ce2aa718c0b96c", + "mediaType": "application/schema+json" + } + }, { "uri": "https://id.registrystack.org/schemas/platform/mcp-runtime/mcp-runtime.v1alpha1.schema.json", "kind": "schema", @@ -5532,7 +5945,7 @@ "description": "Registry Stack task connection JSON Schema.", "source": { "path": "crates/registry-thunderid-tooling/src/schema.rs", - "sha256": "a0d71d083c0502cd9f9805451c1f80a1f0cf5623df094886cb1a6a140ce8bfe0" + "sha256": "3c54de0035540767520565700458e3bb8cf74eb4394ca6c67b908f045a76211b" }, "artifact": { "path": "products/platform/schemas/task-connection.schema.json", @@ -5568,11 +5981,11 @@ "description": "Registry Render bundle manifest, label table, and runtime configuration JSON Schema.", "source": { "path": "crates/registry-render/src/schema.rs", - "sha256": "187b3c8a7cb457962a2cadc80432af5c81124641ca356f539f634a5c2403a309" + "sha256": "acd150211c62d59faa685a76727ffa2e52d9f6e858ec49a10f51add49f430f30" }, "artifact": { "path": "products/render/schemas/bundle.schema.json", - "sha256": "48c416e7a409cde355bb7e7a1a1bd8eac6248e65867fd76b55b777d4b6e335d2", + "sha256": "cdc74748bb3e149abc012ed32d5f3518867e70465a51a88628df99903bd9df5f", "mediaType": "application/schema+json" } }, @@ -5586,7 +5999,7 @@ "description": "Registry Render bundle manifest, label table, and runtime configuration JSON Schema.", "source": { "path": "crates/registry-render/src/schema.rs", - "sha256": "187b3c8a7cb457962a2cadc80432af5c81124641ca356f539f634a5c2403a309" + "sha256": "acd150211c62d59faa685a76727ffa2e52d9f6e858ec49a10f51add49f430f30" }, "artifact": { "path": "products/render/schemas/labels.schema.json", @@ -5604,11 +6017,11 @@ "description": "Registry Render bundle manifest, label table, and runtime configuration JSON Schema.", "source": { "path": "crates/registry-render/src/schema.rs", - "sha256": "187b3c8a7cb457962a2cadc80432af5c81124641ca356f539f634a5c2403a309" + "sha256": "acd150211c62d59faa685a76727ffa2e52d9f6e858ec49a10f51add49f430f30" }, "artifact": { "path": "products/render/schemas/runtime.schema.json", - "sha256": "e853c774b697a8debb56537eb3a14c4e8c32f9fa8771eba1cd05eb397505b3c6", + "sha256": "b5f7140e63c4307838e4b26286f0aad064577c7facc5e7423e1b63887d9afb95", "mediaType": "application/schema+json" } }, @@ -5644,7 +6057,7 @@ }, "artifact": { "path": "products/scheduling/generated/project/project.schema.json", - "sha256": "1cb82ae0e7ec13bf7d54b109546a4d68cb2b3b031868941728dba209bea8bf21", + "sha256": "ff888718d437664e4ca5095c5e58016539c58e535f512ea873a210929fd5df80", "mediaType": "application/schema+json" } }, diff --git a/src/upstream/source.json b/src/upstream/source.json index 842b14591..14137a947 100644 --- a/src/upstream/source.json +++ b/src/upstream/source.json @@ -1,7 +1,7 @@ { "version": 1, "repository": "https://github.com/registrystack/registry-stack", - "commit": "c0487fdbe36db15eadaecccb5bcd5e03317267b4", + "commit": "4ee5c22b4ae739882a5047ac8ae3d12c29097f8b", "catalog_path": "products/identifiers/generated/catalog.v1.json", - "catalog_sha256": "e4e81cbe34aa3c76f13ee1aafb8f1144001ac8ccf08243fdea068fa57adc6f0a" + "catalog_sha256": "998d5eb865af548d0b8890838f616af036541245f967c2142409f219addae693" }