From 3698f268f7939ddee2eefd7b32c06080681bdd1e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 3 Nov 2026 21:21:02 +0000 Subject: [PATCH] chore: sync Registry Stack identifiers Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- public/_headers | 10 + ...eaaaf7dfcea0f508364a76de142b93c6a0a14.json | 628 ++ ...7bdefcbf9e10b12d3b103fc100ebead1e346e.json | 338 + ...675ad65df5231867907b41d11fdd2979cdc.jsonld | 138 + ...53c36851acc57b094b74ec2665150f1ace8d4.yaml | 2208 +++++++ ...dd7ce4f11998edada848a834ef9dfbc3c5c3e.json | 855 +++ ...bbeef3552cafa59c2281405be83ccd5390435.json | 370 ++ ...af51b41c4d1d1e0e26d04ab3e59c158c150a7.json | 488 ++ ...d06891ef4b73813aab1dd802c567daac70d16.json | 1134 ++++ ...17a220263e669b397a414d98ead9d47af459a.json | 5729 +++++++++++++++++ ...cdfd367ccc703c8676a350af4299b59ebb043.json | 1620 +++++ ...fb3a99ac5a2e9cd01645fdda8dfeb593eb688.json | 427 ++ ...6fa555839e18ae1a3136cf3e895ad5e6f6dcb.json | 2467 +++++++ ...a899ea05f78f41250b450353c074407cc5f26.json | 1117 ++++ ...972bc5481a957b84a4cb70b3f40f82ac970d3.json | 387 ++ ...b651d1cfe8c33cb5423891902bab4d5f8173e.json | 506 ++ ...66cc2d38b16e171c963b4988175c74f627664.json | 467 ++ ...1f59b160449472bcd0b6c99e45ad776d20f80.json | 4476 +++++++++++++ ...ff52092e0f6c4cd42b471024ead336b6d8a9e.json | 4767 ++++++++++++++ ...da9f8897761cd15066c4281500836306ea09e.json | 1332 ++++ ...7d5c8635583e2a0ca63f2d75556840a804202.json | 1041 +++ ...7c19da49d9766d71839602a0e81cecc447d8b.json | 1040 +++ ...10766bc240f395e27b0480b2e193e74e2ee.jsonld | 33 + ...b2fe729cf54792d76134cf22aa1be1cc7abf4a8.md | 132 + ...4f4058e29de07f01c0cbc0dd13f069649bcc9.json | 429 ++ ...c0af4c1c043e74eec71252259e70bab88b73d.json | 923 +++ ...854e2e003b1c952f9aad847b30ed1e3b8cf2a.json | 201 + ...53e90920341c246a6d05f56e4b4b4b8eb85b0.json | 1047 +++ ...4957345d5463df44372c5667ea1a8cf643d0d.yaml | 607 ++ public/contexts/index.json | 10 +- public/contexts/registry-record/v1 | 4 +- public/contexts/registry-record/v1.html | 4 +- public/index.html | 8 +- public/namespaces/index.json | 4 +- public/ns/registry-manifest/v1.json | 4 +- public/ns/registry-manifest/v1/index.html | 4 +- public/problems/index.html | 4 +- public/problems/index.json | 744 ++- .../registry-breg/action/evidence_failed.json | 4 +- .../action/evidence_failed/index.html | 4 +- .../registry-breg/action/guard_failed.json | 4 +- .../action/guard_failed/index.html | 4 +- .../registry-breg/action/handler_failed.json | 4 +- .../action/handler_failed/index.html | 4 +- .../registry-breg/action/refused.json | 4 +- .../registry-breg/action/refused/index.html | 4 +- .../registry-breg/authentication/refused.json | 4 +- .../authentication/refused/index.html | 4 +- .../registry-breg/idempotency/expired.json | 4 +- .../idempotency/expired/index.html | 4 +- .../registry-breg/idempotency/key-reused.json | 4 +- .../idempotency/key-reused/index.html | 4 +- .../ingestion/chunk_mismatch.json | 4 +- .../ingestion/chunk_mismatch/index.html | 4 +- .../ingestion/profile_mismatch.json | 4 +- .../ingestion/profile_mismatch/index.html | 4 +- .../ingestion/receipt_erased.json | 4 +- .../ingestion/receipt_erased/index.html | 4 +- .../registry-breg/ingestion/run_blocked.json | 4 +- .../ingestion/run_blocked/index.html | 4 +- .../registry-breg/ingestion/run_not_open.json | 4 +- .../ingestion/run_not_open/index.html | 4 +- .../registry-breg/lookup/unresolved.json | 4 +- .../lookup/unresolved/index.html | 4 +- .../registry-breg/mutation/conflict.json | 4 +- .../mutation/conflict/index.html | 4 +- .../registry-breg/precondition/failed.json | 4 +- .../precondition/failed/index.html | 4 +- .../registry-breg/precondition/required.json | 4 +- .../precondition/required/index.html | 4 +- .../registry-breg/proposal/rejected.json | 4 +- .../proposal/rejected/index.html | 4 +- .../proposal/review_result_mismatch.json | 4 +- .../review_result_mismatch/index.html | 4 +- .../proposal/submission_expired.json | 4 +- .../proposal/submission_expired/index.html | 4 +- .../registry-breg/query/cursor_invalid.json | 4 +- .../query/cursor_invalid/index.html | 4 +- .../problems/registry-breg/query/invalid.json | 4 +- .../registry-breg/query/invalid/index.html | 4 +- .../registry-breg/request/invalid.json | 4 +- .../registry-breg/request/invalid/index.html | 4 +- .../registry-breg/request/timeout.json | 4 +- .../registry-breg/request/timeout/index.html | 4 +- .../registry-breg/resource/not_found.json | 4 +- .../resource/not_found/index.html | 4 +- .../runtime/field_encryption/unavailable.json | 4 +- .../field_encryption/unavailable/index.html | 4 +- .../registry-breg/runtime/not_ready.json | 4 +- .../runtime/not_ready/index.html | 4 +- .../registry-breg/service/unavailable.json | 4 +- .../service/unavailable/index.html | 4 +- .../registry-breg/source/unavailable.json | 4 +- .../source/unavailable/index.html | 4 +- .../statistical_dataset/domain_violation.json | 4 +- .../domain_violation/index.html | 4 +- .../statistical_dataset/release_refused.json | 4 +- .../release_refused/index.html | 4 +- .../statistical_dataset/version_conflict.json | 4 +- .../version_conflict/index.html | 4 +- .../version_withdrawn.json | 4 +- .../version_withdrawn/index.html | 4 +- .../registry-breg/unsupported/media_type.json | 4 +- .../unsupported/media_type/index.html | 4 +- .../registry-breg/write/outside-boundary.json | 44 + .../write/outside-boundary/index.html | 161 + .../absence/cover-cycle.json | 4 +- .../absence/cover-cycle/index.html | 4 +- .../absence/invalid-period.json | 4 +- .../absence/invalid-period/index.html | 4 +- .../registry-casework/absence/overlap.json | 4 +- .../absence/overlap/index.html | 4 +- .../registry-casework/absence/self-cover.json | 4 +- .../absence/self-cover/index.html | 4 +- .../authentication/refused.json | 4 +- .../authentication/refused/index.html | 4 +- .../clock/recompute-preview-expired.json | 4 +- .../recompute-preview-expired/index.html | 4 +- .../registry-casework/cursor/expired.json | 4 +- .../cursor/expired/index.html | 4 +- .../registry-casework/cursor/invalid.json | 4 +- .../cursor/invalid/index.html | 4 +- .../idempotency/expired.json | 4 +- .../idempotency/expired/index.html | 4 +- .../idempotency/key-reused.json | 4 +- .../idempotency/key-reused/index.html | 4 +- .../operation/not-authorized.json | 4 +- .../operation/not-authorized/index.html | 4 +- .../precondition/failed.json | 4 +- .../precondition/failed/index.html | 4 +- .../precondition/required.json | 4 +- .../precondition/required/index.html | 4 +- .../profile/not-authorized.json | 4 +- .../profile/not-authorized/index.html | 4 +- .../registry-casework/profile/not-human.json | 4 +- .../profile/not-human/index.html | 4 +- .../request/body-too-large.json | 4 +- .../request/body-too-large/index.html | 4 +- .../registry-casework/request/invalid.json | 4 +- .../request/invalid/index.html | 4 +- .../request/limit-out-of-range.json | 4 +- .../request/limit-out-of-range/index.html | 4 +- .../request/method-not-allowed.json | 4 +- .../request/method-not-allowed/index.html | 4 +- .../registry-casework/request/not-found.json | 4 +- .../request/not-found/index.html | 4 +- .../request/unprocessable.json | 4 +- .../request/unprocessable/index.html | 4 +- .../request/unsupported-media-type.json | 4 +- .../request/unsupported-media-type/index.html | 4 +- .../review/distinct-approver-required.json | 4 +- .../distinct-approver-required/index.html | 4 +- .../review/initiator-excluded.json | 4 +- .../review/initiator-excluded/index.html | 4 +- .../review/initiator-required.json | 4 +- .../review/initiator-required/index.html | 4 +- .../review/policy-mismatch.json | 4 +- .../review/policy-mismatch/index.html | 4 +- .../review/query-too-broad.json | 4 +- .../review/query-too-broad/index.html | 4 +- .../review/result-expired.json | 4 +- .../review/result-expired/index.html | 4 +- .../review/submission-conflict.json | 4 +- .../review/submission-conflict/index.html | 4 +- .../review/task-not-held.json | 4 +- .../review/task-not-held/index.html | 4 +- .../registry-casework/runtime/failure.json | 4 +- .../runtime/failure/index.html | 4 +- .../service/unavailable.json | 4 +- .../service/unavailable/index.html | 4 +- .../source-profile/not-applicable.json | 4 +- .../source-profile/not-applicable/index.html | 4 +- .../source-profile/required.json | 4 +- .../source-profile/required/index.html | 4 +- .../registry-casework/source/bad-gateway.json | 4 +- .../source/bad-gateway/index.html | 4 +- .../source/version-mismatch.json | 4 +- .../source/version-mismatch/index.html | 4 +- .../source/version-unavailable.json | 4 +- .../source/version-unavailable/index.html | 4 +- .../registry-coordinator/admission/held.json | 4 +- .../admission/held/index.html | 4 +- .../admission/recovery-only.json | 4 +- .../admission/recovery-only/index.html | 4 +- .../audit/response-unavailable.json | 4 +- .../audit/response-unavailable/index.html | 4 +- .../authentication/refused.json | 4 +- .../authentication/refused/index.html | 4 +- .../binding/conflict.json | 4 +- .../binding/conflict/index.html | 4 +- .../binding/live-conflict.json | 4 +- .../binding/live-conflict/index.html | 4 +- .../check/not-waiting.json | 44 + .../check/not-waiting/index.html | 161 + .../definition/refused.json | 4 +- .../definition/refused/index.html | 4 +- .../deployment/activation-changed.json | 4 +- .../deployment/activation-changed/index.html | 4 +- .../deployment/refused.json | 4 +- .../deployment/refused/index.html | 4 +- .../evaluation/uncertain.json | 4 +- .../evaluation/uncertain/index.html | 4 +- .../registry-coordinator/event/invalid.json | 4 +- .../event/invalid/index.html | 4 +- .../event/source-unavailable.json | 4 +- .../event/source-unavailable/index.html | 4 +- .../registry-coordinator/event/too-large.json | 4 +- .../event/too-large/index.html | 4 +- .../event/unauthenticated.json | 4 +- .../event/unauthenticated/index.html | 4 +- .../registry-coordinator/execution/held.json | 4 +- .../execution/held/index.html | 4 +- .../idempotency/key-invalid.json | 4 +- .../idempotency/key-invalid/index.html | 4 +- .../idempotency/key-reused.json | 4 +- .../idempotency/key-reused/index.html | 4 +- .../registry-coordinator/input/invalid.json | 4 +- .../input/invalid/index.html | 4 +- .../mutation/uncertain.json | 4 +- .../mutation/uncertain/index.html | 4 +- .../operation/not-authorized.json | 4 +- .../operation/not-authorized/index.html | 4 +- .../registry-coordinator/receipt/expired.json | 4 +- .../receipt/expired/index.html | 4 +- .../registry-coordinator/reconcile/raced.json | 4 +- .../reconcile/raced/index.html | 4 +- .../reconcile/refused.json | 4 +- .../reconcile/refused/index.html | 4 +- .../reconcile/unsupported.json | 4 +- .../reconcile/unsupported/index.html | 4 +- .../request/body-too-large.json | 4 +- .../request/body-too-large/index.html | 4 +- .../registry-coordinator/request/invalid.json | 4 +- .../request/invalid/index.html | 4 +- .../request/limit-out-of-range.json | 4 +- .../request/limit-out-of-range/index.html | 4 +- .../request/method-not-allowed.json | 4 +- .../request/method-not-allowed/index.html | 4 +- .../request/not-found.json | 4 +- .../request/not-found/index.html | 4 +- .../request/reason-invalid.json | 4 +- .../request/reason-invalid/index.html | 4 +- .../request/retention-invalid.json | 4 +- .../request/retention-invalid/index.html | 4 +- .../request/unprocessable.json | 4 +- .../request/unprocessable/index.html | 4 +- .../request/unsupported-media-type.json | 4 +- .../request/unsupported-media-type/index.html | 4 +- .../restore/hold-required.json | 4 +- .../restore/hold-required/index.html | 4 +- .../restore/lease-incompatible.json | 4 +- .../restore/lease-incompatible/index.html | 4 +- .../restore/review-required.json | 4 +- .../restore/review-required/index.html | 4 +- .../restore/unresolved.json | 4 +- .../restore/unresolved/index.html | 4 +- .../registry-coordinator/retry/refused.json | 4 +- .../retry/refused/index.html | 4 +- .../run/definition-incompatible.json | 4 +- .../run/definition-incompatible/index.html | 4 +- .../registry-coordinator/run/not-visible.json | 4 +- .../run/not-visible/index.html | 4 +- .../run/payload-erased.json | 4 +- .../run/payload-erased/index.html | 4 +- .../registry-coordinator/runtime/failure.json | 4 +- .../runtime/failure/index.html | 4 +- .../service/unavailable.json | 4 +- .../service/unavailable/index.html | 4 +- .../workflow/not-served.json | 4 +- .../workflow/not-served/index.html | 4 +- .../workflow/revision-mismatch.json | 4 +- .../workflow/revision-mismatch/index.html | 4 +- .../registry-discovery/invalid-request.json | 2 +- .../invalid-request/index.html | 2 +- .../registry-discovery/not-found.json | 2 +- .../registry-discovery/not-found/index.html | 2 +- .../result-bound-exceeded.json | 2 +- .../result-bound-exceeded/index.html | 2 +- .../registry-discovery/unavailable.json | 2 +- .../registry-discovery/unavailable/index.html | 2 +- .../authentication/refused.json | 2 +- .../authentication/refused/index.html | 2 +- .../custody/not-permitted.json | 2 +- .../custody/not-permitted/index.html | 2 +- .../custody/quota-exceeded.json | 2 +- .../custody/quota-exceeded/index.html | 2 +- .../document-grant/expiry-out-of-range.json | 2 +- .../expiry-out-of-range/index.html | 2 +- .../document-policy/unknown.json | 2 +- .../document-policy/unknown/index.html | 2 +- .../document-version/not-releasable.json | 2 +- .../not-releasable/index.html | 2 +- .../document/content-type-not-allowed.json | 2 +- .../content-type-not-allowed/index.html | 2 +- .../document/too-large.json | 2 +- .../document/too-large/index.html | 2 +- .../idempotency/expired.json | 2 +- .../idempotency/expired/index.html | 2 +- .../idempotency/key-reused.json | 2 +- .../idempotency/key-reused/index.html | 2 +- .../profile/not-authorized.json | 2 +- .../profile/not-authorized/index.html | 2 +- .../request/body-too-large.json | 2 +- .../request/body-too-large/index.html | 2 +- .../registry-documents/request/invalid.json | 2 +- .../request/invalid/index.html | 2 +- .../request/method-not-allowed.json | 2 +- .../request/method-not-allowed/index.html | 2 +- .../registry-documents/request/not-found.json | 2 +- .../request/not-found/index.html | 2 +- .../request/unprocessable.json | 2 +- .../request/unprocessable/index.html | 2 +- .../request/unsupported-media-type.json | 2 +- .../request/unsupported-media-type/index.html | 2 +- .../resource/not-found.json | 2 +- .../resource/not-found/index.html | 2 +- .../service/unavailable.json | 2 +- .../service/unavailable/index.html | 2 +- .../upload/content-type-mismatch.json | 2 +- .../upload/content-type-mismatch/index.html | 2 +- .../upload/digest-mismatch.json | 2 +- .../upload/digest-mismatch/index.html | 2 +- .../registry-documents/upload/expired.json | 2 +- .../upload/expired/index.html | 2 +- .../registry-documents/upload/finalized.json | 2 +- .../upload/finalized/index.html | 2 +- .../upload/length-mismatch.json | 2 +- .../upload/length-mismatch/index.html | 2 +- .../auth/invalid-credential.json | 2 +- .../auth/invalid-credential/index.html | 2 +- .../registry-evidence/evidence/denied.json | 2 +- .../evidence/denied/index.html | 2 +- .../evidence/invalid-request.json | 2 +- .../evidence/invalid-request/index.html | 2 +- .../evidence/rate-limited.json | 2 +- .../evidence/rate-limited/index.html | 2 +- .../evidence/unavailable.json | 2 +- .../evidence/unavailable/index.html | 2 +- .../registry-evidence/format/unsupported.json | 2 +- .../format/unsupported/index.html | 2 +- .../request/selector-invalid.json | 2 +- .../request/selector-invalid/index.html | 2 +- .../registry-evidence/resource/not-found.json | 2 +- .../resource/not-found/index.html | 2 +- .../service/unavailable.json | 2 +- .../service/unavailable/index.html | 2 +- .../registry-evidence/source/unavailable.json | 2 +- .../source/unavailable/index.html | 2 +- .../authentication/refused.json | 2 +- .../authentication/refused/index.html | 2 +- .../callback/unreadable.json | 2 +- .../callback/unreadable/index.html | 2 +- .../callback/unverified.json | 2 +- .../callback/unverified/index.html | 2 +- .../registry-messaging/content/invalid.json | 2 +- .../content/invalid/index.html | 2 +- .../registry-messaging/content/too-large.json | 2 +- .../content/too-large/index.html | 2 +- .../content/too-many-segments.json | 2 +- .../content/too-many-segments/index.html | 2 +- .../idempotency/expired.json | 2 +- .../idempotency/expired/index.html | 2 +- .../idempotency/key-reused.json | 2 +- .../idempotency/key-reused/index.html | 2 +- .../message/dispatch-started.json | 2 +- .../message/dispatch-started/index.html | 2 +- .../message/not-visible.json | 2 +- .../message/not-visible/index.html | 2 +- .../registry-messaging/message/terminal.json | 2 +- .../message/terminal/index.html | 2 +- .../operation/not-authorized.json | 2 +- .../operation/not-authorized/index.html | 2 +- .../profile/not-authorized.json | 2 +- .../profile/not-authorized/index.html | 2 +- .../registry-messaging/quota/exceeded.json | 2 +- .../quota/exceeded/index.html | 2 +- .../rate-limit/exceeded.json | 2 +- .../rate-limit/exceeded/index.html | 2 +- .../receipt/unresolved.json | 2 +- .../receipt/unresolved/index.html | 2 +- .../request/body-too-large.json | 2 +- .../request/body-too-large/index.html | 2 +- .../registry-messaging/request/invalid.json | 2 +- .../request/invalid/index.html | 2 +- .../request/method-not-allowed.json | 2 +- .../request/method-not-allowed/index.html | 2 +- .../registry-messaging/request/not-found.json | 2 +- .../request/not-found/index.html | 2 +- .../request/unprocessable.json | 2 +- .../request/unprocessable/index.html | 2 +- .../request/unsupported-media-type.json | 2 +- .../request/unsupported-media-type/index.html | 2 +- .../service/unavailable.json | 2 +- .../service/unavailable/index.html | 2 +- .../template/data-invalid.json | 2 +- .../template/data-invalid/index.html | 2 +- .../template/locale-unavailable.json | 2 +- .../template/locale-unavailable/index.html | 2 +- .../template/not-found.json | 2 +- .../template/not-found/index.html | 2 +- .../template/render-refused.json | 2 +- .../template/render-refused/index.html | 2 +- .../authentication/refused.json | 2 +- .../authentication/refused/index.html | 2 +- .../booking/duplicate-active.json | 2 +- .../booking/duplicate-active/index.html | 2 +- .../cancellation/cutoff-passed.json | 2 +- .../cancellation/cutoff-passed/index.html | 2 +- .../capability/unmatched.json | 2 +- .../capability/unmatched/index.html | 2 +- .../capacity/exhausted.json | 2 +- .../capacity/exhausted/index.html | 2 +- .../registry-scheduling/cursor/expired.json | 2 +- .../cursor/expired/index.html | 2 +- .../registry-scheduling/cursor/invalid.json | 2 +- .../cursor/invalid/index.html | 2 +- .../eligibility/unavailable.json | 2 +- .../eligibility/unavailable/index.html | 2 +- .../registry-scheduling/hold/expired.json | 2 +- .../hold/expired/index.html | 2 +- .../registry-scheduling/hold/released.json | 2 +- .../hold/released/index.html | 2 +- .../registry-scheduling/hook/unavailable.json | 2 +- .../hook/unavailable/index.html | 2 +- .../registry-scheduling/horizon/outside.json | 2 +- .../horizon/outside/index.html | 2 +- .../idempotency/expired.json | 2 +- .../idempotency/expired/index.html | 2 +- .../idempotency/key-reused.json | 2 +- .../idempotency/key-reused/index.html | 2 +- .../registry-scheduling/location/closed.json | 2 +- .../location/closed/index.html | 2 +- .../operation/not-authorized.json | 2 +- .../operation/not-authorized/index.html | 2 +- .../party/capacity-inadequate.json | 2 +- .../party/capacity-inadequate/index.html | 2 +- .../registry-scheduling/policy/changed.json | 2 +- .../policy/changed/index.html | 2 +- .../precondition/failed.json | 2 +- .../precondition/failed/index.html | 2 +- .../precondition/required.json | 2 +- .../precondition/required/index.html | 2 +- .../prerequisite/missing.json | 2 +- .../prerequisite/missing/index.html | 2 +- .../profile/not-authorized.json | 2 +- .../profile/not-authorized/index.html | 2 +- .../receipt/unresolved.json | 2 +- .../receipt/unresolved/index.html | 2 +- .../request/body-too-large.json | 2 +- .../request/body-too-large/index.html | 2 +- .../registry-scheduling/request/invalid.json | 2 +- .../request/invalid/index.html | 2 +- .../request/method-not-allowed.json | 2 +- .../request/method-not-allowed/index.html | 2 +- .../request/not-found.json | 2 +- .../request/not-found/index.html | 2 +- .../request/unprocessable.json | 2 +- .../request/unprocessable/index.html | 2 +- .../request/unsupported-media-type.json | 2 +- .../request/unsupported-media-type/index.html | 2 +- .../resource/unavailable.json | 2 +- .../resource/unavailable/index.html | 2 +- .../revision/mismatch.json | 2 +- .../revision/mismatch/index.html | 2 +- .../schedule/unpublished.json | 2 +- .../schedule/unpublished/index.html | 2 +- .../service/unavailable.json | 2 +- .../service/unavailable/index.html | 2 +- public/profiles/breg-odrl/v1 | 138 + public/profiles/breg-odrl/v1.html | 100 + public/profiles/index.html | 3 +- public/profiles/index.json | 44 +- public/profiles/registry-record/v1 | 8 +- public/profiles/registry-record/v1.html | 4 +- .../effective-contract.v1alpha1.schema.json | 427 ++ .../index.html | 100 + .../fixture/fixture.v1alpha1.schema.json | 429 ++ .../fixture.v1alpha1.schema/index.html | 100 + .../job-runtime.v1alpha1.schema.json | 1040 +++ .../job-runtime.v1alpha1.schema/index.html | 100 + .../adapter/job/job.v1alpha1.schema.json | 488 ++ .../job/job.v1alpha1.schema/index.html | 100 + .../adapter/pack/pack.v1alpha1.schema.json | 2467 +++++++ .../pack/pack.v1alpha1.schema/index.html | 100 + .../profile/profile.v1alpha1.schema.json | 387 ++ .../profile.v1alpha1.schema/index.html | 100 + .../project/project.v1alpha1.schema.json | 370 ++ .../project.v1alpha1.schema/index.html | 100 + .../runtime/runtime.v1alpha1.schema.json | 628 ++ .../runtime.v1alpha1.schema/index.html | 100 + .../index.html | 2 +- .../access-explanation.v1alpha8.schema.json | 923 +++ .../index.html | 100 + .../migration-descriptor.v1alpha1.schema.json | 15 +- .../index.html | 4 +- .../breg/module/module.v1alpha1.schema.json | 146 +- .../module/module.v1alpha1.schema/index.html | 4 +- .../breg/project/project.v1alpha1.schema.json | 167 +- .../project.v1alpha1.schema/index.html | 4 +- .../breg/runtime/runtime.v1alpha1.schema.json | 32 +- .../runtime.v1alpha1.schema/index.html | 4 +- .../dev-clients.v1alpha1.schema.json | 42 + .../dev-clients.v1alpha1.schema/index.html | 4 +- .../report/report.v1alpha2.schema.json | 2441 ++++--- .../report/report.v1alpha2.schema/index.html | 4 +- .../runtime/runtime.v1alpha1.schema.json | 125 + .../runtime.v1alpha1.schema/index.html | 4 +- .../project/project.v1alpha1.schema.json | 223 +- .../project.v1alpha1.schema/index.html | 4 +- .../runtime/runtime.v1alpha1.schema.json | 14 + .../runtime.v1alpha1.schema/index.html | 4 +- .../evidence/bundle/bundle.v1.schema.json | 1946 +----- .../bundle/bundle.v1.schema/index.html | 4 +- .../fixture/fixture.v1alpha1.schema.json | 11 +- .../fixture.v1alpha1.schema/index.html | 4 +- .../project/project.v1alpha1.schema.json | 377 +- .../project.v1alpha1.schema/index.html | 4 +- .../runtime/runtime.v1alpha1.schema.json | 171 +- .../runtime.v1alpha1.schema/index.html | 4 +- .../target/target.v1alpha1.schema.json | 176 +- .../target/target.v1alpha1.schema/index.html | 4 +- public/schemas/index.html | 14 +- public/schemas/index.json | 600 +- .../mcp-runtime.v1alpha1.schema.json | 855 +++ .../mcp-runtime.v1alpha1.schema/index.html | 100 + public/schemas/registry-record/v1 | 14 +- public/schemas/registry-record/v1.html | 4 +- public/vocab/breg-odrl/index.html | 131 + public/vocab/breg-odrl/index.json | 30 + public/vocab/registry-record/index.html | 4 +- public/vocab/registry-record/index.json | 4 +- public/vocabularies/index.html | 3 +- public/vocabularies/index.json | 34 +- src/artifacts/media-types.json | 28 + ...eaaaf7dfcea0f508364a76de142b93c6a0a14.json | 628 ++ ...7bdefcbf9e10b12d3b103fc100ebead1e346e.json | 338 + ...675ad65df5231867907b41d11fdd2979cdc.jsonld | 138 + ...53c36851acc57b094b74ec2665150f1ace8d4.yaml | 2208 +++++++ ...dd7ce4f11998edada848a834ef9dfbc3c5c3e.json | 855 +++ ...bbeef3552cafa59c2281405be83ccd5390435.json | 370 ++ ...af51b41c4d1d1e0e26d04ab3e59c158c150a7.json | 488 ++ ...d06891ef4b73813aab1dd802c567daac70d16.json | 1134 ++++ ...17a220263e669b397a414d98ead9d47af459a.json | 5729 +++++++++++++++++ ...cdfd367ccc703c8676a350af4299b59ebb043.json | 1620 +++++ ...fb3a99ac5a2e9cd01645fdda8dfeb593eb688.json | 427 ++ ...6fa555839e18ae1a3136cf3e895ad5e6f6dcb.json | 2467 +++++++ ...a899ea05f78f41250b450353c074407cc5f26.json | 1117 ++++ ...972bc5481a957b84a4cb70b3f40f82ac970d3.json | 387 ++ ...b651d1cfe8c33cb5423891902bab4d5f8173e.json | 506 ++ ...66cc2d38b16e171c963b4988175c74f627664.json | 467 ++ ...1f59b160449472bcd0b6c99e45ad776d20f80.json | 4476 +++++++++++++ ...ff52092e0f6c4cd42b471024ead336b6d8a9e.json | 4767 ++++++++++++++ ...da9f8897761cd15066c4281500836306ea09e.json | 1332 ++++ ...7d5c8635583e2a0ca63f2d75556840a804202.json | 1041 +++ ...7c19da49d9766d71839602a0e81cecc447d8b.json | 1040 +++ ...10766bc240f395e27b0480b2e193e74e2ee.jsonld | 33 + ...b2fe729cf54792d76134cf22aa1be1cc7abf4a8.md | 132 + ...4f4058e29de07f01c0cbc0dd13f069649bcc9.json | 429 ++ ...c0af4c1c043e74eec71252259e70bab88b73d.json | 923 +++ ...854e2e003b1c952f9aad847b30ed1e3b8cf2a.json | 201 + ...53e90920341c246a6d05f56e4b4b4b8eb85b0.json | 1047 +++ ...4957345d5463df44372c5667ea1a8cf643d0d.yaml | 607 ++ src/catalogs/contexts.json | 10 +- src/catalogs/namespaces.json | 4 +- src/catalogs/problems.json | 700 +- src/catalogs/profiles.json | 29 +- src/catalogs/schemas.json | 450 +- src/catalogs/vocabularies.json | 19 +- src/upstream/catalog.v1.json | 539 +- src/upstream/source.json | 4 +- 570 files changed, 85301 insertions(+), 4907 deletions(-) create mode 100644 public/artifacts/sha256/169ce8657f2ab5a3140216b6aeeeaaaf7dfcea0f508364a76de142b93c6a0a14.json create mode 100644 public/artifacts/sha256/2481544f84d61d0bd21ba44e31e7bdefcbf9e10b12d3b103fc100ebead1e346e.json create mode 100644 public/artifacts/sha256/24d0950eb2c1a76d5005850e1145f675ad65df5231867907b41d11fdd2979cdc.jsonld create mode 100644 public/artifacts/sha256/2847a56eda9c8b838d28fde619853c36851acc57b094b74ec2665150f1ace8d4.yaml create mode 100644 public/artifacts/sha256/28757cb955ea96d628ff2442cc9dd7ce4f11998edada848a834ef9dfbc3c5c3e.json create mode 100644 public/artifacts/sha256/2a31e088e66073cf94b5d3769aebbeef3552cafa59c2281405be83ccd5390435.json create mode 100644 public/artifacts/sha256/38818527ae8cf4435485ea3f283af51b41c4d1d1e0e26d04ab3e59c158c150a7.json create mode 100644 public/artifacts/sha256/472c4861ab27a301f077784e63cd06891ef4b73813aab1dd802c567daac70d16.json create mode 100644 public/artifacts/sha256/4babace1053c7b8446b682ce2db17a220263e669b397a414d98ead9d47af459a.json create mode 100644 public/artifacts/sha256/55959ae4cc86f1cd393cca382d7cdfd367ccc703c8676a350af4299b59ebb043.json create mode 100644 public/artifacts/sha256/5bfd55b2ccee480035ee9db13b8fb3a99ac5a2e9cd01645fdda8dfeb593eb688.json create mode 100644 public/artifacts/sha256/6031baaabca785fe6e0adfed4336fa555839e18ae1a3136cf3e895ad5e6f6dcb.json create mode 100644 public/artifacts/sha256/62c45846105e0231417e0450568a899ea05f78f41250b450353c074407cc5f26.json create mode 100644 public/artifacts/sha256/8032fd67f82f517cade8e55c4d3972bc5481a957b84a4cb70b3f40f82ac970d3.json create mode 100644 public/artifacts/sha256/8177563ac1261680db7070b59f8b651d1cfe8c33cb5423891902bab4d5f8173e.json create mode 100644 public/artifacts/sha256/912661673c41c1119a8bd83809c66cc2d38b16e171c963b4988175c74f627664.json create mode 100644 public/artifacts/sha256/9949f5e3a10d4deb0038359d76d1f59b160449472bcd0b6c99e45ad776d20f80.json create mode 100644 public/artifacts/sha256/9d026bf36a11bc83493f835f028ff52092e0f6c4cd42b471024ead336b6d8a9e.json create mode 100644 public/artifacts/sha256/bb19696ad1cf4f6c89de72d1b50da9f8897761cd15066c4281500836306ea09e.json create mode 100644 public/artifacts/sha256/bbbc49cc6aa19d2b6329db459ac7d5c8635583e2a0ca63f2d75556840a804202.json create mode 100644 public/artifacts/sha256/c1be1e7bc8efa01de429ea5a5cd7c19da49d9766d71839602a0e81cecc447d8b.json create mode 100644 public/artifacts/sha256/c336506f4dcd7e266155e8cd1ff9710766bc240f395e27b0480b2e193e74e2ee.jsonld create mode 100644 public/artifacts/sha256/c8685157d8e2982b00657a2a3b2fe729cf54792d76134cf22aa1be1cc7abf4a8.md create mode 100644 public/artifacts/sha256/ca14df9aafa49fd2018a12869e54f4058e29de07f01c0cbc0dd13f069649bcc9.json create mode 100644 public/artifacts/sha256/e9bae5707ef92498b162083958fc0af4c1c043e74eec71252259e70bab88b73d.json create mode 100644 public/artifacts/sha256/e9ddb96d7b521da29b033353ffa854e2e003b1c952f9aad847b30ed1e3b8cf2a.json create mode 100644 public/artifacts/sha256/ef82e91c0f0c3366bd62967be8453e90920341c246a6d05f56e4b4b4b8eb85b0.json create mode 100644 public/artifacts/sha256/fd4ef085ef94087f5fa6d846a284957345d5463df44372c5667ea1a8cf643d0d.yaml create mode 100644 public/problems/registry-breg/write/outside-boundary.json create mode 100644 public/problems/registry-breg/write/outside-boundary/index.html create mode 100644 public/problems/registry-coordinator/check/not-waiting.json create mode 100644 public/problems/registry-coordinator/check/not-waiting/index.html create mode 100644 public/profiles/breg-odrl/v1 create mode 100644 public/profiles/breg-odrl/v1.html create mode 100644 public/schemas/adapter/effective-contract/effective-contract.v1alpha1.schema.json create mode 100644 public/schemas/adapter/effective-contract/effective-contract.v1alpha1.schema/index.html create mode 100644 public/schemas/adapter/fixture/fixture.v1alpha1.schema.json create mode 100644 public/schemas/adapter/fixture/fixture.v1alpha1.schema/index.html create mode 100644 public/schemas/adapter/job-runtime/job-runtime.v1alpha1.schema.json create mode 100644 public/schemas/adapter/job-runtime/job-runtime.v1alpha1.schema/index.html create mode 100644 public/schemas/adapter/job/job.v1alpha1.schema.json create mode 100644 public/schemas/adapter/job/job.v1alpha1.schema/index.html create mode 100644 public/schemas/adapter/pack/pack.v1alpha1.schema.json create mode 100644 public/schemas/adapter/pack/pack.v1alpha1.schema/index.html create mode 100644 public/schemas/adapter/profile/profile.v1alpha1.schema.json create mode 100644 public/schemas/adapter/profile/profile.v1alpha1.schema/index.html create mode 100644 public/schemas/adapter/project/project.v1alpha1.schema.json create mode 100644 public/schemas/adapter/project/project.v1alpha1.schema/index.html create mode 100644 public/schemas/adapter/runtime/runtime.v1alpha1.schema.json create mode 100644 public/schemas/adapter/runtime/runtime.v1alpha1.schema/index.html create mode 100644 public/schemas/breg/access-explanation/access-explanation.v1alpha8.schema.json create mode 100644 public/schemas/breg/access-explanation/access-explanation.v1alpha8.schema/index.html create mode 100644 public/schemas/platform/mcp-runtime/mcp-runtime.v1alpha1.schema.json create mode 100644 public/schemas/platform/mcp-runtime/mcp-runtime.v1alpha1.schema/index.html create mode 100644 public/vocab/breg-odrl/index.html create mode 100644 public/vocab/breg-odrl/index.json create mode 100644 src/artifacts/sha256/169ce8657f2ab5a3140216b6aeeeaaaf7dfcea0f508364a76de142b93c6a0a14.json create mode 100644 src/artifacts/sha256/2481544f84d61d0bd21ba44e31e7bdefcbf9e10b12d3b103fc100ebead1e346e.json create mode 100644 src/artifacts/sha256/24d0950eb2c1a76d5005850e1145f675ad65df5231867907b41d11fdd2979cdc.jsonld create mode 100644 src/artifacts/sha256/2847a56eda9c8b838d28fde619853c36851acc57b094b74ec2665150f1ace8d4.yaml create mode 100644 src/artifacts/sha256/28757cb955ea96d628ff2442cc9dd7ce4f11998edada848a834ef9dfbc3c5c3e.json create mode 100644 src/artifacts/sha256/2a31e088e66073cf94b5d3769aebbeef3552cafa59c2281405be83ccd5390435.json create mode 100644 src/artifacts/sha256/38818527ae8cf4435485ea3f283af51b41c4d1d1e0e26d04ab3e59c158c150a7.json create mode 100644 src/artifacts/sha256/472c4861ab27a301f077784e63cd06891ef4b73813aab1dd802c567daac70d16.json create mode 100644 src/artifacts/sha256/4babace1053c7b8446b682ce2db17a220263e669b397a414d98ead9d47af459a.json create mode 100644 src/artifacts/sha256/55959ae4cc86f1cd393cca382d7cdfd367ccc703c8676a350af4299b59ebb043.json create mode 100644 src/artifacts/sha256/5bfd55b2ccee480035ee9db13b8fb3a99ac5a2e9cd01645fdda8dfeb593eb688.json create mode 100644 src/artifacts/sha256/6031baaabca785fe6e0adfed4336fa555839e18ae1a3136cf3e895ad5e6f6dcb.json create mode 100644 src/artifacts/sha256/62c45846105e0231417e0450568a899ea05f78f41250b450353c074407cc5f26.json create mode 100644 src/artifacts/sha256/8032fd67f82f517cade8e55c4d3972bc5481a957b84a4cb70b3f40f82ac970d3.json create mode 100644 src/artifacts/sha256/8177563ac1261680db7070b59f8b651d1cfe8c33cb5423891902bab4d5f8173e.json create mode 100644 src/artifacts/sha256/912661673c41c1119a8bd83809c66cc2d38b16e171c963b4988175c74f627664.json create mode 100644 src/artifacts/sha256/9949f5e3a10d4deb0038359d76d1f59b160449472bcd0b6c99e45ad776d20f80.json create mode 100644 src/artifacts/sha256/9d026bf36a11bc83493f835f028ff52092e0f6c4cd42b471024ead336b6d8a9e.json create mode 100644 src/artifacts/sha256/bb19696ad1cf4f6c89de72d1b50da9f8897761cd15066c4281500836306ea09e.json create mode 100644 src/artifacts/sha256/bbbc49cc6aa19d2b6329db459ac7d5c8635583e2a0ca63f2d75556840a804202.json create mode 100644 src/artifacts/sha256/c1be1e7bc8efa01de429ea5a5cd7c19da49d9766d71839602a0e81cecc447d8b.json create mode 100644 src/artifacts/sha256/c336506f4dcd7e266155e8cd1ff9710766bc240f395e27b0480b2e193e74e2ee.jsonld create mode 100644 src/artifacts/sha256/c8685157d8e2982b00657a2a3b2fe729cf54792d76134cf22aa1be1cc7abf4a8.md create mode 100644 src/artifacts/sha256/ca14df9aafa49fd2018a12869e54f4058e29de07f01c0cbc0dd13f069649bcc9.json create mode 100644 src/artifacts/sha256/e9bae5707ef92498b162083958fc0af4c1c043e74eec71252259e70bab88b73d.json create mode 100644 src/artifacts/sha256/e9ddb96d7b521da29b033353ffa854e2e003b1c952f9aad847b30ed1e3b8cf2a.json create mode 100644 src/artifacts/sha256/ef82e91c0f0c3366bd62967be8453e90920341c246a6d05f56e4b4b4b8eb85b0.json create mode 100644 src/artifacts/sha256/fd4ef085ef94087f5fa6d846a284957345d5463df44372c5667ea1a8cf643d0d.yaml diff --git a/public/_headers b/public/_headers index aaee27856..c6bfa1430 100644 --- a/public/_headers +++ b/public/_headers @@ -94,6 +94,11 @@ Access-Control-Allow-Origin: * Cache-Control: public, max-age=86400 +/schemas/adapter/*.json + Content-Type: application/schema+json; charset=utf-8 + Access-Control-Allow-Origin: * + Cache-Control: public, max-age=86400 + /schemas/breg/*.json Content-Type: application/schema+json; charset=utf-8 Access-Control-Allow-Origin: * @@ -289,6 +294,11 @@ Access-Control-Allow-Origin: * Cache-Control: public, max-age=86400 +/profiles/breg-odrl/v1 + Content-Type: application/ld+json; charset=utf-8 + Access-Control-Allow-Origin: * + Cache-Control: public, max-age=86400 + /profiles/registry-record/v1 Content-Type: text/markdown; charset=utf-8 Access-Control-Allow-Origin: * diff --git a/public/artifacts/sha256/169ce8657f2ab5a3140216b6aeeeaaaf7dfcea0f508364a76de142b93c6a0a14.json b/public/artifacts/sha256/169ce8657f2ab5a3140216b6aeeeaaaf7dfcea0f508364a76de142b93c6a0a14.json new file mode 100644 index 000000000..14fb73260 --- /dev/null +++ b/public/artifacts/sha256/169ce8657f2ab5a3140216b6aeeeaaaf7dfcea0f508364a76de142b93c6a0a14.json @@ -0,0 +1,628 @@ +{ + "$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" + }, + "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" + }, + "IdempotencyRetention": { + "additionalProperties": false, + "description": "Exact write-response custody in the idempotency store\n(`products/adapter/CONCEPT.md` section 9 and D12).", + "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" + } + ] + }, + "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 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." + }, + "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 cursor key, still accepted when opening a cursor so\na key rotation does not strand cursors in flight." + } + }, + "required": [ + "allowedClients", + "allowedPrivateCidrs", + "apiVersion", + "audit", + "database", + "endpoints", + "id", + "kind", + "listener", + "oidc" + ], + "title": "Registry Adapter runtime configuration", + "type": "object" +} diff --git a/public/artifacts/sha256/2481544f84d61d0bd21ba44e31e7bdefcbf9e10b12d3b103fc100ebead1e346e.json b/public/artifacts/sha256/2481544f84d61d0bd21ba44e31e7bdefcbf9e10b12d3b103fc100ebead1e346e.json new file mode 100644 index 000000000..6506012a5 --- /dev/null +++ b/public/artifacts/sha256/2481544f84d61d0bd21ba44e31e7bdefcbf9e10b12d3b103fc100ebead1e346e.json @@ -0,0 +1,338 @@ +{ + "$defs": { + "BregBinding": { + "additionalProperties": false, + "description": "Environment-specific transport and reader identity. Human display always replaces it.", + "properties": { + "baseUrl": { + "$ref": "#/$defs/Url" + }, + "clientAssertionAudience": { + "type": "string" + }, + "clientAssertionKeyRef": { + "$ref": "#/$defs/SecretReference" + }, + "clientIdRef": { + "$ref": "#/$defs/SecretReference" + }, + "delegatedDisplayExchange": { + "$ref": "#/$defs/DelegatedDisplayExchangeBinding" + }, + "resource": { + "type": "string" + }, + "scopes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "statusProfile": { + "type": "string" + }, + "taskGrantProfile": { + "type": "string" + }, + "tokenEndpoint": { + "$ref": "#/$defs/Url" + } + }, + "required": [ + "baseUrl", + "statusProfile", + "tokenEndpoint", + "clientIdRef", + "clientAssertionKeyRef" + ], + "type": "object" + }, + "Client": { + "additionalProperties": false, + "properties": { + "accessProfile": { + "description": "The access profile this client binds. Several clients may share a profile.", + "type": "string" + }, + "claims": { + "additionalProperties": { + "type": "string" + }, + "description": "At most 32 token claims; registered access-token claims are reserved.", + "propertyNames": { + "$ref": "#/$defs/ExternalId" + }, + "type": "object" + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "`issuer` is reserved for the local token issuer." + }, + "scopes": { + "description": "1 to 32 distinct RFC 6749 scope-tokens of at most 256 bytes.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "id", + "accessProfile", + "scopes" + ], + "type": "object" + }, + "DelegatedDisplayExchangeBinding": { + "additionalProperties": false, + "description": "Dedicated per-call delegation for staff-subject source disclosure. This is\nseparate from the provider's status and task-context service credential.", + "properties": { + "clientAssertionAudience": { + "type": "string" + }, + "clientAssertionKeyRef": { + "$ref": "#/$defs/SecretReference" + }, + "clientIdRef": { + "$ref": "#/$defs/SecretReference" + }, + "generation": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "scopes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "tokenEndpoint": { + "$ref": "#/$defs/Url" + } + }, + "required": [ + "tokenEndpoint", + "clientIdRef", + "clientAssertionKeyRef", + "resource", + "scopes", + "generation" + ], + "type": "object" + }, + "DirectoryTeam": { + "additionalProperties": false, + "properties": { + "queue": { + "description": "The queue this team serves; one team serves each queue.", + "type": "string" + }, + "staff": { + "description": "1 to 32 clients bound to a Staff profile.", + "items": { + "type": "string" + }, + "type": "array" + }, + "supervisors": { + "description": "At most 32 clients bound to a Supervisor profile.", + "items": { + "type": "string" + }, + "type": "array" + }, + "team": { + "description": "A lowercase letter, then at most 63 lowercase letters, digits, `_`,\nor `-`.", + "type": "string" + } + }, + "required": [ + "team", + "queue", + "staff" + ], + "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" + }, + "Integrations": { + "additionalProperties": false, + "properties": { + "browserClients": { + "description": "Interactive OAuth clients explicitly admitted from a borrowed issuer.", + "items": { + "type": "string" + }, + "type": "array" + }, + "contextProviders": { + "additionalProperties": { + "$ref": "#/$defs/BregBinding" + }, + "description": "Optional provider connections keyed by their declared deploymentRef.", + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "resource": { + "description": "Audience accepted by this Casework session.", + "type": "string" + }, + "secretFiles": { + "additionalProperties": { + "type": "string" + }, + "description": "Owner-only files copied into the retained private secret root.", + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "serviceClients": { + "items": { + "$ref": "#/$defs/ServiceClient" + }, + "type": "array" + }, + "taskAuthority": { + "$ref": "#/$defs/TaskAuthority" + } + }, + "required": [ + "resource" + ], + "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" + }, + "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" + }, + "ServiceClient": { + "additionalProperties": false, + "properties": { + "claims": { + "additionalProperties": { + "type": "string" + }, + "description": "Token claims of at most 256 bytes each, written as text.", + "propertyNames": { + "$ref": "#/$defs/ExternalId" + }, + "type": "object" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "resource": { + "description": "Omission means this Casework session's generated audience.", + "type": "string" + }, + "scopes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "taskExchange": { + "default": false, + "type": "boolean" + } + }, + "required": [ + "id", + "scopes" + ], + "type": "object" + }, + "TaskAuthority": { + "additionalProperties": false, + "properties": { + "issuer": { + "$ref": "#/$defs/Url", + "description": "Logical issuer, independent of the local API transport URL; an\n`https` URL." + }, + "jwksPort": { + "description": "Public-key-only listener, reachable from the stock issuer container.", + "format": "uint32", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "statusClients": { + "additionalProperties": { + "type": "string" + }, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + } + }, + "required": [ + "issuer", + "jwksPort", + "statusClients" + ], + "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/casework/dev-clients/dev-clients.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/casework/dev-clients/v1alpha1", + "type": "string" + }, + "clients": { + "description": "Local teaching clients bound to access profiles `casework.yaml` declares.", + "items": { + "$ref": "#/$defs/Client" + }, + "type": "array" + }, + "directory": { + "description": "The teams the first start seeds, one for each queue.", + "items": { + "$ref": "#/$defs/DirectoryTeam" + }, + "type": "array" + }, + "integrations": { + "$ref": "#/$defs/Integrations", + "description": "Source-backed development: source bindings, service clients, and the\nlocal task authority." + }, + "kind": { + "const": "CaseworkDevClients", + "type": "string" + } + }, + "required": [ + "apiVersion", + "kind", + "clients" + ], + "title": "Registry Casework development clients", + "type": "object" +} diff --git a/public/artifacts/sha256/24d0950eb2c1a76d5005850e1145f675ad65df5231867907b41d11fdd2979cdc.jsonld b/public/artifacts/sha256/24d0950eb2c1a76d5005850e1145f675ad65df5231867907b41d11fdd2979cdc.jsonld new file mode 100644 index 000000000..cb4d18811 --- /dev/null +++ b/public/artifacts/sha256/24d0950eb2c1a76d5005850e1145f675ad65df5231867907b41d11fdd2979cdc.jsonld @@ -0,0 +1,138 @@ +{ + "@context": { + "odrl": "http://www.w3.org/ns/odrl/2/", + "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", + "rdfs": "http://www.w3.org/2000/01/rdf-schema#", + "skos": "http://www.w3.org/2004/02/skos/core#", + "dcterms": "http://purl.org/dc/terms/", + "prof": "http://www.w3.org/ns/dx/prof/", + "breg": "https://id.registrystack.org/vocab/breg-odrl/" + }, + "@id": "https://id.registrystack.org/profiles/breg-odrl/v1", + "@type": "prof:Profile", + "dcterms:title": "BReg partial read-policy export", + "dcterms:conformsTo": {"@id": "https://www.w3.org/TR/odrl-model/"}, + "dcterms:description": "Experimental, descriptive ODRL 2.2 profile for operator review of configured BReg record-operation grants. This is a partial projection of source configuration, not an access token, an activated-package declaration, a complete authorization policy, or a public catalogue. Missing permissions are not prohibitions. Consumers that do not understand this profile must stop processing its policies. BReg independently authenticates and authorizes every actual request.", + "skos:scopeNote": "Every permission describes only its named field projection and exact get or list operation. The native Registry Record envelope is outside the field list. Lookup, relationship traversal, history, count requests, data export, mutations, Actions, Proposals and statistical datasets are outside this profile. Request selectors, pagination and query parameters must satisfy BReg's current route contract. All conditions are conjunctive; absent or unverifiable context never satisfies them. Context comes from the current BReg resource server's verified token and selected compiled profile, never from caller assertions or an ODRL document. An export carries source revision information but does not establish that source is active.", + "skos:note": "This profile adopts odrl:read from the ODRL Common Vocabulary for its exact BReg projection and operation semantics. It is not an Eclipse EDC PolicyDefinition or a Dataspace Protocol Offer or Agreement, and has not been imported into or evaluated by EDC. EDC's reviewed permission parser drops rule-level targets, losing BReg projection identifiers, Record types and readable fields. Direct wrapping and import are unsafe. An adapter must preserve those targets, normalize list operands, bind the action and every custom constraint in each evaluation scope, and use verified BReg context. No adapter or EDC extension is included.", + "@graph": [ + { + "@id": "https://id.registrystack.org/vocab/breg-odrl/", + "@type": "skos:Collection", + "rdfs:isDefinedBy": {"@id": "https://id.registrystack.org/profiles/breg-odrl/v1"}, + "skos:prefLabel": "BReg ODRL profile vocabulary", + "skos:member": [ + {"@id": "odrl:read"}, + {"@id": "breg:authenticated"}, + {"@id": "breg:verifiedNonemptyClaims"}, + {"@id": "breg:accessProfile"}, + {"@id": "breg:operation"}, + {"@id": "breg:tokenScopes"}, + {"@id": "breg:tokenPurpose"}, + {"@id": "breg:requesterClient"}, + {"@id": "breg:actorKind"}, + {"@id": "breg:delegatedActor"}, + {"@id": "breg:taskGrantPresent"}, + {"@id": "breg:recordType"}, + {"@id": "breg:readableFields"}, + {"@id": "breg:partial"} + ] + }, + { + "@id": "breg:authenticated", + "rdfs:isDefinedBy": {"@id": "https://id.registrystack.org/profiles/breg-odrl/v1"}, + "@type": ["odrl:LeftOperand", "skos:Concept"], + "skos:prefLabel": "Authenticated by BReg", + "skos:definition": "Boolean true only after the current BReg resource server accepts the caller's token under its configured issuer, audience, validity and cryptographic checks. The exporter emits an odrl:eq comparison to true." + }, + { + "@id": "breg:verifiedNonemptyClaims", + "rdfs:isDefinedBy": {"@id": "https://id.registrystack.org/profiles/breg-odrl/v1"}, + "@type": ["odrl:LeftOperand", "skos:Concept"], + "skos:prefLabel": "Verified nonempty principal claims", + "skos:definition": "A singleton set containing the resource server's configured principal-claim name only when BReg resolved a valid principal from that claim, or the empty set otherwise. Other populated token claims are not members. odrl:hasPart with a singleton literal list requires both the exact configured claim name and a resolved principal. A claim name in the policy is not a principal identity." + }, + { + "@id": "breg:accessProfile", + "rdfs:isDefinedBy": {"@id": "https://id.registrystack.org/profiles/breg-odrl/v1"}, + "@type": ["odrl:LeftOperand", "skos:Concept"], + "skos:prefLabel": "Selected access profile", + "skos:definition": "The exact native access profile selected for this request. odrl:eq compares its local identifier as a string. Permissions from different profiles must not be combined to authorize one request. Selection alone does not establish authentication or satisfy other conditions." + }, + { + "@id": "breg:operation", + "rdfs:isDefinedBy": {"@id": "https://id.registrystack.org/profiles/breg-odrl/v1"}, + "@type": ["odrl:LeftOperand", "skos:Concept"], + "skos:prefLabel": "Native read operation", + "skos:definition": "The current BReg route operation, expressed as the literal get or list. get retrieves one identified record; list enumerates permitted current records subject to the route's query and pagination contract. Neither permits lookup routes, relationship traversal, historical access, optional count requests or data export. odrl:read applies only to the named projection through this exact operation." + }, + { + "@id": "breg:tokenScopes", + "rdfs:isDefinedBy": {"@id": "https://id.registrystack.org/profiles/breg-odrl/v1"}, + "@type": ["odrl:LeftOperand", "skos:Concept"], + "skos:prefLabel": "Verified token scopes", + "skos:definition": "The set of scopes extracted from the accepted token using BReg's current scope contract. odrl:hasPart requires every right-operand list member. Multiple such constraints are conjunctive. Scope strings remain literals, including strings containing colons." + }, + { + "@id": "breg:tokenPurpose", + "rdfs:isDefinedBy": {"@id": "https://id.registrystack.org/profiles/breg-odrl/v1"}, + "@type": ["odrl:LeftOperand", "skos:Concept"], + "skos:prefLabel": "Verified token purpose", + "skos:definition": "The single purpose value from the accepted token under BReg's current purpose-claim contract. odrl:isPartOf requires membership in the allowed literal list. A purpose supplied only in a request body or policy document does not satisfy this condition. Absence of this constraint means the source profile imposes no purpose restriction." + }, + { + "@id": "breg:requesterClient", + "rdfs:isDefinedBy": {"@id": "https://id.registrystack.org/profiles/breg-odrl/v1"}, + "@type": ["odrl:LeftOperand", "skos:Concept"], + "skos:prefLabel": "Verified requester client", + "skos:definition": "The OAuth client identity resolved by BReg from its verified caller context. odrl:isPartOf requires membership in the allowed literal list. Absence of this constraint means the source profile imposes no requester-client restriction." + }, + { + "@id": "breg:actorKind", + "rdfs:isDefinedBy": {"@id": "https://id.registrystack.org/profiles/breg-odrl/v1"}, + "@type": ["odrl:LeftOperand", "skos:Concept"], + "skos:prefLabel": "Verified actor kind", + "skos:definition": "The actor kind resolved by BReg from its verified caller context, compared with odrl:eq to human, agent or service. Absence of this constraint means the source profile imposes no explicit actor-kind restriction; the delegatedActor constraint still applies." + }, + { + "@id": "breg:delegatedActor", + "rdfs:isDefinedBy": {"@id": "https://id.registrystack.org/profiles/breg-odrl/v1"}, + "@type": ["odrl:LeftOperand", "skos:Concept"], + "skos:prefLabel": "Trusted delegated actor present", + "skos:definition": "Boolean indicating whether BReg's verified caller context contains a trusted actor subject. Standing agent profiles require true; every other exported profile requires false, including profiles without an explicit actorKind. A caller-supplied actor-kind label alone does not establish a trusted actor." + }, + { + "@id": "breg:taskGrantPresent", + "rdfs:isDefinedBy": {"@id": "https://id.registrystack.org/profiles/breg-odrl/v1"}, + "@type": ["odrl:LeftOperand", "skos:Concept"], + "skos:prefLabel": "Verified task grant present", + "skos:definition": "Boolean indicating whether BReg's verified caller context carries a task grant. Every exported permission requires false because task-grant profiles are outside this profile, and native BReg refuses grant-bearing tokens against standing profiles." + }, + { + "@id": "breg:recordType", + "rdfs:isDefinedBy": {"@id": "https://id.registrystack.org/profiles/breg-odrl/v1"}, + "@type": ["rdf:Property", "skos:Concept"], + "rdfs:domain": {"@id": "odrl:Asset"}, + "rdfs:range": {"@id": "http://www.w3.org/2001/XMLSchema#string"}, + "skos:prefLabel": "Native Record type", + "skos:definition": "The authored local Record type identifier whose readable field projection is the target asset. This metadata does not grant access to the complete Record type." + }, + { + "@id": "breg:readableFields", + "rdfs:isDefinedBy": {"@id": "https://id.registrystack.org/profiles/breg-odrl/v1"}, + "@type": ["rdf:Property", "skos:Concept"], + "rdfs:domain": {"@id": "odrl:Asset"}, + "rdfs:range": {"@id": "rdf:List"}, + "skos:prefLabel": "Projection fields", + "skos:definition": "The exact list of authored field identifiers included in the target projection. It never denotes a wildcard, related-record expansion or the entire dataset. It does not include the native Registry Record envelope." + }, + { + "@id": "breg:partial", + "rdfs:isDefinedBy": {"@id": "https://id.registrystack.org/profiles/breg-odrl/v1"}, + "@type": ["rdf:Property", "skos:Concept"], + "rdfs:range": {"@id": "http://www.w3.org/2001/XMLSchema#boolean"}, + "skos:prefLabel": "Partial description", + "skos:definition": "True indicates that the export is deliberately incomplete. An omitted permission is not represented and must not be interpreted as an explicit prohibition." + } + ] +} diff --git a/public/artifacts/sha256/2847a56eda9c8b838d28fde619853c36851acc57b094b74ec2665150f1ace8d4.yaml b/public/artifacts/sha256/2847a56eda9c8b838d28fde619853c36851acc57b094b74ec2665150f1ace8d4.yaml new file mode 100644 index 000000000..ab6ee6f30 --- /dev/null +++ b/public/artifacts/sha256/2847a56eda9c8b838d28fde619853c36851acc57b094b74ec2665150f1ace8d4.yaml @@ -0,0 +1,2208 @@ +$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' + 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$ + 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: Bundle fact schema whose JSON meaning must equal the pinned route schema. + allOf: + - {$ref: '#/$defs/relative-path'} + - {pattern: '^schemas/'} + 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 one configured source. The pinned pack route owns every preparation, + extraction, branching and bounded data operation in that acquisition. + type: object + additionalProperties: false + required: [source] + properties: + source: {$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 + 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/28757cb955ea96d628ff2442cc9dd7ce4f11998edada848a834ef9dfbc3c5c3e.json b/public/artifacts/sha256/28757cb955ea96d628ff2442cc9dd7ce4f11998edada848a834ef9dfbc3c5c3e.json new file mode 100644 index 000000000..bfd2aaa71 --- /dev/null +++ b/public/artifacts/sha256/28757cb955ea96d628ff2442cc9dd7ce4f11998edada848a834ef9dfbc3c5c3e.json @@ -0,0 +1,855 @@ +{ + "$defs": { + "AccessTokenAlgorithm": { + "description": "An asymmetric access-token signature algorithm.", + "enum": [ + "RS256", + "RS384", + "ES256", + "ES384", + "EdDSA" + ], + "type": "string" + }, + "AdapterDataClass": { + "enum": [ + "non-personal" + ], + "type": "string" + }, + "AdapterToolBinding": { + "additionalProperties": false, + "properties": { + "description": { + "maxLength": 4096, + "minLength": 1, + "type": "string" + }, + "operation": { + "type": "string" + } + }, + "required": [ + "operation", + "description" + ], + "type": "object" + }, + "ApplicationConfig": { + "additionalProperties": false, + "description": "The proposal-mode Action and its target input, resolved by the gateway.", + "properties": { + "action": { + "$ref": "#/$defs/LocalId" + }, + "targetInput": { + "$ref": "#/$defs/LocalId", + "description": "The input identifier of the input that references the citizen's own\nrecord." + } + }, + "required": [ + "action", + "targetInput" + ], + "type": "object" + }, + "AuditConfig": { + "additionalProperties": false, + "description": "The audit block every Registry Stack product shares: the hash key, then a\n`file` (the default) or `stdout` destination, with rotation and retention\nfor 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`." + }, + "hashKeyRef": { + "$ref": "#/$defs/SecretReference", + "description": "Secret reference to the audit hash key." + }, + "path": { + "description": "The absolute path of the active audit file. Required for a `file`\ndestination, and refused with `stdout`.", + "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" + } + }, + "required": [ + "hashKeyRef" + ], + "then": { + "not": { + "anyOf": [ + { + "required": [ + "path" + ] + }, + { + "required": [ + "rotateBytes" + ] + }, + { + "required": [ + "retentionDays" + ] + } + ] + } + }, + "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" + } + ] + }, + "Binding": { + "additionalProperties": false, + "properties": { + "name": { + "$ref": "#/$defs/LocalId" + }, + "provider": { + "$ref": "#/$defs/ProviderConfig" + }, + "tools": { + "items": { + "pattern": "^[A-Za-z0-9_.-]{1,256}$", + "type": "string" + }, + "maxItems": 128, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "name", + "tools", + "provider" + ], + "type": "object" + }, + "CaseworkAuthority": { + "description": "This selector declares the intended backend contract; Casework independently\nadmits the trusted gateway and enforces current task and source authority.", + "enum": [ + "delegated-staff-read" + ], + "type": "string" + }, + "DelegationConfig": { + "additionalProperties": false, + "properties": { + "audience": { + "$ref": "#/$defs/ResourceUri" + }, + "exchange": { + "$ref": "#/$defs/ExchangeConfig" + }, + "scopes": { + "items": { + "$ref": "#/$defs/ScopeToken" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "exchange", + "audience", + "scopes" + ], + "type": "object" + }, + "DetailsConfig": { + "additionalProperties": false, + "description": "The Record type holding the citizen's own record, found through the agent\nprofile's linked lookup.", + "properties": { + "recordType": { + "$ref": "#/$defs/LocalId" + } + }, + "required": [ + "recordType" + ], + "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" + }, + "ExchangeConfig": { + "additionalProperties": false, + "description": "The gateway's own client identity, used only to exchange a verified\ninbound token for a delegated registry token.", + "properties": { + "assertionAudience": { + "$ref": "#/$defs/ExternalId", + "description": "The client-assertion audience, when the authorization server expects\none other than its token endpoint. Omitted, the assertion names the\ntoken endpoint." + }, + "clientId": { + "$ref": "#/$defs/ExternalId", + "description": "The gateway's client identifier at the authorization server. It may\nnot also be one of `resourceServer.allowedClients`." + }, + "privateKeyRef": { + "$ref": "#/$defs/SecretReference", + "description": "Secret reference to the private JWK the gateway signs its client\nassertions with, under a declared provider." + }, + "tokenEndpoint": { + "$ref": "#/$defs/Url", + "description": "The authorization server's token endpoint. An https URL with no query\nor fragment; plain http is accepted only on a loopback host under\n`development-loopback`." + } + }, + "required": [ + "tokenEndpoint", + "clientId", + "privateKeyRef" + ], + "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" + } + ] + }, + "LimitsConfig": { + "additionalProperties": false, + "properties": { + "maximumRequestBytes": { + "default": 65536, + "description": "Largest request body the MCP endpoint reads, in bytes.", + "format": "uint64", + "maximum": 1048576, + "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" + }, + "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. The vocabulary is closed so configuration\ncannot turn on debug output or dependency logging.", + "enum": [ + "error", + "warn", + "info" + ], + "type": "string" + }, + "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" + }, + "ProviderConfig": { + "oneOf": [ + { + "additionalProperties": false, + "description": "Citizen-facing Base Registry Engine capabilities, delegated per call.", + "properties": { + "exchange": { + "$ref": "#/$defs/ExchangeConfig" + }, + "registry": { + "$ref": "#/$defs/RegistryConfig" + }, + "service": { + "$ref": "#/$defs/ServiceConfig" + }, + "type": { + "const": "breg", + "type": "string" + } + }, + "required": [ + "type", + "registry", + "exchange", + "service" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Assigned-task reads under the backend's explicitly opted-in delegated-reader policy.", + "properties": { + "authority": { + "$ref": "#/$defs/CaseworkAuthority" + }, + "authorization": { + "$ref": "#/$defs/DelegationConfig" + }, + "baseUrl": { + "$ref": "#/$defs/Url" + }, + "pageSize": { + "default": 25, + "format": "uint", + "maximum": 100, + "minimum": 1, + "type": "integer" + }, + "readerPolicy": { + "$ref": "#/$defs/LocalId" + }, + "sourceProfile": { + "$ref": "#/$defs/LocalId" + }, + "type": { + "const": "casework", + "type": "string" + } + }, + "required": [ + "type", + "authority", + "baseUrl", + "readerPolicy", + "authorization" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Non-personal reads from a separately operated Adapter deployment.", + "properties": { + "audience": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[^\\u0000-\\u001F\\u007F-\\u009F]+$", + "type": "string" + }, + "baseUrl": { + "$ref": "#/$defs/Url" + }, + "contractDigest": { + "$ref": "#/$defs/Digest" + }, + "contractFile": { + "pattern": "^/", + "type": "string" + }, + "dataClass": { + "$ref": "#/$defs/AdapterDataClass" + }, + "machineTokenRef": { + "$ref": "#/$defs/SecretReference" + }, + "operations": { + "additionalProperties": { + "$ref": "#/$defs/AdapterToolBinding" + }, + "maxProperties": 128, + "minProperties": 1, + "propertyNames": { + "$ref": "#/$defs/ExternalId", + "pattern": "^[A-Za-z0-9_.-]{1,256}$" + }, + "type": "object" + }, + "type": { + "const": "adapter", + "type": "string" + } + }, + "required": [ + "type", + "baseUrl", + "contractFile", + "contractDigest", + "dataClass", + "audience", + "machineTokenRef", + "operations" + ], + "type": "object" + } + ] + }, + "RateLimitConfig": { + "additionalProperties": false, + "properties": { + "burst": { + "description": "Requests admitted at once before the average applies.", + "format": "uint32", + "maximum": 1000000, + "minimum": 1, + "type": "integer" + }, + "requestsPerMinute": { + "description": "Requests admitted per minute, on average.", + "format": "uint32", + "maximum": 1000000, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "requestsPerMinute", + "burst" + ], + "type": "object" + }, + "RateLimits": { + "additionalProperties": false, + "properties": { + "perClient": { + "$ref": "#/$defs/RateLimitConfig" + }, + "perPrincipal": { + "$ref": "#/$defs/RateLimitConfig" + } + }, + "required": [ + "perPrincipal", + "perClient" + ], + "type": "object" + }, + "RegistryConfig": { + "additionalProperties": false, + "description": "The outbound half: the registry the gateway acts on.", + "properties": { + "accessProfile": { + "$ref": "#/$defs/LocalId", + "description": "The standing agent access profile every call names." + }, + "attemptTimeoutMilliseconds": { + "default": 10000, + "description": "How long one registry call may take before it is abandoned, in\nmilliseconds.", + "format": "uint64", + "maximum": 120000, + "minimum": 100, + "type": "integer" + }, + "audience": { + "$ref": "#/$defs/ResourceUri", + "description": "The registry's token audience, requested as the exchange resource." + }, + "baseUrl": { + "$ref": "#/$defs/Url", + "description": "The registry deployment's base URL. An https URL with no query or\nfragment; plain http is accepted only on a loopback host under\n`development-loopback`." + }, + "scopes": { + "description": "The scopes requested for the delegated registry token.", + "items": { + "$ref": "#/$defs/ScopeToken" + }, + "maxItems": 128, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "baseUrl", + "accessProfile", + "audience", + "scopes" + ], + "type": "object" + }, + "ResourceServerConfig": { + "additionalProperties": false, + "description": "The inbound half: how a chat host's access token is verified.", + "properties": { + "algorithms": { + "description": "The asymmetric signature algorithms an accepted token may use.", + "items": { + "$ref": "#/$defs/AccessTokenAlgorithm" + }, + "maxItems": 128, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "allowInsecureHttp": { + "default": false, + "description": "Permit plain HTTP beyond loopback to the declared issuer and to a JWKS\nURI declared in `jwksSource`.", + "type": "boolean" + }, + "allowedClients": { + "description": "The chat-host clients whose tokens the gateway accepts.", + "items": { + "$ref": "#/$defs/ExternalId" + }, + "maxItems": 128, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "issuer": { + "$ref": "#/$defs/Url", + "description": "The exact issuer accepted in access-token `iss` claims. An https URL\nwith no query or fragment; plain http is accepted only on a loopback\nhost under `development-loopback`." + }, + "jwksSource": { + "$ref": "#/$defs/JwksSource", + "default": { + "type": "discovery" + }, + "description": "Where the issuer's signing keys come from. Omitted, they are read\nthrough the issuer's OpenID Connect discovery document." + }, + "maximumTokenLifetimeSeconds": { + "default": 3600, + "description": "The longest lifetime an accepted access token may declare, from its\n`iat` to its `exp`, in seconds.", + "format": "uint64", + "maximum": 86400, + "minimum": 1, + "type": "integer" + }, + "requiredScopes": { + "description": "Scopes every accepted token must carry. There is no sentinel for\n\"any scope\": a gateway that acts for a citizen always names the\nscope that consent was given for.", + "items": { + "$ref": "#/$defs/ScopeToken" + }, + "maxItems": 128, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "resource": { + "$ref": "#/$defs/Url", + "description": "This gateway's resource identifier: the exact URL of its MCP endpoint,\nwhich every accepted token must name as its audience. An https URL\nwhose path is `/mcp`, with no query or fragment; plain http is\naccepted only on a loopback host under `development-loopback`." + }, + "scopeClaim": { + "$ref": "#/$defs/ExternalId", + "default": "scope", + "description": "The access-token claim that carries the granted scopes." + } + }, + "required": [ + "resource", + "issuer", + "algorithms", + "allowedClients", + "requiredScopes" + ], + "type": "object" + }, + "ResourceUri": { + "description": "An RFC 8707 resource indicator: an absolute URI without a fragment. The reader also refuses user information and a URI it cannot parse.", + "maxLength": 512, + "minLength": 1, + "pattern": "^[A-Za-z][A-Za-z0-9+.-]*:(?:[A-Za-z0-9._~:/?\\[\\]@!$&'()*+,;=-]|%[0-9A-Fa-f]{2})*$", + "type": "string" + }, + "ScopeToken": { + "description": "An RFC 6749 scope token: printable ASCII other than space, `\"`, and `\\`.", + "maxLength": 512, + "minLength": 1, + "pattern": "^[!#-\\[\\]-~]+$", + "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" + }, + "ServiceConfig": { + "additionalProperties": false, + "description": "The authored service a citizen is told about, and the registry entities\nits tools work over.", + "properties": { + "application": { + "$ref": "#/$defs/ApplicationConfig" + }, + "description": { + "$ref": "#/$defs/ServiceText" + }, + "details": { + "$ref": "#/$defs/DetailsConfig" + }, + "disclosure": { + "$ref": "#/$defs/ServiceText", + "description": "What the citizen is told about the data the chat host will see." + }, + "name": { + "$ref": "#/$defs/ServiceText" + }, + "reviewBaseUrl": { + "$ref": "#/$defs/Url", + "description": "The citizen-facing review page; an application is reviewed and\nsubmitted there, never through the chat host. The review page's\n`publicOrigin`, with no path, query, or fragment." + } + }, + "required": [ + "name", + "description", + "disclosure", + "details", + "application", + "reviewBaseUrl" + ], + "type": "object" + }, + "ServiceText": { + "description": "Text a citizen reads: not blank, at most 4096 characters.", + "maxLength": 4096, + "minLength": 1, + "pattern": "\\S", + "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" + }, + "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/mcp-runtime/mcp-runtime.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/platform/mcp-runtime/v1alpha1", + "type": "string" + }, + "audit": { + "$ref": "#/$defs/AuditConfig" + }, + "bindings": { + "items": { + "$ref": "#/$defs/Binding" + }, + "maxItems": 32, + "minItems": 1, + "type": "array" + }, + "kind": { + "const": "PlatformMcpRuntimeConfig", + "type": "string" + }, + "limits": { + "$ref": "#/$defs/LimitsConfig" + }, + "listener": { + "$ref": "#/$defs/PrivateListenerConfig" + }, + "logLevel": { + "$ref": "#/$defs/LogLevel", + "default": "info" + }, + "name": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "rateLimits": { + "$ref": "#/$defs/RateLimits" + }, + "resourceServer": { + "$ref": "#/$defs/ResourceServerConfig" + }, + "secretProviders": { + "$ref": "#/$defs/SecretProvidersConfig" + } + }, + "required": [ + "apiVersion", + "kind", + "name", + "listener", + "secretProviders", + "resourceServer", + "audit", + "rateLimits", + "bindings" + ], + "title": "Registry Stack configurable MCP gateway runtime configuration", + "type": "object" +} diff --git a/public/artifacts/sha256/2a31e088e66073cf94b5d3769aebbeef3552cafa59c2281405be83ccd5390435.json b/public/artifacts/sha256/2a31e088e66073cf94b5d3769aebbeef3552cafa59c2281405be83ccd5390435.json new file mode 100644 index 000000000..4356d1464 --- /dev/null +++ b/public/artifacts/sha256/2a31e088e66073cf94b5d3769aebbeef3552cafa59c2281405be83ccd5390435.json @@ -0,0 +1,370 @@ +{ + "$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": { + "description": "The declared budget of upstream sends per exchange; the static\nworst-case count must stay within it.", + "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", + "maximumUpstreamCalls" + ], + "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" + } + ] + }, + "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" + }, + "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" + }, + "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" + } + }, + "$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.", + "properties": { + "accessProfiles": { + "default": [], + "description": "The access profiles.", + "items": { + "$ref": "#/$defs/AccessProfile" + }, + "type": "array" + }, + "apiVersion": { + "const": "id.registrystack.org/formats/adapter/project/v1alpha1", + "type": "string" + }, + "bindings": { + "default": [], + "description": "The bindings of contract operations to routes.", + "items": { + "$ref": "#/$defs/Binding" + }, + "type": "array" + }, + "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 facade profile." + }, + "project": { + "$ref": "#/$defs/ProjectIdentity", + "description": "The deployment's identity." + }, + "recordTypes": { + "description": "The declared record types and fields.", + "items": { + "$ref": "#/$defs/RecordType" + }, + "type": "array" + }, + "templatedRoutes": { + "default": [], + "description": "The pack template instantiations, Camel's `templatedRoute`.", + "items": { + "$ref": "#/$defs/TemplatedRoute" + }, + "type": "array" + } + }, + "required": [ + "apiVersion", + "kind", + "pack", + "profile", + "project", + "recordTypes" + ], + "title": "Registry Adapter project", + "type": "object" +} diff --git a/public/artifacts/sha256/38818527ae8cf4435485ea3f283af51b41c4d1d1e0e26d04ab3e59c158c150a7.json b/public/artifacts/sha256/38818527ae8cf4435485ea3f283af51b41c4d1d1e0e26d04ab3e59c158c150a7.json new file mode 100644 index 000000000..a2b867042 --- /dev/null +++ b/public/artifacts/sha256/38818527ae8cf4435485ea3f283af51b41c4d1d1e0e26d04ab3e59c158c150a7.json @@ -0,0 +1,488 @@ +{ + "$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 (D39).", + "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": [ + "pageDeadlineMilliseconds", + "maximumResponseBytes", + "maximumPageItems", + "maximumPageBytes", + "maximumUpstreamCalls", + "read" + ], + "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/472c4861ab27a301f077784e63cd06891ef4b73813aab1dd802c567daac70d16.json b/public/artifacts/sha256/472c4861ab27a301f077784e63cd06891ef4b73813aab1dd802c567daac70d16.json new file mode 100644 index 000000000..13518be36 --- /dev/null +++ b/public/artifacts/sha256/472c4861ab27a301f077784e63cd06891ef4b73813aab1dd802c567daac70d16.json @@ -0,0 +1,1134 @@ +{ + "$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." + }, + "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." + }, + "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" + }, + "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" + }, + "title": { + "$ref": "#/$defs/DisplayText", + "description": "An optional human title; it changes neither stable identity nor behavior revision." + } + }, + "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`." + }, + "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." + }, + "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." + } + }, + "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." + }, + "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" + }, + "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." + }, + "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" + }, + "title": { + "$ref": "#/$defs/DisplayText", + "description": "An optional human title; it changes neither stable identity nor behavior revision." + }, + "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." + }, + "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." + }, + "title": { + "$ref": "#/$defs/DisplayText", + "description": "An optional human title; it changes neither stable identity nor behavior revision." + }, + "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." + }, + "title": { + "$ref": "#/$defs/DisplayText", + "description": "An optional human title; 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." + }, + "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." + }, + "title": { + "$ref": "#/$defs/DisplayText", + "description": "An optional human title; it changes neither stable identity nor behavior revision." + }, + "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" + }, + "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 + }, + "title": { + "$ref": "#/$defs/DisplayText", + "description": "An optional human title; it changes neither stable identity nor behavior revision." + }, + "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/4babace1053c7b8446b682ce2db17a220263e669b397a414d98ead9d47af459a.json b/public/artifacts/sha256/4babace1053c7b8446b682ce2db17a220263e669b397a414d98ead9d47af459a.json new file mode 100644 index 000000000..fb1886e08 --- /dev/null +++ b/public/artifacts/sha256/4babace1053c7b8446b682ce2db17a220263e669b397a414d98ead9d47af459a.json @@ -0,0 +1,5729 @@ +{ + "$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" + }, + "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": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "title": { + "$ref": "#/$defs/ManifestProjectionTextSource" + } + }, + "required": [ + "id", + "title" + ], + "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" + }, + "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", + "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" + } + ] + }, + "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/55959ae4cc86f1cd393cca382d7cdfd367ccc703c8676a350af4299b59ebb043.json b/public/artifacts/sha256/55959ae4cc86f1cd393cca382d7cdfd367ccc703c8676a350af4299b59ebb043.json new file mode 100644 index 000000000..b3683fe88 --- /dev/null +++ b/public/artifacts/sha256/55959ae4cc86f1cd393cca382d7cdfd367ccc703c8676a350af4299b59ebb043.json @@ -0,0 +1,1620 @@ +{ + "$defs": { + "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" + }, + "OidcAlgorithm": { + "enum": [ + "EdDSA", + "ES256", + "ES384", + "RS256", + "RS384" + ], + "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/OidcAlgorithm" + }, + "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/5bfd55b2ccee480035ee9db13b8fb3a99ac5a2e9cd01645fdda8dfeb593eb688.json b/public/artifacts/sha256/5bfd55b2ccee480035ee9db13b8fb3a99ac5a2e9cd01645fdda8dfeb593eb688.json new file mode 100644 index 000000000..63cc19348 --- /dev/null +++ b/public/artifacts/sha256/5bfd55b2ccee480035ee9db13b8fb3a99ac5a2e9cd01645fdda8dfeb593eb688.json @@ -0,0 +1,427 @@ +{ + "$defs": { + "DerivedId": { + "description": "An identifier the runtime derives from local identifiers: two or more local identifiers joined by `.`. It is never authored.", + "pattern": "^[a-z][a-z0-9_-]{0,63}(\\.[a-z][a-z0-9_-]{0,63})+$", + "type": "string" + }, + "Digest": { + "description": "A SHA-256 digest: `sha256:` followed by 64 lowercase hex digits.", + "pattern": "^sha256:[0-9a-f]{64}$", + "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" + }, + "access": { + "additionalProperties": false, + "properties": { + "anyOf": { + "items": { + "$ref": "#/$defs/scopeSet" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "anyOf" + ], + "type": "object" + }, + "authentication": { + "additionalProperties": false, + "properties": { + "audience": { + "$ref": "#/$defs/nonEmptyText" + }, + "clientAdmission": { + "const": "allowlist" + }, + "scheme": { + "const": "bearer" + } + }, + "required": [ + "scheme", + "audience", + "clientAdmission" + ], + "type": "object" + }, + "authority": { + "additionalProperties": false, + "properties": { + "callerMode": { + "const": "trusted-machine" + }, + "fieldDisclosureAuthority": { + "const": "not-granted" + }, + "personalDelegation": { + "const": "unsupported" + }, + "representedSubject": { + "const": "unsupported" + }, + "rowDisclosureAuthority": { + "const": "not-granted" + }, + "targetBinding": { + "const": "unsupported" + } + }, + "required": [ + "callerMode", + "representedSubject", + "personalDelegation", + "targetBinding", + "rowDisclosureAuthority", + "fieldDisclosureAuthority" + ], + "type": "object" + }, + "contract": { + "additionalProperties": false, + "properties": { + "artifactDeploymentDigest": { + "$ref": "#/$defs/Digest" + }, + "authentication": { + "$ref": "#/$defs/authentication" + }, + "authority": { + "$ref": "#/$defs/authority" + }, + "operations": { + "items": { + "$ref": "#/$defs/operation" + }, + "type": "array" + }, + "problemSchema": { + "$ref": "#/$defs/jsonSchema" + }, + "profileVersion": { + "type": "string" + }, + "project": { + "$ref": "#/$defs/project" + }, + "protocolProblems": { + "$ref": "#/$defs/protocolProblems" + }, + "schemaDialect": { + "const": "https://json-schema.org/draft/2020-12/schema" + }, + "unserved": { + "items": { + "$ref": "#/$defs/unserved" + }, + "type": "array" + } + }, + "required": [ + "schemaDialect", + "project", + "profileVersion", + "artifactDeploymentDigest", + "authentication", + "authority", + "operations", + "unserved", + "problemSchema", + "protocolProblems" + ], + "type": "object" + }, + "input": { + "additionalProperties": false, + "properties": { + "body": { + "$ref": "#/$defs/jsonSchema" + }, + "path": { + "$ref": "#/$defs/jsonSchema" + }, + "query": { + "$ref": "#/$defs/jsonSchema" + } + }, + "required": [ + "path", + "query" + ], + "type": "object" + }, + "jsonSchema": { + "type": "object", + "x-registry-passthrough": "The embedded JSON Schema document is governed by JSON Schema 2020-12." + }, + "nonEmptyText": { + "minLength": 1, + "type": "string" + }, + "operation": { + "additionalProperties": false, + "properties": { + "access": { + "$ref": "#/$defs/access" + }, + "bindingId": { + "$ref": "#/$defs/LocalId" + }, + "effect": { + "const": "read" + }, + "id": { + "$ref": "#/$defs/DerivedId" + }, + "input": { + "$ref": "#/$defs/input" + }, + "method": { + "pattern": "^(GET|POST)$", + "type": "string" + }, + "output": { + "$ref": "#/$defs/jsonSchema" + }, + "path": { + "pattern": "^/", + "type": "string" + }, + "profileOperationId": { + "$ref": "#/$defs/LocalId" + }, + "requestMaximumBytes": { + "maximum": 1048576, + "minimum": 1, + "type": "integer" + }, + "successStatus": { + "maximum": 299, + "minimum": 200, + "type": "integer" + }, + "support": { + "const": "served" + }, + "version": { + "type": "string" + } + }, + "required": [ + "id", + "version", + "bindingId", + "profileOperationId", + "method", + "path", + "support", + "effect", + "successStatus", + "input", + "output", + "access" + ], + "type": "object" + }, + "project": { + "additionalProperties": false, + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "version": { + "type": "string" + } + }, + "required": [ + "id", + "version" + ], + "type": "object" + }, + "protocolProblems": { + "additionalProperties": false, + "properties": { + "problems": { + "items": false, + "maxItems": 2, + "minItems": 2, + "prefixItems": [ + { + "additionalProperties": false, + "properties": { + "code": { + "const": "adapter.contract.precondition-failed" + }, + "status": { + "const": 412 + }, + "title": { + "const": "Effective contract precondition failed" + } + }, + "required": [ + "code", + "status", + "title" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "code": { + "const": "adapter.contract.unavailable" + }, + "status": { + "const": 503 + }, + "title": { + "const": "Effective contract unavailable" + } + }, + "required": [ + "code", + "status", + "title" + ], + "type": "object" + } + ], + "type": "array", + "uniqueItems": true + }, + "schema": { + "$ref": "#/$defs/jsonSchema" + } + }, + "required": [ + "schema", + "problems" + ], + "type": "object" + }, + "readiness": { + "additionalProperties": false, + "properties": { + "configuration": { + "const": "ready" + }, + "journal": { + "const": "ready" + }, + "ready": { + "const": true + } + }, + "required": [ + "ready", + "configuration", + "journal" + ], + "type": "object" + }, + "scopeSet": { + "additionalProperties": false, + "properties": { + "allScopes": { + "items": { + "$ref": "#/$defs/nonEmptyText" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "allScopes" + ], + "type": "object" + }, + "unserved": { + "additionalProperties": false, + "properties": { + "bindingId": { + "$ref": "#/$defs/LocalId" + }, + "effect": { + "enum": [ + "read", + "write", + "unknown" + ] + }, + "method": { + "description": "A case-sensitive HTTP method token from RFC 9110.", + "pattern": "^(GET|POST|PUT|PATCH)$", + "type": "string" + }, + "operationId": { + "$ref": "#/$defs/nonEmptyText" + }, + "profileOperationId": { + "$ref": "#/$defs/LocalId" + }, + "reason": { + "$ref": "#/$defs/nonEmptyText" + }, + "reasonCode": { + "pattern": "^adapter\\.[a-z0-9.-]+$", + "type": "string" + }, + "support": { + "const": "unserved" + }, + "version": { + "type": "string" + } + }, + "required": [ + "operationId", + "version", + "bindingId", + "profileOperationId", + "support", + "effect", + "reasonCode", + "reason" + ], + "type": "object" + } + }, + "$id": "https://id.registrystack.org/schemas/adapter/effective-contract/effective-contract.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/adapter/effective-contract/v1alpha1" + }, + "contract": { + "$ref": "#/$defs/contract" + }, + "digest": { + "$ref": "#/$defs/Digest" + }, + "kind": { + "const": "AdapterEffectiveContract" + }, + "readiness": { + "$ref": "#/$defs/readiness" + } + }, + "required": [ + "apiVersion", + "kind", + "digest", + "contract" + ], + "title": "Registry Adapter effective contract", + "type": "object" +} diff --git a/public/artifacts/sha256/6031baaabca785fe6e0adfed4336fa555839e18ae1a3136cf3e895ad5e6f6dcb.json b/public/artifacts/sha256/6031baaabca785fe6e0adfed4336fa555839e18ae1a3136cf3e895ad5e6f6dcb.json new file mode 100644 index 000000000..ec3548e05 --- /dev/null +++ b/public/artifacts/sha256/6031baaabca785fe6e0adfed4336fa555839e18ae1a3136cf3e895ad5e6f6dcb.json @@ -0,0 +1,2467 @@ +{ + "$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 (D39); the checks refuse 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 (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`).", + "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" + }, + "steps": { + "description": "The template body, with `{{name}}` and `{{?name}}` placeholders.", + "items": { + "$ref": "#/$defs/Step" + }, + "type": "array" + } + }, + "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" + }, + "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`." + }, + "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" + } + ] + }, + "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(Increment 3; `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/62c45846105e0231417e0450568a899ea05f78f41250b450353c074407cc5f26.json b/public/artifacts/sha256/62c45846105e0231417e0450568a899ea05f78f41250b450353c074407cc5f26.json new file mode 100644 index 000000000..200b31746 --- /dev/null +++ b/public/artifacts/sha256/62c45846105e0231417e0450568a899ea05f78f41250b450353c074407cc5f26.json @@ -0,0 +1,1117 @@ +{ + "$defs": { + "Acquisition": { + "additionalProperties": false, + "properties": { + "source": { + "$ref": "#/$defs/LocalId", + "description": "One reviewed route owns the complete bounded provider interaction." + } + }, + "required": [ + "source" + ], + "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" + }, + "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" + }, + "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" + }, + "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" + }, + "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" + }, + "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/8032fd67f82f517cade8e55c4d3972bc5481a957b84a4cb70b3f40f82ac970d3.json b/public/artifacts/sha256/8032fd67f82f517cade8e55c4d3972bc5481a957b84a4cb70b3f40f82ac970d3.json new file mode 100644 index 000000000..95bef2441 --- /dev/null +++ b/public/artifacts/sha256/8032fd67f82f517cade8e55c4d3972bc5481a957b84a4cb70b3f40f82ac970d3.json @@ -0,0 +1,387 @@ +{ + "$defs": { + "AsyncStatusPath": { + "description": "One profile-owned caller path for asynchronous write status. The path\nremains inside the facade and carries exactly one opaque status handle;\nit never accepts a source URL or caller-selected path member.", + "type": "string" + }, + "EnvelopeTemplate": { + "description": "An envelope template: a JSON template whose string members carry\n`{{slot}}` placeholders from the closed vocabulary\n(`products/adapter/CONCEPT.md` section 7). The template is data; the\nengine fills it.", + "type": "string" + }, + "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" + }, + "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" + }, + "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" + }, + "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" + }, + "PaginationParameters": { + "additionalProperties": false, + "description": "The pagination parameters of a search operation: the cursor and\npage-size query parameter names and their bounds\n(`products/adapter/CONCEPT.md` section 7). The engine owns encoding the\ncursor; the profile owns the names.", + "properties": { + "cursorParameter": { + "$ref": "#/$defs/ExternalId", + "description": "The cursor query parameter name." + }, + "pageSizeDefault": { + "description": "The page size a call that names none gets; within the bounds. A\ncursor carries the page size of the call that minted it: a later\ncall may omit the size, and one that names a different size is\nrefused.", + "format": "uint64", + "maximum": 100000, + "minimum": 1, + "type": "integer" + }, + "pageSizeMaximum": { + "description": "The largest page size a caller may ask for.", + "format": "uint64", + "maximum": 100000, + "minimum": 1, + "type": "integer" + }, + "pageSizeMinimum": { + "description": "The smallest page size a caller may ask for.", + "format": "uint64", + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "pageSizeParameter": { + "$ref": "#/$defs/ExternalId", + "description": "The page-size query parameter name." + } + }, + "required": [ + "cursorParameter", + "pageSizeParameter", + "pageSizeMinimum", + "pageSizeMaximum" + ], + "type": "object" + }, + "ParameterizedPart": { + "additionalProperties": false, + "description": "One parameterized part: a part of the profile a deployment declares at\nbind time (`products/adapter/CONCEPT.md` sections 6 and 7).", + "properties": { + "description": { + "description": "What the part means, for review.", + "type": "string" + }, + "name": { + "$ref": "#/$defs/ExternalId", + "description": "The part name." + } + }, + "required": [ + "name", + "description" + ], + "type": "object" + }, + "Problem": { + "additionalProperties": false, + "description": "One problem a caller can receive: the profile's own answer shape for\nthe error classes it maps (`products/adapter/CONCEPT.md` sections 7\nand 8.11.6). A pack raises error classes and never names a problem\ncode or builds a problem body; the profile decides what the caller\nsees.", + "properties": { + "classes": { + "description": "The error classes this problem answers: a class resolves to the\nentry whose declared class is closest to it, by the rule of\n`products/adapter/CONCEPT.md` section 8.7.", + "items": { + "$ref": "#/$defs/ErrorClass" + }, + "type": "array", + "uniqueItems": true + }, + "code": { + "$ref": "#/$defs/ExternalId", + "description": "The profile's own problem code a caller receives." + }, + "dataFields": { + "description": "The optional closed scalar object this problem may disclose. Every\ndeclared field is required when the object is present; authoring\nchecks enforce the field-count and required-field bounds.", + "items": { + "$ref": "#/$defs/RecordField" + }, + "maxItems": 16, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "status": { + "description": "The default HTTP status for profile-governed route failures. Fixed\nfacade admission failures retain their engine-defined status; the\neffective problem schema includes those resolved class/status pairs.", + "format": "uint32", + "maximum": 599, + "minimum": 400, + "type": "integer" + }, + "title": { + "description": "The problem title the envelope's `problemTitle` slot fills from.", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "classes" + ], + "type": "object" + }, + "ProfileAsyncCompletion": { + "additionalProperties": false, + "description": "The caller-visible asynchronous completion contract of one write.", + "properties": { + "acceptedEnvelope": { + "$ref": "#/$defs/EnvelopeTemplate", + "description": "The exact accepted response shape, over the three async slots and\noptional profile parameterized parts." + }, + "completedStatus": { + "description": "The status returned after the source proves successful completion.", + "format": "uint32", + "maximum": 299, + "minimum": 200, + "type": "integer" + }, + "statusPath": { + "$ref": "#/$defs/AsyncStatusPath", + "description": "The profile-owned facade path that receives the opaque status id." + } + }, + "required": [ + "completedStatus", + "statusPath", + "acceptedEnvelope" + ], + "type": "object" + }, + "ProfileOperation": { + "additionalProperties": false, + "description": "One facade operation, declared by id\n(`products/adapter/CONCEPT.md` sections 6 and 7). The id is a\nprofile-declared bounded string (CFG-ID-5), never an engine enum.", + "properties": { + "asyncCompletion": { + "$ref": "#/$defs/ProfileAsyncCompletion", + "description": "The explicit asynchronous completion contract of a 202 write." + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The profile-declared operation id a binding names." + }, + "itemEnvelope": { + "$ref": "#/$defs/EnvelopeTemplate", + "description": "The per-record template: when declared, every record the response\nenvelope's `record` or `records` slot carries is rendered through\nit first. It may name `record`, `recordId` (the identifier the\nroute's record carries beside its domain data), `recordType`, and\n`requestId`. A call whose route yields no identifier for a template\nthat names `recordId` is a disclosure violation." + }, + "method": { + "$ref": "#/$defs/HttpMethod", + "description": "The facade method." + }, + "pagination": { + "$ref": "#/$defs/PaginationParameters", + "description": "The pagination parameters of a search operation." + }, + "path": { + "description": "The facade path template, e.g. `/v2/cases/{type}`. Placeholders\nare single-brace `{name}` templates, Camel REST DSL / OpenAPI path\ntemplating; `{{name}}` is the pack layer's substitution syntax and\nrefuses here.", + "type": "string" + }, + "pathParameters": { + "description": "The path parameters the template names: every `{name}` in `path`\nmust resolve here, every entry must appear in the path, and the\nlist is unique (CFG-ID-6).", + "items": { + "$ref": "#/$defs/LocalId" + }, + "type": "array", + "uniqueItems": true + }, + "readOnly": { + "description": "Whether a POST operation only reads: it is served like a read\n(never the write path), its request envelope is a closed template\nover the caller's JSON body, and its route reaches only safe sends.\nA GET operation is a read without declaring it.", + "type": "boolean" + }, + "recordIdParameter": { + "$ref": "#/$defs/LocalId", + "description": "The path parameter the caller's `recordId` header fills on get,\nupdate, and patch; one of `pathParameters` when declared. A search\nor create operation fills none; the profile checks require the\nparameter exactly where the facade reads it." + }, + "recordTypeParameter": { + "$ref": "#/$defs/LocalId", + "description": "The path parameter the bound record type substitutes into\n(`products/adapter/CONCEPT.md` section 7): one of `pathParameters`,\nchecked at the profile checks. No rule reads meaning from the\nparameter's position." + }, + "requestEnvelope": { + "$ref": "#/$defs/EnvelopeTemplate", + "description": "Where a writable record sits in an incoming body. A write\noperation's request envelope must name the `record` slot." + }, + "requestMaximumBytes": { + "description": "The largest request body, in bytes, a read operation with a body\naccepts; a larger one answers `facade.payload-too-large`. Sixteen\nkibibytes when absent.", + "format": "uint64", + "maximum": 1048576, + "minimum": 1, + "type": "integer" + }, + "responseEnvelope": { + "$ref": "#/$defs/EnvelopeTemplate", + "description": "The response envelope; must name its result slot." + }, + "successStatus": { + "default": 200, + "description": "The status the facade answers a success with; two hundreds only\n(CFG-QTY-4). Every non-2xx answer is a problem body.", + "format": "uint32", + "maximum": 299, + "minimum": 200, + "type": "integer" + } + }, + "required": [ + "id", + "method", + "path", + "recordTypeParameter", + "responseEnvelope" + ], + "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" + } + }, + "$id": "https://id.registrystack.org/schemas/adapter/profile/profile.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "description": "The facade profile artifact (`AdapterProfile`): the operation set, the\nenvelope templates, the pagination parameters, and the problems and\nproblem envelope.", + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/adapter/profile/v1alpha1", + "type": "string" + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The profile identifier a project pins." + }, + "kind": { + "const": "AdapterProfile", + "type": "string" + }, + "operations": { + "description": "The operations the profile serves.", + "items": { + "$ref": "#/$defs/ProfileOperation" + }, + "type": "array" + }, + "parameterizedParts": { + "default": [], + "description": "The parts of the profile a deployment declares at bind time.", + "items": { + "$ref": "#/$defs/ParameterizedPart" + }, + "type": "array", + "uniqueItems": true + }, + "problemEnvelope": { + "$ref": "#/$defs/EnvelopeTemplate", + "description": "The problem envelope template; must carry the `problemCode` slot." + }, + "problems": { + "description": "The problems a caller can receive, each mapping error classes to a\ncode, status, and title. The totality check requires every class of\nthe closed hierarchy, uncatchable and facade classes included, to\nresolve to exactly one entry\n(`products/adapter/CONCEPT.md` sections 7 and 8.11.6).", + "items": { + "$ref": "#/$defs/Problem" + }, + "type": "array" + }, + "version": { + "description": "The profile's own version; a project pin names it next to the\ndigest (CFG-ID-4).", + "type": "string" + } + }, + "required": [ + "apiVersion", + "id", + "kind", + "operations", + "problemEnvelope", + "problems", + "version" + ], + "title": "Registry Adapter facade profile", + "type": "object" +} diff --git a/public/artifacts/sha256/8177563ac1261680db7070b59f8b651d1cfe8c33cb5423891902bab4d5f8173e.json b/public/artifacts/sha256/8177563ac1261680db7070b59f8b651d1cfe8c33cb5423891902bab4d5f8173e.json new file mode 100644 index 000000000..d288a93ba --- /dev/null +++ b/public/artifacts/sha256/8177563ac1261680db7070b59f8b651d1cfe8c33cb5423891902bab4d5f8173e.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.", + "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/912661673c41c1119a8bd83809c66cc2d38b16e171c963b4988175c74f627664.json b/public/artifacts/sha256/912661673c41c1119a8bd83809c66cc2d38b16e171c963b4988175c74f627664.json new file mode 100644 index 000000000..4a93cee93 --- /dev/null +++ b/public/artifacts/sha256/912661673c41c1119a8bd83809c66cc2d38b16e171c963b4988175c74f627664.json @@ -0,0 +1,467 @@ +{ + "$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", + "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", + "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/9949f5e3a10d4deb0038359d76d1f59b160449472bcd0b6c99e45ad776d20f80.json b/public/artifacts/sha256/9949f5e3a10d4deb0038359d76d1f59b160449472bcd0b6c99e45ad776d20f80.json new file mode 100644 index 000000000..326b186a9 --- /dev/null +++ b/public/artifacts/sha256/9949f5e3a10d4deb0038359d76d1f59b160449472bcd0b6c99e45ad776d20f80.json @@ -0,0 +1,4476 @@ +{ + "$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" + } + ] + }, + "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/9d026bf36a11bc83493f835f028ff52092e0f6c4cd42b471024ead336b6d8a9e.json b/public/artifacts/sha256/9d026bf36a11bc83493f835f028ff52092e0f6c4cd42b471024ead336b6d8a9e.json new file mode 100644 index 000000000..a011a523b --- /dev/null +++ b/public/artifacts/sha256/9d026bf36a11bc83493f835f028ff52092e0f6c4cd42b471024ead336b6d8a9e.json @@ -0,0 +1,4767 @@ +{ + "$defs": { + "AccessProfile": { + "additionalProperties": false, + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "principalClaim": { + "type": "string" + }, + "requiredScopes": { + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "role": { + "$ref": "#/$defs/CaseworkRole" + } + }, + "required": [ + "id", + "principalClaim", + "requiredScopes", + "role" + ], + "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" + }, + "CaseworkRole": { + "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": { + "assertionKeyFile": { + "type": "string" + }, + "clientIdFile": { + "type": "string" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "profile": { + "type": "string" + }, + "role": { + "$ref": "#/$defs/CaseworkRole" + }, + "subject": { + "type": "string" + } + }, + "required": [ + "id", + "profile", + "role", + "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": [ + "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/bb19696ad1cf4f6c89de72d1b50da9f8897761cd15066c4281500836306ea09e.json b/public/artifacts/sha256/bb19696ad1cf4f6c89de72d1b50da9f8897761cd15066c4281500836306ea09e.json new file mode 100644 index 000000000..6fe544a8b --- /dev/null +++ b/public/artifacts/sha256/bb19696ad1cf4f6c89de72d1b50da9f8897761cd15066c4281500836306ea09e.json @@ -0,0 +1,1332 @@ +{ + "$defs": { + "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" + }, + "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" + }, + "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" + }, + "TargetAccessTokenAlgorithm": { + "enum": [ + "EdDSA", + "ES256", + "RS256" + ], + "type": "string" + }, + "TargetAccessTokenType": { + "enum": [ + "at+jwt", + "application/at+jwt" + ], + "type": "string" + }, + "TargetAdmissionGate": { + "anyOf": [ + { + "const": "unrestricted", + "type": "string" + }, + { + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + ] + }, + "TargetAssuranceProfile": { + "enum": [ + "local", + "production", + "evidence-grade" + ], + "type": "string" + }, + "TargetAudit": { + "additionalProperties": false, + "properties": { + "destination": { + "anyOf": [ + { + "$ref": "#/$defs/TargetAuditDestination" + }, + { + "type": "null" + } + ] + }, + "hashKeyRef": { + "$ref": "#/$defs/SecretReference" + }, + "hashKeyVersion": { + "format": "uint32", + "maximum": 2147483647, + "minimum": 1, + "type": "integer" + }, + "path": { + "type": [ + "string", + "null" + ] + }, + "retentionDays": { + "format": "uint32", + "maximum": 36500, + "minimum": 1, + "type": [ + "integer", + "null" + ] + }, + "rotateBytes": { + "format": "uint64", + "maximum": 4294967295, + "minimum": 1048576, + "type": [ + "integer", + "null" + ] + } + }, + "required": [ + "hashKeyRef", + "hashKeyVersion" + ], + "type": "object" + }, + "TargetAuditDestination": { + "enum": [ + "file", + "stdout" + ], + "type": "string" + }, + "TargetAuthentication": { + "additionalProperties": false, + "properties": { + "oidc": { + "$ref": "#/$defs/TargetOidcAuthentication" + } + }, + "required": [ + "oidc" + ], + "type": "object" + }, + "TargetClaimName": { + "description": "The name of one direct JWT claim, within 128 ASCII bytes. Dots are literal characters. Omit to retain the governed runtime's default claim name; claim-role uniqueness and reserved names are revalidated with the complete authentication configuration.", + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z_][A-Za-z0-9_.-]{0,127}$", + "type": "string" + }, + "TargetClaimNames": { + "additionalProperties": false, + "properties": { + "actorKind": { + "anyOf": [ + { + "$ref": "#/$defs/TargetClaimName" + }, + { + "type": "null" + } + ] + }, + "approver": { + "anyOf": [ + { + "$ref": "#/$defs/TargetClaimName" + }, + { + "type": "null" + } + ] + }, + "grantBounds": { + "anyOf": [ + { + "$ref": "#/$defs/TargetClaimName" + }, + { + "type": "null" + } + ] + }, + "grantClient": { + "anyOf": [ + { + "$ref": "#/$defs/TargetClaimName" + }, + { + "type": "null" + } + ] + }, + "grantExp": { + "anyOf": [ + { + "$ref": "#/$defs/TargetClaimName" + }, + { + "type": "null" + } + ] + }, + "grantId": { + "anyOf": [ + { + "$ref": "#/$defs/TargetClaimName" + }, + { + "type": "null" + } + ] + }, + "grantResource": { + "anyOf": [ + { + "$ref": "#/$defs/TargetClaimName" + }, + { + "type": "null" + } + ] + }, + "grantSourceIssuer": { + "anyOf": [ + { + "$ref": "#/$defs/TargetClaimName" + }, + { + "type": "null" + } + ] + }, + "purpose": { + "anyOf": [ + { + "$ref": "#/$defs/TargetClaimName" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "TargetConnection": { + "additionalProperties": false, + "properties": { + "allowedPrivateCidrs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "additionalProperties": { + "$ref": "#/$defs/TargetEndpointBinding" + }, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + } + }, + "required": [ + "endpoints" + ], + "type": "object" + }, + "TargetConnectionAuthentication": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "type": { + "const": "none", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "passwordRef": { + "$ref": "#/$defs/SecretReference" + }, + "type": { + "const": "basic", + "type": "string" + }, + "usernameRef": { + "$ref": "#/$defs/SecretReference" + } + }, + "required": [ + "type", + "usernameRef", + "passwordRef" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "scheme": { + "type": [ + "string", + "null" + ] + }, + "tokenRef": { + "$ref": "#/$defs/SecretReference" + }, + "type": { + "const": "bearer", + "type": "string" + } + }, + "required": [ + "type", + "tokenRef" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "scheme": { + "type": [ + "string", + "null" + ] + }, + "tokenRef": { + "$ref": "#/$defs/SecretReference" + }, + "type": { + "const": "static-authorization", + "type": "string" + } + }, + "required": [ + "type", + "tokenRef" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "headerName": { + "type": "string" + }, + "type": { + "const": "static-api-key", + "type": "string" + }, + "valueRef": { + "$ref": "#/$defs/SecretReference" + } + }, + "required": [ + "type", + "headerName", + "valueRef" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "assumedLifetimeSeconds": { + "format": "uint64", + "maximum": 86400, + "minimum": 1, + "type": [ + "integer", + "null" + ] + }, + "audience": { + "type": [ + "string", + "null" + ] + }, + "clientIdRef": { + "$ref": "#/$defs/SecretReference" + }, + "clientSecretRef": { + "$ref": "#/$defs/SecretReference" + }, + "credentialPlacement": { + "$ref": "#/$defs/TargetCredentialPlacement" + }, + "maximumCacheSeconds": { + "format": "uint64", + "maximum": 86400, + "minimum": 0, + "type": "integer" + }, + "resource": { + "type": [ + "string", + "null" + ] + }, + "scope": { + "type": [ + "string", + "null" + ] + }, + "tokenEndpoint": { + "type": "string" + }, + "type": { + "const": "oauth2-client-credentials", + "type": "string" + } + }, + "required": [ + "type", + "tokenEndpoint", + "clientIdRef", + "clientSecretRef", + "credentialPlacement", + "maximumCacheSeconds" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "assumedLifetimeSeconds": { + "format": "uint64", + "maximum": 86400, + "minimum": 1, + "type": [ + "integer", + "null" + ] + }, + "audience": { + "type": [ + "string", + "null" + ] + }, + "clientAssertionAudience": { + "type": [ + "string", + "null" + ] + }, + "clientAssertionKeyRef": { + "$ref": "#/$defs/SecretReference" + }, + "clientIdRef": { + "$ref": "#/$defs/SecretReference" + }, + "maximumCacheSeconds": { + "format": "uint64", + "maximum": 86400, + "minimum": 0, + "type": "integer" + }, + "resource": { + "type": [ + "string", + "null" + ] + }, + "scope": { + "type": [ + "string", + "null" + ] + }, + "tokenEndpoint": { + "type": "string" + }, + "type": { + "const": "oauth2-private-key-jwt", + "type": "string" + } + }, + "required": [ + "type", + "tokenEndpoint", + "clientIdRef", + "clientAssertionKeyRef", + "maximumCacheSeconds" + ], + "type": "object" + } + ] + }, + "TargetCredentialPlacement": { + "enum": [ + "basic-header", + "form-body" + ], + "type": "string" + }, + "TargetEndpointBinding": { + "additionalProperties": false, + "properties": { + "attemptTimeoutMilliseconds": { + "format": "uint64", + "maximum": 18446744073709551615, + "minimum": 1, + "type": [ + "integer", + "null" + ] + }, + "authentication": { + "$ref": "#/$defs/TargetConnectionAuthentication" + }, + "maximumResponseBytes": { + "format": "uint64", + "maximum": 1048576, + "minimum": 1, + "type": [ + "integer", + "null" + ] + }, + "mtlsIdentity": { + "anyOf": [ + { + "$ref": "#/$defs/TargetMtlsIdentity" + }, + { + "type": "null" + } + ] + }, + "origin": { + "$ref": "#/$defs/Url" + }, + "tlsTrustProfile": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "origin", + "authentication" + ], + "type": "object" + }, + "TargetEnvironmentSecretProvider": { + "additionalProperties": false, + "type": "object" + }, + "TargetExtractBinding": { + "additionalProperties": false, + "properties": { + "path": { + "type": "string" + } + }, + "required": [ + "path" + ], + "type": "object" + }, + "TargetFileSecretProvider": { + "additionalProperties": false, + "properties": { + "root": { + "type": "string" + } + }, + "required": [ + "root" + ], + "type": "object" + }, + "TargetIssuerId": { + "description": "An absolute Evidence issuer URI identifier, including URNs, within 512 Unicode characters and without whitespace or control characters. It names the signer and is never fetched; it is not an OIDC issuer or a network origin.", + "format": "uri", + "maxLength": 512, + "minLength": 1, + "pattern": "^[A-Za-z][A-Za-z0-9+.-]*:[^\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]*$", + "type": "string" + }, + "TargetJwksSource": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "type": { + "const": "uri", + "type": "string" + }, + "uri": { + "$ref": "#/$defs/Url" + } + }, + "required": [ + "type", + "uri" + ], + "type": "object" + } + ] + }, + "TargetListener": { + "additionalProperties": false, + "properties": { + "bind": { + "type": "string" + }, + "maximumConcurrentRequests": { + "format": "uint32", + "maximum": 4096, + "minimum": 1, + "type": [ + "integer", + "null" + ] + }, + "maximumRequestBytes": { + "format": "uint64", + "maximum": 1048576, + "minimum": 1024, + "type": [ + "integer", + "null" + ] + }, + "networkExposure": { + "anyOf": [ + { + "$ref": "#/$defs/TargetNetworkExposure" + }, + { + "type": "null" + } + ] + }, + "requestTimeoutMilliseconds": { + "format": "uint64", + "maximum": 30000, + "minimum": 1, + "type": [ + "integer", + "null" + ] + }, + "shutdownGraceMilliseconds": { + "format": "uint64", + "maximum": 120000, + "minimum": 1, + "type": [ + "integer", + "null" + ] + }, + "tlsTermination": { + "anyOf": [ + { + "$ref": "#/$defs/TargetTlsTermination" + }, + { + "type": "null" + } + ] + }, + "trustProxyIdentityHeaders": { + "type": "boolean" + } + }, + "required": [ + "bind", + "trustProxyIdentityHeaders" + ], + "type": "object" + }, + "TargetMtlsIdentity": { + "additionalProperties": false, + "properties": { + "certificateRef": { + "$ref": "#/$defs/SecretReference" + }, + "keyRef": { + "$ref": "#/$defs/SecretReference" + } + }, + "required": [ + "certificateRef", + "keyRef" + ], + "type": "object" + }, + "TargetNetworkExposure": { + "enum": [ + "private-address", + "container-private" + ], + "type": "string" + }, + "TargetOidcAuthentication": { + "additionalProperties": false, + "properties": { + "actorClaim": { + "type": [ + "string", + "null" + ] + }, + "algorithms": { + "items": { + "$ref": "#/$defs/TargetAccessTokenAlgorithm" + }, + "type": "array", + "uniqueItems": true + }, + "allowedClients": { + "anyOf": [ + { + "$ref": "#/$defs/TargetAdmissionGate" + }, + { + "type": "null" + } + ] + }, + "assertionIssuers": { + "additionalProperties": { + "items": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "maxItems": 8, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "description": "External client identifiers mapped to the exact issuer strings they may assert. Omit to apply no assertion-issuer rule. A present map has one to 32 clients, each within 128 bytes, with one to eight distinct nonempty issuers within 512 bytes.", + "maxProperties": 32, + "minProperties": 1, + "propertyNames": { + "$ref": "#/$defs/ExternalId", + "maxLength": 128 + }, + "type": "object" + }, + "audience": { + "type": "string" + }, + "claims": { + "anyOf": [ + { + "$ref": "#/$defs/TargetClaimNames" + }, + { + "type": "null" + } + ] + }, + "evidenceAudienceClaim": { + "type": "string" + }, + "issuer": { + "$ref": "#/$defs/Url" + }, + "jwksSource": { + "$ref": "#/$defs/TargetJwksSource" + }, + "maximumTokenLifetimeSeconds": { + "format": "uint64", + "maximum": 86400, + "minimum": 1, + "type": "integer" + }, + "principalClaim": { + "type": "string" + }, + "requesterTagsClaim": { + "type": "string" + }, + "requiredScopes": { + "$ref": "#/$defs/TargetAdmissionGate" + }, + "revokedKeyIds": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "tlsTrustProfile": { + "type": [ + "string", + "null" + ] + }, + "tokenTypes": { + "items": { + "$ref": "#/$defs/TargetAccessTokenType" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "issuer", + "audience", + "jwksSource", + "tokenTypes", + "algorithms", + "principalClaim", + "requesterTagsClaim", + "evidenceAudienceClaim", + "maximumTokenLifetimeSeconds", + "requiredScopes" + ], + "type": "object" + }, + "TargetOutboundTls": { + "additionalProperties": false, + "properties": { + "systemRoots": { + "type": "boolean" + }, + "trustProfiles": { + "additionalProperties": { + "$ref": "#/$defs/TargetTrustProfile" + }, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + } + }, + "required": [ + "systemRoots", + "trustProfiles" + ], + "type": "object" + }, + "TargetPackage": { + "additionalProperties": false, + "properties": { + "expectedDigest": { + "anyOf": [ + { + "$ref": "#/$defs/Digest" + }, + { + "type": "null" + } + ] + }, + "root": { + "type": "string" + } + }, + "required": [ + "root" + ], + "type": "object" + }, + "TargetPublication": { + "additionalProperties": false, + "properties": { + "description": { + "$ref": "#/$defs/DisplayText" + }, + "endpointUrl": { + "$ref": "#/$defs/Url" + }, + "jurisdictions": { + "items": { + "type": "string" + }, + "type": "array" + }, + "operatorId": { + "type": [ + "string", + "null" + ] + }, + "publisherId": { + "type": [ + "string", + "null" + ] + }, + "serviceId": { + "type": "string" + }, + "title": { + "$ref": "#/$defs/DisplayText" + } + }, + "required": [ + "serviceId", + "title", + "description", + "endpointUrl", + "jurisdictions" + ], + "type": "object" + }, + "TargetRateLimits": { + "additionalProperties": false, + "properties": { + "burstPerPrincipal": { + "format": "uint32", + "maximum": 100000, + "minimum": 1, + "type": [ + "integer", + "null" + ] + }, + "failedSelectorAttemptsPerPrincipalAuthorityPerMinute": { + "format": "uint32", + "maximum": 100000, + "minimum": 1, + "type": "integer" + }, + "requestsPerPrincipalPerMinute": { + "format": "uint32", + "maximum": 1000000, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "requestsPerPrincipalPerMinute", + "failedSelectorAttemptsPerPrincipalAuthorityPerMinute" + ], + "type": "object" + }, + "TargetResponseFormat": { + "enum": [ + "signed-jws", + "unsigned-json", + "sd-jwt-vc", + "sd-jwt-vc-batch" + ], + "type": "string" + }, + "TargetSecretProviders": { + "additionalProperties": false, + "properties": { + "environment": { + "anyOf": [ + { + "$ref": "#/$defs/TargetEnvironmentSecretProvider" + }, + { + "type": "null" + } + ] + }, + "file": { + "anyOf": [ + { + "$ref": "#/$defs/TargetFileSecretProvider" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "TargetService": { + "additionalProperties": false, + "properties": { + "issuer": { + "$ref": "#/$defs/TargetIssuerId" + }, + "providerId": { + "type": "string" + }, + "publicOrigin": { + "$ref": "#/$defs/Url" + }, + "trustDomain": { + "type": "string" + } + }, + "required": [ + "providerId", + "issuer", + "publicOrigin", + "trustDomain" + ], + "type": "object" + }, + "TargetSigner": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "algorithm": { + "$ref": "#/$defs/TargetSigningAlgorithm" + }, + "privateKeyRef": { + "$ref": "#/$defs/SecretReference" + }, + "publicJwkFile": { + "type": "string" + }, + "type": { + "const": "local-jwk", + "type": "string" + } + }, + "required": [ + "type", + "algorithm", + "privateKeyRef", + "publicJwkFile" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "algorithm": { + "$ref": "#/$defs/TargetSigningAlgorithm" + }, + "attemptTimeoutMilliseconds": { + "format": "uint64", + "maximum": 30000, + "minimum": 1, + "type": "integer" + }, + "keyName": { + "type": "string" + }, + "keyVersion": { + "format": "uint32", + "maximum": 4294967295, + "minimum": 1, + "type": "integer" + }, + "mount": { + "type": "string" + }, + "publicJwkFile": { + "type": "string" + }, + "type": { + "const": "transit", + "type": "string" + }, + "unixSocketPath": { + "type": "string" + } + }, + "required": [ + "type", + "algorithm", + "publicJwkFile", + "unixSocketPath", + "mount", + "keyName", + "keyVersion", + "attemptTimeoutMilliseconds" + ], + "type": "object" + } + ] + }, + "TargetSigning": { + "additionalProperties": false, + "description": "What the target may sign, beyond the signer binding. When the target\nomits this block, it signs for at most 300 seconds.", + "properties": { + "maximumAssertionValiditySeconds": { + "description": "The longest validity, in seconds, any definition on this target may\nsign an assertion for.", + "format": "uint64", + "maximum": 31536000, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "maximumAssertionValiditySeconds" + ], + "type": "object" + }, + "TargetSigningAlgorithm": { + "enum": [ + "ES256" + ], + "type": "string" + }, + "TargetSourceAcquisition": { + "additionalProperties": false, + "properties": { + "acquisitionDeadlineMilliseconds": { + "format": "uint64", + "maximum": 18446744073709551615, + "minimum": 1, + "type": "integer" + }, + "maximumDataOperations": { + "format": "uint64", + "maximum": 18446744073709551615, + "minimum": 1, + "type": "integer" + }, + "maximumResponseBytes": { + "format": "uint64", + "maximum": 18446744073709551615, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "maximumDataOperations", + "acquisitionDeadlineMilliseconds", + "maximumResponseBytes" + ], + "type": "object" + }, + "TargetSubjectBinding": { + "additionalProperties": false, + "properties": { + "keyVersion": { + "format": "uint32", + "maximum": 2147483647, + "minimum": 1, + "type": "integer" + }, + "secretRef": { + "$ref": "#/$defs/SecretReference" + } + }, + "required": [ + "secretRef", + "keyVersion" + ], + "type": "object" + }, + "TargetTlsTermination": { + "enum": [ + "operator-controlled-upstream" + ], + "type": "string" + }, + "TargetTrustProfile": { + "additionalProperties": false, + "properties": { + "caBundleFile": { + "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/evidence/target/target.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/evidence/target/v1alpha1", + "type": "string" + }, + "assuranceProfile": { + "anyOf": [ + { + "$ref": "#/$defs/TargetAssuranceProfile" + }, + { + "type": "null" + } + ] + }, + "audit": { + "$ref": "#/$defs/TargetAudit" + }, + "authentication": { + "$ref": "#/$defs/TargetAuthentication" + }, + "authority": { + "type": "string" + }, + "connections": { + "additionalProperties": { + "$ref": "#/$defs/TargetConnection" + }, + "description": "Explicit endpoint bindings and their reviewed connection policies. An\nempty mapping grants no outbound endpoint authority.", + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "extracts": { + "additionalProperties": { + "$ref": "#/$defs/TargetExtractBinding" + }, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": [ + "object", + "null" + ] + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "kind": { + "const": "EvidenceTarget", + "type": "string" + }, + "listener": { + "$ref": "#/$defs/TargetListener" + }, + "outboundTls": { + "anyOf": [ + { + "$ref": "#/$defs/TargetOutboundTls" + }, + { + "type": "null" + } + ] + }, + "package": { + "$ref": "#/$defs/TargetPackage" + }, + "project": { + "$ref": "#/$defs/LocalId" + }, + "publication": { + "anyOf": [ + { + "$ref": "#/$defs/TargetPublication" + }, + { + "type": "null" + } + ] + }, + "rateLimits": { + "$ref": "#/$defs/TargetRateLimits" + }, + "responseFormats": { + "items": { + "$ref": "#/$defs/TargetResponseFormat" + }, + "type": [ + "array", + "null" + ], + "uniqueItems": true + }, + "secretProviders": { + "$ref": "#/$defs/TargetSecretProviders" + }, + "service": { + "$ref": "#/$defs/TargetService" + }, + "signer": { + "$ref": "#/$defs/TargetSigner" + }, + "signing": { + "anyOf": [ + { + "$ref": "#/$defs/TargetSigning" + }, + { + "type": "null" + } + ] + }, + "sourceAcquisition": { + "anyOf": [ + { + "$ref": "#/$defs/TargetSourceAcquisition" + }, + { + "type": "null" + } + ], + "description": "Optional operational acquisition budget projected only into runtime\nconfiguration. Omission uses the Evidence engine defaults." + }, + "subjectBinding": { + "$ref": "#/$defs/TargetSubjectBinding" + } + }, + "required": [ + "apiVersion", + "kind", + "id", + "project", + "package", + "authority", + "service", + "listener", + "authentication", + "connections", + "secretProviders", + "signer", + "subjectBinding", + "audit", + "rateLimits" + ], + "title": "Evidence target", + "type": "object" +} diff --git a/public/artifacts/sha256/bbbc49cc6aa19d2b6329db459ac7d5c8635583e2a0ca63f2d75556840a804202.json b/public/artifacts/sha256/bbbc49cc6aa19d2b6329db459ac7d5c8635583e2a0ca63f2d75556840a804202.json new file mode 100644 index 000000000..4581027e5 --- /dev/null +++ b/public/artifacts/sha256/bbbc49cc6aa19d2b6329db459ac7d5c8635583e2a0ca63f2d75556840a804202.json @@ -0,0 +1,1041 @@ +{ + "$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 + }, + "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": [ + "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/c1be1e7bc8efa01de429ea5a5cd7c19da49d9766d71839602a0e81cecc447d8b.json b/public/artifacts/sha256/c1be1e7bc8efa01de429ea5a5cd7c19da49d9766d71839602a0e81cecc447d8b.json new file mode 100644 index 000000000..b9c5f48cd --- /dev/null +++ b/public/artifacts/sha256/c1be1e7bc8efa01de429ea5a5cd7c19da49d9766d71839602a0e81cecc447d8b.json @@ -0,0 +1,1040 @@ +{ + "$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, + "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" + }, + "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/c336506f4dcd7e266155e8cd1ff9710766bc240f395e27b0480b2e193e74e2ee.jsonld b/public/artifacts/sha256/c336506f4dcd7e266155e8cd1ff9710766bc240f395e27b0480b2e193e74e2ee.jsonld new file mode 100644 index 000000000..ae799e69d --- /dev/null +++ b/public/artifacts/sha256/c336506f4dcd7e266155e8cd1ff9710766bc240f395e27b0480b2e193e74e2ee.jsonld @@ -0,0 +1,33 @@ +{ + "@context": { + "data": "https://id.registrystack.org/vocab/registry-record/data", + "items": "https://id.registrystack.org/vocab/registry-record/items", + "pageInfo": "https://id.registrystack.org/vocab/registry-record/pageInfo", + "meta": "https://id.registrystack.org/vocab/registry-record/meta", + "domainData": "https://id.registrystack.org/vocab/registry-record/domainData", + "nextCursor": { + "@id": "https://id.registrystack.org/vocab/registry-record/nextCursor", + "@type": "http://www.w3.org/2001/XMLSchema#string" + }, + "registryIdentifier": { + "@id": "https://id.registrystack.org/vocab/registry-record/registryIdentifier", + "@type": "http://www.w3.org/2001/XMLSchema#string" + }, + "datasetIdentifier": { + "@id": "https://id.registrystack.org/vocab/registry-record/datasetIdentifier", + "@type": "http://www.w3.org/2001/XMLSchema#string" + }, + "recordTypeIdentifier": { + "@id": "https://id.registrystack.org/vocab/registry-record/recordTypeIdentifier", + "@type": "http://www.w3.org/2001/XMLSchema#string" + }, + "recordIdentifier": { + "@id": "https://id.registrystack.org/vocab/registry-record/recordIdentifier", + "@type": "http://www.w3.org/2001/XMLSchema#string" + }, + "revisionIdentifier": { + "@id": "https://id.registrystack.org/vocab/registry-record/revisionIdentifier", + "@type": "http://www.w3.org/2001/XMLSchema#string" + } + } +} diff --git a/public/artifacts/sha256/c8685157d8e2982b00657a2a3b2fe729cf54792d76134cf22aa1be1cc7abf4a8.md b/public/artifacts/sha256/c8685157d8e2982b00657a2a3b2fe729cf54792d76134cf22aa1be1cc7abf4a8.md new file mode 100644 index 000000000..6fd920c4e --- /dev/null +++ b/public/artifacts/sha256/c8685157d8e2982b00657a2a3b2fe729cf54792d76134cf22aa1be1cc7abf4a8.md @@ -0,0 +1,132 @@ +# Registry Record v1 profile + +Profile identifier: `https://id.registrystack.org/profiles/registry-record/v1` + +Schema identifier: `https://id.registrystack.org/schemas/registry-record/v1` + +JSON-LD context identifier: +`https://id.registrystack.org/contexts/registry-record/v1` + +Registry Record v1 is a small, open base profile for one released Registry +record or a homogeneous collection of released Registry records. The three +identifiers above name reviewed local artifacts. Implementations must use +locally pinned bytes and digests; they must not fetch a resolver to authorize a +request, compile a package, validate a response, or start a service. + +`/v1` is one compatibility line. Its required members and JSON-LD term +mappings cannot be added, removed, relocated, or redefined. A change requiring +consumers to change parsing or interpretation publishes a new profile version. + +## Single record + +```json +{ + "data": { + "recordIdentifier": "company-123", + "revisionIdentifier": "42", + "domainData": { + "legalName": "Example Ltd" + } + }, + "meta": { + "registryIdentifier": "business-registry", + "datasetIdentifier": "legal-entities", + "recordTypeIdentifier": "company" + } +} +``` + +## Collection + +```json +{ + "items": [ + { + "recordIdentifier": "company-123", + "revisionIdentifier": "42", + "domainData": { + "legalName": "Example Ltd" + } + } + ], + "pageInfo": { + "nextCursor": null + }, + "meta": { + "registryIdentifier": "business-registry", + "datasetIdentifier": "legal-entities", + "recordTypeIdentifier": "company" + } +} +``` + +All five identifiers, `registryIdentifier`, `datasetIdentifier`, +`recordTypeIdentifier`, `recordIdentifier`, and `revisionIdentifier`, are +opaque non-empty strings. `nextCursor` is either `null` or an opaque non-empty +string. `domainData` is an object containing only fields released by the +selected product access context and projection. It must not contain profile +infrastructure members. + +The collection response context appears once because every collection is +homogeneous for Registry, primary dataset, and entity type. A cross-dataset or +cross-entity operation must use another profile or explicit per-item context. + +## JSON-LD + +JSON uses no `@context`. JSON-LD uses `application/ld+json` and releases exactly +the same values as JSON. Its `@context` is either the exact shared context +identifier below or an ordered array whose first item is that exact identifier +and whose remaining one or more items are non-empty absolute HTTPS product +context IRIs. Every array entry is unique. Inline objects, a wrong, missing, or +reordered shared context, empty entries, duplicate entries, and non-HTTPS +product context IRIs do not conform. + +Product contexts may add terms, but must not redefine any term owned by the +shared context. This includes the envelope, metadata, pagination, domain-data, +and identifier terms. Each exact product response schema must pin its complete +scalar context or URI array, rather than accepting arbitrary extra contexts, +and its local conformance tests must read locally pinned context documents and +prove that shared and product term-name sets are disjoint. Neither this profile +nor its open base schema dereferences a context IRI. An accepted IRI grants no +trust, authority, code-loading capability, or permission to perform network +I/O. + +The shared context maps the five opaque identifiers to string-valued +vocabulary predicates, never to JSON-LD node identifiers. Canonical resource +IRIs belong in separate governed terms or links. + +```json +{ + "@context": "https://id.registrystack.org/contexts/registry-record/v1", + "data": { + "recordIdentifier": "company-123", + "revisionIdentifier": "42", + "domainData": { + "legalName": "Example Ltd" + } + }, + "meta": { + "registryIdentifier": "business-registry", + "datasetIdentifier": "legal-entities", + "recordTypeIdentifier": "company" + } +} +``` + +## Extension and representation rules + +This is a base conformance profile. Product schemas may add members while +preserving the required members and meanings above. Consumers that validate +only this profile must tolerate those product extensions. A product profile may +close its actual response shape. The open base schema is a conformance aid, not +a media-type discriminator, context resolver, trust source, or substitute for +that exact product schema. A JSON product schema must prohibit `@context`; a +JSON-LD product schema must require and pin the exact scalar or full URI array +that the product emits. + +Successful single reads, single-result lookups, creates, patches, and +tombstones use the single shape. Homogeneous list and revision-history +operations use the collection shape. Batch mutations, GeoJSON, SDMX, +catalogue metadata, OpenAPI, JSON Schema, and other non-record representations +use separately named contracts. Successful responses advertise this profile +with an RFC 6906 `Link` header using `rel="profile"`. diff --git a/public/artifacts/sha256/ca14df9aafa49fd2018a12869e54f4058e29de07f01c0cbc0dd13f069649bcc9.json b/public/artifacts/sha256/ca14df9aafa49fd2018a12869e54f4058e29de07f01c0cbc0dd13f069649bcc9.json new file mode 100644 index 000000000..b61481605 --- /dev/null +++ b/public/artifacts/sha256/ca14df9aafa49fd2018a12869e54f4058e29de07f01c0cbc0dd13f069649bcc9.json @@ -0,0 +1,429 @@ +{ + "$defs": { + "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" + }, + "ExpectedFacade": { + "description": "What the facade must answer one entry with: a recorded response, or a\nproblem named by class and code (G-FIXTURES). A problem expectation\ncarries no body: the profile's problem envelope owns that shape, and\nthe declared problem owns the status.", + "oneOf": [ + { + "additionalProperties": false, + "description": "The facade answers with this recorded response.", + "properties": { + "body": { + "$ref": "#/$defs/RecordedBody", + "description": "The response body the facade answers with." + }, + "headers": { + "additionalProperties": { + "type": "string" + }, + "description": "The response headers the facade answers with.", + "type": "object" + }, + "status": { + "description": "The status the facade answers with.", + "format": "uint32", + "maximum": 599, + "minimum": 100, + "type": "integer" + }, + "type": { + "const": "response", + "type": "string" + } + }, + "required": [ + "status", + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "The facade answers with the named problem.", + "properties": { + "class": { + "$ref": "#/$defs/ErrorClass", + "description": "The error class the facade answers with; a declared class or a\nclass a declared root covers resolves it." + }, + "code": { + "$ref": "#/$defs/ExternalId", + "description": "The declared problem code the facade fills its envelope with." + }, + "type": { + "const": "problem", + "type": "string" + } + }, + "required": [ + "class", + "code", + "type" + ], + "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" + }, + "FixtureEntry": { + "additionalProperties": false, + "description": "One fixture entry: the facade request, the upstream exchanges it\ndrives in the order the route makes them, and what the facade must\nanswer (G-FIXTURES, CONCEPT 13.3). At least one exchange is an\nauthoring invariant the checks refuse a suite without.", + "properties": { + "expected": { + "$ref": "#/$defs/ExpectedFacade", + "description": "What the facade must answer." + }, + "facadeRequest": { + "$ref": "#/$defs/RecordedFacadeRequest", + "description": "The facade request this entry replays." + }, + "upstream": { + "description": "The upstream exchanges, in the order the route makes them.", + "items": { + "$ref": "#/$defs/RecordedExchange" + }, + "type": "array" + } + }, + "required": [ + "facadeRequest", + "upstream", + "expected" + ], + "type": "object" + }, + "FixtureProvenance": { + "description": "Where a fixture's recording came from\n(`products/adapter/CONCEPT.md` section 13.3): captured from a live\nsystem, or documented as an authored reconstruction.", + "oneOf": [ + { + "additionalProperties": false, + "description": "Recorded from the named live system.", + "properties": { + "reference": { + "description": "Where the recording came from, for review.", + "type": "string" + }, + "type": { + "const": "captured", + "type": "string" + } + }, + "required": [ + "reference", + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Authored from the source system's documented behavior.", + "properties": { + "reference": { + "description": "The documentation the reconstruction follows, for review.", + "type": "string" + }, + "type": { + "const": "documented", + "type": "string" + } + }, + "required": [ + "reference", + "type" + ], + "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" + }, + "Intercept": { + "description": "One declared intercept. Fixture replay intercepts `http` and `graphql`\nsends and the token endpoint of an OAuth2 kind; nothing else is\ninterceptable.", + "oneOf": [ + { + "additionalProperties": false, + "description": "Intercept every send to the named endpoint.", + "properties": { + "endpoint": { + "$ref": "#/$defs/ExternalId", + "description": "The pack endpoint id whose sends replay from the fixtures." + }, + "type": { + "const": "endpoint", + "type": "string" + } + }, + "required": [ + "endpoint", + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Intercept the token requests of the named endpoint's OAuth2 kind\n(`products/adapter/CONCEPT.md` section 10.2). Replay runs without\na credential: the recorded token request carries no credential\nheader or body, and the recorded reply's token is a synthetic\nvalue a captured recording must replace before it is committed.", + "properties": { + "endpoint": { + "$ref": "#/$defs/ExternalId", + "description": "The pack endpoint whose token requests replay from the\nfixtures." + }, + "type": { + "const": "token-endpoint", + "type": "string" + } + }, + "required": [ + "endpoint", + "type" + ], + "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" + }, + "RecordedBody": true, + "RecordedExchange": { + "additionalProperties": false, + "description": "One recorded upstream exchange: the send the route made and the reply\nthe source gave it.", + "properties": { + "request": { + "$ref": "#/$defs/RecordedRequest", + "description": "The send the route made." + }, + "response": { + "$ref": "#/$defs/RecordedResponse", + "description": "The reply the source gave it." + } + }, + "required": [ + "request", + "response" + ], + "type": "object" + }, + "RecordedFacadeRequest": { + "additionalProperties": false, + "description": "The facade request one entry replays: the operation it exercises, plus\nthe request the deployment receives. The operation is the facade-side\nprimary key of the entry; the profile owns its method.", + "properties": { + "body": { + "$ref": "#/$defs/RecordedBody", + "description": "The request body: absent, JSON `null`, or a value (G-FIXTURES)." + }, + "headers": { + "additionalProperties": { + "type": "string" + }, + "description": "The request headers.", + "type": "object" + }, + "operation": { + "$ref": "#/$defs/ExternalId", + "description": "The profile operation this entry exercises." + }, + "path": { + "description": "The request path, with any template segments already filled.", + "type": "string" + }, + "query": { + "description": "The encoded query string.", + "type": "string" + } + }, + "required": [ + "operation", + "path" + ], + "type": "object" + }, + "RecordedRequest": { + "additionalProperties": false, + "description": "One recorded upstream request the fixture replay matches against.", + "properties": { + "body": { + "$ref": "#/$defs/RecordedBody", + "description": "The request body: absent, JSON `null`, or a value (G-FIXTURES)." + }, + "endpoint": { + "$ref": "#/$defs/ExternalId", + "description": "The endpoint the request goes to." + }, + "headers": { + "additionalProperties": { + "type": "string" + }, + "description": "The request headers.", + "type": "object" + }, + "method": { + "$ref": "#/$defs/HttpMethod", + "description": "The request method." + }, + "path": { + "description": "The request path, with any template segments already filled.", + "type": "string" + }, + "query": { + "description": "The encoded query string.", + "type": "string" + }, + "tokenRequest": { + "description": "Whether this request is the endpoint's token request (CONCEPT\n10.2); only a token intercept answers it.", + "type": "boolean" + } + }, + "required": [ + "endpoint", + "method", + "path" + ], + "type": "object" + }, + "RecordedResponse": { + "additionalProperties": false, + "description": "One recorded upstream reply.", + "properties": { + "body": { + "$ref": "#/$defs/RecordedBody", + "description": "The reply body: absent, JSON `null`, or a value (G-FIXTURES)." + }, + "headers": { + "additionalProperties": { + "type": "string" + }, + "description": "The response headers.", + "type": "object" + }, + "rawBodyBase64": { + "description": "Exact response bytes for a selected host protocol, encoded as standard\npadded base64. This is mutually exclusive with `body`; ordinary replay\nnever decodes or exposes it.", + "type": "string" + }, + "status": { + "description": "The status the upstream answered with.", + "format": "uint32", + "maximum": 599, + "minimum": 100, + "type": "integer" + } + }, + "required": [ + "status" + ], + "type": "object" + } + }, + "$id": "https://id.registrystack.org/schemas/adapter/fixture/fixture.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "description": "The fixture suite artifact (`AdapterFixture`), authored per pack.", + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/adapter/fixture/v1alpha1", + "type": "string" + }, + "entries": { + "default": [], + "description": "The recorded exchanges and expectations.", + "items": { + "$ref": "#/$defs/FixtureEntry" + }, + "type": "array" + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The suite identifier." + }, + "intercepts": { + "description": "The sends this suite intercepts, by endpoint id and token endpoint.\nA route never declares its own test intercepts.", + "items": { + "$ref": "#/$defs/Intercept" + }, + "type": "array" + }, + "kind": { + "const": "AdapterFixture", + "type": "string" + }, + "pack": { + "$ref": "#/$defs/ExternalId", + "description": "The pack this suite replays." + }, + "provenance": { + "$ref": "#/$defs/FixtureProvenance", + "description": "Where the recording came from." + }, + "upstreamVersion": { + "description": "The upstream version the recording reflects.", + "type": "string" + } + }, + "required": [ + "apiVersion", + "id", + "intercepts", + "kind", + "pack", + "provenance", + "upstreamVersion" + ], + "title": "Registry Adapter fixture suite", + "type": "object" +} diff --git a/public/artifacts/sha256/e9bae5707ef92498b162083958fc0af4c1c043e74eec71252259e70bab88b73d.json b/public/artifacts/sha256/e9bae5707ef92498b162083958fc0af4c1c043e74eec71252259e70bab88b73d.json new file mode 100644 index 000000000..2fb3ce9dc --- /dev/null +++ b/public/artifacts/sha256/e9bae5707ef92498b162083958fc0af4c1c043e74eec71252259e70bab88b73d.json @@ -0,0 +1,923 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://id.registrystack.org/schemas/breg/access-explanation/access-explanation.v1alpha8.schema.json", + "title": "AccessExplanation", + "description": "Wire shape of `explanation` for `bregctl explain access` without `--scenario`. Evaluation-rule strings are pinned. Record grants retain compiled authority with inspection-only explicit row boundaries and allowCount. Routes, actions and rowReach follow the compiled model, except pinned routes.entries[].recordType. timers pins autonomous policy writers and the exact product-owned future-effect ceiling without inventing a public profile. claimContract remains opaque except principalClaims and its success/error relationship with claimContractError. Consent and statisticalDatasets are pinned in full.", + "type": "object", + "additionalProperties": false, + "required": [ + "apiVersion", + "kind", + "scopeMatching", + "purposeMatching", + "rowMatching", + "profileSelection", + "relationshipMatching", + "missingClaims", + "evaluation", + "routes", + "recordTypes", + "actions", + "timers", + "rowReach", + "claimContract", + "claimContractError", + "consent", + "statisticalDatasets", + "accessProfiles" + ], + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/breg/access-explanation/v1alpha8" + }, + "kind": { + "const": "BRegAccessExplanation" + }, + "scopeMatching": { + "type": "string" + }, + "purposeMatching": { + "type": "string" + }, + "rowMatching": { + "type": "string" + }, + "profileSelection": { + "type": "string" + }, + "relationshipMatching": { + "type": "string" + }, + "missingClaims": { + "type": "string" + }, + "evaluation": { + "type": "string" + }, + "routes": { + "type": "object", + "additionalProperties": false, + "required": [ + "entries" + ], + "properties": { + "entries": { + "type": "array", + "items": { + "type": "object", + "description": "Passthrough of the compiled access-route inventory; only `recordType` is pinned. Other fields follow CompiledAccessEntry and are outside this contract version.", + "x-registry-passthrough": "bregctl writes each compiled access-route entry as the engine holds it; only recordType is pinned, and its other members follow CompiledAccessEntry and are outside this contract version.", + "additionalProperties": true, + "required": [ + "recordType" + ], + "properties": { + "recordType": { + "type": "string" + } + } + } + } + } + }, + "recordTypes": { + "type": "array", + "description": "Per-Record type author inspection. Record grants explicitly report allowCount and render an empty compiled claim-bound row list as unrestricted. Other profile members follow the compiled AccessProfileSource.", + "items": { + "type": "object", + "x-registry-passthrough": "EntityAccessExplanation retains compiled authority with inspection-only explicit defaults on its profiles.", + "required": [ + "profiles" + ], + "properties": { + "profiles": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "rowBoundaries", + "allowCount" + ], + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "rowBoundaries": { + "description": "Unrestricted means no claim-bound row restriction. Membership and consent boundaries, when present, still apply.", + "oneOf": [ + { + "const": "unrestricted" + }, + { + "type": "array", + "minItems": 1, + "items": { + "type": "object", + "additionalProperties": false, + "required": [ + "field", + "claim", + "operator" + ], + "properties": { + "field": { + "type": "string" + }, + "claim": { + "type": "string" + }, + "operator": { + "enum": [ + "equals", + "in" + ] + } + } + } + } + ] + }, + "allowCount": { + "type": "boolean" + }, + "readPaths": { + "type": "array", + "description": "Relationship grants declared on this source Record type. Each grant names the disclosed target, joining Record type, and route without requiring a model-report join.", + "items": { + "type": "object", + "required": [ + "path", + "targetRecordType", + "throughRecordType", + "route" + ], + "properties": { + "path": { + "$ref": "#/$defs/LocalId" + }, + "targetRecordType": { + "$ref": "#/$defs/LocalId" + }, + "throughRecordType": { + "$ref": "#/$defs/LocalId" + }, + "route": { + "$ref": "#/$defs/LocalId" + } + }, + "x-registry-passthrough": "The inspector retains the compiled read-path permission and adds targetRecordType, throughRecordType, and route for inspection." + } + } + }, + "x-registry-passthrough": "The inspector retains the compiled AccessProfileSource members unchanged except rowBoundaries and allowCount. Only those explicit defaults and the profile id are pinned here; other members follow the compiled contract." + } + } + } + } + }, + "actions": { + "type": "object", + "description": "Action inventory with canonical author inspection definitions, routes and access entries.", + "x-registry-passthrough": "Actions use the same author inspector as ActionsExplanation, with exact fixed plans or function ceilings; routes and access follow the compiler." + }, + "timers": { + "type": "array", + "description": "Root-enabled autonomous Record timers, the existing surfaces that can shape their policy, and their exact product-owned future-effect ceiling. Empty when the compiled project has no enabled timer.", + "items": { + "type": "object", + "additionalProperties": false, + "required": [ + "recordType", + "timer", + "sourceModule", + "invoke", + "controlFields", + "predicateFields", + "effectInputFields", + "controlWriters", + "predicateWriters", + "effectInputWriters", + "futureEffect" + ], + "properties": { + "recordType": { + "$ref": "#/$defs/LocalId" + }, + "timer": { + "$ref": "#/$defs/LocalId" + }, + "sourceModule": { + "oneOf": [ + { + "$ref": "#/$defs/LocalId" + }, + { + "type": "null" + } + ] + }, + "invoke": { + "$ref": "#/$defs/LocalId" + }, + "controlFields": { + "$ref": "#/$defs/TimerFields" + }, + "predicateFields": { + "$ref": "#/$defs/TimerFields" + }, + "effectInputFields": { + "$ref": "#/$defs/TimerFields" + }, + "controlWriters": { + "type": "array", + "items": { + "$ref": "#/$defs/TimerWriter" + } + }, + "predicateWriters": { + "type": "array", + "items": { + "$ref": "#/$defs/TimerWriter" + } + }, + "effectInputWriters": { + "type": "array", + "items": { + "$ref": "#/$defs/TimerWriter" + } + }, + "futureEffect": { + "type": "object", + "additionalProperties": false, + "required": [ + "authority", + "recordGrantRelationship", + "systemGrant" + ], + "properties": { + "authority": { + "const": "product-owned" + }, + "recordGrantRelationship": { + "const": "none" + }, + "systemGrant": { + "$ref": "#/$defs/TimerSystemGrant" + } + } + } + } + } + }, + "rowReach": { + "type": "array", + "description": "The compiled model's row-reach explanation. Read-path entries identify the disclosed target Record type while retaining the root profile's row boundaries and an exact source path to the grant. Action target entries identify their runtime-enforced authority as additional to ordinary Record grants, state whether any direct Record grant exists for the same profile and Record type, and retain their compiled uses. Grant existence does not compare operations or row boundaries and does not imply that Action target authority grants ordinary CRUD.", + "items": { + "type": "object", + "required": [ + "recordType", + "profile", + "sourcePath", + "surface", + "rowBoundaries" + ], + "properties": { + "recordType": { + "$ref": "#/$defs/LocalId" + }, + "profile": { + "$ref": "#/$defs/LocalId" + }, + "sourcePath": { + "type": "string", + "minLength": 1 + }, + "surface": { + "enum": [ + "record", + "read_path", + "action_target", + "proposal_target" + ], + "x-registry-member-names": true + }, + "rowBoundaries": { + "type": "array", + "x-registry-passthrough": "The inspector retains the compiler's boundary list exactly; an empty list is the compiled representation of unrestricted row reach." + } + }, + "x-registry-passthrough": "bregctl writes each row-reach explanation as the engine holds it; the target Record type, profile, source path, surface, and row boundaries are pinned. Other members follow RowReachExplanation." + } + }, + "claimContract": { + "type": [ + "object", + "null" + ], + "description": "Passthrough of the compiled authority inventory, or null when that inventory failed. `principalClaims` is pinned for exact contract inspection; every other member follows AuthorityInventory and remains outside this contract version. Casework provider pairing verifies a sealed purpose-bound context export and grants no BReg authority.", + "x-registry-passthrough": "bregctl writes the compiled authority inventory as the engine holds it; only principalClaims is pinned, and its other members follow AuthorityInventory outside this contract version.", + "required": [ + "principalClaims" + ], + "properties": { + "principalClaims": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string", + "minLength": 1 + } + } + } + }, + "claimContractError": { + "type": [ + "string", + "null" + ], + "description": "The compiled authority inventory's failure, or null when the inventory was built. AuthorityInventoryError is a value-free enum serialized as one of these kebab-case strings; the vocabulary is pinned and grows only with an apiVersion bump.", + "enum": [ + "principal-claim-missing", + "target-entity-not-compiled", + "boundary-field-not-compiled", + "lookup-selector-not-compiled", + "lookup-claim-mapping-incomplete", + "lookup-field-not-compiled", + "conflicting-claim-expectation", + null + ] + }, + "consent": { + "description": "Consent-gated permissions, the recipient set of every client, and the consent records they check; null when the project declares no recipients, consent record, or requireConsent permission. Built only for this payload and pinned in full.", + "type": [ + "object", + "null" + ], + "additionalProperties": false, + "required": [ + "condition", + "unmappedClients", + "trustModel", + "ungating", + "organizations", + "groups", + "clients", + "records", + "permissions", + "issuers" + ], + "properties": { + "condition": { + "type": "string" + }, + "unmappedClients": { + "type": "string" + }, + "trustModel": { + "type": "string" + }, + "ungating": { + "type": "string" + }, + "organizations": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "required": [ + "id", + "name", + "clients", + "groups", + "retired" + ], + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "name": { + "type": "string" + }, + "clients": { + "type": "array", + "items": { + "type": "string" + } + }, + "groups": { + "type": "array", + "items": { + "type": "string" + } + }, + "retired": { + "type": "boolean" + } + } + } + }, + "groups": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "required": [ + "id", + "name", + "members", + "clients" + ], + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "name": { + "type": "string" + }, + "members": { + "type": "array", + "items": { + "type": "string" + } + }, + "clients": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "clients": { + "type": "array", + "items": { + "$ref": "#/$defs/consentClient" + } + }, + "records": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "required": [ + "recordType", + "maximumDurationDays", + "gives", + "revokes", + "refusals", + "scopes", + "indexes" + ], + "properties": { + "recordType": { + "type": "string" + }, + "maximumDurationDays": { + "type": "integer", + "minimum": 1, + "maximum": 3652 + }, + "gives": { + "type": "array", + "items": { + "type": "string" + } + }, + "revokes": { + "type": "array", + "items": { + "type": "string" + } + }, + "refusals": { + "type": "array", + "items": { + "type": "string" + } + }, + "scopes": { + "type": "array", + "items": { + "type": "string" + } + }, + "indexes": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "permissions": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "required": [ + "recordType", + "profile", + "sourcePath", + "record", + "on", + "condition", + "purposes", + "scope", + "maximumDurationDays", + "probeFunction", + "indexes", + "readableFields", + "clients", + "issuingActions" + ], + "properties": { + "recordType": { + "type": "string" + }, + "profile": { + "type": "string" + }, + "sourcePath": { + "type": "string" + }, + "record": { + "type": "string" + }, + "on": { + "type": "string" + }, + "condition": { + "type": "string" + }, + "purposes": { + "type": "array", + "items": { + "type": "string" + } + }, + "scope": { + "type": "string" + }, + "maximumDurationDays": { + "type": "integer", + "minimum": 1, + "maximum": 3652 + }, + "probeFunction": { + "type": "string" + }, + "indexes": { + "type": "array", + "items": { + "type": "string" + } + }, + "readableFields": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "required": [ + "field", + "classification" + ], + "properties": { + "field": { + "type": "string" + }, + "classification": { + "enum": [ + "public", + "internal", + "restricted", + null + ] + } + } + } + }, + "clients": { + "type": "array", + "items": { + "$ref": "#/$defs/consentClient" + } + }, + "issuingActions": { + "type": "array", + "items": { + "$ref": "#/$defs/consentIssuer" + } + } + } + } + }, + "issuers": { + "type": "array", + "items": { + "$ref": "#/$defs/consentIssuer" + } + } + } + }, + "statisticalDatasets": { + "description": "Who may do what with each statistical dataset, ordered by dataset; empty when the project declares none. Each list names access profiles in order. `readReleases` is every profile that reads the dataset's releases, and is empty when no profile publishes it.", + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "required": [ + "dataset", + "readLive", + "publish", + "readReleases", + "accessProfiles", + "display" + ], + "properties": { + "dataset": { + "type": "string" + }, + "readLive": { + "type": "array", + "items": { + "type": "string" + } + }, + "publish": { + "type": "array", + "maxItems": 1, + "items": { + "type": "string" + } + }, + "readReleases": { + "type": "array", + "items": { + "type": "string" + } + }, + "accessProfiles": { + "type": "array", + "description": "Full authentication requirements for dataset grants, including profiles with no Record type grant.", + "items": { + "type": "object", + "required": [ + "id", + "default", + "principalClaim", + "requiredScopes", + "requiredPurposes" + ], + "x-registry-passthrough": "Dataset profile authority retained by the compiler; shape follows AccessProfileSource." + } + }, + "display": { + "$ref": "#/$defs/Presentation" + } + } + } + }, + "accessProfiles": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "required": [ + "id", + "display" + ], + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "display": { + "$ref": "#/$defs/Presentation" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "claimContract": { + "type": "null" + } + }, + "required": [ + "claimContract" + ] + }, + "then": { + "properties": { + "claimContractError": { + "type": "string" + } + } + }, + "else": { + "properties": { + "claimContractError": { + "type": "null" + } + } + } + } + ], + "$defs": { + "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" + }, + "TimerFields": { + "type": "array", + "uniqueItems": true, + "items": { + "$ref": "#/$defs/LocalId" + } + }, + "TimerWriter": { + "type": "object", + "additionalProperties": false, + "required": [ + "surface", + "id", + "sourcePath", + "operations", + "fields" + ], + "properties": { + "surface": { + "enum": [ + "record-permission", + "action" + ] + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "sourcePath": { + "type": "string", + "minLength": 1 + }, + "operations": { + "type": "array", + "minItems": 1, + "uniqueItems": true, + "items": { + "enum": [ + "create", + "patch", + "tombstone", + "batch", + "import" + ] + } + }, + "fields": { + "$ref": "#/$defs/TimerFields" + }, + "accessProfiles": { + "type": "array", + "uniqueItems": true, + "items": { + "$ref": "#/$defs/LocalId" + } + } + } + }, + "TimerSystemGrant": { + "type": "object", + "additionalProperties": false, + "required": [ + "revision", + "actionId", + "actionRevision", + "targets" + ], + "properties": { + "revision": { + "type": "string", + "pattern": "^sha256:[0-9a-f]{64}$" + }, + "actionId": { + "$ref": "#/$defs/LocalId" + }, + "actionRevision": { + "type": "string", + "pattern": "^sha256:[0-9a-f]{64}$" + }, + "targets": { + "type": "array", + "minItems": 1, + "items": { + "type": "object", + "additionalProperties": false, + "required": [ + "recordType", + "operation", + "fields", + "readFields" + ], + "properties": { + "recordType": { + "$ref": "#/$defs/LocalId" + }, + "operation": { + "enum": [ + "create", + "get", + "patch", + "tombstone" + ] + }, + "fields": { + "$ref": "#/$defs/TimerFields" + }, + "readFields": { + "$ref": "#/$defs/TimerFields" + } + } + } + } + } + }, + "consentIssuer": { + "type": "object", + "additionalProperties": false, + "required": [ + "action", + "issuer" + ], + "properties": { + "action": { + "type": "string" + }, + "issuer": { + "enum": [ + "self", + "steward" + ] + } + } + }, + "consentClient": { + "type": "object", + "additionalProperties": false, + "required": [ + "client", + "organization", + "recipients" + ], + "properties": { + "client": { + "type": "string" + }, + "organization": { + "type": [ + "string", + "null" + ] + }, + "recipients": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "Display": { + "type": "object", + "additionalProperties": false, + "properties": { + "label": { + "type": "string" + }, + "description": { + "type": "string" + }, + "titleField": { + "type": "string" + } + } + }, + "Presentation": { + "type": "object", + "additionalProperties": false, + "properties": { + "label": { + "type": "string" + }, + "description": { + "type": "string" + } + } + } + } +} diff --git a/public/artifacts/sha256/e9ddb96d7b521da29b033353ffa854e2e003b1c952f9aad847b30ed1e3b8cf2a.json b/public/artifacts/sha256/e9ddb96d7b521da29b033353ffa854e2e003b1c952f9aad847b30ed1e3b8cf2a.json new file mode 100644 index 000000000..9971fa3cd --- /dev/null +++ b/public/artifacts/sha256/e9ddb96d7b521da29b033353ffa854e2e003b1c952f9aad847b30ed1e3b8cf2a.json @@ -0,0 +1,201 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://id.registrystack.org/schemas/registry-record/v1", + "title": "Registry Record v1 base response", + "description": "Open base conformance aid for one Registry record or a homogeneous Registry record collection. It validates no media type, resolves no context IRI, and grants no trust; exact product schemas must close the emitted shape and context.", + "properties": { + "@context": { + "description": "For JSON-LD only: the shared context URI, or an ordered composition beginning with it and followed by one or more unique absolute HTTPS product context IRIs. JSON responses must omit this member, and exact product schemas must pin their full context array.", + "oneOf": [ + { + "const": "https://id.registrystack.org/contexts/registry-record/v1" + }, + { + "type": "array", + "minItems": 2, + "uniqueItems": true, + "prefixItems": [ + { + "const": "https://id.registrystack.org/contexts/registry-record/v1" + } + ], + "items": { + "type": "string", + "minLength": 1, + "format": "iri", + "pattern": "^[hH][tT][tT][pP][sS]://[^/?#\\s]+(?:[/?#][^\\s]*)?$" + } + } + ] + } + }, + "oneOf": [ + { "$ref": "#/$defs/singleResponse" }, + { "$ref": "#/$defs/collectionResponse" } + ], + "$defs": { + "opaqueIdentifier": { + "type": "string", + "minLength": 1 + }, + "extensionValue": { + "description": "An open product extension value that cannot introduce a nested JSON-LD context.", + "oneOf": [ + { + "type": ["null", "boolean", "number", "string"] + }, + { + "type": "array", + "items": { "$ref": "#/$defs/extensionValue" } + }, + { + "type": "object", + "propertyNames": { + "not": { "const": "@context" } + }, + "additionalProperties": { "$ref": "#/$defs/extensionValue" } + } + ] + }, + "domainData": { + "type": "object", + "propertyNames": { + "not": { "const": "@context" } + }, + "not": { + "anyOf": [ + { "required": ["data"] }, + { "required": ["items"] }, + { "required": ["pageInfo"] }, + { "required": ["meta"] }, + { "required": ["registryIdentifier"] }, + { "required": ["datasetIdentifier"] }, + { "required": ["recordTypeIdentifier"] }, + { "required": ["recordIdentifier"] }, + { "required": ["revisionIdentifier"] }, + { "required": ["nextCursor"] } + ] + }, + "additionalProperties": { "$ref": "#/$defs/extensionValue" } + }, + "record": { + "type": "object", + "required": ["recordIdentifier", "revisionIdentifier", "domainData"], + "not": { + "anyOf": [ + { "required": ["data"] }, + { "required": ["items"] }, + { "required": ["pageInfo"] }, + { "required": ["meta"] }, + { "required": ["registryIdentifier"] }, + { "required": ["datasetIdentifier"] }, + { "required": ["recordTypeIdentifier"] }, + { "required": ["nextCursor"] }, + { "required": ["@context"] } + ] + }, + "properties": { + "recordIdentifier": { "$ref": "#/$defs/opaqueIdentifier" }, + "revisionIdentifier": { "$ref": "#/$defs/opaqueIdentifier" }, + "domainData": { "$ref": "#/$defs/domainData" } + }, + "additionalProperties": { "$ref": "#/$defs/extensionValue" } + }, + "responseMeta": { + "type": "object", + "required": ["registryIdentifier", "datasetIdentifier", "recordTypeIdentifier"], + "not": { + "anyOf": [ + { "required": ["data"] }, + { "required": ["items"] }, + { "required": ["pageInfo"] }, + { "required": ["recordIdentifier"] }, + { "required": ["revisionIdentifier"] }, + { "required": ["domainData"] }, + { "required": ["nextCursor"] }, + { "required": ["@context"] } + ] + }, + "properties": { + "registryIdentifier": { "$ref": "#/$defs/opaqueIdentifier" }, + "datasetIdentifier": { "$ref": "#/$defs/opaqueIdentifier" }, + "recordTypeIdentifier": { "$ref": "#/$defs/opaqueIdentifier" } + }, + "additionalProperties": { "$ref": "#/$defs/extensionValue" } + }, + "pageInfo": { + "type": "object", + "required": ["nextCursor"], + "not": { + "anyOf": [ + { "required": ["data"] }, + { "required": ["items"] }, + { "required": ["meta"] }, + { "required": ["registryIdentifier"] }, + { "required": ["datasetIdentifier"] }, + { "required": ["recordTypeIdentifier"] }, + { "required": ["recordIdentifier"] }, + { "required": ["revisionIdentifier"] }, + { "required": ["domainData"] }, + { "required": ["@context"] } + ] + }, + "properties": { + "nextCursor": { + "anyOf": [ + { "$ref": "#/$defs/opaqueIdentifier" }, + { "type": "null" } + ] + } + }, + "additionalProperties": { "$ref": "#/$defs/extensionValue" } + }, + "singleResponse": { + "type": "object", + "required": ["data", "meta"], + "not": { + "anyOf": [ + { "required": ["items"] }, + { "required": ["pageInfo"] }, + { "required": ["registryIdentifier"] }, + { "required": ["datasetIdentifier"] }, + { "required": ["recordTypeIdentifier"] }, + { "required": ["recordIdentifier"] }, + { "required": ["revisionIdentifier"] }, + { "required": ["domainData"] }, + { "required": ["nextCursor"] } + ] + }, + "properties": { + "data": { "$ref": "#/$defs/record" }, + "meta": { "$ref": "#/$defs/responseMeta" } + }, + "additionalProperties": { "$ref": "#/$defs/extensionValue" } + }, + "collectionResponse": { + "type": "object", + "required": ["items", "pageInfo", "meta"], + "not": { + "anyOf": [ + { "required": ["data"] }, + { "required": ["registryIdentifier"] }, + { "required": ["datasetIdentifier"] }, + { "required": ["recordTypeIdentifier"] }, + { "required": ["recordIdentifier"] }, + { "required": ["revisionIdentifier"] }, + { "required": ["domainData"] }, + { "required": ["nextCursor"] } + ] + }, + "properties": { + "items": { + "type": "array", + "items": { "$ref": "#/$defs/record" } + }, + "pageInfo": { "$ref": "#/$defs/pageInfo" }, + "meta": { "$ref": "#/$defs/responseMeta" } + }, + "additionalProperties": { "$ref": "#/$defs/extensionValue" } + } + } +} diff --git a/public/artifacts/sha256/ef82e91c0f0c3366bd62967be8453e90920341c246a6d05f56e4b4b4b8eb85b0.json b/public/artifacts/sha256/ef82e91c0f0c3366bd62967be8453e90920341c246a6d05f56e4b4b4b8eb85b0.json new file mode 100644 index 000000000..7335d8303 --- /dev/null +++ b/public/artifacts/sha256/ef82e91c0f0c3366bd62967be8453e90920341c246a6d05f56e4b4b4b8eb85b0.json @@ -0,0 +1,1047 @@ +{ + "$defs": { + "AuditConfig": { + "additionalProperties": false, + "description": "The audit journal: where it is written and the key its hashes use.", + "else": { + "required": [ + "path" + ] + }, + "if": { + "properties": { + "destination": { + "const": "stdout" + } + }, + "required": [ + "destination" + ] + }, + "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 active audit file. Required for, and only allowed with, `file`.", + "pattern": "^/+(?:(?:[^/.][^/]*|\\.(?:[^/.][^/]*|\\.[^/]+)?)/+)*(?:[^/.][^/]*|\\.(?:[^/.][^/]*|\\.[^/]+))$", + "type": "string" + }, + "retentionDays": { + "description": "Delete rotated files older than this many days. Only allowed with\n`file`; omitted, rotated files are kept 90 days.", + "format": "uint32", + "maximum": 36500, + "minimum": 1, + "type": "integer" + }, + "rotateBytes": { + "description": "Rotate the active file once it reaches this many bytes. Only allowed\nwith `file`; 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" + }, + "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" + }, + "BregBinding": { + "additionalProperties": false, + "description": "Environment-specific transport and reader identity. Human display always replaces it.", + "properties": { + "baseUrl": { + "$ref": "#/$defs/Url" + }, + "clientAssertionAudience": { + "type": "string" + }, + "clientAssertionKeyRef": { + "$ref": "#/$defs/SecretReference" + }, + "clientIdRef": { + "$ref": "#/$defs/SecretReference" + }, + "delegatedDisplayExchange": { + "$ref": "#/$defs/DelegatedDisplayExchangeBinding" + }, + "resource": { + "type": "string" + }, + "scopes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "statusProfile": { + "type": "string" + }, + "taskGrantProfile": { + "type": "string" + }, + "tokenEndpoint": { + "$ref": "#/$defs/Url" + } + }, + "required": [ + "baseUrl", + "statusProfile", + "tokenEndpoint", + "clientIdRef", + "clientAssertionKeyRef" + ], + "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" + }, + "DelegatedDisplayExchangeBinding": { + "additionalProperties": false, + "description": "Dedicated per-call delegation for staff-subject source disclosure. This is\nseparate from the provider's status and task-context service credential.", + "properties": { + "clientAssertionAudience": { + "type": "string" + }, + "clientAssertionKeyRef": { + "$ref": "#/$defs/SecretReference" + }, + "clientIdRef": { + "$ref": "#/$defs/SecretReference" + }, + "generation": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "scopes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "tokenEndpoint": { + "$ref": "#/$defs/Url" + } + }, + "required": [ + "tokenEndpoint", + "clientIdRef", + "clientAssertionKeyRef", + "resource", + "scopes", + "generation" + ], + "type": "object" + }, + "DelegatedStaffReaderConfig": { + "additionalProperties": false, + "description": "One deployment-owned delegation ceiling. The policy id is the containing\nmap key, never a human profile supplied by the HTTP caller.", + "properties": { + "actorSubject": { + "type": "string" + }, + "assertionIssuer": { + "$ref": "#/$defs/Url" + }, + "client": { + "type": "string" + }, + "maximumTokenLifetimeSeconds": { + "format": "uint64", + "maximum": 300, + "minimum": 1, + "type": "integer" + }, + "profile": { + "$ref": "#/$defs/LocalId" + }, + "requiredScope": { + "type": "string" + }, + "sourceProfiles": { + "items": { + "$ref": "#/$defs/LocalId" + }, + "maxItems": 32, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "profile", + "client", + "actorSubject", + "assertionIssuer", + "requiredScope", + "maximumTokenLifetimeSeconds" + ], + "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" + }, + "HumanIdentityConfig": { + "additionalProperties": false, + "properties": { + "claim": { + "default": "registry_actor_kind", + "type": "string" + }, + "value": { + "default": "human", + "type": "string" + } + }, + "type": "object" + }, + "IdentityConfig": { + "additionalProperties": false, + "description": "The logical identity of the database this deployment activates packages\nin. It is chosen by the operator (for example `casework-production`) and\nnever derived from a URL or a PostgreSQL database name. The first\n`caseworkctl apply` records it, and every later apply and every startup\nrefuses a database whose recorded identity differs.", + "properties": { + "databaseId": { + "maxLength": 256, + "minLength": 1, + "pattern": "^[^\\u0000-\\u001f\\u007f-\\u009f \\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000](?:[^\\u0000-\\u001f\\u007f-\\u009f]*[^\\u0000-\\u001f\\u007f-\\u009f \\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000])?$", + "type": "string" + } + }, + "required": [ + "databaseId" + ], + "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" + }, + "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" + }, + "MetricsListenerConfig": { + "additionalProperties": false, + "description": "Operator-private listener for `/metrics` and `/version`.\n\nIt is separate from the API listener so the counters and the active\npackage digest never appear on the surface the public contract describes.", + "properties": { + "bind": { + "type": "string" + } + }, + "required": [ + "bind" + ], + "type": "object" + }, + "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\"." + }, + "OidcConfig": { + "additionalProperties": false, + "description": "The access tokens this runtime accepts: the issuer and its keys, the\nclients admitted, the scope claim, and the claim that marks a human actor.", + "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" + }, + "delegatedStaffReaders": { + "additionalProperties": { + "$ref": "#/$defs/DelegatedStaffReaderConfig" + }, + "description": "Explicitly opted-in delegated staff readers, keyed by the policy id a\ndedicated read client sends. Absence disables delegated staff reads.", + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "humanIdentity": { + "$ref": "#/$defs/HumanIdentityConfig" + }, + "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": { + "description": "Optional deployment bound on the lifetime declared by an incoming\naccess token, independently of the issuer's own policy.", + "format": "uint64", + "maximum": 7200, + "minimum": 1, + "type": "integer" + }, + "revokedKeyIds": { + "description": "Signing-key identifiers Casework refuses locally, even while the issuer\nstill publishes them; listing a key does not revoke it at the issuer.\nOmitted, no key is refused; written, the list is non-empty.", + "items": { + "$ref": "#/$defs/ExternalId" + }, + "maxItems": 128, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "scopeClaim": { + "default": "registry_scopes", + "type": "string" + } + }, + "required": [ + "issuer", + "audience", + "allowedClients" + ], + "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" + }, + "ReviewCompletionAuthConfig": { + "additionalProperties": false, + "description": "How a completion destination presents its secret. Without `header` the\nsecret is sent as `Authorization: Bearer`; with one, the raw secret is the\nvalue of that header and no `Authorization` header is sent.", + "properties": { + "header": { + "maxLength": 64, + "minLength": 1, + "pattern": "^[!#$%&'*+.^_`|~0-9A-Za-z-]+$", + "type": "string" + }, + "secretRef": { + "$ref": "#/$defs/SecretReference" + } + }, + "required": [ + "secretRef" + ], + "type": "object" + }, + "ReviewCompletionRuntimeConfig": { + "additionalProperties": false, + "oneOf": [ + { + "required": [ + "bearerTokenRef" + ] + }, + { + "required": [ + "auth" + ] + } + ], + "properties": { + "attemptTimeoutMilliseconds": { + "default": 5000, + "format": "uint64", + "maximum": 30000, + "minimum": 100, + "type": "integer" + }, + "auth": { + "$ref": "#/$defs/ReviewCompletionAuthConfig" + }, + "bearerTokenRef": { + "$ref": "#/$defs/SecretReference", + "description": "Shorthand for `auth` with no header: the secret is presented as\n`Authorization: Bearer`. Exactly one of this and `auth` is configured." + }, + "maximumAttempts": { + "default": 12, + "format": "uint32", + "maximum": 100, + "minimum": 1, + "type": "integer" + }, + "retryDelaySeconds": { + "default": 30, + "format": "uint64", + "maximum": 86400, + "minimum": 1, + "type": "integer" + }, + "url": { + "$ref": "#/$defs/Url" + } + }, + "required": [ + "url" + ], + "type": "object" + }, + "RuntimePackageConfig": { + "additionalProperties": false, + "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, and on an authored project that has no `SHA256SUMS`.\nOmitted, the runtime starts on whichever package `root` holds." + }, + "root": { + "description": "Absolute path of the package directory.", + "pattern": "^/", + "type": "string" + } + }, + "required": [ + "root" + ], + "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" + }, + "TaskAuthorityConfig": { + "additionalProperties": false, + "properties": { + "exchangeAudience": { + "type": "string" + }, + "issuer": { + "$ref": "#/$defs/Url" + }, + "signingKeyRef": { + "$ref": "#/$defs/SecretReference" + }, + "statusClients": { + "additionalProperties": { + "type": "string" + }, + "description": "Service client IDs mapped to their one protected resource audience.", + "propertyNames": { + "$ref": "#/$defs/ExternalId" + }, + "type": "object" + } + }, + "required": [ + "issuer", + "exchangeAudience", + "signingKeyRef", + "statusClients" + ], + "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/casework/runtime/runtime.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "allOf": [ + { + "if": { + "properties": { + "secretProviders": { + "not": { + "required": [ + "environment" + ] + } + } + }, + "required": [ + "secretProviders" + ] + }, + "then": { + "properties": { + "audit": { + "properties": { + "hashKeyRef": { + "not": { + "pattern": "^secret:env/" + } + } + } + }, + "authentication": { + "properties": { + "oidc": { + "properties": { + "jwksSource": { + "properties": { + "documentRef": { + "not": { + "pattern": "^secret:env/" + } + } + } + } + } + } + } + }, + "contextProviders": { + "additionalProperties": { + "properties": { + "clientAssertionKeyRef": { + "not": { + "pattern": "^secret:env/" + } + }, + "clientIdRef": { + "not": { + "pattern": "^secret:env/" + } + }, + "delegatedDisplayExchange": { + "properties": { + "clientAssertionKeyRef": { + "not": { + "pattern": "^secret:env/" + } + }, + "clientIdRef": { + "not": { + "pattern": "^secret:env/" + } + } + } + } + } + } + }, + "database": { + "properties": { + "migrationUrlRef": { + "not": { + "pattern": "^secret:env/" + } + }, + "runtimeUrlRef": { + "not": { + "pattern": "^secret:env/" + } + }, + "trustedRootCertificateRef": { + "not": { + "pattern": "^secret:env/" + } + } + } + }, + "reviewCompletionDestinations": { + "additionalProperties": { + "properties": { + "auth": { + "properties": { + "secretRef": { + "not": { + "pattern": "^secret:env/" + } + } + } + }, + "bearerTokenRef": { + "not": { + "pattern": "^secret:env/" + } + } + } + } + }, + "taskAuthority": { + "properties": { + "signingKeyRef": { + "not": { + "pattern": "^secret:env/" + } + } + } + } + } + } + }, + { + "if": { + "properties": { + "secretProviders": { + "not": { + "required": [ + "file" + ] + } + } + }, + "required": [ + "secretProviders" + ] + }, + "then": { + "properties": { + "audit": { + "properties": { + "hashKeyRef": { + "not": { + "pattern": "^secret:file/" + } + } + } + }, + "authentication": { + "properties": { + "oidc": { + "properties": { + "jwksSource": { + "properties": { + "documentRef": { + "not": { + "pattern": "^secret:file/" + } + } + } + } + } + } + } + }, + "contextProviders": { + "additionalProperties": { + "properties": { + "clientAssertionKeyRef": { + "not": { + "pattern": "^secret:file/" + } + }, + "clientIdRef": { + "not": { + "pattern": "^secret:file/" + } + }, + "delegatedDisplayExchange": { + "properties": { + "clientAssertionKeyRef": { + "not": { + "pattern": "^secret:file/" + } + }, + "clientIdRef": { + "not": { + "pattern": "^secret:file/" + } + } + } + } + } + } + }, + "database": { + "properties": { + "migrationUrlRef": { + "not": { + "pattern": "^secret:file/" + } + }, + "runtimeUrlRef": { + "not": { + "pattern": "^secret:file/" + } + }, + "trustedRootCertificateRef": { + "not": { + "pattern": "^secret:file/" + } + } + } + }, + "reviewCompletionDestinations": { + "additionalProperties": { + "properties": { + "auth": { + "properties": { + "secretRef": { + "not": { + "pattern": "^secret:file/" + } + } + } + }, + "bearerTokenRef": { + "not": { + "pattern": "^secret:file/" + } + } + } + } + }, + "taskAuthority": { + "properties": { + "signingKeyRef": { + "not": { + "pattern": "^secret:file/" + } + } + } + } + } + } + } + ], + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/casework/runtime/v1alpha1", + "type": "string" + }, + "audit": { + "$ref": "#/$defs/AuditConfig" + }, + "authentication": { + "$ref": "#/$defs/AuthenticationConfig" + }, + "contextProviders": { + "additionalProperties": { + "$ref": "#/$defs/BregBinding" + }, + "default": {}, + "description": "Provider transport bindings keyed by the deploymentRef `casework.yaml` declares.", + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "database": { + "$ref": "#/$defs/DatabaseConfig" + }, + "identity": { + "$ref": "#/$defs/IdentityConfig" + }, + "kind": { + "const": "CaseworkRuntimeConfig", + "type": "string" + }, + "listener": { + "$ref": "#/$defs/PrivateListenerConfig" + }, + "metricsListener": { + "$ref": "#/$defs/MetricsListenerConfig" + }, + "package": { + "$ref": "#/$defs/RuntimePackageConfig" + }, + "reviewCompletionDestinations": { + "additionalProperties": { + "$ref": "#/$defs/ReviewCompletionRuntimeConfig" + }, + "description": "Completion destinations keyed by the destination id a review producer\nnames in `casework.yaml`, kept as written.", + "propertyNames": { + "$ref": "#/$defs/ExternalId" + }, + "type": "object" + }, + "secretProviders": { + "$ref": "#/$defs/SecretProvidersConfig" + }, + "taskAuthority": { + "$ref": "#/$defs/TaskAuthorityConfig" + } + }, + "required": [ + "apiVersion", + "kind", + "identity", + "package", + "listener", + "secretProviders", + "database", + "authentication", + "audit" + ], + "title": "Registry Casework runtime configuration", + "type": "object" +} diff --git a/public/artifacts/sha256/fd4ef085ef94087f5fa6d846a284957345d5463df44372c5667ea1a8cf643d0d.yaml b/public/artifacts/sha256/fd4ef085ef94087f5fa6d846a284957345d5463df44372c5667ea1a8cf643d0d.yaml new file mode 100644 index 000000000..913e3a2ec --- /dev/null +++ b/public/artifacts/sha256/fd4ef085ef94087f5fa6d846a284957345d5463df44372c5667ea1a8cf643d0d.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 and prunes sealed 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 sealed 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; + 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/contexts/index.json b/public/contexts/index.json index 307d3d647..697c838c6 100644 --- a/public/contexts/index.json +++ b/public/contexts/index.json @@ -8,15 +8,15 @@ "status": "active", "compatibility_line": "v1", "owner": "registry-record", - "source": "src/artifacts/sha256/9b8bf452538214d8559b4e8034446bfade37b5f409cfeaaace650a567423be71.jsonld", + "source": "src/artifacts/sha256/c336506f4dcd7e266155e8cd1ff9710766bc240f395e27b0480b2e193e74e2ee.jsonld", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "products/registry-record/profile/registry-record-v1.md", - "sha256": "f165e62044df2129b5cc533d3199cf81ae23d263617f39437ee37be87d3b37fe" + "sha256": "c8685157d8e2982b00657a2a3b2fe729cf54792d76134cf22aa1be1cc7abf4a8" }, - "artifact_sha256": "9b8bf452538214d8559b4e8034446bfade37b5f409cfeaaace650a567423be71", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/9b8bf452538214d8559b4e8034446bfade37b5f409cfeaaace650a567423be71.jsonld", + "artifact_sha256": "c336506f4dcd7e266155e8cd1ff9710766bc240f395e27b0480b2e193e74e2ee", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/c336506f4dcd7e266155e8cd1ff9710766bc240f395e27b0480b2e193e74e2ee.jsonld", "id": "https://id.registrystack.org/contexts/registry-record/v1", "documented_by": [ { diff --git a/public/contexts/registry-record/v1 b/public/contexts/registry-record/v1 index db51e6f19..ae799e69d 100644 --- a/public/contexts/registry-record/v1 +++ b/public/contexts/registry-record/v1 @@ -17,8 +17,8 @@ "@id": "https://id.registrystack.org/vocab/registry-record/datasetIdentifier", "@type": "http://www.w3.org/2001/XMLSchema#string" }, - "entityTypeIdentifier": { - "@id": "https://id.registrystack.org/vocab/registry-record/entityTypeIdentifier", + "recordTypeIdentifier": { + "@id": "https://id.registrystack.org/vocab/registry-record/recordTypeIdentifier", "@type": "http://www.w3.org/2001/XMLSchema#string" }, "recordIdentifier": { diff --git a/public/contexts/registry-record/v1.html b/public/contexts/registry-record/v1.html index 199af95a2..f1e53bed6 100644 --- a/public/contexts/registry-record/v1.html +++ b/public/contexts/registry-record/v1.html @@ -48,8 +48,8 @@

Lifecycle

Statusactive Compatibility linev1 Ownerregistry-record - Artifact SHA-2569b8bf452538214d8559b4e8034446bfade37b5f409cfeaaace650a567423be71 - Immutable artifacthttps://id.registrystack.org/artifacts/sha256/9b8bf452538214d8559b4e8034446bfade37b5f409cfeaaace650a567423be71.jsonld + Artifact SHA-256c336506f4dcd7e266155e8cd1ff9710766bc240f395e27b0480b2e193e74e2ee + Immutable artifacthttps://id.registrystack.org/artifacts/sha256/c336506f4dcd7e266155e8cd1ff9710766bc240f395e27b0480b2e193e74e2ee.jsonld diff --git a/public/index.html b/public/index.html index 47b8a9b0d..9228df5fb 100644 --- a/public/index.html +++ b/public/index.html @@ -44,7 +44,7 @@

Catalogs

Problem types

-

432 identifiers

+

434 identifiers

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

Schemas

-

132 identifiers

+

142 identifiers

JSON Schema documents, published at their canonical URI.

Profiles

-

1 identifiers

+

2 identifiers

Response profile documents, published at their canonical URI.

Vocabularies

-

7 identifiers

+

8 identifiers

Governed vocabularies and their vocabulary terms.

diff --git a/public/namespaces/index.json b/public/namespaces/index.json index 4bf9e3c27..5d6fc4558 100644 --- a/public/namespaces/index.json +++ b/public/namespaces/index.json @@ -10,9 +10,9 @@ "owner": "registry-manifest", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-manifest-core/src/lib.rs", - "sha256": "e1d4b066f89f5df821aa348bc86e62145593798a7433fc3120ce13914900559f" + "sha256": "707b3d0306d9eab8e4f8148310482ceff7912368c50b147931dceafe54dadc74" }, "id": "https://id.registrystack.org/ns/registry-manifest/v1#", "documented_by": [ diff --git a/public/ns/registry-manifest/v1.json b/public/ns/registry-manifest/v1.json index 96b627395..0401880b9 100644 --- a/public/ns/registry-manifest/v1.json +++ b/public/ns/registry-manifest/v1.json @@ -8,9 +8,9 @@ "owner": "registry-manifest", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-manifest-core/src/lib.rs", - "sha256": "e1d4b066f89f5df821aa348bc86e62145593798a7433fc3120ce13914900559f" + "sha256": "707b3d0306d9eab8e4f8148310482ceff7912368c50b147931dceafe54dadc74" }, "id": "https://id.registrystack.org/ns/registry-manifest/v1#", "documented_by": [ diff --git a/public/ns/registry-manifest/v1/index.html b/public/ns/registry-manifest/v1/index.html index 2aeb529a3..62ae9e6ff 100644 --- a/public/ns/registry-manifest/v1/index.html +++ b/public/ns/registry-manifest/v1/index.html @@ -71,9 +71,9 @@

Identifier record

"owner": "registry-manifest", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-manifest-core/src/lib.rs", - "sha256": "e1d4b066f89f5df821aa348bc86e62145593798a7433fc3120ce13914900559f" + "sha256": "707b3d0306d9eab8e4f8148310482ceff7912368c50b147931dceafe54dadc74" }, "id": "https://id.registrystack.org/ns/registry-manifest/v1#", "documented_by": [ diff --git a/public/problems/index.html b/public/problems/index.html index ccee103c7..1d0eebf64 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.

-

432 published identifiers

+

434 published identifiers

@@ -79,6 +79,7 @@

432 published identifiers

+ @@ -136,6 +137,7 @@

432 published identifiers

+ diff --git a/public/problems/index.json b/public/problems/index.json index 575bc2c67..fda9f8efb 100644 --- a/public/problems/index.json +++ b/public/problems/index.json @@ -39,9 +39,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -83,9 +83,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -127,9 +127,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -171,9 +171,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -215,9 +215,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -303,9 +303,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -347,9 +347,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -391,9 +391,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -435,9 +435,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -479,9 +479,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -523,9 +523,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -567,9 +567,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -611,9 +611,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -655,9 +655,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -699,9 +699,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -743,9 +743,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -787,9 +787,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -831,9 +831,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -875,9 +875,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -919,9 +919,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -963,9 +963,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -1007,9 +1007,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -1095,9 +1095,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -1139,9 +1139,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -1183,9 +1183,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -1227,9 +1227,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -1271,9 +1271,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -1315,9 +1315,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -1359,9 +1359,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -1403,9 +1403,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -1447,9 +1447,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -1491,9 +1491,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -1535,9 +1535,53 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" + } + }, + { + "id": "https://id.registrystack.org/problems/registry-breg/write/outside-boundary", + "type": "https://id.registrystack.org/problems/registry-breg/write/outside-boundary", + "kind": "problem", + "lifecycle_status": "active", + "compatibility_line": "v1alpha1", + "product": "registry-breg", + "code": "write.outside-boundary", + "title": "Forbidden", + "summary": "The resulting record falls outside the selected access profile's row boundary.", + "description": "The resulting record falls outside the selected access profile's row boundary.", + "category": null, + "http_statuses": [ + 403 + ], + "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": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", + "path": "crates/registry-breg/src/problem.rs", + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -1579,9 +1623,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -1623,9 +1667,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -1667,9 +1711,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -1711,9 +1755,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -1755,9 +1799,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -1799,9 +1843,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -1843,9 +1887,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -1887,9 +1931,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -1931,9 +1975,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -1975,9 +2019,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -2019,9 +2063,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -2063,9 +2107,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -2107,9 +2151,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -2151,9 +2195,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -2195,9 +2239,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -2239,9 +2283,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -2283,9 +2327,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -2327,9 +2371,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -2371,9 +2415,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -2415,9 +2459,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -2547,9 +2591,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -2591,9 +2635,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -2635,9 +2679,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -2679,9 +2723,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -2723,9 +2767,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -2767,9 +2811,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -2811,9 +2855,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -2855,9 +2899,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -2899,9 +2943,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -2943,9 +2987,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -2987,9 +3031,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -3031,9 +3075,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -3075,9 +3119,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -3119,9 +3163,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -3163,9 +3207,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -3383,9 +3427,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -3427,9 +3471,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -3823,9 +3867,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -3867,9 +3911,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -3911,9 +3955,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -3955,9 +3999,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -3999,9 +4043,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -4043,9 +4087,53 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", + "path": "crates/registry-coordinator/src/problem.rs", + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + } + }, + { + "id": "https://id.registrystack.org/problems/registry-coordinator/check/not-waiting", + "type": "https://id.registrystack.org/problems/registry-coordinator/check/not-waiting", + "kind": "problem", + "lifecycle_status": "active", + "compatibility_line": "v1alpha1", + "product": "registry-coordinator", + "code": "check.not-waiting", + "title": "Step is not waiting", + "summary": "That step is not waiting.", + "description": "That step is not waiting.", + "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": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -4087,9 +4175,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -4131,9 +4219,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -4175,9 +4263,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -4219,9 +4307,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -4263,9 +4351,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -4307,9 +4395,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -4351,9 +4439,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -4395,9 +4483,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -4439,9 +4527,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -4483,9 +4571,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -4527,9 +4615,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -4571,9 +4659,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -4615,9 +4703,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -4659,9 +4747,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -4703,9 +4791,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -4747,9 +4835,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -4791,9 +4879,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -4835,9 +4923,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -4879,9 +4967,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -4923,9 +5011,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -4967,9 +5055,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -5011,9 +5099,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -5055,9 +5143,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -5099,9 +5187,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -5143,9 +5231,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -5187,9 +5275,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -5231,9 +5319,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -5275,9 +5363,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -5319,9 +5407,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -5363,9 +5451,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -5407,9 +5495,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -5451,9 +5539,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -5495,9 +5583,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -5539,9 +5627,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -5583,9 +5671,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -5627,9 +5715,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -5671,9 +5759,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -5715,9 +5803,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -5759,9 +5847,9 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -5803,7 +5891,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-discovery/src/problem.rs", "sha256": "cd37f4a483c9d29c5ed4cbffa11756ef78207d9df1e6e62b7f93de36a30b43e3" } @@ -5847,7 +5935,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-discovery/src/problem.rs", "sha256": "cd37f4a483c9d29c5ed4cbffa11756ef78207d9df1e6e62b7f93de36a30b43e3" } @@ -5891,7 +5979,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-discovery/src/problem.rs", "sha256": "cd37f4a483c9d29c5ed4cbffa11756ef78207d9df1e6e62b7f93de36a30b43e3" } @@ -5935,7 +6023,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-discovery/src/problem.rs", "sha256": "cd37f4a483c9d29c5ed4cbffa11756ef78207d9df1e6e62b7f93de36a30b43e3" } @@ -5979,7 +6067,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -6023,7 +6111,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -6067,7 +6155,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -6111,7 +6199,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -6155,7 +6243,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -6199,7 +6287,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -6243,7 +6331,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -6287,7 +6375,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -6331,7 +6419,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -6375,7 +6463,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -6419,7 +6507,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -6463,7 +6551,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -6507,7 +6595,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -6551,7 +6639,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -6595,7 +6683,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -6639,7 +6727,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -6683,7 +6771,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -6727,7 +6815,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -6771,7 +6859,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -6815,7 +6903,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -6859,7 +6947,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -6903,7 +6991,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -6947,7 +7035,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -6991,7 +7079,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -7079,7 +7167,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-evidence/src/problem.rs", "sha256": "09e2898f19ebef1f3bf4699280261a4c7549b05eb9f8d30dba60ab2973bc06f9" } @@ -7123,7 +7211,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-evidence/src/problem.rs", "sha256": "09e2898f19ebef1f3bf4699280261a4c7549b05eb9f8d30dba60ab2973bc06f9" } @@ -7211,7 +7299,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-evidence/src/problem.rs", "sha256": "09e2898f19ebef1f3bf4699280261a4c7549b05eb9f8d30dba60ab2973bc06f9" } @@ -7299,7 +7387,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-evidence/src/problem.rs", "sha256": "09e2898f19ebef1f3bf4699280261a4c7549b05eb9f8d30dba60ab2973bc06f9" } @@ -7343,7 +7431,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-evidence/src/problem.rs", "sha256": "09e2898f19ebef1f3bf4699280261a4c7549b05eb9f8d30dba60ab2973bc06f9" } @@ -7387,7 +7475,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-evidence/src/problem.rs", "sha256": "09e2898f19ebef1f3bf4699280261a4c7549b05eb9f8d30dba60ab2973bc06f9" } @@ -7475,7 +7563,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-evidence/src/problem.rs", "sha256": "09e2898f19ebef1f3bf4699280261a4c7549b05eb9f8d30dba60ab2973bc06f9" } @@ -7563,7 +7651,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-evidence/src/problem.rs", "sha256": "09e2898f19ebef1f3bf4699280261a4c7549b05eb9f8d30dba60ab2973bc06f9" } @@ -7607,7 +7695,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-evidence/src/problem.rs", "sha256": "09e2898f19ebef1f3bf4699280261a4c7549b05eb9f8d30dba60ab2973bc06f9" } @@ -7651,7 +7739,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-evidence/src/problem.rs", "sha256": "09e2898f19ebef1f3bf4699280261a4c7549b05eb9f8d30dba60ab2973bc06f9" } @@ -7695,7 +7783,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -7739,7 +7827,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -7783,7 +7871,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -7827,7 +7915,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -7871,7 +7959,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -7915,7 +8003,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -7959,7 +8047,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -8003,7 +8091,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -8047,7 +8135,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -8091,7 +8179,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -8135,7 +8223,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -8179,7 +8267,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -8223,7 +8311,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -8267,7 +8355,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -8311,7 +8399,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -8355,7 +8443,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -8399,7 +8487,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -8443,7 +8531,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -8487,7 +8575,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -8531,7 +8619,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -8575,7 +8663,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -8619,7 +8707,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -8663,7 +8751,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -8707,7 +8795,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -8751,7 +8839,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -8795,7 +8883,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -8839,7 +8927,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -18428,7 +18516,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -18472,7 +18560,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -18516,7 +18604,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -18560,7 +18648,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -18604,7 +18692,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -18648,7 +18736,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -18692,7 +18780,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -18736,7 +18824,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -18780,7 +18868,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -18824,7 +18912,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -18868,7 +18956,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -18912,7 +19000,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -18956,7 +19044,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -19000,7 +19088,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -19044,7 +19132,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -19088,7 +19176,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -19132,7 +19220,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -19176,7 +19264,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -19220,7 +19308,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -19264,7 +19352,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -19308,7 +19396,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -19352,7 +19440,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -19396,7 +19484,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -19440,7 +19528,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -19484,7 +19572,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -19528,7 +19616,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -19572,7 +19660,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -19616,7 +19704,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -19660,7 +19748,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -19704,7 +19792,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -19748,7 +19836,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -19792,7 +19880,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -19836,7 +19924,7 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 b455907d2..53a84e5bd 100644 --- a/public/problems/registry-breg/action/evidence_failed.json +++ b/public/problems/registry-breg/action/evidence_failed.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "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 c6d3031d2..10667182a 100644 --- a/public/problems/registry-breg/action/evidence_failed/index.html +++ b/public/problems/registry-breg/action/evidence_failed/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } } diff --git a/public/problems/registry-breg/action/guard_failed.json b/public/problems/registry-breg/action/guard_failed.json index cc426bf89..a264048de 100644 --- a/public/problems/registry-breg/action/guard_failed.json +++ b/public/problems/registry-breg/action/guard_failed.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "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 e63d223a6..5394e3e3b 100644 --- a/public/problems/registry-breg/action/guard_failed/index.html +++ b/public/problems/registry-breg/action/guard_failed/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } } diff --git a/public/problems/registry-breg/action/handler_failed.json b/public/problems/registry-breg/action/handler_failed.json index 156da0eb8..63cf81577 100644 --- a/public/problems/registry-breg/action/handler_failed.json +++ b/public/problems/registry-breg/action/handler_failed.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "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 c97c77305..d2b00d7b0 100644 --- a/public/problems/registry-breg/action/handler_failed/index.html +++ b/public/problems/registry-breg/action/handler_failed/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } } diff --git a/public/problems/registry-breg/action/refused.json b/public/problems/registry-breg/action/refused.json index e2d74b538..8c189e51a 100644 --- a/public/problems/registry-breg/action/refused.json +++ b/public/problems/registry-breg/action/refused.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } } diff --git a/public/problems/registry-breg/action/refused/index.html b/public/problems/registry-breg/action/refused/index.html index 0f25e3bf5..64f062f22 100644 --- a/public/problems/registry-breg/action/refused/index.html +++ b/public/problems/registry-breg/action/refused/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } } diff --git a/public/problems/registry-breg/authentication/refused.json b/public/problems/registry-breg/authentication/refused.json index 096ebceca..ec6410739 100644 --- a/public/problems/registry-breg/authentication/refused.json +++ b/public/problems/registry-breg/authentication/refused.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } } diff --git a/public/problems/registry-breg/authentication/refused/index.html b/public/problems/registry-breg/authentication/refused/index.html index 2d4459561..1a88d7a49 100644 --- a/public/problems/registry-breg/authentication/refused/index.html +++ b/public/problems/registry-breg/authentication/refused/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } } diff --git a/public/problems/registry-breg/idempotency/expired.json b/public/problems/registry-breg/idempotency/expired.json index 01cb346ba..8b5161757 100644 --- a/public/problems/registry-breg/idempotency/expired.json +++ b/public/problems/registry-breg/idempotency/expired.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } } diff --git a/public/problems/registry-breg/idempotency/expired/index.html b/public/problems/registry-breg/idempotency/expired/index.html index b65c21465..b5af0fd04 100644 --- a/public/problems/registry-breg/idempotency/expired/index.html +++ b/public/problems/registry-breg/idempotency/expired/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } } diff --git a/public/problems/registry-breg/idempotency/key-reused.json b/public/problems/registry-breg/idempotency/key-reused.json index d21c81c2c..7d8bcadbe 100644 --- a/public/problems/registry-breg/idempotency/key-reused.json +++ b/public/problems/registry-breg/idempotency/key-reused.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "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 e5ba524c4..a411419e4 100644 --- a/public/problems/registry-breg/idempotency/key-reused/index.html +++ b/public/problems/registry-breg/idempotency/key-reused/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } } diff --git a/public/problems/registry-breg/ingestion/chunk_mismatch.json b/public/problems/registry-breg/ingestion/chunk_mismatch.json index 0b912ec48..7b7725fe0 100644 --- a/public/problems/registry-breg/ingestion/chunk_mismatch.json +++ b/public/problems/registry-breg/ingestion/chunk_mismatch.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "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 b329f232c..b09d924c4 100644 --- a/public/problems/registry-breg/ingestion/chunk_mismatch/index.html +++ b/public/problems/registry-breg/ingestion/chunk_mismatch/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } } diff --git a/public/problems/registry-breg/ingestion/profile_mismatch.json b/public/problems/registry-breg/ingestion/profile_mismatch.json index b9d9b514c..2c99ccc83 100644 --- a/public/problems/registry-breg/ingestion/profile_mismatch.json +++ b/public/problems/registry-breg/ingestion/profile_mismatch.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "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 ec990984b..7b54ca123 100644 --- a/public/problems/registry-breg/ingestion/profile_mismatch/index.html +++ b/public/problems/registry-breg/ingestion/profile_mismatch/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } } diff --git a/public/problems/registry-breg/ingestion/receipt_erased.json b/public/problems/registry-breg/ingestion/receipt_erased.json index e87b8922b..1bb8cc3fc 100644 --- a/public/problems/registry-breg/ingestion/receipt_erased.json +++ b/public/problems/registry-breg/ingestion/receipt_erased.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "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 65a6f9bbb..b7a998851 100644 --- a/public/problems/registry-breg/ingestion/receipt_erased/index.html +++ b/public/problems/registry-breg/ingestion/receipt_erased/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } } diff --git a/public/problems/registry-breg/ingestion/run_blocked.json b/public/problems/registry-breg/ingestion/run_blocked.json index e13b98161..c779b3e99 100644 --- a/public/problems/registry-breg/ingestion/run_blocked.json +++ b/public/problems/registry-breg/ingestion/run_blocked.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "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 95bdd73a9..cb8f7d3ee 100644 --- a/public/problems/registry-breg/ingestion/run_blocked/index.html +++ b/public/problems/registry-breg/ingestion/run_blocked/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "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 f9c7e9272..0df99eece 100644 --- a/public/problems/registry-breg/ingestion/run_not_open.json +++ b/public/problems/registry-breg/ingestion/run_not_open.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "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 058f9bafe..96af57693 100644 --- a/public/problems/registry-breg/ingestion/run_not_open/index.html +++ b/public/problems/registry-breg/ingestion/run_not_open/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } } diff --git a/public/problems/registry-breg/lookup/unresolved.json b/public/problems/registry-breg/lookup/unresolved.json index 3a09efe00..3a3710090 100644 --- a/public/problems/registry-breg/lookup/unresolved.json +++ b/public/problems/registry-breg/lookup/unresolved.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } } diff --git a/public/problems/registry-breg/lookup/unresolved/index.html b/public/problems/registry-breg/lookup/unresolved/index.html index 294bf5f76..49a49a6b7 100644 --- a/public/problems/registry-breg/lookup/unresolved/index.html +++ b/public/problems/registry-breg/lookup/unresolved/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } } diff --git a/public/problems/registry-breg/mutation/conflict.json b/public/problems/registry-breg/mutation/conflict.json index 59cc0c2fc..a3e2f9634 100644 --- a/public/problems/registry-breg/mutation/conflict.json +++ b/public/problems/registry-breg/mutation/conflict.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } } diff --git a/public/problems/registry-breg/mutation/conflict/index.html b/public/problems/registry-breg/mutation/conflict/index.html index 0a76c5390..f1e3e5d39 100644 --- a/public/problems/registry-breg/mutation/conflict/index.html +++ b/public/problems/registry-breg/mutation/conflict/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } } diff --git a/public/problems/registry-breg/precondition/failed.json b/public/problems/registry-breg/precondition/failed.json index 63ea00847..6732543e3 100644 --- a/public/problems/registry-breg/precondition/failed.json +++ b/public/problems/registry-breg/precondition/failed.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } } diff --git a/public/problems/registry-breg/precondition/failed/index.html b/public/problems/registry-breg/precondition/failed/index.html index 343fb92d7..5419df2a1 100644 --- a/public/problems/registry-breg/precondition/failed/index.html +++ b/public/problems/registry-breg/precondition/failed/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } } diff --git a/public/problems/registry-breg/precondition/required.json b/public/problems/registry-breg/precondition/required.json index 9a80e04d0..9ab529e4e 100644 --- a/public/problems/registry-breg/precondition/required.json +++ b/public/problems/registry-breg/precondition/required.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } } diff --git a/public/problems/registry-breg/precondition/required/index.html b/public/problems/registry-breg/precondition/required/index.html index cb2268a66..7b2746935 100644 --- a/public/problems/registry-breg/precondition/required/index.html +++ b/public/problems/registry-breg/precondition/required/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } } diff --git a/public/problems/registry-breg/proposal/rejected.json b/public/problems/registry-breg/proposal/rejected.json index 5c212bde3..47899d52f 100644 --- a/public/problems/registry-breg/proposal/rejected.json +++ b/public/problems/registry-breg/proposal/rejected.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } } diff --git a/public/problems/registry-breg/proposal/rejected/index.html b/public/problems/registry-breg/proposal/rejected/index.html index d01480f69..e820979ee 100644 --- a/public/problems/registry-breg/proposal/rejected/index.html +++ b/public/problems/registry-breg/proposal/rejected/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "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 de506364b..ab2c6a581 100644 --- a/public/problems/registry-breg/proposal/review_result_mismatch.json +++ b/public/problems/registry-breg/proposal/review_result_mismatch.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "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 dbf8d961c..569657b85 100644 --- a/public/problems/registry-breg/proposal/review_result_mismatch/index.html +++ b/public/problems/registry-breg/proposal/review_result_mismatch/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } } diff --git a/public/problems/registry-breg/proposal/submission_expired.json b/public/problems/registry-breg/proposal/submission_expired.json index 36e6af501..d744dcd6d 100644 --- a/public/problems/registry-breg/proposal/submission_expired.json +++ b/public/problems/registry-breg/proposal/submission_expired.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "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 1086e1dea..1a6e74ce7 100644 --- a/public/problems/registry-breg/proposal/submission_expired/index.html +++ b/public/problems/registry-breg/proposal/submission_expired/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } } diff --git a/public/problems/registry-breg/query/cursor_invalid.json b/public/problems/registry-breg/query/cursor_invalid.json index f576a80ff..e02207787 100644 --- a/public/problems/registry-breg/query/cursor_invalid.json +++ b/public/problems/registry-breg/query/cursor_invalid.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "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 6c5843327..540573b23 100644 --- a/public/problems/registry-breg/query/cursor_invalid/index.html +++ b/public/problems/registry-breg/query/cursor_invalid/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } } diff --git a/public/problems/registry-breg/query/invalid.json b/public/problems/registry-breg/query/invalid.json index e3d0aae09..66eea9cfe 100644 --- a/public/problems/registry-breg/query/invalid.json +++ b/public/problems/registry-breg/query/invalid.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } } diff --git a/public/problems/registry-breg/query/invalid/index.html b/public/problems/registry-breg/query/invalid/index.html index f6cad4d52..4c774c758 100644 --- a/public/problems/registry-breg/query/invalid/index.html +++ b/public/problems/registry-breg/query/invalid/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } } diff --git a/public/problems/registry-breg/request/invalid.json b/public/problems/registry-breg/request/invalid.json index b914ea080..bf5c33850 100644 --- a/public/problems/registry-breg/request/invalid.json +++ b/public/problems/registry-breg/request/invalid.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } } diff --git a/public/problems/registry-breg/request/invalid/index.html b/public/problems/registry-breg/request/invalid/index.html index 5fadba4dc..98c983db8 100644 --- a/public/problems/registry-breg/request/invalid/index.html +++ b/public/problems/registry-breg/request/invalid/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } } diff --git a/public/problems/registry-breg/request/timeout.json b/public/problems/registry-breg/request/timeout.json index 21cade803..485db5df0 100644 --- a/public/problems/registry-breg/request/timeout.json +++ b/public/problems/registry-breg/request/timeout.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } } diff --git a/public/problems/registry-breg/request/timeout/index.html b/public/problems/registry-breg/request/timeout/index.html index 0007dbb7d..801028561 100644 --- a/public/problems/registry-breg/request/timeout/index.html +++ b/public/problems/registry-breg/request/timeout/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } } diff --git a/public/problems/registry-breg/resource/not_found.json b/public/problems/registry-breg/resource/not_found.json index 5e9a2162d..f5f53d05b 100644 --- a/public/problems/registry-breg/resource/not_found.json +++ b/public/problems/registry-breg/resource/not_found.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "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 cec96e917..ff7638e61 100644 --- a/public/problems/registry-breg/resource/not_found/index.html +++ b/public/problems/registry-breg/resource/not_found/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "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 3c24a44ee..6e72a7b69 100644 --- a/public/problems/registry-breg/runtime/field_encryption/unavailable.json +++ b/public/problems/registry-breg/runtime/field_encryption/unavailable.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "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 2e0e1274f..807c2e672 100644 --- a/public/problems/registry-breg/runtime/field_encryption/unavailable/index.html +++ b/public/problems/registry-breg/runtime/field_encryption/unavailable/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } } diff --git a/public/problems/registry-breg/runtime/not_ready.json b/public/problems/registry-breg/runtime/not_ready.json index a1c3e3386..3333217f7 100644 --- a/public/problems/registry-breg/runtime/not_ready.json +++ b/public/problems/registry-breg/runtime/not_ready.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "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 40b1ac0be..20e391a45 100644 --- a/public/problems/registry-breg/runtime/not_ready/index.html +++ b/public/problems/registry-breg/runtime/not_ready/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } } diff --git a/public/problems/registry-breg/service/unavailable.json b/public/problems/registry-breg/service/unavailable.json index d74f0f5ed..f0683943b 100644 --- a/public/problems/registry-breg/service/unavailable.json +++ b/public/problems/registry-breg/service/unavailable.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } } diff --git a/public/problems/registry-breg/service/unavailable/index.html b/public/problems/registry-breg/service/unavailable/index.html index c1d9657f8..72dd3d147 100644 --- a/public/problems/registry-breg/service/unavailable/index.html +++ b/public/problems/registry-breg/service/unavailable/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } } diff --git a/public/problems/registry-breg/source/unavailable.json b/public/problems/registry-breg/source/unavailable.json index a32a5f69b..08be1f64b 100644 --- a/public/problems/registry-breg/source/unavailable.json +++ b/public/problems/registry-breg/source/unavailable.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } } diff --git a/public/problems/registry-breg/source/unavailable/index.html b/public/problems/registry-breg/source/unavailable/index.html index eb09c10a3..f4a1e81c6 100644 --- a/public/problems/registry-breg/source/unavailable/index.html +++ b/public/problems/registry-breg/source/unavailable/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "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 1ed1b2aa4..819eef038 100644 --- a/public/problems/registry-breg/statistical_dataset/domain_violation.json +++ b/public/problems/registry-breg/statistical_dataset/domain_violation.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "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 5ede9f90a..866c6472c 100644 --- a/public/problems/registry-breg/statistical_dataset/domain_violation/index.html +++ b/public/problems/registry-breg/statistical_dataset/domain_violation/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "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 95ef70c5f..601db8c32 100644 --- a/public/problems/registry-breg/statistical_dataset/release_refused.json +++ b/public/problems/registry-breg/statistical_dataset/release_refused.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "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 5e82605b6..82cfc6ac4 100644 --- a/public/problems/registry-breg/statistical_dataset/release_refused/index.html +++ b/public/problems/registry-breg/statistical_dataset/release_refused/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "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 202abbe6b..ded7120dd 100644 --- a/public/problems/registry-breg/statistical_dataset/version_conflict.json +++ b/public/problems/registry-breg/statistical_dataset/version_conflict.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "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 e4525b56c..ef2e884d2 100644 --- a/public/problems/registry-breg/statistical_dataset/version_conflict/index.html +++ b/public/problems/registry-breg/statistical_dataset/version_conflict/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "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 bfc435ed9..3c9a488f7 100644 --- a/public/problems/registry-breg/statistical_dataset/version_withdrawn.json +++ b/public/problems/registry-breg/statistical_dataset/version_withdrawn.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "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 1779ce987..b8c95bb1f 100644 --- a/public/problems/registry-breg/statistical_dataset/version_withdrawn/index.html +++ b/public/problems/registry-breg/statistical_dataset/version_withdrawn/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } } diff --git a/public/problems/registry-breg/unsupported/media_type.json b/public/problems/registry-breg/unsupported/media_type.json index 64b0ab9ba..b87cc3817 100644 --- a/public/problems/registry-breg/unsupported/media_type.json +++ b/public/problems/registry-breg/unsupported/media_type.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "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 660bff36f..32ff0b884 100644 --- a/public/problems/registry-breg/unsupported/media_type/index.html +++ b/public/problems/registry-breg/unsupported/media_type/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } } diff --git a/public/problems/registry-breg/write/outside-boundary.json b/public/problems/registry-breg/write/outside-boundary.json new file mode 100644 index 000000000..8d81ebca5 --- /dev/null +++ b/public/problems/registry-breg/write/outside-boundary.json @@ -0,0 +1,44 @@ +{ + "id": "https://id.registrystack.org/problems/registry-breg/write/outside-boundary", + "type": "https://id.registrystack.org/problems/registry-breg/write/outside-boundary", + "kind": "problem", + "lifecycle_status": "active", + "compatibility_line": "v1alpha1", + "product": "registry-breg", + "code": "write.outside-boundary", + "title": "Forbidden", + "summary": "The resulting record falls outside the selected access profile's row boundary.", + "description": "The resulting record falls outside the selected access profile's row boundary.", + "category": null, + "http_statuses": [ + 403 + ], + "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": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", + "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 new file mode 100644 index 000000000..dad5d3867 --- /dev/null +++ b/public/problems/registry-breg/write/outside-boundary/index.html @@ -0,0 +1,161 @@ + + + + + + Forbidden | Registry Stack identifiers + + + + + + + + +
+
+
+

Problem type · registry-breg

+

Forbidden

+

The resulting record falls outside the selected access profile's row boundary.

+

https://id.registrystack.org/problems/registry-breg/write/outside-boundary

+
+
+
+
+

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-breg/statistical_dataset/version_conflictConflictactive
https://id.registrystack.org/problems/registry-breg/statistical_dataset/version_withdrawnGoneactive
https://id.registrystack.org/problems/registry-breg/unsupported/media_typeUnsupported Media Typeactive
https://id.registrystack.org/problems/registry-breg/write/outside-boundaryForbiddenactive
https://id.registrystack.org/problems/registry-casework/absence/cover-cycleAbsence cover cycleactive
https://id.registrystack.org/problems/registry-casework/absence/invalid-periodInvalid absence periodactive
https://id.registrystack.org/problems/registry-casework/absence/overlapAbsence period overlapsactive
https://id.registrystack.org/problems/registry-coordinator/authentication/refusedAuthentication refusedactive
https://id.registrystack.org/problems/registry-coordinator/binding/conflictConnection settings changedactive
https://id.registrystack.org/problems/registry-coordinator/binding/live-conflictLive connection settings changedactive
https://id.registrystack.org/problems/registry-coordinator/check/not-waitingStep is not waitingactive
https://id.registrystack.org/problems/registry-coordinator/definition/refusedWorkflow definition refusedactive
https://id.registrystack.org/problems/registry-coordinator/deployment/activation-changedActive packages changedactive
https://id.registrystack.org/problems/registry-coordinator/deployment/refusedDeployment not servingactive
+ + + + + + + + + + +
Canonical URIhttps://id.registrystack.org/problems/registry-breg/write/outside-boundary
Kindproblem
Lifecycle statusactive
Compatibility linev1alpha1
Productregistry-breg
Codewrite.outside-boundary
Categorynot published
HTTP statuses403
+
+
+

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-breg/write/outside-boundary",
+  "type": "https://id.registrystack.org/problems/registry-breg/write/outside-boundary",
+  "kind": "problem",
+  "lifecycle_status": "active",
+  "compatibility_line": "v1alpha1",
+  "product": "registry-breg",
+  "code": "write.outside-boundary",
+  "title": "Forbidden",
+  "summary": "The resulting record falls outside the selected access profile's row boundary.",
+  "description": "The resulting record falls outside the selected access profile's row boundary.",
+  "category": null,
+  "http_statuses": [
+    403
+  ],
+  "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": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be",
+    "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 6b2a33dbc..a282c8a36 100644 --- a/public/problems/registry-casework/absence/cover-cycle.json +++ b/public/problems/registry-casework/absence/cover-cycle.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "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 04c85be70..ebbf247d8 100644 --- a/public/problems/registry-casework/absence/cover-cycle/index.html +++ b/public/problems/registry-casework/absence/cover-cycle/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } } diff --git a/public/problems/registry-casework/absence/invalid-period.json b/public/problems/registry-casework/absence/invalid-period.json index f944ce70e..39688701a 100644 --- a/public/problems/registry-casework/absence/invalid-period.json +++ b/public/problems/registry-casework/absence/invalid-period.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "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 e0c0bbbf2..ac66bc000 100644 --- a/public/problems/registry-casework/absence/invalid-period/index.html +++ b/public/problems/registry-casework/absence/invalid-period/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } } diff --git a/public/problems/registry-casework/absence/overlap.json b/public/problems/registry-casework/absence/overlap.json index 60a518686..370327e8f 100644 --- a/public/problems/registry-casework/absence/overlap.json +++ b/public/problems/registry-casework/absence/overlap.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } } diff --git a/public/problems/registry-casework/absence/overlap/index.html b/public/problems/registry-casework/absence/overlap/index.html index d9262f3bc..41baee386 100644 --- a/public/problems/registry-casework/absence/overlap/index.html +++ b/public/problems/registry-casework/absence/overlap/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } } diff --git a/public/problems/registry-casework/absence/self-cover.json b/public/problems/registry-casework/absence/self-cover.json index f1e89d41c..5487faaf7 100644 --- a/public/problems/registry-casework/absence/self-cover.json +++ b/public/problems/registry-casework/absence/self-cover.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "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 bd731e616..902feb497 100644 --- a/public/problems/registry-casework/absence/self-cover/index.html +++ b/public/problems/registry-casework/absence/self-cover/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } } diff --git a/public/problems/registry-casework/authentication/refused.json b/public/problems/registry-casework/authentication/refused.json index 23afed1c0..46e576682 100644 --- a/public/problems/registry-casework/authentication/refused.json +++ b/public/problems/registry-casework/authentication/refused.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } } diff --git a/public/problems/registry-casework/authentication/refused/index.html b/public/problems/registry-casework/authentication/refused/index.html index f38904e01..29c28e491 100644 --- a/public/problems/registry-casework/authentication/refused/index.html +++ b/public/problems/registry-casework/authentication/refused/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "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 af113d775..e4ebb62eb 100644 --- a/public/problems/registry-casework/clock/recompute-preview-expired.json +++ b/public/problems/registry-casework/clock/recompute-preview-expired.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "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 f32681cf2..e620649e4 100644 --- a/public/problems/registry-casework/clock/recompute-preview-expired/index.html +++ b/public/problems/registry-casework/clock/recompute-preview-expired/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } } diff --git a/public/problems/registry-casework/cursor/expired.json b/public/problems/registry-casework/cursor/expired.json index 2a9c5e82b..79440c5b2 100644 --- a/public/problems/registry-casework/cursor/expired.json +++ b/public/problems/registry-casework/cursor/expired.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } } diff --git a/public/problems/registry-casework/cursor/expired/index.html b/public/problems/registry-casework/cursor/expired/index.html index af5f0253b..c416af833 100644 --- a/public/problems/registry-casework/cursor/expired/index.html +++ b/public/problems/registry-casework/cursor/expired/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } } diff --git a/public/problems/registry-casework/cursor/invalid.json b/public/problems/registry-casework/cursor/invalid.json index 64bfc821c..23d8b11fa 100644 --- a/public/problems/registry-casework/cursor/invalid.json +++ b/public/problems/registry-casework/cursor/invalid.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } } diff --git a/public/problems/registry-casework/cursor/invalid/index.html b/public/problems/registry-casework/cursor/invalid/index.html index 1765cfe4c..f36f21d99 100644 --- a/public/problems/registry-casework/cursor/invalid/index.html +++ b/public/problems/registry-casework/cursor/invalid/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } } diff --git a/public/problems/registry-casework/idempotency/expired.json b/public/problems/registry-casework/idempotency/expired.json index 167b3e79c..dc25a2731 100644 --- a/public/problems/registry-casework/idempotency/expired.json +++ b/public/problems/registry-casework/idempotency/expired.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } } diff --git a/public/problems/registry-casework/idempotency/expired/index.html b/public/problems/registry-casework/idempotency/expired/index.html index 863de8123..9d76977d7 100644 --- a/public/problems/registry-casework/idempotency/expired/index.html +++ b/public/problems/registry-casework/idempotency/expired/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } } diff --git a/public/problems/registry-casework/idempotency/key-reused.json b/public/problems/registry-casework/idempotency/key-reused.json index 9629332b0..e03b7acbe 100644 --- a/public/problems/registry-casework/idempotency/key-reused.json +++ b/public/problems/registry-casework/idempotency/key-reused.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "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 adc22d780..98d62b244 100644 --- a/public/problems/registry-casework/idempotency/key-reused/index.html +++ b/public/problems/registry-casework/idempotency/key-reused/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } } diff --git a/public/problems/registry-casework/operation/not-authorized.json b/public/problems/registry-casework/operation/not-authorized.json index 7ad449b4f..8a8bb3e70 100644 --- a/public/problems/registry-casework/operation/not-authorized.json +++ b/public/problems/registry-casework/operation/not-authorized.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "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 b78e4b909..524df5863 100644 --- a/public/problems/registry-casework/operation/not-authorized/index.html +++ b/public/problems/registry-casework/operation/not-authorized/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } } diff --git a/public/problems/registry-casework/precondition/failed.json b/public/problems/registry-casework/precondition/failed.json index 7b82d82db..a9a33ca20 100644 --- a/public/problems/registry-casework/precondition/failed.json +++ b/public/problems/registry-casework/precondition/failed.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } } diff --git a/public/problems/registry-casework/precondition/failed/index.html b/public/problems/registry-casework/precondition/failed/index.html index 8b7014c6a..bcf0f1238 100644 --- a/public/problems/registry-casework/precondition/failed/index.html +++ b/public/problems/registry-casework/precondition/failed/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } } diff --git a/public/problems/registry-casework/precondition/required.json b/public/problems/registry-casework/precondition/required.json index 43c625d39..4396fcf17 100644 --- a/public/problems/registry-casework/precondition/required.json +++ b/public/problems/registry-casework/precondition/required.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } } diff --git a/public/problems/registry-casework/precondition/required/index.html b/public/problems/registry-casework/precondition/required/index.html index 281a716d1..d67ba1739 100644 --- a/public/problems/registry-casework/precondition/required/index.html +++ b/public/problems/registry-casework/precondition/required/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } } diff --git a/public/problems/registry-casework/profile/not-authorized.json b/public/problems/registry-casework/profile/not-authorized.json index 58f63820a..00659f2f6 100644 --- a/public/problems/registry-casework/profile/not-authorized.json +++ b/public/problems/registry-casework/profile/not-authorized.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "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 9f065f88a..c4211a959 100644 --- a/public/problems/registry-casework/profile/not-authorized/index.html +++ b/public/problems/registry-casework/profile/not-authorized/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } } diff --git a/public/problems/registry-casework/profile/not-human.json b/public/problems/registry-casework/profile/not-human.json index 1374250d7..a0bde7ed2 100644 --- a/public/problems/registry-casework/profile/not-human.json +++ b/public/problems/registry-casework/profile/not-human.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "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 10aee9407..172f82f00 100644 --- a/public/problems/registry-casework/profile/not-human/index.html +++ b/public/problems/registry-casework/profile/not-human/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "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 afb3943bb..393ba156c 100644 --- a/public/problems/registry-casework/request/body-too-large.json +++ b/public/problems/registry-casework/request/body-too-large.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "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 b977dae77..599a46339 100644 --- a/public/problems/registry-casework/request/body-too-large/index.html +++ b/public/problems/registry-casework/request/body-too-large/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } } diff --git a/public/problems/registry-casework/request/invalid.json b/public/problems/registry-casework/request/invalid.json index a3acb9223..b63cee34d 100644 --- a/public/problems/registry-casework/request/invalid.json +++ b/public/problems/registry-casework/request/invalid.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } } diff --git a/public/problems/registry-casework/request/invalid/index.html b/public/problems/registry-casework/request/invalid/index.html index feea89a53..c72cda11d 100644 --- a/public/problems/registry-casework/request/invalid/index.html +++ b/public/problems/registry-casework/request/invalid/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "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 24455bb1a..7dbd49204 100644 --- a/public/problems/registry-casework/request/limit-out-of-range.json +++ b/public/problems/registry-casework/request/limit-out-of-range.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "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 ce16fd373..194ab3c93 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,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "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 8d282bf21..fe7cc75fc 100644 --- a/public/problems/registry-casework/request/method-not-allowed.json +++ b/public/problems/registry-casework/request/method-not-allowed.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "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 d0840f710..240c78c6e 100644 --- a/public/problems/registry-casework/request/method-not-allowed/index.html +++ b/public/problems/registry-casework/request/method-not-allowed/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } } diff --git a/public/problems/registry-casework/request/not-found.json b/public/problems/registry-casework/request/not-found.json index 070d359bb..92623e5d4 100644 --- a/public/problems/registry-casework/request/not-found.json +++ b/public/problems/registry-casework/request/not-found.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "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 524f03a77..8b7de2091 100644 --- a/public/problems/registry-casework/request/not-found/index.html +++ b/public/problems/registry-casework/request/not-found/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } } diff --git a/public/problems/registry-casework/request/unprocessable.json b/public/problems/registry-casework/request/unprocessable.json index 68e7906ec..b46cf350a 100644 --- a/public/problems/registry-casework/request/unprocessable.json +++ b/public/problems/registry-casework/request/unprocessable.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } } diff --git a/public/problems/registry-casework/request/unprocessable/index.html b/public/problems/registry-casework/request/unprocessable/index.html index 3108bc193..ef1848a17 100644 --- a/public/problems/registry-casework/request/unprocessable/index.html +++ b/public/problems/registry-casework/request/unprocessable/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "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 842aa5e7b..3b6bd390d 100644 --- a/public/problems/registry-casework/request/unsupported-media-type.json +++ b/public/problems/registry-casework/request/unsupported-media-type.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "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 427fb9f7b..6b3fae55c 100644 --- a/public/problems/registry-casework/request/unsupported-media-type/index.html +++ b/public/problems/registry-casework/request/unsupported-media-type/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "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 0f2a88f2d..3556b327e 100644 --- a/public/problems/registry-casework/review/distinct-approver-required.json +++ b/public/problems/registry-casework/review/distinct-approver-required.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "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 f1ed2d532..e5066260d 100644 --- a/public/problems/registry-casework/review/distinct-approver-required/index.html +++ b/public/problems/registry-casework/review/distinct-approver-required/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } } diff --git a/public/problems/registry-casework/review/initiator-excluded.json b/public/problems/registry-casework/review/initiator-excluded.json index 98a3440d6..debf01715 100644 --- a/public/problems/registry-casework/review/initiator-excluded.json +++ b/public/problems/registry-casework/review/initiator-excluded.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "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 53d9e8093..04eef2b0e 100644 --- a/public/problems/registry-casework/review/initiator-excluded/index.html +++ b/public/problems/registry-casework/review/initiator-excluded/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } } diff --git a/public/problems/registry-casework/review/initiator-required.json b/public/problems/registry-casework/review/initiator-required.json index befa2a4ec..ef467699a 100644 --- a/public/problems/registry-casework/review/initiator-required.json +++ b/public/problems/registry-casework/review/initiator-required.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "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 3db8b8a07..fbc86ccf8 100644 --- a/public/problems/registry-casework/review/initiator-required/index.html +++ b/public/problems/registry-casework/review/initiator-required/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } } diff --git a/public/problems/registry-casework/review/policy-mismatch.json b/public/problems/registry-casework/review/policy-mismatch.json index 800d89ac7..0efedc445 100644 --- a/public/problems/registry-casework/review/policy-mismatch.json +++ b/public/problems/registry-casework/review/policy-mismatch.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "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 e172b8492..d6646378e 100644 --- a/public/problems/registry-casework/review/policy-mismatch/index.html +++ b/public/problems/registry-casework/review/policy-mismatch/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "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 4a711fb99..e5ff6ca87 100644 --- a/public/problems/registry-casework/review/query-too-broad.json +++ b/public/problems/registry-casework/review/query-too-broad.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "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 1905d72a2..450f97dc8 100644 --- a/public/problems/registry-casework/review/query-too-broad/index.html +++ b/public/problems/registry-casework/review/query-too-broad/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } } diff --git a/public/problems/registry-casework/review/result-expired.json b/public/problems/registry-casework/review/result-expired.json index f10dbd085..53262037e 100644 --- a/public/problems/registry-casework/review/result-expired.json +++ b/public/problems/registry-casework/review/result-expired.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "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 fb7bb2c3e..7402af83a 100644 --- a/public/problems/registry-casework/review/result-expired/index.html +++ b/public/problems/registry-casework/review/result-expired/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } } diff --git a/public/problems/registry-casework/review/submission-conflict.json b/public/problems/registry-casework/review/submission-conflict.json index a0e9c7a5e..4159eaf8c 100644 --- a/public/problems/registry-casework/review/submission-conflict.json +++ b/public/problems/registry-casework/review/submission-conflict.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "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 032163b6e..fe7be905f 100644 --- a/public/problems/registry-casework/review/submission-conflict/index.html +++ b/public/problems/registry-casework/review/submission-conflict/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "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 8576e591f..c0b562c3b 100644 --- a/public/problems/registry-casework/review/task-not-held.json +++ b/public/problems/registry-casework/review/task-not-held.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "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 576fe3f4f..201a40e59 100644 --- a/public/problems/registry-casework/review/task-not-held/index.html +++ b/public/problems/registry-casework/review/task-not-held/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } } diff --git a/public/problems/registry-casework/runtime/failure.json b/public/problems/registry-casework/runtime/failure.json index 5cba7be4a..3060e6c08 100644 --- a/public/problems/registry-casework/runtime/failure.json +++ b/public/problems/registry-casework/runtime/failure.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } } diff --git a/public/problems/registry-casework/runtime/failure/index.html b/public/problems/registry-casework/runtime/failure/index.html index 50b771760..5cafbbde7 100644 --- a/public/problems/registry-casework/runtime/failure/index.html +++ b/public/problems/registry-casework/runtime/failure/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } } diff --git a/public/problems/registry-casework/service/unavailable.json b/public/problems/registry-casework/service/unavailable.json index 3895c3aef..d0c29e981 100644 --- a/public/problems/registry-casework/service/unavailable.json +++ b/public/problems/registry-casework/service/unavailable.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } } diff --git a/public/problems/registry-casework/service/unavailable/index.html b/public/problems/registry-casework/service/unavailable/index.html index 98b6bc335..ff3f350a9 100644 --- a/public/problems/registry-casework/service/unavailable/index.html +++ b/public/problems/registry-casework/service/unavailable/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "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 04a11f3a0..83ce255f7 100644 --- a/public/problems/registry-casework/source-profile/not-applicable.json +++ b/public/problems/registry-casework/source-profile/not-applicable.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "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 77b65d785..6eb6b1312 100644 --- a/public/problems/registry-casework/source-profile/not-applicable/index.html +++ b/public/problems/registry-casework/source-profile/not-applicable/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } } diff --git a/public/problems/registry-casework/source-profile/required.json b/public/problems/registry-casework/source-profile/required.json index fe45c9519..deb39dbb9 100644 --- a/public/problems/registry-casework/source-profile/required.json +++ b/public/problems/registry-casework/source-profile/required.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "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 25b33a616..6bdf690a1 100644 --- a/public/problems/registry-casework/source-profile/required/index.html +++ b/public/problems/registry-casework/source-profile/required/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } } diff --git a/public/problems/registry-casework/source/bad-gateway.json b/public/problems/registry-casework/source/bad-gateway.json index cab649103..2c21e2672 100644 --- a/public/problems/registry-casework/source/bad-gateway.json +++ b/public/problems/registry-casework/source/bad-gateway.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "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 d05219141..cd30169ba 100644 --- a/public/problems/registry-casework/source/bad-gateway/index.html +++ b/public/problems/registry-casework/source/bad-gateway/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } } diff --git a/public/problems/registry-casework/source/version-mismatch.json b/public/problems/registry-casework/source/version-mismatch.json index c93b77721..2de98f686 100644 --- a/public/problems/registry-casework/source/version-mismatch.json +++ b/public/problems/registry-casework/source/version-mismatch.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "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 21632b549..8c01a0a0a 100644 --- a/public/problems/registry-casework/source/version-mismatch/index.html +++ b/public/problems/registry-casework/source/version-mismatch/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } } diff --git a/public/problems/registry-casework/source/version-unavailable.json b/public/problems/registry-casework/source/version-unavailable.json index 287c9e475..48e18f1dd 100644 --- a/public/problems/registry-casework/source/version-unavailable.json +++ b/public/problems/registry-casework/source/version-unavailable.json @@ -37,8 +37,8 @@ }, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "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 475b1aad2..6b0f9aa33 100644 --- a/public/problems/registry-casework/source/version-unavailable/index.html +++ b/public/problems/registry-casework/source/version-unavailable/index.html @@ -115,9 +115,9 @@

Problem record

}, "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } } diff --git a/public/problems/registry-coordinator/admission/held.json b/public/problems/registry-coordinator/admission/held.json index 9eaddf57a..bb32c40f6 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/admission/held/index.html b/public/problems/registry-coordinator/admission/held/index.html index c305d9774..ed2525f2a 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/admission/recovery-only.json b/public/problems/registry-coordinator/admission/recovery-only.json index 922933917..cc9b730a3 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/admission/recovery-only/index.html b/public/problems/registry-coordinator/admission/recovery-only/index.html index 806337734..700420d59 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/audit/response-unavailable.json b/public/problems/registry-coordinator/audit/response-unavailable.json index 9d2c7e03f..9cfab9d84 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/audit/response-unavailable/index.html b/public/problems/registry-coordinator/audit/response-unavailable/index.html index 4cee1f5fb..cf5a17643 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/authentication/refused.json b/public/problems/registry-coordinator/authentication/refused.json index 831a1220c..33191fe7f 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/authentication/refused/index.html b/public/problems/registry-coordinator/authentication/refused/index.html index d5b1cfb0c..4c37a72be 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/binding/conflict.json b/public/problems/registry-coordinator/binding/conflict.json index 7c418fcc6..851d0d6df 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/binding/conflict/index.html b/public/problems/registry-coordinator/binding/conflict/index.html index 41259e2ef..00f19c865 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/binding/live-conflict.json b/public/problems/registry-coordinator/binding/live-conflict.json index b1d56d46a..4a264c5fb 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/binding/live-conflict/index.html b/public/problems/registry-coordinator/binding/live-conflict/index.html index 2c2b14f3a..f0ef929a5 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/check/not-waiting.json b/public/problems/registry-coordinator/check/not-waiting.json new file mode 100644 index 000000000..6b54112af --- /dev/null +++ b/public/problems/registry-coordinator/check/not-waiting.json @@ -0,0 +1,44 @@ +{ + "id": "https://id.registrystack.org/problems/registry-coordinator/check/not-waiting", + "type": "https://id.registrystack.org/problems/registry-coordinator/check/not-waiting", + "kind": "problem", + "lifecycle_status": "active", + "compatibility_line": "v1alpha1", + "product": "registry-coordinator", + "code": "check.not-waiting", + "title": "Step is not waiting", + "summary": "That step is not waiting.", + "description": "That step is not waiting.", + "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": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", + "path": "crates/registry-coordinator/src/problem.rs", + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + } +} diff --git a/public/problems/registry-coordinator/check/not-waiting/index.html b/public/problems/registry-coordinator/check/not-waiting/index.html new file mode 100644 index 000000000..78ce275eb --- /dev/null +++ b/public/problems/registry-coordinator/check/not-waiting/index.html @@ -0,0 +1,161 @@ + + + + + + Step is not waiting | Registry Stack identifiers + + + + + + + + +
+
+
+

Problem type · registry-coordinator

+

Step is not waiting

+

That step is not waiting.

+

https://id.registrystack.org/problems/registry-coordinator/check/not-waiting

+
+
+
+
+

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-coordinator/check/not-waiting
Kindproblem
Lifecycle statusactive
Compatibility linev1alpha1
Productregistry-coordinator
Codecheck.not-waiting
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-coordinator/check/not-waiting",
+  "type": "https://id.registrystack.org/problems/registry-coordinator/check/not-waiting",
+  "kind": "problem",
+  "lifecycle_status": "active",
+  "compatibility_line": "v1alpha1",
+  "product": "registry-coordinator",
+  "code": "check.not-waiting",
+  "title": "Step is not waiting",
+  "summary": "That step is not waiting.",
+  "description": "That step is not waiting.",
+  "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": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be",
+    "path": "crates/registry-coordinator/src/problem.rs",
+    "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6"
+  }
+}
+ +
+
+
+ + + diff --git a/public/problems/registry-coordinator/definition/refused.json b/public/problems/registry-coordinator/definition/refused.json index 4367833b7..b49cc45b9 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/definition/refused/index.html b/public/problems/registry-coordinator/definition/refused/index.html index 107d849a8..8d8a9d88a 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/deployment/activation-changed.json b/public/problems/registry-coordinator/deployment/activation-changed.json index 9df505e5c..fabd2f54d 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/deployment/activation-changed/index.html b/public/problems/registry-coordinator/deployment/activation-changed/index.html index 5d935d0f8..4c431eed0 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/deployment/refused.json b/public/problems/registry-coordinator/deployment/refused.json index 675ac7a0f..680e4c334 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/deployment/refused/index.html b/public/problems/registry-coordinator/deployment/refused/index.html index 7b2e5372b..b9ae2ca31 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/evaluation/uncertain.json b/public/problems/registry-coordinator/evaluation/uncertain.json index 5f7f30182..c57bac988 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/evaluation/uncertain/index.html b/public/problems/registry-coordinator/evaluation/uncertain/index.html index 961b2e14e..d38c47a0f 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/event/invalid.json b/public/problems/registry-coordinator/event/invalid.json index 222706839..e1dbc3911 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/event/invalid/index.html b/public/problems/registry-coordinator/event/invalid/index.html index d25740fb1..4b2021a6b 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/event/source-unavailable.json b/public/problems/registry-coordinator/event/source-unavailable.json index 2cf9e91ed..422d37637 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/event/source-unavailable/index.html b/public/problems/registry-coordinator/event/source-unavailable/index.html index 955e39fd9..4002ce59e 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/event/too-large.json b/public/problems/registry-coordinator/event/too-large.json index c5e6c5603..69dff570e 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/event/too-large/index.html b/public/problems/registry-coordinator/event/too-large/index.html index 59a2b7065..f8466c7a2 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/event/unauthenticated.json b/public/problems/registry-coordinator/event/unauthenticated.json index 16a171108..fc8d10341 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/event/unauthenticated/index.html b/public/problems/registry-coordinator/event/unauthenticated/index.html index d46cf996d..0118c5959 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/execution/held.json b/public/problems/registry-coordinator/execution/held.json index f14a80124..5f665d0d0 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/execution/held/index.html b/public/problems/registry-coordinator/execution/held/index.html index 0f4767d78..f9668d4c2 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/idempotency/key-invalid.json b/public/problems/registry-coordinator/idempotency/key-invalid.json index c68fd84e4..a638948bf 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/idempotency/key-invalid/index.html b/public/problems/registry-coordinator/idempotency/key-invalid/index.html index 0d1e35983..8db3587f2 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/idempotency/key-reused.json b/public/problems/registry-coordinator/idempotency/key-reused.json index bef27e952..57ee06679 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/idempotency/key-reused/index.html b/public/problems/registry-coordinator/idempotency/key-reused/index.html index a86214695..64311bf6f 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/input/invalid.json b/public/problems/registry-coordinator/input/invalid.json index 5f480e41a..8187b0dea 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/input/invalid/index.html b/public/problems/registry-coordinator/input/invalid/index.html index 4561ea6fc..8b6455723 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/mutation/uncertain.json b/public/problems/registry-coordinator/mutation/uncertain.json index 668167760..a1702f1e9 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/mutation/uncertain/index.html b/public/problems/registry-coordinator/mutation/uncertain/index.html index bacdaf485..08d168153 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/operation/not-authorized.json b/public/problems/registry-coordinator/operation/not-authorized.json index 30642731d..a23395bb7 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/operation/not-authorized/index.html b/public/problems/registry-coordinator/operation/not-authorized/index.html index 66b7305e3..bbd99ef73 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/receipt/expired.json b/public/problems/registry-coordinator/receipt/expired.json index 069feda3d..377d4843c 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/receipt/expired/index.html b/public/problems/registry-coordinator/receipt/expired/index.html index aa65f5c5e..d42306cee 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/reconcile/raced.json b/public/problems/registry-coordinator/reconcile/raced.json index 5cc248131..73e222698 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/reconcile/raced/index.html b/public/problems/registry-coordinator/reconcile/raced/index.html index 1d1528d6b..d8d2a07c6 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/reconcile/refused.json b/public/problems/registry-coordinator/reconcile/refused.json index 381c29900..b94e19f37 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/reconcile/refused/index.html b/public/problems/registry-coordinator/reconcile/refused/index.html index c699d3e6a..927d4e637 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/reconcile/unsupported.json b/public/problems/registry-coordinator/reconcile/unsupported.json index e19c1757d..514b7d170 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/reconcile/unsupported/index.html b/public/problems/registry-coordinator/reconcile/unsupported/index.html index ab9f3a468..dac99b2e3 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/request/body-too-large.json b/public/problems/registry-coordinator/request/body-too-large.json index e9c5cff8f..eb78d8a5f 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } 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 858ff3e46..2478e04c5 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/request/invalid.json b/public/problems/registry-coordinator/request/invalid.json index ae2cb610a..b5819a8eb 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/request/invalid/index.html b/public/problems/registry-coordinator/request/invalid/index.html index a7df701f9..52e5db535 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } 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 ba056bceb..27c51bb52 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } 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 f48929c65..3b64c1737 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/request/method-not-allowed.json b/public/problems/registry-coordinator/request/method-not-allowed.json index d3ac6e4eb..4952101f3 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } 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 3033e6892..98b145619 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/request/not-found.json b/public/problems/registry-coordinator/request/not-found.json index c765b31d3..8adceadbe 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/request/not-found/index.html b/public/problems/registry-coordinator/request/not-found/index.html index 0a20ccdbf..3bd310f4c 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/request/reason-invalid.json b/public/problems/registry-coordinator/request/reason-invalid.json index 336080f28..da61c7a92 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/request/reason-invalid/index.html b/public/problems/registry-coordinator/request/reason-invalid/index.html index 8b893e84a..87de2c9ec 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/request/retention-invalid.json b/public/problems/registry-coordinator/request/retention-invalid.json index 3fba0ee9f..e84af7c35 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/request/retention-invalid/index.html b/public/problems/registry-coordinator/request/retention-invalid/index.html index 195cedd0e..0b4e5a3e3 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/request/unprocessable.json b/public/problems/registry-coordinator/request/unprocessable.json index 6b8ebafe1..dc6886d8e 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/request/unprocessable/index.html b/public/problems/registry-coordinator/request/unprocessable/index.html index f521c2c7e..6a63c0c0b 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/request/unsupported-media-type.json b/public/problems/registry-coordinator/request/unsupported-media-type.json index 358cca385..f4cef56f5 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } 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 4f3bc7b48..e7623be9f 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/restore/hold-required.json b/public/problems/registry-coordinator/restore/hold-required.json index 58c989801..909360194 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/restore/hold-required/index.html b/public/problems/registry-coordinator/restore/hold-required/index.html index edf50bdca..ed1a540f1 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/restore/lease-incompatible.json b/public/problems/registry-coordinator/restore/lease-incompatible.json index a30c0767a..06931d07f 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/restore/lease-incompatible/index.html b/public/problems/registry-coordinator/restore/lease-incompatible/index.html index 2eaf906bc..74b7f0a71 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/restore/review-required.json b/public/problems/registry-coordinator/restore/review-required.json index b4820fb92..572397f68 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/restore/review-required/index.html b/public/problems/registry-coordinator/restore/review-required/index.html index dfc7c04cc..46261b9ca 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/restore/unresolved.json b/public/problems/registry-coordinator/restore/unresolved.json index bf0670f1c..bda6f6d6d 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/restore/unresolved/index.html b/public/problems/registry-coordinator/restore/unresolved/index.html index d9ed8375e..a34266a85 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/retry/refused.json b/public/problems/registry-coordinator/retry/refused.json index 2b89c5700..324d1716b 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/retry/refused/index.html b/public/problems/registry-coordinator/retry/refused/index.html index 1fcd6c1bd..f14c1df5a 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/run/definition-incompatible.json b/public/problems/registry-coordinator/run/definition-incompatible.json index aeba6754c..ca9628324 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/run/definition-incompatible/index.html b/public/problems/registry-coordinator/run/definition-incompatible/index.html index 2085bb279..ce80949e5 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/run/not-visible.json b/public/problems/registry-coordinator/run/not-visible.json index 664963f66..ab2ee5779 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/run/not-visible/index.html b/public/problems/registry-coordinator/run/not-visible/index.html index 45a0a9739..60d334a4b 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/run/payload-erased.json b/public/problems/registry-coordinator/run/payload-erased.json index aeadfa631..d1bc8c061 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/run/payload-erased/index.html b/public/problems/registry-coordinator/run/payload-erased/index.html index 054ea9013..4e2f63e70 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/runtime/failure.json b/public/problems/registry-coordinator/runtime/failure.json index 2ffc42393..492b6f057 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/runtime/failure/index.html b/public/problems/registry-coordinator/runtime/failure/index.html index e20af0055..56a304beb 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/service/unavailable.json b/public/problems/registry-coordinator/service/unavailable.json index 1e152ec37..d72dd53a8 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/service/unavailable/index.html b/public/problems/registry-coordinator/service/unavailable/index.html index cff7d30ea..ba8696989 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/workflow/not-served.json b/public/problems/registry-coordinator/workflow/not-served.json index 9092e2b96..41a1004c8 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/workflow/not-served/index.html b/public/problems/registry-coordinator/workflow/not-served/index.html index a2c67493a..4c4dd5dc8 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/workflow/revision-mismatch.json b/public/problems/registry-coordinator/workflow/revision-mismatch.json index 2fab27a32..05eac1706 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-coordinator/workflow/revision-mismatch/index.html b/public/problems/registry-coordinator/workflow/revision-mismatch/index.html index d1e06e4f8..fd066b0e7 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } } diff --git a/public/problems/registry-discovery/invalid-request.json b/public/problems/registry-discovery/invalid-request.json index a722a99a4..4683ebf21 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 f951a23ad..ef3e8aab8 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 db297d3aa..417fc17a6 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 3bcda4a34..e37b4e06a 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 3516e379e..a1ecac192 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 9b3fd8204..5dfcffeec 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 85da73bf3..056acc23d 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 7cbf90b00..a6fe5fad0 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 2b72a5b69..ee93ffcae 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 f8f993371..67bb9bd11 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 400b00a1f..b3c736d4e 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 0300c51d0..fe0e767c4 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 2f79c02a4..def560762 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 89d72cafc..274e20db1 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 d6a282895..627be4591 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 53be19f55..9b8f64fb1 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 12850b90e..4420d2d40 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 b80454933..6ce0089e3 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 d644aba80..b9f951542 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 29e308630..888483dd2 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 4ea2d61f6..c5452c6e2 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 81af1f6bf..abae55153 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 acba83d53..896ec2b1c 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 b43c507af..6cbc1d0ad 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 64f2580c9..fb0320530 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 6c06ff98c..5a31fb072 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 90a2b87fd..93f361367 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 6593cff13..10770e0cb 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 c8d588398..3a5ed8054 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 a350308fe..51a747b84 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 186afe066..60369aa45 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 761ecfd31..212559a83 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 9af30a057..344e05691 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 fafaff7db..61aba8f6d 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 c7b6edfad..7c07e1eaf 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 417fd5bc5..8797dba65 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 b32a7d649..cdf9b4244 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 91e3bf199..cfb7cdb6f 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 24564d2e4..ed3997653 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 07b56bc11..e72ac13be 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 316d8f3f2..49cbba752 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 bdd9bc571..5c4647af6 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 03b934b9d..8d472bda1 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 f7f64744a..2b4c389a5 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 507b9b250..346eea9f1 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 2aa0c0772..4d08de689 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 80280c730..7534b4ef8 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 03b1f13d0..9682270dc 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 53922dfeb..6d65c71bc 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 2f1b48612..e2b6929bd 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 d51272526..bbe47a2cd 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 3a520c620..02c52a886 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 08a818b55..4e8e01497 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 bf9cced99..9eccd079e 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 ddbeb0487..8b70635a8 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 0c1cbefd0..3ad025358 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } diff --git a/public/problems/registry-evidence/auth/invalid-credential.json b/public/problems/registry-evidence/auth/invalid-credential.json index 20c4c147a..70977c046 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 316cddc4d..859465e19 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 61f4676b5..64c71440b 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 859f4d28d..9ee4daf41 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 945d27d2e..285038c75 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 7d6f1487e..5455f31b4 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 4867e64f5..dfaf0d2df 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 82cd0f5c2..cbad99b23 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 04c043b03..d652e3b23 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 3d4002e9d..8eac98f8a 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 72a20c705..ea54c999d 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 316fde959..e1a201da8 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 6e532512f..92435f5de 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 9c7fb6a10..8231cbbf2 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 b9ba450c1..e771917aa 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 44e4c4089..402ee5b35 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 8202d3b99..01a9e93d0 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 d204bbc55..b700e8497 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 0fe43baf1..ccdec9747 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 7700ab368..1b7f57d44 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 6642e16c0..e1b73b276 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 171b8bf33..8d7e15229 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 553834364..257865ca7 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 f1b5354c1..3d927e315 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 9f732c2e7..b15b8807f 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 61b0f3f2d..20fdfdb39 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 5528248db..a098d80a0 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 1c0f9df7d..962f876b2 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 ddc6dacfc..e6d7b72a4 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 1255b064d..39a11c02a 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 ba980afd2..3ec43944a 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 5e4f4b001..3402f0fe7 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 e1107fb38..c0af9c75a 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 5a89c4000..adba2707a 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 f9d5ce0e1..dfc054958 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 eee7d1c6f..ff5aeb08e 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 75fcea606..401b2389f 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 fe8d45844..05fa75959 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 f1f1a36d6..b6f2e62cf 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 36caafcf5..3a9535fb0 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 e3c117d84..affd975b8 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 ff4ff53af..9a4e65615 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 044906607..50ff8ebf9 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 6439e450f..ba36b2abc 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 bde2b240f..0b4554b57 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 f68c6d688..b7afb6b33 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 c86435878..bf89b9ecd 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 740661b2a..945b1bb11 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 ef9c2da1f..a3f0df011 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 8bea2de3b..ff0058d9c 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 e1f3faf4e..f292a9bee 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 9b503791a..0175c13c8 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 5b231de52..5aab226d9 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 ad9d94fb6..9c8aa80d0 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 131031dad..ced3dbc88 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 6d1a890d8..352bf57dc 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 332225659..5c5c18202 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 740240f33..be9313218 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 54953754d..e056c04c5 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 4d4b5c781..f8aebfd21 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 1d14ef7ab..3f9fe0920 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 0b62eb153..c9e664c7a 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 3bbcb6d73..e2213a6ea 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 b518441d3..4c11ace36 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 dd3ccacb4..c6cdb66ed 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 00f6035eb..be88a8e35 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 b684e939a..95d3f2f5c 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 5f654f7bb..a2c522874 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 0ebb51a6f..b11c1c02d 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 307951c19..e5afee477 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 d2a192189..625bd3051 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 4990c032d..5b899cbea 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 368a36f27..20e66a58c 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 3ec348eac..7d99ab57d 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 0f00706f1..d199242e0 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 a46f15c63..6e0e905b6 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 51ff81a9c..fe68784a6 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 1b82c8027..7d94e9aff 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 bcc3de6d6..431bbe649 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 435ff2e31..8896bfabe 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 2676e9d5e..cf2b9d9b7 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 de6db6966..10f9e229b 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 9172b91d3..b2a15ebaf 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 0da27c9f4..59daa207a 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 f69de08bb..6556990ed 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 a757cb4e6..58b42a8c9 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 312452980..20b657ef4 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 c2521df82..4bf724cd8 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 af3a5c6a2..a00264d5c 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 2f2d424ab..4fb8058f4 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 ce9cf1b24..ea6ca1a09 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 95ba5202c..9e7208467 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 5c87e2426..c0835e9ce 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 5affd08bb..3717c6a5b 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 63f9da52b..347fc192c 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 bf63bb6a9..05ac9b0c0 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 c81267b64..aac77a1cf 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 0bfd07722..dc1bba5e2 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 c6549ebe0..88127d782 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 aad0496ea..9c2bed6a5 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 97fd3beb5..125be820d 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 d1a6b6bcd..5f4c5c7e7 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 8a82f8f8b..c1ec74c19 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 9f862e1bb..f1921b52b 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 e50e38850..98909368f 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 7a3e0b847..b0cdc28af 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 bf950a4ab..260321b9e 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 973f47f04..68b12af31 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 2a826639b..a1d39b4cb 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 b3e0b93ec..392f7da64 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 6659062eb..80826b8e0 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 a25d03a90..6eb513f58 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 c3f7c49eb..e5b7ca516 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 035477453..a85b93e53 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 e3e780d1e..cea1f68d8 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 a0e6a8dca..903dae72c 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 4f4d25f85..279bd5055 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 dc3b5005b..e794e9606 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 c3cf2b4ef..a7af40e8e 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 fe075e2b7..68d6edd07 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 289705016..de6949f7a 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 770eadefb..bfa12728d 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 75ad472a2..16d89fc9d 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 d39fcf096..19bef84a8 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 fd9a0908f..1f2084d81 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 925046bb1..541404e44 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 459722663..1b8dddb22 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 42c5349ba..b543d49f2 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 0d133aa27..1923a2c59 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 0468d5151..2ad61dd9e 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 bd81f5489..183f4afb9 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 c8eab5a6d..b8d43f5a0 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 19938f1e6..e8e22160c 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 ee1c89210..3fcdf60b1 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 523407541..8d862230e 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 75a946c40..1f1cb56af 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 f2fa3c1a0..e0226fc46 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 a2670bfe5..c20ea923a 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 4008f3d11..587e27712 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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 41e7662c9..4275bd8e4 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/public/profiles/breg-odrl/v1 b/public/profiles/breg-odrl/v1 new file mode 100644 index 000000000..cb4d18811 --- /dev/null +++ b/public/profiles/breg-odrl/v1 @@ -0,0 +1,138 @@ +{ + "@context": { + "odrl": "http://www.w3.org/ns/odrl/2/", + "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", + "rdfs": "http://www.w3.org/2000/01/rdf-schema#", + "skos": "http://www.w3.org/2004/02/skos/core#", + "dcterms": "http://purl.org/dc/terms/", + "prof": "http://www.w3.org/ns/dx/prof/", + "breg": "https://id.registrystack.org/vocab/breg-odrl/" + }, + "@id": "https://id.registrystack.org/profiles/breg-odrl/v1", + "@type": "prof:Profile", + "dcterms:title": "BReg partial read-policy export", + "dcterms:conformsTo": {"@id": "https://www.w3.org/TR/odrl-model/"}, + "dcterms:description": "Experimental, descriptive ODRL 2.2 profile for operator review of configured BReg record-operation grants. This is a partial projection of source configuration, not an access token, an activated-package declaration, a complete authorization policy, or a public catalogue. Missing permissions are not prohibitions. Consumers that do not understand this profile must stop processing its policies. BReg independently authenticates and authorizes every actual request.", + "skos:scopeNote": "Every permission describes only its named field projection and exact get or list operation. The native Registry Record envelope is outside the field list. Lookup, relationship traversal, history, count requests, data export, mutations, Actions, Proposals and statistical datasets are outside this profile. Request selectors, pagination and query parameters must satisfy BReg's current route contract. All conditions are conjunctive; absent or unverifiable context never satisfies them. Context comes from the current BReg resource server's verified token and selected compiled profile, never from caller assertions or an ODRL document. An export carries source revision information but does not establish that source is active.", + "skos:note": "This profile adopts odrl:read from the ODRL Common Vocabulary for its exact BReg projection and operation semantics. It is not an Eclipse EDC PolicyDefinition or a Dataspace Protocol Offer or Agreement, and has not been imported into or evaluated by EDC. EDC's reviewed permission parser drops rule-level targets, losing BReg projection identifiers, Record types and readable fields. Direct wrapping and import are unsafe. An adapter must preserve those targets, normalize list operands, bind the action and every custom constraint in each evaluation scope, and use verified BReg context. No adapter or EDC extension is included.", + "@graph": [ + { + "@id": "https://id.registrystack.org/vocab/breg-odrl/", + "@type": "skos:Collection", + "rdfs:isDefinedBy": {"@id": "https://id.registrystack.org/profiles/breg-odrl/v1"}, + "skos:prefLabel": "BReg ODRL profile vocabulary", + "skos:member": [ + {"@id": "odrl:read"}, + {"@id": "breg:authenticated"}, + {"@id": "breg:verifiedNonemptyClaims"}, + {"@id": "breg:accessProfile"}, + {"@id": "breg:operation"}, + {"@id": "breg:tokenScopes"}, + {"@id": "breg:tokenPurpose"}, + {"@id": "breg:requesterClient"}, + {"@id": "breg:actorKind"}, + {"@id": "breg:delegatedActor"}, + {"@id": "breg:taskGrantPresent"}, + {"@id": "breg:recordType"}, + {"@id": "breg:readableFields"}, + {"@id": "breg:partial"} + ] + }, + { + "@id": "breg:authenticated", + "rdfs:isDefinedBy": {"@id": "https://id.registrystack.org/profiles/breg-odrl/v1"}, + "@type": ["odrl:LeftOperand", "skos:Concept"], + "skos:prefLabel": "Authenticated by BReg", + "skos:definition": "Boolean true only after the current BReg resource server accepts the caller's token under its configured issuer, audience, validity and cryptographic checks. The exporter emits an odrl:eq comparison to true." + }, + { + "@id": "breg:verifiedNonemptyClaims", + "rdfs:isDefinedBy": {"@id": "https://id.registrystack.org/profiles/breg-odrl/v1"}, + "@type": ["odrl:LeftOperand", "skos:Concept"], + "skos:prefLabel": "Verified nonempty principal claims", + "skos:definition": "A singleton set containing the resource server's configured principal-claim name only when BReg resolved a valid principal from that claim, or the empty set otherwise. Other populated token claims are not members. odrl:hasPart with a singleton literal list requires both the exact configured claim name and a resolved principal. A claim name in the policy is not a principal identity." + }, + { + "@id": "breg:accessProfile", + "rdfs:isDefinedBy": {"@id": "https://id.registrystack.org/profiles/breg-odrl/v1"}, + "@type": ["odrl:LeftOperand", "skos:Concept"], + "skos:prefLabel": "Selected access profile", + "skos:definition": "The exact native access profile selected for this request. odrl:eq compares its local identifier as a string. Permissions from different profiles must not be combined to authorize one request. Selection alone does not establish authentication or satisfy other conditions." + }, + { + "@id": "breg:operation", + "rdfs:isDefinedBy": {"@id": "https://id.registrystack.org/profiles/breg-odrl/v1"}, + "@type": ["odrl:LeftOperand", "skos:Concept"], + "skos:prefLabel": "Native read operation", + "skos:definition": "The current BReg route operation, expressed as the literal get or list. get retrieves one identified record; list enumerates permitted current records subject to the route's query and pagination contract. Neither permits lookup routes, relationship traversal, historical access, optional count requests or data export. odrl:read applies only to the named projection through this exact operation." + }, + { + "@id": "breg:tokenScopes", + "rdfs:isDefinedBy": {"@id": "https://id.registrystack.org/profiles/breg-odrl/v1"}, + "@type": ["odrl:LeftOperand", "skos:Concept"], + "skos:prefLabel": "Verified token scopes", + "skos:definition": "The set of scopes extracted from the accepted token using BReg's current scope contract. odrl:hasPart requires every right-operand list member. Multiple such constraints are conjunctive. Scope strings remain literals, including strings containing colons." + }, + { + "@id": "breg:tokenPurpose", + "rdfs:isDefinedBy": {"@id": "https://id.registrystack.org/profiles/breg-odrl/v1"}, + "@type": ["odrl:LeftOperand", "skos:Concept"], + "skos:prefLabel": "Verified token purpose", + "skos:definition": "The single purpose value from the accepted token under BReg's current purpose-claim contract. odrl:isPartOf requires membership in the allowed literal list. A purpose supplied only in a request body or policy document does not satisfy this condition. Absence of this constraint means the source profile imposes no purpose restriction." + }, + { + "@id": "breg:requesterClient", + "rdfs:isDefinedBy": {"@id": "https://id.registrystack.org/profiles/breg-odrl/v1"}, + "@type": ["odrl:LeftOperand", "skos:Concept"], + "skos:prefLabel": "Verified requester client", + "skos:definition": "The OAuth client identity resolved by BReg from its verified caller context. odrl:isPartOf requires membership in the allowed literal list. Absence of this constraint means the source profile imposes no requester-client restriction." + }, + { + "@id": "breg:actorKind", + "rdfs:isDefinedBy": {"@id": "https://id.registrystack.org/profiles/breg-odrl/v1"}, + "@type": ["odrl:LeftOperand", "skos:Concept"], + "skos:prefLabel": "Verified actor kind", + "skos:definition": "The actor kind resolved by BReg from its verified caller context, compared with odrl:eq to human, agent or service. Absence of this constraint means the source profile imposes no explicit actor-kind restriction; the delegatedActor constraint still applies." + }, + { + "@id": "breg:delegatedActor", + "rdfs:isDefinedBy": {"@id": "https://id.registrystack.org/profiles/breg-odrl/v1"}, + "@type": ["odrl:LeftOperand", "skos:Concept"], + "skos:prefLabel": "Trusted delegated actor present", + "skos:definition": "Boolean indicating whether BReg's verified caller context contains a trusted actor subject. Standing agent profiles require true; every other exported profile requires false, including profiles without an explicit actorKind. A caller-supplied actor-kind label alone does not establish a trusted actor." + }, + { + "@id": "breg:taskGrantPresent", + "rdfs:isDefinedBy": {"@id": "https://id.registrystack.org/profiles/breg-odrl/v1"}, + "@type": ["odrl:LeftOperand", "skos:Concept"], + "skos:prefLabel": "Verified task grant present", + "skos:definition": "Boolean indicating whether BReg's verified caller context carries a task grant. Every exported permission requires false because task-grant profiles are outside this profile, and native BReg refuses grant-bearing tokens against standing profiles." + }, + { + "@id": "breg:recordType", + "rdfs:isDefinedBy": {"@id": "https://id.registrystack.org/profiles/breg-odrl/v1"}, + "@type": ["rdf:Property", "skos:Concept"], + "rdfs:domain": {"@id": "odrl:Asset"}, + "rdfs:range": {"@id": "http://www.w3.org/2001/XMLSchema#string"}, + "skos:prefLabel": "Native Record type", + "skos:definition": "The authored local Record type identifier whose readable field projection is the target asset. This metadata does not grant access to the complete Record type." + }, + { + "@id": "breg:readableFields", + "rdfs:isDefinedBy": {"@id": "https://id.registrystack.org/profiles/breg-odrl/v1"}, + "@type": ["rdf:Property", "skos:Concept"], + "rdfs:domain": {"@id": "odrl:Asset"}, + "rdfs:range": {"@id": "rdf:List"}, + "skos:prefLabel": "Projection fields", + "skos:definition": "The exact list of authored field identifiers included in the target projection. It never denotes a wildcard, related-record expansion or the entire dataset. It does not include the native Registry Record envelope." + }, + { + "@id": "breg:partial", + "rdfs:isDefinedBy": {"@id": "https://id.registrystack.org/profiles/breg-odrl/v1"}, + "@type": ["rdf:Property", "skos:Concept"], + "rdfs:range": {"@id": "http://www.w3.org/2001/XMLSchema#boolean"}, + "skos:prefLabel": "Partial description", + "skos:definition": "True indicates that the export is deliberately incomplete. An omitted permission is not represented and must not be interpreted as an explicit prohibition." + } + ] +} diff --git a/public/profiles/breg-odrl/v1.html b/public/profiles/breg-odrl/v1.html new file mode 100644 index 000000000..d3fce42fb --- /dev/null +++ b/public/profiles/breg-odrl/v1.html @@ -0,0 +1,100 @@ + + + + + + BReg partial read-policy export profile | Registry Stack identifiers + + + + + + + + +
+
+
+

Response profile

+

BReg partial read-policy export profile

+

Experimental ODRL profile for operator review of a conservative subset of configured BReg read permissions.

+

https://id.registrystack.org/profiles/breg-odrl/v1

+
+
+
+
+

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 profile document itself.

+
+
+

Lifecycle

+ + + + + + + + +
Statusactive
Compatibility linev1
Ownerbreg
Artifact SHA-25624d0950eb2c1a76d5005850e1145f675ad65df5231867907b41d11fdd2979cdc
Immutable artifacthttps://id.registrystack.org/artifacts/sha256/24d0950eb2c1a76d5005850e1145f675ad65df5231867907b41d11fdd2979cdc.jsonld
+
+
+

Documentation

+ + +
+
+
+ + + diff --git a/public/profiles/index.html b/public/profiles/index.html index 9f812b7ec..8719c21ae 100644 --- a/public/profiles/index.html +++ b/public/profiles/index.html @@ -40,10 +40,11 @@

Profiles

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.

-

1 published identifiers

+

2 published identifiers

+
IdentifierTitleStatus
https://id.registrystack.org/profiles/breg-odrl/v1BReg partial read-policy export profileactive
https://id.registrystack.org/profiles/registry-record/v1Registry Record v1 profileactive
diff --git a/public/profiles/index.json b/public/profiles/index.json index ed35e3d50..fbf184d0a 100644 --- a/public/profiles/index.json +++ b/public/profiles/index.json @@ -1,5 +1,39 @@ { "entries": [ + { + "uri": "https://id.registrystack.org/profiles/breg-odrl/v1", + "title": "BReg partial read-policy export profile", + "description": "Experimental ODRL profile for operator review of a conservative subset of configured BReg read permissions.", + "kind": "profile", + "status": "active", + "compatibility_line": "v1", + "owner": "breg", + "source": "src/artifacts/sha256/24d0950eb2c1a76d5005850e1145f675ad65df5231867907b41d11fdd2979cdc.jsonld", + "source_reference": { + "repository": "registry-stack", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", + "path": "products/breg/contracts/odrl-profile.jsonld", + "sha256": "24d0950eb2c1a76d5005850e1145f675ad65df5231867907b41d11fdd2979cdc" + }, + "artifact_sha256": "24d0950eb2c1a76d5005850e1145f675ad65df5231867907b41d11fdd2979cdc", + "artifact_media_type": "application/ld+json", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/24d0950eb2c1a76d5005850e1145f675ad65df5231867907b41d11fdd2979cdc.jsonld", + "id": "https://id.registrystack.org/profiles/breg-odrl/v1", + "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/profiles/registry-record/v1", "title": "Registry Record v1 profile", @@ -8,15 +42,15 @@ "status": "active", "compatibility_line": "v1", "owner": "registry-record", - "source": "src/artifacts/sha256/f165e62044df2129b5cc533d3199cf81ae23d263617f39437ee37be87d3b37fe.md", + "source": "src/artifacts/sha256/c8685157d8e2982b00657a2a3b2fe729cf54792d76134cf22aa1be1cc7abf4a8.md", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "products/registry-record/profile/registry-record-v1.md", - "sha256": "f165e62044df2129b5cc533d3199cf81ae23d263617f39437ee37be87d3b37fe" + "sha256": "c8685157d8e2982b00657a2a3b2fe729cf54792d76134cf22aa1be1cc7abf4a8" }, - "artifact_sha256": "f165e62044df2129b5cc533d3199cf81ae23d263617f39437ee37be87d3b37fe", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/f165e62044df2129b5cc533d3199cf81ae23d263617f39437ee37be87d3b37fe.md", + "artifact_sha256": "c8685157d8e2982b00657a2a3b2fe729cf54792d76134cf22aa1be1cc7abf4a8", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/c8685157d8e2982b00657a2a3b2fe729cf54792d76134cf22aa1be1cc7abf4a8.md", "id": "https://id.registrystack.org/profiles/registry-record/v1", "documented_by": [ { diff --git a/public/profiles/registry-record/v1 b/public/profiles/registry-record/v1 index d76c7b506..6fd920c4e 100644 --- a/public/profiles/registry-record/v1 +++ b/public/profiles/registry-record/v1 @@ -31,7 +31,7 @@ consumers to change parsing or interpretation publishes a new profile version. "meta": { "registryIdentifier": "business-registry", "datasetIdentifier": "legal-entities", - "entityTypeIdentifier": "company" + "recordTypeIdentifier": "company" } } ``` @@ -55,13 +55,13 @@ consumers to change parsing or interpretation publishes a new profile version. "meta": { "registryIdentifier": "business-registry", "datasetIdentifier": "legal-entities", - "entityTypeIdentifier": "company" + "recordTypeIdentifier": "company" } } ``` All five identifiers, `registryIdentifier`, `datasetIdentifier`, -`entityTypeIdentifier`, `recordIdentifier`, and `revisionIdentifier`, are +`recordTypeIdentifier`, `recordIdentifier`, and `revisionIdentifier`, are opaque non-empty strings. `nextCursor` is either `null` or an opaque non-empty string. `domainData` is an object containing only fields released by the selected product access context and projection. It must not contain profile @@ -108,7 +108,7 @@ IRIs belong in separate governed terms or links. "meta": { "registryIdentifier": "business-registry", "datasetIdentifier": "legal-entities", - "entityTypeIdentifier": "company" + "recordTypeIdentifier": "company" } } ``` diff --git a/public/profiles/registry-record/v1.html b/public/profiles/registry-record/v1.html index 3536dc378..7546e7cf6 100644 --- a/public/profiles/registry-record/v1.html +++ b/public/profiles/registry-record/v1.html @@ -48,8 +48,8 @@

Lifecycle

Statusactive Compatibility linev1 Ownerregistry-record - Artifact SHA-256f165e62044df2129b5cc533d3199cf81ae23d263617f39437ee37be87d3b37fe - Immutable artifacthttps://id.registrystack.org/artifacts/sha256/f165e62044df2129b5cc533d3199cf81ae23d263617f39437ee37be87d3b37fe.md + Artifact SHA-256c8685157d8e2982b00657a2a3b2fe729cf54792d76134cf22aa1be1cc7abf4a8 + Immutable artifacthttps://id.registrystack.org/artifacts/sha256/c8685157d8e2982b00657a2a3b2fe729cf54792d76134cf22aa1be1cc7abf4a8.md
diff --git a/public/schemas/adapter/effective-contract/effective-contract.v1alpha1.schema.json b/public/schemas/adapter/effective-contract/effective-contract.v1alpha1.schema.json new file mode 100644 index 000000000..63cc19348 --- /dev/null +++ b/public/schemas/adapter/effective-contract/effective-contract.v1alpha1.schema.json @@ -0,0 +1,427 @@ +{ + "$defs": { + "DerivedId": { + "description": "An identifier the runtime derives from local identifiers: two or more local identifiers joined by `.`. It is never authored.", + "pattern": "^[a-z][a-z0-9_-]{0,63}(\\.[a-z][a-z0-9_-]{0,63})+$", + "type": "string" + }, + "Digest": { + "description": "A SHA-256 digest: `sha256:` followed by 64 lowercase hex digits.", + "pattern": "^sha256:[0-9a-f]{64}$", + "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" + }, + "access": { + "additionalProperties": false, + "properties": { + "anyOf": { + "items": { + "$ref": "#/$defs/scopeSet" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "anyOf" + ], + "type": "object" + }, + "authentication": { + "additionalProperties": false, + "properties": { + "audience": { + "$ref": "#/$defs/nonEmptyText" + }, + "clientAdmission": { + "const": "allowlist" + }, + "scheme": { + "const": "bearer" + } + }, + "required": [ + "scheme", + "audience", + "clientAdmission" + ], + "type": "object" + }, + "authority": { + "additionalProperties": false, + "properties": { + "callerMode": { + "const": "trusted-machine" + }, + "fieldDisclosureAuthority": { + "const": "not-granted" + }, + "personalDelegation": { + "const": "unsupported" + }, + "representedSubject": { + "const": "unsupported" + }, + "rowDisclosureAuthority": { + "const": "not-granted" + }, + "targetBinding": { + "const": "unsupported" + } + }, + "required": [ + "callerMode", + "representedSubject", + "personalDelegation", + "targetBinding", + "rowDisclosureAuthority", + "fieldDisclosureAuthority" + ], + "type": "object" + }, + "contract": { + "additionalProperties": false, + "properties": { + "artifactDeploymentDigest": { + "$ref": "#/$defs/Digest" + }, + "authentication": { + "$ref": "#/$defs/authentication" + }, + "authority": { + "$ref": "#/$defs/authority" + }, + "operations": { + "items": { + "$ref": "#/$defs/operation" + }, + "type": "array" + }, + "problemSchema": { + "$ref": "#/$defs/jsonSchema" + }, + "profileVersion": { + "type": "string" + }, + "project": { + "$ref": "#/$defs/project" + }, + "protocolProblems": { + "$ref": "#/$defs/protocolProblems" + }, + "schemaDialect": { + "const": "https://json-schema.org/draft/2020-12/schema" + }, + "unserved": { + "items": { + "$ref": "#/$defs/unserved" + }, + "type": "array" + } + }, + "required": [ + "schemaDialect", + "project", + "profileVersion", + "artifactDeploymentDigest", + "authentication", + "authority", + "operations", + "unserved", + "problemSchema", + "protocolProblems" + ], + "type": "object" + }, + "input": { + "additionalProperties": false, + "properties": { + "body": { + "$ref": "#/$defs/jsonSchema" + }, + "path": { + "$ref": "#/$defs/jsonSchema" + }, + "query": { + "$ref": "#/$defs/jsonSchema" + } + }, + "required": [ + "path", + "query" + ], + "type": "object" + }, + "jsonSchema": { + "type": "object", + "x-registry-passthrough": "The embedded JSON Schema document is governed by JSON Schema 2020-12." + }, + "nonEmptyText": { + "minLength": 1, + "type": "string" + }, + "operation": { + "additionalProperties": false, + "properties": { + "access": { + "$ref": "#/$defs/access" + }, + "bindingId": { + "$ref": "#/$defs/LocalId" + }, + "effect": { + "const": "read" + }, + "id": { + "$ref": "#/$defs/DerivedId" + }, + "input": { + "$ref": "#/$defs/input" + }, + "method": { + "pattern": "^(GET|POST)$", + "type": "string" + }, + "output": { + "$ref": "#/$defs/jsonSchema" + }, + "path": { + "pattern": "^/", + "type": "string" + }, + "profileOperationId": { + "$ref": "#/$defs/LocalId" + }, + "requestMaximumBytes": { + "maximum": 1048576, + "minimum": 1, + "type": "integer" + }, + "successStatus": { + "maximum": 299, + "minimum": 200, + "type": "integer" + }, + "support": { + "const": "served" + }, + "version": { + "type": "string" + } + }, + "required": [ + "id", + "version", + "bindingId", + "profileOperationId", + "method", + "path", + "support", + "effect", + "successStatus", + "input", + "output", + "access" + ], + "type": "object" + }, + "project": { + "additionalProperties": false, + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "version": { + "type": "string" + } + }, + "required": [ + "id", + "version" + ], + "type": "object" + }, + "protocolProblems": { + "additionalProperties": false, + "properties": { + "problems": { + "items": false, + "maxItems": 2, + "minItems": 2, + "prefixItems": [ + { + "additionalProperties": false, + "properties": { + "code": { + "const": "adapter.contract.precondition-failed" + }, + "status": { + "const": 412 + }, + "title": { + "const": "Effective contract precondition failed" + } + }, + "required": [ + "code", + "status", + "title" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "code": { + "const": "adapter.contract.unavailable" + }, + "status": { + "const": 503 + }, + "title": { + "const": "Effective contract unavailable" + } + }, + "required": [ + "code", + "status", + "title" + ], + "type": "object" + } + ], + "type": "array", + "uniqueItems": true + }, + "schema": { + "$ref": "#/$defs/jsonSchema" + } + }, + "required": [ + "schema", + "problems" + ], + "type": "object" + }, + "readiness": { + "additionalProperties": false, + "properties": { + "configuration": { + "const": "ready" + }, + "journal": { + "const": "ready" + }, + "ready": { + "const": true + } + }, + "required": [ + "ready", + "configuration", + "journal" + ], + "type": "object" + }, + "scopeSet": { + "additionalProperties": false, + "properties": { + "allScopes": { + "items": { + "$ref": "#/$defs/nonEmptyText" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "allScopes" + ], + "type": "object" + }, + "unserved": { + "additionalProperties": false, + "properties": { + "bindingId": { + "$ref": "#/$defs/LocalId" + }, + "effect": { + "enum": [ + "read", + "write", + "unknown" + ] + }, + "method": { + "description": "A case-sensitive HTTP method token from RFC 9110.", + "pattern": "^(GET|POST|PUT|PATCH)$", + "type": "string" + }, + "operationId": { + "$ref": "#/$defs/nonEmptyText" + }, + "profileOperationId": { + "$ref": "#/$defs/LocalId" + }, + "reason": { + "$ref": "#/$defs/nonEmptyText" + }, + "reasonCode": { + "pattern": "^adapter\\.[a-z0-9.-]+$", + "type": "string" + }, + "support": { + "const": "unserved" + }, + "version": { + "type": "string" + } + }, + "required": [ + "operationId", + "version", + "bindingId", + "profileOperationId", + "support", + "effect", + "reasonCode", + "reason" + ], + "type": "object" + } + }, + "$id": "https://id.registrystack.org/schemas/adapter/effective-contract/effective-contract.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/adapter/effective-contract/v1alpha1" + }, + "contract": { + "$ref": "#/$defs/contract" + }, + "digest": { + "$ref": "#/$defs/Digest" + }, + "kind": { + "const": "AdapterEffectiveContract" + }, + "readiness": { + "$ref": "#/$defs/readiness" + } + }, + "required": [ + "apiVersion", + "kind", + "digest", + "contract" + ], + "title": "Registry Adapter effective contract", + "type": "object" +} diff --git a/public/schemas/adapter/effective-contract/effective-contract.v1alpha1.schema/index.html b/public/schemas/adapter/effective-contract/effective-contract.v1alpha1.schema/index.html new file mode 100644 index 000000000..547622d3a --- /dev/null +++ b/public/schemas/adapter/effective-contract/effective-contract.v1alpha1.schema/index.html @@ -0,0 +1,100 @@ + + + + + + Registry Adapter effective contract | Registry Stack identifiers + + + + + + + + +
+
+
+

JSON Schema

+

Registry Adapter effective contract

+

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

+

https://id.registrystack.org/schemas/adapter/effective-contract/effective-contract.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-2565bfd55b2ccee480035ee9db13b8fb3a99ac5a2e9cd01645fdda8dfeb593eb688
Immutable artifacthttps://id.registrystack.org/artifacts/sha256/5bfd55b2ccee480035ee9db13b8fb3a99ac5a2e9cd01645fdda8dfeb593eb688.json
+
+
+

Documentation

+ + +
+
+
+ + + diff --git a/public/schemas/adapter/fixture/fixture.v1alpha1.schema.json b/public/schemas/adapter/fixture/fixture.v1alpha1.schema.json new file mode 100644 index 000000000..b61481605 --- /dev/null +++ b/public/schemas/adapter/fixture/fixture.v1alpha1.schema.json @@ -0,0 +1,429 @@ +{ + "$defs": { + "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" + }, + "ExpectedFacade": { + "description": "What the facade must answer one entry with: a recorded response, or a\nproblem named by class and code (G-FIXTURES). A problem expectation\ncarries no body: the profile's problem envelope owns that shape, and\nthe declared problem owns the status.", + "oneOf": [ + { + "additionalProperties": false, + "description": "The facade answers with this recorded response.", + "properties": { + "body": { + "$ref": "#/$defs/RecordedBody", + "description": "The response body the facade answers with." + }, + "headers": { + "additionalProperties": { + "type": "string" + }, + "description": "The response headers the facade answers with.", + "type": "object" + }, + "status": { + "description": "The status the facade answers with.", + "format": "uint32", + "maximum": 599, + "minimum": 100, + "type": "integer" + }, + "type": { + "const": "response", + "type": "string" + } + }, + "required": [ + "status", + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "The facade answers with the named problem.", + "properties": { + "class": { + "$ref": "#/$defs/ErrorClass", + "description": "The error class the facade answers with; a declared class or a\nclass a declared root covers resolves it." + }, + "code": { + "$ref": "#/$defs/ExternalId", + "description": "The declared problem code the facade fills its envelope with." + }, + "type": { + "const": "problem", + "type": "string" + } + }, + "required": [ + "class", + "code", + "type" + ], + "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" + }, + "FixtureEntry": { + "additionalProperties": false, + "description": "One fixture entry: the facade request, the upstream exchanges it\ndrives in the order the route makes them, and what the facade must\nanswer (G-FIXTURES, CONCEPT 13.3). At least one exchange is an\nauthoring invariant the checks refuse a suite without.", + "properties": { + "expected": { + "$ref": "#/$defs/ExpectedFacade", + "description": "What the facade must answer." + }, + "facadeRequest": { + "$ref": "#/$defs/RecordedFacadeRequest", + "description": "The facade request this entry replays." + }, + "upstream": { + "description": "The upstream exchanges, in the order the route makes them.", + "items": { + "$ref": "#/$defs/RecordedExchange" + }, + "type": "array" + } + }, + "required": [ + "facadeRequest", + "upstream", + "expected" + ], + "type": "object" + }, + "FixtureProvenance": { + "description": "Where a fixture's recording came from\n(`products/adapter/CONCEPT.md` section 13.3): captured from a live\nsystem, or documented as an authored reconstruction.", + "oneOf": [ + { + "additionalProperties": false, + "description": "Recorded from the named live system.", + "properties": { + "reference": { + "description": "Where the recording came from, for review.", + "type": "string" + }, + "type": { + "const": "captured", + "type": "string" + } + }, + "required": [ + "reference", + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Authored from the source system's documented behavior.", + "properties": { + "reference": { + "description": "The documentation the reconstruction follows, for review.", + "type": "string" + }, + "type": { + "const": "documented", + "type": "string" + } + }, + "required": [ + "reference", + "type" + ], + "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" + }, + "Intercept": { + "description": "One declared intercept. Fixture replay intercepts `http` and `graphql`\nsends and the token endpoint of an OAuth2 kind; nothing else is\ninterceptable.", + "oneOf": [ + { + "additionalProperties": false, + "description": "Intercept every send to the named endpoint.", + "properties": { + "endpoint": { + "$ref": "#/$defs/ExternalId", + "description": "The pack endpoint id whose sends replay from the fixtures." + }, + "type": { + "const": "endpoint", + "type": "string" + } + }, + "required": [ + "endpoint", + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Intercept the token requests of the named endpoint's OAuth2 kind\n(`products/adapter/CONCEPT.md` section 10.2). Replay runs without\na credential: the recorded token request carries no credential\nheader or body, and the recorded reply's token is a synthetic\nvalue a captured recording must replace before it is committed.", + "properties": { + "endpoint": { + "$ref": "#/$defs/ExternalId", + "description": "The pack endpoint whose token requests replay from the\nfixtures." + }, + "type": { + "const": "token-endpoint", + "type": "string" + } + }, + "required": [ + "endpoint", + "type" + ], + "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" + }, + "RecordedBody": true, + "RecordedExchange": { + "additionalProperties": false, + "description": "One recorded upstream exchange: the send the route made and the reply\nthe source gave it.", + "properties": { + "request": { + "$ref": "#/$defs/RecordedRequest", + "description": "The send the route made." + }, + "response": { + "$ref": "#/$defs/RecordedResponse", + "description": "The reply the source gave it." + } + }, + "required": [ + "request", + "response" + ], + "type": "object" + }, + "RecordedFacadeRequest": { + "additionalProperties": false, + "description": "The facade request one entry replays: the operation it exercises, plus\nthe request the deployment receives. The operation is the facade-side\nprimary key of the entry; the profile owns its method.", + "properties": { + "body": { + "$ref": "#/$defs/RecordedBody", + "description": "The request body: absent, JSON `null`, or a value (G-FIXTURES)." + }, + "headers": { + "additionalProperties": { + "type": "string" + }, + "description": "The request headers.", + "type": "object" + }, + "operation": { + "$ref": "#/$defs/ExternalId", + "description": "The profile operation this entry exercises." + }, + "path": { + "description": "The request path, with any template segments already filled.", + "type": "string" + }, + "query": { + "description": "The encoded query string.", + "type": "string" + } + }, + "required": [ + "operation", + "path" + ], + "type": "object" + }, + "RecordedRequest": { + "additionalProperties": false, + "description": "One recorded upstream request the fixture replay matches against.", + "properties": { + "body": { + "$ref": "#/$defs/RecordedBody", + "description": "The request body: absent, JSON `null`, or a value (G-FIXTURES)." + }, + "endpoint": { + "$ref": "#/$defs/ExternalId", + "description": "The endpoint the request goes to." + }, + "headers": { + "additionalProperties": { + "type": "string" + }, + "description": "The request headers.", + "type": "object" + }, + "method": { + "$ref": "#/$defs/HttpMethod", + "description": "The request method." + }, + "path": { + "description": "The request path, with any template segments already filled.", + "type": "string" + }, + "query": { + "description": "The encoded query string.", + "type": "string" + }, + "tokenRequest": { + "description": "Whether this request is the endpoint's token request (CONCEPT\n10.2); only a token intercept answers it.", + "type": "boolean" + } + }, + "required": [ + "endpoint", + "method", + "path" + ], + "type": "object" + }, + "RecordedResponse": { + "additionalProperties": false, + "description": "One recorded upstream reply.", + "properties": { + "body": { + "$ref": "#/$defs/RecordedBody", + "description": "The reply body: absent, JSON `null`, or a value (G-FIXTURES)." + }, + "headers": { + "additionalProperties": { + "type": "string" + }, + "description": "The response headers.", + "type": "object" + }, + "rawBodyBase64": { + "description": "Exact response bytes for a selected host protocol, encoded as standard\npadded base64. This is mutually exclusive with `body`; ordinary replay\nnever decodes or exposes it.", + "type": "string" + }, + "status": { + "description": "The status the upstream answered with.", + "format": "uint32", + "maximum": 599, + "minimum": 100, + "type": "integer" + } + }, + "required": [ + "status" + ], + "type": "object" + } + }, + "$id": "https://id.registrystack.org/schemas/adapter/fixture/fixture.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "description": "The fixture suite artifact (`AdapterFixture`), authored per pack.", + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/adapter/fixture/v1alpha1", + "type": "string" + }, + "entries": { + "default": [], + "description": "The recorded exchanges and expectations.", + "items": { + "$ref": "#/$defs/FixtureEntry" + }, + "type": "array" + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The suite identifier." + }, + "intercepts": { + "description": "The sends this suite intercepts, by endpoint id and token endpoint.\nA route never declares its own test intercepts.", + "items": { + "$ref": "#/$defs/Intercept" + }, + "type": "array" + }, + "kind": { + "const": "AdapterFixture", + "type": "string" + }, + "pack": { + "$ref": "#/$defs/ExternalId", + "description": "The pack this suite replays." + }, + "provenance": { + "$ref": "#/$defs/FixtureProvenance", + "description": "Where the recording came from." + }, + "upstreamVersion": { + "description": "The upstream version the recording reflects.", + "type": "string" + } + }, + "required": [ + "apiVersion", + "id", + "intercepts", + "kind", + "pack", + "provenance", + "upstreamVersion" + ], + "title": "Registry Adapter fixture suite", + "type": "object" +} diff --git a/public/schemas/adapter/fixture/fixture.v1alpha1.schema/index.html b/public/schemas/adapter/fixture/fixture.v1alpha1.schema/index.html new file mode 100644 index 000000000..9595a02fb --- /dev/null +++ b/public/schemas/adapter/fixture/fixture.v1alpha1.schema/index.html @@ -0,0 +1,100 @@ + + + + + + Registry Adapter fixture suite | Registry Stack identifiers + + + + + + + + +
+
+
+

JSON Schema

+

Registry Adapter fixture suite

+

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

+

https://id.registrystack.org/schemas/adapter/fixture/fixture.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-256ca14df9aafa49fd2018a12869e54f4058e29de07f01c0cbc0dd13f069649bcc9
Immutable artifacthttps://id.registrystack.org/artifacts/sha256/ca14df9aafa49fd2018a12869e54f4058e29de07f01c0cbc0dd13f069649bcc9.json
+
+
+

Documentation

+ + +
+
+
+ + + diff --git a/public/schemas/adapter/job-runtime/job-runtime.v1alpha1.schema.json b/public/schemas/adapter/job-runtime/job-runtime.v1alpha1.schema.json new file mode 100644 index 000000000..b9c5f48cd --- /dev/null +++ b/public/schemas/adapter/job-runtime/job-runtime.v1alpha1.schema.json @@ -0,0 +1,1040 @@ +{ + "$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, + "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" + }, + "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/schemas/adapter/job-runtime/job-runtime.v1alpha1.schema/index.html b/public/schemas/adapter/job-runtime/job-runtime.v1alpha1.schema/index.html new file mode 100644 index 000000000..816226229 --- /dev/null +++ b/public/schemas/adapter/job-runtime/job-runtime.v1alpha1.schema/index.html @@ -0,0 +1,100 @@ + + + + + + Registry Adapter ingestion job runtime configuration | Registry Stack identifiers + + + + + + + + +
+
+
+

JSON Schema

+

Registry Adapter ingestion job runtime configuration

+

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

+

https://id.registrystack.org/schemas/adapter/job-runtime/job-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
Owneradapter
Artifact SHA-256c1be1e7bc8efa01de429ea5a5cd7c19da49d9766d71839602a0e81cecc447d8b
Immutable artifacthttps://id.registrystack.org/artifacts/sha256/c1be1e7bc8efa01de429ea5a5cd7c19da49d9766d71839602a0e81cecc447d8b.json
+
+
+

Documentation

+ + +
+
+
+ + + diff --git a/public/schemas/adapter/job/job.v1alpha1.schema.json b/public/schemas/adapter/job/job.v1alpha1.schema.json new file mode 100644 index 000000000..a2b867042 --- /dev/null +++ b/public/schemas/adapter/job/job.v1alpha1.schema.json @@ -0,0 +1,488 @@ +{ + "$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 (D39).", + "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": [ + "pageDeadlineMilliseconds", + "maximumResponseBytes", + "maximumPageItems", + "maximumPageBytes", + "maximumUpstreamCalls", + "read" + ], + "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/schemas/adapter/job/job.v1alpha1.schema/index.html b/public/schemas/adapter/job/job.v1alpha1.schema/index.html new file mode 100644 index 000000000..1695d99fe --- /dev/null +++ b/public/schemas/adapter/job/job.v1alpha1.schema/index.html @@ -0,0 +1,100 @@ + + + + + + Registry Adapter ingestion job | Registry Stack identifiers + + + + + + + + +
+
+
+

JSON Schema

+

Registry Adapter ingestion job

+

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

+

https://id.registrystack.org/schemas/adapter/job/job.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-25638818527ae8cf4435485ea3f283af51b41c4d1d1e0e26d04ab3e59c158c150a7
Immutable artifacthttps://id.registrystack.org/artifacts/sha256/38818527ae8cf4435485ea3f283af51b41c4d1d1e0e26d04ab3e59c158c150a7.json
+
+
+

Documentation

+ + +
+
+
+ + + diff --git a/public/schemas/adapter/pack/pack.v1alpha1.schema.json b/public/schemas/adapter/pack/pack.v1alpha1.schema.json new file mode 100644 index 000000000..ec3548e05 --- /dev/null +++ b/public/schemas/adapter/pack/pack.v1alpha1.schema.json @@ -0,0 +1,2467 @@ +{ + "$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 (D39); the checks refuse 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 (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`).", + "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" + }, + "steps": { + "description": "The template body, with `{{name}}` and `{{?name}}` placeholders.", + "items": { + "$ref": "#/$defs/Step" + }, + "type": "array" + } + }, + "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" + }, + "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`." + }, + "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" + } + ] + }, + "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(Increment 3; `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/schemas/adapter/pack/pack.v1alpha1.schema/index.html b/public/schemas/adapter/pack/pack.v1alpha1.schema/index.html new file mode 100644 index 000000000..67405e796 --- /dev/null +++ b/public/schemas/adapter/pack/pack.v1alpha1.schema/index.html @@ -0,0 +1,100 @@ + + + + + + Registry Adapter pack | Registry Stack identifiers + + + + + + + + +
+
+
+

JSON Schema

+

Registry Adapter pack

+

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

+

https://id.registrystack.org/schemas/adapter/pack/pack.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-2566031baaabca785fe6e0adfed4336fa555839e18ae1a3136cf3e895ad5e6f6dcb
Immutable artifacthttps://id.registrystack.org/artifacts/sha256/6031baaabca785fe6e0adfed4336fa555839e18ae1a3136cf3e895ad5e6f6dcb.json
+
+
+

Documentation

+ + +
+
+
+ + + diff --git a/public/schemas/adapter/profile/profile.v1alpha1.schema.json b/public/schemas/adapter/profile/profile.v1alpha1.schema.json new file mode 100644 index 000000000..95bef2441 --- /dev/null +++ b/public/schemas/adapter/profile/profile.v1alpha1.schema.json @@ -0,0 +1,387 @@ +{ + "$defs": { + "AsyncStatusPath": { + "description": "One profile-owned caller path for asynchronous write status. The path\nremains inside the facade and carries exactly one opaque status handle;\nit never accepts a source URL or caller-selected path member.", + "type": "string" + }, + "EnvelopeTemplate": { + "description": "An envelope template: a JSON template whose string members carry\n`{{slot}}` placeholders from the closed vocabulary\n(`products/adapter/CONCEPT.md` section 7). The template is data; the\nengine fills it.", + "type": "string" + }, + "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" + }, + "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" + }, + "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" + }, + "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" + }, + "PaginationParameters": { + "additionalProperties": false, + "description": "The pagination parameters of a search operation: the cursor and\npage-size query parameter names and their bounds\n(`products/adapter/CONCEPT.md` section 7). The engine owns encoding the\ncursor; the profile owns the names.", + "properties": { + "cursorParameter": { + "$ref": "#/$defs/ExternalId", + "description": "The cursor query parameter name." + }, + "pageSizeDefault": { + "description": "The page size a call that names none gets; within the bounds. A\ncursor carries the page size of the call that minted it: a later\ncall may omit the size, and one that names a different size is\nrefused.", + "format": "uint64", + "maximum": 100000, + "minimum": 1, + "type": "integer" + }, + "pageSizeMaximum": { + "description": "The largest page size a caller may ask for.", + "format": "uint64", + "maximum": 100000, + "minimum": 1, + "type": "integer" + }, + "pageSizeMinimum": { + "description": "The smallest page size a caller may ask for.", + "format": "uint64", + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "pageSizeParameter": { + "$ref": "#/$defs/ExternalId", + "description": "The page-size query parameter name." + } + }, + "required": [ + "cursorParameter", + "pageSizeParameter", + "pageSizeMinimum", + "pageSizeMaximum" + ], + "type": "object" + }, + "ParameterizedPart": { + "additionalProperties": false, + "description": "One parameterized part: a part of the profile a deployment declares at\nbind time (`products/adapter/CONCEPT.md` sections 6 and 7).", + "properties": { + "description": { + "description": "What the part means, for review.", + "type": "string" + }, + "name": { + "$ref": "#/$defs/ExternalId", + "description": "The part name." + } + }, + "required": [ + "name", + "description" + ], + "type": "object" + }, + "Problem": { + "additionalProperties": false, + "description": "One problem a caller can receive: the profile's own answer shape for\nthe error classes it maps (`products/adapter/CONCEPT.md` sections 7\nand 8.11.6). A pack raises error classes and never names a problem\ncode or builds a problem body; the profile decides what the caller\nsees.", + "properties": { + "classes": { + "description": "The error classes this problem answers: a class resolves to the\nentry whose declared class is closest to it, by the rule of\n`products/adapter/CONCEPT.md` section 8.7.", + "items": { + "$ref": "#/$defs/ErrorClass" + }, + "type": "array", + "uniqueItems": true + }, + "code": { + "$ref": "#/$defs/ExternalId", + "description": "The profile's own problem code a caller receives." + }, + "dataFields": { + "description": "The optional closed scalar object this problem may disclose. Every\ndeclared field is required when the object is present; authoring\nchecks enforce the field-count and required-field bounds.", + "items": { + "$ref": "#/$defs/RecordField" + }, + "maxItems": 16, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "status": { + "description": "The default HTTP status for profile-governed route failures. Fixed\nfacade admission failures retain their engine-defined status; the\neffective problem schema includes those resolved class/status pairs.", + "format": "uint32", + "maximum": 599, + "minimum": 400, + "type": "integer" + }, + "title": { + "description": "The problem title the envelope's `problemTitle` slot fills from.", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "classes" + ], + "type": "object" + }, + "ProfileAsyncCompletion": { + "additionalProperties": false, + "description": "The caller-visible asynchronous completion contract of one write.", + "properties": { + "acceptedEnvelope": { + "$ref": "#/$defs/EnvelopeTemplate", + "description": "The exact accepted response shape, over the three async slots and\noptional profile parameterized parts." + }, + "completedStatus": { + "description": "The status returned after the source proves successful completion.", + "format": "uint32", + "maximum": 299, + "minimum": 200, + "type": "integer" + }, + "statusPath": { + "$ref": "#/$defs/AsyncStatusPath", + "description": "The profile-owned facade path that receives the opaque status id." + } + }, + "required": [ + "completedStatus", + "statusPath", + "acceptedEnvelope" + ], + "type": "object" + }, + "ProfileOperation": { + "additionalProperties": false, + "description": "One facade operation, declared by id\n(`products/adapter/CONCEPT.md` sections 6 and 7). The id is a\nprofile-declared bounded string (CFG-ID-5), never an engine enum.", + "properties": { + "asyncCompletion": { + "$ref": "#/$defs/ProfileAsyncCompletion", + "description": "The explicit asynchronous completion contract of a 202 write." + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The profile-declared operation id a binding names." + }, + "itemEnvelope": { + "$ref": "#/$defs/EnvelopeTemplate", + "description": "The per-record template: when declared, every record the response\nenvelope's `record` or `records` slot carries is rendered through\nit first. It may name `record`, `recordId` (the identifier the\nroute's record carries beside its domain data), `recordType`, and\n`requestId`. A call whose route yields no identifier for a template\nthat names `recordId` is a disclosure violation." + }, + "method": { + "$ref": "#/$defs/HttpMethod", + "description": "The facade method." + }, + "pagination": { + "$ref": "#/$defs/PaginationParameters", + "description": "The pagination parameters of a search operation." + }, + "path": { + "description": "The facade path template, e.g. `/v2/cases/{type}`. Placeholders\nare single-brace `{name}` templates, Camel REST DSL / OpenAPI path\ntemplating; `{{name}}` is the pack layer's substitution syntax and\nrefuses here.", + "type": "string" + }, + "pathParameters": { + "description": "The path parameters the template names: every `{name}` in `path`\nmust resolve here, every entry must appear in the path, and the\nlist is unique (CFG-ID-6).", + "items": { + "$ref": "#/$defs/LocalId" + }, + "type": "array", + "uniqueItems": true + }, + "readOnly": { + "description": "Whether a POST operation only reads: it is served like a read\n(never the write path), its request envelope is a closed template\nover the caller's JSON body, and its route reaches only safe sends.\nA GET operation is a read without declaring it.", + "type": "boolean" + }, + "recordIdParameter": { + "$ref": "#/$defs/LocalId", + "description": "The path parameter the caller's `recordId` header fills on get,\nupdate, and patch; one of `pathParameters` when declared. A search\nor create operation fills none; the profile checks require the\nparameter exactly where the facade reads it." + }, + "recordTypeParameter": { + "$ref": "#/$defs/LocalId", + "description": "The path parameter the bound record type substitutes into\n(`products/adapter/CONCEPT.md` section 7): one of `pathParameters`,\nchecked at the profile checks. No rule reads meaning from the\nparameter's position." + }, + "requestEnvelope": { + "$ref": "#/$defs/EnvelopeTemplate", + "description": "Where a writable record sits in an incoming body. A write\noperation's request envelope must name the `record` slot." + }, + "requestMaximumBytes": { + "description": "The largest request body, in bytes, a read operation with a body\naccepts; a larger one answers `facade.payload-too-large`. Sixteen\nkibibytes when absent.", + "format": "uint64", + "maximum": 1048576, + "minimum": 1, + "type": "integer" + }, + "responseEnvelope": { + "$ref": "#/$defs/EnvelopeTemplate", + "description": "The response envelope; must name its result slot." + }, + "successStatus": { + "default": 200, + "description": "The status the facade answers a success with; two hundreds only\n(CFG-QTY-4). Every non-2xx answer is a problem body.", + "format": "uint32", + "maximum": 299, + "minimum": 200, + "type": "integer" + } + }, + "required": [ + "id", + "method", + "path", + "recordTypeParameter", + "responseEnvelope" + ], + "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" + } + }, + "$id": "https://id.registrystack.org/schemas/adapter/profile/profile.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "description": "The facade profile artifact (`AdapterProfile`): the operation set, the\nenvelope templates, the pagination parameters, and the problems and\nproblem envelope.", + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/adapter/profile/v1alpha1", + "type": "string" + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The profile identifier a project pins." + }, + "kind": { + "const": "AdapterProfile", + "type": "string" + }, + "operations": { + "description": "The operations the profile serves.", + "items": { + "$ref": "#/$defs/ProfileOperation" + }, + "type": "array" + }, + "parameterizedParts": { + "default": [], + "description": "The parts of the profile a deployment declares at bind time.", + "items": { + "$ref": "#/$defs/ParameterizedPart" + }, + "type": "array", + "uniqueItems": true + }, + "problemEnvelope": { + "$ref": "#/$defs/EnvelopeTemplate", + "description": "The problem envelope template; must carry the `problemCode` slot." + }, + "problems": { + "description": "The problems a caller can receive, each mapping error classes to a\ncode, status, and title. The totality check requires every class of\nthe closed hierarchy, uncatchable and facade classes included, to\nresolve to exactly one entry\n(`products/adapter/CONCEPT.md` sections 7 and 8.11.6).", + "items": { + "$ref": "#/$defs/Problem" + }, + "type": "array" + }, + "version": { + "description": "The profile's own version; a project pin names it next to the\ndigest (CFG-ID-4).", + "type": "string" + } + }, + "required": [ + "apiVersion", + "id", + "kind", + "operations", + "problemEnvelope", + "problems", + "version" + ], + "title": "Registry Adapter facade profile", + "type": "object" +} diff --git a/public/schemas/adapter/profile/profile.v1alpha1.schema/index.html b/public/schemas/adapter/profile/profile.v1alpha1.schema/index.html new file mode 100644 index 000000000..122c5cb4f --- /dev/null +++ b/public/schemas/adapter/profile/profile.v1alpha1.schema/index.html @@ -0,0 +1,100 @@ + + + + + + Registry Adapter facade profile | Registry Stack identifiers + + + + + + + + +
+
+
+

JSON Schema

+

Registry Adapter facade profile

+

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

+

https://id.registrystack.org/schemas/adapter/profile/profile.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-2568032fd67f82f517cade8e55c4d3972bc5481a957b84a4cb70b3f40f82ac970d3
Immutable artifacthttps://id.registrystack.org/artifacts/sha256/8032fd67f82f517cade8e55c4d3972bc5481a957b84a4cb70b3f40f82ac970d3.json
+
+
+

Documentation

+ + +
+
+
+ + + diff --git a/public/schemas/adapter/project/project.v1alpha1.schema.json b/public/schemas/adapter/project/project.v1alpha1.schema.json new file mode 100644 index 000000000..4356d1464 --- /dev/null +++ b/public/schemas/adapter/project/project.v1alpha1.schema.json @@ -0,0 +1,370 @@ +{ + "$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": { + "description": "The declared budget of upstream sends per exchange; the static\nworst-case count must stay within it.", + "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", + "maximumUpstreamCalls" + ], + "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" + } + ] + }, + "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" + }, + "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" + }, + "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" + } + }, + "$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.", + "properties": { + "accessProfiles": { + "default": [], + "description": "The access profiles.", + "items": { + "$ref": "#/$defs/AccessProfile" + }, + "type": "array" + }, + "apiVersion": { + "const": "id.registrystack.org/formats/adapter/project/v1alpha1", + "type": "string" + }, + "bindings": { + "default": [], + "description": "The bindings of contract operations to routes.", + "items": { + "$ref": "#/$defs/Binding" + }, + "type": "array" + }, + "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 facade profile." + }, + "project": { + "$ref": "#/$defs/ProjectIdentity", + "description": "The deployment's identity." + }, + "recordTypes": { + "description": "The declared record types and fields.", + "items": { + "$ref": "#/$defs/RecordType" + }, + "type": "array" + }, + "templatedRoutes": { + "default": [], + "description": "The pack template instantiations, Camel's `templatedRoute`.", + "items": { + "$ref": "#/$defs/TemplatedRoute" + }, + "type": "array" + } + }, + "required": [ + "apiVersion", + "kind", + "pack", + "profile", + "project", + "recordTypes" + ], + "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 new file mode 100644 index 000000000..705df65fb --- /dev/null +++ b/public/schemas/adapter/project/project.v1alpha1.schema/index.html @@ -0,0 +1,100 @@ + + + + + + Registry Adapter project | Registry Stack identifiers + + + + + + + + +
+
+
+

JSON Schema

+

Registry Adapter project

+

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

+

https://id.registrystack.org/schemas/adapter/project/project.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-2562a31e088e66073cf94b5d3769aebbeef3552cafa59c2281405be83ccd5390435
Immutable artifacthttps://id.registrystack.org/artifacts/sha256/2a31e088e66073cf94b5d3769aebbeef3552cafa59c2281405be83ccd5390435.json
+
+
+

Documentation

+ + +
+
+
+ + + diff --git a/public/schemas/adapter/runtime/runtime.v1alpha1.schema.json b/public/schemas/adapter/runtime/runtime.v1alpha1.schema.json new file mode 100644 index 000000000..14fb73260 --- /dev/null +++ b/public/schemas/adapter/runtime/runtime.v1alpha1.schema.json @@ -0,0 +1,628 @@ +{ + "$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" + }, + "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" + }, + "IdempotencyRetention": { + "additionalProperties": false, + "description": "Exact write-response custody in the idempotency store\n(`products/adapter/CONCEPT.md` section 9 and D12).", + "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" + } + ] + }, + "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 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." + }, + "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 cursor key, still accepted when opening a cursor so\na key rotation does not strand cursors in flight." + } + }, + "required": [ + "allowedClients", + "allowedPrivateCidrs", + "apiVersion", + "audit", + "database", + "endpoints", + "id", + "kind", + "listener", + "oidc" + ], + "title": "Registry Adapter runtime configuration", + "type": "object" +} diff --git a/public/schemas/adapter/runtime/runtime.v1alpha1.schema/index.html b/public/schemas/adapter/runtime/runtime.v1alpha1.schema/index.html new file mode 100644 index 000000000..688fd4495 --- /dev/null +++ b/public/schemas/adapter/runtime/runtime.v1alpha1.schema/index.html @@ -0,0 +1,100 @@ + + + + + + Registry Adapter runtime configuration | Registry Stack identifiers + + + + + + + + +
+
+
+

JSON Schema

+

Registry Adapter runtime configuration

+

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

+

https://id.registrystack.org/schemas/adapter/runtime/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
Owneradapter
Artifact SHA-256169ce8657f2ab5a3140216b6aeeeaaaf7dfcea0f508364a76de142b93c6a0a14
Immutable artifacthttps://id.registrystack.org/artifacts/sha256/169ce8657f2ab5a3140216b6aeeeaaaf7dfcea0f508364a76de142b93c6a0a14.json
+
+
+

Documentation

+ + +
+
+
+ + + diff --git a/public/schemas/breg/access-explanation/access-explanation.v1alpha7.schema/index.html b/public/schemas/breg/access-explanation/access-explanation.v1alpha7.schema/index.html index c693ad525..d93bb5a46 100644 --- a/public/schemas/breg/access-explanation/access-explanation.v1alpha7.schema/index.html +++ b/public/schemas/breg/access-explanation/access-explanation.v1alpha7.schema/index.html @@ -45,7 +45,7 @@

AccessExplanation

Lifecycle

- + diff --git a/public/schemas/breg/access-explanation/access-explanation.v1alpha8.schema.json b/public/schemas/breg/access-explanation/access-explanation.v1alpha8.schema.json new file mode 100644 index 000000000..2fb3ce9dc --- /dev/null +++ b/public/schemas/breg/access-explanation/access-explanation.v1alpha8.schema.json @@ -0,0 +1,923 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://id.registrystack.org/schemas/breg/access-explanation/access-explanation.v1alpha8.schema.json", + "title": "AccessExplanation", + "description": "Wire shape of `explanation` for `bregctl explain access` without `--scenario`. Evaluation-rule strings are pinned. Record grants retain compiled authority with inspection-only explicit row boundaries and allowCount. Routes, actions and rowReach follow the compiled model, except pinned routes.entries[].recordType. timers pins autonomous policy writers and the exact product-owned future-effect ceiling without inventing a public profile. claimContract remains opaque except principalClaims and its success/error relationship with claimContractError. Consent and statisticalDatasets are pinned in full.", + "type": "object", + "additionalProperties": false, + "required": [ + "apiVersion", + "kind", + "scopeMatching", + "purposeMatching", + "rowMatching", + "profileSelection", + "relationshipMatching", + "missingClaims", + "evaluation", + "routes", + "recordTypes", + "actions", + "timers", + "rowReach", + "claimContract", + "claimContractError", + "consent", + "statisticalDatasets", + "accessProfiles" + ], + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/breg/access-explanation/v1alpha8" + }, + "kind": { + "const": "BRegAccessExplanation" + }, + "scopeMatching": { + "type": "string" + }, + "purposeMatching": { + "type": "string" + }, + "rowMatching": { + "type": "string" + }, + "profileSelection": { + "type": "string" + }, + "relationshipMatching": { + "type": "string" + }, + "missingClaims": { + "type": "string" + }, + "evaluation": { + "type": "string" + }, + "routes": { + "type": "object", + "additionalProperties": false, + "required": [ + "entries" + ], + "properties": { + "entries": { + "type": "array", + "items": { + "type": "object", + "description": "Passthrough of the compiled access-route inventory; only `recordType` is pinned. Other fields follow CompiledAccessEntry and are outside this contract version.", + "x-registry-passthrough": "bregctl writes each compiled access-route entry as the engine holds it; only recordType is pinned, and its other members follow CompiledAccessEntry and are outside this contract version.", + "additionalProperties": true, + "required": [ + "recordType" + ], + "properties": { + "recordType": { + "type": "string" + } + } + } + } + } + }, + "recordTypes": { + "type": "array", + "description": "Per-Record type author inspection. Record grants explicitly report allowCount and render an empty compiled claim-bound row list as unrestricted. Other profile members follow the compiled AccessProfileSource.", + "items": { + "type": "object", + "x-registry-passthrough": "EntityAccessExplanation retains compiled authority with inspection-only explicit defaults on its profiles.", + "required": [ + "profiles" + ], + "properties": { + "profiles": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "rowBoundaries", + "allowCount" + ], + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "rowBoundaries": { + "description": "Unrestricted means no claim-bound row restriction. Membership and consent boundaries, when present, still apply.", + "oneOf": [ + { + "const": "unrestricted" + }, + { + "type": "array", + "minItems": 1, + "items": { + "type": "object", + "additionalProperties": false, + "required": [ + "field", + "claim", + "operator" + ], + "properties": { + "field": { + "type": "string" + }, + "claim": { + "type": "string" + }, + "operator": { + "enum": [ + "equals", + "in" + ] + } + } + } + } + ] + }, + "allowCount": { + "type": "boolean" + }, + "readPaths": { + "type": "array", + "description": "Relationship grants declared on this source Record type. Each grant names the disclosed target, joining Record type, and route without requiring a model-report join.", + "items": { + "type": "object", + "required": [ + "path", + "targetRecordType", + "throughRecordType", + "route" + ], + "properties": { + "path": { + "$ref": "#/$defs/LocalId" + }, + "targetRecordType": { + "$ref": "#/$defs/LocalId" + }, + "throughRecordType": { + "$ref": "#/$defs/LocalId" + }, + "route": { + "$ref": "#/$defs/LocalId" + } + }, + "x-registry-passthrough": "The inspector retains the compiled read-path permission and adds targetRecordType, throughRecordType, and route for inspection." + } + } + }, + "x-registry-passthrough": "The inspector retains the compiled AccessProfileSource members unchanged except rowBoundaries and allowCount. Only those explicit defaults and the profile id are pinned here; other members follow the compiled contract." + } + } + } + } + }, + "actions": { + "type": "object", + "description": "Action inventory with canonical author inspection definitions, routes and access entries.", + "x-registry-passthrough": "Actions use the same author inspector as ActionsExplanation, with exact fixed plans or function ceilings; routes and access follow the compiler." + }, + "timers": { + "type": "array", + "description": "Root-enabled autonomous Record timers, the existing surfaces that can shape their policy, and their exact product-owned future-effect ceiling. Empty when the compiled project has no enabled timer.", + "items": { + "type": "object", + "additionalProperties": false, + "required": [ + "recordType", + "timer", + "sourceModule", + "invoke", + "controlFields", + "predicateFields", + "effectInputFields", + "controlWriters", + "predicateWriters", + "effectInputWriters", + "futureEffect" + ], + "properties": { + "recordType": { + "$ref": "#/$defs/LocalId" + }, + "timer": { + "$ref": "#/$defs/LocalId" + }, + "sourceModule": { + "oneOf": [ + { + "$ref": "#/$defs/LocalId" + }, + { + "type": "null" + } + ] + }, + "invoke": { + "$ref": "#/$defs/LocalId" + }, + "controlFields": { + "$ref": "#/$defs/TimerFields" + }, + "predicateFields": { + "$ref": "#/$defs/TimerFields" + }, + "effectInputFields": { + "$ref": "#/$defs/TimerFields" + }, + "controlWriters": { + "type": "array", + "items": { + "$ref": "#/$defs/TimerWriter" + } + }, + "predicateWriters": { + "type": "array", + "items": { + "$ref": "#/$defs/TimerWriter" + } + }, + "effectInputWriters": { + "type": "array", + "items": { + "$ref": "#/$defs/TimerWriter" + } + }, + "futureEffect": { + "type": "object", + "additionalProperties": false, + "required": [ + "authority", + "recordGrantRelationship", + "systemGrant" + ], + "properties": { + "authority": { + "const": "product-owned" + }, + "recordGrantRelationship": { + "const": "none" + }, + "systemGrant": { + "$ref": "#/$defs/TimerSystemGrant" + } + } + } + } + } + }, + "rowReach": { + "type": "array", + "description": "The compiled model's row-reach explanation. Read-path entries identify the disclosed target Record type while retaining the root profile's row boundaries and an exact source path to the grant. Action target entries identify their runtime-enforced authority as additional to ordinary Record grants, state whether any direct Record grant exists for the same profile and Record type, and retain their compiled uses. Grant existence does not compare operations or row boundaries and does not imply that Action target authority grants ordinary CRUD.", + "items": { + "type": "object", + "required": [ + "recordType", + "profile", + "sourcePath", + "surface", + "rowBoundaries" + ], + "properties": { + "recordType": { + "$ref": "#/$defs/LocalId" + }, + "profile": { + "$ref": "#/$defs/LocalId" + }, + "sourcePath": { + "type": "string", + "minLength": 1 + }, + "surface": { + "enum": [ + "record", + "read_path", + "action_target", + "proposal_target" + ], + "x-registry-member-names": true + }, + "rowBoundaries": { + "type": "array", + "x-registry-passthrough": "The inspector retains the compiler's boundary list exactly; an empty list is the compiled representation of unrestricted row reach." + } + }, + "x-registry-passthrough": "bregctl writes each row-reach explanation as the engine holds it; the target Record type, profile, source path, surface, and row boundaries are pinned. Other members follow RowReachExplanation." + } + }, + "claimContract": { + "type": [ + "object", + "null" + ], + "description": "Passthrough of the compiled authority inventory, or null when that inventory failed. `principalClaims` is pinned for exact contract inspection; every other member follows AuthorityInventory and remains outside this contract version. Casework provider pairing verifies a sealed purpose-bound context export and grants no BReg authority.", + "x-registry-passthrough": "bregctl writes the compiled authority inventory as the engine holds it; only principalClaims is pinned, and its other members follow AuthorityInventory outside this contract version.", + "required": [ + "principalClaims" + ], + "properties": { + "principalClaims": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string", + "minLength": 1 + } + } + } + }, + "claimContractError": { + "type": [ + "string", + "null" + ], + "description": "The compiled authority inventory's failure, or null when the inventory was built. AuthorityInventoryError is a value-free enum serialized as one of these kebab-case strings; the vocabulary is pinned and grows only with an apiVersion bump.", + "enum": [ + "principal-claim-missing", + "target-entity-not-compiled", + "boundary-field-not-compiled", + "lookup-selector-not-compiled", + "lookup-claim-mapping-incomplete", + "lookup-field-not-compiled", + "conflicting-claim-expectation", + null + ] + }, + "consent": { + "description": "Consent-gated permissions, the recipient set of every client, and the consent records they check; null when the project declares no recipients, consent record, or requireConsent permission. Built only for this payload and pinned in full.", + "type": [ + "object", + "null" + ], + "additionalProperties": false, + "required": [ + "condition", + "unmappedClients", + "trustModel", + "ungating", + "organizations", + "groups", + "clients", + "records", + "permissions", + "issuers" + ], + "properties": { + "condition": { + "type": "string" + }, + "unmappedClients": { + "type": "string" + }, + "trustModel": { + "type": "string" + }, + "ungating": { + "type": "string" + }, + "organizations": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "required": [ + "id", + "name", + "clients", + "groups", + "retired" + ], + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "name": { + "type": "string" + }, + "clients": { + "type": "array", + "items": { + "type": "string" + } + }, + "groups": { + "type": "array", + "items": { + "type": "string" + } + }, + "retired": { + "type": "boolean" + } + } + } + }, + "groups": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "required": [ + "id", + "name", + "members", + "clients" + ], + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "name": { + "type": "string" + }, + "members": { + "type": "array", + "items": { + "type": "string" + } + }, + "clients": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "clients": { + "type": "array", + "items": { + "$ref": "#/$defs/consentClient" + } + }, + "records": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "required": [ + "recordType", + "maximumDurationDays", + "gives", + "revokes", + "refusals", + "scopes", + "indexes" + ], + "properties": { + "recordType": { + "type": "string" + }, + "maximumDurationDays": { + "type": "integer", + "minimum": 1, + "maximum": 3652 + }, + "gives": { + "type": "array", + "items": { + "type": "string" + } + }, + "revokes": { + "type": "array", + "items": { + "type": "string" + } + }, + "refusals": { + "type": "array", + "items": { + "type": "string" + } + }, + "scopes": { + "type": "array", + "items": { + "type": "string" + } + }, + "indexes": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "permissions": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "required": [ + "recordType", + "profile", + "sourcePath", + "record", + "on", + "condition", + "purposes", + "scope", + "maximumDurationDays", + "probeFunction", + "indexes", + "readableFields", + "clients", + "issuingActions" + ], + "properties": { + "recordType": { + "type": "string" + }, + "profile": { + "type": "string" + }, + "sourcePath": { + "type": "string" + }, + "record": { + "type": "string" + }, + "on": { + "type": "string" + }, + "condition": { + "type": "string" + }, + "purposes": { + "type": "array", + "items": { + "type": "string" + } + }, + "scope": { + "type": "string" + }, + "maximumDurationDays": { + "type": "integer", + "minimum": 1, + "maximum": 3652 + }, + "probeFunction": { + "type": "string" + }, + "indexes": { + "type": "array", + "items": { + "type": "string" + } + }, + "readableFields": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "required": [ + "field", + "classification" + ], + "properties": { + "field": { + "type": "string" + }, + "classification": { + "enum": [ + "public", + "internal", + "restricted", + null + ] + } + } + } + }, + "clients": { + "type": "array", + "items": { + "$ref": "#/$defs/consentClient" + } + }, + "issuingActions": { + "type": "array", + "items": { + "$ref": "#/$defs/consentIssuer" + } + } + } + } + }, + "issuers": { + "type": "array", + "items": { + "$ref": "#/$defs/consentIssuer" + } + } + } + }, + "statisticalDatasets": { + "description": "Who may do what with each statistical dataset, ordered by dataset; empty when the project declares none. Each list names access profiles in order. `readReleases` is every profile that reads the dataset's releases, and is empty when no profile publishes it.", + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "required": [ + "dataset", + "readLive", + "publish", + "readReleases", + "accessProfiles", + "display" + ], + "properties": { + "dataset": { + "type": "string" + }, + "readLive": { + "type": "array", + "items": { + "type": "string" + } + }, + "publish": { + "type": "array", + "maxItems": 1, + "items": { + "type": "string" + } + }, + "readReleases": { + "type": "array", + "items": { + "type": "string" + } + }, + "accessProfiles": { + "type": "array", + "description": "Full authentication requirements for dataset grants, including profiles with no Record type grant.", + "items": { + "type": "object", + "required": [ + "id", + "default", + "principalClaim", + "requiredScopes", + "requiredPurposes" + ], + "x-registry-passthrough": "Dataset profile authority retained by the compiler; shape follows AccessProfileSource." + } + }, + "display": { + "$ref": "#/$defs/Presentation" + } + } + } + }, + "accessProfiles": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "required": [ + "id", + "display" + ], + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "display": { + "$ref": "#/$defs/Presentation" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "claimContract": { + "type": "null" + } + }, + "required": [ + "claimContract" + ] + }, + "then": { + "properties": { + "claimContractError": { + "type": "string" + } + } + }, + "else": { + "properties": { + "claimContractError": { + "type": "null" + } + } + } + } + ], + "$defs": { + "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" + }, + "TimerFields": { + "type": "array", + "uniqueItems": true, + "items": { + "$ref": "#/$defs/LocalId" + } + }, + "TimerWriter": { + "type": "object", + "additionalProperties": false, + "required": [ + "surface", + "id", + "sourcePath", + "operations", + "fields" + ], + "properties": { + "surface": { + "enum": [ + "record-permission", + "action" + ] + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "sourcePath": { + "type": "string", + "minLength": 1 + }, + "operations": { + "type": "array", + "minItems": 1, + "uniqueItems": true, + "items": { + "enum": [ + "create", + "patch", + "tombstone", + "batch", + "import" + ] + } + }, + "fields": { + "$ref": "#/$defs/TimerFields" + }, + "accessProfiles": { + "type": "array", + "uniqueItems": true, + "items": { + "$ref": "#/$defs/LocalId" + } + } + } + }, + "TimerSystemGrant": { + "type": "object", + "additionalProperties": false, + "required": [ + "revision", + "actionId", + "actionRevision", + "targets" + ], + "properties": { + "revision": { + "type": "string", + "pattern": "^sha256:[0-9a-f]{64}$" + }, + "actionId": { + "$ref": "#/$defs/LocalId" + }, + "actionRevision": { + "type": "string", + "pattern": "^sha256:[0-9a-f]{64}$" + }, + "targets": { + "type": "array", + "minItems": 1, + "items": { + "type": "object", + "additionalProperties": false, + "required": [ + "recordType", + "operation", + "fields", + "readFields" + ], + "properties": { + "recordType": { + "$ref": "#/$defs/LocalId" + }, + "operation": { + "enum": [ + "create", + "get", + "patch", + "tombstone" + ] + }, + "fields": { + "$ref": "#/$defs/TimerFields" + }, + "readFields": { + "$ref": "#/$defs/TimerFields" + } + } + } + } + } + }, + "consentIssuer": { + "type": "object", + "additionalProperties": false, + "required": [ + "action", + "issuer" + ], + "properties": { + "action": { + "type": "string" + }, + "issuer": { + "enum": [ + "self", + "steward" + ] + } + } + }, + "consentClient": { + "type": "object", + "additionalProperties": false, + "required": [ + "client", + "organization", + "recipients" + ], + "properties": { + "client": { + "type": "string" + }, + "organization": { + "type": [ + "string", + "null" + ] + }, + "recipients": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "Display": { + "type": "object", + "additionalProperties": false, + "properties": { + "label": { + "type": "string" + }, + "description": { + "type": "string" + }, + "titleField": { + "type": "string" + } + } + }, + "Presentation": { + "type": "object", + "additionalProperties": false, + "properties": { + "label": { + "type": "string" + }, + "description": { + "type": "string" + } + } + } + } +} diff --git a/public/schemas/breg/access-explanation/access-explanation.v1alpha8.schema/index.html b/public/schemas/breg/access-explanation/access-explanation.v1alpha8.schema/index.html new file mode 100644 index 000000000..a7af9559d --- /dev/null +++ b/public/schemas/breg/access-explanation/access-explanation.v1alpha8.schema/index.html @@ -0,0 +1,100 @@ + + + + + + AccessExplanation | Registry Stack identifiers + + + + + + + + +
+
+
+

JSON Schema

+

AccessExplanation

+

Base Registry Engine bregctl explain output JSON Schemas, written by hand and held to bregctl's output by its contract test.

+

https://id.registrystack.org/schemas/breg/access-explanation/access-explanation.v1alpha8.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
Statusdeprecated
Compatibility linev1alpha7
Ownerbreg
Artifact SHA-256868846b864b32a31087c4c2fc8b99ef232151641a7fd848f3bca3d516f284544
+ + + + + + + +
Statusactive
Compatibility linev1alpha8
Ownerbreg
Artifact SHA-256e9bae5707ef92498b162083958fc0af4c1c043e74eec71252259e70bab88b73d
Immutable artifacthttps://id.registrystack.org/artifacts/sha256/e9bae5707ef92498b162083958fc0af4c1c043e74eec71252259e70bab88b73d.json
+ +
+

Documentation

+ + +
+ + + + + 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 0b0c280cf..d288a93ba 100644 --- a/public/schemas/breg/migration-descriptor/migration-descriptor.v1alpha1.schema.json +++ b/public/schemas/breg/migration-descriptor/migration-descriptor.v1alpha1.schema.json @@ -34,6 +34,7 @@ "enum": [ "registry-identity-changed", "registry-version-changed", + "record-timer-store-added", "entity-added", "entity-removed", "entity-physical-name-changed", @@ -80,6 +81,9 @@ "event-added", "event-removed", "event-changed", + "timer-added", + "timer-removed", + "timer-changed", "action-added", "action-removed", "action-changed", @@ -99,14 +103,14 @@ "CompiledRegistryChangeTarget": { "additionalProperties": false, "properties": { - "entityId": { - "type": "string" - }, "kind": { "$ref": "#/$defs/CompiledRegistryChangeTargetKind" }, "memberId": { "type": "string" + }, + "recordTypeId": { + "type": "string" } }, "required": [ @@ -117,7 +121,7 @@ "CompiledRegistryChangeTargetKind": { "enum": [ "registry", - "entity", + "record-type", "field", "derived-relation", "constraint", @@ -126,6 +130,7 @@ "route", "query-inventory", "event", + "timer", "action", "recipient", "statistical-dataset" @@ -221,7 +226,7 @@ }, "ReviewedMigrationObjectKind": { "enum": [ - "entity", + "record-type", "field", "constraint", "index" 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 ce21af8ea..09a950ab0 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-256100315e48b363b9f32004f472633a0710816abb6dce52129f2f98513dfd0d8ab - Immutable artifacthttps://id.registrystack.org/artifacts/sha256/100315e48b363b9f32004f472633a0710816abb6dce52129f2f98513dfd0d8ab.json + Artifact SHA-2568177563ac1261680db7070b59f8b651d1cfe8c33cb5423891902bab4d5f8173e + Immutable artifacthttps://id.registrystack.org/artifacts/sha256/8177563ac1261680db7070b59f8b651d1cfe8c33cb5423891902bab4d5f8173e.json diff --git a/public/schemas/breg/module/module.v1alpha1.schema.json b/public/schemas/breg/module/module.v1alpha1.schema.json index 9ff9dc45b..326b186a9 100644 --- a/public/schemas/breg/module/module.v1alpha1.schema.json +++ b/public/schemas/breg/module/module.v1alpha1.schema.json @@ -669,6 +669,10 @@ "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" @@ -696,6 +700,9 @@ "id": { "$ref": "#/$defs/LocalId" }, + "pattern": { + "type": "string" + }, "required": { "default": false, "type": "boolean" @@ -738,14 +745,6 @@ { "additionalProperties": false, "properties": { - "capabilities": { - "default": [], - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, "function": { "type": "string" }, @@ -792,12 +791,20 @@ "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" }, @@ -1487,6 +1494,10 @@ "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" @@ -2123,6 +2134,13 @@ "$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": [ @@ -2238,6 +2256,12 @@ "temporal": { "$ref": "#/$defs/TemporalSource" }, + "timers": { + "items": { + "$ref": "#/$defs/TimerSource" + }, + "type": "array" + }, "tombstone": { "default": false, "type": "boolean" @@ -2639,6 +2663,12 @@ } ] }, + "FunctionCapabilitySource": { + "enum": [ + "evidence" + ], + "type": "string" + }, "FunctionLimitsSource": { "additionalProperties": false, "properties": { @@ -2669,7 +2699,7 @@ "capabilities": { "default": [], "items": { - "type": "string" + "$ref": "#/$defs/FunctionCapabilitySource" }, "type": "array", "uniqueItems": true @@ -4003,6 +4033,11 @@ "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": { @@ -4010,8 +4045,7 @@ } }, "required": [ - "startField", - "endField" + "startField" ], "type": "object" }, @@ -4068,6 +4102,96 @@ ], "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": { diff --git a/public/schemas/breg/module/module.v1alpha1.schema/index.html b/public/schemas/breg/module/module.v1alpha1.schema/index.html index 09d3ca2ae..a93f4792e 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-2569eff8e027f5900d3fd4a1c88b6cae2c9657fcd9e09e3e07706e6bd1a7823e0e3 - Immutable artifacthttps://id.registrystack.org/artifacts/sha256/9eff8e027f5900d3fd4a1c88b6cae2c9657fcd9e09e3e07706e6bd1a7823e0e3.json + Artifact SHA-2569949f5e3a10d4deb0038359d76d1f59b160449472bcd0b6c99e45ad776d20f80 + Immutable artifacthttps://id.registrystack.org/artifacts/sha256/9949f5e3a10d4deb0038359d76d1f59b160449472bcd0b6c99e45ad776d20f80.json diff --git a/public/schemas/breg/project/project.v1alpha1.schema.json b/public/schemas/breg/project/project.v1alpha1.schema.json index 1e2106ded..fb1886e08 100644 --- a/public/schemas/breg/project/project.v1alpha1.schema.json +++ b/public/schemas/breg/project/project.v1alpha1.schema.json @@ -669,6 +669,10 @@ "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" @@ -696,6 +700,9 @@ "id": { "$ref": "#/$defs/LocalId" }, + "pattern": { + "type": "string" + }, "required": { "default": false, "type": "boolean" @@ -774,14 +781,6 @@ { "additionalProperties": false, "properties": { - "capabilities": { - "default": [], - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, "function": { "type": "string" }, @@ -828,12 +827,20 @@ "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" }, @@ -1540,6 +1547,10 @@ "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" @@ -2386,6 +2397,12 @@ "temporal": { "$ref": "#/$defs/TemporalSource" }, + "timers": { + "items": { + "$ref": "#/$defs/TimerSource" + }, + "type": "array" + }, "tombstone": { "default": false, "type": "boolean" @@ -2813,6 +2830,12 @@ } ] }, + "FunctionCapabilitySource": { + "enum": [ + "evidence" + ], + "type": "string" + }, "FunctionLimitsSource": { "additionalProperties": false, "properties": { @@ -2843,7 +2866,7 @@ "capabilities": { "default": [], "items": { - "type": "string" + "$ref": "#/$defs/FunctionCapabilitySource" }, "type": "array", "uniqueItems": true @@ -4541,6 +4564,10 @@ "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" } @@ -5175,6 +5202,11 @@ "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": { @@ -5182,8 +5214,7 @@ } }, "required": [ - "startField", - "endField" + "startField" ], "type": "object" }, @@ -5240,6 +5271,113 @@ ], "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": { @@ -5556,6 +5694,13 @@ }, "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" diff --git a/public/schemas/breg/project/project.v1alpha1.schema/index.html b/public/schemas/breg/project/project.v1alpha1.schema/index.html index 03a558ea8..68ed204f6 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-256a9770dec360be9b6ef23c57f12b53cbf24a25b82a318f7f142ead530b65e35f7 - Immutable artifacthttps://id.registrystack.org/artifacts/sha256/a9770dec360be9b6ef23c57f12b53cbf24a25b82a318f7f142ead530b65e35f7.json + Artifact SHA-2564babace1053c7b8446b682ce2db17a220263e669b397a414d98ead9d47af459a + Immutable artifacthttps://id.registrystack.org/artifacts/sha256/4babace1053c7b8446b682ce2db17a220263e669b397a414d98ead9d47af459a.json diff --git a/public/schemas/breg/runtime/runtime.v1alpha1.schema.json b/public/schemas/breg/runtime/runtime.v1alpha1.schema.json index ef4ffb0c5..b3683fe88 100644 --- a/public/schemas/breg/runtime/runtime.v1alpha1.schema.json +++ b/public/schemas/breg/runtime/runtime.v1alpha1.schema.json @@ -990,19 +990,6 @@ "pattern": "^[^\\s\\x00-\\x1F\\x7F](?:[^\\x00-\\x1F\\x7F]*[^\\s\\x00-\\x1F\\x7F])?$", "type": "string" }, - "deniedKids": { - "description": "The signing key identifiers this registry refuses a token from.\nOmitted, no key is denied; written, it names at least one key.", - "items": { - "maxLength": 512, - "minLength": 1, - "pattern": "^[^\\x00-\\x20\\x7F]+$", - "type": "string" - }, - "maxItems": 128, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, "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.", @@ -1037,6 +1024,19 @@ "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, @@ -1134,7 +1134,7 @@ "additionalProperties": false, "properties": { "createTimeoutMilliseconds": { - "default": 30000, + "default": 2000, "description": "Defaults to the bounded PostgreSQL pool connection-creation timeout.", "format": "uint64", "maximum": 60000, @@ -1148,7 +1148,7 @@ "type": "integer" }, "recycleTimeoutMilliseconds": { - "default": 30000, + "default": 2000, "description": "Defaults to the bounded PostgreSQL pool connection-recycle timeout.", "format": "uint64", "maximum": 60000, @@ -1156,7 +1156,7 @@ "type": "integer" }, "waitTimeoutMilliseconds": { - "default": 30000, + "default": 1000, "description": "Defaults to the bounded PostgreSQL pool wait timeout.", "format": "uint64", "maximum": 60000, diff --git a/public/schemas/breg/runtime/runtime.v1alpha1.schema/index.html b/public/schemas/breg/runtime/runtime.v1alpha1.schema/index.html index 6e93a15f6..5085eaa29 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-2563b486d00ae22ddc2cf42d40e5fba33a9de5c2c4ae110ab6a899b16e1261b51c9 - Immutable artifacthttps://id.registrystack.org/artifacts/sha256/3b486d00ae22ddc2cf42d40e5fba33a9de5c2c4ae110ab6a899b16e1261b51c9.json + Artifact SHA-25655959ae4cc86f1cd393cca382d7cdfd367ccc703c8676a350af4299b59ebb043 + Immutable artifacthttps://id.registrystack.org/artifacts/sha256/55959ae4cc86f1cd393cca382d7cdfd367ccc703c8676a350af4299b59ebb043.json diff --git a/public/schemas/casework/dev-clients/dev-clients.v1alpha1.schema.json b/public/schemas/casework/dev-clients/dev-clients.v1alpha1.schema.json index 88cec8ed3..6506012a5 100644 --- a/public/schemas/casework/dev-clients/dev-clients.v1alpha1.schema.json +++ b/public/schemas/casework/dev-clients/dev-clients.v1alpha1.schema.json @@ -16,6 +16,9 @@ "clientIdRef": { "$ref": "#/$defs/SecretReference" }, + "delegatedDisplayExchange": { + "$ref": "#/$defs/DelegatedDisplayExchangeBinding" + }, "resource": { "type": "string" }, @@ -80,6 +83,45 @@ ], "type": "object" }, + "DelegatedDisplayExchangeBinding": { + "additionalProperties": false, + "description": "Dedicated per-call delegation for staff-subject source disclosure. This is\nseparate from the provider's status and task-context service credential.", + "properties": { + "clientAssertionAudience": { + "type": "string" + }, + "clientAssertionKeyRef": { + "$ref": "#/$defs/SecretReference" + }, + "clientIdRef": { + "$ref": "#/$defs/SecretReference" + }, + "generation": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "scopes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "tokenEndpoint": { + "$ref": "#/$defs/Url" + } + }, + "required": [ + "tokenEndpoint", + "clientIdRef", + "clientAssertionKeyRef", + "resource", + "scopes", + "generation" + ], + "type": "object" + }, "DirectoryTeam": { "additionalProperties": false, "properties": { diff --git a/public/schemas/casework/dev-clients/dev-clients.v1alpha1.schema/index.html b/public/schemas/casework/dev-clients/dev-clients.v1alpha1.schema/index.html index e903bc21a..7c398d8e0 100644 --- a/public/schemas/casework/dev-clients/dev-clients.v1alpha1.schema/index.html +++ b/public/schemas/casework/dev-clients/dev-clients.v1alpha1.schema/index.html @@ -48,8 +48,8 @@

Lifecycle

Statusactive Compatibility linev1alpha1 Ownercasework - Artifact SHA-256d212936fbb1c87e69b470c1616f7417ab413c8b757ebc62eaeec30995ea92ca3 - Immutable artifacthttps://id.registrystack.org/artifacts/sha256/d212936fbb1c87e69b470c1616f7417ab413c8b757ebc62eaeec30995ea92ca3.json + Artifact SHA-2562481544f84d61d0bd21ba44e31e7bdefcbf9e10b12d3b103fc100ebead1e346e + Immutable artifacthttps://id.registrystack.org/artifacts/sha256/2481544f84d61d0bd21ba44e31e7bdefcbf9e10b12d3b103fc100ebead1e346e.json diff --git a/public/schemas/casework/report/report.v1alpha2.schema.json b/public/schemas/casework/report/report.v1alpha2.schema.json index 6fe9b351e..a011a523b 100644 --- a/public/schemas/casework/report/report.v1alpha2.schema.json +++ b/public/schemas/casework/report/report.v1alpha2.schema.json @@ -297,43 +297,6 @@ ], "type": "object" }, - "ApplyData": { - "additionalProperties": false, - "properties": { - "activation": { - "$ref": "#/$defs/Activation" - }, - "effects": { - "$ref": "#/$defs/ActivationEffects" - }, - "runtimeConfig": { - "type": "string" - }, - "schemaVersionsApplied": { - "items": { - "format": "int64", - "maximum": 9223372036854775807, - "minimum": -9223372036854775808, - "type": "integer" - }, - "type": "array" - }, - "singleRoleStatement": { - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "runtimeConfig", - "activation", - "schemaVersionsApplied", - "effects", - "singleRoleStatement" - ], - "type": "object" - }, "CalendarPolicy": { "additionalProperties": false, "properties": { @@ -371,56 +334,6 @@ ], "type": "string" }, - "CheckData": { - "additionalProperties": false, - "properties": { - "bregPackage": { - "anyOf": [ - { - "$ref": "#/$defs/ProducerAgreementData" - }, - { - "type": "null" - } - ] - }, - "databaseAccess": { - "type": "boolean" - }, - "filesChecked": { - "format": "uint", - "maximum": 18446744073709551615, - "minimum": 0, - "type": "integer" - }, - "networkAccess": { - "type": "boolean" - }, - "policyBindings": { - "items": { - "$ref": "#/$defs/ReviewPolicyIdentity" - }, - "type": "array" - }, - "project": { - "type": "string" - }, - "runtimeConfig": { - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "project", - "policyBindings", - "filesChecked", - "networkAccess", - "databaseAccess" - ], - "type": "object" - }, "CheckScope": { "additionalProperties": false, "description": "A source file relative to the project and the resource path a check reports.", @@ -636,82 +549,6 @@ ], "type": "object" }, - "DevData": { - "additionalProperties": false, - "properties": { - "audience": { - "type": "string" - }, - "caseworkUrl": { - "$ref": "#/$defs/Url" - }, - "clientAssertionAudience": { - "type": "string" - }, - "clients": { - "items": { - "$ref": "#/$defs/DevClient" - }, - "type": "array" - }, - "contextProviders": { - "items": { - "type": "string" - }, - "type": "array" - }, - "directory": { - "$ref": "#/$defs/DevDirectory" - }, - "issuer": { - "$ref": "#/$defs/Url" - }, - "issuerProject": { - "type": [ - "string", - "null" - ] - }, - "journal": { - "type": "string" - }, - "operatorConfig": { - "type": "string" - }, - "project": { - "type": "string" - }, - "resource": { - "type": "string" - }, - "state": { - "$ref": "#/$defs/DevState" - }, - "stateFile": { - "type": "string" - }, - "tokenEndpoint": { - "type": "string" - } - }, - "required": [ - "state", - "project", - "stateFile", - "operatorConfig", - "caseworkUrl", - "tokenEndpoint", - "issuer", - "clientAssertionAudience", - "resource", - "audience", - "journal", - "contextProviders", - "clients", - "directory" - ], - "type": "object" - }, "DevDirectory": { "additionalProperties": false, "properties": { @@ -734,68 +571,6 @@ ], "type": "object" }, - "DevEventsData": { - "additionalProperties": false, - "properties": { - "events": { - "items": { - "type": "string" - }, - "type": "array" - }, - "journal": { - "type": "string" - }, - "project": { - "type": "string" - }, - "truncated": { - "type": "boolean" - } - }, - "required": [ - "project", - "journal", - "events", - "truncated" - ], - "type": "object" - }, - "DevGrantData": { - "additionalProperties": false, - "properties": { - "grantExpiresAt": { - "format": "uint64", - "maximum": 18446744073709551615, - "minimum": 0, - "type": "integer" - }, - "headerFile": { - "type": "string" - } - }, - "required": [ - "headerFile", - "grantExpiresAt" - ], - "type": "object" - }, - "DevIdentityData": { - "additionalProperties": false, - "properties": { - "clientId": { - "type": "string" - }, - "subject": { - "type": "string" - } - }, - "required": [ - "clientId", - "subject" - ], - "type": "object" - }, "DevState": { "enum": [ "starting", @@ -806,18 +581,6 @@ ], "type": "string" }, - "DevTokenData": { - "additionalProperties": false, - "properties": { - "headerFile": { - "type": "string" - } - }, - "required": [ - "headerFile" - ], - "type": "object" - }, "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.", @@ -925,30 +688,6 @@ ], "type": "object" }, - "DoctorData": { - "additionalProperties": false, - "properties": { - "activation": { - "$ref": "#/$defs/ActivationPlan" - }, - "checks": { - "$ref": "#/$defs/DoctorChecks" - }, - "packageDigest": { - "$ref": "#/$defs/Digest" - }, - "runtimeConfig": { - "type": "string" - } - }, - "required": [ - "runtimeConfig", - "packageDigest", - "activation", - "checks" - ], - "type": "object" - }, "ElapsedDuration": { "description": "An elapsed budget in exactly one unit; a day is 24 elapsed hours.", "oneOf": [ @@ -1042,87 +781,32 @@ ], "type": "object" }, - "ExplainData": { + "ExplainPolicy": { "additionalProperties": false, "properties": { - "authority": { - "type": "string" - }, - "calendars": { - "items": { - "$ref": "#/$defs/CalendarPolicy" - }, - "type": "array" + "binding": { + "$ref": "#/$defs/ReviewPolicyIdentity" }, "clocks": { "items": { - "$ref": "#/$defs/ClockPolicy" + "type": "string" }, "type": "array" }, - "contextProviders": { - "items": { - "$ref": "#/$defs/ReviewContextProviderPolicy" - }, - "type": "array" + "context": { + "$ref": "#/$defs/ReviewContextPolicy" }, - "project": { - "$ref": "#/$defs/ProjectIdentity" + "contextCustody": { + "type": "string" }, - "reviewPolicies": { + "decidingProfiles": { "items": { - "$ref": "#/$defs/ExplainPolicy" + "type": "string" }, "type": "array" }, - "staffing": { - "$ref": "#/$defs/ExplainStaffing" - }, - "trustedProducers": { - "items": { - "$ref": "#/$defs/ReviewProducerPolicy" - }, - "type": "array" - } - }, - "required": [ - "project", - "reviewPolicies", - "contextProviders", - "clocks", - "calendars", - "trustedProducers", - "staffing", - "authority" - ], - "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" + "dependencies": { + "$ref": "#/$defs/ReviewPolicyDependencies" }, "dependencyScope": { "type": "string" @@ -1348,41 +1032,6 @@ ], "type": "object" }, - "InitData": { - "additionalProperties": false, - "properties": { - "created": { - "type": "string" - }, - "next": { - "type": "string" - }, - "template": { - "type": "string" - } - }, - "required": [ - "created", - "template", - "next" - ], - "type": "object" - }, - "LifecycleData": { - "additionalProperties": false, - "properties": { - "lifecycles": { - "items": { - "$ref": "#/$defs/LifecycleDescription" - }, - "type": "array" - } - }, - "required": [ - "lifecycles" - ], - "type": "object" - }, "LifecycleDescription": { "additionalProperties": false, "properties": { @@ -1488,51 +1137,6 @@ "pattern": "^[a-z][a-z0-9_-]{0,63}$", "type": "string" }, - "PackageData": { - "additionalProperties": false, - "properties": { - "dryRun": { - "type": [ - "boolean", - "null" - ] - }, - "files": { - "items": { - "type": "string" - }, - "type": [ - "array", - "null" - ] - }, - "output": { - "type": [ - "string", - "null" - ] - }, - "packageDigest": { - "$ref": "#/$defs/Digest" - }, - "revision": { - "type": [ - "string", - "null" - ] - }, - "secretsIncluded": { - "type": [ - "boolean", - "null" - ] - } - }, - "required": [ - "packageDigest" - ], - "type": "object" - }, "PinnedWorkEffect": { "additionalProperties": false, "description": "The pinned-work verdict an activation reaches.", @@ -1554,22 +1158,6 @@ ], "type": "object" }, - "PlanData": { - "additionalProperties": false, - "properties": { - "plan": { - "$ref": "#/$defs/ActivationPlan" - }, - "runtimeConfig": { - "type": "string" - } - }, - "required": [ - "runtimeConfig", - "plan" - ], - "type": "object" - }, "PlanKind": { "description": "Whether an activation is the database's first or follows another.", "enum": [ @@ -1718,111 +1306,6 @@ ], "type": "object" }, - "ProviderAddData": { - "additionalProperties": false, - "properties": { - "actionId": { - "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." - }, - "contextFields": { - "items": { - "type": "string" - }, - "type": "array" - }, - "deployment": { - "items": { - "$ref": "#/$defs/ProviderAddChange" - }, - "type": "array" - }, - "inputsOnlyAlternative": { - "anyOf": [ - { - "$ref": "#/$defs/ProviderAddNotice" - }, - { - "type": "null" - } - ] - }, - "next": { - "type": "string" - }, - "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" - }, - "state": { - "$ref": "#/$defs/ProviderAddState" - } - }, - "required": [ - "project", - "actionId", - "pattern", - "state", - "sourceNamespace", - "policyId", - "authorityId", - "providerId", - "contextFields", - "changes", - "deployment", - "bypassPaths", - "sourceWrites", - "next" - ], - "type": "object" - }, "ProviderAddNotice": { "additionalProperties": false, "properties": { @@ -1847,65 +1330,19 @@ ], "type": "string" }, - "ProviderPairData": { + "QueuePolicy": { "additionalProperties": false, "properties": { - "applied": { - "type": "boolean" - }, - "contract": { - "$ref": "#/$defs/ReviewContextContract" - }, - "description": { - "type": "string" - }, - "next": { - "type": "string" - }, - "providerId": { - "type": "string" - }, - "readerAuthority": { - "$ref": "#/$defs/ReaderAuthority" - }, - "registryRevision": { - "type": "string" + "id": { + "$ref": "#/$defs/LocalId" }, - "taskGrantAuthority": { - "anyOf": [ - { - "$ref": "#/$defs/ReaderAuthority" - }, - { - "type": "null" - } - ] + "label": { + "$ref": "#/$defs/DisplayText" } }, "required": [ - "applied", - "providerId", - "description", - "contract", - "registryRevision", - "readerAuthority", - "next" - ], - "type": "object" - }, - "QueuePolicy": { - "additionalProperties": false, - "properties": { - "id": { - "$ref": "#/$defs/LocalId" - }, - "label": { - "$ref": "#/$defs/DisplayText" - } - }, - "required": [ - "id", - "label" + "id", + "label" ], "type": "object" }, @@ -2548,29 +1985,6 @@ ], "type": "string" }, - "StatusData": { - "additionalProperties": false, - "properties": { - "activation": { - "$ref": "#/$defs/ActivationStatus" - }, - "runtimeConfig": { - "type": "string" - }, - "singleRoleStatement": { - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "runtimeConfig", - "activation", - "singleRoleStatement" - ], - "type": "object" - }, "StrandedWork": { "additionalProperties": false, "properties": { @@ -2962,56 +2376,6 @@ } ] }, - "TestData": { - "additionalProperties": false, - "properties": { - "databaseAccess": { - "type": "boolean" - }, - "fixtures": { - "items": { - "type": "string" - }, - "type": "array" - }, - "networkAccess": { - "type": "boolean" - }, - "productionClosure": { - "type": "boolean" - }, - "proofBoundary": { - "type": "string" - } - }, - "required": [ - "fixtures", - "proofBoundary", - "productionClosure", - "networkAccess", - "databaseAccess" - ], - "type": "object" - }, - "TypesData": { - "additionalProperties": false, - "properties": { - "files": { - "items": { - "type": "string" - }, - "type": "array" - }, - "output": { - "type": "string" - } - }, - "required": [ - "output", - "files" - ], - "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", @@ -3019,10 +2383,6 @@ "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" }, - "UsageData": { - "additionalProperties": false, - "type": "object" - }, "WorkingDays": { "additionalProperties": false, "description": "A number of working days: `after: {workingDays: N}`, and the lead time\ninside `before`.", @@ -3078,10 +2438,7 @@ "status": { "const": "complete" } - }, - "required": [ - "data" - ] + } }, { "properties": { @@ -3106,6 +2463,46 @@ "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", @@ -3115,15 +2512,8 @@ "const": "init", "type": "string" }, - "data": { - "anyOf": [ - { - "$ref": "#/$defs/InitData" - }, - { - "type": "null" - } - ] + "created": { + "type": "string" }, "diagnostics": { "items": { @@ -3135,11 +2525,20 @@ "const": "CaseworkReport", "type": "string" }, + "next": { + "type": "string" + }, "ok": { "type": "boolean" }, "status": { "$ref": "#/$defs/ReportStatus" + }, + "template": { + "type": "string" + }, + "version": { + "type": "string" } }, "required": [ @@ -3148,46 +2547,139 @@ "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" }, - "command": { - "const": "check", - "type": "string" - }, - "data": { + "bregPackage": { "anyOf": [ { - "$ref": "#/$defs/CheckData" + "$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": [ @@ -3196,30 +2688,112 @@ "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" }, - "data": { - "anyOf": [ - { - "$ref": "#/$defs/ExplainData" - }, - { - "type": "null" - } - ] + "contextProviders": { + "items": { + "$ref": "#/$defs/ReviewContextProviderPolicy" + }, + "type": "array" }, "diagnostics": { "items": { @@ -3234,8 +2808,29 @@ "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": [ @@ -3244,14 +2839,67 @@ "status", "apiVersion", "kind", + "version", "diagnostics" ], "type": "object" }, { "additionalProperties": false, - "properties": { - "apiVersion": { + "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" }, @@ -3259,15 +2907,8 @@ "const": "test", "type": "string" }, - "data": { - "anyOf": [ - { - "$ref": "#/$defs/TestData" - }, - { - "type": "null" - } - ] + "databaseAccess": { + "type": "boolean" }, "diagnostics": { "items": { @@ -3275,15 +2916,33 @@ }, "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": [ @@ -3292,12 +2951,47 @@ "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", @@ -3307,22 +3001,18 @@ "const": "types", "type": "string" }, - "data": { - "anyOf": [ - { - "$ref": "#/$defs/TypesData" - }, - { - "type": "null" - } - ] - }, "diagnostics": { "items": { "$ref": "#/$defs/Diagnostic" }, "type": "array" }, + "files": { + "items": { + "type": "string" + }, + "type": "array" + }, "kind": { "const": "CaseworkReport", "type": "string" @@ -3330,8 +3020,14 @@ "ok": { "type": "boolean" }, + "output": { + "type": "string" + }, "status": { "$ref": "#/$defs/ReportStatus" + }, + "version": { + "type": "string" } }, "required": [ @@ -3340,46 +3036,254 @@ "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" }, - "data": { + "contextFields": { + "items": { + "type": "string" + }, + "type": "array" + }, + "deployment": { + "items": { + "$ref": "#/$defs/ProviderAddChange" + }, + "type": "array" + }, + "diagnostics": { + "items": { + "$ref": "#/$defs/Diagnostic" + }, + "type": "array" + }, + "inputsOnlyAlternative": { "anyOf": [ { - "$ref": "#/$defs/ProviderAddData" + "$ref": "#/$defs/ProviderAddNotice" }, { "type": "null" } ] }, - "diagnostics": { - "items": { - "$ref": "#/$defs/Diagnostic" - }, - "type": "array" - }, "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": [ @@ -3388,31 +3292,192 @@ "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" }, - "data": { + "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/ProviderPairData" + "$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" @@ -3423,11 +3488,20 @@ "const": "CaseworkReport", "type": "string" }, + "lifecycles": { + "items": { + "$ref": "#/$defs/LifecycleDescription" + }, + "type": "array" + }, "ok": { "type": "boolean" }, "status": { "$ref": "#/$defs/ReportStatus" + }, + "version": { + "type": "string" } }, "required": [ @@ -3436,37 +3510,96 @@ "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": "lifecycle", + "const": "package", "type": "string" }, - "data": { - "anyOf": [ - { - "$ref": "#/$defs/LifecycleData" - }, - { - "type": "null" - } - ] - }, "diagnostics": { "items": { "$ref": "#/$defs/Diagnostic" }, "type": "array" }, + "dryRun": { + "type": [ + "boolean", + "null" + ] + }, + "files": { + "items": { + "type": "string" + }, + "type": [ + "array", + "null" + ] + }, "kind": { "const": "CaseworkReport", "type": "string" @@ -3474,8 +3607,32 @@ "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": [ @@ -3484,31 +3641,74 @@ "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": "package", + "const": "doctor", "type": "string" }, - "data": { - "anyOf": [ - { - "$ref": "#/$defs/PackageData" - }, - { - "type": "null" - } - ] - }, "diagnostics": { "items": { "$ref": "#/$defs/Diagnostic" @@ -3522,8 +3722,17 @@ "ok": { "type": "boolean" }, + "packageDigest": { + "$ref": "#/$defs/Digest" + }, + "runtimeConfig": { + "type": "string" + }, "status": { "$ref": "#/$defs/ReportStatus" + }, + "version": { + "type": "string" } }, "required": [ @@ -3532,31 +3741,56 @@ "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": "doctor", + "const": "plan", "type": "string" }, - "data": { - "anyOf": [ - { - "$ref": "#/$defs/DoctorData" - }, - { - "type": "null" - } - ] - }, "diagnostics": { "items": { "$ref": "#/$defs/Diagnostic" @@ -3570,8 +3804,17 @@ "ok": { "type": "boolean" }, + "plan": { + "$ref": "#/$defs/ActivationPlan" + }, + "runtimeConfig": { + "type": "string" + }, "status": { "$ref": "#/$defs/ReportStatus" + }, + "version": { + "type": "string" } }, "required": [ @@ -3580,37 +3823,86 @@ "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": "plan", + "const": "apply", "type": "string" }, - "data": { - "anyOf": [ - { - "$ref": "#/$defs/PlanData" - }, - { - "type": "null" - } - ] - }, "diagnostics": { "items": { "$ref": "#/$defs/Diagnostic" }, "type": "array" }, + "effects": { + "$ref": "#/$defs/ActivationEffects" + }, "kind": { "const": "CaseworkReport", "type": "string" @@ -3618,8 +3910,29 @@ "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": [ @@ -3628,31 +3941,65 @@ "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": "apply", + "const": "status", "type": "string" }, - "data": { - "anyOf": [ - { - "$ref": "#/$defs/ApplyData" - }, - { - "type": "null" - } - ] - }, "diagnostics": { "items": { "$ref": "#/$defs/Diagnostic" @@ -3666,8 +4013,20 @@ "ok": { "type": "boolean" }, + "runtimeConfig": { + "type": "string" + }, + "singleRoleStatement": { + "type": [ + "string", + "null" + ] + }, "status": { "$ref": "#/$defs/ReportStatus" + }, + "version": { + "type": "string" } }, "required": [ @@ -3676,36 +4035,174 @@ "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": "status", + "const": "dev", "type": "string" }, - "data": { - "anyOf": [ - { - "$ref": "#/$defs/StatusData" - }, - { - "type": "null" - } + "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" ] }, - "diagnostics": { - "items": { - "$ref": "#/$defs/Diagnostic" - }, - "type": "array" + "journal": { + "type": "string" }, "kind": { "const": "CaseworkReport", @@ -3714,8 +4211,29 @@ "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": [ @@ -3724,37 +4242,83 @@ "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", + "const": "dev-events", "type": "string" }, - "data": { - "anyOf": [ - { - "$ref": "#/$defs/DevData" - }, - { - "type": "null" - } - ] - }, "diagnostics": { "items": { "$ref": "#/$defs/Diagnostic" }, "type": "array" }, + "events": { + "items": { + "type": "string" + }, + "type": "array" + }, + "journal": { + "type": "string" + }, "kind": { "const": "CaseworkReport", "type": "string" @@ -3762,8 +4326,17 @@ "ok": { "type": "boolean" }, + "project": { + "type": "string" + }, "status": { "$ref": "#/$defs/ReportStatus" + }, + "truncated": { + "type": "boolean" + }, + "version": { + "type": "string" } }, "required": [ @@ -3772,37 +4345,59 @@ "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-events", + "const": "dev-token", "type": "string" }, - "data": { - "anyOf": [ - { - "$ref": "#/$defs/DevEventsData" - }, - { - "type": "null" - } - ] - }, "diagnostics": { "items": { "$ref": "#/$defs/Diagnostic" }, "type": "array" }, + "headerFile": { + "type": "string" + }, "kind": { "const": "CaseworkReport", "type": "string" @@ -3812,6 +4407,9 @@ }, "status": { "$ref": "#/$defs/ReportStatus" + }, + "version": { + "type": "string" } }, "required": [ @@ -3820,37 +4418,71 @@ "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-token", + "const": "dev-grant", "type": "string" }, - "data": { - "anyOf": [ - { - "$ref": "#/$defs/DevTokenData" - }, - { - "type": "null" - } - ] - }, "diagnostics": { "items": { "$ref": "#/$defs/Diagnostic" }, "type": "array" }, + "grantExpiresAt": { + "format": "uint64", + "maximum": 18446744073709551615, + "minimum": 0, + "type": "integer" + }, + "headerFile": { + "type": "string" + }, "kind": { "const": "CaseworkReport", "type": "string" @@ -3860,6 +4492,9 @@ }, "status": { "$ref": "#/$defs/ReportStatus" + }, + "version": { + "type": "string" } }, "required": [ @@ -3868,30 +4503,58 @@ "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" }, - "command": { - "const": "dev-grant", + "clientId": { "type": "string" }, - "data": { - "anyOf": [ - { - "$ref": "#/$defs/DevGrantData" - }, - { - "type": "null" - } - ] + "command": { + "const": "dev-identity", + "type": "string" }, "diagnostics": { "items": { @@ -3908,6 +4571,12 @@ }, "status": { "$ref": "#/$defs/ReportStatus" + }, + "subject": { + "type": "string" + }, + "version": { + "type": "string" } }, "required": [ @@ -3916,31 +4585,57 @@ "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": "dev-identity", + "const": "usage", "type": "string" }, - "data": { - "anyOf": [ - { - "$ref": "#/$defs/DevIdentityData" - }, - { - "type": "null" - } - ] - }, "diagnostics": { "items": { "$ref": "#/$defs/Diagnostic" @@ -3956,6 +4651,9 @@ }, "status": { "$ref": "#/$defs/ReportStatus" + }, + "version": { + "type": "string" } }, "required": [ @@ -3964,31 +4662,57 @@ "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": "usage", + "const": "internal", "type": "string" }, - "data": { - "anyOf": [ - { - "$ref": "#/$defs/UsageData" - }, - { - "type": "null" - } - ] - }, "diagnostics": { "items": { "$ref": "#/$defs/Diagnostic" @@ -4004,6 +4728,9 @@ }, "status": { "$ref": "#/$defs/ReportStatus" + }, + "version": { + "type": "string" } }, "required": [ @@ -4012,6 +4739,7 @@ "status", "apiVersion", "kind", + "version", "diagnostics" ], "type": "object" @@ -4026,8 +4754,13 @@ } }, "required": [ + "ok", + "command", + "status", "apiVersion", - "kind" + "kind", + "version", + "diagnostics" ], "title": "Casework command report", "unevaluatedProperties": false diff --git a/public/schemas/casework/report/report.v1alpha2.schema/index.html b/public/schemas/casework/report/report.v1alpha2.schema/index.html index f2bf92907..37a7b7b78 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-256158d1cb317dcc9bbee833684aefff09f215c066ee2f03d61f980088f5c52fc10 - Immutable artifacthttps://id.registrystack.org/artifacts/sha256/158d1cb317dcc9bbee833684aefff09f215c066ee2f03d61f980088f5c52fc10.json + Artifact SHA-2569d026bf36a11bc83493f835f028ff52092e0f6c4cd42b471024ead336b6d8a9e + Immutable artifacthttps://id.registrystack.org/artifacts/sha256/9d026bf36a11bc83493f835f028ff52092e0f6c4cd42b471024ead336b6d8a9e.json diff --git a/public/schemas/casework/runtime/runtime.v1alpha1.schema.json b/public/schemas/casework/runtime/runtime.v1alpha1.schema.json index b22341b3f..7335d8303 100644 --- a/public/schemas/casework/runtime/runtime.v1alpha1.schema.json +++ b/public/schemas/casework/runtime/runtime.v1alpha1.schema.json @@ -117,6 +117,9 @@ "clientIdRef": { "$ref": "#/$defs/SecretReference" }, + "delegatedDisplayExchange": { + "$ref": "#/$defs/DelegatedDisplayExchangeBinding" + }, "resource": { "type": "string" }, @@ -173,6 +176,90 @@ ], "type": "object" }, + "DelegatedDisplayExchangeBinding": { + "additionalProperties": false, + "description": "Dedicated per-call delegation for staff-subject source disclosure. This is\nseparate from the provider's status and task-context service credential.", + "properties": { + "clientAssertionAudience": { + "type": "string" + }, + "clientAssertionKeyRef": { + "$ref": "#/$defs/SecretReference" + }, + "clientIdRef": { + "$ref": "#/$defs/SecretReference" + }, + "generation": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "scopes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "tokenEndpoint": { + "$ref": "#/$defs/Url" + } + }, + "required": [ + "tokenEndpoint", + "clientIdRef", + "clientAssertionKeyRef", + "resource", + "scopes", + "generation" + ], + "type": "object" + }, + "DelegatedStaffReaderConfig": { + "additionalProperties": false, + "description": "One deployment-owned delegation ceiling. The policy id is the containing\nmap key, never a human profile supplied by the HTTP caller.", + "properties": { + "actorSubject": { + "type": "string" + }, + "assertionIssuer": { + "$ref": "#/$defs/Url" + }, + "client": { + "type": "string" + }, + "maximumTokenLifetimeSeconds": { + "format": "uint64", + "maximum": 300, + "minimum": 1, + "type": "integer" + }, + "profile": { + "$ref": "#/$defs/LocalId" + }, + "requiredScope": { + "type": "string" + }, + "sourceProfiles": { + "items": { + "$ref": "#/$defs/LocalId" + }, + "maxItems": 32, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "profile", + "client", + "actorSubject", + "assertionIssuer", + "requiredScope", + "maximumTokenLifetimeSeconds" + ], + "type": "object" + }, "Digest": { "description": "A SHA-256 digest: `sha256:` followed by 64 lowercase hex digits.", "pattern": "^sha256:[0-9a-f]{64}$", @@ -381,6 +468,16 @@ "minLength": 1, "type": "string" }, + "delegatedStaffReaders": { + "additionalProperties": { + "$ref": "#/$defs/DelegatedStaffReaderConfig" + }, + "description": "Explicitly opted-in delegated staff readers, keyed by the policy id a\ndedicated read client sends. Absence disables delegated staff reads.", + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, "humanIdentity": { "$ref": "#/$defs/HumanIdentityConfig" }, @@ -682,6 +779,20 @@ "not": { "pattern": "^secret:env/" } + }, + "delegatedDisplayExchange": { + "properties": { + "clientAssertionKeyRef": { + "not": { + "pattern": "^secret:env/" + } + }, + "clientIdRef": { + "not": { + "pattern": "^secret:env/" + } + } + } } } } @@ -792,6 +903,20 @@ "not": { "pattern": "^secret:file/" } + }, + "delegatedDisplayExchange": { + "properties": { + "clientAssertionKeyRef": { + "not": { + "pattern": "^secret:file/" + } + }, + "clientIdRef": { + "not": { + "pattern": "^secret:file/" + } + } + } } } } diff --git a/public/schemas/casework/runtime/runtime.v1alpha1.schema/index.html b/public/schemas/casework/runtime/runtime.v1alpha1.schema/index.html index f80d6f919..0d0b15d68 100644 --- a/public/schemas/casework/runtime/runtime.v1alpha1.schema/index.html +++ b/public/schemas/casework/runtime/runtime.v1alpha1.schema/index.html @@ -48,8 +48,8 @@

Lifecycle

Statusactive Compatibility linev1alpha1 Ownercasework - Artifact SHA-2566c882b720eddc7f0b3bcdb8d6229fd36bbad82c7f96586c8db99370751af9be0 - Immutable artifacthttps://id.registrystack.org/artifacts/sha256/6c882b720eddc7f0b3bcdb8d6229fd36bbad82c7f96586c8db99370751af9be0.json + Artifact SHA-256ef82e91c0f0c3366bd62967be8453e90920341c246a6d05f56e4b4b4b8eb85b0 + Immutable artifacthttps://id.registrystack.org/artifacts/sha256/ef82e91c0f0c3366bd62967be8453e90920341c246a6d05f56e4b4b4b8eb85b0.json diff --git a/public/schemas/coordinator/project/project.v1alpha1.schema.json b/public/schemas/coordinator/project/project.v1alpha1.schema.json index 97a50591b..13518be36 100644 --- a/public/schemas/coordinator/project/project.v1alpha1.schema.json +++ b/public/schemas/coordinator/project/project.v1alpha1.schema.json @@ -67,6 +67,46 @@ ], "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": { @@ -187,11 +227,11 @@ }, { "additionalProperties": false, - "description": "Builds an object from named references and literals.", + "description": "Builds an object from named references, literals and nested fields.", "properties": { "fields": { "$ref": "#/$defs/Fields", - "description": "Object members built from typed references or literals." + "description": "Object members built from typed references, literals or nested fields." }, "type": { "const": "fields", @@ -204,6 +244,38 @@ ], "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.", @@ -295,10 +367,18 @@ "$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`." }, + "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." + }, "title": { "$ref": "#/$defs/DisplayText", "description": "An optional human title; it changes neither stable identity nor behavior revision." @@ -459,6 +539,10 @@ "$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." + }, "title": { "$ref": "#/$defs/DisplayText", "description": "An optional human title; it changes neither stable identity nor behavior revision." @@ -574,7 +658,8 @@ }, "ContractProduct": { "enum": [ - "breg" + "breg", + "messaging" ], "type": "string" }, @@ -599,9 +684,9 @@ }, "Fields": { "additionalProperties": { - "$ref": "#/$defs/Reference" + "$ref": "#/$defs/Member" }, - "description": "Object members built from one typed reference or literal each.", + "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": [ @@ -650,6 +735,89 @@ "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.", @@ -725,7 +893,14 @@ "casework.submit-review-request/v1", "casework.cancel-review-request/v1", "scheduling.preview-availability/v1", - "external.command/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" }, @@ -748,6 +923,19 @@ ], "type": "object" }, + "RecordReference": { + "additionalProperties": false, + "properties": { + "contract": { + "$ref": "#/$defs/LocalId", + "description": "The local generated BReg record schema import." + } + }, + "required": [ + "contract" + ], + "type": "object" + }, "Reference": { "oneOf": [ { @@ -815,6 +1003,29 @@ "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", diff --git a/public/schemas/coordinator/project/project.v1alpha1.schema/index.html b/public/schemas/coordinator/project/project.v1alpha1.schema/index.html index f3daf36b5..e566b0a99 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-256c95bb112c47134d9ef0bfad1d03be54623be2a6f7ec1f9f2145f98b8622921f0 - Immutable artifacthttps://id.registrystack.org/artifacts/sha256/c95bb112c47134d9ef0bfad1d03be54623be2a6f7ec1f9f2145f98b8622921f0.json + Artifact SHA-256472c4861ab27a301f077784e63cd06891ef4b73813aab1dd802c567daac70d16 + Immutable artifacthttps://id.registrystack.org/artifacts/sha256/472c4861ab27a301f077784e63cd06891ef4b73813aab1dd802c567daac70d16.json diff --git a/public/schemas/coordinator/runtime/runtime.v1alpha1.schema.json b/public/schemas/coordinator/runtime/runtime.v1alpha1.schema.json index ee4035a21..4581027e5 100644 --- a/public/schemas/coordinator/runtime/runtime.v1alpha1.schema.json +++ b/public/schemas/coordinator/runtime/runtime.v1alpha1.schema.json @@ -221,6 +221,20 @@ "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" diff --git a/public/schemas/coordinator/runtime/runtime.v1alpha1.schema/index.html b/public/schemas/coordinator/runtime/runtime.v1alpha1.schema/index.html index 769dbbde5..b3ba841e2 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-25607807301acfb80f24e627e13c244aa19b30ce8f3b1b5d7f7bbd51a93b84f456f - Immutable artifacthttps://id.registrystack.org/artifacts/sha256/07807301acfb80f24e627e13c244aa19b30ce8f3b1b5d7f7bbd51a93b84f456f.json + Artifact SHA-256bbbc49cc6aa19d2b6329db459ac7d5c8635583e2a0ca63f2d75556840a804202 + Immutable artifacthttps://id.registrystack.org/artifacts/sha256/bbbc49cc6aa19d2b6329db459ac7d5c8635583e2a0ca63f2d75556840a804202.json diff --git a/public/schemas/evidence/bundle/bundle.v1.schema.json b/public/schemas/evidence/bundle/bundle.v1.schema.json index 39f244358..ab6ee6f30 100644 --- a/public/schemas/evidence/bundle/bundle.v1.schema.json +++ b/public/schemas/evidence/bundle/bundle.v1.schema.json @@ -15,6 +15,7 @@ required: - rateLimits - signing - selectorProfiles + - sourceConnections - sources - authorityProfiles - requirements @@ -30,6 +31,14 @@ properties: 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 @@ -253,11 +262,11 @@ properties: $ref: '#/$defs/selector-profile' sourceConnections: description: >- - Optional explicit process-local owners of HTTP destination, workload authentication, - TLS trust and aggregate resource limits. Authored connection references are resolved - at build time; startup requires every concrete source value to equal its named owner. - Independent connection names are never deduplicated using secret bytes. + 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' @@ -265,8 +274,8 @@ properties: $ref: '#/$defs/source-connection' sources: description: >- - Complete map of fixed sources a requirement can reference by id in its `acquisition` - field, fixed at startup and immune to override by `runtime.yaml`. + 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 @@ -274,10 +283,8 @@ properties: $ref: '#/$defs/LocalId' additionalProperties: description: >- - One fixed source referenced by this map key from a requirement's `acquisition` field, - combining a transport, the fixed request that transport carries, and a minimization - posture with the extraction script and schemas that turn the source's response into - facts. + 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: >- @@ -295,22 +302,6 @@ properties: 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' - acquisitionCapabilities: - description: >- - Gated acquisition kinds and source-call optimizations this bundle opts in to. The original - Version 1 forms are absent from the vocabulary on purpose, because every bundle already had - them; omission and an explicit empty list both enable nothing. - type: array - maxItems: 2 - uniqueItems: true - items: - description: >- - One gated acquisition kind or source-call optimization this bundle declares, which is - the bundle half of a two-sided gate. A requirement using an absent kind is rejected at - startup; an absent optimization is never selected. - enum: - - search-then-fetch-set - - source-batch maximumHolderBoundBatchSize: description: >- Ceiling on how many assertions one holder-bound release may carry. Omission means one, @@ -383,32 +374,18 @@ allOf: properties: uri: pattern: ^https:// - requirements: - items: - required: - - fixtures - sources: - additionalProperties: - properties: - authentication: - not: - type: object - required: - - type - properties: - type: - const: none sourceConnections: additionalProperties: properties: - authentication: - not: - type: object - required: - - type + endpoints: + items: properties: - type: - const: none + baseUrl: + pattern: '^[Hh][Tt][Tt][Pp][Ss]://' + requirements: + items: + required: + - fixtures - if: properties: assuranceProfile: @@ -430,29 +407,11 @@ allOf: providerId: type: string pattern: ^https://(?:[A-Za-z0-9.-]+|\[[0-9A-Fa-f:]+\])(?::[1-9][0-9]{0,4})?$ - - if: - properties: - requirements: - contains: - required: - - acquisition - properties: - acquisition: - required: - - type - properties: - type: - const: search-then-fetch-set - required: - - requirements - then: - required: - - acquisitionCapabilities - properties: - acquisitionCapabilities: - contains: - const: search-then-fetch-set $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 @@ -511,29 +470,13 @@ $defs: 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: ^(adapters|derivations|schemas|codelists|fixtures)/[A-Za-z0-9._/-]+$ - statement-path: - type: string - pattern: ^queries/[A-Za-z0-9._/-]+\.sql$ + 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$ service-key-id: type: string pattern: ^[A-Za-z0-9_-]{42}[AEIMQUYcgkosw048]$ - # A public ES256 P-256 key with exactly these members. The strict verifier - # additionally requires kid to be the key's own RFC 7638 thumbprint. - trusted-service-jwk: - type: object - additionalProperties: false - required: [alg, crv, kid, kty, x, y] - properties: - alg: {const: ES256} - crv: {const: P-256} - kid: {$ref: '#/$defs/service-key-id'} - kty: {const: EC} - x: {type: string, pattern: '^[A-Za-z0-9_-]{43}$'} - y: {type: string, pattern: '^[A-Za-z0-9_-]{43}$'} authentication: type: object additionalProperties: false @@ -992,1421 +935,143 @@ $defs: maximumBytes: type: integer minimum: 1 - maximum: 8192 - source: - oneOf: - - $ref: '#/$defs/http-json-source' - - $ref: '#/$defs/sqlite-extract-source' - source-connection: - type: object - additionalProperties: false - required: [baseUrl, authentication] - properties: - baseUrl: - description: >- - Fixed source origin the runtime constrains exactly as it constrains an inline HTTP - source: a canonical host, no user information, path, query or fragment, and a port - inside the range a port can hold. When `authentication.type` is `none` the origin - narrows further, to one exact numeric-loopback HTTP spelling carrying an explicit - in-range port. - $ref: '#/$defs/Url' - oneOf: - - type: string - pattern: >- - ^https://(?:[A-Za-z0-9.-]+|\[[0-9A-Fa-f:]+\])(?::(?:[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]))?$ - - type: string - 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]))?$ - authentication: - description: Complete existing source authentication union, including both OAuth audiences. - $ref: '#/$defs/source-authentication' - tlsTrustProfile: - description: >- - Logical additive private-CA profile bound by the runtime document. It is rejected - outright when `authentication.type` is `none`. - $ref: '#/$defs/local-id' - maximumConcurrency: - description: Aggregate occupied source calls for this explicit connection in one process. - type: integer - minimum: 1 - maximum: 256 - default: 4 - admissionTimeoutMilliseconds: - description: Maximum bounded wait for aggregate admission or OAuth single-flight refresh. - type: integer - minimum: 1 - maximum: 30000 - default: 5000 - tokenTimeoutMilliseconds: - description: Maximum total duration of one OAuth token request and response body. - type: integer - minimum: 1 - maximum: 30000 - default: 5000 - allOf: - - if: - required: - - authentication - properties: - authentication: - type: object - required: - - type - properties: - type: - const: none - then: - properties: - baseUrl: - type: string - 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])$ - not: - required: - - tlsTrustProfile - http-json-source: - type: object - additionalProperties: false - required: - - type - - baseUrl - - posture - - authentication - - request - - responseSchema - - extractScript - - factSchema - properties: - type: - description: >- - Selects the HTTP-plus-JSON transport, which reaches a fixed HTTPS origin over the - network under one request and response contract for method, media type, and body - shape. The tag chooses the shape of the whole source, so a key belonging to another - transport is an unknown key here rather than an ignored one. - const: http-json - connection: - description: >- - Optional explicit sourceConnections owner. Startup rejects differing resolved - baseUrl, authentication, tlsTrustProfile or request.maximumConcurrency values. - $ref: '#/$defs/local-id' - behaviorRevision: - description: >- - Optional digest of the provider's selected read behavior. It is a reached source - dependency; unrelated export provenance stays outside requirement revisions. - type: string - pattern: '^sha256:[0-9a-f]{64}$' - evidence: - description: >- - Optional signed Evidence protocol on the existing HTTP source channel. The - governed contract pins one audience-scoped definition and independently accepted - public keys. Rust generates the request nonce, verifies the complete signed - answer, and exposes only a values object keyed by the declared concept handles. - Requires a fixed POST path ending in /v1/evidence, a required JSON body, forbidden - query, no Accept override, no batch or unresolvedProblem declaration, no - forwardAccessAttribution, and request-origin selectors only. - $ref: '#/$defs/evidence-source' - forwardAccessAttribution: - description: >- - Opts this HTTP source into host-owned forwarding of the verified access requester - and request purpose. The Gateway sends bounded base64url-encoded values in the - reserved Registry-Access-Requester and Registry-Access-Purpose headers only after - authentication, authorization, and selector resolution. Omission is false. - type: boolean - baseUrl: - description: >- - Fixed HTTPS origin the source's evidence-data requests target, with no path, query, - fragment, user information, or runtime substitution. An HTTP numeric-loopback origin - is accepted only when `sources.*.authentication.type` is `none`. - $ref: '#/$defs/Url' - oneOf: - - type: string - pattern: ^https://[^/?#]+$ - - type: string - pattern: ^http://(127(\.[0-9]{1,3}){3}|\[::1\])(:[0-9]{1,5})?$ - posture: - description: >- - Describes how much of the underlying record crosses the source wire, weakest at - `record-transformed` and strongest at `source-derived`. A chained search-then-fetch - requirement can claim no stronger minimization than the weaker of its two sources' - postures. - enum: - - source-derived - - field-projected - - record-transformed - unresolvedProblem: - description: >- - Optional exact source-neutral Problem Details tuple which declares one HTTP 404 - response as an explicit unresolved lookup outcome. The runtime accepts it only with - exactly one application/problem+json Content-Type and an exact duplicate-free - six-member Problem Details object whose status, type, and code equal this tuple. - Omission preserves the ordinary rule that every HTTP 404 is a dependency failure. - This outcome is unavailable for an optimized physical source batch because one - response cannot identify the unresolved logical item. - type: object - additionalProperties: false - required: [status, type, code] - properties: - status: {const: 404} - type: - type: string - format: uri - maxLength: 512 - pattern: ^https:// - code: - type: string - minLength: 1 - maxLength: 64 - pattern: ^[a-z][a-z0-9._-]{0,63}$ - tlsTrustProfile: - description: >- - Logical name resolved to an exact private certificate authority file bound in `runtime.yaml`. - Omission trusts only configured system roots, and the profile is rejected outright - when `sources.*.authentication.type` is `none`. - $ref: '#/$defs/local-id' - authentication: - description: >- - One closed credential profile the runtime presents on this source's outbound calls, - distinct from the inbound caller policy at the bundle's top-level `authentication`. - Reference members name secrets that resolve only after authorization, durable access - audit, and request-parts validation, and no secret reaches a script. - $ref: '#/$defs/source-authentication' - request: - description: >- - The one fixed evidence-data request plan for this source; a preparation script, - a caller, and a source response hold no authority over method, path, headers, redirects, - bounds, or request count. - $ref: '#/$defs/fixed-request' - responseSchema: - description: >- - Bundle-relative closed JSON Schema the projected source response must satisfy before - `sources.*.extractScript` runs; a response outside this shape fails as a source-protocol - error and no script runs. Unlike `sources.*.factSchema`, this schema may require - fewer members than it declares and may mark a leaf nullable, because projection - can legitimately drop or null a value the record did not carry. - $ref: '#/$defs/relative-path' - extractScript: - description: >- - Bundle-relative Rhai script whose two-parameter `extract` function maps the schema-validated - projected response and adapter context to a match, no-match, or ambiguous outcome. - The script never selects a candidate among multiple records and never turns protocol - inconsistency into a closed lookup outcome. - $ref: '#/$defs/relative-path' - factSchema: - description: >- - Bundle-relative closed JSON Schema the extraction script's output `facts` must exactly - satisfy on a match outcome. Unlike `sources.*.responseSchema`, this schema validates - what the script returns, not what the source sent. - $ref: '#/$defs/relative-path' - batch: - description: >- - Optional reviewed one-call optimization for the public multi-subject request batch. - It is eligible only for a `single` acquisition using this HTTP source's fixed `path`, - when the complete item set fits `maximumItems`, and when both bundle and runtime name - `source-batch` under `acquisitionCapabilities`. Omission selects ordinary sequential - execution. The block cannot change source, method, origin, path, authentication, - headers, TLS, redirect, timeout, response-byte, concurrency, or preparation-limit - authority. - $ref: '#/$defs/http-json-batch' - allOf: - - if: - required: - - authentication - properties: - authentication: - type: object - required: - - type - properties: - type: - const: none - then: - properties: - baseUrl: - type: string - 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])$ - not: - required: - - tlsTrustProfile - - if: - required: - - batch - then: - not: - required: - - unresolvedProblem - properties: - request: - not: - required: - - pathBindings - - if: - required: [evidence] - then: - not: - anyOf: - - required: [batch] - - required: [unresolvedProblem] - properties: - forwardAccessAttribution: {const: false} - authentication: - properties: - type: {not: {const: none}} - request: - required: [path] - properties: - method: {const: POST} - path: {pattern: '/v1/evidence$'} - preparationLimits: - properties: - query: {const: forbidden} - jsonBody: {const: required} - fixedHeaders: - items: - properties: - name: - not: - pattern: '^[Aa][Cc][Cc][Ee][Pp][Tt]$' - evidence-source: - type: object - additionalProperties: false - required: [contract, trustedJwks, maximumAssertionLifetimeSeconds] - properties: - contract: - description: >- - One independently reviewed registry.evidence-definitions/v1 document containing - exactly one audience-scoped definition with signed-jws support. Its complete - nested shape, unknown-member refusal, identifiers, selector bounds and output - contracts are validated by the canonical Evidence definitions validator. - type: object - additionalProperties: false - required: [schema, assuranceProfile, audience, issuedBy, providedBy, definitions] - properties: - schema: {const: registry.evidence-definitions/v1} - assuranceProfile: {enum: [local, production, evidence-grade]} - audience: {type: string, format: uri, maxLength: 512} - issuedBy: {type: string, format: uri, maxLength: 512} - providedBy: {type: string, format: uri, maxLength: 512} - maximumHolderBoundBatchSize: {type: integer, minimum: 1, maximum: 16} - definitions: - type: array - minItems: 1 - maxItems: 1 - items: - $ref: '#/$defs/evidence-source-definition' - trustedJwks: - description: >- - Public keys explicitly accepted before deployment, in a JWKS object. The strict - verifier checks their shape and key identifiers. Neither a response nor a live - discovery endpoint may replace these keys. Private key members are refused. - type: object - additionalProperties: false - required: [keys] - properties: - keys: {type: array, minItems: 1, maxItems: 33, items: {$ref: '#/$defs/trusted-service-jwk'}} - revokedKeyIds: - type: array - uniqueItems: true - maxItems: 33 - items: {$ref: '#/$defs/service-key-id'} - maximumAssertionLifetimeSeconds: {type: integer, minimum: 1, maximum: 31536000} - clockSkewSeconds: {type: integer, minimum: 0, maximum: 300, default: 0} - # The signed source uses the public definitions grammar, narrowed to the - # audience-scoped signed-JWS form. Runtime validation additionally closes - # inter-field relationships before any request is prepared. - evidence-source-definition: - type: object - additionalProperties: false - required: - - handle - - requirement - - configurationRevision - - kind - - evidenceType - - purpose - - responseFormats - - referenceFrameworks - - subjects - - concepts - properties: - handle: {type: string, pattern: '^[a-z][a-z0-9._-]{0,127}$'} - requirement: {type: string, format: uri, maxLength: 512} - configurationRevision: - description: >- - The revision an assertion for this requirement carries. It covers this - requirement's own configuration and artifact closure, so a relying - party pins one requirement without depending on the rest of the - deployment. - type: string - pattern: '^sha256:[a-f0-9]{64}$' - kind: {enum: [criterion, information-requirement, constraint]} - subjectBindingMode: - description: >- - What the subject bindings in this requirement's assertions are derived - under. The vocabulary is closed and carries no default: absence means - audience-scoped, stated here so a relying party reading a definition - without the key knows the requirement issues audience-scoped - assertions and is not reading an omission it has to resolve elsewhere. - A definition that does carry the key states the mode explicitly. - const: audience-scoped - evidenceType: {type: string, format: uri, maxLength: 512} - purpose: {type: string, pattern: '^[a-z][a-z0-9._:-]{0,127}$'} - responseFormats: - type: array - minItems: 1 - maxItems: 4 - uniqueItems: true - items: {enum: [signed-jws, unsigned-json, sd-jwt-vc]} - contains: {const: signed-jws} - referenceFrameworks: - type: array - minItems: 1 - maxItems: 16 - uniqueItems: true - items: {type: string, format: uri, maxLength: 512} - subjects: - type: array - minItems: 1 - maxItems: 8 - uniqueItems: true - items: {$ref: '#/$defs/evidence-source-subject'} - concepts: - type: array - minItems: 1 - maxItems: 16 - uniqueItems: true - items: {$ref: '#/$defs/evidence-source-concept'} - evidence-source-subject: - type: object - additionalProperties: false - required: [role, cardinality, selector] - properties: - role: {type: string, pattern: '^[a-z][a-z0-9._-]{0,63}$'} - cardinality: {const: one} - selector: {$ref: '#/$defs/evidence-source-selector'} - evidence-source-selector: - type: object - additionalProperties: false - required: [profile, valueOrigin, fields] - properties: - profile: {type: string, pattern: '^[a-z][a-z0-9._-]{0,127}$'} - valueOrigin: - description: >- - Only request-origin selectors are accepted. The upstream authenticates this - service's own source credential, so it would resolve an authenticated-context or - authenticated-grant selector from that credential rather than from the - downstream caller's subject. - const: request - fields: - type: array - minItems: 1 - maxItems: 16 - uniqueItems: true - items: {$ref: '#/$defs/evidence-source-selector-field'} - evidence-source-selector-field: - oneOf: - - type: object - additionalProperties: false - required: [type, name, minimumBytes, maximumBytes] - properties: - type: {const: string} - name: {type: string, pattern: '^[a-z][a-z0-9._-]{0,63}$'} - minimumBytes: {type: integer, minimum: 1, maximum: 8192} - maximumBytes: {type: integer, minimum: 1, maximum: 8192} - - type: object - additionalProperties: false - required: [type, name] - properties: - type: {const: date} - name: {type: string, pattern: '^[a-z][a-z0-9._-]{0,63}$'} - - type: object - additionalProperties: false - required: [type, name] - properties: - type: {const: uuid} - name: {type: string, pattern: '^[a-z][a-z0-9._-]{0,63}$'} - - type: object - additionalProperties: false - required: [type, name, minimum, maximum] - properties: - type: {const: integer} - name: {type: string, pattern: '^[a-z][a-z0-9._-]{0,63}$'} - minimum: - {type: integer, minimum: -9007199254740991, maximum: 9007199254740991} - maximum: - {type: integer, minimum: -9007199254740991, maximum: 9007199254740991} - - type: object - additionalProperties: false - required: [type, name] - properties: - type: {const: boolean} - name: {type: string, pattern: '^[a-z][a-z0-9._-]{0,63}$'} - - type: object - additionalProperties: false - required: [type, name, scheme, version, maximumBytes] - properties: - type: {const: controlled-code} - name: {type: string, pattern: '^[a-z][a-z0-9._-]{0,63}$'} - scheme: {type: string, format: uri, maxLength: 512} - version: {type: string, minLength: 1, maxLength: 128} - maximumBytes: {type: integer, minimum: 1, maximum: 8192} - evidence-source-concept: - 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: - 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} - sqlite-extract-source: - type: object - additionalProperties: false - required: - - type - - posture - - extractProfile - - request - - maximumExtractAgeSeconds - - responseSchema - - extractScript - - factSchema - properties: - type: - description: >- - Selects the statement transport, which runs one reviewed SQL statement against a - read-only SQLite extract file mounted beside the process. There is no origin, no - credential, and no network hop, so the keys the HTTP transport needs for those are - unknown keys here rather than ignored ones. - const: sqlite-extract - posture: - description: >- - Describes how much of the underlying record crosses the source boundary, weakest at - `record-transformed` and strongest at `source-derived`. A statement that aggregates - in SQL claims `source-derived` honestly, because only the aggregate leaves the - statement. - enum: - - source-derived - - field-projected - - record-transformed - extractProfile: - description: >- - Logical name resolved to an exact extract file bound in `runtime.yaml` under - `sourceExtracts`. The bundle never names a filesystem location, and startup refuses - a profile no runtime binds as well as a bound profile no source reads. - $ref: '#/$defs/local-id' - request: - description: >- - The one fixed statement plan for this source; a preparation script, a caller, and - the extract itself hold no authority over the statement text, the declared columns, - the parameters, or the bounds. - $ref: '#/$defs/statement-request' - maximumExtractAgeSeconds: - description: >- - Bounds how far the extract's published instant may lag the evaluation instant before - the request fails as stale. Staleness tolerance belongs to the bundle because it is a - property of the concept being asserted rather than of the deployment, and the runtime - reads the published instant from the extract's reserved metadata table, never from - the file's modification time. - type: integer - minimum: 1 - maximum: 2592000 - responseSchema: - description: >- - Bundle-relative closed JSON Schema the projected statement result must satisfy before - `sources.*.extractScript` runs; a result outside this shape fails as a source-protocol - error and no script runs. Unlike `sources.*.factSchema`, this schema may require - fewer members than it declares and may mark a leaf nullable, because a declared column - may legitimately be null in the extract. - $ref: '#/$defs/relative-path' - extractScript: - description: >- - Bundle-relative Rhai script whose two-parameter `extract` function maps the schema-validated - projected result and adapter context to a match, no-match, or ambiguous outcome. - The script never selects a candidate among multiple rows and never turns protocol - inconsistency into a closed lookup outcome. - $ref: '#/$defs/relative-path' - factSchema: - description: >- - Bundle-relative closed JSON Schema the extraction script's output `facts` must exactly - satisfy on a match outcome. Unlike `sources.*.responseSchema`, this schema validates - what the script returns, not what the statement returned. - $ref: '#/$defs/relative-path' - source-authentication: - oneOf: - - type: object - additionalProperties: false - required: - - type - properties: - type: - description: >- - Selects which credential the runtime presents to this source and closes the - member set to that profile. `none` sends no credential and is admitted only - by a `local` assurance bundle at a canonical numeric-loopback origin; production - and evidence-grade bundles reject that kind. - const: none - - type: object - additionalProperties: false - required: - - type - - usernameRef - - passwordRef - properties: - type: - const: basic - usernameRef: - description: >- - Logical file-secret reference for the user name half of the HTTP Basic credential - the runtime presents to this source. - $ref: '#/$defs/SecretReference' - passwordRef: - description: >- - Logical file-secret reference for the password half of the HTTP Basic credential - the runtime encodes into the Authorization header of every request to this source. - $ref: '#/$defs/SecretReference' - - type: object - additionalProperties: false - required: - - type - - tokenRef - properties: - type: - const: static-authorization - tokenRef: - description: >- - Logical file-secret reference for the static token the runtime places in the - Authorization header of every request to this source. - $ref: '#/$defs/SecretReference' - scheme: - description: >- - Authentication scheme the token is presented under; absent, the runtime sends - `Bearer`. RFC 9110 section 11.1 makes the scheme an HTTP token chosen by the - origin, and `static-api-key` cannot serve a source that wants another one because - it refuses the Authorization header by name. - type: string - minLength: 1 - maxLength: 32 - pattern: ^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$ - - type: object - additionalProperties: false - required: - - type - - headerName - - valueRef - properties: - type: - const: static-api-key - headerName: - description: >- - Names the header carrying this source's API-key value. The name is validated - as an HTTP field name and rejected when it collides with authentication, routing, - framing, cookie, forwarding, proxy, tracing, or hop-by-hop headers. - $ref: '#/$defs/configurable-header-name' - valueRef: - description: >- - Logical file-secret reference for the API-key value the runtime places in `headerName`; - the resolved value is bounded and rejects control characters, CR, and LF. - $ref: '#/$defs/SecretReference' - - type: object - description: >- - Client-credentials grant with shared-secret client authentication. The secret - names the credential and `credentialPlacement` names the channel it travels in, - so both are required. There is no assertion, so there is no assertion audience - to name. - additionalProperties: false - required: - - type - - tokenEndpoint - - clientIdRef - - clientSecretRef - - credentialPlacement - - maximumCacheSeconds - properties: - type: - const: oauth2-client-credentials - tokenEndpoint: - description: >- - Fixed endpoint the runtime exchanges client credentials at before calling this - source; the exchange is credential bootstrap, never an evidence-data request - or a fact source. - oneOf: - - type: string - pattern: ^https://[^?#]+$ - - type: string - pattern: ^http://(127(\.[0-9]{1,3}){3}|\[::1\])(:[0-9]{1,5})?/[^?#]*$ - clientIdRef: - description: >- - Logical file-secret reference for the client identifier the runtime presents - in the client-credentials exchange at `tokenEndpoint`. - $ref: '#/$defs/SecretReference' - clientSecretRef: - description: >- - Logical file-secret reference for the client secret the runtime presents at - `tokenEndpoint`; the token URL, body, response, and debug output stay redacted, - so the resolved value reaches no log. `credentialPlacement` names the channel - it travels in. - $ref: '#/$defs/SecretReference' - scope: - description: >- - Fixed scope requested in the client-credentials exchange; a token response reporting - a scope other than this one is a credential failure. - type: string - minLength: 1 - maxLength: 512 - audience: - description: >- - Fixed `audience` form parameter sent with the token request, for an authorization - server that keys the issued token to an audience the scope cannot express and - returns an unusable token without it. Sent as it stands with no fallback, so a - blank value is refused here rather than by the authorization server at readiness. - type: string - minLength: 1 - maxLength: 512 - pattern: \S - resource: - description: >- - Optional RFC 8707 resource indicator sent as a token-request form parameter. - It is one governed absolute URI without a fragment or user information and - is transmitted exactly as configured. It names the intended resource server; - it does not retarget the token endpoint or replace the separate audience - parameter or signed client assertion audience. - type: string - format: uri - minLength: 3 - maxLength: 512 - pattern: '^[A-Za-z][A-Za-z0-9+.-]*:[A-Za-z0-9._~:/?\[\]@!$&''()*+,;=%-]+$' - not: - anyOf: - - pattern: '^[A-Za-z][A-Za-z0-9+.-]*://[^/?#]*@' - - pattern: '%($|[^0-9A-Fa-f]|[0-9A-Fa-f]($|[^0-9A-Fa-f]))' - credentialPlacement: - description: >- - Selects whether the client identifier and secret travel in the Authorization - header or the form body of the token request; Version 1 offers no query-string - placement, so neither value can reach an authorization-server, proxy, or ingress - URL log. - enum: - - basic-header - - form-body - maximumCacheSeconds: - description: >- - Bounds how long one acquired token is reused across evidence requests for this - source; the cache lifetime is the smaller of this bound and the provider's reported - expiry. - type: integer - minimum: 0 - maximum: 86400 - assumedLifetimeSeconds: - description: >- - Lifetime credited to an acquired token whose response omits `expires_in`, rather - than inferring one from the token. Without this key such a response is a credential - failure, and the cached lifetime is still clamped to `maximumCacheSeconds`. - type: integer - minimum: 1 - maximum: 86400 - - type: object - description: >- - Client-credentials grant with assertion client authentication. The signing key - is the whole credential, so a shared secret and a placement for one have - nothing to describe. - additionalProperties: false - required: - - type - - tokenEndpoint - - clientIdRef - - clientAssertionKeyRef - - maximumCacheSeconds - properties: - type: - const: oauth2-private-key-jwt - tokenEndpoint: - description: >- - Fixed endpoint the runtime exchanges client credentials at before calling this - source; the exchange is credential bootstrap, never an evidence-data request - or a fact source. - oneOf: - - type: string - pattern: ^https://[^?#]+$ - - type: string - pattern: ^http://(127(\.[0-9]{1,3}){3}|\[::1\])(:[0-9]{1,5})?/[^?#]*$ - clientIdRef: - description: >- - Logical file-secret reference for the client identifier the runtime presents - in the client-credentials exchange at `tokenEndpoint`. - $ref: '#/$defs/SecretReference' - clientAssertionKeyRef: - description: >- - Logical file-secret reference for the private JWK the runtime signs an RFC 7523 - section 2.2 client assertion with, which is the client authentication SMART on - FHIR Backend Services requires. The assertion is audienced to - `clientAssertionAudience`, or to `tokenEndpoint` when the bundle names none, - and lives 60 seconds and always travels in the form body; no private key - leaves the process. - $ref: '#/$defs/SecretReference' - clientAssertionAudience: - description: >- - Fixed `aud` claim of the signed client assertion, for an authorization server - that expects an identifier it is not reached at, such as its issuer or a host - in front of a proxy. Defaults to `tokenEndpoint`. RFC 7523 section 3 has the - server compare this by Simple - String Comparison, so it is an opaque identifier rather than a URL and is signed - byte for byte. It names who may accept the assertion, never where it is sent. - A blank value is refused here rather than at the first token request, where - signing rejects a whitespace-only audience as empty. - type: string - minLength: 1 - maxLength: 512 - pattern: \S - scope: - description: >- - Fixed scope requested in the client-credentials exchange; a token response reporting - a scope other than this one is a credential failure. - type: string - minLength: 1 - maxLength: 512 - audience: - description: >- - Fixed `audience` form parameter sent with the token request, for an authorization - server that keys the issued token to an audience the scope cannot express and - returns an unusable token without it. Sent as it stands with no fallback, so a - blank value is refused here rather than by the authorization server at readiness. - type: string - minLength: 1 - maxLength: 512 - pattern: \S - resource: - description: >- - Optional RFC 8707 resource indicator sent as a token-request form parameter. - It is one governed absolute URI without a fragment or user information and - is transmitted exactly as configured. It names the intended resource server; - it does not retarget the token endpoint or replace the separate audience - parameter or signed client assertion audience. - type: string - format: uri - minLength: 3 - maxLength: 512 - pattern: '^[A-Za-z][A-Za-z0-9+.-]*:[A-Za-z0-9._~:/?\[\]@!$&''()*+,;=%-]+$' - not: - anyOf: - - pattern: '^[A-Za-z][A-Za-z0-9+.-]*://[^/?#]*@' - - pattern: '%($|[^0-9A-Fa-f]|[0-9A-Fa-f]($|[^0-9A-Fa-f]))' - maximumCacheSeconds: - description: >- - Bounds how long one acquired token is reused across evidence requests for this - source; the cache lifetime is the smaller of this bound and the provider's reported - expiry. - type: integer - minimum: 0 - maximum: 86400 - assumedLifetimeSeconds: - description: >- - Lifetime credited to an acquired token whose response omits `expires_in`, rather - than inferring one from the token. Without this key such a response is a credential - failure, and the cached lifetime is still clamped to `maximumCacheSeconds`. - type: integer - minimum: 1 - maximum: 86400 - http-json-batch: - type: object - additionalProperties: false - required: - - maximumItems - - prepareScript - - extractScript - - responseSchema - - projection - properties: - maximumItems: - description: >- - Largest complete logical request batch this source accepts in one physical call. A - larger outer batch uses sequential execution from the start and is never split into - optimized sub-batches. - type: integer - minimum: 1 - maximum: 16 - prepareScript: - description: >- - Bundle-relative Rhai script implementing `prepare_batch/2` over ordered opaque slots - and minimized selectors. Its RequestParts output is checked under the ordinary - source request's preparationLimits before credentials are resolved. - $ref: '#/$defs/relative-path' - extractScript: - description: >- - Bundle-relative Rhai script implementing `extract_batch/2` over the projected, - schema-validated response. Rust requires one closed lookup result for every opaque - slot and rejects missing, duplicated, extra, negative, or out-of-range slots. - $ref: '#/$defs/relative-path' - responseSchema: - description: >- - Bundle-relative closed JSON Schema the batch projection must satisfy before - `extract_batch/2` runs. It governs only the optional optimized response and does not - replace the ordinary source responseSchema used by sequential execution. - $ref: '#/$defs/relative-path' - projection: - description: >- - Allowlist of response leaves Rust retains for optimized batch extraction under the - same extended JSON Pointer and projected-input bounds as ordinary extraction. - type: array - minItems: 1 - maxItems: 64 - uniqueItems: true - items: - type: string - minLength: 2 - maxLength: 256 - pattern: ^/(?!/)([^/~]|~[01]|/|\*)+$ - fixed-request: - type: object - additionalProperties: false - required: - - method - - path - - selectorInputs - - prepareScript - - adapterParameters - - adapterParametersSchema - - preparationLimits - - projection - - redirects - - attemptTimeoutMilliseconds - - maximumResponseBytes - - maximumConcurrency - properties: - method: - description: >- - Fixes the HTTP method for every request to this source; a `GET` source must also - set `preparationLimits.jsonBody` to `forbidden`. - enum: - - GET - - POST - path: - description: >- - Fixed normalized absolute path used for every request to this source: a literal, or - a template whose placeholders each occupy one complete segment and are expanded by - Rust. A path carrying a scheme, authority, query, fragment, empty segment, or dot - segment fails startup. - type: string - minLength: 2 - maxLength: 2048 - pattern: ^/(?!/)[A-Za-z0-9._~!$&'()*+,;=:@%/{\}-]*$ - pathBindings: - description: >- - Supplies each `path` placeholder with a Rust-resolved value, and a script chooses - neither a binding origin nor a path value. Required exactly when `path` names a - placeholder. - type: object - minProperties: 1 - maxProperties: 16 - propertyNames: - $ref: '#/$defs/LocalId' - additionalProperties: - description: >- - One placeholder's tagged binding, filling exactly one complete path segment from - a value Rust has already validated. - $ref: '#/$defs/path-binding' - fixedHeaders: - description: >- - Ordered non-secret header constants sent on every request to this source; a script - cannot add, remove, or change a header. - type: array - maxItems: 32 - items: - description: >- - One constant name and value pair added to every request to this source, in the - order declared. - type: object - additionalProperties: false - required: - - name - - value - properties: - name: - description: >- - Header field name, rejected at startup when it falls in the authentication, - host and routing, cookie, body framing, content length or type, connection, - forwarding, proxy, or tracing families Rust owns. - $ref: '#/$defs/configurable-header-name' - value: - description: >- - Constant value sent verbatim, with any control character rejected at startup, - which closes header injection through configuration. - type: string - maxLength: 4096 - pattern: ^[^\u0000-\u001F\u007F-\u009F]*$ - selectorInputs: - description: >- - Closes the minimized authorized selector alternatives a preparation script can see; - an empty array is accepted only on a fetch source. - type: array - minItems: 0 - maxItems: 8 - items: - description: >- - One subject role together with the alternative profiles and exact field sets a - preparation script may receive for that role. - $ref: '#/$defs/selector-input' - prepareScript: - description: >- - Bundle-relative Rhai script implementing `prepare/2`, the only step that turns the - minimized authorized selectors, closed parameters, and any prior facts into ordered - query pairs and at most one JSON body. - $ref: '#/$defs/relative-path' - adapterParameters: - description: >- - Closed non-secret constants supplied to both the preparation and the extraction - script, rejected at bundle load when they fall outside `adapterParametersSchema`. - type: object - maxProperties: 64 - propertyNames: - allOf: - - $ref: '#/$defs/ExternalId' - - $ref: '#/$defs/parameter-key' - additionalProperties: - description: >- - One constant read by both the preparation and the extraction script, which may - itself nest further parameter values. - $ref: '#/$defs/adapter-parameter-value' - adapterParametersSchema: - description: >- - Bundle-relative closed JSON Schema for the parameter set, whose required-equals-properties - rule turns an undeclared or missing parameter into a startup failure. - $ref: '#/$defs/relative-path' - preparationLimits: - description: >- - Channel policy and output bounds Rust applies to the request parts a preparation - script returns, all checked before credentials are resolved or the source is contacted. - $ref: '#/$defs/preparation-limits' - projection: - description: >- - Allowlist of response leaves Rust retains, alongside the containers needed to reach - them, so an extraction script never observes a field the source returned but the - bundle did not select. - type: array - minItems: 1 - maxItems: 64 - uniqueItems: true - items: - description: >- - One extended JSON Pointer whose `*` segment visits every element of the current - array, with no numeric index, recursive descent, filter, predicate, union, or - script-computed path admitted. - type: string - minLength: 2 - maxLength: 256 - pattern: ^/(?!/)([^/~]|~[01]|/|\*)+$ - redirects: - description: >- - Refuses to follow a redirect, so a source response cannot move the request to a - different origin; a redirect is classed as a transport failure. - const: deny - attemptTimeoutMilliseconds: - description: >- - Bounds each phase of one attempt at this source separately, carrying its whole value - into every one: concurrency admission, any wait on the token single-flight boundary, - and the HTTP exchange. It is not one deadline across the attempt, so an attempt that - waits at one phase and then runs the next spends the bound again, and its worst-case - wall clock is a multiple of this value rather than this value. - type: integer - minimum: 1 - maximum: 30000 - maximumResponseBytes: - description: >- - Caps the response body read from this source before parsing and projection, so an - oversized response fails as a transport failure rather than being parsed. - type: integer - minimum: 1 - maximum: 1048576 - maximumConcurrency: - description: >- - Bounds how many evaluations may hold an outbound request to this source at once, - and waiting for that admission is bounded by `attemptTimeoutMilliseconds`. - type: integer - minimum: 1 - maximum: 256 - allOf: - - if: - required: - - path - properties: - path: - pattern: '[{}]' - then: - required: - - pathBindings - else: - not: - required: - - pathBindings - - if: - required: - - method - properties: - method: - const: GET - then: - properties: - preparationLimits: - properties: - jsonBody: - const: forbidden - statement-request: + maximum: 8192 + source: type: object additionalProperties: false - required: - - statement - - columns - - selectorInputs - - projection - - maximumRows - - maximumCellBytes - - maximumStatementSteps - - attemptTimeoutMilliseconds - - maximumResponseBytes - - maximumConcurrency + required: [pack, route, connection, posture, factSchema] properties: - statement: - description: >- - Bundle-relative SQL file holding exactly one statement, hash-identified like every - other bundle artifact and reviewed with the bundle. A second statement in the file - fails the request, and the statement text is fixed: no caller, script, or extract - contributes to it. - $ref: '#/$defs/statement-path' - columns: - description: >- - Closes the result shape by naming every column the statement returns and the type - each carries, in order. A result whose column count, names, or value types differ - fails as a source-protocol error, so a statement edited without its declaration - cannot silently change what the extraction script sees. - type: array - minItems: 1 - maxItems: 64 - items: - description: >- - One declared result column, whose name is unique across the declaration and opaque - to Rust. - $ref: '#/$defs/statement-column' - selectorInputs: - description: >- - Closes the minimized authorized selector alternatives this source's parameter bindings - may draw on; an empty array is accepted only on a source that binds no selector. - type: array - minItems: 0 - maxItems: 8 - items: - description: >- - One subject role together with the alternative profiles and exact field sets a - binding may name for that role. - $ref: '#/$defs/selector-input' - parameterBindings: - description: >- - States where each named statement parameter's value comes from, so no value reaches - the statement by string substitution. A parameter has one origin and exactly one: a - `selector` parameter is filled from the authorized selector field it names and from - nothing else, and a `prepared` parameter is filled by the preparation script and by - nothing else. A parameter the statement uses and no binding supplies fails the - request, as does a binding the statement never names. The reserved name `evidence_now` - may not be bound, because Rust binds it. + pack: + description: Exact Adapter pack identity and package-relative captured closure. type: object - maxProperties: 64 - propertyNames: - allOf: - - $ref: '#/$defs/ExternalId' - - $ref: '#/$defs/parameter-key' - additionalProperties: - description: >- - One parameter's tagged binding, filling exactly one named statement parameter from - a value Rust has already validated. - $ref: '#/$defs/statement-parameter-binding' - prepareScript: - description: >- - Bundle-relative Rhai script implementing `prepare/2`. A statement source usually - declares neither this nor `preparationLimits`, because most parameters name the - selector field they come from; a source declares both together or neither, and only - where it also declares a `prepared` parameter for the script to fill. - $ref: '#/$defs/relative-path' - adapterParameters: - description: >- - Closed non-secret constants supplied to the extraction script, and to the preparation - script when one is declared, rejected at bundle load when they fall outside - `adapterParametersSchema`. + 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 - maxProperties: 64 - propertyNames: - allOf: - - $ref: '#/$defs/ExternalId' - - $ref: '#/$defs/parameter-key' + propertyNames: {$ref: '#/$defs/ExternalId'} additionalProperties: - description: >- - One constant read by the scripts, which may itself nest further parameter values. - $ref: '#/$defs/adapter-parameter-value' - adapterParametersSchema: - description: >- - Bundle-relative closed JSON Schema for the parameter set, whose required-equals-properties - rule turns an undeclared or missing parameter into a startup failure. A non-empty - `adapterParameters` without it fails startup. - $ref: '#/$defs/relative-path' - preparationLimits: - description: >- - Output bounds Rust applies to what a preparation script returns, declared with - `prepareScript` and never alone. - $ref: '#/$defs/statement-preparation-limits' - projection: - description: >- - Restates the statement result shape for the shared projection boundary. It must - preserve every declared row column, either through `/rows`, `/rows/*`, or each - `/rows/*/` path, and may additionally retain reviewed extract metadata. - type: array - minItems: 1 - maxItems: 64 - uniqueItems: true - items: - description: >- - One extended JSON Pointer whose `*` segment visits every element of the current - array, with no numeric index, recursive descent, filter, predicate, union, or - script-computed path admitted. - type: string - minLength: 2 - maxLength: 256 - pattern: ^/(?!/)([^/~]|~[01]|/|\*)+$ - maximumRows: - description: >- - Caps the rows the statement may return before the request fails, so a statement that - matches more broadly than intended fails rather than moving a bulk result into the - runtime. - type: integer - minimum: 1 - maximum: 256 - maximumCellBytes: - description: >- - Caps one returned value, so a single oversized cell fails the request rather than - entering the response. A cell far past this bound is refused by the engine, on the - length recorded beside it, before its content is read at all. - type: integer - minimum: 1 - maximum: 65536 - maximumStatementSteps: - description: >- - Caps the virtual-machine steps the statement may take, which bounds work the wall - clock does not: a scan that is slow because it is large is stopped by this bound - rather than by the timeout. - type: integer - minimum: 1 - maximum: 1000000 - attemptTimeoutMilliseconds: - description: >- - One absolute deadline for an attempt at this source, covering concurrency admission, - blocking-worker queueing, and statement execution. Time spent in an earlier phase - reduces what remains for every later phase. - type: integer - minimum: 1 - maximum: 30000 - maximumResponseBytes: - description: >- - Caps the assembled result before projection, so an oversized result fails rather - than being projected. - type: integer - minimum: 1 - maximum: 1048576 - maximumConcurrency: - description: >- - Bounds how many evaluations may hold a statement against this extract at once, and - waiting for that admission is bounded by `attemptTimeoutMilliseconds`. - type: integer - minimum: 1 - maximum: 256 - oneOf: - - required: - - prepareScript - - preparationLimits - - not: - anyOf: - - required: - - prepareScript - - required: - - preparationLimits - allOf: - - if: - required: - - adapterParameters + type: object + additionalProperties: false + required: [selector] properties: - adapterParameters: + selector: type: object - minProperties: 1 - then: - required: - - adapterParametersSchema - # `evidence_now` is the runtime's own evaluation instant, so a bundle that - # bound the name would be choosing a second clock. - - properties: - parameterBindings: - not: - required: - - evidence_now - # A preparation script and a prepared parameter exist for each other. A - # script with nothing prepared to fill could only ever return a name the - # source refuses, and a prepared parameter with no script could never be - # filled, so each is stated only with the other. JSON Schema can say "at - # least one binding is prepared" about an object only by refusing the case - # where every binding is a selector one, which is what the negations below - # are doing. - - if: - required: - - prepareScript - then: - required: - - parameterBindings - properties: - parameterBindings: - not: - additionalProperties: - $ref: '#/$defs/statement-selector-parameter-binding' - - if: - required: - - parameterBindings - properties: - parameterBindings: - not: - additionalProperties: - $ref: '#/$defs/statement-selector-parameter-binding' - then: - required: - - prepareScript - statement-column: - type: object - additionalProperties: false - required: - - name - - type - properties: - name: - description: >- - Name this column carries into the result object, unique across the declaration and - opaque to Rust; it need not equal the column's name in the extract. - type: string - pattern: ^[a-z][a-z0-9._-]{0,63}$ - type: - description: >- - Exact value type Rust admits for this column. A null is admitted for any declared - type, and any other mismatch fails as a source-protocol error rather than being - coerced. - enum: - - string - - integer - - number - - boolean - statement-parameter-binding: - oneOf: - - $ref: '#/$defs/statement-selector-parameter-binding' - - $ref: '#/$defs/statement-prepared-parameter-binding' - statement-selector-parameter-binding: - type: object - additionalProperties: false - required: - - type - - role - - profile - - field - properties: - type: - description: >- - Selects the binding origin. This parameter is filled from the authorized selector - field named below and from nothing else, so the preparation script cannot stand in - for it. - const: selector - role: - description: >- - Subject role the value is taken from, which must be one the request's `selectorInputs` - declares. - $ref: '#/$defs/local-id' - profile: - description: >- - Selector profile the value is taken from, which must be an alternative that role - declares. - $ref: '#/$defs/local-id' - field: - description: >- - Exact field of that profile whose resolved value Rust binds to the parameter. - type: string - pattern: ^[a-z][a-z0-9._-]{0,63}$ - statement-prepared-parameter-binding: + 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: Bundle fact schema whose JSON meaning must equal the pinned route schema. + allOf: + - {$ref: '#/$defs/relative-path'} + - {pattern: '^schemas/'} + source-connection: type: object additionalProperties: false - required: - - type + required: [endpoints] properties: - type: - description: >- - Selects the binding origin. This parameter is filled by the preparation script and by - nothing else, which is how a value no selector holds, such as a normalized reference - or a derived bound, reaches the statement. It names no selector, because naming one - would give the parameter a second origin, and the request fails if the script returns - no value for it. - const: prepared - statement-preparation-limits: + 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: - - maximumParameters - - maximumParameterValueBytes + required: [endpoint, baseUrl, clientIdentity, authentication] properties: - maximumParameters: - description: >- - Caps how many parameters a preparation script may return. - type: integer - minimum: 1 - maximum: 64 - maximumParameterValueBytes: + endpoint: {$ref: '#/$defs/LocalId'} + baseUrl: description: >- - Caps one returned parameter value. - type: integer - minimum: 1 - maximum: 4096 + 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 @@ -2456,167 +1121,6 @@ $defs: is rejected at startup. type: string pattern: ^[a-z][a-z0-9._-]{0,63}$ - path-binding: - oneOf: - - type: object - additionalProperties: false - required: - - type - - role - - profile - - field - properties: - type: - description: >- - Chooses whether Rust reads the placeholder value from an already authorized - selector or from a scalar prior fact, and a prior-fact binding is accepted only - on a fetch source. - const: selector - role: - description: >- - Subject role whose authorized selector supplies the value; every selector set - the request can activate must carry this role and profile, or plan compilation - refuses the source. - $ref: '#/$defs/local-id' - profile: - description: >- - Selector profile the bound field belongs to; the same role, profile, and field - must also be declared in `selectorInputs`, or the source is rejected at startup. - $ref: '#/$defs/local-id' - field: - description: >- - Names the selector field or prior-fact property whose value fills the placeholder; - a value carrying `/`, `\`, `%`, a control, `.`, or `..` is rejected, which closes - path traversal and segment injection. - type: string - pattern: ^[a-z][a-z0-9._-]{0,63}$ - - type: object - additionalProperties: false - required: - - type - - field - properties: - type: - const: prior-fact - field: - type: string - pattern: ^[a-z][a-z0-9._-]{0,63}$ - configurable-header-name: - type: string - minLength: 1 - maxLength: 64 - pattern: ^[!#$%&'*+.^_`|~0-9A-Za-z-]+$ - parameter-key: - type: string - pattern: ^[A-Za-z_][A-Za-z0-9._-]{0,127}$ - adapter-parameter-value: - oneOf: - - type: boolean - - type: integer - minimum: -9223372036854775808 - maximum: 9223372036854775807 - - type: string - maxLength: 16384 - - type: array - maxItems: 256 - items: - description: >- - One element of a parameter array, which is a parameter value in turn, so the parameter - shape nests rather than flattening. - $ref: '#/$defs/adapter-parameter-value' - - type: object - maxProperties: 256 - propertyNames: - allOf: - - $ref: '#/$defs/ExternalId' - - $ref: '#/$defs/parameter-key' - additionalProperties: - description: >- - One member of a parameter object, which is a parameter value in turn, so the parameter - shape nests rather than flattening. - $ref: '#/$defs/adapter-parameter-value' - preparation-limits: - type: object - additionalProperties: false - required: - - query - - jsonBody - properties: - query: - description: >- - Decides whether a preparation script may, must, or must not return query pairs, - where `required` means at least one pair. Setting this key and `jsonBody` both to - `forbidden` fails startup, because one output channel must stay usable. - enum: - - required - - allowed - - forbidden - jsonBody: - description: >- - Decides whether a preparation script may, must, or must not return a JSON body, - where JSON `null` counts as absent and an empty object or array counts as present. - enum: - - required - - allowed - - forbidden - maximumQueryPairs: - description: >- - Caps how many query pairs a preparation script may return, bounding the query string - the source receives. - type: integer - minimum: 1 - maximum: 64 - maximumQueryNameBytes: - description: >- - Caps the length of each query-pair name a preparation script returns, applied before - the pair is percent-encoded. - type: integer - minimum: 1 - maximum: 64 - maximumQueryValueBytes: - description: >- - Caps the length of each query-pair value a preparation script returns, applied before - the pair is percent-encoded. - type: integer - minimum: 1 - maximum: 4096 - maximumJsonDepth: - description: >- - Caps the nesting depth of the prepared JSON body; a deeper body fails preparation - and no request is made. - type: integer - minimum: 1 - maximum: 32 - maximumCollectionItems: - description: >- - Caps the entries in each array and object of the prepared JSON body; a body over - the cap fails preparation and no request is made. - type: integer - minimum: 1 - maximum: 256 - maximumStringBytes: - description: >- - Caps every string a preparation script returns, covering query names and values - as well as JSON body strings and member names. - type: integer - minimum: 1 - maximum: 16384 - maximumNormalizedBytes: - description: >- - Caps the serialized size of the complete request parts, query pairs and body together, - so the outbound request stays bounded whichever channel a script fills. - type: integer - minimum: 1 - maximum: 65536 - not: - properties: - query: - const: forbidden - jsonBody: - const: forbidden - required: - - query - - jsonBody authority-profile: type: object additionalProperties: false @@ -2816,108 +1320,14 @@ $defs: required: - valueClaims acquisition: - oneOf: - - type: object - additionalProperties: false - required: - - type - - source - properties: - type: - description: >- - Selects this requirement's closed acquisition shape, and therefore how many - fixed source calls the runtime issues; a gated kind serves only where the bundle - and the deployment both name it under `acquisitionCapabilities`. - const: single - source: - description: >- - Read only when `acquisition.type` is `single`; the one configured source this - requirement queries in its single fixed call. - $ref: '#/$defs/local-id' - - type: object - additionalProperties: false - required: - - type - - search - - fetch - properties: - type: - const: search-then-fetch - search: - description: >- - Read when `acquisition.type` is `search-then-fetch` or `search-then-fetch-set`; - names the first-stage source, and the runtime aborts before the fetch stage - unless this call resolves to exactly one match. - $ref: '#/$defs/local-id' - fetch: - description: >- - Read when `acquisition.type` is `search-then-fetch` or `search-then-fetch-set`; - the fixed second-stage source, or the ordered array of member sources, invoked - after the search resolves and never chosen from response content. - $ref: '#/$defs/local-id' - onFetchNoMatch: - description: >- - Selects how an absent optional fetch record is reported. The default preserves - dependency failure; unavailable returns evidence.unavailable and an Unresolved - audit decision. Ambiguity and transport failures remain dependency failures. - enum: [dependency-failure, unavailable] - default: dependency-failure - - type: object - additionalProperties: false - required: - - type - - search - - fetch - - maximumAcquisitionMilliseconds - properties: - type: - const: search-then-fetch-set - search: - $ref: '#/$defs/local-id' - fetch: - type: array - minItems: 2 - maxItems: 4 - items: - description: >- - One declared fetch member of a `search-then-fetch-set` acquisition, called - in the order the array declares and reached only after the search resolves - to a unique schema-valid match. Members must be distinct from each other and - from the search source. - type: object - additionalProperties: false - required: - - source - - factInputs - properties: - source: - description: >- - The one configured source this member calls, fixed by the bundle like - every other acquisition source. - $ref: '#/$defs/local-id' - factInputs: - description: >- - Allowlist of validated search facts this member receives, and the only - search-derived data reaching it through any channel, including the body - its preparation builds. - type: array - minItems: 1 - maxItems: 16 - uniqueItems: true - items: - description: >- - One search fact name this member is permitted to read, which the search - source's fact schema must require or the bundle is rejected at startup. - type: string - pattern: ^[a-z][a-z0-9._-]{0,63}$ - maximumAcquisitionMilliseconds: - description: >- - Ceiling on the whole acquisition, covering the search, every declared member, - and the transitions between stages; exceeding it fails the requirement as a - dependency failure and never cancels a durable audit append. - type: integer - minimum: 1 - maximum: 30000 + description: >- + Selects one configured source. The pinned pack route owns every preparation, + extraction, branching and bounded data operation in that acquisition. + type: object + additionalProperties: false + required: [source] + properties: + source: {$ref: '#/$defs/local-id'} requirement: type: object additionalProperties: false @@ -3671,12 +2081,14 @@ $defs: 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 @@ -3717,9 +2129,8 @@ startup_checks: paths fail startup. - Request-derived subjects have no valueClaims. - >- - Request preparation receives only the closed selectorInputs alternatives and the exact - adapter context of parameters plus empty or validated prior facts; it cannot choose transport - authority, path-binding origin, headers, credentials, or request count. + 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 @@ -3749,26 +2160,11 @@ startup_checks: Every secret reference uses the closed file-secret grammar and is resolved beneath runtime.yaml secretProviders.file.root. - >- - Fixed path and path-template forms are mutually exclusive and every template placeholder - has exactly one tagged selector or prior-fact binding. Prior-fact bindings are allowed - only on fetch sources and must name a scalar property required by every preceding search - fact schema. - - ? >- - Every selector set an authority grant can activate for a source carries each role and - profile that source's selector path bindings require. The sets are derived one per grant, - so covering a bound role across their union is not enough - : >- - a single grant omitting one yields a set with no value to substitute, which fails startup - rather than every request that grant would serve. - - >- - Fixed headers and static API-key header names reject authentication, routing, framing, - cookie, forwarding, proxy, tracing, and hop-by-hop collisions after ASCII case folding. - - >- - Extended JSON Pointer projections are non-empty, uniquely decoded, and reject duplicate - or overlapping ancestor, descendant, and wildcard paths. + 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 preparation, extraction, and derivation selector-input contract is closed - and cross-referenced to the exact authorized role/profile/field set. + 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` @@ -3804,9 +2200,9 @@ deployment_rules: principal and authority use scoped pseudonyms; raw selector values are never labels or keys source_urls: >- - HTTPS is required except explicit HTTP numeric loopback on 127.0.0.0/8 or ::1 for deterministic - local mocks; Rust parses IP and port strictly and rejects userinfo, DNS localhost aliases, - non-loopback HTTP, invalid octets, fragments, and URL ambiguity + 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/schemas/evidence/bundle/bundle.v1.schema/index.html b/public/schemas/evidence/bundle/bundle.v1.schema/index.html index d6a34971f..33a5b47ef 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-25697ca7f9e2c530ed09793286128b3b2a145842dce2cab235d8066790da8f746a0 - Immutable artifacthttps://id.registrystack.org/artifacts/sha256/97ca7f9e2c530ed09793286128b3b2a145842dce2cab235d8066790da8f746a0.yaml + Artifact SHA-2562847a56eda9c8b838d28fde619853c36851acc57b094b74ec2665150f1ace8d4 + Immutable artifacthttps://id.registrystack.org/artifacts/sha256/2847a56eda9c8b838d28fde619853c36851acc57b094b74ec2665150f1ace8d4.yaml diff --git a/public/schemas/evidence/fixture/fixture.v1alpha1.schema.json b/public/schemas/evidence/fixture/fixture.v1alpha1.schema.json index 94f5c62e8..4a93cee93 100644 --- a/public/schemas/evidence/fixture/fixture.v1alpha1.schema.json +++ b/public/schemas/evidence/fixture/fixture.v1alpha1.schema.json @@ -18,6 +18,10 @@ "expected": { "type": "string" }, + "expectedFacts": { + "description": "Exact final facts from the selected pack route, before derivation.", + "x-registry-foreign": "json" + }, "expectedLookup": { "type": "string" }, @@ -205,6 +209,10 @@ "ReferenceCase": { "additionalProperties": false, "properties": { + "acquisition": { + "description": "Exact recorded sends and responses, checked by the pack replay host.", + "x-registry-foreign": "json" + }, "audience": { "type": "string" }, @@ -342,8 +350,9 @@ "type": "boolean" }, "sourceRequestCount": { + "description": "Expected data sends exclude OAuth work and cannot exceed the offline budget.", "format": "uint64", - "maximum": 2, + "maximum": 5, "minimum": 0, "type": "integer" }, diff --git a/public/schemas/evidence/fixture/fixture.v1alpha1.schema/index.html b/public/schemas/evidence/fixture/fixture.v1alpha1.schema/index.html index 1540ae69b..d83bd587b 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-256dfd68c8242ca73530057a7b473d668b9904e5a947fceaa80badff7647f127d50 - Immutable artifacthttps://id.registrystack.org/artifacts/sha256/dfd68c8242ca73530057a7b473d668b9904e5a947fceaa80badff7647f127d50.json + Artifact SHA-256912661673c41c1119a8bd83809c66cc2d38b16e171c963b4988175c74f627664 + Immutable artifacthttps://id.registrystack.org/artifacts/sha256/912661673c41c1119a8bd83809c66cc2d38b16e171c963b4988175c74f627664.json diff --git a/public/schemas/evidence/project/project.v1alpha1.schema.json b/public/schemas/evidence/project/project.v1alpha1.schema.json index ebb0e0873..200b31746 100644 --- a/public/schemas/evidence/project/project.v1alpha1.schema.json +++ b/public/schemas/evidence/project/project.v1alpha1.schema.json @@ -1,85 +1,23 @@ { "$defs": { "Acquisition": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "source": { - "$ref": "#/$defs/LocalId" - }, - "type": { - "const": "single", - "type": "string" - } - }, - "required": [ - "type", - "source" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "fetch": { - "$ref": "#/$defs/LocalId" - }, - "onFetchNoMatch": { - "$ref": "#/$defs/FetchNoMatchPolicy" - }, - "search": { - "$ref": "#/$defs/LocalId" - }, - "type": { - "const": "search-then-fetch", - "type": "string" - } - }, - "required": [ - "type", - "search", - "fetch" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "fetch": { - "items": { - "$ref": "#/$defs/FetchMember" - }, - "type": "array" - }, - "maximumAcquisitionMilliseconds": { - "format": "uint64", - "maximum": 30000, - "minimum": 1, - "type": "integer" - }, - "search": { - "$ref": "#/$defs/LocalId" - }, - "type": { - "const": "search-then-fetch-set", - "type": "string" - } - }, - "required": [ - "type", - "search", - "fetch", - "maximumAcquisitionMilliseconds" - ], - "type": "object" + "additionalProperties": false, + "properties": { + "source": { + "$ref": "#/$defs/LocalId", + "description": "One reviewed route owns the complete bounded provider interaction." } - ] + }, + "required": [ + "source" + ], + "type": "object" }, - "AcquisitionCapability": { + "AcquisitionPosture": { "enum": [ - "search-then-fetch-set", - "source-batch" + "source-derived", + "field-projected", + "record-transformed" ], "type": "string" }, @@ -209,24 +147,6 @@ ], "type": "string" }, - "BatchResponse": { - "additionalProperties": false, - "description": "The batch response uses the Source's byte and transport ceilings.", - "properties": { - "projection": { - "items": { - "type": "string" - }, - "type": "array" - }, - "shape": true - }, - "required": [ - "projection", - "shape" - ], - "type": "object" - }, "BindingMode": { "enum": [ "audience-scoped", @@ -262,31 +182,11 @@ }, "type": "string" }, - "FetchMember": { - "additionalProperties": false, - "properties": { - "factInputs": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "source": { - "$ref": "#/$defs/LocalId" - } - }, - "required": [ - "source", - "factInputs" - ], - "type": "object" - }, - "FetchNoMatchPolicy": { - "enum": [ - "dependency-failure", - "unavailable" - ], + "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": { @@ -601,8 +501,6 @@ }, "FunctionInterface": { "enum": [ - "source-prepare/v1", - "source-extract/v1", "assertion-derive/v1" ], "type": "string" @@ -880,6 +778,22 @@ ], "type": "object" }, + "PackReference": { + "additionalProperties": false, + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "version": { + "type": "string" + } + }, + "required": [ + "id", + "version" + ], + "type": "object" + }, "ProjectionDisclosure": { "enum": [ "top-level" @@ -996,37 +910,10 @@ "additionalProperties": false, "properties": { "acquisitionPosture": { - "type": "string" - }, - "adapterParameters": true, - "adapterParametersSchema": { - "x-registry-foreign": "json-schema-2020-12" - }, - "batch": { - "anyOf": [ - { - "$ref": "#/$defs/SourceBatch" - }, - { - "type": "null" - } - ] - }, - "behaviorRevision": { - "type": [ - "string", - "null" - ] + "$ref": "#/$defs/AcquisitionPosture" }, "connection": { - "anyOf": [ - { - "$ref": "#/$defs/LocalId" - }, - { - "type": "null" - } - ] + "$ref": "#/$defs/LocalId" }, "description": { "anyOf": [ @@ -1039,31 +926,14 @@ ], "description": "Human explanation for authors and reviewers; excluded from behavior revisions." }, - "evidence": true, - "extract": { - "$ref": "#/$defs/SourceFunctionRef" - }, - "extractProfile": { - "anyOf": [ - { - "$ref": "#/$defs/LocalId" - }, - { - "type": "null" - } - ] - }, - "facts": { - "additionalProperties": true, + "inputs": { + "additionalProperties": { + "$ref": "#/$defs/SourceInput" + }, "propertyNames": { - "$ref": "#/$defs/LocalId" + "$ref": "#/$defs/ExternalId" }, - "type": "object", - "x-registry-passthrough": "Reviewed bounded private fact schemas, normalized by the Evidence compiler and checked by the kernel." - }, - "forwardAccessAttribution": { - "default": false, - "type": "boolean" + "type": "object" }, "label": { "anyOf": [ @@ -1076,152 +946,41 @@ ], "description": "Optional presentation label. Stable references use the identifier." }, - "limits": { - "$ref": "#/$defs/SourceLimits" - }, - "maximumExtractAgeSeconds": { - "format": "uint64", - "maximum": 2592000, - "minimum": 1, - "type": [ - "integer", - "null" - ] - }, - "preparationLimits": true, - "prepare": { - "anyOf": [ - { - "$ref": "#/$defs/SourceFunctionRef" - }, - { - "type": "null" - } - ] - }, - "request": true, - "response": { - "$ref": "#/$defs/SourceResponse" - }, - "selectors": { - "default": [], - "items": { - "$ref": "#/$defs/SourceSelector" - }, - "type": "array" - }, - "type": { - "$ref": "#/$defs/SourceType" - }, - "unresolvedProblem": true - }, - "required": [ - "type", - "acquisitionPosture", - "request", - "response", - "extract", - "facts", - "limits" - ], - "type": "object" - }, - "SourceBatch": { - "additionalProperties": false, - "description": "A bounded physical Source call serving independent slotted logical lookups.\nThe same reviewed Function interfaces are used with their batch call-site types.", - "properties": { - "extract": { - "$ref": "#/$defs/SourceFunctionRef" - }, - "maximumItems": { - "format": "uint64", - "maximum": 16, - "minimum": 1, - "type": "integer" - }, - "prepare": { - "$ref": "#/$defs/SourceFunctionRef" + "pack": { + "$ref": "#/$defs/PackReference" }, - "response": { - "$ref": "#/$defs/BatchResponse" - } - }, - "required": [ - "maximumItems", - "prepare", - "extract", - "response" - ], - "type": "object" - }, - "SourceFunctionRef": { - "additionalProperties": false, - "description": "Source preparation and extraction share the Source's declared adapter\nparameters and minimized selector inputs. Call sites cannot override them.", - "properties": { - "function": { + "route": { "$ref": "#/$defs/LocalId" } }, "required": [ - "function" + "pack", + "route", + "connection", + "acquisitionPosture" ], "type": "object" }, - "SourceLimits": { + "SourceInput": { "additionalProperties": false, "properties": { - "attemptTimeoutMilliseconds": { - "format": "uint64", - "maximum": 30000, - "minimum": 1, - "type": "integer" - }, - "maximumConcurrency": { - "format": "uint64", - "maximum": 256, - "minimum": 1, - "type": "integer" + "selector": { + "$ref": "#/$defs/SourceInputSelector" } }, "required": [ - "attemptTimeoutMilliseconds", - "maximumConcurrency" + "selector" ], "type": "object" }, - "SourceResponse": { + "SourceInputSelector": { "additionalProperties": false, "properties": { - "maximumBytes": { - "format": "uint64", - "maximum": 1048576, - "minimum": 1, - "type": "integer" - }, - "projection": { - "items": { - "type": "string" - }, - "type": "array" + "field": { + "$ref": "#/$defs/LocalId" }, - "shape": true - }, - "required": [ - "projection", - "shape", - "maximumBytes" - ], - "type": "object" - }, - "SourceSelector": { - "additionalProperties": false, - "properties": { - "profiles": { - "items": { - "$ref": "#/$defs/LocalId" - }, - "type": "array", - "uniqueItems": true + "profile": { + "$ref": "#/$defs/LocalId" }, "role": { "$ref": "#/$defs/LocalId" @@ -1229,17 +988,11 @@ }, "required": [ "role", - "profiles" + "profile", + "field" ], "type": "object" }, - "SourceType": { - "enum": [ - "http-json", - "sqlite-extract" - ], - "type": "string" - }, "Subject": { "additionalProperties": false, "properties": { @@ -1273,14 +1026,6 @@ "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { - "acquisitionCapabilities": { - "description": "Package opt-in ceilings. Operators must separately enable these acquisitions.", - "items": { - "$ref": "#/$defs/AcquisitionCapability" - }, - "type": "array", - "uniqueItems": true - }, "apiVersion": { "const": "id.registrystack.org/formats/evidence/project/v1alpha1", "type": "string" diff --git a/public/schemas/evidence/project/project.v1alpha1.schema/index.html b/public/schemas/evidence/project/project.v1alpha1.schema/index.html index b41d60cba..99249eac7 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-2563c8a56419f2b6a011463736e94f99c868f78636325dd8d34b3b70c0c693a65f1 - Immutable artifacthttps://id.registrystack.org/artifacts/sha256/3c8a56419f2b6a011463736e94f99c868f78636325dd8d34b3b70c0c693a65f1.json + Artifact SHA-25662c45846105e0231417e0450568a899ea05f78f41250b450353c074407cc5f26 + Immutable artifacthttps://id.registrystack.org/artifacts/sha256/62c45846105e0231417e0450568a899ea05f78f41250b450353c074407cc5f26.json diff --git a/public/schemas/evidence/runtime/runtime.v1alpha1.schema.json b/public/schemas/evidence/runtime/runtime.v1alpha1.schema.json index 3db76a22e..913e3a2ec 100644 --- a/public/schemas/evidence/runtime/runtime.v1alpha1.schema.json +++ b/public/schemas/evidence/runtime/runtime.v1alpha1.schema.json @@ -23,6 +23,14 @@ properties: 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, @@ -366,6 +374,25 @@ properties: 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 @@ -393,31 +420,23 @@ properties: 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' - acquisitionCapabilities: - description: >- - Gated acquisition kinds and source-call optimizations this deployment enables, the - operator half of the same two-sided gate the bundle declares. Omission and an explicit - empty list both enable nothing. - type: array - maxItems: 2 - uniqueItems: true - items: - description: >- - One gated acquisition kind or source-call optimization this deployment permits. A - bundle needing an acquisition kind absent here is refused before the listener binds; - an absent optimization is never selected. - enum: - - search-then-fetch-set - - source-batch - x-runtime-validation: >- - A bundle whose requirement needs a gated acquisition kind, or whose HTTP source carries a - batch block, is refused at startup when the corresponding capability is absent from this - list, before the deployment serves anything. $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}$ @@ -442,6 +461,109 @@ $defs: 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: @@ -452,10 +574,9 @@ ownership: - 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 - - >- - optional enabled acquisition capabilities, which widen nothing a bundle did not already - declare overrides: prohibited startup: unknown_keys: rejected at every level @@ -467,8 +588,8 @@ startup: process environment after parsing; they are refused inside secret references and inside secretProviders trust_profiles: >- - names must exactly equal the logical tlsTrustProfile names the governed bundle's sources - and authentication use + 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: >- diff --git a/public/schemas/evidence/runtime/runtime.v1alpha1.schema/index.html b/public/schemas/evidence/runtime/runtime.v1alpha1.schema/index.html index 832871f0e..ba04f0718 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-2561d1ef718bebe3d3deba5fd434579f32a05bb92e87836137e7b729f3fa4c26b4c - Immutable artifacthttps://id.registrystack.org/artifacts/sha256/1d1ef718bebe3d3deba5fd434579f32a05bb92e87836137e7b729f3fa4c26b4c.yaml + Artifact SHA-256fd4ef085ef94087f5fa6d846a284957345d5463df44372c5667ea1a8cf643d0d + Immutable artifacthttps://id.registrystack.org/artifacts/sha256/fd4ef085ef94087f5fa6d846a284957345d5463df44372c5667ea1a8cf643d0d.yaml diff --git a/public/schemas/evidence/target/target.v1alpha1.schema.json b/public/schemas/evidence/target/target.v1alpha1.schema.json index d1a9ed496..6fe544a8b 100644 --- a/public/schemas/evidence/target/target.v1alpha1.schema.json +++ b/public/schemas/evidence/target/target.v1alpha1.schema.json @@ -1,12 +1,5 @@ { "$defs": { - "AcquisitionCapability": { - "enum": [ - "search-then-fetch-set", - "source-batch" - ], - "type": "string" - }, "Digest": { "description": "A SHA-256 digest: `sha256:` followed by 64 lowercase hex digits.", "pattern": "^sha256:[0-9a-f]{64}$", @@ -253,49 +246,24 @@ "TargetConnection": { "additionalProperties": false, "properties": { - "admissionTimeoutMilliseconds": { - "format": "uint64", - "maximum": 30000, - "minimum": 1, - "type": [ - "integer", - "null" - ] - }, - "authentication": { - "$ref": "#/$defs/TargetConnectionAuthentication" - }, - "maximumConcurrency": { - "format": "uint32", - "maximum": 256, - "minimum": 1, - "type": [ - "integer", - "null" - ] - }, - "origin": { - "$ref": "#/$defs/Url" - }, - "tlsTrustProfile": { - "type": [ - "string", - "null" - ] + "allowedPrivateCidrs": { + "items": { + "type": "string" + }, + "type": "array" }, - "tokenTimeoutMilliseconds": { - "format": "uint64", - "maximum": 30000, - "minimum": 1, - "type": [ - "integer", - "null" - ] + "endpoints": { + "additionalProperties": { + "$ref": "#/$defs/TargetEndpointBinding" + }, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" } }, "required": [ - "origin", - "authentication" + "endpoints" ], "type": "object" }, @@ -539,6 +507,56 @@ ], "type": "string" }, + "TargetEndpointBinding": { + "additionalProperties": false, + "properties": { + "attemptTimeoutMilliseconds": { + "format": "uint64", + "maximum": 18446744073709551615, + "minimum": 1, + "type": [ + "integer", + "null" + ] + }, + "authentication": { + "$ref": "#/$defs/TargetConnectionAuthentication" + }, + "maximumResponseBytes": { + "format": "uint64", + "maximum": 1048576, + "minimum": 1, + "type": [ + "integer", + "null" + ] + }, + "mtlsIdentity": { + "anyOf": [ + { + "$ref": "#/$defs/TargetMtlsIdentity" + }, + { + "type": "null" + } + ] + }, + "origin": { + "$ref": "#/$defs/Url" + }, + "tlsTrustProfile": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "origin", + "authentication" + ], + "type": "object" + }, "TargetEnvironmentSecretProvider": { "additionalProperties": false, "type": "object" @@ -668,6 +686,22 @@ ], "type": "object" }, + "TargetMtlsIdentity": { + "additionalProperties": false, + "properties": { + "certificateRef": { + "$ref": "#/$defs/SecretReference" + }, + "keyRef": { + "$ref": "#/$defs/SecretReference" + } + }, + "required": [ + "certificateRef", + "keyRef" + ], + "type": "object" + }, "TargetNetworkExposure": { "enum": [ "private-address", @@ -1070,6 +1104,35 @@ ], "type": "string" }, + "TargetSourceAcquisition": { + "additionalProperties": false, + "properties": { + "acquisitionDeadlineMilliseconds": { + "format": "uint64", + "maximum": 18446744073709551615, + "minimum": 1, + "type": "integer" + }, + "maximumDataOperations": { + "format": "uint64", + "maximum": 18446744073709551615, + "minimum": 1, + "type": "integer" + }, + "maximumResponseBytes": { + "format": "uint64", + "maximum": 18446744073709551615, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "maximumDataOperations", + "acquisitionDeadlineMilliseconds", + "maximumResponseBytes" + ], + "type": "object" + }, "TargetSubjectBinding": { "additionalProperties": false, "properties": { @@ -1119,14 +1182,6 @@ "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { - "acquisitionCapabilities": { - "description": "Operator opt-ins, intersected with the package's acquisition capabilities.", - "items": { - "$ref": "#/$defs/AcquisitionCapability" - }, - "type": "array", - "uniqueItems": true - }, "apiVersion": { "const": "id.registrystack.org/formats/evidence/target/v1alpha1", "type": "string" @@ -1154,7 +1209,7 @@ "additionalProperties": { "$ref": "#/$defs/TargetConnection" }, - "description": "Explicit HTTP source bindings. An empty mapping grants no HTTP bindings;\nit is valid for extract-only projects. Every declared HTTP Source must\nstill resolve its named connection when the project is checked.", + "description": "Explicit endpoint bindings and their reviewed connection policies. An\nempty mapping grants no outbound endpoint authority.", "propertyNames": { "$ref": "#/$defs/LocalId" }, @@ -1240,6 +1295,17 @@ } ] }, + "sourceAcquisition": { + "anyOf": [ + { + "$ref": "#/$defs/TargetSourceAcquisition" + }, + { + "type": "null" + } + ], + "description": "Optional operational acquisition budget projected only into runtime\nconfiguration. Omission uses the Evidence engine defaults." + }, "subjectBinding": { "$ref": "#/$defs/TargetSubjectBinding" } diff --git a/public/schemas/evidence/target/target.v1alpha1.schema/index.html b/public/schemas/evidence/target/target.v1alpha1.schema/index.html index 3a5df693f..106b5cc12 100644 --- a/public/schemas/evidence/target/target.v1alpha1.schema/index.html +++ b/public/schemas/evidence/target/target.v1alpha1.schema/index.html @@ -48,8 +48,8 @@

Lifecycle

Statusactive Compatibility linev1alpha1 Ownerevidence - Artifact SHA-256fc7898b8be0e7ac26fd46a4624d37854f4df52eb4a372dac2e6cbc0575b3aed3 - Immutable artifacthttps://id.registrystack.org/artifacts/sha256/fc7898b8be0e7ac26fd46a4624d37854f4df52eb4a372dac2e6cbc0575b3aed3.json + Artifact SHA-256bb19696ad1cf4f6c89de72d1b50da9f8897761cd15066c4281500836306ea09e + Immutable artifacthttps://id.registrystack.org/artifacts/sha256/bb19696ad1cf4f6c89de72d1b50da9f8897761cd15066c4281500836306ea09e.json diff --git a/public/schemas/index.html b/public/schemas/index.html index 62aa6d05e..c17ad2a8a 100644 --- a/public/schemas/index.html +++ b/public/schemas/index.html @@ -40,15 +40,24 @@

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.

-

132 published identifiers

+

142 published identifiers

+ + + + + + + + - + + @@ -161,6 +170,7 @@

132 published identifiers

+ diff --git a/public/schemas/index.json b/public/schemas/index.json index fd7c29980..b34f49284 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/proposal_hooks.rs", "sha256": "02fe083f3d06c107298847923f42c0036ee98d5ba12347e527e886c0cedd2178" }, @@ -33,6 +33,270 @@ "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/effective-contract/effective-contract.v1alpha1.schema.json", + "title": "Registry Adapter effective contract", + "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/5bfd55b2ccee480035ee9db13b8fb3a99ac5a2e9cd01645fdda8dfeb593eb688.json", + "source_reference": { + "repository": "registry-stack", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", + "path": "crates/registry-adapterctl/src/schemas.rs", + "sha256": "ee38dfe66d555d580545cec1b5d8e4148d1d108d194d5680c3dca63bbfbfd7c9" + }, + "artifact_sha256": "5bfd55b2ccee480035ee9db13b8fb3a99ac5a2e9cd01645fdda8dfeb593eb688", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/5bfd55b2ccee480035ee9db13b8fb3a99ac5a2e9cd01645fdda8dfeb593eb688.json", + "id": "https://id.registrystack.org/schemas/adapter/effective-contract/effective-contract.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/fixture/fixture.v1alpha1.schema.json", + "title": "Registry Adapter fixture suite", + "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/ca14df9aafa49fd2018a12869e54f4058e29de07f01c0cbc0dd13f069649bcc9.json", + "source_reference": { + "repository": "registry-stack", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", + "path": "crates/registry-adapterctl/src/schemas.rs", + "sha256": "ee38dfe66d555d580545cec1b5d8e4148d1d108d194d5680c3dca63bbfbfd7c9" + }, + "artifact_sha256": "ca14df9aafa49fd2018a12869e54f4058e29de07f01c0cbc0dd13f069649bcc9", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/ca14df9aafa49fd2018a12869e54f4058e29de07f01c0cbc0dd13f069649bcc9.json", + "id": "https://id.registrystack.org/schemas/adapter/fixture/fixture.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/job-runtime/job-runtime.v1alpha1.schema.json", + "title": "Registry Adapter ingestion job runtime configuration", + "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/c1be1e7bc8efa01de429ea5a5cd7c19da49d9766d71839602a0e81cecc447d8b.json", + "source_reference": { + "repository": "registry-stack", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", + "path": "crates/registry-adapterctl/src/schemas.rs", + "sha256": "ee38dfe66d555d580545cec1b5d8e4148d1d108d194d5680c3dca63bbfbfd7c9" + }, + "artifact_sha256": "c1be1e7bc8efa01de429ea5a5cd7c19da49d9766d71839602a0e81cecc447d8b", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/c1be1e7bc8efa01de429ea5a5cd7c19da49d9766d71839602a0e81cecc447d8b.json", + "id": "https://id.registrystack.org/schemas/adapter/job-runtime/job-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/adapter/job/job.v1alpha1.schema.json", + "title": "Registry Adapter ingestion job", + "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/38818527ae8cf4435485ea3f283af51b41c4d1d1e0e26d04ab3e59c158c150a7.json", + "source_reference": { + "repository": "registry-stack", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", + "path": "crates/registry-adapterctl/src/schemas.rs", + "sha256": "ee38dfe66d555d580545cec1b5d8e4148d1d108d194d5680c3dca63bbfbfd7c9" + }, + "artifact_sha256": "38818527ae8cf4435485ea3f283af51b41c4d1d1e0e26d04ab3e59c158c150a7", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/38818527ae8cf4435485ea3f283af51b41c4d1d1e0e26d04ab3e59c158c150a7.json", + "id": "https://id.registrystack.org/schemas/adapter/job/job.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", + "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/6031baaabca785fe6e0adfed4336fa555839e18ae1a3136cf3e895ad5e6f6dcb.json", + "source_reference": { + "repository": "registry-stack", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", + "path": "crates/registry-adapterctl/src/schemas.rs", + "sha256": "ee38dfe66d555d580545cec1b5d8e4148d1d108d194d5680c3dca63bbfbfd7c9" + }, + "artifact_sha256": "6031baaabca785fe6e0adfed4336fa555839e18ae1a3136cf3e895ad5e6f6dcb", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/6031baaabca785fe6e0adfed4336fa555839e18ae1a3136cf3e895ad5e6f6dcb.json", + "id": "https://id.registrystack.org/schemas/adapter/pack/pack.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", + "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/8032fd67f82f517cade8e55c4d3972bc5481a957b84a4cb70b3f40f82ac970d3.json", + "source_reference": { + "repository": "registry-stack", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", + "path": "crates/registry-adapterctl/src/schemas.rs", + "sha256": "ee38dfe66d555d580545cec1b5d8e4148d1d108d194d5680c3dca63bbfbfd7c9" + }, + "artifact_sha256": "8032fd67f82f517cade8e55c4d3972bc5481a957b84a4cb70b3f40f82ac970d3", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/8032fd67f82f517cade8e55c4d3972bc5481a957b84a4cb70b3f40f82ac970d3.json", + "id": "https://id.registrystack.org/schemas/adapter/profile/profile.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/project/project.v1alpha1.schema.json", + "title": "Registry Adapter project", + "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/2a31e088e66073cf94b5d3769aebbeef3552cafa59c2281405be83ccd5390435.json", + "source_reference": { + "repository": "registry-stack", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", + "path": "crates/registry-adapterctl/src/schemas.rs", + "sha256": "ee38dfe66d555d580545cec1b5d8e4148d1d108d194d5680c3dca63bbfbfd7c9" + }, + "artifact_sha256": "2a31e088e66073cf94b5d3769aebbeef3552cafa59c2281405be83ccd5390435", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/2a31e088e66073cf94b5d3769aebbeef3552cafa59c2281405be83ccd5390435.json", + "id": "https://id.registrystack.org/schemas/adapter/project/project.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/runtime/runtime.v1alpha1.schema.json", + "title": "Registry Adapter runtime configuration", + "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/169ce8657f2ab5a3140216b6aeeeaaaf7dfcea0f508364a76de142b93c6a0a14.json", + "source_reference": { + "repository": "registry-stack", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", + "path": "crates/registry-adapterctl/src/schemas.rs", + "sha256": "ee38dfe66d555d580545cec1b5d8e4148d1d108d194d5680c3dca63bbfbfd7c9" + }, + "artifact_sha256": "169ce8657f2ab5a3140216b6aeeeaaaf7dfcea0f508364a76de142b93c6a0a14", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/169ce8657f2ab5a3140216b6aeeeaaaf7dfcea0f508364a76de142b93c6a0a14.json", + "id": "https://id.registrystack.org/schemas/adapter/runtime/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/breg/access-explanation/access-explanation.v1alpha4.schema.json", "title": "AccessExplanation", @@ -137,7 +401,7 @@ "title": "AccessExplanation", "description": "Base Registry Engine bregctl explain output JSON Schemas, written by hand and held to bregctl's output by its contract test.", "kind": "schema", - "status": "active", + "status": "deprecated", "compatibility_line": "v1alpha7", "owner": "breg", "source": "src/artifacts/sha256/868846b864b32a31087c4c2fc8b99ef232151641a7fd848f3bca3d516f284544.json", @@ -165,6 +429,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/breg/access-explanation/access-explanation.v1alpha8.schema.json", + "title": "AccessExplanation", + "description": "Base Registry Engine bregctl explain output JSON Schemas, written by hand and held to bregctl's output by its contract test.", + "kind": "schema", + "status": "active", + "compatibility_line": "v1alpha8", + "owner": "breg", + "source": "src/artifacts/sha256/e9bae5707ef92498b162083958fc0af4c1c043e74eec71252259e70bab88b73d.json", + "source_reference": { + "repository": "registry-stack", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", + "path": "products/breg/contracts/explain/AccessExplanation.schema.json", + "sha256": "e9bae5707ef92498b162083958fc0af4c1c043e74eec71252259e70bab88b73d" + }, + "artifact_sha256": "e9bae5707ef92498b162083958fc0af4c1c043e74eec71252259e70bab88b73d", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/e9bae5707ef92498b162083958fc0af4c1c043e74eec71252259e70bab88b73d.json", + "id": "https://id.registrystack.org/schemas/breg/access-explanation/access-explanation.v1alpha8.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/breg/access-preview/access-preview.v1alpha4.schema.json", "title": "AccessPreview", @@ -176,7 +473,7 @@ "source": "src/artifacts/sha256/18b0b088010cf8ddacae0ffaada4defe030e67eb1fb05c4b282e03ecf62a29a8.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "products/breg/contracts/explain/AccessPreview.schema.json", "sha256": "18b0b088010cf8ddacae0ffaada4defe030e67eb1fb05c4b282e03ecf62a29a8" }, @@ -209,9 +506,9 @@ "source": "src/artifacts/sha256/5e2e840d023549e7184ace57e19928c29c90e5601a84ed1bf86b1a03f0f08948.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/artifacts.rs", - "sha256": "560911be004e83d591163ea1c4a25f577546decd01b3f3d49fbbe92354c380b3" + "sha256": "8e7e1c82cc1ddb3bc1d41866c812c2ff7d0007d0b57b83422260681ff549e795" }, "artifact_sha256": "5e2e840d023549e7184ace57e19928c29c90e5601a84ed1bf86b1a03f0f08948", "immutable_uri": "https://id.registrystack.org/artifacts/sha256/5e2e840d023549e7184ace57e19928c29c90e5601a84ed1bf86b1a03f0f08948.json", @@ -341,7 +638,7 @@ "source": "src/artifacts/sha256/d0263a9335d657c23078e5190210f580db884a0608bd6591daebfcb2447a7bbd.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "products/breg/contracts/explain/ActionsExplanation.schema.json", "sha256": "d0263a9335d657c23078e5190210f580db884a0608bd6591daebfcb2447a7bbd" }, @@ -440,7 +737,7 @@ "source": "src/artifacts/sha256/f52ad0028a6479717062d38de052df5c1d8e1b0c8b63c478980a3897cc2675cd.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-bregctl/src/tool_schema.rs", "sha256": "28567d54120dd29d734ddcd3e10c4c6ee128eb7b2d195e4c77bd1cd6c9bc5cfd" }, @@ -506,7 +803,7 @@ "source": "src/artifacts/sha256/5020d8c8d12191760b03bfd268a0f11a8a88b7bc06982063573b7e48c9950fae.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-bregctl/src/tool_schema.rs", "sha256": "28567d54120dd29d734ddcd3e10c4c6ee128eb7b2d195e4c77bd1cd6c9bc5cfd" }, @@ -539,7 +836,7 @@ "source": "src/artifacts/sha256/52b076a8325b63e0bcaffb71d348e0239cea4d48be094100a018ef8a819fdab5.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "products/breg/contracts/event-record-view/EventRecordView.schema.json", "sha256": "52b076a8325b63e0bcaffb71d348e0239cea4d48be094100a018ef8a819fdab5" }, @@ -605,7 +902,7 @@ "source": "src/artifacts/sha256/13bb8f2e95d3244f368dccb5ea2c9779ad14a7b3f4661f61487cf56f983b2d45.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "products/breg/contracts/explain/EventsExplanation.schema.json", "sha256": "13bb8f2e95d3244f368dccb5ea2c9779ad14a7b3f4661f61487cf56f983b2d45" }, @@ -638,7 +935,7 @@ "source": "src/artifacts/sha256/ea3e859161f961767bc44b463a025feefc17662dd31fa7ba4c67f71b0188f1bc.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-bregctl/src/tool_schema.rs", "sha256": "28567d54120dd29d734ddcd3e10c4c6ee128eb7b2d195e4c77bd1cd6c9bc5cfd" }, @@ -671,7 +968,7 @@ "source": "src/artifacts/sha256/10006d4e4cd3b8ef2d9e742793967293c7bbdca89a8c11676310a7c4f4c1adc8.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-bregctl/src/tool_schema.rs", "sha256": "28567d54120dd29d734ddcd3e10c4c6ee128eb7b2d195e4c77bd1cd6c9bc5cfd" }, @@ -803,7 +1100,7 @@ "source": "src/artifacts/sha256/738c5151b6085ee5a5da8d60334f70b179e740bc1af9cb2888325436c338d546.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "products/breg/contracts/explain/LifecycleExplanation.schema.json", "sha256": "738c5151b6085ee5a5da8d60334f70b179e740bc1af9cb2888325436c338d546" }, @@ -836,7 +1133,7 @@ "source": "src/artifacts/sha256/34d05bd2adc4b41a65becd76fa288943d2636b7b60e4cfaf17c026dbd962b0f1.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg-mcp/src/schema.rs", "sha256": "3e23892d238d9ae9f0fe5b88af8ff394e07891dec5d9c60fb04026c08edce6c2" }, @@ -866,15 +1163,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "breg", - "source": "src/artifacts/sha256/100315e48b363b9f32004f472633a0710816abb6dce52129f2f98513dfd0d8ab.json", + "source": "src/artifacts/sha256/8177563ac1261680db7070b59f8b651d1cfe8c33cb5423891902bab4d5f8173e.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-bregctl/src/tool_schema.rs", "sha256": "28567d54120dd29d734ddcd3e10c4c6ee128eb7b2d195e4c77bd1cd6c9bc5cfd" }, - "artifact_sha256": "100315e48b363b9f32004f472633a0710816abb6dce52129f2f98513dfd0d8ab", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/100315e48b363b9f32004f472633a0710816abb6dce52129f2f98513dfd0d8ab.json", + "artifact_sha256": "8177563ac1261680db7070b59f8b651d1cfe8c33cb5423891902bab4d5f8173e", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/8177563ac1261680db7070b59f8b651d1cfe8c33cb5423891902bab4d5f8173e.json", "id": "https://id.registrystack.org/schemas/breg/migration-descriptor/migration-descriptor.v1alpha1.schema.json", "documented_by": [ { @@ -1001,7 +1298,7 @@ "source": "src/artifacts/sha256/c5c5461590e22ba0896a312e9235ad707c066b803c14759f34d402c186823797.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "products/breg/contracts/explain/ModelExplanation.schema.json", "sha256": "c5c5461590e22ba0896a312e9235ad707c066b803c14759f34d402c186823797" }, @@ -1034,7 +1331,7 @@ "source": "src/artifacts/sha256/975478df7cdc216115fcf370f1478ffc3309c6ac6ae47f79be1c8b358c90dd7e.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-bregctl/src/tool_schema.rs", "sha256": "28567d54120dd29d734ddcd3e10c4c6ee128eb7b2d195e4c77bd1cd6c9bc5cfd" }, @@ -1064,15 +1361,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "breg", - "source": "src/artifacts/sha256/9eff8e027f5900d3fd4a1c88b6cae2c9657fcd9e09e3e07706e6bd1a7823e0e3.json", + "source": "src/artifacts/sha256/9949f5e3a10d4deb0038359d76d1f59b160449472bcd0b6c99e45ad776d20f80.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/schema.rs", - "sha256": "c416a52a4fc41b2d5f371e08182cb9dd0671d90601adc8f87900688d470f3e52" + "sha256": "72890db9bee57302bf2dcca70dd6629c24bcd9634414fc507e218fd52daed9f9" }, - "artifact_sha256": "9eff8e027f5900d3fd4a1c88b6cae2c9657fcd9e09e3e07706e6bd1a7823e0e3", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/9eff8e027f5900d3fd4a1c88b6cae2c9657fcd9e09e3e07706e6bd1a7823e0e3.json", + "artifact_sha256": "9949f5e3a10d4deb0038359d76d1f59b160449472bcd0b6c99e45ad776d20f80", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/9949f5e3a10d4deb0038359d76d1f59b160449472bcd0b6c99e45ad776d20f80.json", "id": "https://id.registrystack.org/schemas/breg/module/module.v1alpha1.schema.json", "documented_by": [ { @@ -1097,15 +1394,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "breg", - "source": "src/artifacts/sha256/a9770dec360be9b6ef23c57f12b53cbf24a25b82a318f7f142ead530b65e35f7.json", + "source": "src/artifacts/sha256/4babace1053c7b8446b682ce2db17a220263e669b397a414d98ead9d47af459a.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/schema.rs", - "sha256": "c416a52a4fc41b2d5f371e08182cb9dd0671d90601adc8f87900688d470f3e52" + "sha256": "72890db9bee57302bf2dcca70dd6629c24bcd9634414fc507e218fd52daed9f9" }, - "artifact_sha256": "a9770dec360be9b6ef23c57f12b53cbf24a25b82a318f7f142ead530b65e35f7", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/a9770dec360be9b6ef23c57f12b53cbf24a25b82a318f7f142ead530b65e35f7.json", + "artifact_sha256": "4babace1053c7b8446b682ce2db17a220263e669b397a414d98ead9d47af459a", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/4babace1053c7b8446b682ce2db17a220263e669b397a414d98ead9d47af459a.json", "id": "https://id.registrystack.org/schemas/breg/project/project.v1alpha1.schema.json", "documented_by": [ { @@ -1199,7 +1496,7 @@ "source": "src/artifacts/sha256/809cf2a9a47ab9ba73dd108671963982724f8c9852f5c3ff904496704d0c8357.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "products/breg/contracts/explain/ProposalsExplanation.schema.json", "sha256": "809cf2a9a47ab9ba73dd108671963982724f8c9852f5c3ff904496704d0c8357" }, @@ -1265,7 +1562,7 @@ "source": "src/artifacts/sha256/c30a70ce60b1946e6eb3cd0ebf1267841c97be81115f61e0bbf713262bfd59a3.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "products/breg/contracts/explain/QueriesExplanation.schema.json", "sha256": "c30a70ce60b1946e6eb3cd0ebf1267841c97be81115f61e0bbf713262bfd59a3" }, @@ -1298,7 +1595,7 @@ "source": "src/artifacts/sha256/1c547522ee09c598590eaa302615aaabb5e5628516f85f2f5558989af25210b1.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg-review/src/schema.rs", "sha256": "88a916f23e3a50eb7f392a708ce6b089ffbb51b98e5cf102eccfc2e753da8814" }, @@ -1364,7 +1661,7 @@ "source": "src/artifacts/sha256/1d26b2aee434f0e83ef227e9a502912e72f4ce60510852db5b9d6be1554a6f83.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "products/breg/contracts/explain/RoutesExplanation.schema.json", "sha256": "1d26b2aee434f0e83ef227e9a502912e72f4ce60510852db5b9d6be1554a6f83" }, @@ -1394,15 +1691,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "breg", - "source": "src/artifacts/sha256/3b486d00ae22ddc2cf42d40e5fba33a9de5c2c4ae110ab6a899b16e1261b51c9.json", + "source": "src/artifacts/sha256/55959ae4cc86f1cd393cca382d7cdfd367ccc703c8676a350af4299b59ebb043.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/schema.rs", - "sha256": "c416a52a4fc41b2d5f371e08182cb9dd0671d90601adc8f87900688d470f3e52" + "sha256": "72890db9bee57302bf2dcca70dd6629c24bcd9634414fc507e218fd52daed9f9" }, - "artifact_sha256": "3b486d00ae22ddc2cf42d40e5fba33a9de5c2c4ae110ab6a899b16e1261b51c9", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/3b486d00ae22ddc2cf42d40e5fba33a9de5c2c4ae110ab6a899b16e1261b51c9.json", + "artifact_sha256": "55959ae4cc86f1cd393cca382d7cdfd367ccc703c8676a350af4299b59ebb043", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/55959ae4cc86f1cd393cca382d7cdfd367ccc703c8676a350af4299b59ebb043.json", "id": "https://id.registrystack.org/schemas/breg/runtime/runtime.v1alpha1.schema.json", "documented_by": [ { @@ -1430,7 +1727,7 @@ "source": "src/artifacts/sha256/598f916ebbe176797484afdd5d55165e6567d39bd0094b6876e5419908e0b78c.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-bregctl/src/tool_schema.rs", "sha256": "28567d54120dd29d734ddcd3e10c4c6ee128eb7b2d195e4c77bd1cd6c9bc5cfd" }, @@ -1592,15 +1889,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "casework", - "source": "src/artifacts/sha256/d212936fbb1c87e69b470c1616f7417ab413c8b757ebc62eaeec30995ea92ca3.json", + "source": "src/artifacts/sha256/2481544f84d61d0bd21ba44e31e7bdefcbf9e10b12d3b103fc100ebead1e346e.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-caseworkctl/src/schema.rs", - "sha256": "0410eb375ae9cb9ada7e7cd81bdb897b0843de84972dea876c70d3851c5b76c2" + "sha256": "4f5378799ebb3a0f65b82eff6f654d8323679bf147214eb68c821bbd6c94733a" }, - "artifact_sha256": "d212936fbb1c87e69b470c1616f7417ab413c8b757ebc62eaeec30995ea92ca3", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/d212936fbb1c87e69b470c1616f7417ab413c8b757ebc62eaeec30995ea92ca3.json", + "artifact_sha256": "2481544f84d61d0bd21ba44e31e7bdefcbf9e10b12d3b103fc100ebead1e346e", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/2481544f84d61d0bd21ba44e31e7bdefcbf9e10b12d3b103fc100ebead1e346e.json", "id": "https://id.registrystack.org/schemas/casework/dev-clients/dev-clients.v1alpha1.schema.json", "documented_by": [ { @@ -1859,7 +2156,7 @@ "source": "src/artifacts/sha256/b9158ab194325cbd1a807922d07d35f4616eff823d9b1c76892e73f330443cdd.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework-core/src/schema.rs", "sha256": "1604cf79433172ea4553b2f56365ea9e999a515aa3f16d60959cc652972ae185" }, @@ -1892,7 +2189,7 @@ "source": "src/artifacts/sha256/7131a57da2c495a5f2142ab5e682e6b95cfda65a2e60d743c15c5c0c00b175dd.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework-core/src/schema.rs", "sha256": "1604cf79433172ea4553b2f56365ea9e999a515aa3f16d60959cc652972ae185" }, @@ -2057,7 +2354,7 @@ "source": "src/artifacts/sha256/618dd00144eced267ce239c8412381a555e488af08cb7d6936e63dd963463b0a.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework-core/src/schema.rs", "sha256": "1604cf79433172ea4553b2f56365ea9e999a515aa3f16d60959cc652972ae185" }, @@ -2120,15 +2417,15 @@ "status": "active", "compatibility_line": "v1alpha2", "owner": "casework", - "source": "src/artifacts/sha256/158d1cb317dcc9bbee833684aefff09f215c066ee2f03d61f980088f5c52fc10.json", + "source": "src/artifacts/sha256/9d026bf36a11bc83493f835f028ff52092e0f6c4cd42b471024ead336b6d8a9e.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "products/casework/scripts/generate_cli_schemas.py", "sha256": "1af0958150a6476245c5019f6bc55ae2b3fbe87e88b43900bb75cac4786f0674" }, - "artifact_sha256": "158d1cb317dcc9bbee833684aefff09f215c066ee2f03d61f980088f5c52fc10", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/158d1cb317dcc9bbee833684aefff09f215c066ee2f03d61f980088f5c52fc10.json", + "artifact_sha256": "9d026bf36a11bc83493f835f028ff52092e0f6c4cd42b471024ead336b6d8a9e", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/9d026bf36a11bc83493f835f028ff52092e0f6c4cd42b471024ead336b6d8a9e.json", "id": "https://id.registrystack.org/schemas/casework/report/report.v1alpha2.schema.json", "documented_by": [ { @@ -2186,15 +2483,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "casework", - "source": "src/artifacts/sha256/6c882b720eddc7f0b3bcdb8d6229fd36bbad82c7f96586c8db99370751af9be0.json", + "source": "src/artifacts/sha256/ef82e91c0f0c3366bd62967be8453e90920341c246a6d05f56e4b4b4b8eb85b0.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/schema.rs", - "sha256": "0e260ef7b277b4fbc67ee96a4d24f897c5ca05df5ff85a743792d7173ca677e5" + "sha256": "47d65004647fa541fef411bd213072d25a35384d5e48d03f8fdb51e5569e1bf8" }, - "artifact_sha256": "6c882b720eddc7f0b3bcdb8d6229fd36bbad82c7f96586c8db99370751af9be0", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/6c882b720eddc7f0b3bcdb8d6229fd36bbad82c7f96586c8db99370751af9be0.json", + "artifact_sha256": "ef82e91c0f0c3366bd62967be8453e90920341c246a6d05f56e4b4b4b8eb85b0", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/ef82e91c0f0c3366bd62967be8453e90920341c246a6d05f56e4b4b4b8eb85b0.json", "id": "https://id.registrystack.org/schemas/casework/runtime/runtime.v1alpha1.schema.json", "documented_by": [ { @@ -2417,15 +2714,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "coordinator", - "source": "src/artifacts/sha256/c95bb112c47134d9ef0bfad1d03be54623be2a6f7ec1f9f2145f98b8622921f0.json", + "source": "src/artifacts/sha256/472c4861ab27a301f077784e63cd06891ef4b73813aab1dd802c567daac70d16.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/authoring.rs", - "sha256": "a7e41c24afb242567c5a0a42b401a103a6e598426df89c9aa26e89902a5de9fb" + "sha256": "ae097b5904283e2c57ae726020a6376fe02b975391df284e67e08e5b3ddaf64c" }, - "artifact_sha256": "c95bb112c47134d9ef0bfad1d03be54623be2a6f7ec1f9f2145f98b8622921f0", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/c95bb112c47134d9ef0bfad1d03be54623be2a6f7ec1f9f2145f98b8622921f0.json", + "artifact_sha256": "472c4861ab27a301f077784e63cd06891ef4b73813aab1dd802c567daac70d16", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/472c4861ab27a301f077784e63cd06891ef4b73813aab1dd802c567daac70d16.json", "id": "https://id.registrystack.org/schemas/coordinator/project/project.v1alpha1.schema.json", "documented_by": [ { @@ -2450,15 +2747,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "coordinator", - "source": "src/artifacts/sha256/07807301acfb80f24e627e13c244aa19b30ce8f3b1b5d7f7bbd51a93b84f456f.json", + "source": "src/artifacts/sha256/bbbc49cc6aa19d2b6329db459ac7d5c8635583e2a0ca63f2d75556840a804202.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/runtime.rs", - "sha256": "1dd7411d02e33448098e778908bd775b3e7dec516a2c1c0f42e0aff671946911" + "sha256": "e544e9afbc39d84d18936d8ea1fffd903ebd94121db10d142394fa5d02ec5916" }, - "artifact_sha256": "07807301acfb80f24e627e13c244aa19b30ce8f3b1b5d7f7bbd51a93b84f456f", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/07807301acfb80f24e627e13c244aa19b30ce8f3b1b5d7f7bbd51a93b84f456f.json", + "artifact_sha256": "bbbc49cc6aa19d2b6329db459ac7d5c8635583e2a0ca63f2d75556840a804202", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/bbbc49cc6aa19d2b6329db459ac7d5c8635583e2a0ca63f2d75556840a804202.json", "id": "https://id.registrystack.org/schemas/coordinator/runtime/runtime.v1alpha1.schema.json", "documented_by": [ { @@ -2486,9 +2783,9 @@ "source": "src/artifacts/sha256/e42e044eb828ff7e12f0a199fc95065c04baeadf91773c2d28ba9a1b0252090e.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/scenarios.rs", - "sha256": "78c0bc562ac7d32104b9b5a8818ff7a7d4c7a1ca737ab39e8f4c688cf6e14f04" + "sha256": "e20158e5382f690d46879161f32b5adda80385767b2c99b6efb11f166d43a394" }, "artifact_sha256": "e42e044eb828ff7e12f0a199fc95065c04baeadf91773c2d28ba9a1b0252090e", "immutable_uri": "https://id.registrystack.org/artifacts/sha256/e42e044eb828ff7e12f0a199fc95065c04baeadf91773c2d28ba9a1b0252090e.json", @@ -2519,7 +2816,7 @@ "source": "src/artifacts/sha256/47cbeecaaa07a52b0af259faff736b4e32e6a0c1ed674634b4cc6815cb369fd4.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "products/discovery/schemas/evidence-mapping.schema.json", "sha256": "47cbeecaaa07a52b0af259faff736b4e32e6a0c1ed674634b4cc6815cb369fd4" }, @@ -2552,7 +2849,7 @@ "source": "src/artifacts/sha256/97014247dcc83bc148d355a5e56ffaf8ab0a522cd0f462c93a97fda19bcb6ffc.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "products/discovery/schemas/index.schema.json", "sha256": "97014247dcc83bc148d355a5e56ffaf8ab0a522cd0f462c93a97fda19bcb6ffc" }, @@ -2585,7 +2882,7 @@ "source": "src/artifacts/sha256/19f90f5a2f87b250dcd54d16fe1810fbea6bdd58e6ec46891e20b3c5110605d5.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "products/discovery/schemas/origins.schema.json", "sha256": "19f90f5a2f87b250dcd54d16fe1810fbea6bdd58e6ec46891e20b3c5110605d5" }, @@ -2618,7 +2915,7 @@ "source": "src/artifacts/sha256/d4c5894f466ce1683e7d0b3db2b86413fa71cb7cea81843d12dc1ccbafd5cff8.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "products/discovery/schemas/runtime.schema.json", "sha256": "d4c5894f466ce1683e7d0b3db2b86413fa71cb7cea81843d12dc1ccbafd5cff8" }, @@ -2651,7 +2948,7 @@ "source": "src/artifacts/sha256/dc7d339a46f7450b1c158e7c5bce237f3c1c5ea54a03c1b3fa3e53cb54a1c4a1.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-documents/src/schema.rs", "sha256": "9d6fc4ae1e652e78cb3de6410e3fb044ea2883e468db99e10bbb7ac4022a4914" }, @@ -2684,7 +2981,7 @@ "source": "src/artifacts/sha256/d341927b2bb9a139cebe16a2edff9acaf6b069c9863b6f6f12108be6e4cd0731.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-documents/src/schema.rs", "sha256": "9d6fc4ae1e652e78cb3de6410e3fb044ea2883e468db99e10bbb7ac4022a4914" }, @@ -2717,7 +3014,7 @@ "source": "src/artifacts/sha256/02988cabcddaa2560bc4efae9d8ad45bbc800fb2be14abfbb59533112e1c892a.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-documents/src/schema.rs", "sha256": "9d6fc4ae1e652e78cb3de6410e3fb044ea2883e468db99e10bbb7ac4022a4914" }, @@ -2750,7 +3047,7 @@ "source": "src/artifacts/sha256/43d58cc3028e7a97f91929625aeff1ec243f937e16ee455de8f3cb1caa4675b7.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-documents/src/schema.rs", "sha256": "9d6fc4ae1e652e78cb3de6410e3fb044ea2883e468db99e10bbb7ac4022a4914" }, @@ -2783,7 +3080,7 @@ "source": "src/artifacts/sha256/8f4833f26187b81d360edb0849313806ecdc55191a2dc1bbad731023130fa873.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-documents/src/schema.rs", "sha256": "9d6fc4ae1e652e78cb3de6410e3fb044ea2883e468db99e10bbb7ac4022a4914" }, @@ -2816,7 +3113,7 @@ "source": "src/artifacts/sha256/5fd729f00c7942e6422b726a75b02d931218c416a1caffdfb7b129fd8ff22c4c.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-evidence-authoring/src/schema.rs", "sha256": "62464b27cb80552652f785f820ed3655cc9d48aa65dba30dcaea5696c5e79f70" }, @@ -2912,16 +3209,16 @@ "status": "active", "compatibility_line": "v1", "owner": "evidence", - "source": "src/artifacts/sha256/97ca7f9e2c530ed09793286128b3b2a145842dce2cab235d8066790da8f746a0.yaml", + "source": "src/artifacts/sha256/2847a56eda9c8b838d28fde619853c36851acc57b094b74ec2665150f1ace8d4.yaml", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "products/evidence/contracts/bundle.schema.yaml", - "sha256": "97ca7f9e2c530ed09793286128b3b2a145842dce2cab235d8066790da8f746a0" + "sha256": "2847a56eda9c8b838d28fde619853c36851acc57b094b74ec2665150f1ace8d4" }, - "artifact_sha256": "97ca7f9e2c530ed09793286128b3b2a145842dce2cab235d8066790da8f746a0", + "artifact_sha256": "2847a56eda9c8b838d28fde619853c36851acc57b094b74ec2665150f1ace8d4", "artifact_media_type": "application/yaml", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/97ca7f9e2c530ed09793286128b3b2a145842dce2cab235d8066790da8f746a0.yaml", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/2847a56eda9c8b838d28fde619853c36851acc57b094b74ec2665150f1ace8d4.yaml", "id": "https://id.registrystack.org/schemas/evidence/bundle/bundle.v1.schema.json", "documented_by": [ { @@ -2949,7 +3246,7 @@ "source": "src/artifacts/sha256/777f3b0aaf8129b9beacba85c188dce0b7aa841fe459c9ee517253eb49c7dc53.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-evidence-client/src/schema.rs", "sha256": "b28e799ebc6f2da79fb99e53af3b117aef9bc6d544a89c9fac1935572d6f0508" }, @@ -2982,7 +3279,7 @@ "source": "src/artifacts/sha256/67cddb577791407b017c46465860c1a1674b45d3b7ed4005a2ea12cea3bb61d5.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-evidence-client/src/schema.rs", "sha256": "b28e799ebc6f2da79fb99e53af3b117aef9bc6d544a89c9fac1935572d6f0508" }, @@ -3015,9 +3312,9 @@ "source": "src/artifacts/sha256/b131ade304b8fa1e4afbf5ab8be445d72f8117d75cf996a00d9d20d774575ea1.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-evidence/src/schema.rs", - "sha256": "42c9e8cde198b83a32ac493c7723de6a97af4a4b7300a2b4c12a6dd25642ee41" + "sha256": "c598415dc0abd9f1cb985c9bda305aaf6d926ed286732ff5428bda8dc3469b79" }, "artifact_sha256": "b131ade304b8fa1e4afbf5ab8be445d72f8117d75cf996a00d9d20d774575ea1", "immutable_uri": "https://id.registrystack.org/artifacts/sha256/b131ade304b8fa1e4afbf5ab8be445d72f8117d75cf996a00d9d20d774575ea1.json", @@ -3045,15 +3342,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "evidence", - "source": "src/artifacts/sha256/dfd68c8242ca73530057a7b473d668b9904e5a947fceaa80badff7647f127d50.json", + "source": "src/artifacts/sha256/912661673c41c1119a8bd83809c66cc2d38b16e171c963b4988175c74f627664.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-evidence/src/schema.rs", - "sha256": "42c9e8cde198b83a32ac493c7723de6a97af4a4b7300a2b4c12a6dd25642ee41" + "sha256": "c598415dc0abd9f1cb985c9bda305aaf6d926ed286732ff5428bda8dc3469b79" }, - "artifact_sha256": "dfd68c8242ca73530057a7b473d668b9904e5a947fceaa80badff7647f127d50", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/dfd68c8242ca73530057a7b473d668b9904e5a947fceaa80badff7647f127d50.json", + "artifact_sha256": "912661673c41c1119a8bd83809c66cc2d38b16e171c963b4988175c74f627664", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/912661673c41c1119a8bd83809c66cc2d38b16e171c963b4988175c74f627664.json", "id": "https://id.registrystack.org/schemas/evidence/fixture/fixture.v1alpha1.schema.json", "documented_by": [ { @@ -3081,7 +3378,7 @@ "source": "src/artifacts/sha256/37d6a662a61c9a5730be870e1d202209d0bebeb658968f978f317bb8995c1cb5.yaml", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "products/evidence/contracts/holder-bound-verification-policy.schema.yaml", "sha256": "37d6a662a61c9a5730be870e1d202209d0bebeb658968f978f317bb8995c1cb5" }, @@ -3115,7 +3412,7 @@ "source": "src/artifacts/sha256/761a6a1300c328344666ebacdb7c811deefd80ed293e9bc4c0adea3cd435b9c5.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-evidence-authoring/src/schema.rs", "sha256": "62464b27cb80552652f785f820ed3655cc9d48aa65dba30dcaea5696c5e79f70" }, @@ -3148,7 +3445,7 @@ "source": "src/artifacts/sha256/701ee38be07cd80d8fd73a393abfb243511d3accd7a34124893c39781d883191.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-evidence-oid4vci/src/schema.rs", "sha256": "0cc005a1e55672ce3a11ad5fd0c4e714155ec6e4b003328bd025a88d29d455b3" }, @@ -3178,15 +3475,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "evidence", - "source": "src/artifacts/sha256/3c8a56419f2b6a011463736e94f99c868f78636325dd8d34b3b70c0c693a65f1.json", + "source": "src/artifacts/sha256/62c45846105e0231417e0450568a899ea05f78f41250b450353c074407cc5f26.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-evidence-authoring/src/schema.rs", "sha256": "62464b27cb80552652f785f820ed3655cc9d48aa65dba30dcaea5696c5e79f70" }, - "artifact_sha256": "3c8a56419f2b6a011463736e94f99c868f78636325dd8d34b3b70c0c693a65f1", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/3c8a56419f2b6a011463736e94f99c868f78636325dd8d34b3b70c0c693a65f1.json", + "artifact_sha256": "62c45846105e0231417e0450568a899ea05f78f41250b450353c074407cc5f26", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/62c45846105e0231417e0450568a899ea05f78f41250b450353c074407cc5f26.json", "id": "https://id.registrystack.org/schemas/evidence/project/project.v1alpha1.schema.json", "documented_by": [ { @@ -3244,16 +3541,16 @@ "status": "active", "compatibility_line": "v1", "owner": "evidence", - "source": "src/artifacts/sha256/1d1ef718bebe3d3deba5fd434579f32a05bb92e87836137e7b729f3fa4c26b4c.yaml", + "source": "src/artifacts/sha256/fd4ef085ef94087f5fa6d846a284957345d5463df44372c5667ea1a8cf643d0d.yaml", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "products/evidence/contracts/runtime.schema.yaml", - "sha256": "1d1ef718bebe3d3deba5fd434579f32a05bb92e87836137e7b729f3fa4c26b4c" + "sha256": "fd4ef085ef94087f5fa6d846a284957345d5463df44372c5667ea1a8cf643d0d" }, - "artifact_sha256": "1d1ef718bebe3d3deba5fd434579f32a05bb92e87836137e7b729f3fa4c26b4c", + "artifact_sha256": "fd4ef085ef94087f5fa6d846a284957345d5463df44372c5667ea1a8cf643d0d", "artifact_media_type": "application/yaml", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/1d1ef718bebe3d3deba5fd434579f32a05bb92e87836137e7b729f3fa4c26b4c.yaml", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/fd4ef085ef94087f5fa6d846a284957345d5463df44372c5667ea1a8cf643d0d.yaml", "id": "https://id.registrystack.org/schemas/evidence/runtime/runtime.v1alpha1.schema.json", "documented_by": [ { @@ -3314,7 +3611,7 @@ "source": "src/artifacts/sha256/8ebfd8d54b92be742595c6bc1d4a71a570ae04ab80e85d0d276522f0967ab7bf.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-evidence-authoring/src/schema.rs", "sha256": "62464b27cb80552652f785f820ed3655cc9d48aa65dba30dcaea5696c5e79f70" }, @@ -3380,7 +3677,7 @@ "source": "src/artifacts/sha256/a1bab27c4778502d75e2041b7d38dd0dc9cfffaa91d52625813b16cf694b9b22.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-evidence-authoring/src/schema.rs", "sha256": "62464b27cb80552652f785f820ed3655cc9d48aa65dba30dcaea5696c5e79f70" }, @@ -3476,15 +3773,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "evidence", - "source": "src/artifacts/sha256/fc7898b8be0e7ac26fd46a4624d37854f4df52eb4a372dac2e6cbc0575b3aed3.json", + "source": "src/artifacts/sha256/bb19696ad1cf4f6c89de72d1b50da9f8897761cd15066c4281500836306ea09e.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-evidence-authoring/src/schema.rs", "sha256": "62464b27cb80552652f785f820ed3655cc9d48aa65dba30dcaea5696c5e79f70" }, - "artifact_sha256": "fc7898b8be0e7ac26fd46a4624d37854f4df52eb4a372dac2e6cbc0575b3aed3", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/fc7898b8be0e7ac26fd46a4624d37854f4df52eb4a372dac2e6cbc0575b3aed3.json", + "artifact_sha256": "bb19696ad1cf4f6c89de72d1b50da9f8897761cd15066c4281500836306ea09e", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/bb19696ad1cf4f6c89de72d1b50da9f8897761cd15066c4281500836306ea09e.json", "id": "https://id.registrystack.org/schemas/evidence/target/target.v1alpha1.schema.json", "documented_by": [ { @@ -3512,7 +3809,7 @@ "source": "src/artifacts/sha256/b6a7e7200bf014a4b31dd064aa39bcbdb60fb624ef8c305f4c3431958b47bb12.yaml", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "products/evidence/contracts/verification-policy.schema.yaml", "sha256": "b6a7e7200bf014a4b31dd064aa39bcbdb60fb624ef8c305f4c3431958b47bb12" }, @@ -3546,7 +3843,7 @@ "source": "src/artifacts/sha256/e45632976b2436dc468805b78e6ac35d4cb05340b260370d011eee68fcf28c5d.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "products/identifiers/contracts/catalog.v1.schema.json", "sha256": "e45632976b2436dc468805b78e6ac35d4cb05340b260370d011eee68fcf28c5d" }, @@ -3579,7 +3876,7 @@ "source": "src/artifacts/sha256/b68362a53e0abd42941a79dc6bd280538a5510c9046dc8fb53cbdd29be3d898e.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-manifest-cli/src/schema.rs", "sha256": "19d037ee50b143b70576b4ce50808883e0ccb831373f72d42beed770a67d8eae" }, @@ -3612,7 +3909,7 @@ "source": "src/artifacts/sha256/f8e367082254b713f8347ccb9055d7ac527ddef43b06b33239f8d81d0ed11012.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-manifest-cli/src/schema.rs", "sha256": "19d037ee50b143b70576b4ce50808883e0ccb831373f72d42beed770a67d8eae" }, @@ -3645,7 +3942,7 @@ "source": "src/artifacts/sha256/af3c4d9d5e6da2a07c2d26fc9a06f7bdb3358f6145c54b25d7a045d3066c09e6.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-messaging/src/schema.rs", "sha256": "566657f59c1c8bb5059c0e0e2faa499f559a6fe905d1d8b1aba2eff781f62a09" }, @@ -3678,7 +3975,7 @@ "source": "src/artifacts/sha256/06439b2e8b23831f90676f4103605a1fc7e79e34f9e8935023cf173e122934de.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-messaging/src/schema.rs", "sha256": "566657f59c1c8bb5059c0e0e2faa499f559a6fe905d1d8b1aba2eff781f62a09" }, @@ -3711,7 +4008,7 @@ "source": "src/artifacts/sha256/d2c4ef5c2ca281c720117c95c5b136be7353d1da70a99f9c9455dd6b94dcae7b.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-messaging/src/schema.rs", "sha256": "566657f59c1c8bb5059c0e0e2faa499f559a6fe905d1d8b1aba2eff781f62a09" }, @@ -3744,7 +4041,7 @@ "source": "src/artifacts/sha256/5d99a71fc7fb00d3d4f6f4ffc4f6399570e60497e53a080cd571fc0ef3bd0d42.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-messaging/src/schema.rs", "sha256": "566657f59c1c8bb5059c0e0e2faa499f559a6fe905d1d8b1aba2eff781f62a09" }, @@ -3777,7 +4074,7 @@ "source": "src/artifacts/sha256/3fa0953ce1c3effc0a35c61e5c93d484d5b948e5f64478999c6ea671e588b3d1.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-platform-yaml/src/check_acceptances.rs", "sha256": "9f01dd394d730e590710e430baf1928ee3e02bb52c1d3ab53b41e447ac692fd2" }, @@ -3810,7 +4107,7 @@ "source": "src/artifacts/sha256/c0ceb9cbec8393e03e125d10b4d512107bc120c7b5d31398cfd9256c78a49aee.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-cli-api/src/schema.rs", "sha256": "78e2cceb547c9691ee7636d8d3527aebde5a54570fa69c2fbced8b3583f561b1" }, @@ -3843,7 +4140,7 @@ "source": "src/artifacts/sha256/5ea2b8f0276de7b574efc392e72672179ce8e1ccea923dc62f10cbb115274099.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-cli-api/src/schema.rs", "sha256": "78e2cceb547c9691ee7636d8d3527aebde5a54570fa69c2fbced8b3583f561b1" }, @@ -3865,6 +4162,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/platform/mcp-runtime/mcp-runtime.v1alpha1.schema.json", + "title": "Registry Stack configurable MCP gateway runtime configuration", + "description": "Configurable Registry Stack MCP gateway runtime configuration JSON Schema.", + "kind": "schema", + "status": "active", + "compatibility_line": "v1alpha1", + "owner": "platform", + "source": "src/artifacts/sha256/28757cb955ea96d628ff2442cc9dd7ce4f11998edada848a834ef9dfbc3c5c3e.json", + "source_reference": { + "repository": "registry-stack", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", + "path": "crates/registry-mcp/src/schema.rs", + "sha256": "92b053026e128997664c3981e09347cb4d2f1bd1c34dd96f646db0b37bdb4d7c" + }, + "artifact_sha256": "28757cb955ea96d628ff2442cc9dd7ce4f11998edada848a834ef9dfbc3c5c3e", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/28757cb955ea96d628ff2442cc9dd7ce4f11998edada848a834ef9dfbc3c5c3e.json", + "id": "https://id.registrystack.org/schemas/platform/mcp-runtime/mcp-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/platform/task-connection/task-connection.v1alpha1.schema.json", "title": "Registry Stack task connection", @@ -3876,7 +4206,7 @@ "source": "src/artifacts/sha256/706e5506bf8bb44d7717ff00e841af2f862502437f3502c3eeadde91a0465030.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-thunderid-tooling/src/schema.rs", "sha256": "a0d71d083c0502cd9f9805451c1f80a1f0cf5623df094886cb1a6a140ce8bfe0" }, @@ -3906,15 +4236,15 @@ "status": "active", "compatibility_line": "v1", "owner": "registry-record", - "source": "src/artifacts/sha256/31cae7de9e84904e300d0d77ffbfdfc7a1de6127719a0ccbb3f6a88d7306510e.json", + "source": "src/artifacts/sha256/e9ddb96d7b521da29b033353ffa854e2e003b1c952f9aad847b30ed1e3b8cf2a.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "products/registry-record/schema/registry-record-v1.schema.json", - "sha256": "31cae7de9e84904e300d0d77ffbfdfc7a1de6127719a0ccbb3f6a88d7306510e" + "sha256": "e9ddb96d7b521da29b033353ffa854e2e003b1c952f9aad847b30ed1e3b8cf2a" }, - "artifact_sha256": "31cae7de9e84904e300d0d77ffbfdfc7a1de6127719a0ccbb3f6a88d7306510e", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/31cae7de9e84904e300d0d77ffbfdfc7a1de6127719a0ccbb3f6a88d7306510e.json", + "artifact_sha256": "e9ddb96d7b521da29b033353ffa854e2e003b1c952f9aad847b30ed1e3b8cf2a", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/e9ddb96d7b521da29b033353ffa854e2e003b1c952f9aad847b30ed1e3b8cf2a.json", "id": "https://id.registrystack.org/schemas/registry-record/v1", "documented_by": [ { @@ -4188,7 +4518,7 @@ "source": "src/artifacts/sha256/48c416e7a409cde355bb7e7a1a1bd8eac6248e65867fd76b55b777d4b6e335d2.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-render/src/schema.rs", "sha256": "187b3c8a7cb457962a2cadc80432af5c81124641ca356f539f634a5c2403a309" }, @@ -4221,7 +4551,7 @@ "source": "src/artifacts/sha256/f511f546980251198954678790b986a5aa2cb4f037bd463f20531b8c9736d28b.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-render/src/schema.rs", "sha256": "187b3c8a7cb457962a2cadc80432af5c81124641ca356f539f634a5c2403a309" }, @@ -4254,7 +4584,7 @@ "source": "src/artifacts/sha256/e853c774b697a8debb56537eb3a14c4e8c32f9fa8771eba1cd05eb397505b3c6.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-render/src/schema.rs", "sha256": "187b3c8a7cb457962a2cadc80432af5c81124641ca356f539f634a5c2403a309" }, @@ -4287,7 +4617,7 @@ "source": "src/artifacts/sha256/dbb4bea390c11e37fee5840aef5eab34e39a4f5d34bb72354fcf38f041bbb974.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/schema.rs", "sha256": "7b0439b0479c783a02f1a2b4bd0633fe8440b8b015ca7c8978668f5a988ca1cc" }, @@ -4320,7 +4650,7 @@ "source": "src/artifacts/sha256/1cb82ae0e7ec13bf7d54b109546a4d68cb2b3b031868941728dba209bea8bf21.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/schema.rs", "sha256": "7b0439b0479c783a02f1a2b4bd0633fe8440b8b015ca7c8978668f5a988ca1cc" }, @@ -4353,7 +4683,7 @@ "source": "src/artifacts/sha256/77ab388672f3d58275b278a94ebdddcf24828565af707f6720646cf1e09608e8.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/schema.rs", "sha256": "7b0439b0479c783a02f1a2b4bd0633fe8440b8b015ca7c8978668f5a988ca1cc" }, @@ -4386,7 +4716,7 @@ "source": "src/artifacts/sha256/eaf6f80ebeb9ebb3896982b2b334a1926e30fca4d62615c368d4b69e9c3366af.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling/src/schema.rs", "sha256": "72c9a636e83d70101ef7110c0da9cd257cb8b3789f6df27910890eabbf8ae990" }, diff --git a/public/schemas/platform/mcp-runtime/mcp-runtime.v1alpha1.schema.json b/public/schemas/platform/mcp-runtime/mcp-runtime.v1alpha1.schema.json new file mode 100644 index 000000000..bfd2aaa71 --- /dev/null +++ b/public/schemas/platform/mcp-runtime/mcp-runtime.v1alpha1.schema.json @@ -0,0 +1,855 @@ +{ + "$defs": { + "AccessTokenAlgorithm": { + "description": "An asymmetric access-token signature algorithm.", + "enum": [ + "RS256", + "RS384", + "ES256", + "ES384", + "EdDSA" + ], + "type": "string" + }, + "AdapterDataClass": { + "enum": [ + "non-personal" + ], + "type": "string" + }, + "AdapterToolBinding": { + "additionalProperties": false, + "properties": { + "description": { + "maxLength": 4096, + "minLength": 1, + "type": "string" + }, + "operation": { + "type": "string" + } + }, + "required": [ + "operation", + "description" + ], + "type": "object" + }, + "ApplicationConfig": { + "additionalProperties": false, + "description": "The proposal-mode Action and its target input, resolved by the gateway.", + "properties": { + "action": { + "$ref": "#/$defs/LocalId" + }, + "targetInput": { + "$ref": "#/$defs/LocalId", + "description": "The input identifier of the input that references the citizen's own\nrecord." + } + }, + "required": [ + "action", + "targetInput" + ], + "type": "object" + }, + "AuditConfig": { + "additionalProperties": false, + "description": "The audit block every Registry Stack product shares: the hash key, then a\n`file` (the default) or `stdout` destination, with rotation and retention\nfor 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`." + }, + "hashKeyRef": { + "$ref": "#/$defs/SecretReference", + "description": "Secret reference to the audit hash key." + }, + "path": { + "description": "The absolute path of the active audit file. Required for a `file`\ndestination, and refused with `stdout`.", + "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" + } + }, + "required": [ + "hashKeyRef" + ], + "then": { + "not": { + "anyOf": [ + { + "required": [ + "path" + ] + }, + { + "required": [ + "rotateBytes" + ] + }, + { + "required": [ + "retentionDays" + ] + } + ] + } + }, + "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" + } + ] + }, + "Binding": { + "additionalProperties": false, + "properties": { + "name": { + "$ref": "#/$defs/LocalId" + }, + "provider": { + "$ref": "#/$defs/ProviderConfig" + }, + "tools": { + "items": { + "pattern": "^[A-Za-z0-9_.-]{1,256}$", + "type": "string" + }, + "maxItems": 128, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "name", + "tools", + "provider" + ], + "type": "object" + }, + "CaseworkAuthority": { + "description": "This selector declares the intended backend contract; Casework independently\nadmits the trusted gateway and enforces current task and source authority.", + "enum": [ + "delegated-staff-read" + ], + "type": "string" + }, + "DelegationConfig": { + "additionalProperties": false, + "properties": { + "audience": { + "$ref": "#/$defs/ResourceUri" + }, + "exchange": { + "$ref": "#/$defs/ExchangeConfig" + }, + "scopes": { + "items": { + "$ref": "#/$defs/ScopeToken" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "exchange", + "audience", + "scopes" + ], + "type": "object" + }, + "DetailsConfig": { + "additionalProperties": false, + "description": "The Record type holding the citizen's own record, found through the agent\nprofile's linked lookup.", + "properties": { + "recordType": { + "$ref": "#/$defs/LocalId" + } + }, + "required": [ + "recordType" + ], + "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" + }, + "ExchangeConfig": { + "additionalProperties": false, + "description": "The gateway's own client identity, used only to exchange a verified\ninbound token for a delegated registry token.", + "properties": { + "assertionAudience": { + "$ref": "#/$defs/ExternalId", + "description": "The client-assertion audience, when the authorization server expects\none other than its token endpoint. Omitted, the assertion names the\ntoken endpoint." + }, + "clientId": { + "$ref": "#/$defs/ExternalId", + "description": "The gateway's client identifier at the authorization server. It may\nnot also be one of `resourceServer.allowedClients`." + }, + "privateKeyRef": { + "$ref": "#/$defs/SecretReference", + "description": "Secret reference to the private JWK the gateway signs its client\nassertions with, under a declared provider." + }, + "tokenEndpoint": { + "$ref": "#/$defs/Url", + "description": "The authorization server's token endpoint. An https URL with no query\nor fragment; plain http is accepted only on a loopback host under\n`development-loopback`." + } + }, + "required": [ + "tokenEndpoint", + "clientId", + "privateKeyRef" + ], + "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" + } + ] + }, + "LimitsConfig": { + "additionalProperties": false, + "properties": { + "maximumRequestBytes": { + "default": 65536, + "description": "Largest request body the MCP endpoint reads, in bytes.", + "format": "uint64", + "maximum": 1048576, + "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" + }, + "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. The vocabulary is closed so configuration\ncannot turn on debug output or dependency logging.", + "enum": [ + "error", + "warn", + "info" + ], + "type": "string" + }, + "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" + }, + "ProviderConfig": { + "oneOf": [ + { + "additionalProperties": false, + "description": "Citizen-facing Base Registry Engine capabilities, delegated per call.", + "properties": { + "exchange": { + "$ref": "#/$defs/ExchangeConfig" + }, + "registry": { + "$ref": "#/$defs/RegistryConfig" + }, + "service": { + "$ref": "#/$defs/ServiceConfig" + }, + "type": { + "const": "breg", + "type": "string" + } + }, + "required": [ + "type", + "registry", + "exchange", + "service" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Assigned-task reads under the backend's explicitly opted-in delegated-reader policy.", + "properties": { + "authority": { + "$ref": "#/$defs/CaseworkAuthority" + }, + "authorization": { + "$ref": "#/$defs/DelegationConfig" + }, + "baseUrl": { + "$ref": "#/$defs/Url" + }, + "pageSize": { + "default": 25, + "format": "uint", + "maximum": 100, + "minimum": 1, + "type": "integer" + }, + "readerPolicy": { + "$ref": "#/$defs/LocalId" + }, + "sourceProfile": { + "$ref": "#/$defs/LocalId" + }, + "type": { + "const": "casework", + "type": "string" + } + }, + "required": [ + "type", + "authority", + "baseUrl", + "readerPolicy", + "authorization" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Non-personal reads from a separately operated Adapter deployment.", + "properties": { + "audience": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[^\\u0000-\\u001F\\u007F-\\u009F]+$", + "type": "string" + }, + "baseUrl": { + "$ref": "#/$defs/Url" + }, + "contractDigest": { + "$ref": "#/$defs/Digest" + }, + "contractFile": { + "pattern": "^/", + "type": "string" + }, + "dataClass": { + "$ref": "#/$defs/AdapterDataClass" + }, + "machineTokenRef": { + "$ref": "#/$defs/SecretReference" + }, + "operations": { + "additionalProperties": { + "$ref": "#/$defs/AdapterToolBinding" + }, + "maxProperties": 128, + "minProperties": 1, + "propertyNames": { + "$ref": "#/$defs/ExternalId", + "pattern": "^[A-Za-z0-9_.-]{1,256}$" + }, + "type": "object" + }, + "type": { + "const": "adapter", + "type": "string" + } + }, + "required": [ + "type", + "baseUrl", + "contractFile", + "contractDigest", + "dataClass", + "audience", + "machineTokenRef", + "operations" + ], + "type": "object" + } + ] + }, + "RateLimitConfig": { + "additionalProperties": false, + "properties": { + "burst": { + "description": "Requests admitted at once before the average applies.", + "format": "uint32", + "maximum": 1000000, + "minimum": 1, + "type": "integer" + }, + "requestsPerMinute": { + "description": "Requests admitted per minute, on average.", + "format": "uint32", + "maximum": 1000000, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "requestsPerMinute", + "burst" + ], + "type": "object" + }, + "RateLimits": { + "additionalProperties": false, + "properties": { + "perClient": { + "$ref": "#/$defs/RateLimitConfig" + }, + "perPrincipal": { + "$ref": "#/$defs/RateLimitConfig" + } + }, + "required": [ + "perPrincipal", + "perClient" + ], + "type": "object" + }, + "RegistryConfig": { + "additionalProperties": false, + "description": "The outbound half: the registry the gateway acts on.", + "properties": { + "accessProfile": { + "$ref": "#/$defs/LocalId", + "description": "The standing agent access profile every call names." + }, + "attemptTimeoutMilliseconds": { + "default": 10000, + "description": "How long one registry call may take before it is abandoned, in\nmilliseconds.", + "format": "uint64", + "maximum": 120000, + "minimum": 100, + "type": "integer" + }, + "audience": { + "$ref": "#/$defs/ResourceUri", + "description": "The registry's token audience, requested as the exchange resource." + }, + "baseUrl": { + "$ref": "#/$defs/Url", + "description": "The registry deployment's base URL. An https URL with no query or\nfragment; plain http is accepted only on a loopback host under\n`development-loopback`." + }, + "scopes": { + "description": "The scopes requested for the delegated registry token.", + "items": { + "$ref": "#/$defs/ScopeToken" + }, + "maxItems": 128, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "baseUrl", + "accessProfile", + "audience", + "scopes" + ], + "type": "object" + }, + "ResourceServerConfig": { + "additionalProperties": false, + "description": "The inbound half: how a chat host's access token is verified.", + "properties": { + "algorithms": { + "description": "The asymmetric signature algorithms an accepted token may use.", + "items": { + "$ref": "#/$defs/AccessTokenAlgorithm" + }, + "maxItems": 128, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "allowInsecureHttp": { + "default": false, + "description": "Permit plain HTTP beyond loopback to the declared issuer and to a JWKS\nURI declared in `jwksSource`.", + "type": "boolean" + }, + "allowedClients": { + "description": "The chat-host clients whose tokens the gateway accepts.", + "items": { + "$ref": "#/$defs/ExternalId" + }, + "maxItems": 128, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "issuer": { + "$ref": "#/$defs/Url", + "description": "The exact issuer accepted in access-token `iss` claims. An https URL\nwith no query or fragment; plain http is accepted only on a loopback\nhost under `development-loopback`." + }, + "jwksSource": { + "$ref": "#/$defs/JwksSource", + "default": { + "type": "discovery" + }, + "description": "Where the issuer's signing keys come from. Omitted, they are read\nthrough the issuer's OpenID Connect discovery document." + }, + "maximumTokenLifetimeSeconds": { + "default": 3600, + "description": "The longest lifetime an accepted access token may declare, from its\n`iat` to its `exp`, in seconds.", + "format": "uint64", + "maximum": 86400, + "minimum": 1, + "type": "integer" + }, + "requiredScopes": { + "description": "Scopes every accepted token must carry. There is no sentinel for\n\"any scope\": a gateway that acts for a citizen always names the\nscope that consent was given for.", + "items": { + "$ref": "#/$defs/ScopeToken" + }, + "maxItems": 128, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "resource": { + "$ref": "#/$defs/Url", + "description": "This gateway's resource identifier: the exact URL of its MCP endpoint,\nwhich every accepted token must name as its audience. An https URL\nwhose path is `/mcp`, with no query or fragment; plain http is\naccepted only on a loopback host under `development-loopback`." + }, + "scopeClaim": { + "$ref": "#/$defs/ExternalId", + "default": "scope", + "description": "The access-token claim that carries the granted scopes." + } + }, + "required": [ + "resource", + "issuer", + "algorithms", + "allowedClients", + "requiredScopes" + ], + "type": "object" + }, + "ResourceUri": { + "description": "An RFC 8707 resource indicator: an absolute URI without a fragment. The reader also refuses user information and a URI it cannot parse.", + "maxLength": 512, + "minLength": 1, + "pattern": "^[A-Za-z][A-Za-z0-9+.-]*:(?:[A-Za-z0-9._~:/?\\[\\]@!$&'()*+,;=-]|%[0-9A-Fa-f]{2})*$", + "type": "string" + }, + "ScopeToken": { + "description": "An RFC 6749 scope token: printable ASCII other than space, `\"`, and `\\`.", + "maxLength": 512, + "minLength": 1, + "pattern": "^[!#-\\[\\]-~]+$", + "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" + }, + "ServiceConfig": { + "additionalProperties": false, + "description": "The authored service a citizen is told about, and the registry entities\nits tools work over.", + "properties": { + "application": { + "$ref": "#/$defs/ApplicationConfig" + }, + "description": { + "$ref": "#/$defs/ServiceText" + }, + "details": { + "$ref": "#/$defs/DetailsConfig" + }, + "disclosure": { + "$ref": "#/$defs/ServiceText", + "description": "What the citizen is told about the data the chat host will see." + }, + "name": { + "$ref": "#/$defs/ServiceText" + }, + "reviewBaseUrl": { + "$ref": "#/$defs/Url", + "description": "The citizen-facing review page; an application is reviewed and\nsubmitted there, never through the chat host. The review page's\n`publicOrigin`, with no path, query, or fragment." + } + }, + "required": [ + "name", + "description", + "disclosure", + "details", + "application", + "reviewBaseUrl" + ], + "type": "object" + }, + "ServiceText": { + "description": "Text a citizen reads: not blank, at most 4096 characters.", + "maxLength": 4096, + "minLength": 1, + "pattern": "\\S", + "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" + }, + "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/mcp-runtime/mcp-runtime.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/platform/mcp-runtime/v1alpha1", + "type": "string" + }, + "audit": { + "$ref": "#/$defs/AuditConfig" + }, + "bindings": { + "items": { + "$ref": "#/$defs/Binding" + }, + "maxItems": 32, + "minItems": 1, + "type": "array" + }, + "kind": { + "const": "PlatformMcpRuntimeConfig", + "type": "string" + }, + "limits": { + "$ref": "#/$defs/LimitsConfig" + }, + "listener": { + "$ref": "#/$defs/PrivateListenerConfig" + }, + "logLevel": { + "$ref": "#/$defs/LogLevel", + "default": "info" + }, + "name": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "rateLimits": { + "$ref": "#/$defs/RateLimits" + }, + "resourceServer": { + "$ref": "#/$defs/ResourceServerConfig" + }, + "secretProviders": { + "$ref": "#/$defs/SecretProvidersConfig" + } + }, + "required": [ + "apiVersion", + "kind", + "name", + "listener", + "secretProviders", + "resourceServer", + "audit", + "rateLimits", + "bindings" + ], + "title": "Registry Stack configurable MCP gateway runtime configuration", + "type": "object" +} diff --git a/public/schemas/platform/mcp-runtime/mcp-runtime.v1alpha1.schema/index.html b/public/schemas/platform/mcp-runtime/mcp-runtime.v1alpha1.schema/index.html new file mode 100644 index 000000000..b1f43a9d1 --- /dev/null +++ b/public/schemas/platform/mcp-runtime/mcp-runtime.v1alpha1.schema/index.html @@ -0,0 +1,100 @@ + + + + + + Registry Stack configurable MCP gateway runtime configuration | Registry Stack identifiers + + + + + + + + +
+
+
+

JSON Schema

+

Registry Stack configurable MCP gateway runtime configuration

+

Configurable Registry Stack MCP gateway runtime configuration JSON Schema.

+

https://id.registrystack.org/schemas/platform/mcp-runtime/mcp-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

+
IdentifierTitleStatus
https://id.registrystack.org/contracts/breg/proposal-event/v1Registry Stack JSON Schema: proposal-lifecycle.schema.jsonactive
https://id.registrystack.org/schemas/adapter/effective-contract/effective-contract.v1alpha1.schema.jsonRegistry Adapter effective contractactive
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/pack/pack.v1alpha1.schema.jsonRegistry Adapter packactive
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/breg/access-explanation/access-explanation.v1alpha4.schema.jsonAccessExplanationdeprecated
https://id.registrystack.org/schemas/breg/access-explanation/access-explanation.v1alpha5.schema.jsonAccessExplanationdeprecated
https://id.registrystack.org/schemas/breg/access-explanation/access-explanation.v1alpha6.schema.jsonAccessExplanationdeprecated
https://id.registrystack.org/schemas/breg/access-explanation/access-explanation.v1alpha7.schema.jsonAccessExplanationactive
https://id.registrystack.org/schemas/breg/access-explanation/access-explanation.v1alpha7.schema.jsonAccessExplanationdeprecated
https://id.registrystack.org/schemas/breg/access-explanation/access-explanation.v1alpha8.schema.jsonAccessExplanationactive
https://id.registrystack.org/schemas/breg/access-preview/access-preview.v1alpha4.schema.jsonAccessPreviewactive
https://id.registrystack.org/schemas/breg/action-contracts/action-contracts.v1.schema.jsonBReg Action contractsactive
https://id.registrystack.org/schemas/breg/actions-explanation/actions-explanation.v1alpha4.schema.jsonActionsExplanationdeprecated
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/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
https://id.registrystack.org/schemas/registry-relay/aggregate-result/v1.jsonRegistry Relay AggregateResult v1 schemadeprecated
+ + + + + + + +
Statusactive
Compatibility linev1alpha1
Ownerplatform
Artifact SHA-25628757cb955ea96d628ff2442cc9dd7ce4f11998edada848a834ef9dfbc3c5c3e
Immutable artifacthttps://id.registrystack.org/artifacts/sha256/28757cb955ea96d628ff2442cc9dd7ce4f11998edada848a834ef9dfbc3c5c3e.json
+
+
+

Documentation

+ + +
+ + + + + diff --git a/public/schemas/registry-record/v1 b/public/schemas/registry-record/v1 index e80d119f6..9971fa3cd 100644 --- a/public/schemas/registry-record/v1 +++ b/public/schemas/registry-record/v1 @@ -70,7 +70,7 @@ { "required": ["meta"] }, { "required": ["registryIdentifier"] }, { "required": ["datasetIdentifier"] }, - { "required": ["entityTypeIdentifier"] }, + { "required": ["recordTypeIdentifier"] }, { "required": ["recordIdentifier"] }, { "required": ["revisionIdentifier"] }, { "required": ["nextCursor"] } @@ -89,7 +89,7 @@ { "required": ["meta"] }, { "required": ["registryIdentifier"] }, { "required": ["datasetIdentifier"] }, - { "required": ["entityTypeIdentifier"] }, + { "required": ["recordTypeIdentifier"] }, { "required": ["nextCursor"] }, { "required": ["@context"] } ] @@ -103,7 +103,7 @@ }, "responseMeta": { "type": "object", - "required": ["registryIdentifier", "datasetIdentifier", "entityTypeIdentifier"], + "required": ["registryIdentifier", "datasetIdentifier", "recordTypeIdentifier"], "not": { "anyOf": [ { "required": ["data"] }, @@ -119,7 +119,7 @@ "properties": { "registryIdentifier": { "$ref": "#/$defs/opaqueIdentifier" }, "datasetIdentifier": { "$ref": "#/$defs/opaqueIdentifier" }, - "entityTypeIdentifier": { "$ref": "#/$defs/opaqueIdentifier" } + "recordTypeIdentifier": { "$ref": "#/$defs/opaqueIdentifier" } }, "additionalProperties": { "$ref": "#/$defs/extensionValue" } }, @@ -133,7 +133,7 @@ { "required": ["meta"] }, { "required": ["registryIdentifier"] }, { "required": ["datasetIdentifier"] }, - { "required": ["entityTypeIdentifier"] }, + { "required": ["recordTypeIdentifier"] }, { "required": ["recordIdentifier"] }, { "required": ["revisionIdentifier"] }, { "required": ["domainData"] }, @@ -159,7 +159,7 @@ { "required": ["pageInfo"] }, { "required": ["registryIdentifier"] }, { "required": ["datasetIdentifier"] }, - { "required": ["entityTypeIdentifier"] }, + { "required": ["recordTypeIdentifier"] }, { "required": ["recordIdentifier"] }, { "required": ["revisionIdentifier"] }, { "required": ["domainData"] }, @@ -180,7 +180,7 @@ { "required": ["data"] }, { "required": ["registryIdentifier"] }, { "required": ["datasetIdentifier"] }, - { "required": ["entityTypeIdentifier"] }, + { "required": ["recordTypeIdentifier"] }, { "required": ["recordIdentifier"] }, { "required": ["revisionIdentifier"] }, { "required": ["domainData"] }, diff --git a/public/schemas/registry-record/v1.html b/public/schemas/registry-record/v1.html index 5d72e9525..fd80bb5b6 100644 --- a/public/schemas/registry-record/v1.html +++ b/public/schemas/registry-record/v1.html @@ -48,8 +48,8 @@

Lifecycle

Statusactive Compatibility linev1 Ownerregistry-record - Artifact SHA-25631cae7de9e84904e300d0d77ffbfdfc7a1de6127719a0ccbb3f6a88d7306510e - Immutable artifacthttps://id.registrystack.org/artifacts/sha256/31cae7de9e84904e300d0d77ffbfdfc7a1de6127719a0ccbb3f6a88d7306510e.json + Artifact SHA-256e9ddb96d7b521da29b033353ffa854e2e003b1c952f9aad847b30ed1e3b8cf2a + Immutable artifacthttps://id.registrystack.org/artifacts/sha256/e9ddb96d7b521da29b033353ffa854e2e003b1c952f9aad847b30ed1e3b8cf2a.json diff --git a/public/vocab/breg-odrl/index.html b/public/vocab/breg-odrl/index.html new file mode 100644 index 000000000..a2bcc45e4 --- /dev/null +++ b/public/vocab/breg-odrl/index.html @@ -0,0 +1,131 @@ + + + + + + BReg partial read-policy vocabulary | Registry Stack identifiers + + + + + + + + +
+
+
+

Vocabulary

+

BReg partial read-policy vocabulary

+

Experimental BReg ODRL constraint and projection terms, defined by the shipped read-policy export profile.

+

https://id.registrystack.org/vocab/breg-odrl/

+
+
+
+
+

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.

+
+
+

Lifecycle

+ + + + + + + +
KindVocabulary
Statusactive
Compatibility linev1
Ownerbreg
+
+
+

Documentation

+ +
+
+

Identifier record

+
{
+  "uri": "https://id.registrystack.org/vocab/breg-odrl/",
+  "title": "BReg partial read-policy vocabulary",
+  "description": "Experimental BReg ODRL constraint and projection terms, defined by the shipped read-policy export profile.",
+  "kind": "vocabulary",
+  "status": "active",
+  "compatibility_line": "v1",
+  "owner": "breg",
+  "source_reference": {
+    "repository": "registry-stack",
+    "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be",
+    "path": "products/breg/contracts/odrl-profile.jsonld",
+    "sha256": "24d0950eb2c1a76d5005850e1145f675ad65df5231867907b41d11fdd2979cdc"
+  },
+  "id": "https://id.registrystack.org/vocab/breg-odrl/",
+  "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."
+  }
+}
+ +
+
+
+ + + diff --git a/public/vocab/breg-odrl/index.json b/public/vocab/breg-odrl/index.json new file mode 100644 index 000000000..7c38a4656 --- /dev/null +++ b/public/vocab/breg-odrl/index.json @@ -0,0 +1,30 @@ +{ + "uri": "https://id.registrystack.org/vocab/breg-odrl/", + "title": "BReg partial read-policy vocabulary", + "description": "Experimental BReg ODRL constraint and projection terms, defined by the shipped read-policy export profile.", + "kind": "vocabulary", + "status": "active", + "compatibility_line": "v1", + "owner": "breg", + "source_reference": { + "repository": "registry-stack", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", + "path": "products/breg/contracts/odrl-profile.jsonld", + "sha256": "24d0950eb2c1a76d5005850e1145f675ad65df5231867907b41d11fdd2979cdc" + }, + "id": "https://id.registrystack.org/vocab/breg-odrl/", + "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." + } +} diff --git a/public/vocab/registry-record/index.html b/public/vocab/registry-record/index.html index 58cf0f6ee..25b7b7dc3 100644 --- a/public/vocab/registry-record/index.html +++ b/public/vocab/registry-record/index.html @@ -70,9 +70,9 @@

Identifier record

"owner": "registry-record", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "products/registry-record/context/registry-record-v1.jsonld", - "sha256": "9b8bf452538214d8559b4e8034446bfade37b5f409cfeaaace650a567423be71" + "sha256": "c336506f4dcd7e266155e8cd1ff9710766bc240f395e27b0480b2e193e74e2ee" }, "id": "https://id.registrystack.org/vocab/registry-record/", "documented_by": [ diff --git a/public/vocab/registry-record/index.json b/public/vocab/registry-record/index.json index a8e67898f..6fb5e77a2 100644 --- a/public/vocab/registry-record/index.json +++ b/public/vocab/registry-record/index.json @@ -8,9 +8,9 @@ "owner": "registry-record", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "products/registry-record/context/registry-record-v1.jsonld", - "sha256": "9b8bf452538214d8559b4e8034446bfade37b5f409cfeaaace650a567423be71" + "sha256": "c336506f4dcd7e266155e8cd1ff9710766bc240f395e27b0480b2e193e74e2ee" }, "id": "https://id.registrystack.org/vocab/registry-record/", "documented_by": [ diff --git a/public/vocabularies/index.html b/public/vocabularies/index.html index 460e2f918..4ee61020f 100644 --- a/public/vocabularies/index.html +++ b/public/vocabularies/index.html @@ -40,10 +40,11 @@

Vocabularies

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.

-

7 published identifiers

+

8 published identifiers

+ diff --git a/public/vocabularies/index.json b/public/vocabularies/index.json index 48d2703c2..184712609 100644 --- a/public/vocabularies/index.json +++ b/public/vocabularies/index.json @@ -1,5 +1,35 @@ { "entries": [ + { + "uri": "https://id.registrystack.org/vocab/breg-odrl/", + "title": "BReg partial read-policy vocabulary", + "description": "Experimental BReg ODRL constraint and projection terms, defined by the shipped read-policy export profile.", + "kind": "vocabulary", + "status": "active", + "compatibility_line": "v1", + "owner": "breg", + "source_reference": { + "repository": "registry-stack", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", + "path": "products/breg/contracts/odrl-profile.jsonld", + "sha256": "24d0950eb2c1a76d5005850e1145f675ad65df5231867907b41d11fdd2979cdc" + }, + "id": "https://id.registrystack.org/vocab/breg-odrl/", + "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/vocab/core/", "title": "Registry Relay core vocabulary", @@ -75,9 +105,9 @@ "owner": "registry-record", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "products/registry-record/context/registry-record-v1.jsonld", - "sha256": "9b8bf452538214d8559b4e8034446bfade37b5f409cfeaaace650a567423be71" + "sha256": "c336506f4dcd7e266155e8cd1ff9710766bc240f395e27b0480b2e193e74e2ee" }, "id": "https://id.registrystack.org/vocab/registry-record/", "documented_by": [ diff --git a/src/artifacts/media-types.json b/src/artifacts/media-types.json index 4f0cea797..5c09e1527 100644 --- a/src/artifacts/media-types.json +++ b/src/artifacts/media-types.json @@ -18,6 +18,7 @@ "14a50dc138d8624083b6762ede7e51bf86a66f56071fd2b8af4c2ef2fde18468.json": "application/schema+json", "1500f7e2e90ad90139df9141d3d8ff1d850f9dca54469f469f7493ad96550103.json": "application/schema+json", "158d1cb317dcc9bbee833684aefff09f215c066ee2f03d61f980088f5c52fc10.json": "application/schema+json", + "169ce8657f2ab5a3140216b6aeeeaaaf7dfcea0f508364a76de142b93c6a0a14.json": "application/schema+json", "1885ff7721ef4b5ddbd24280e8f62feef01fa79517af542b2d306cb156ceb08f.json": "application/schema+json", "18b0b088010cf8ddacae0ffaada4defe030e67eb1fb05c4b282e03ecf62a29a8.json": "application/schema+json", "19f90f5a2f87b250dcd54d16fe1810fbea6bdd58e6ec46891e20b3c5110605d5.json": "application/schema+json", @@ -34,13 +35,18 @@ "2158f213b60c1da4498818dc6ac456d937ac965984552a0007ad6bd5dfba4938.json": "application/schema+json", "2213fb509528694eb088691c68036b318d75e633e405018c72cd8d28ee77fdb7.json": "application/schema+json", "2252671b19cb249c1ac2d2338820d3a326e8e77f7db04380331f85d3d3cacd72.json": "application/schema+json", + "2481544f84d61d0bd21ba44e31e7bdefcbf9e10b12d3b103fc100ebead1e346e.json": "application/schema+json", + "24d0950eb2c1a76d5005850e1145f675ad65df5231867907b41d11fdd2979cdc.jsonld": "application/ld+json", "25b93baf3a412d22d90d4d224560a18ae2d5499d8da11a93d090f4b0178c0002.json": "application/schema+json", "25eb7b86185ab1d3aa5919752790c2600b5610b484397836eab17b82924e9d01.json": "application/schema+json", "2648c8627f9671e3f8413dcf2fb6c20be90e96ad46c42e645c05230794f4764b.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", + "2a31e088e66073cf94b5d3769aebbeef3552cafa59c2281405be83ccd5390435.json": "application/schema+json", "2cea7342c7a18c0991db2241acb7ecd61a2bc99da4828ab93002317bf4ed17fa.json": "application/schema+json", "2eeb18977105aac45ab3d5005152b25d456134621eeddf59aca612a9c4cebf6a.json": "application/schema+json", "313efc6342fcb1fdbbabdd8fd279c58032e418476825fe823c67cdcf14029396.json": "application/schema+json", @@ -50,6 +56,7 @@ "35075a1ccd1b0cda4846749bd48d154a2db5159d67da7cf77838122db1592412.json": "application/schema+json", "3538e178fd3b21ed3e8b59c1596dee65d98e216e5a4a6862fb1fd64527cc22d1.json": "application/schema+json", "37d6a662a61c9a5730be870e1d202209d0bebeb658968f978f317bb8995c1cb5.yaml": "application/yaml", + "38818527ae8cf4435485ea3f283af51b41c4d1d1e0e26d04ab3e59c158c150a7.json": "application/schema+json", "39cec102bdf8febeae25aba599a115b9d46208f19529d69bcbd849ddc3c99f62.json": "application/schema+json", "39e0445aa4e04afa8fb237d123d3e5f5540cad0740ec4683a00812501069a419.json": "application/schema+json", "3b486d00ae22ddc2cf42d40e5fba33a9de5c2c4ae110ab6a899b16e1261b51c9.json": "application/schema+json", @@ -61,9 +68,11 @@ "43d58cc3028e7a97f91929625aeff1ec243f937e16ee455de8f3cb1caa4675b7.json": "application/schema+json", "43eb1560294204ef545bd6bf2dd5928aa25e84118d07e942eafe1923f1b32f78.yaml": "application/yaml", "4669ca761bddd4b14b5b41ef56f335238af437e3ada7bc79b6e0783e8d992e12.json": "application/schema+json", + "472c4861ab27a301f077784e63cd06891ef4b73813aab1dd802c567daac70d16.json": "application/schema+json", "47cbeecaaa07a52b0af259faff736b4e32e6a0c1ed674634b4cc6815cb369fd4.json": "application/schema+json", "48c416e7a409cde355bb7e7a1a1bd8eac6248e65867fd76b55b777d4b6e335d2.json": "application/schema+json", "4925c4eb0cc9e80b946306aeace68105caf73c619a7b371d6740cbe2ea1bdb57.json": "application/schema+json", + "4babace1053c7b8446b682ce2db17a220263e669b397a414d98ead9d47af459a.json": "application/schema+json", "4bd456164cf5fa48ed3d9cd1922d23961034c8f834f2ed8ebefccdb8c8bcce6c.json": "application/schema+json", "4e1226cffe6761f035aebde2c1f07f88a35251b537725aab532dbf4500e8ed30.json": "application/schema+json", "4e357155b17d753e4d15394ab3a0750dc0319a57505aa36719fe54e0f83489f2.json": "application/schema+json", @@ -74,10 +83,12 @@ "52b076a8325b63e0bcaffb71d348e0239cea4d48be094100a018ef8a819fdab5.json": "application/schema+json", "532f2e49816a38ac82595c32d1cff93c53bfce72edb7f84ce2012d580e883338.json": "application/schema+json", "547bbdf015691d7149599113de2d4d515111b46899e45ddc0c58eb0d15eda14f.json": "application/schema+json", + "55959ae4cc86f1cd393cca382d7cdfd367ccc703c8676a350af4299b59ebb043.json": "application/schema+json", "581cd380fa3c33ed81d56ef4d88a514a34ee1e7665128f3b657a7f1124e182fc.json": "application/schema+json", "58f76c1433576860b28b2c344acfc51d2d57b9915aab08d782704d522f96554c.json": "application/schema+json", "58fd684bc91478e42ec0e8f92effeab533f5b89caf720b7ad1e139b8ce0c54ef.json": "application/schema+json", "598f916ebbe176797484afdd5d55165e6567d39bd0094b6876e5419908e0b78c.json": "application/schema+json", + "5bfd55b2ccee480035ee9db13b8fb3a99ac5a2e9cd01645fdda8dfeb593eb688.json": "application/schema+json", "5d5ae3f256d6cbfa520d08836428edbcc9f62972155e4875336b25ae2af8cd3e.json": "application/schema+json", "5d793cc000b40bcf9cb8c23541143d6924590be659f642457b2abec2bd885db4.json": "application/schema+json", "5d99a71fc7fb00d3d4f6f4ffc4f6399570e60497e53a080cd571fc0ef3bd0d42.json": "application/schema+json", @@ -87,7 +98,9 @@ "5f3fd780bccddb5d203bd51e9bc6d404b4c2f37a054dad1a5bd96265841cfdda.json": "application/schema+json", "5f5978063cd87e72f2de1e758629ce7a2de85895b827b2f680f2368035609a86.json": "application/schema+json", "5fd729f00c7942e6422b726a75b02d931218c416a1caffdfb7b129fd8ff22c4c.json": "application/schema+json", + "6031baaabca785fe6e0adfed4336fa555839e18ae1a3136cf3e895ad5e6f6dcb.json": "application/schema+json", "618dd00144eced267ce239c8412381a555e488af08cb7d6936e63dd963463b0a.json": "application/schema+json", + "62c45846105e0231417e0450568a899ea05f78f41250b450353c074407cc5f26.json": "application/schema+json", "63a205c50ddd5ab0565fd56e02213f8061613f057d8759ad0af3c8adc4d38d11.json": "application/schema+json", "64c019dcb9d6e635b7d5e289f4dd9c7b0811863e504abc84d236fba3249f6ec1.json": "application/schema+json", "67cddb577791407b017c46465860c1a1674b45d3b7ed4005a2ea12cea3bb61d5.json": "application/schema+json", @@ -108,8 +121,10 @@ "77b426a808ae3a80e07d4ad50c79d2c61c0dcbe229eb6c111d994dfaad82838f.json": "application/schema+json", "7cb7788aa97db48696aa1653f352de505298d0bcd9cd9b584d69809206c34dea.json": "application/schema+json", "7d694df0140e03e1a4c1e6a564e52d69a7d334b9e0063d8aeded24d28b83d182.json": "application/schema+json", + "8032fd67f82f517cade8e55c4d3972bc5481a957b84a4cb70b3f40f82ac970d3.json": "application/schema+json", "809cf2a9a47ab9ba73dd108671963982724f8c9852f5c3ff904496704d0c8357.json": "application/schema+json", "80f46c0a724cc9c5fe23ff079dea7b1627e44367237d1e8d3362ce124bafe2ab.json": "application/schema+json", + "8177563ac1261680db7070b59f8b651d1cfe8c33cb5423891902bab4d5f8173e.json": "application/schema+json", "81f63388bb7037d2bfd8cab40f393195b324ca31eaae12a862fa08261a605c4a.json": "application/schema+json", "822fb2aceae89790b9c688523ac731c8f6a4371d746a753d2589fff2161eea02.json": "application/schema+json", "84801024e444b8c47daaef3c39bdd0afe2e95cc11e11665b107001e18cafd70d.json": "application/schema+json", @@ -123,6 +138,7 @@ "8f4833f26187b81d360edb0849313806ecdc55191a2dc1bbad731023130fa873.json": "application/schema+json", "8f8a8a11bdd370778be1b3f311961b3302c898a82f5a286451d2d06a24d3ac88.json": "application/schema+json", "8fa2aebe5d11d696c103d8f1cc249ffaa734971b7221099828c34e7d2bae991f.json": "application/schema+json", + "912661673c41c1119a8bd83809c66cc2d38b16e171c963b4988175c74f627664.json": "application/schema+json", "9146508a68600bfa9fb21edbf98c5f7d04ce7a1a86bce54b04c7d02ae30964f4.json": "application/schema+json", "916eb5204c031df2f4732cd230b885bf367e237cb201bf4cfd1c402523658a8e.json": "application/schema+json", "968ec77a589957cfcd70eb6d4c2f906bf1285308f295c80af295673f51c36572.json": "application/schema+json", @@ -132,11 +148,13 @@ "97ca7f9e2c530ed09793286128b3b2a145842dce2cab235d8066790da8f746a0.yaml": "application/yaml", "98a5983770a763c045cd661fb176f5d057e451bcfbde5211273c7b58a5543da3.json": "application/schema+json", "990ead4256ee1748ebd4425ed0849ad64c521328841a88bcd9f48f6c88dbe7be.json": "application/schema+json", + "9949f5e3a10d4deb0038359d76d1f59b160449472bcd0b6c99e45ad776d20f80.json": "application/schema+json", "9a548eca02ffea6d52eb89546a2a99286f19bbf5d20b272741f633728762171c.json": "application/schema+json", "9b8bf452538214d8559b4e8034446bfade37b5f409cfeaaace650a567423be71.jsonld": "application/ld+json", "9bee29f0c0cefe8978535e9d51994bbfd57e7c55ed31287c07bb5c80b7df583b.json": "application/schema+json", "9beeda053e86d8ffa67755e91883efd0d2205026ee7d0aa7f38cecef7a6f781b.json": "application/schema+json", "9c9303fe3974ab57ff40fb3eaa18ad43826d10e32a593530ccf4d10a5860c562.json": "application/schema+json", + "9d026bf36a11bc83493f835f028ff52092e0f6c4cd42b471024ead336b6d8a9e.json": "application/schema+json", "9d0415eb366a78ceb109b26b9204f139ecdddfa114de66bd13fd98a1b7a5f62a.json": "application/schema+json", "9e303f8a0d24dad6b2b840f16b647278bc933cb66f1f38ae3cc55222719396cc.json": "application/schema+json", "9eff8e027f5900d3fd4a1c88b6cae2c9657fcd9e09e3e07706e6bd1a7823e0e3.json": "application/schema+json", @@ -165,6 +183,8 @@ "b68362a53e0abd42941a79dc6bd280538a5510c9046dc8fb53cbdd29be3d898e.json": "application/schema+json", "b6a7e7200bf014a4b31dd064aa39bcbdb60fb624ef8c305f4c3431958b47bb12.yaml": "application/yaml", "b9158ab194325cbd1a807922d07d35f4616eff823d9b1c76892e73f330443cdd.json": "application/schema+json", + "bb19696ad1cf4f6c89de72d1b50da9f8897761cd15066c4281500836306ea09e.json": "application/schema+json", + "bbbc49cc6aa19d2b6329db459ac7d5c8635583e2a0ca63f2d75556840a804202.json": "application/schema+json", "bbcd216d8d94ead31a52e290c87f8782c95f939057cc5e31e4c90a49a02d2dc1.json": "application/schema+json", "bccdb7e8996ff410d6bf9d87e1abb76c84a9e7ae6d9da43a9e688bacbdfc45d0.json": "application/schema+json", "bed1ba280b7a00825f5b284f971eddf9cb7da3be231ef1a5f60518529f6a1678.json": "application/schema+json", @@ -173,14 +193,18 @@ "c0ceb9cbec8393e03e125d10b4d512107bc120c7b5d31398cfd9256c78a49aee.json": "application/schema+json", "c149992d06b1a2d9a2f014391687acb41aedbf16ff7fad024e9cf620753e1666.json": "application/schema+json", "c17920e039dc46a3627cbd0091a3728732398e8d857cf30bc87c5ebdb2cf0ced.json": "application/schema+json", + "c1be1e7bc8efa01de429ea5a5cd7c19da49d9766d71839602a0e81cecc447d8b.json": "application/schema+json", "c30a70ce60b1946e6eb3cd0ebf1267841c97be81115f61e0bbf713262bfd59a3.json": "application/schema+json", + "c336506f4dcd7e266155e8cd1ff9710766bc240f395e27b0480b2e193e74e2ee.jsonld": "application/ld+json", "c3e88b1a46da7f8643c0af6b35a3b33eafa75ad74277dc7dccde135746b0f110.json": "application/schema+json", "c5c5461590e22ba0896a312e9235ad707c066b803c14759f34d402c186823797.json": "application/schema+json", "c7dbd61a710dd189637f783e9720b749f98e2d307af549849ab6e85b790a4ab9.json": "application/schema+json", "c85881c80936e4cd405ccde25dabdab4a266dc0c6ad8ad851012e200ca18dfd8.json": "application/schema+json", + "c8685157d8e2982b00657a2a3b2fe729cf54792d76134cf22aa1be1cc7abf4a8.md": "text/markdown", "c8dea520a3fba1ff24ce82e08f94d525e43ffb87f7e8bfd8494cc2fbac03ba2c.json": "application/schema+json", "c8e9096a02c4a93ef4a8e7884eb9d5f05b9d544c3549d060d313a32fdedc1b1c.jsonld": "application/ld+json", "c95bb112c47134d9ef0bfad1d03be54623be2a6f7ec1f9f2145f98b8622921f0.json": "application/schema+json", + "ca14df9aafa49fd2018a12869e54f4058e29de07f01c0cbc0dd13f069649bcc9.json": "application/schema+json", "caed080f4eef3c39d8728cb56722d8d7f5cad6342d46750a0046eb2c5defc186.json": "application/schema+json", "cbc34fc5f6fc9cba3fb714a41595bf999fb0d73a45b6bf610f772cd4256deecc.json": "application/schema+json", "cbe92a3329351dbdf53f0a63d5f4f9dfc7b8bbcb0947ddf30f1558943d34e188.json": "application/schema+json", @@ -218,12 +242,15 @@ "e7ebb4c45984c87919a5c3b7d886488550bd4e45ec4a0213dc80dd2a722acc2e.json": "application/schema+json", "e853c774b697a8debb56537eb3a14c4e8c32f9fa8771eba1cd05eb397505b3c6.json": "application/schema+json", "e85a091e8f47fab25632650e86081d585b46ade1a8b096c116ead7550dc39dc5.json": "application/schema+json", + "e9bae5707ef92498b162083958fc0af4c1c043e74eec71252259e70bab88b73d.json": "application/schema+json", + "e9ddb96d7b521da29b033353ffa854e2e003b1c952f9aad847b30ed1e3b8cf2a.json": "application/schema+json", "ea3e5db017d1c733bbbc9d5aed6ad5f5e760649379d6ba1a993c48e17e02e3a2.json": "application/schema+json", "ea3e859161f961767bc44b463a025feefc17662dd31fa7ba4c67f71b0188f1bc.json": "application/schema+json", "ea6cb8f8967c6e495a449d56287796ca4acb65bda9dfdde66e3aaa3e4aea9368.json": "application/schema+json", "eaf6f80ebeb9ebb3896982b2b334a1926e30fca4d62615c368d4b69e9c3366af.json": "application/schema+json", "ec5ae34ed2e90f2c86b15b0e4491e05094909a12f4f58d2033d2a6e2affcce4c.json": "application/schema+json", "ee2ddfb5ab344c5c7ac8b16f17503a2ddc02810dd3c15e170b0c240032d4c4e6.json": "application/schema+json", + "ef82e91c0f0c3366bd62967be8453e90920341c246a6d05f56e4b4b4b8eb85b0.json": "application/schema+json", "f165e62044df2129b5cc533d3199cf81ae23d263617f39437ee37be87d3b37fe.md": "text/markdown", "f2b906327cfcbc04496c0b161a82464440c8600cf674ee3c21c0c16f64cb862f.json": "application/schema+json", "f511f546980251198954678790b986a5aa2cb4f037bd463f20531b8c9736d28b.json": "application/schema+json", @@ -236,6 +263,7 @@ "fbdcd49bfc04974e387dad5fbdbc450b7e12dca8e7b8168c7f227fb352bffb70.json": "application/schema+json", "fc7898b8be0e7ac26fd46a4624d37854f4df52eb4a372dac2e6cbc0575b3aed3.json": "application/schema+json", "fc95f405cbef9537864e6d2d9b54ebe3e3b893fb35ecb7e1f47a5081a94f28ff.json": "application/schema+json", + "fd4ef085ef94087f5fa6d846a284957345d5463df44372c5667ea1a8cf643d0d.yaml": "application/yaml", "fe1d27a6cfd66a26baca59e7dd3eea9dcb17e8ecff0469479894f6c2d1dc2eda.json": "application/schema+json" } } diff --git a/src/artifacts/sha256/169ce8657f2ab5a3140216b6aeeeaaaf7dfcea0f508364a76de142b93c6a0a14.json b/src/artifacts/sha256/169ce8657f2ab5a3140216b6aeeeaaaf7dfcea0f508364a76de142b93c6a0a14.json new file mode 100644 index 000000000..14fb73260 --- /dev/null +++ b/src/artifacts/sha256/169ce8657f2ab5a3140216b6aeeeaaaf7dfcea0f508364a76de142b93c6a0a14.json @@ -0,0 +1,628 @@ +{ + "$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" + }, + "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" + }, + "IdempotencyRetention": { + "additionalProperties": false, + "description": "Exact write-response custody in the idempotency store\n(`products/adapter/CONCEPT.md` section 9 and D12).", + "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" + } + ] + }, + "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 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." + }, + "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 cursor key, still accepted when opening a cursor so\na key rotation does not strand cursors in flight." + } + }, + "required": [ + "allowedClients", + "allowedPrivateCidrs", + "apiVersion", + "audit", + "database", + "endpoints", + "id", + "kind", + "listener", + "oidc" + ], + "title": "Registry Adapter runtime configuration", + "type": "object" +} diff --git a/src/artifacts/sha256/2481544f84d61d0bd21ba44e31e7bdefcbf9e10b12d3b103fc100ebead1e346e.json b/src/artifacts/sha256/2481544f84d61d0bd21ba44e31e7bdefcbf9e10b12d3b103fc100ebead1e346e.json new file mode 100644 index 000000000..6506012a5 --- /dev/null +++ b/src/artifacts/sha256/2481544f84d61d0bd21ba44e31e7bdefcbf9e10b12d3b103fc100ebead1e346e.json @@ -0,0 +1,338 @@ +{ + "$defs": { + "BregBinding": { + "additionalProperties": false, + "description": "Environment-specific transport and reader identity. Human display always replaces it.", + "properties": { + "baseUrl": { + "$ref": "#/$defs/Url" + }, + "clientAssertionAudience": { + "type": "string" + }, + "clientAssertionKeyRef": { + "$ref": "#/$defs/SecretReference" + }, + "clientIdRef": { + "$ref": "#/$defs/SecretReference" + }, + "delegatedDisplayExchange": { + "$ref": "#/$defs/DelegatedDisplayExchangeBinding" + }, + "resource": { + "type": "string" + }, + "scopes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "statusProfile": { + "type": "string" + }, + "taskGrantProfile": { + "type": "string" + }, + "tokenEndpoint": { + "$ref": "#/$defs/Url" + } + }, + "required": [ + "baseUrl", + "statusProfile", + "tokenEndpoint", + "clientIdRef", + "clientAssertionKeyRef" + ], + "type": "object" + }, + "Client": { + "additionalProperties": false, + "properties": { + "accessProfile": { + "description": "The access profile this client binds. Several clients may share a profile.", + "type": "string" + }, + "claims": { + "additionalProperties": { + "type": "string" + }, + "description": "At most 32 token claims; registered access-token claims are reserved.", + "propertyNames": { + "$ref": "#/$defs/ExternalId" + }, + "type": "object" + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "`issuer` is reserved for the local token issuer." + }, + "scopes": { + "description": "1 to 32 distinct RFC 6749 scope-tokens of at most 256 bytes.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "id", + "accessProfile", + "scopes" + ], + "type": "object" + }, + "DelegatedDisplayExchangeBinding": { + "additionalProperties": false, + "description": "Dedicated per-call delegation for staff-subject source disclosure. This is\nseparate from the provider's status and task-context service credential.", + "properties": { + "clientAssertionAudience": { + "type": "string" + }, + "clientAssertionKeyRef": { + "$ref": "#/$defs/SecretReference" + }, + "clientIdRef": { + "$ref": "#/$defs/SecretReference" + }, + "generation": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "scopes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "tokenEndpoint": { + "$ref": "#/$defs/Url" + } + }, + "required": [ + "tokenEndpoint", + "clientIdRef", + "clientAssertionKeyRef", + "resource", + "scopes", + "generation" + ], + "type": "object" + }, + "DirectoryTeam": { + "additionalProperties": false, + "properties": { + "queue": { + "description": "The queue this team serves; one team serves each queue.", + "type": "string" + }, + "staff": { + "description": "1 to 32 clients bound to a Staff profile.", + "items": { + "type": "string" + }, + "type": "array" + }, + "supervisors": { + "description": "At most 32 clients bound to a Supervisor profile.", + "items": { + "type": "string" + }, + "type": "array" + }, + "team": { + "description": "A lowercase letter, then at most 63 lowercase letters, digits, `_`,\nor `-`.", + "type": "string" + } + }, + "required": [ + "team", + "queue", + "staff" + ], + "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" + }, + "Integrations": { + "additionalProperties": false, + "properties": { + "browserClients": { + "description": "Interactive OAuth clients explicitly admitted from a borrowed issuer.", + "items": { + "type": "string" + }, + "type": "array" + }, + "contextProviders": { + "additionalProperties": { + "$ref": "#/$defs/BregBinding" + }, + "description": "Optional provider connections keyed by their declared deploymentRef.", + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "resource": { + "description": "Audience accepted by this Casework session.", + "type": "string" + }, + "secretFiles": { + "additionalProperties": { + "type": "string" + }, + "description": "Owner-only files copied into the retained private secret root.", + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "serviceClients": { + "items": { + "$ref": "#/$defs/ServiceClient" + }, + "type": "array" + }, + "taskAuthority": { + "$ref": "#/$defs/TaskAuthority" + } + }, + "required": [ + "resource" + ], + "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" + }, + "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" + }, + "ServiceClient": { + "additionalProperties": false, + "properties": { + "claims": { + "additionalProperties": { + "type": "string" + }, + "description": "Token claims of at most 256 bytes each, written as text.", + "propertyNames": { + "$ref": "#/$defs/ExternalId" + }, + "type": "object" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "resource": { + "description": "Omission means this Casework session's generated audience.", + "type": "string" + }, + "scopes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "taskExchange": { + "default": false, + "type": "boolean" + } + }, + "required": [ + "id", + "scopes" + ], + "type": "object" + }, + "TaskAuthority": { + "additionalProperties": false, + "properties": { + "issuer": { + "$ref": "#/$defs/Url", + "description": "Logical issuer, independent of the local API transport URL; an\n`https` URL." + }, + "jwksPort": { + "description": "Public-key-only listener, reachable from the stock issuer container.", + "format": "uint32", + "maximum": 65535, + "minimum": 1, + "type": "integer" + }, + "statusClients": { + "additionalProperties": { + "type": "string" + }, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + } + }, + "required": [ + "issuer", + "jwksPort", + "statusClients" + ], + "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/casework/dev-clients/dev-clients.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/casework/dev-clients/v1alpha1", + "type": "string" + }, + "clients": { + "description": "Local teaching clients bound to access profiles `casework.yaml` declares.", + "items": { + "$ref": "#/$defs/Client" + }, + "type": "array" + }, + "directory": { + "description": "The teams the first start seeds, one for each queue.", + "items": { + "$ref": "#/$defs/DirectoryTeam" + }, + "type": "array" + }, + "integrations": { + "$ref": "#/$defs/Integrations", + "description": "Source-backed development: source bindings, service clients, and the\nlocal task authority." + }, + "kind": { + "const": "CaseworkDevClients", + "type": "string" + } + }, + "required": [ + "apiVersion", + "kind", + "clients" + ], + "title": "Registry Casework development clients", + "type": "object" +} diff --git a/src/artifacts/sha256/24d0950eb2c1a76d5005850e1145f675ad65df5231867907b41d11fdd2979cdc.jsonld b/src/artifacts/sha256/24d0950eb2c1a76d5005850e1145f675ad65df5231867907b41d11fdd2979cdc.jsonld new file mode 100644 index 000000000..cb4d18811 --- /dev/null +++ b/src/artifacts/sha256/24d0950eb2c1a76d5005850e1145f675ad65df5231867907b41d11fdd2979cdc.jsonld @@ -0,0 +1,138 @@ +{ + "@context": { + "odrl": "http://www.w3.org/ns/odrl/2/", + "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", + "rdfs": "http://www.w3.org/2000/01/rdf-schema#", + "skos": "http://www.w3.org/2004/02/skos/core#", + "dcterms": "http://purl.org/dc/terms/", + "prof": "http://www.w3.org/ns/dx/prof/", + "breg": "https://id.registrystack.org/vocab/breg-odrl/" + }, + "@id": "https://id.registrystack.org/profiles/breg-odrl/v1", + "@type": "prof:Profile", + "dcterms:title": "BReg partial read-policy export", + "dcterms:conformsTo": {"@id": "https://www.w3.org/TR/odrl-model/"}, + "dcterms:description": "Experimental, descriptive ODRL 2.2 profile for operator review of configured BReg record-operation grants. This is a partial projection of source configuration, not an access token, an activated-package declaration, a complete authorization policy, or a public catalogue. Missing permissions are not prohibitions. Consumers that do not understand this profile must stop processing its policies. BReg independently authenticates and authorizes every actual request.", + "skos:scopeNote": "Every permission describes only its named field projection and exact get or list operation. The native Registry Record envelope is outside the field list. Lookup, relationship traversal, history, count requests, data export, mutations, Actions, Proposals and statistical datasets are outside this profile. Request selectors, pagination and query parameters must satisfy BReg's current route contract. All conditions are conjunctive; absent or unverifiable context never satisfies them. Context comes from the current BReg resource server's verified token and selected compiled profile, never from caller assertions or an ODRL document. An export carries source revision information but does not establish that source is active.", + "skos:note": "This profile adopts odrl:read from the ODRL Common Vocabulary for its exact BReg projection and operation semantics. It is not an Eclipse EDC PolicyDefinition or a Dataspace Protocol Offer or Agreement, and has not been imported into or evaluated by EDC. EDC's reviewed permission parser drops rule-level targets, losing BReg projection identifiers, Record types and readable fields. Direct wrapping and import are unsafe. An adapter must preserve those targets, normalize list operands, bind the action and every custom constraint in each evaluation scope, and use verified BReg context. No adapter or EDC extension is included.", + "@graph": [ + { + "@id": "https://id.registrystack.org/vocab/breg-odrl/", + "@type": "skos:Collection", + "rdfs:isDefinedBy": {"@id": "https://id.registrystack.org/profiles/breg-odrl/v1"}, + "skos:prefLabel": "BReg ODRL profile vocabulary", + "skos:member": [ + {"@id": "odrl:read"}, + {"@id": "breg:authenticated"}, + {"@id": "breg:verifiedNonemptyClaims"}, + {"@id": "breg:accessProfile"}, + {"@id": "breg:operation"}, + {"@id": "breg:tokenScopes"}, + {"@id": "breg:tokenPurpose"}, + {"@id": "breg:requesterClient"}, + {"@id": "breg:actorKind"}, + {"@id": "breg:delegatedActor"}, + {"@id": "breg:taskGrantPresent"}, + {"@id": "breg:recordType"}, + {"@id": "breg:readableFields"}, + {"@id": "breg:partial"} + ] + }, + { + "@id": "breg:authenticated", + "rdfs:isDefinedBy": {"@id": "https://id.registrystack.org/profiles/breg-odrl/v1"}, + "@type": ["odrl:LeftOperand", "skos:Concept"], + "skos:prefLabel": "Authenticated by BReg", + "skos:definition": "Boolean true only after the current BReg resource server accepts the caller's token under its configured issuer, audience, validity and cryptographic checks. The exporter emits an odrl:eq comparison to true." + }, + { + "@id": "breg:verifiedNonemptyClaims", + "rdfs:isDefinedBy": {"@id": "https://id.registrystack.org/profiles/breg-odrl/v1"}, + "@type": ["odrl:LeftOperand", "skos:Concept"], + "skos:prefLabel": "Verified nonempty principal claims", + "skos:definition": "A singleton set containing the resource server's configured principal-claim name only when BReg resolved a valid principal from that claim, or the empty set otherwise. Other populated token claims are not members. odrl:hasPart with a singleton literal list requires both the exact configured claim name and a resolved principal. A claim name in the policy is not a principal identity." + }, + { + "@id": "breg:accessProfile", + "rdfs:isDefinedBy": {"@id": "https://id.registrystack.org/profiles/breg-odrl/v1"}, + "@type": ["odrl:LeftOperand", "skos:Concept"], + "skos:prefLabel": "Selected access profile", + "skos:definition": "The exact native access profile selected for this request. odrl:eq compares its local identifier as a string. Permissions from different profiles must not be combined to authorize one request. Selection alone does not establish authentication or satisfy other conditions." + }, + { + "@id": "breg:operation", + "rdfs:isDefinedBy": {"@id": "https://id.registrystack.org/profiles/breg-odrl/v1"}, + "@type": ["odrl:LeftOperand", "skos:Concept"], + "skos:prefLabel": "Native read operation", + "skos:definition": "The current BReg route operation, expressed as the literal get or list. get retrieves one identified record; list enumerates permitted current records subject to the route's query and pagination contract. Neither permits lookup routes, relationship traversal, historical access, optional count requests or data export. odrl:read applies only to the named projection through this exact operation." + }, + { + "@id": "breg:tokenScopes", + "rdfs:isDefinedBy": {"@id": "https://id.registrystack.org/profiles/breg-odrl/v1"}, + "@type": ["odrl:LeftOperand", "skos:Concept"], + "skos:prefLabel": "Verified token scopes", + "skos:definition": "The set of scopes extracted from the accepted token using BReg's current scope contract. odrl:hasPart requires every right-operand list member. Multiple such constraints are conjunctive. Scope strings remain literals, including strings containing colons." + }, + { + "@id": "breg:tokenPurpose", + "rdfs:isDefinedBy": {"@id": "https://id.registrystack.org/profiles/breg-odrl/v1"}, + "@type": ["odrl:LeftOperand", "skos:Concept"], + "skos:prefLabel": "Verified token purpose", + "skos:definition": "The single purpose value from the accepted token under BReg's current purpose-claim contract. odrl:isPartOf requires membership in the allowed literal list. A purpose supplied only in a request body or policy document does not satisfy this condition. Absence of this constraint means the source profile imposes no purpose restriction." + }, + { + "@id": "breg:requesterClient", + "rdfs:isDefinedBy": {"@id": "https://id.registrystack.org/profiles/breg-odrl/v1"}, + "@type": ["odrl:LeftOperand", "skos:Concept"], + "skos:prefLabel": "Verified requester client", + "skos:definition": "The OAuth client identity resolved by BReg from its verified caller context. odrl:isPartOf requires membership in the allowed literal list. Absence of this constraint means the source profile imposes no requester-client restriction." + }, + { + "@id": "breg:actorKind", + "rdfs:isDefinedBy": {"@id": "https://id.registrystack.org/profiles/breg-odrl/v1"}, + "@type": ["odrl:LeftOperand", "skos:Concept"], + "skos:prefLabel": "Verified actor kind", + "skos:definition": "The actor kind resolved by BReg from its verified caller context, compared with odrl:eq to human, agent or service. Absence of this constraint means the source profile imposes no explicit actor-kind restriction; the delegatedActor constraint still applies." + }, + { + "@id": "breg:delegatedActor", + "rdfs:isDefinedBy": {"@id": "https://id.registrystack.org/profiles/breg-odrl/v1"}, + "@type": ["odrl:LeftOperand", "skos:Concept"], + "skos:prefLabel": "Trusted delegated actor present", + "skos:definition": "Boolean indicating whether BReg's verified caller context contains a trusted actor subject. Standing agent profiles require true; every other exported profile requires false, including profiles without an explicit actorKind. A caller-supplied actor-kind label alone does not establish a trusted actor." + }, + { + "@id": "breg:taskGrantPresent", + "rdfs:isDefinedBy": {"@id": "https://id.registrystack.org/profiles/breg-odrl/v1"}, + "@type": ["odrl:LeftOperand", "skos:Concept"], + "skos:prefLabel": "Verified task grant present", + "skos:definition": "Boolean indicating whether BReg's verified caller context carries a task grant. Every exported permission requires false because task-grant profiles are outside this profile, and native BReg refuses grant-bearing tokens against standing profiles." + }, + { + "@id": "breg:recordType", + "rdfs:isDefinedBy": {"@id": "https://id.registrystack.org/profiles/breg-odrl/v1"}, + "@type": ["rdf:Property", "skos:Concept"], + "rdfs:domain": {"@id": "odrl:Asset"}, + "rdfs:range": {"@id": "http://www.w3.org/2001/XMLSchema#string"}, + "skos:prefLabel": "Native Record type", + "skos:definition": "The authored local Record type identifier whose readable field projection is the target asset. This metadata does not grant access to the complete Record type." + }, + { + "@id": "breg:readableFields", + "rdfs:isDefinedBy": {"@id": "https://id.registrystack.org/profiles/breg-odrl/v1"}, + "@type": ["rdf:Property", "skos:Concept"], + "rdfs:domain": {"@id": "odrl:Asset"}, + "rdfs:range": {"@id": "rdf:List"}, + "skos:prefLabel": "Projection fields", + "skos:definition": "The exact list of authored field identifiers included in the target projection. It never denotes a wildcard, related-record expansion or the entire dataset. It does not include the native Registry Record envelope." + }, + { + "@id": "breg:partial", + "rdfs:isDefinedBy": {"@id": "https://id.registrystack.org/profiles/breg-odrl/v1"}, + "@type": ["rdf:Property", "skos:Concept"], + "rdfs:range": {"@id": "http://www.w3.org/2001/XMLSchema#boolean"}, + "skos:prefLabel": "Partial description", + "skos:definition": "True indicates that the export is deliberately incomplete. An omitted permission is not represented and must not be interpreted as an explicit prohibition." + } + ] +} diff --git a/src/artifacts/sha256/2847a56eda9c8b838d28fde619853c36851acc57b094b74ec2665150f1ace8d4.yaml b/src/artifacts/sha256/2847a56eda9c8b838d28fde619853c36851acc57b094b74ec2665150f1ace8d4.yaml new file mode 100644 index 000000000..ab6ee6f30 --- /dev/null +++ b/src/artifacts/sha256/2847a56eda9c8b838d28fde619853c36851acc57b094b74ec2665150f1ace8d4.yaml @@ -0,0 +1,2208 @@ +$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' + 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$ + 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: Bundle fact schema whose JSON meaning must equal the pinned route schema. + allOf: + - {$ref: '#/$defs/relative-path'} + - {pattern: '^schemas/'} + 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 one configured source. The pinned pack route owns every preparation, + extraction, branching and bounded data operation in that acquisition. + type: object + additionalProperties: false + required: [source] + properties: + source: {$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 + 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/28757cb955ea96d628ff2442cc9dd7ce4f11998edada848a834ef9dfbc3c5c3e.json b/src/artifacts/sha256/28757cb955ea96d628ff2442cc9dd7ce4f11998edada848a834ef9dfbc3c5c3e.json new file mode 100644 index 000000000..bfd2aaa71 --- /dev/null +++ b/src/artifacts/sha256/28757cb955ea96d628ff2442cc9dd7ce4f11998edada848a834ef9dfbc3c5c3e.json @@ -0,0 +1,855 @@ +{ + "$defs": { + "AccessTokenAlgorithm": { + "description": "An asymmetric access-token signature algorithm.", + "enum": [ + "RS256", + "RS384", + "ES256", + "ES384", + "EdDSA" + ], + "type": "string" + }, + "AdapterDataClass": { + "enum": [ + "non-personal" + ], + "type": "string" + }, + "AdapterToolBinding": { + "additionalProperties": false, + "properties": { + "description": { + "maxLength": 4096, + "minLength": 1, + "type": "string" + }, + "operation": { + "type": "string" + } + }, + "required": [ + "operation", + "description" + ], + "type": "object" + }, + "ApplicationConfig": { + "additionalProperties": false, + "description": "The proposal-mode Action and its target input, resolved by the gateway.", + "properties": { + "action": { + "$ref": "#/$defs/LocalId" + }, + "targetInput": { + "$ref": "#/$defs/LocalId", + "description": "The input identifier of the input that references the citizen's own\nrecord." + } + }, + "required": [ + "action", + "targetInput" + ], + "type": "object" + }, + "AuditConfig": { + "additionalProperties": false, + "description": "The audit block every Registry Stack product shares: the hash key, then a\n`file` (the default) or `stdout` destination, with rotation and retention\nfor 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`." + }, + "hashKeyRef": { + "$ref": "#/$defs/SecretReference", + "description": "Secret reference to the audit hash key." + }, + "path": { + "description": "The absolute path of the active audit file. Required for a `file`\ndestination, and refused with `stdout`.", + "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" + } + }, + "required": [ + "hashKeyRef" + ], + "then": { + "not": { + "anyOf": [ + { + "required": [ + "path" + ] + }, + { + "required": [ + "rotateBytes" + ] + }, + { + "required": [ + "retentionDays" + ] + } + ] + } + }, + "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" + } + ] + }, + "Binding": { + "additionalProperties": false, + "properties": { + "name": { + "$ref": "#/$defs/LocalId" + }, + "provider": { + "$ref": "#/$defs/ProviderConfig" + }, + "tools": { + "items": { + "pattern": "^[A-Za-z0-9_.-]{1,256}$", + "type": "string" + }, + "maxItems": 128, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "name", + "tools", + "provider" + ], + "type": "object" + }, + "CaseworkAuthority": { + "description": "This selector declares the intended backend contract; Casework independently\nadmits the trusted gateway and enforces current task and source authority.", + "enum": [ + "delegated-staff-read" + ], + "type": "string" + }, + "DelegationConfig": { + "additionalProperties": false, + "properties": { + "audience": { + "$ref": "#/$defs/ResourceUri" + }, + "exchange": { + "$ref": "#/$defs/ExchangeConfig" + }, + "scopes": { + "items": { + "$ref": "#/$defs/ScopeToken" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "exchange", + "audience", + "scopes" + ], + "type": "object" + }, + "DetailsConfig": { + "additionalProperties": false, + "description": "The Record type holding the citizen's own record, found through the agent\nprofile's linked lookup.", + "properties": { + "recordType": { + "$ref": "#/$defs/LocalId" + } + }, + "required": [ + "recordType" + ], + "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" + }, + "ExchangeConfig": { + "additionalProperties": false, + "description": "The gateway's own client identity, used only to exchange a verified\ninbound token for a delegated registry token.", + "properties": { + "assertionAudience": { + "$ref": "#/$defs/ExternalId", + "description": "The client-assertion audience, when the authorization server expects\none other than its token endpoint. Omitted, the assertion names the\ntoken endpoint." + }, + "clientId": { + "$ref": "#/$defs/ExternalId", + "description": "The gateway's client identifier at the authorization server. It may\nnot also be one of `resourceServer.allowedClients`." + }, + "privateKeyRef": { + "$ref": "#/$defs/SecretReference", + "description": "Secret reference to the private JWK the gateway signs its client\nassertions with, under a declared provider." + }, + "tokenEndpoint": { + "$ref": "#/$defs/Url", + "description": "The authorization server's token endpoint. An https URL with no query\nor fragment; plain http is accepted only on a loopback host under\n`development-loopback`." + } + }, + "required": [ + "tokenEndpoint", + "clientId", + "privateKeyRef" + ], + "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" + } + ] + }, + "LimitsConfig": { + "additionalProperties": false, + "properties": { + "maximumRequestBytes": { + "default": 65536, + "description": "Largest request body the MCP endpoint reads, in bytes.", + "format": "uint64", + "maximum": 1048576, + "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" + }, + "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. The vocabulary is closed so configuration\ncannot turn on debug output or dependency logging.", + "enum": [ + "error", + "warn", + "info" + ], + "type": "string" + }, + "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" + }, + "ProviderConfig": { + "oneOf": [ + { + "additionalProperties": false, + "description": "Citizen-facing Base Registry Engine capabilities, delegated per call.", + "properties": { + "exchange": { + "$ref": "#/$defs/ExchangeConfig" + }, + "registry": { + "$ref": "#/$defs/RegistryConfig" + }, + "service": { + "$ref": "#/$defs/ServiceConfig" + }, + "type": { + "const": "breg", + "type": "string" + } + }, + "required": [ + "type", + "registry", + "exchange", + "service" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Assigned-task reads under the backend's explicitly opted-in delegated-reader policy.", + "properties": { + "authority": { + "$ref": "#/$defs/CaseworkAuthority" + }, + "authorization": { + "$ref": "#/$defs/DelegationConfig" + }, + "baseUrl": { + "$ref": "#/$defs/Url" + }, + "pageSize": { + "default": 25, + "format": "uint", + "maximum": 100, + "minimum": 1, + "type": "integer" + }, + "readerPolicy": { + "$ref": "#/$defs/LocalId" + }, + "sourceProfile": { + "$ref": "#/$defs/LocalId" + }, + "type": { + "const": "casework", + "type": "string" + } + }, + "required": [ + "type", + "authority", + "baseUrl", + "readerPolicy", + "authorization" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Non-personal reads from a separately operated Adapter deployment.", + "properties": { + "audience": { + "maxLength": 512, + "minLength": 1, + "pattern": "^[^\\u0000-\\u001F\\u007F-\\u009F]+$", + "type": "string" + }, + "baseUrl": { + "$ref": "#/$defs/Url" + }, + "contractDigest": { + "$ref": "#/$defs/Digest" + }, + "contractFile": { + "pattern": "^/", + "type": "string" + }, + "dataClass": { + "$ref": "#/$defs/AdapterDataClass" + }, + "machineTokenRef": { + "$ref": "#/$defs/SecretReference" + }, + "operations": { + "additionalProperties": { + "$ref": "#/$defs/AdapterToolBinding" + }, + "maxProperties": 128, + "minProperties": 1, + "propertyNames": { + "$ref": "#/$defs/ExternalId", + "pattern": "^[A-Za-z0-9_.-]{1,256}$" + }, + "type": "object" + }, + "type": { + "const": "adapter", + "type": "string" + } + }, + "required": [ + "type", + "baseUrl", + "contractFile", + "contractDigest", + "dataClass", + "audience", + "machineTokenRef", + "operations" + ], + "type": "object" + } + ] + }, + "RateLimitConfig": { + "additionalProperties": false, + "properties": { + "burst": { + "description": "Requests admitted at once before the average applies.", + "format": "uint32", + "maximum": 1000000, + "minimum": 1, + "type": "integer" + }, + "requestsPerMinute": { + "description": "Requests admitted per minute, on average.", + "format": "uint32", + "maximum": 1000000, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "requestsPerMinute", + "burst" + ], + "type": "object" + }, + "RateLimits": { + "additionalProperties": false, + "properties": { + "perClient": { + "$ref": "#/$defs/RateLimitConfig" + }, + "perPrincipal": { + "$ref": "#/$defs/RateLimitConfig" + } + }, + "required": [ + "perPrincipal", + "perClient" + ], + "type": "object" + }, + "RegistryConfig": { + "additionalProperties": false, + "description": "The outbound half: the registry the gateway acts on.", + "properties": { + "accessProfile": { + "$ref": "#/$defs/LocalId", + "description": "The standing agent access profile every call names." + }, + "attemptTimeoutMilliseconds": { + "default": 10000, + "description": "How long one registry call may take before it is abandoned, in\nmilliseconds.", + "format": "uint64", + "maximum": 120000, + "minimum": 100, + "type": "integer" + }, + "audience": { + "$ref": "#/$defs/ResourceUri", + "description": "The registry's token audience, requested as the exchange resource." + }, + "baseUrl": { + "$ref": "#/$defs/Url", + "description": "The registry deployment's base URL. An https URL with no query or\nfragment; plain http is accepted only on a loopback host under\n`development-loopback`." + }, + "scopes": { + "description": "The scopes requested for the delegated registry token.", + "items": { + "$ref": "#/$defs/ScopeToken" + }, + "maxItems": 128, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "baseUrl", + "accessProfile", + "audience", + "scopes" + ], + "type": "object" + }, + "ResourceServerConfig": { + "additionalProperties": false, + "description": "The inbound half: how a chat host's access token is verified.", + "properties": { + "algorithms": { + "description": "The asymmetric signature algorithms an accepted token may use.", + "items": { + "$ref": "#/$defs/AccessTokenAlgorithm" + }, + "maxItems": 128, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "allowInsecureHttp": { + "default": false, + "description": "Permit plain HTTP beyond loopback to the declared issuer and to a JWKS\nURI declared in `jwksSource`.", + "type": "boolean" + }, + "allowedClients": { + "description": "The chat-host clients whose tokens the gateway accepts.", + "items": { + "$ref": "#/$defs/ExternalId" + }, + "maxItems": 128, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "issuer": { + "$ref": "#/$defs/Url", + "description": "The exact issuer accepted in access-token `iss` claims. An https URL\nwith no query or fragment; plain http is accepted only on a loopback\nhost under `development-loopback`." + }, + "jwksSource": { + "$ref": "#/$defs/JwksSource", + "default": { + "type": "discovery" + }, + "description": "Where the issuer's signing keys come from. Omitted, they are read\nthrough the issuer's OpenID Connect discovery document." + }, + "maximumTokenLifetimeSeconds": { + "default": 3600, + "description": "The longest lifetime an accepted access token may declare, from its\n`iat` to its `exp`, in seconds.", + "format": "uint64", + "maximum": 86400, + "minimum": 1, + "type": "integer" + }, + "requiredScopes": { + "description": "Scopes every accepted token must carry. There is no sentinel for\n\"any scope\": a gateway that acts for a citizen always names the\nscope that consent was given for.", + "items": { + "$ref": "#/$defs/ScopeToken" + }, + "maxItems": 128, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "resource": { + "$ref": "#/$defs/Url", + "description": "This gateway's resource identifier: the exact URL of its MCP endpoint,\nwhich every accepted token must name as its audience. An https URL\nwhose path is `/mcp`, with no query or fragment; plain http is\naccepted only on a loopback host under `development-loopback`." + }, + "scopeClaim": { + "$ref": "#/$defs/ExternalId", + "default": "scope", + "description": "The access-token claim that carries the granted scopes." + } + }, + "required": [ + "resource", + "issuer", + "algorithms", + "allowedClients", + "requiredScopes" + ], + "type": "object" + }, + "ResourceUri": { + "description": "An RFC 8707 resource indicator: an absolute URI without a fragment. The reader also refuses user information and a URI it cannot parse.", + "maxLength": 512, + "minLength": 1, + "pattern": "^[A-Za-z][A-Za-z0-9+.-]*:(?:[A-Za-z0-9._~:/?\\[\\]@!$&'()*+,;=-]|%[0-9A-Fa-f]{2})*$", + "type": "string" + }, + "ScopeToken": { + "description": "An RFC 6749 scope token: printable ASCII other than space, `\"`, and `\\`.", + "maxLength": 512, + "minLength": 1, + "pattern": "^[!#-\\[\\]-~]+$", + "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" + }, + "ServiceConfig": { + "additionalProperties": false, + "description": "The authored service a citizen is told about, and the registry entities\nits tools work over.", + "properties": { + "application": { + "$ref": "#/$defs/ApplicationConfig" + }, + "description": { + "$ref": "#/$defs/ServiceText" + }, + "details": { + "$ref": "#/$defs/DetailsConfig" + }, + "disclosure": { + "$ref": "#/$defs/ServiceText", + "description": "What the citizen is told about the data the chat host will see." + }, + "name": { + "$ref": "#/$defs/ServiceText" + }, + "reviewBaseUrl": { + "$ref": "#/$defs/Url", + "description": "The citizen-facing review page; an application is reviewed and\nsubmitted there, never through the chat host. The review page's\n`publicOrigin`, with no path, query, or fragment." + } + }, + "required": [ + "name", + "description", + "disclosure", + "details", + "application", + "reviewBaseUrl" + ], + "type": "object" + }, + "ServiceText": { + "description": "Text a citizen reads: not blank, at most 4096 characters.", + "maxLength": 4096, + "minLength": 1, + "pattern": "\\S", + "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" + }, + "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/mcp-runtime/mcp-runtime.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/platform/mcp-runtime/v1alpha1", + "type": "string" + }, + "audit": { + "$ref": "#/$defs/AuditConfig" + }, + "bindings": { + "items": { + "$ref": "#/$defs/Binding" + }, + "maxItems": 32, + "minItems": 1, + "type": "array" + }, + "kind": { + "const": "PlatformMcpRuntimeConfig", + "type": "string" + }, + "limits": { + "$ref": "#/$defs/LimitsConfig" + }, + "listener": { + "$ref": "#/$defs/PrivateListenerConfig" + }, + "logLevel": { + "$ref": "#/$defs/LogLevel", + "default": "info" + }, + "name": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "rateLimits": { + "$ref": "#/$defs/RateLimits" + }, + "resourceServer": { + "$ref": "#/$defs/ResourceServerConfig" + }, + "secretProviders": { + "$ref": "#/$defs/SecretProvidersConfig" + } + }, + "required": [ + "apiVersion", + "kind", + "name", + "listener", + "secretProviders", + "resourceServer", + "audit", + "rateLimits", + "bindings" + ], + "title": "Registry Stack configurable MCP gateway runtime configuration", + "type": "object" +} diff --git a/src/artifacts/sha256/2a31e088e66073cf94b5d3769aebbeef3552cafa59c2281405be83ccd5390435.json b/src/artifacts/sha256/2a31e088e66073cf94b5d3769aebbeef3552cafa59c2281405be83ccd5390435.json new file mode 100644 index 000000000..4356d1464 --- /dev/null +++ b/src/artifacts/sha256/2a31e088e66073cf94b5d3769aebbeef3552cafa59c2281405be83ccd5390435.json @@ -0,0 +1,370 @@ +{ + "$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": { + "description": "The declared budget of upstream sends per exchange; the static\nworst-case count must stay within it.", + "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", + "maximumUpstreamCalls" + ], + "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" + } + ] + }, + "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" + }, + "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" + }, + "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" + } + }, + "$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.", + "properties": { + "accessProfiles": { + "default": [], + "description": "The access profiles.", + "items": { + "$ref": "#/$defs/AccessProfile" + }, + "type": "array" + }, + "apiVersion": { + "const": "id.registrystack.org/formats/adapter/project/v1alpha1", + "type": "string" + }, + "bindings": { + "default": [], + "description": "The bindings of contract operations to routes.", + "items": { + "$ref": "#/$defs/Binding" + }, + "type": "array" + }, + "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 facade profile." + }, + "project": { + "$ref": "#/$defs/ProjectIdentity", + "description": "The deployment's identity." + }, + "recordTypes": { + "description": "The declared record types and fields.", + "items": { + "$ref": "#/$defs/RecordType" + }, + "type": "array" + }, + "templatedRoutes": { + "default": [], + "description": "The pack template instantiations, Camel's `templatedRoute`.", + "items": { + "$ref": "#/$defs/TemplatedRoute" + }, + "type": "array" + } + }, + "required": [ + "apiVersion", + "kind", + "pack", + "profile", + "project", + "recordTypes" + ], + "title": "Registry Adapter project", + "type": "object" +} diff --git a/src/artifacts/sha256/38818527ae8cf4435485ea3f283af51b41c4d1d1e0e26d04ab3e59c158c150a7.json b/src/artifacts/sha256/38818527ae8cf4435485ea3f283af51b41c4d1d1e0e26d04ab3e59c158c150a7.json new file mode 100644 index 000000000..a2b867042 --- /dev/null +++ b/src/artifacts/sha256/38818527ae8cf4435485ea3f283af51b41c4d1d1e0e26d04ab3e59c158c150a7.json @@ -0,0 +1,488 @@ +{ + "$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 (D39).", + "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": [ + "pageDeadlineMilliseconds", + "maximumResponseBytes", + "maximumPageItems", + "maximumPageBytes", + "maximumUpstreamCalls", + "read" + ], + "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/472c4861ab27a301f077784e63cd06891ef4b73813aab1dd802c567daac70d16.json b/src/artifacts/sha256/472c4861ab27a301f077784e63cd06891ef4b73813aab1dd802c567daac70d16.json new file mode 100644 index 000000000..13518be36 --- /dev/null +++ b/src/artifacts/sha256/472c4861ab27a301f077784e63cd06891ef4b73813aab1dd802c567daac70d16.json @@ -0,0 +1,1134 @@ +{ + "$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." + }, + "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." + }, + "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" + }, + "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" + }, + "title": { + "$ref": "#/$defs/DisplayText", + "description": "An optional human title; it changes neither stable identity nor behavior revision." + } + }, + "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`." + }, + "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." + }, + "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." + } + }, + "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." + }, + "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" + }, + "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." + }, + "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" + }, + "title": { + "$ref": "#/$defs/DisplayText", + "description": "An optional human title; it changes neither stable identity nor behavior revision." + }, + "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." + }, + "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." + }, + "title": { + "$ref": "#/$defs/DisplayText", + "description": "An optional human title; it changes neither stable identity nor behavior revision." + }, + "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." + }, + "title": { + "$ref": "#/$defs/DisplayText", + "description": "An optional human title; 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." + }, + "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." + }, + "title": { + "$ref": "#/$defs/DisplayText", + "description": "An optional human title; it changes neither stable identity nor behavior revision." + }, + "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" + }, + "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 + }, + "title": { + "$ref": "#/$defs/DisplayText", + "description": "An optional human title; it changes neither stable identity nor behavior revision." + }, + "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/4babace1053c7b8446b682ce2db17a220263e669b397a414d98ead9d47af459a.json b/src/artifacts/sha256/4babace1053c7b8446b682ce2db17a220263e669b397a414d98ead9d47af459a.json new file mode 100644 index 000000000..fb1886e08 --- /dev/null +++ b/src/artifacts/sha256/4babace1053c7b8446b682ce2db17a220263e669b397a414d98ead9d47af459a.json @@ -0,0 +1,5729 @@ +{ + "$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" + }, + "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": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "title": { + "$ref": "#/$defs/ManifestProjectionTextSource" + } + }, + "required": [ + "id", + "title" + ], + "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" + }, + "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", + "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" + } + ] + }, + "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/55959ae4cc86f1cd393cca382d7cdfd367ccc703c8676a350af4299b59ebb043.json b/src/artifacts/sha256/55959ae4cc86f1cd393cca382d7cdfd367ccc703c8676a350af4299b59ebb043.json new file mode 100644 index 000000000..b3683fe88 --- /dev/null +++ b/src/artifacts/sha256/55959ae4cc86f1cd393cca382d7cdfd367ccc703c8676a350af4299b59ebb043.json @@ -0,0 +1,1620 @@ +{ + "$defs": { + "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" + }, + "OidcAlgorithm": { + "enum": [ + "EdDSA", + "ES256", + "ES384", + "RS256", + "RS384" + ], + "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/OidcAlgorithm" + }, + "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/5bfd55b2ccee480035ee9db13b8fb3a99ac5a2e9cd01645fdda8dfeb593eb688.json b/src/artifacts/sha256/5bfd55b2ccee480035ee9db13b8fb3a99ac5a2e9cd01645fdda8dfeb593eb688.json new file mode 100644 index 000000000..63cc19348 --- /dev/null +++ b/src/artifacts/sha256/5bfd55b2ccee480035ee9db13b8fb3a99ac5a2e9cd01645fdda8dfeb593eb688.json @@ -0,0 +1,427 @@ +{ + "$defs": { + "DerivedId": { + "description": "An identifier the runtime derives from local identifiers: two or more local identifiers joined by `.`. It is never authored.", + "pattern": "^[a-z][a-z0-9_-]{0,63}(\\.[a-z][a-z0-9_-]{0,63})+$", + "type": "string" + }, + "Digest": { + "description": "A SHA-256 digest: `sha256:` followed by 64 lowercase hex digits.", + "pattern": "^sha256:[0-9a-f]{64}$", + "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" + }, + "access": { + "additionalProperties": false, + "properties": { + "anyOf": { + "items": { + "$ref": "#/$defs/scopeSet" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "anyOf" + ], + "type": "object" + }, + "authentication": { + "additionalProperties": false, + "properties": { + "audience": { + "$ref": "#/$defs/nonEmptyText" + }, + "clientAdmission": { + "const": "allowlist" + }, + "scheme": { + "const": "bearer" + } + }, + "required": [ + "scheme", + "audience", + "clientAdmission" + ], + "type": "object" + }, + "authority": { + "additionalProperties": false, + "properties": { + "callerMode": { + "const": "trusted-machine" + }, + "fieldDisclosureAuthority": { + "const": "not-granted" + }, + "personalDelegation": { + "const": "unsupported" + }, + "representedSubject": { + "const": "unsupported" + }, + "rowDisclosureAuthority": { + "const": "not-granted" + }, + "targetBinding": { + "const": "unsupported" + } + }, + "required": [ + "callerMode", + "representedSubject", + "personalDelegation", + "targetBinding", + "rowDisclosureAuthority", + "fieldDisclosureAuthority" + ], + "type": "object" + }, + "contract": { + "additionalProperties": false, + "properties": { + "artifactDeploymentDigest": { + "$ref": "#/$defs/Digest" + }, + "authentication": { + "$ref": "#/$defs/authentication" + }, + "authority": { + "$ref": "#/$defs/authority" + }, + "operations": { + "items": { + "$ref": "#/$defs/operation" + }, + "type": "array" + }, + "problemSchema": { + "$ref": "#/$defs/jsonSchema" + }, + "profileVersion": { + "type": "string" + }, + "project": { + "$ref": "#/$defs/project" + }, + "protocolProblems": { + "$ref": "#/$defs/protocolProblems" + }, + "schemaDialect": { + "const": "https://json-schema.org/draft/2020-12/schema" + }, + "unserved": { + "items": { + "$ref": "#/$defs/unserved" + }, + "type": "array" + } + }, + "required": [ + "schemaDialect", + "project", + "profileVersion", + "artifactDeploymentDigest", + "authentication", + "authority", + "operations", + "unserved", + "problemSchema", + "protocolProblems" + ], + "type": "object" + }, + "input": { + "additionalProperties": false, + "properties": { + "body": { + "$ref": "#/$defs/jsonSchema" + }, + "path": { + "$ref": "#/$defs/jsonSchema" + }, + "query": { + "$ref": "#/$defs/jsonSchema" + } + }, + "required": [ + "path", + "query" + ], + "type": "object" + }, + "jsonSchema": { + "type": "object", + "x-registry-passthrough": "The embedded JSON Schema document is governed by JSON Schema 2020-12." + }, + "nonEmptyText": { + "minLength": 1, + "type": "string" + }, + "operation": { + "additionalProperties": false, + "properties": { + "access": { + "$ref": "#/$defs/access" + }, + "bindingId": { + "$ref": "#/$defs/LocalId" + }, + "effect": { + "const": "read" + }, + "id": { + "$ref": "#/$defs/DerivedId" + }, + "input": { + "$ref": "#/$defs/input" + }, + "method": { + "pattern": "^(GET|POST)$", + "type": "string" + }, + "output": { + "$ref": "#/$defs/jsonSchema" + }, + "path": { + "pattern": "^/", + "type": "string" + }, + "profileOperationId": { + "$ref": "#/$defs/LocalId" + }, + "requestMaximumBytes": { + "maximum": 1048576, + "minimum": 1, + "type": "integer" + }, + "successStatus": { + "maximum": 299, + "minimum": 200, + "type": "integer" + }, + "support": { + "const": "served" + }, + "version": { + "type": "string" + } + }, + "required": [ + "id", + "version", + "bindingId", + "profileOperationId", + "method", + "path", + "support", + "effect", + "successStatus", + "input", + "output", + "access" + ], + "type": "object" + }, + "project": { + "additionalProperties": false, + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "version": { + "type": "string" + } + }, + "required": [ + "id", + "version" + ], + "type": "object" + }, + "protocolProblems": { + "additionalProperties": false, + "properties": { + "problems": { + "items": false, + "maxItems": 2, + "minItems": 2, + "prefixItems": [ + { + "additionalProperties": false, + "properties": { + "code": { + "const": "adapter.contract.precondition-failed" + }, + "status": { + "const": 412 + }, + "title": { + "const": "Effective contract precondition failed" + } + }, + "required": [ + "code", + "status", + "title" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "code": { + "const": "adapter.contract.unavailable" + }, + "status": { + "const": 503 + }, + "title": { + "const": "Effective contract unavailable" + } + }, + "required": [ + "code", + "status", + "title" + ], + "type": "object" + } + ], + "type": "array", + "uniqueItems": true + }, + "schema": { + "$ref": "#/$defs/jsonSchema" + } + }, + "required": [ + "schema", + "problems" + ], + "type": "object" + }, + "readiness": { + "additionalProperties": false, + "properties": { + "configuration": { + "const": "ready" + }, + "journal": { + "const": "ready" + }, + "ready": { + "const": true + } + }, + "required": [ + "ready", + "configuration", + "journal" + ], + "type": "object" + }, + "scopeSet": { + "additionalProperties": false, + "properties": { + "allScopes": { + "items": { + "$ref": "#/$defs/nonEmptyText" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "allScopes" + ], + "type": "object" + }, + "unserved": { + "additionalProperties": false, + "properties": { + "bindingId": { + "$ref": "#/$defs/LocalId" + }, + "effect": { + "enum": [ + "read", + "write", + "unknown" + ] + }, + "method": { + "description": "A case-sensitive HTTP method token from RFC 9110.", + "pattern": "^(GET|POST|PUT|PATCH)$", + "type": "string" + }, + "operationId": { + "$ref": "#/$defs/nonEmptyText" + }, + "profileOperationId": { + "$ref": "#/$defs/LocalId" + }, + "reason": { + "$ref": "#/$defs/nonEmptyText" + }, + "reasonCode": { + "pattern": "^adapter\\.[a-z0-9.-]+$", + "type": "string" + }, + "support": { + "const": "unserved" + }, + "version": { + "type": "string" + } + }, + "required": [ + "operationId", + "version", + "bindingId", + "profileOperationId", + "support", + "effect", + "reasonCode", + "reason" + ], + "type": "object" + } + }, + "$id": "https://id.registrystack.org/schemas/adapter/effective-contract/effective-contract.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/adapter/effective-contract/v1alpha1" + }, + "contract": { + "$ref": "#/$defs/contract" + }, + "digest": { + "$ref": "#/$defs/Digest" + }, + "kind": { + "const": "AdapterEffectiveContract" + }, + "readiness": { + "$ref": "#/$defs/readiness" + } + }, + "required": [ + "apiVersion", + "kind", + "digest", + "contract" + ], + "title": "Registry Adapter effective contract", + "type": "object" +} diff --git a/src/artifacts/sha256/6031baaabca785fe6e0adfed4336fa555839e18ae1a3136cf3e895ad5e6f6dcb.json b/src/artifacts/sha256/6031baaabca785fe6e0adfed4336fa555839e18ae1a3136cf3e895ad5e6f6dcb.json new file mode 100644 index 000000000..ec3548e05 --- /dev/null +++ b/src/artifacts/sha256/6031baaabca785fe6e0adfed4336fa555839e18ae1a3136cf3e895ad5e6f6dcb.json @@ -0,0 +1,2467 @@ +{ + "$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 (D39); the checks refuse 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 (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`).", + "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" + }, + "steps": { + "description": "The template body, with `{{name}}` and `{{?name}}` placeholders.", + "items": { + "$ref": "#/$defs/Step" + }, + "type": "array" + } + }, + "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" + }, + "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`." + }, + "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" + } + ] + }, + "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(Increment 3; `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/62c45846105e0231417e0450568a899ea05f78f41250b450353c074407cc5f26.json b/src/artifacts/sha256/62c45846105e0231417e0450568a899ea05f78f41250b450353c074407cc5f26.json new file mode 100644 index 000000000..200b31746 --- /dev/null +++ b/src/artifacts/sha256/62c45846105e0231417e0450568a899ea05f78f41250b450353c074407cc5f26.json @@ -0,0 +1,1117 @@ +{ + "$defs": { + "Acquisition": { + "additionalProperties": false, + "properties": { + "source": { + "$ref": "#/$defs/LocalId", + "description": "One reviewed route owns the complete bounded provider interaction." + } + }, + "required": [ + "source" + ], + "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" + }, + "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" + }, + "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" + }, + "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" + }, + "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" + }, + "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/8032fd67f82f517cade8e55c4d3972bc5481a957b84a4cb70b3f40f82ac970d3.json b/src/artifacts/sha256/8032fd67f82f517cade8e55c4d3972bc5481a957b84a4cb70b3f40f82ac970d3.json new file mode 100644 index 000000000..95bef2441 --- /dev/null +++ b/src/artifacts/sha256/8032fd67f82f517cade8e55c4d3972bc5481a957b84a4cb70b3f40f82ac970d3.json @@ -0,0 +1,387 @@ +{ + "$defs": { + "AsyncStatusPath": { + "description": "One profile-owned caller path for asynchronous write status. The path\nremains inside the facade and carries exactly one opaque status handle;\nit never accepts a source URL or caller-selected path member.", + "type": "string" + }, + "EnvelopeTemplate": { + "description": "An envelope template: a JSON template whose string members carry\n`{{slot}}` placeholders from the closed vocabulary\n(`products/adapter/CONCEPT.md` section 7). The template is data; the\nengine fills it.", + "type": "string" + }, + "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" + }, + "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" + }, + "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" + }, + "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" + }, + "PaginationParameters": { + "additionalProperties": false, + "description": "The pagination parameters of a search operation: the cursor and\npage-size query parameter names and their bounds\n(`products/adapter/CONCEPT.md` section 7). The engine owns encoding the\ncursor; the profile owns the names.", + "properties": { + "cursorParameter": { + "$ref": "#/$defs/ExternalId", + "description": "The cursor query parameter name." + }, + "pageSizeDefault": { + "description": "The page size a call that names none gets; within the bounds. A\ncursor carries the page size of the call that minted it: a later\ncall may omit the size, and one that names a different size is\nrefused.", + "format": "uint64", + "maximum": 100000, + "minimum": 1, + "type": "integer" + }, + "pageSizeMaximum": { + "description": "The largest page size a caller may ask for.", + "format": "uint64", + "maximum": 100000, + "minimum": 1, + "type": "integer" + }, + "pageSizeMinimum": { + "description": "The smallest page size a caller may ask for.", + "format": "uint64", + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "pageSizeParameter": { + "$ref": "#/$defs/ExternalId", + "description": "The page-size query parameter name." + } + }, + "required": [ + "cursorParameter", + "pageSizeParameter", + "pageSizeMinimum", + "pageSizeMaximum" + ], + "type": "object" + }, + "ParameterizedPart": { + "additionalProperties": false, + "description": "One parameterized part: a part of the profile a deployment declares at\nbind time (`products/adapter/CONCEPT.md` sections 6 and 7).", + "properties": { + "description": { + "description": "What the part means, for review.", + "type": "string" + }, + "name": { + "$ref": "#/$defs/ExternalId", + "description": "The part name." + } + }, + "required": [ + "name", + "description" + ], + "type": "object" + }, + "Problem": { + "additionalProperties": false, + "description": "One problem a caller can receive: the profile's own answer shape for\nthe error classes it maps (`products/adapter/CONCEPT.md` sections 7\nand 8.11.6). A pack raises error classes and never names a problem\ncode or builds a problem body; the profile decides what the caller\nsees.", + "properties": { + "classes": { + "description": "The error classes this problem answers: a class resolves to the\nentry whose declared class is closest to it, by the rule of\n`products/adapter/CONCEPT.md` section 8.7.", + "items": { + "$ref": "#/$defs/ErrorClass" + }, + "type": "array", + "uniqueItems": true + }, + "code": { + "$ref": "#/$defs/ExternalId", + "description": "The profile's own problem code a caller receives." + }, + "dataFields": { + "description": "The optional closed scalar object this problem may disclose. Every\ndeclared field is required when the object is present; authoring\nchecks enforce the field-count and required-field bounds.", + "items": { + "$ref": "#/$defs/RecordField" + }, + "maxItems": 16, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "status": { + "description": "The default HTTP status for profile-governed route failures. Fixed\nfacade admission failures retain their engine-defined status; the\neffective problem schema includes those resolved class/status pairs.", + "format": "uint32", + "maximum": 599, + "minimum": 400, + "type": "integer" + }, + "title": { + "description": "The problem title the envelope's `problemTitle` slot fills from.", + "type": "string" + } + }, + "required": [ + "code", + "status", + "title", + "classes" + ], + "type": "object" + }, + "ProfileAsyncCompletion": { + "additionalProperties": false, + "description": "The caller-visible asynchronous completion contract of one write.", + "properties": { + "acceptedEnvelope": { + "$ref": "#/$defs/EnvelopeTemplate", + "description": "The exact accepted response shape, over the three async slots and\noptional profile parameterized parts." + }, + "completedStatus": { + "description": "The status returned after the source proves successful completion.", + "format": "uint32", + "maximum": 299, + "minimum": 200, + "type": "integer" + }, + "statusPath": { + "$ref": "#/$defs/AsyncStatusPath", + "description": "The profile-owned facade path that receives the opaque status id." + } + }, + "required": [ + "completedStatus", + "statusPath", + "acceptedEnvelope" + ], + "type": "object" + }, + "ProfileOperation": { + "additionalProperties": false, + "description": "One facade operation, declared by id\n(`products/adapter/CONCEPT.md` sections 6 and 7). The id is a\nprofile-declared bounded string (CFG-ID-5), never an engine enum.", + "properties": { + "asyncCompletion": { + "$ref": "#/$defs/ProfileAsyncCompletion", + "description": "The explicit asynchronous completion contract of a 202 write." + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The profile-declared operation id a binding names." + }, + "itemEnvelope": { + "$ref": "#/$defs/EnvelopeTemplate", + "description": "The per-record template: when declared, every record the response\nenvelope's `record` or `records` slot carries is rendered through\nit first. It may name `record`, `recordId` (the identifier the\nroute's record carries beside its domain data), `recordType`, and\n`requestId`. A call whose route yields no identifier for a template\nthat names `recordId` is a disclosure violation." + }, + "method": { + "$ref": "#/$defs/HttpMethod", + "description": "The facade method." + }, + "pagination": { + "$ref": "#/$defs/PaginationParameters", + "description": "The pagination parameters of a search operation." + }, + "path": { + "description": "The facade path template, e.g. `/v2/cases/{type}`. Placeholders\nare single-brace `{name}` templates, Camel REST DSL / OpenAPI path\ntemplating; `{{name}}` is the pack layer's substitution syntax and\nrefuses here.", + "type": "string" + }, + "pathParameters": { + "description": "The path parameters the template names: every `{name}` in `path`\nmust resolve here, every entry must appear in the path, and the\nlist is unique (CFG-ID-6).", + "items": { + "$ref": "#/$defs/LocalId" + }, + "type": "array", + "uniqueItems": true + }, + "readOnly": { + "description": "Whether a POST operation only reads: it is served like a read\n(never the write path), its request envelope is a closed template\nover the caller's JSON body, and its route reaches only safe sends.\nA GET operation is a read without declaring it.", + "type": "boolean" + }, + "recordIdParameter": { + "$ref": "#/$defs/LocalId", + "description": "The path parameter the caller's `recordId` header fills on get,\nupdate, and patch; one of `pathParameters` when declared. A search\nor create operation fills none; the profile checks require the\nparameter exactly where the facade reads it." + }, + "recordTypeParameter": { + "$ref": "#/$defs/LocalId", + "description": "The path parameter the bound record type substitutes into\n(`products/adapter/CONCEPT.md` section 7): one of `pathParameters`,\nchecked at the profile checks. No rule reads meaning from the\nparameter's position." + }, + "requestEnvelope": { + "$ref": "#/$defs/EnvelopeTemplate", + "description": "Where a writable record sits in an incoming body. A write\noperation's request envelope must name the `record` slot." + }, + "requestMaximumBytes": { + "description": "The largest request body, in bytes, a read operation with a body\naccepts; a larger one answers `facade.payload-too-large`. Sixteen\nkibibytes when absent.", + "format": "uint64", + "maximum": 1048576, + "minimum": 1, + "type": "integer" + }, + "responseEnvelope": { + "$ref": "#/$defs/EnvelopeTemplate", + "description": "The response envelope; must name its result slot." + }, + "successStatus": { + "default": 200, + "description": "The status the facade answers a success with; two hundreds only\n(CFG-QTY-4). Every non-2xx answer is a problem body.", + "format": "uint32", + "maximum": 299, + "minimum": 200, + "type": "integer" + } + }, + "required": [ + "id", + "method", + "path", + "recordTypeParameter", + "responseEnvelope" + ], + "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" + } + }, + "$id": "https://id.registrystack.org/schemas/adapter/profile/profile.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "description": "The facade profile artifact (`AdapterProfile`): the operation set, the\nenvelope templates, the pagination parameters, and the problems and\nproblem envelope.", + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/adapter/profile/v1alpha1", + "type": "string" + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The profile identifier a project pins." + }, + "kind": { + "const": "AdapterProfile", + "type": "string" + }, + "operations": { + "description": "The operations the profile serves.", + "items": { + "$ref": "#/$defs/ProfileOperation" + }, + "type": "array" + }, + "parameterizedParts": { + "default": [], + "description": "The parts of the profile a deployment declares at bind time.", + "items": { + "$ref": "#/$defs/ParameterizedPart" + }, + "type": "array", + "uniqueItems": true + }, + "problemEnvelope": { + "$ref": "#/$defs/EnvelopeTemplate", + "description": "The problem envelope template; must carry the `problemCode` slot." + }, + "problems": { + "description": "The problems a caller can receive, each mapping error classes to a\ncode, status, and title. The totality check requires every class of\nthe closed hierarchy, uncatchable and facade classes included, to\nresolve to exactly one entry\n(`products/adapter/CONCEPT.md` sections 7 and 8.11.6).", + "items": { + "$ref": "#/$defs/Problem" + }, + "type": "array" + }, + "version": { + "description": "The profile's own version; a project pin names it next to the\ndigest (CFG-ID-4).", + "type": "string" + } + }, + "required": [ + "apiVersion", + "id", + "kind", + "operations", + "problemEnvelope", + "problems", + "version" + ], + "title": "Registry Adapter facade profile", + "type": "object" +} diff --git a/src/artifacts/sha256/8177563ac1261680db7070b59f8b651d1cfe8c33cb5423891902bab4d5f8173e.json b/src/artifacts/sha256/8177563ac1261680db7070b59f8b651d1cfe8c33cb5423891902bab4d5f8173e.json new file mode 100644 index 000000000..d288a93ba --- /dev/null +++ b/src/artifacts/sha256/8177563ac1261680db7070b59f8b651d1cfe8c33cb5423891902bab4d5f8173e.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.", + "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/912661673c41c1119a8bd83809c66cc2d38b16e171c963b4988175c74f627664.json b/src/artifacts/sha256/912661673c41c1119a8bd83809c66cc2d38b16e171c963b4988175c74f627664.json new file mode 100644 index 000000000..4a93cee93 --- /dev/null +++ b/src/artifacts/sha256/912661673c41c1119a8bd83809c66cc2d38b16e171c963b4988175c74f627664.json @@ -0,0 +1,467 @@ +{ + "$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", + "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", + "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/9949f5e3a10d4deb0038359d76d1f59b160449472bcd0b6c99e45ad776d20f80.json b/src/artifacts/sha256/9949f5e3a10d4deb0038359d76d1f59b160449472bcd0b6c99e45ad776d20f80.json new file mode 100644 index 000000000..326b186a9 --- /dev/null +++ b/src/artifacts/sha256/9949f5e3a10d4deb0038359d76d1f59b160449472bcd0b6c99e45ad776d20f80.json @@ -0,0 +1,4476 @@ +{ + "$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" + } + ] + }, + "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/9d026bf36a11bc83493f835f028ff52092e0f6c4cd42b471024ead336b6d8a9e.json b/src/artifacts/sha256/9d026bf36a11bc83493f835f028ff52092e0f6c4cd42b471024ead336b6d8a9e.json new file mode 100644 index 000000000..a011a523b --- /dev/null +++ b/src/artifacts/sha256/9d026bf36a11bc83493f835f028ff52092e0f6c4cd42b471024ead336b6d8a9e.json @@ -0,0 +1,4767 @@ +{ + "$defs": { + "AccessProfile": { + "additionalProperties": false, + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "principalClaim": { + "type": "string" + }, + "requiredScopes": { + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "role": { + "$ref": "#/$defs/CaseworkRole" + } + }, + "required": [ + "id", + "principalClaim", + "requiredScopes", + "role" + ], + "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" + }, + "CaseworkRole": { + "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": { + "assertionKeyFile": { + "type": "string" + }, + "clientIdFile": { + "type": "string" + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "profile": { + "type": "string" + }, + "role": { + "$ref": "#/$defs/CaseworkRole" + }, + "subject": { + "type": "string" + } + }, + "required": [ + "id", + "profile", + "role", + "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": [ + "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/bb19696ad1cf4f6c89de72d1b50da9f8897761cd15066c4281500836306ea09e.json b/src/artifacts/sha256/bb19696ad1cf4f6c89de72d1b50da9f8897761cd15066c4281500836306ea09e.json new file mode 100644 index 000000000..6fe544a8b --- /dev/null +++ b/src/artifacts/sha256/bb19696ad1cf4f6c89de72d1b50da9f8897761cd15066c4281500836306ea09e.json @@ -0,0 +1,1332 @@ +{ + "$defs": { + "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" + }, + "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" + }, + "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" + }, + "TargetAccessTokenAlgorithm": { + "enum": [ + "EdDSA", + "ES256", + "RS256" + ], + "type": "string" + }, + "TargetAccessTokenType": { + "enum": [ + "at+jwt", + "application/at+jwt" + ], + "type": "string" + }, + "TargetAdmissionGate": { + "anyOf": [ + { + "const": "unrestricted", + "type": "string" + }, + { + "items": { + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + ] + }, + "TargetAssuranceProfile": { + "enum": [ + "local", + "production", + "evidence-grade" + ], + "type": "string" + }, + "TargetAudit": { + "additionalProperties": false, + "properties": { + "destination": { + "anyOf": [ + { + "$ref": "#/$defs/TargetAuditDestination" + }, + { + "type": "null" + } + ] + }, + "hashKeyRef": { + "$ref": "#/$defs/SecretReference" + }, + "hashKeyVersion": { + "format": "uint32", + "maximum": 2147483647, + "minimum": 1, + "type": "integer" + }, + "path": { + "type": [ + "string", + "null" + ] + }, + "retentionDays": { + "format": "uint32", + "maximum": 36500, + "minimum": 1, + "type": [ + "integer", + "null" + ] + }, + "rotateBytes": { + "format": "uint64", + "maximum": 4294967295, + "minimum": 1048576, + "type": [ + "integer", + "null" + ] + } + }, + "required": [ + "hashKeyRef", + "hashKeyVersion" + ], + "type": "object" + }, + "TargetAuditDestination": { + "enum": [ + "file", + "stdout" + ], + "type": "string" + }, + "TargetAuthentication": { + "additionalProperties": false, + "properties": { + "oidc": { + "$ref": "#/$defs/TargetOidcAuthentication" + } + }, + "required": [ + "oidc" + ], + "type": "object" + }, + "TargetClaimName": { + "description": "The name of one direct JWT claim, within 128 ASCII bytes. Dots are literal characters. Omit to retain the governed runtime's default claim name; claim-role uniqueness and reserved names are revalidated with the complete authentication configuration.", + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z_][A-Za-z0-9_.-]{0,127}$", + "type": "string" + }, + "TargetClaimNames": { + "additionalProperties": false, + "properties": { + "actorKind": { + "anyOf": [ + { + "$ref": "#/$defs/TargetClaimName" + }, + { + "type": "null" + } + ] + }, + "approver": { + "anyOf": [ + { + "$ref": "#/$defs/TargetClaimName" + }, + { + "type": "null" + } + ] + }, + "grantBounds": { + "anyOf": [ + { + "$ref": "#/$defs/TargetClaimName" + }, + { + "type": "null" + } + ] + }, + "grantClient": { + "anyOf": [ + { + "$ref": "#/$defs/TargetClaimName" + }, + { + "type": "null" + } + ] + }, + "grantExp": { + "anyOf": [ + { + "$ref": "#/$defs/TargetClaimName" + }, + { + "type": "null" + } + ] + }, + "grantId": { + "anyOf": [ + { + "$ref": "#/$defs/TargetClaimName" + }, + { + "type": "null" + } + ] + }, + "grantResource": { + "anyOf": [ + { + "$ref": "#/$defs/TargetClaimName" + }, + { + "type": "null" + } + ] + }, + "grantSourceIssuer": { + "anyOf": [ + { + "$ref": "#/$defs/TargetClaimName" + }, + { + "type": "null" + } + ] + }, + "purpose": { + "anyOf": [ + { + "$ref": "#/$defs/TargetClaimName" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "TargetConnection": { + "additionalProperties": false, + "properties": { + "allowedPrivateCidrs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "endpoints": { + "additionalProperties": { + "$ref": "#/$defs/TargetEndpointBinding" + }, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + } + }, + "required": [ + "endpoints" + ], + "type": "object" + }, + "TargetConnectionAuthentication": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "type": { + "const": "none", + "type": "string" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "passwordRef": { + "$ref": "#/$defs/SecretReference" + }, + "type": { + "const": "basic", + "type": "string" + }, + "usernameRef": { + "$ref": "#/$defs/SecretReference" + } + }, + "required": [ + "type", + "usernameRef", + "passwordRef" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "scheme": { + "type": [ + "string", + "null" + ] + }, + "tokenRef": { + "$ref": "#/$defs/SecretReference" + }, + "type": { + "const": "bearer", + "type": "string" + } + }, + "required": [ + "type", + "tokenRef" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "scheme": { + "type": [ + "string", + "null" + ] + }, + "tokenRef": { + "$ref": "#/$defs/SecretReference" + }, + "type": { + "const": "static-authorization", + "type": "string" + } + }, + "required": [ + "type", + "tokenRef" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "headerName": { + "type": "string" + }, + "type": { + "const": "static-api-key", + "type": "string" + }, + "valueRef": { + "$ref": "#/$defs/SecretReference" + } + }, + "required": [ + "type", + "headerName", + "valueRef" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "assumedLifetimeSeconds": { + "format": "uint64", + "maximum": 86400, + "minimum": 1, + "type": [ + "integer", + "null" + ] + }, + "audience": { + "type": [ + "string", + "null" + ] + }, + "clientIdRef": { + "$ref": "#/$defs/SecretReference" + }, + "clientSecretRef": { + "$ref": "#/$defs/SecretReference" + }, + "credentialPlacement": { + "$ref": "#/$defs/TargetCredentialPlacement" + }, + "maximumCacheSeconds": { + "format": "uint64", + "maximum": 86400, + "minimum": 0, + "type": "integer" + }, + "resource": { + "type": [ + "string", + "null" + ] + }, + "scope": { + "type": [ + "string", + "null" + ] + }, + "tokenEndpoint": { + "type": "string" + }, + "type": { + "const": "oauth2-client-credentials", + "type": "string" + } + }, + "required": [ + "type", + "tokenEndpoint", + "clientIdRef", + "clientSecretRef", + "credentialPlacement", + "maximumCacheSeconds" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "assumedLifetimeSeconds": { + "format": "uint64", + "maximum": 86400, + "minimum": 1, + "type": [ + "integer", + "null" + ] + }, + "audience": { + "type": [ + "string", + "null" + ] + }, + "clientAssertionAudience": { + "type": [ + "string", + "null" + ] + }, + "clientAssertionKeyRef": { + "$ref": "#/$defs/SecretReference" + }, + "clientIdRef": { + "$ref": "#/$defs/SecretReference" + }, + "maximumCacheSeconds": { + "format": "uint64", + "maximum": 86400, + "minimum": 0, + "type": "integer" + }, + "resource": { + "type": [ + "string", + "null" + ] + }, + "scope": { + "type": [ + "string", + "null" + ] + }, + "tokenEndpoint": { + "type": "string" + }, + "type": { + "const": "oauth2-private-key-jwt", + "type": "string" + } + }, + "required": [ + "type", + "tokenEndpoint", + "clientIdRef", + "clientAssertionKeyRef", + "maximumCacheSeconds" + ], + "type": "object" + } + ] + }, + "TargetCredentialPlacement": { + "enum": [ + "basic-header", + "form-body" + ], + "type": "string" + }, + "TargetEndpointBinding": { + "additionalProperties": false, + "properties": { + "attemptTimeoutMilliseconds": { + "format": "uint64", + "maximum": 18446744073709551615, + "minimum": 1, + "type": [ + "integer", + "null" + ] + }, + "authentication": { + "$ref": "#/$defs/TargetConnectionAuthentication" + }, + "maximumResponseBytes": { + "format": "uint64", + "maximum": 1048576, + "minimum": 1, + "type": [ + "integer", + "null" + ] + }, + "mtlsIdentity": { + "anyOf": [ + { + "$ref": "#/$defs/TargetMtlsIdentity" + }, + { + "type": "null" + } + ] + }, + "origin": { + "$ref": "#/$defs/Url" + }, + "tlsTrustProfile": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "origin", + "authentication" + ], + "type": "object" + }, + "TargetEnvironmentSecretProvider": { + "additionalProperties": false, + "type": "object" + }, + "TargetExtractBinding": { + "additionalProperties": false, + "properties": { + "path": { + "type": "string" + } + }, + "required": [ + "path" + ], + "type": "object" + }, + "TargetFileSecretProvider": { + "additionalProperties": false, + "properties": { + "root": { + "type": "string" + } + }, + "required": [ + "root" + ], + "type": "object" + }, + "TargetIssuerId": { + "description": "An absolute Evidence issuer URI identifier, including URNs, within 512 Unicode characters and without whitespace or control characters. It names the signer and is never fetched; it is not an OIDC issuer or a network origin.", + "format": "uri", + "maxLength": 512, + "minLength": 1, + "pattern": "^[A-Za-z][A-Za-z0-9+.-]*:[^\\u0000-\\u0020\\u007F-\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]*$", + "type": "string" + }, + "TargetJwksSource": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "type": { + "const": "uri", + "type": "string" + }, + "uri": { + "$ref": "#/$defs/Url" + } + }, + "required": [ + "type", + "uri" + ], + "type": "object" + } + ] + }, + "TargetListener": { + "additionalProperties": false, + "properties": { + "bind": { + "type": "string" + }, + "maximumConcurrentRequests": { + "format": "uint32", + "maximum": 4096, + "minimum": 1, + "type": [ + "integer", + "null" + ] + }, + "maximumRequestBytes": { + "format": "uint64", + "maximum": 1048576, + "minimum": 1024, + "type": [ + "integer", + "null" + ] + }, + "networkExposure": { + "anyOf": [ + { + "$ref": "#/$defs/TargetNetworkExposure" + }, + { + "type": "null" + } + ] + }, + "requestTimeoutMilliseconds": { + "format": "uint64", + "maximum": 30000, + "minimum": 1, + "type": [ + "integer", + "null" + ] + }, + "shutdownGraceMilliseconds": { + "format": "uint64", + "maximum": 120000, + "minimum": 1, + "type": [ + "integer", + "null" + ] + }, + "tlsTermination": { + "anyOf": [ + { + "$ref": "#/$defs/TargetTlsTermination" + }, + { + "type": "null" + } + ] + }, + "trustProxyIdentityHeaders": { + "type": "boolean" + } + }, + "required": [ + "bind", + "trustProxyIdentityHeaders" + ], + "type": "object" + }, + "TargetMtlsIdentity": { + "additionalProperties": false, + "properties": { + "certificateRef": { + "$ref": "#/$defs/SecretReference" + }, + "keyRef": { + "$ref": "#/$defs/SecretReference" + } + }, + "required": [ + "certificateRef", + "keyRef" + ], + "type": "object" + }, + "TargetNetworkExposure": { + "enum": [ + "private-address", + "container-private" + ], + "type": "string" + }, + "TargetOidcAuthentication": { + "additionalProperties": false, + "properties": { + "actorClaim": { + "type": [ + "string", + "null" + ] + }, + "algorithms": { + "items": { + "$ref": "#/$defs/TargetAccessTokenAlgorithm" + }, + "type": "array", + "uniqueItems": true + }, + "allowedClients": { + "anyOf": [ + { + "$ref": "#/$defs/TargetAdmissionGate" + }, + { + "type": "null" + } + ] + }, + "assertionIssuers": { + "additionalProperties": { + "items": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "maxItems": 8, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "description": "External client identifiers mapped to the exact issuer strings they may assert. Omit to apply no assertion-issuer rule. A present map has one to 32 clients, each within 128 bytes, with one to eight distinct nonempty issuers within 512 bytes.", + "maxProperties": 32, + "minProperties": 1, + "propertyNames": { + "$ref": "#/$defs/ExternalId", + "maxLength": 128 + }, + "type": "object" + }, + "audience": { + "type": "string" + }, + "claims": { + "anyOf": [ + { + "$ref": "#/$defs/TargetClaimNames" + }, + { + "type": "null" + } + ] + }, + "evidenceAudienceClaim": { + "type": "string" + }, + "issuer": { + "$ref": "#/$defs/Url" + }, + "jwksSource": { + "$ref": "#/$defs/TargetJwksSource" + }, + "maximumTokenLifetimeSeconds": { + "format": "uint64", + "maximum": 86400, + "minimum": 1, + "type": "integer" + }, + "principalClaim": { + "type": "string" + }, + "requesterTagsClaim": { + "type": "string" + }, + "requiredScopes": { + "$ref": "#/$defs/TargetAdmissionGate" + }, + "revokedKeyIds": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "tlsTrustProfile": { + "type": [ + "string", + "null" + ] + }, + "tokenTypes": { + "items": { + "$ref": "#/$defs/TargetAccessTokenType" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "issuer", + "audience", + "jwksSource", + "tokenTypes", + "algorithms", + "principalClaim", + "requesterTagsClaim", + "evidenceAudienceClaim", + "maximumTokenLifetimeSeconds", + "requiredScopes" + ], + "type": "object" + }, + "TargetOutboundTls": { + "additionalProperties": false, + "properties": { + "systemRoots": { + "type": "boolean" + }, + "trustProfiles": { + "additionalProperties": { + "$ref": "#/$defs/TargetTrustProfile" + }, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + } + }, + "required": [ + "systemRoots", + "trustProfiles" + ], + "type": "object" + }, + "TargetPackage": { + "additionalProperties": false, + "properties": { + "expectedDigest": { + "anyOf": [ + { + "$ref": "#/$defs/Digest" + }, + { + "type": "null" + } + ] + }, + "root": { + "type": "string" + } + }, + "required": [ + "root" + ], + "type": "object" + }, + "TargetPublication": { + "additionalProperties": false, + "properties": { + "description": { + "$ref": "#/$defs/DisplayText" + }, + "endpointUrl": { + "$ref": "#/$defs/Url" + }, + "jurisdictions": { + "items": { + "type": "string" + }, + "type": "array" + }, + "operatorId": { + "type": [ + "string", + "null" + ] + }, + "publisherId": { + "type": [ + "string", + "null" + ] + }, + "serviceId": { + "type": "string" + }, + "title": { + "$ref": "#/$defs/DisplayText" + } + }, + "required": [ + "serviceId", + "title", + "description", + "endpointUrl", + "jurisdictions" + ], + "type": "object" + }, + "TargetRateLimits": { + "additionalProperties": false, + "properties": { + "burstPerPrincipal": { + "format": "uint32", + "maximum": 100000, + "minimum": 1, + "type": [ + "integer", + "null" + ] + }, + "failedSelectorAttemptsPerPrincipalAuthorityPerMinute": { + "format": "uint32", + "maximum": 100000, + "minimum": 1, + "type": "integer" + }, + "requestsPerPrincipalPerMinute": { + "format": "uint32", + "maximum": 1000000, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "requestsPerPrincipalPerMinute", + "failedSelectorAttemptsPerPrincipalAuthorityPerMinute" + ], + "type": "object" + }, + "TargetResponseFormat": { + "enum": [ + "signed-jws", + "unsigned-json", + "sd-jwt-vc", + "sd-jwt-vc-batch" + ], + "type": "string" + }, + "TargetSecretProviders": { + "additionalProperties": false, + "properties": { + "environment": { + "anyOf": [ + { + "$ref": "#/$defs/TargetEnvironmentSecretProvider" + }, + { + "type": "null" + } + ] + }, + "file": { + "anyOf": [ + { + "$ref": "#/$defs/TargetFileSecretProvider" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "TargetService": { + "additionalProperties": false, + "properties": { + "issuer": { + "$ref": "#/$defs/TargetIssuerId" + }, + "providerId": { + "type": "string" + }, + "publicOrigin": { + "$ref": "#/$defs/Url" + }, + "trustDomain": { + "type": "string" + } + }, + "required": [ + "providerId", + "issuer", + "publicOrigin", + "trustDomain" + ], + "type": "object" + }, + "TargetSigner": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "algorithm": { + "$ref": "#/$defs/TargetSigningAlgorithm" + }, + "privateKeyRef": { + "$ref": "#/$defs/SecretReference" + }, + "publicJwkFile": { + "type": "string" + }, + "type": { + "const": "local-jwk", + "type": "string" + } + }, + "required": [ + "type", + "algorithm", + "privateKeyRef", + "publicJwkFile" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "algorithm": { + "$ref": "#/$defs/TargetSigningAlgorithm" + }, + "attemptTimeoutMilliseconds": { + "format": "uint64", + "maximum": 30000, + "minimum": 1, + "type": "integer" + }, + "keyName": { + "type": "string" + }, + "keyVersion": { + "format": "uint32", + "maximum": 4294967295, + "minimum": 1, + "type": "integer" + }, + "mount": { + "type": "string" + }, + "publicJwkFile": { + "type": "string" + }, + "type": { + "const": "transit", + "type": "string" + }, + "unixSocketPath": { + "type": "string" + } + }, + "required": [ + "type", + "algorithm", + "publicJwkFile", + "unixSocketPath", + "mount", + "keyName", + "keyVersion", + "attemptTimeoutMilliseconds" + ], + "type": "object" + } + ] + }, + "TargetSigning": { + "additionalProperties": false, + "description": "What the target may sign, beyond the signer binding. When the target\nomits this block, it signs for at most 300 seconds.", + "properties": { + "maximumAssertionValiditySeconds": { + "description": "The longest validity, in seconds, any definition on this target may\nsign an assertion for.", + "format": "uint64", + "maximum": 31536000, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "maximumAssertionValiditySeconds" + ], + "type": "object" + }, + "TargetSigningAlgorithm": { + "enum": [ + "ES256" + ], + "type": "string" + }, + "TargetSourceAcquisition": { + "additionalProperties": false, + "properties": { + "acquisitionDeadlineMilliseconds": { + "format": "uint64", + "maximum": 18446744073709551615, + "minimum": 1, + "type": "integer" + }, + "maximumDataOperations": { + "format": "uint64", + "maximum": 18446744073709551615, + "minimum": 1, + "type": "integer" + }, + "maximumResponseBytes": { + "format": "uint64", + "maximum": 18446744073709551615, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "maximumDataOperations", + "acquisitionDeadlineMilliseconds", + "maximumResponseBytes" + ], + "type": "object" + }, + "TargetSubjectBinding": { + "additionalProperties": false, + "properties": { + "keyVersion": { + "format": "uint32", + "maximum": 2147483647, + "minimum": 1, + "type": "integer" + }, + "secretRef": { + "$ref": "#/$defs/SecretReference" + } + }, + "required": [ + "secretRef", + "keyVersion" + ], + "type": "object" + }, + "TargetTlsTermination": { + "enum": [ + "operator-controlled-upstream" + ], + "type": "string" + }, + "TargetTrustProfile": { + "additionalProperties": false, + "properties": { + "caBundleFile": { + "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/evidence/target/target.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/evidence/target/v1alpha1", + "type": "string" + }, + "assuranceProfile": { + "anyOf": [ + { + "$ref": "#/$defs/TargetAssuranceProfile" + }, + { + "type": "null" + } + ] + }, + "audit": { + "$ref": "#/$defs/TargetAudit" + }, + "authentication": { + "$ref": "#/$defs/TargetAuthentication" + }, + "authority": { + "type": "string" + }, + "connections": { + "additionalProperties": { + "$ref": "#/$defs/TargetConnection" + }, + "description": "Explicit endpoint bindings and their reviewed connection policies. An\nempty mapping grants no outbound endpoint authority.", + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "extracts": { + "additionalProperties": { + "$ref": "#/$defs/TargetExtractBinding" + }, + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": [ + "object", + "null" + ] + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "kind": { + "const": "EvidenceTarget", + "type": "string" + }, + "listener": { + "$ref": "#/$defs/TargetListener" + }, + "outboundTls": { + "anyOf": [ + { + "$ref": "#/$defs/TargetOutboundTls" + }, + { + "type": "null" + } + ] + }, + "package": { + "$ref": "#/$defs/TargetPackage" + }, + "project": { + "$ref": "#/$defs/LocalId" + }, + "publication": { + "anyOf": [ + { + "$ref": "#/$defs/TargetPublication" + }, + { + "type": "null" + } + ] + }, + "rateLimits": { + "$ref": "#/$defs/TargetRateLimits" + }, + "responseFormats": { + "items": { + "$ref": "#/$defs/TargetResponseFormat" + }, + "type": [ + "array", + "null" + ], + "uniqueItems": true + }, + "secretProviders": { + "$ref": "#/$defs/TargetSecretProviders" + }, + "service": { + "$ref": "#/$defs/TargetService" + }, + "signer": { + "$ref": "#/$defs/TargetSigner" + }, + "signing": { + "anyOf": [ + { + "$ref": "#/$defs/TargetSigning" + }, + { + "type": "null" + } + ] + }, + "sourceAcquisition": { + "anyOf": [ + { + "$ref": "#/$defs/TargetSourceAcquisition" + }, + { + "type": "null" + } + ], + "description": "Optional operational acquisition budget projected only into runtime\nconfiguration. Omission uses the Evidence engine defaults." + }, + "subjectBinding": { + "$ref": "#/$defs/TargetSubjectBinding" + } + }, + "required": [ + "apiVersion", + "kind", + "id", + "project", + "package", + "authority", + "service", + "listener", + "authentication", + "connections", + "secretProviders", + "signer", + "subjectBinding", + "audit", + "rateLimits" + ], + "title": "Evidence target", + "type": "object" +} diff --git a/src/artifacts/sha256/bbbc49cc6aa19d2b6329db459ac7d5c8635583e2a0ca63f2d75556840a804202.json b/src/artifacts/sha256/bbbc49cc6aa19d2b6329db459ac7d5c8635583e2a0ca63f2d75556840a804202.json new file mode 100644 index 000000000..4581027e5 --- /dev/null +++ b/src/artifacts/sha256/bbbc49cc6aa19d2b6329db459ac7d5c8635583e2a0ca63f2d75556840a804202.json @@ -0,0 +1,1041 @@ +{ + "$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 + }, + "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": [ + "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/c1be1e7bc8efa01de429ea5a5cd7c19da49d9766d71839602a0e81cecc447d8b.json b/src/artifacts/sha256/c1be1e7bc8efa01de429ea5a5cd7c19da49d9766d71839602a0e81cecc447d8b.json new file mode 100644 index 000000000..b9c5f48cd --- /dev/null +++ b/src/artifacts/sha256/c1be1e7bc8efa01de429ea5a5cd7c19da49d9766d71839602a0e81cecc447d8b.json @@ -0,0 +1,1040 @@ +{ + "$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, + "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" + }, + "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/c336506f4dcd7e266155e8cd1ff9710766bc240f395e27b0480b2e193e74e2ee.jsonld b/src/artifacts/sha256/c336506f4dcd7e266155e8cd1ff9710766bc240f395e27b0480b2e193e74e2ee.jsonld new file mode 100644 index 000000000..ae799e69d --- /dev/null +++ b/src/artifacts/sha256/c336506f4dcd7e266155e8cd1ff9710766bc240f395e27b0480b2e193e74e2ee.jsonld @@ -0,0 +1,33 @@ +{ + "@context": { + "data": "https://id.registrystack.org/vocab/registry-record/data", + "items": "https://id.registrystack.org/vocab/registry-record/items", + "pageInfo": "https://id.registrystack.org/vocab/registry-record/pageInfo", + "meta": "https://id.registrystack.org/vocab/registry-record/meta", + "domainData": "https://id.registrystack.org/vocab/registry-record/domainData", + "nextCursor": { + "@id": "https://id.registrystack.org/vocab/registry-record/nextCursor", + "@type": "http://www.w3.org/2001/XMLSchema#string" + }, + "registryIdentifier": { + "@id": "https://id.registrystack.org/vocab/registry-record/registryIdentifier", + "@type": "http://www.w3.org/2001/XMLSchema#string" + }, + "datasetIdentifier": { + "@id": "https://id.registrystack.org/vocab/registry-record/datasetIdentifier", + "@type": "http://www.w3.org/2001/XMLSchema#string" + }, + "recordTypeIdentifier": { + "@id": "https://id.registrystack.org/vocab/registry-record/recordTypeIdentifier", + "@type": "http://www.w3.org/2001/XMLSchema#string" + }, + "recordIdentifier": { + "@id": "https://id.registrystack.org/vocab/registry-record/recordIdentifier", + "@type": "http://www.w3.org/2001/XMLSchema#string" + }, + "revisionIdentifier": { + "@id": "https://id.registrystack.org/vocab/registry-record/revisionIdentifier", + "@type": "http://www.w3.org/2001/XMLSchema#string" + } + } +} diff --git a/src/artifacts/sha256/c8685157d8e2982b00657a2a3b2fe729cf54792d76134cf22aa1be1cc7abf4a8.md b/src/artifacts/sha256/c8685157d8e2982b00657a2a3b2fe729cf54792d76134cf22aa1be1cc7abf4a8.md new file mode 100644 index 000000000..6fd920c4e --- /dev/null +++ b/src/artifacts/sha256/c8685157d8e2982b00657a2a3b2fe729cf54792d76134cf22aa1be1cc7abf4a8.md @@ -0,0 +1,132 @@ +# Registry Record v1 profile + +Profile identifier: `https://id.registrystack.org/profiles/registry-record/v1` + +Schema identifier: `https://id.registrystack.org/schemas/registry-record/v1` + +JSON-LD context identifier: +`https://id.registrystack.org/contexts/registry-record/v1` + +Registry Record v1 is a small, open base profile for one released Registry +record or a homogeneous collection of released Registry records. The three +identifiers above name reviewed local artifacts. Implementations must use +locally pinned bytes and digests; they must not fetch a resolver to authorize a +request, compile a package, validate a response, or start a service. + +`/v1` is one compatibility line. Its required members and JSON-LD term +mappings cannot be added, removed, relocated, or redefined. A change requiring +consumers to change parsing or interpretation publishes a new profile version. + +## Single record + +```json +{ + "data": { + "recordIdentifier": "company-123", + "revisionIdentifier": "42", + "domainData": { + "legalName": "Example Ltd" + } + }, + "meta": { + "registryIdentifier": "business-registry", + "datasetIdentifier": "legal-entities", + "recordTypeIdentifier": "company" + } +} +``` + +## Collection + +```json +{ + "items": [ + { + "recordIdentifier": "company-123", + "revisionIdentifier": "42", + "domainData": { + "legalName": "Example Ltd" + } + } + ], + "pageInfo": { + "nextCursor": null + }, + "meta": { + "registryIdentifier": "business-registry", + "datasetIdentifier": "legal-entities", + "recordTypeIdentifier": "company" + } +} +``` + +All five identifiers, `registryIdentifier`, `datasetIdentifier`, +`recordTypeIdentifier`, `recordIdentifier`, and `revisionIdentifier`, are +opaque non-empty strings. `nextCursor` is either `null` or an opaque non-empty +string. `domainData` is an object containing only fields released by the +selected product access context and projection. It must not contain profile +infrastructure members. + +The collection response context appears once because every collection is +homogeneous for Registry, primary dataset, and entity type. A cross-dataset or +cross-entity operation must use another profile or explicit per-item context. + +## JSON-LD + +JSON uses no `@context`. JSON-LD uses `application/ld+json` and releases exactly +the same values as JSON. Its `@context` is either the exact shared context +identifier below or an ordered array whose first item is that exact identifier +and whose remaining one or more items are non-empty absolute HTTPS product +context IRIs. Every array entry is unique. Inline objects, a wrong, missing, or +reordered shared context, empty entries, duplicate entries, and non-HTTPS +product context IRIs do not conform. + +Product contexts may add terms, but must not redefine any term owned by the +shared context. This includes the envelope, metadata, pagination, domain-data, +and identifier terms. Each exact product response schema must pin its complete +scalar context or URI array, rather than accepting arbitrary extra contexts, +and its local conformance tests must read locally pinned context documents and +prove that shared and product term-name sets are disjoint. Neither this profile +nor its open base schema dereferences a context IRI. An accepted IRI grants no +trust, authority, code-loading capability, or permission to perform network +I/O. + +The shared context maps the five opaque identifiers to string-valued +vocabulary predicates, never to JSON-LD node identifiers. Canonical resource +IRIs belong in separate governed terms or links. + +```json +{ + "@context": "https://id.registrystack.org/contexts/registry-record/v1", + "data": { + "recordIdentifier": "company-123", + "revisionIdentifier": "42", + "domainData": { + "legalName": "Example Ltd" + } + }, + "meta": { + "registryIdentifier": "business-registry", + "datasetIdentifier": "legal-entities", + "recordTypeIdentifier": "company" + } +} +``` + +## Extension and representation rules + +This is a base conformance profile. Product schemas may add members while +preserving the required members and meanings above. Consumers that validate +only this profile must tolerate those product extensions. A product profile may +close its actual response shape. The open base schema is a conformance aid, not +a media-type discriminator, context resolver, trust source, or substitute for +that exact product schema. A JSON product schema must prohibit `@context`; a +JSON-LD product schema must require and pin the exact scalar or full URI array +that the product emits. + +Successful single reads, single-result lookups, creates, patches, and +tombstones use the single shape. Homogeneous list and revision-history +operations use the collection shape. Batch mutations, GeoJSON, SDMX, +catalogue metadata, OpenAPI, JSON Schema, and other non-record representations +use separately named contracts. Successful responses advertise this profile +with an RFC 6906 `Link` header using `rel="profile"`. diff --git a/src/artifacts/sha256/ca14df9aafa49fd2018a12869e54f4058e29de07f01c0cbc0dd13f069649bcc9.json b/src/artifacts/sha256/ca14df9aafa49fd2018a12869e54f4058e29de07f01c0cbc0dd13f069649bcc9.json new file mode 100644 index 000000000..b61481605 --- /dev/null +++ b/src/artifacts/sha256/ca14df9aafa49fd2018a12869e54f4058e29de07f01c0cbc0dd13f069649bcc9.json @@ -0,0 +1,429 @@ +{ + "$defs": { + "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" + }, + "ExpectedFacade": { + "description": "What the facade must answer one entry with: a recorded response, or a\nproblem named by class and code (G-FIXTURES). A problem expectation\ncarries no body: the profile's problem envelope owns that shape, and\nthe declared problem owns the status.", + "oneOf": [ + { + "additionalProperties": false, + "description": "The facade answers with this recorded response.", + "properties": { + "body": { + "$ref": "#/$defs/RecordedBody", + "description": "The response body the facade answers with." + }, + "headers": { + "additionalProperties": { + "type": "string" + }, + "description": "The response headers the facade answers with.", + "type": "object" + }, + "status": { + "description": "The status the facade answers with.", + "format": "uint32", + "maximum": 599, + "minimum": 100, + "type": "integer" + }, + "type": { + "const": "response", + "type": "string" + } + }, + "required": [ + "status", + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "The facade answers with the named problem.", + "properties": { + "class": { + "$ref": "#/$defs/ErrorClass", + "description": "The error class the facade answers with; a declared class or a\nclass a declared root covers resolves it." + }, + "code": { + "$ref": "#/$defs/ExternalId", + "description": "The declared problem code the facade fills its envelope with." + }, + "type": { + "const": "problem", + "type": "string" + } + }, + "required": [ + "class", + "code", + "type" + ], + "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" + }, + "FixtureEntry": { + "additionalProperties": false, + "description": "One fixture entry: the facade request, the upstream exchanges it\ndrives in the order the route makes them, and what the facade must\nanswer (G-FIXTURES, CONCEPT 13.3). At least one exchange is an\nauthoring invariant the checks refuse a suite without.", + "properties": { + "expected": { + "$ref": "#/$defs/ExpectedFacade", + "description": "What the facade must answer." + }, + "facadeRequest": { + "$ref": "#/$defs/RecordedFacadeRequest", + "description": "The facade request this entry replays." + }, + "upstream": { + "description": "The upstream exchanges, in the order the route makes them.", + "items": { + "$ref": "#/$defs/RecordedExchange" + }, + "type": "array" + } + }, + "required": [ + "facadeRequest", + "upstream", + "expected" + ], + "type": "object" + }, + "FixtureProvenance": { + "description": "Where a fixture's recording came from\n(`products/adapter/CONCEPT.md` section 13.3): captured from a live\nsystem, or documented as an authored reconstruction.", + "oneOf": [ + { + "additionalProperties": false, + "description": "Recorded from the named live system.", + "properties": { + "reference": { + "description": "Where the recording came from, for review.", + "type": "string" + }, + "type": { + "const": "captured", + "type": "string" + } + }, + "required": [ + "reference", + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Authored from the source system's documented behavior.", + "properties": { + "reference": { + "description": "The documentation the reconstruction follows, for review.", + "type": "string" + }, + "type": { + "const": "documented", + "type": "string" + } + }, + "required": [ + "reference", + "type" + ], + "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" + }, + "Intercept": { + "description": "One declared intercept. Fixture replay intercepts `http` and `graphql`\nsends and the token endpoint of an OAuth2 kind; nothing else is\ninterceptable.", + "oneOf": [ + { + "additionalProperties": false, + "description": "Intercept every send to the named endpoint.", + "properties": { + "endpoint": { + "$ref": "#/$defs/ExternalId", + "description": "The pack endpoint id whose sends replay from the fixtures." + }, + "type": { + "const": "endpoint", + "type": "string" + } + }, + "required": [ + "endpoint", + "type" + ], + "type": "object" + }, + { + "additionalProperties": false, + "description": "Intercept the token requests of the named endpoint's OAuth2 kind\n(`products/adapter/CONCEPT.md` section 10.2). Replay runs without\na credential: the recorded token request carries no credential\nheader or body, and the recorded reply's token is a synthetic\nvalue a captured recording must replace before it is committed.", + "properties": { + "endpoint": { + "$ref": "#/$defs/ExternalId", + "description": "The pack endpoint whose token requests replay from the\nfixtures." + }, + "type": { + "const": "token-endpoint", + "type": "string" + } + }, + "required": [ + "endpoint", + "type" + ], + "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" + }, + "RecordedBody": true, + "RecordedExchange": { + "additionalProperties": false, + "description": "One recorded upstream exchange: the send the route made and the reply\nthe source gave it.", + "properties": { + "request": { + "$ref": "#/$defs/RecordedRequest", + "description": "The send the route made." + }, + "response": { + "$ref": "#/$defs/RecordedResponse", + "description": "The reply the source gave it." + } + }, + "required": [ + "request", + "response" + ], + "type": "object" + }, + "RecordedFacadeRequest": { + "additionalProperties": false, + "description": "The facade request one entry replays: the operation it exercises, plus\nthe request the deployment receives. The operation is the facade-side\nprimary key of the entry; the profile owns its method.", + "properties": { + "body": { + "$ref": "#/$defs/RecordedBody", + "description": "The request body: absent, JSON `null`, or a value (G-FIXTURES)." + }, + "headers": { + "additionalProperties": { + "type": "string" + }, + "description": "The request headers.", + "type": "object" + }, + "operation": { + "$ref": "#/$defs/ExternalId", + "description": "The profile operation this entry exercises." + }, + "path": { + "description": "The request path, with any template segments already filled.", + "type": "string" + }, + "query": { + "description": "The encoded query string.", + "type": "string" + } + }, + "required": [ + "operation", + "path" + ], + "type": "object" + }, + "RecordedRequest": { + "additionalProperties": false, + "description": "One recorded upstream request the fixture replay matches against.", + "properties": { + "body": { + "$ref": "#/$defs/RecordedBody", + "description": "The request body: absent, JSON `null`, or a value (G-FIXTURES)." + }, + "endpoint": { + "$ref": "#/$defs/ExternalId", + "description": "The endpoint the request goes to." + }, + "headers": { + "additionalProperties": { + "type": "string" + }, + "description": "The request headers.", + "type": "object" + }, + "method": { + "$ref": "#/$defs/HttpMethod", + "description": "The request method." + }, + "path": { + "description": "The request path, with any template segments already filled.", + "type": "string" + }, + "query": { + "description": "The encoded query string.", + "type": "string" + }, + "tokenRequest": { + "description": "Whether this request is the endpoint's token request (CONCEPT\n10.2); only a token intercept answers it.", + "type": "boolean" + } + }, + "required": [ + "endpoint", + "method", + "path" + ], + "type": "object" + }, + "RecordedResponse": { + "additionalProperties": false, + "description": "One recorded upstream reply.", + "properties": { + "body": { + "$ref": "#/$defs/RecordedBody", + "description": "The reply body: absent, JSON `null`, or a value (G-FIXTURES)." + }, + "headers": { + "additionalProperties": { + "type": "string" + }, + "description": "The response headers.", + "type": "object" + }, + "rawBodyBase64": { + "description": "Exact response bytes for a selected host protocol, encoded as standard\npadded base64. This is mutually exclusive with `body`; ordinary replay\nnever decodes or exposes it.", + "type": "string" + }, + "status": { + "description": "The status the upstream answered with.", + "format": "uint32", + "maximum": 599, + "minimum": 100, + "type": "integer" + } + }, + "required": [ + "status" + ], + "type": "object" + } + }, + "$id": "https://id.registrystack.org/schemas/adapter/fixture/fixture.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "description": "The fixture suite artifact (`AdapterFixture`), authored per pack.", + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/adapter/fixture/v1alpha1", + "type": "string" + }, + "entries": { + "default": [], + "description": "The recorded exchanges and expectations.", + "items": { + "$ref": "#/$defs/FixtureEntry" + }, + "type": "array" + }, + "id": { + "$ref": "#/$defs/LocalId", + "description": "The suite identifier." + }, + "intercepts": { + "description": "The sends this suite intercepts, by endpoint id and token endpoint.\nA route never declares its own test intercepts.", + "items": { + "$ref": "#/$defs/Intercept" + }, + "type": "array" + }, + "kind": { + "const": "AdapterFixture", + "type": "string" + }, + "pack": { + "$ref": "#/$defs/ExternalId", + "description": "The pack this suite replays." + }, + "provenance": { + "$ref": "#/$defs/FixtureProvenance", + "description": "Where the recording came from." + }, + "upstreamVersion": { + "description": "The upstream version the recording reflects.", + "type": "string" + } + }, + "required": [ + "apiVersion", + "id", + "intercepts", + "kind", + "pack", + "provenance", + "upstreamVersion" + ], + "title": "Registry Adapter fixture suite", + "type": "object" +} diff --git a/src/artifacts/sha256/e9bae5707ef92498b162083958fc0af4c1c043e74eec71252259e70bab88b73d.json b/src/artifacts/sha256/e9bae5707ef92498b162083958fc0af4c1c043e74eec71252259e70bab88b73d.json new file mode 100644 index 000000000..2fb3ce9dc --- /dev/null +++ b/src/artifacts/sha256/e9bae5707ef92498b162083958fc0af4c1c043e74eec71252259e70bab88b73d.json @@ -0,0 +1,923 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://id.registrystack.org/schemas/breg/access-explanation/access-explanation.v1alpha8.schema.json", + "title": "AccessExplanation", + "description": "Wire shape of `explanation` for `bregctl explain access` without `--scenario`. Evaluation-rule strings are pinned. Record grants retain compiled authority with inspection-only explicit row boundaries and allowCount. Routes, actions and rowReach follow the compiled model, except pinned routes.entries[].recordType. timers pins autonomous policy writers and the exact product-owned future-effect ceiling without inventing a public profile. claimContract remains opaque except principalClaims and its success/error relationship with claimContractError. Consent and statisticalDatasets are pinned in full.", + "type": "object", + "additionalProperties": false, + "required": [ + "apiVersion", + "kind", + "scopeMatching", + "purposeMatching", + "rowMatching", + "profileSelection", + "relationshipMatching", + "missingClaims", + "evaluation", + "routes", + "recordTypes", + "actions", + "timers", + "rowReach", + "claimContract", + "claimContractError", + "consent", + "statisticalDatasets", + "accessProfiles" + ], + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/breg/access-explanation/v1alpha8" + }, + "kind": { + "const": "BRegAccessExplanation" + }, + "scopeMatching": { + "type": "string" + }, + "purposeMatching": { + "type": "string" + }, + "rowMatching": { + "type": "string" + }, + "profileSelection": { + "type": "string" + }, + "relationshipMatching": { + "type": "string" + }, + "missingClaims": { + "type": "string" + }, + "evaluation": { + "type": "string" + }, + "routes": { + "type": "object", + "additionalProperties": false, + "required": [ + "entries" + ], + "properties": { + "entries": { + "type": "array", + "items": { + "type": "object", + "description": "Passthrough of the compiled access-route inventory; only `recordType` is pinned. Other fields follow CompiledAccessEntry and are outside this contract version.", + "x-registry-passthrough": "bregctl writes each compiled access-route entry as the engine holds it; only recordType is pinned, and its other members follow CompiledAccessEntry and are outside this contract version.", + "additionalProperties": true, + "required": [ + "recordType" + ], + "properties": { + "recordType": { + "type": "string" + } + } + } + } + } + }, + "recordTypes": { + "type": "array", + "description": "Per-Record type author inspection. Record grants explicitly report allowCount and render an empty compiled claim-bound row list as unrestricted. Other profile members follow the compiled AccessProfileSource.", + "items": { + "type": "object", + "x-registry-passthrough": "EntityAccessExplanation retains compiled authority with inspection-only explicit defaults on its profiles.", + "required": [ + "profiles" + ], + "properties": { + "profiles": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "rowBoundaries", + "allowCount" + ], + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "rowBoundaries": { + "description": "Unrestricted means no claim-bound row restriction. Membership and consent boundaries, when present, still apply.", + "oneOf": [ + { + "const": "unrestricted" + }, + { + "type": "array", + "minItems": 1, + "items": { + "type": "object", + "additionalProperties": false, + "required": [ + "field", + "claim", + "operator" + ], + "properties": { + "field": { + "type": "string" + }, + "claim": { + "type": "string" + }, + "operator": { + "enum": [ + "equals", + "in" + ] + } + } + } + } + ] + }, + "allowCount": { + "type": "boolean" + }, + "readPaths": { + "type": "array", + "description": "Relationship grants declared on this source Record type. Each grant names the disclosed target, joining Record type, and route without requiring a model-report join.", + "items": { + "type": "object", + "required": [ + "path", + "targetRecordType", + "throughRecordType", + "route" + ], + "properties": { + "path": { + "$ref": "#/$defs/LocalId" + }, + "targetRecordType": { + "$ref": "#/$defs/LocalId" + }, + "throughRecordType": { + "$ref": "#/$defs/LocalId" + }, + "route": { + "$ref": "#/$defs/LocalId" + } + }, + "x-registry-passthrough": "The inspector retains the compiled read-path permission and adds targetRecordType, throughRecordType, and route for inspection." + } + } + }, + "x-registry-passthrough": "The inspector retains the compiled AccessProfileSource members unchanged except rowBoundaries and allowCount. Only those explicit defaults and the profile id are pinned here; other members follow the compiled contract." + } + } + } + } + }, + "actions": { + "type": "object", + "description": "Action inventory with canonical author inspection definitions, routes and access entries.", + "x-registry-passthrough": "Actions use the same author inspector as ActionsExplanation, with exact fixed plans or function ceilings; routes and access follow the compiler." + }, + "timers": { + "type": "array", + "description": "Root-enabled autonomous Record timers, the existing surfaces that can shape their policy, and their exact product-owned future-effect ceiling. Empty when the compiled project has no enabled timer.", + "items": { + "type": "object", + "additionalProperties": false, + "required": [ + "recordType", + "timer", + "sourceModule", + "invoke", + "controlFields", + "predicateFields", + "effectInputFields", + "controlWriters", + "predicateWriters", + "effectInputWriters", + "futureEffect" + ], + "properties": { + "recordType": { + "$ref": "#/$defs/LocalId" + }, + "timer": { + "$ref": "#/$defs/LocalId" + }, + "sourceModule": { + "oneOf": [ + { + "$ref": "#/$defs/LocalId" + }, + { + "type": "null" + } + ] + }, + "invoke": { + "$ref": "#/$defs/LocalId" + }, + "controlFields": { + "$ref": "#/$defs/TimerFields" + }, + "predicateFields": { + "$ref": "#/$defs/TimerFields" + }, + "effectInputFields": { + "$ref": "#/$defs/TimerFields" + }, + "controlWriters": { + "type": "array", + "items": { + "$ref": "#/$defs/TimerWriter" + } + }, + "predicateWriters": { + "type": "array", + "items": { + "$ref": "#/$defs/TimerWriter" + } + }, + "effectInputWriters": { + "type": "array", + "items": { + "$ref": "#/$defs/TimerWriter" + } + }, + "futureEffect": { + "type": "object", + "additionalProperties": false, + "required": [ + "authority", + "recordGrantRelationship", + "systemGrant" + ], + "properties": { + "authority": { + "const": "product-owned" + }, + "recordGrantRelationship": { + "const": "none" + }, + "systemGrant": { + "$ref": "#/$defs/TimerSystemGrant" + } + } + } + } + } + }, + "rowReach": { + "type": "array", + "description": "The compiled model's row-reach explanation. Read-path entries identify the disclosed target Record type while retaining the root profile's row boundaries and an exact source path to the grant. Action target entries identify their runtime-enforced authority as additional to ordinary Record grants, state whether any direct Record grant exists for the same profile and Record type, and retain their compiled uses. Grant existence does not compare operations or row boundaries and does not imply that Action target authority grants ordinary CRUD.", + "items": { + "type": "object", + "required": [ + "recordType", + "profile", + "sourcePath", + "surface", + "rowBoundaries" + ], + "properties": { + "recordType": { + "$ref": "#/$defs/LocalId" + }, + "profile": { + "$ref": "#/$defs/LocalId" + }, + "sourcePath": { + "type": "string", + "minLength": 1 + }, + "surface": { + "enum": [ + "record", + "read_path", + "action_target", + "proposal_target" + ], + "x-registry-member-names": true + }, + "rowBoundaries": { + "type": "array", + "x-registry-passthrough": "The inspector retains the compiler's boundary list exactly; an empty list is the compiled representation of unrestricted row reach." + } + }, + "x-registry-passthrough": "bregctl writes each row-reach explanation as the engine holds it; the target Record type, profile, source path, surface, and row boundaries are pinned. Other members follow RowReachExplanation." + } + }, + "claimContract": { + "type": [ + "object", + "null" + ], + "description": "Passthrough of the compiled authority inventory, or null when that inventory failed. `principalClaims` is pinned for exact contract inspection; every other member follows AuthorityInventory and remains outside this contract version. Casework provider pairing verifies a sealed purpose-bound context export and grants no BReg authority.", + "x-registry-passthrough": "bregctl writes the compiled authority inventory as the engine holds it; only principalClaims is pinned, and its other members follow AuthorityInventory outside this contract version.", + "required": [ + "principalClaims" + ], + "properties": { + "principalClaims": { + "type": "array", + "uniqueItems": true, + "items": { + "type": "string", + "minLength": 1 + } + } + } + }, + "claimContractError": { + "type": [ + "string", + "null" + ], + "description": "The compiled authority inventory's failure, or null when the inventory was built. AuthorityInventoryError is a value-free enum serialized as one of these kebab-case strings; the vocabulary is pinned and grows only with an apiVersion bump.", + "enum": [ + "principal-claim-missing", + "target-entity-not-compiled", + "boundary-field-not-compiled", + "lookup-selector-not-compiled", + "lookup-claim-mapping-incomplete", + "lookup-field-not-compiled", + "conflicting-claim-expectation", + null + ] + }, + "consent": { + "description": "Consent-gated permissions, the recipient set of every client, and the consent records they check; null when the project declares no recipients, consent record, or requireConsent permission. Built only for this payload and pinned in full.", + "type": [ + "object", + "null" + ], + "additionalProperties": false, + "required": [ + "condition", + "unmappedClients", + "trustModel", + "ungating", + "organizations", + "groups", + "clients", + "records", + "permissions", + "issuers" + ], + "properties": { + "condition": { + "type": "string" + }, + "unmappedClients": { + "type": "string" + }, + "trustModel": { + "type": "string" + }, + "ungating": { + "type": "string" + }, + "organizations": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "required": [ + "id", + "name", + "clients", + "groups", + "retired" + ], + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "name": { + "type": "string" + }, + "clients": { + "type": "array", + "items": { + "type": "string" + } + }, + "groups": { + "type": "array", + "items": { + "type": "string" + } + }, + "retired": { + "type": "boolean" + } + } + } + }, + "groups": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "required": [ + "id", + "name", + "members", + "clients" + ], + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "name": { + "type": "string" + }, + "members": { + "type": "array", + "items": { + "type": "string" + } + }, + "clients": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "clients": { + "type": "array", + "items": { + "$ref": "#/$defs/consentClient" + } + }, + "records": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "required": [ + "recordType", + "maximumDurationDays", + "gives", + "revokes", + "refusals", + "scopes", + "indexes" + ], + "properties": { + "recordType": { + "type": "string" + }, + "maximumDurationDays": { + "type": "integer", + "minimum": 1, + "maximum": 3652 + }, + "gives": { + "type": "array", + "items": { + "type": "string" + } + }, + "revokes": { + "type": "array", + "items": { + "type": "string" + } + }, + "refusals": { + "type": "array", + "items": { + "type": "string" + } + }, + "scopes": { + "type": "array", + "items": { + "type": "string" + } + }, + "indexes": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "permissions": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "required": [ + "recordType", + "profile", + "sourcePath", + "record", + "on", + "condition", + "purposes", + "scope", + "maximumDurationDays", + "probeFunction", + "indexes", + "readableFields", + "clients", + "issuingActions" + ], + "properties": { + "recordType": { + "type": "string" + }, + "profile": { + "type": "string" + }, + "sourcePath": { + "type": "string" + }, + "record": { + "type": "string" + }, + "on": { + "type": "string" + }, + "condition": { + "type": "string" + }, + "purposes": { + "type": "array", + "items": { + "type": "string" + } + }, + "scope": { + "type": "string" + }, + "maximumDurationDays": { + "type": "integer", + "minimum": 1, + "maximum": 3652 + }, + "probeFunction": { + "type": "string" + }, + "indexes": { + "type": "array", + "items": { + "type": "string" + } + }, + "readableFields": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "required": [ + "field", + "classification" + ], + "properties": { + "field": { + "type": "string" + }, + "classification": { + "enum": [ + "public", + "internal", + "restricted", + null + ] + } + } + } + }, + "clients": { + "type": "array", + "items": { + "$ref": "#/$defs/consentClient" + } + }, + "issuingActions": { + "type": "array", + "items": { + "$ref": "#/$defs/consentIssuer" + } + } + } + } + }, + "issuers": { + "type": "array", + "items": { + "$ref": "#/$defs/consentIssuer" + } + } + } + }, + "statisticalDatasets": { + "description": "Who may do what with each statistical dataset, ordered by dataset; empty when the project declares none. Each list names access profiles in order. `readReleases` is every profile that reads the dataset's releases, and is empty when no profile publishes it.", + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "required": [ + "dataset", + "readLive", + "publish", + "readReleases", + "accessProfiles", + "display" + ], + "properties": { + "dataset": { + "type": "string" + }, + "readLive": { + "type": "array", + "items": { + "type": "string" + } + }, + "publish": { + "type": "array", + "maxItems": 1, + "items": { + "type": "string" + } + }, + "readReleases": { + "type": "array", + "items": { + "type": "string" + } + }, + "accessProfiles": { + "type": "array", + "description": "Full authentication requirements for dataset grants, including profiles with no Record type grant.", + "items": { + "type": "object", + "required": [ + "id", + "default", + "principalClaim", + "requiredScopes", + "requiredPurposes" + ], + "x-registry-passthrough": "Dataset profile authority retained by the compiler; shape follows AccessProfileSource." + } + }, + "display": { + "$ref": "#/$defs/Presentation" + } + } + } + }, + "accessProfiles": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "required": [ + "id", + "display" + ], + "properties": { + "id": { + "$ref": "#/$defs/LocalId" + }, + "display": { + "$ref": "#/$defs/Presentation" + } + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "claimContract": { + "type": "null" + } + }, + "required": [ + "claimContract" + ] + }, + "then": { + "properties": { + "claimContractError": { + "type": "string" + } + } + }, + "else": { + "properties": { + "claimContractError": { + "type": "null" + } + } + } + } + ], + "$defs": { + "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" + }, + "TimerFields": { + "type": "array", + "uniqueItems": true, + "items": { + "$ref": "#/$defs/LocalId" + } + }, + "TimerWriter": { + "type": "object", + "additionalProperties": false, + "required": [ + "surface", + "id", + "sourcePath", + "operations", + "fields" + ], + "properties": { + "surface": { + "enum": [ + "record-permission", + "action" + ] + }, + "id": { + "$ref": "#/$defs/LocalId" + }, + "sourcePath": { + "type": "string", + "minLength": 1 + }, + "operations": { + "type": "array", + "minItems": 1, + "uniqueItems": true, + "items": { + "enum": [ + "create", + "patch", + "tombstone", + "batch", + "import" + ] + } + }, + "fields": { + "$ref": "#/$defs/TimerFields" + }, + "accessProfiles": { + "type": "array", + "uniqueItems": true, + "items": { + "$ref": "#/$defs/LocalId" + } + } + } + }, + "TimerSystemGrant": { + "type": "object", + "additionalProperties": false, + "required": [ + "revision", + "actionId", + "actionRevision", + "targets" + ], + "properties": { + "revision": { + "type": "string", + "pattern": "^sha256:[0-9a-f]{64}$" + }, + "actionId": { + "$ref": "#/$defs/LocalId" + }, + "actionRevision": { + "type": "string", + "pattern": "^sha256:[0-9a-f]{64}$" + }, + "targets": { + "type": "array", + "minItems": 1, + "items": { + "type": "object", + "additionalProperties": false, + "required": [ + "recordType", + "operation", + "fields", + "readFields" + ], + "properties": { + "recordType": { + "$ref": "#/$defs/LocalId" + }, + "operation": { + "enum": [ + "create", + "get", + "patch", + "tombstone" + ] + }, + "fields": { + "$ref": "#/$defs/TimerFields" + }, + "readFields": { + "$ref": "#/$defs/TimerFields" + } + } + } + } + } + }, + "consentIssuer": { + "type": "object", + "additionalProperties": false, + "required": [ + "action", + "issuer" + ], + "properties": { + "action": { + "type": "string" + }, + "issuer": { + "enum": [ + "self", + "steward" + ] + } + } + }, + "consentClient": { + "type": "object", + "additionalProperties": false, + "required": [ + "client", + "organization", + "recipients" + ], + "properties": { + "client": { + "type": "string" + }, + "organization": { + "type": [ + "string", + "null" + ] + }, + "recipients": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "Display": { + "type": "object", + "additionalProperties": false, + "properties": { + "label": { + "type": "string" + }, + "description": { + "type": "string" + }, + "titleField": { + "type": "string" + } + } + }, + "Presentation": { + "type": "object", + "additionalProperties": false, + "properties": { + "label": { + "type": "string" + }, + "description": { + "type": "string" + } + } + } + } +} diff --git a/src/artifacts/sha256/e9ddb96d7b521da29b033353ffa854e2e003b1c952f9aad847b30ed1e3b8cf2a.json b/src/artifacts/sha256/e9ddb96d7b521da29b033353ffa854e2e003b1c952f9aad847b30ed1e3b8cf2a.json new file mode 100644 index 000000000..9971fa3cd --- /dev/null +++ b/src/artifacts/sha256/e9ddb96d7b521da29b033353ffa854e2e003b1c952f9aad847b30ed1e3b8cf2a.json @@ -0,0 +1,201 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://id.registrystack.org/schemas/registry-record/v1", + "title": "Registry Record v1 base response", + "description": "Open base conformance aid for one Registry record or a homogeneous Registry record collection. It validates no media type, resolves no context IRI, and grants no trust; exact product schemas must close the emitted shape and context.", + "properties": { + "@context": { + "description": "For JSON-LD only: the shared context URI, or an ordered composition beginning with it and followed by one or more unique absolute HTTPS product context IRIs. JSON responses must omit this member, and exact product schemas must pin their full context array.", + "oneOf": [ + { + "const": "https://id.registrystack.org/contexts/registry-record/v1" + }, + { + "type": "array", + "minItems": 2, + "uniqueItems": true, + "prefixItems": [ + { + "const": "https://id.registrystack.org/contexts/registry-record/v1" + } + ], + "items": { + "type": "string", + "minLength": 1, + "format": "iri", + "pattern": "^[hH][tT][tT][pP][sS]://[^/?#\\s]+(?:[/?#][^\\s]*)?$" + } + } + ] + } + }, + "oneOf": [ + { "$ref": "#/$defs/singleResponse" }, + { "$ref": "#/$defs/collectionResponse" } + ], + "$defs": { + "opaqueIdentifier": { + "type": "string", + "minLength": 1 + }, + "extensionValue": { + "description": "An open product extension value that cannot introduce a nested JSON-LD context.", + "oneOf": [ + { + "type": ["null", "boolean", "number", "string"] + }, + { + "type": "array", + "items": { "$ref": "#/$defs/extensionValue" } + }, + { + "type": "object", + "propertyNames": { + "not": { "const": "@context" } + }, + "additionalProperties": { "$ref": "#/$defs/extensionValue" } + } + ] + }, + "domainData": { + "type": "object", + "propertyNames": { + "not": { "const": "@context" } + }, + "not": { + "anyOf": [ + { "required": ["data"] }, + { "required": ["items"] }, + { "required": ["pageInfo"] }, + { "required": ["meta"] }, + { "required": ["registryIdentifier"] }, + { "required": ["datasetIdentifier"] }, + { "required": ["recordTypeIdentifier"] }, + { "required": ["recordIdentifier"] }, + { "required": ["revisionIdentifier"] }, + { "required": ["nextCursor"] } + ] + }, + "additionalProperties": { "$ref": "#/$defs/extensionValue" } + }, + "record": { + "type": "object", + "required": ["recordIdentifier", "revisionIdentifier", "domainData"], + "not": { + "anyOf": [ + { "required": ["data"] }, + { "required": ["items"] }, + { "required": ["pageInfo"] }, + { "required": ["meta"] }, + { "required": ["registryIdentifier"] }, + { "required": ["datasetIdentifier"] }, + { "required": ["recordTypeIdentifier"] }, + { "required": ["nextCursor"] }, + { "required": ["@context"] } + ] + }, + "properties": { + "recordIdentifier": { "$ref": "#/$defs/opaqueIdentifier" }, + "revisionIdentifier": { "$ref": "#/$defs/opaqueIdentifier" }, + "domainData": { "$ref": "#/$defs/domainData" } + }, + "additionalProperties": { "$ref": "#/$defs/extensionValue" } + }, + "responseMeta": { + "type": "object", + "required": ["registryIdentifier", "datasetIdentifier", "recordTypeIdentifier"], + "not": { + "anyOf": [ + { "required": ["data"] }, + { "required": ["items"] }, + { "required": ["pageInfo"] }, + { "required": ["recordIdentifier"] }, + { "required": ["revisionIdentifier"] }, + { "required": ["domainData"] }, + { "required": ["nextCursor"] }, + { "required": ["@context"] } + ] + }, + "properties": { + "registryIdentifier": { "$ref": "#/$defs/opaqueIdentifier" }, + "datasetIdentifier": { "$ref": "#/$defs/opaqueIdentifier" }, + "recordTypeIdentifier": { "$ref": "#/$defs/opaqueIdentifier" } + }, + "additionalProperties": { "$ref": "#/$defs/extensionValue" } + }, + "pageInfo": { + "type": "object", + "required": ["nextCursor"], + "not": { + "anyOf": [ + { "required": ["data"] }, + { "required": ["items"] }, + { "required": ["meta"] }, + { "required": ["registryIdentifier"] }, + { "required": ["datasetIdentifier"] }, + { "required": ["recordTypeIdentifier"] }, + { "required": ["recordIdentifier"] }, + { "required": ["revisionIdentifier"] }, + { "required": ["domainData"] }, + { "required": ["@context"] } + ] + }, + "properties": { + "nextCursor": { + "anyOf": [ + { "$ref": "#/$defs/opaqueIdentifier" }, + { "type": "null" } + ] + } + }, + "additionalProperties": { "$ref": "#/$defs/extensionValue" } + }, + "singleResponse": { + "type": "object", + "required": ["data", "meta"], + "not": { + "anyOf": [ + { "required": ["items"] }, + { "required": ["pageInfo"] }, + { "required": ["registryIdentifier"] }, + { "required": ["datasetIdentifier"] }, + { "required": ["recordTypeIdentifier"] }, + { "required": ["recordIdentifier"] }, + { "required": ["revisionIdentifier"] }, + { "required": ["domainData"] }, + { "required": ["nextCursor"] } + ] + }, + "properties": { + "data": { "$ref": "#/$defs/record" }, + "meta": { "$ref": "#/$defs/responseMeta" } + }, + "additionalProperties": { "$ref": "#/$defs/extensionValue" } + }, + "collectionResponse": { + "type": "object", + "required": ["items", "pageInfo", "meta"], + "not": { + "anyOf": [ + { "required": ["data"] }, + { "required": ["registryIdentifier"] }, + { "required": ["datasetIdentifier"] }, + { "required": ["recordTypeIdentifier"] }, + { "required": ["recordIdentifier"] }, + { "required": ["revisionIdentifier"] }, + { "required": ["domainData"] }, + { "required": ["nextCursor"] } + ] + }, + "properties": { + "items": { + "type": "array", + "items": { "$ref": "#/$defs/record" } + }, + "pageInfo": { "$ref": "#/$defs/pageInfo" }, + "meta": { "$ref": "#/$defs/responseMeta" } + }, + "additionalProperties": { "$ref": "#/$defs/extensionValue" } + } + } +} diff --git a/src/artifacts/sha256/ef82e91c0f0c3366bd62967be8453e90920341c246a6d05f56e4b4b4b8eb85b0.json b/src/artifacts/sha256/ef82e91c0f0c3366bd62967be8453e90920341c246a6d05f56e4b4b4b8eb85b0.json new file mode 100644 index 000000000..7335d8303 --- /dev/null +++ b/src/artifacts/sha256/ef82e91c0f0c3366bd62967be8453e90920341c246a6d05f56e4b4b4b8eb85b0.json @@ -0,0 +1,1047 @@ +{ + "$defs": { + "AuditConfig": { + "additionalProperties": false, + "description": "The audit journal: where it is written and the key its hashes use.", + "else": { + "required": [ + "path" + ] + }, + "if": { + "properties": { + "destination": { + "const": "stdout" + } + }, + "required": [ + "destination" + ] + }, + "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 active audit file. Required for, and only allowed with, `file`.", + "pattern": "^/+(?:(?:[^/.][^/]*|\\.(?:[^/.][^/]*|\\.[^/]+)?)/+)*(?:[^/.][^/]*|\\.(?:[^/.][^/]*|\\.[^/]+))$", + "type": "string" + }, + "retentionDays": { + "description": "Delete rotated files older than this many days. Only allowed with\n`file`; omitted, rotated files are kept 90 days.", + "format": "uint32", + "maximum": 36500, + "minimum": 1, + "type": "integer" + }, + "rotateBytes": { + "description": "Rotate the active file once it reaches this many bytes. Only allowed\nwith `file`; 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" + }, + "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" + }, + "BregBinding": { + "additionalProperties": false, + "description": "Environment-specific transport and reader identity. Human display always replaces it.", + "properties": { + "baseUrl": { + "$ref": "#/$defs/Url" + }, + "clientAssertionAudience": { + "type": "string" + }, + "clientAssertionKeyRef": { + "$ref": "#/$defs/SecretReference" + }, + "clientIdRef": { + "$ref": "#/$defs/SecretReference" + }, + "delegatedDisplayExchange": { + "$ref": "#/$defs/DelegatedDisplayExchangeBinding" + }, + "resource": { + "type": "string" + }, + "scopes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "statusProfile": { + "type": "string" + }, + "taskGrantProfile": { + "type": "string" + }, + "tokenEndpoint": { + "$ref": "#/$defs/Url" + } + }, + "required": [ + "baseUrl", + "statusProfile", + "tokenEndpoint", + "clientIdRef", + "clientAssertionKeyRef" + ], + "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" + }, + "DelegatedDisplayExchangeBinding": { + "additionalProperties": false, + "description": "Dedicated per-call delegation for staff-subject source disclosure. This is\nseparate from the provider's status and task-context service credential.", + "properties": { + "clientAssertionAudience": { + "type": "string" + }, + "clientAssertionKeyRef": { + "$ref": "#/$defs/SecretReference" + }, + "clientIdRef": { + "$ref": "#/$defs/SecretReference" + }, + "generation": { + "type": "string" + }, + "resource": { + "type": "string" + }, + "scopes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "tokenEndpoint": { + "$ref": "#/$defs/Url" + } + }, + "required": [ + "tokenEndpoint", + "clientIdRef", + "clientAssertionKeyRef", + "resource", + "scopes", + "generation" + ], + "type": "object" + }, + "DelegatedStaffReaderConfig": { + "additionalProperties": false, + "description": "One deployment-owned delegation ceiling. The policy id is the containing\nmap key, never a human profile supplied by the HTTP caller.", + "properties": { + "actorSubject": { + "type": "string" + }, + "assertionIssuer": { + "$ref": "#/$defs/Url" + }, + "client": { + "type": "string" + }, + "maximumTokenLifetimeSeconds": { + "format": "uint64", + "maximum": 300, + "minimum": 1, + "type": "integer" + }, + "profile": { + "$ref": "#/$defs/LocalId" + }, + "requiredScope": { + "type": "string" + }, + "sourceProfiles": { + "items": { + "$ref": "#/$defs/LocalId" + }, + "maxItems": 32, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "profile", + "client", + "actorSubject", + "assertionIssuer", + "requiredScope", + "maximumTokenLifetimeSeconds" + ], + "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" + }, + "HumanIdentityConfig": { + "additionalProperties": false, + "properties": { + "claim": { + "default": "registry_actor_kind", + "type": "string" + }, + "value": { + "default": "human", + "type": "string" + } + }, + "type": "object" + }, + "IdentityConfig": { + "additionalProperties": false, + "description": "The logical identity of the database this deployment activates packages\nin. It is chosen by the operator (for example `casework-production`) and\nnever derived from a URL or a PostgreSQL database name. The first\n`caseworkctl apply` records it, and every later apply and every startup\nrefuses a database whose recorded identity differs.", + "properties": { + "databaseId": { + "maxLength": 256, + "minLength": 1, + "pattern": "^[^\\u0000-\\u001f\\u007f-\\u009f \\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000](?:[^\\u0000-\\u001f\\u007f-\\u009f]*[^\\u0000-\\u001f\\u007f-\\u009f \\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000])?$", + "type": "string" + } + }, + "required": [ + "databaseId" + ], + "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" + }, + "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" + }, + "MetricsListenerConfig": { + "additionalProperties": false, + "description": "Operator-private listener for `/metrics` and `/version`.\n\nIt is separate from the API listener so the counters and the active\npackage digest never appear on the surface the public contract describes.", + "properties": { + "bind": { + "type": "string" + } + }, + "required": [ + "bind" + ], + "type": "object" + }, + "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\"." + }, + "OidcConfig": { + "additionalProperties": false, + "description": "The access tokens this runtime accepts: the issuer and its keys, the\nclients admitted, the scope claim, and the claim that marks a human actor.", + "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" + }, + "delegatedStaffReaders": { + "additionalProperties": { + "$ref": "#/$defs/DelegatedStaffReaderConfig" + }, + "description": "Explicitly opted-in delegated staff readers, keyed by the policy id a\ndedicated read client sends. Absence disables delegated staff reads.", + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "humanIdentity": { + "$ref": "#/$defs/HumanIdentityConfig" + }, + "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": { + "description": "Optional deployment bound on the lifetime declared by an incoming\naccess token, independently of the issuer's own policy.", + "format": "uint64", + "maximum": 7200, + "minimum": 1, + "type": "integer" + }, + "revokedKeyIds": { + "description": "Signing-key identifiers Casework refuses locally, even while the issuer\nstill publishes them; listing a key does not revoke it at the issuer.\nOmitted, no key is refused; written, the list is non-empty.", + "items": { + "$ref": "#/$defs/ExternalId" + }, + "maxItems": 128, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "scopeClaim": { + "default": "registry_scopes", + "type": "string" + } + }, + "required": [ + "issuer", + "audience", + "allowedClients" + ], + "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" + }, + "ReviewCompletionAuthConfig": { + "additionalProperties": false, + "description": "How a completion destination presents its secret. Without `header` the\nsecret is sent as `Authorization: Bearer`; with one, the raw secret is the\nvalue of that header and no `Authorization` header is sent.", + "properties": { + "header": { + "maxLength": 64, + "minLength": 1, + "pattern": "^[!#$%&'*+.^_`|~0-9A-Za-z-]+$", + "type": "string" + }, + "secretRef": { + "$ref": "#/$defs/SecretReference" + } + }, + "required": [ + "secretRef" + ], + "type": "object" + }, + "ReviewCompletionRuntimeConfig": { + "additionalProperties": false, + "oneOf": [ + { + "required": [ + "bearerTokenRef" + ] + }, + { + "required": [ + "auth" + ] + } + ], + "properties": { + "attemptTimeoutMilliseconds": { + "default": 5000, + "format": "uint64", + "maximum": 30000, + "minimum": 100, + "type": "integer" + }, + "auth": { + "$ref": "#/$defs/ReviewCompletionAuthConfig" + }, + "bearerTokenRef": { + "$ref": "#/$defs/SecretReference", + "description": "Shorthand for `auth` with no header: the secret is presented as\n`Authorization: Bearer`. Exactly one of this and `auth` is configured." + }, + "maximumAttempts": { + "default": 12, + "format": "uint32", + "maximum": 100, + "minimum": 1, + "type": "integer" + }, + "retryDelaySeconds": { + "default": 30, + "format": "uint64", + "maximum": 86400, + "minimum": 1, + "type": "integer" + }, + "url": { + "$ref": "#/$defs/Url" + } + }, + "required": [ + "url" + ], + "type": "object" + }, + "RuntimePackageConfig": { + "additionalProperties": false, + "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, and on an authored project that has no `SHA256SUMS`.\nOmitted, the runtime starts on whichever package `root` holds." + }, + "root": { + "description": "Absolute path of the package directory.", + "pattern": "^/", + "type": "string" + } + }, + "required": [ + "root" + ], + "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" + }, + "TaskAuthorityConfig": { + "additionalProperties": false, + "properties": { + "exchangeAudience": { + "type": "string" + }, + "issuer": { + "$ref": "#/$defs/Url" + }, + "signingKeyRef": { + "$ref": "#/$defs/SecretReference" + }, + "statusClients": { + "additionalProperties": { + "type": "string" + }, + "description": "Service client IDs mapped to their one protected resource audience.", + "propertyNames": { + "$ref": "#/$defs/ExternalId" + }, + "type": "object" + } + }, + "required": [ + "issuer", + "exchangeAudience", + "signingKeyRef", + "statusClients" + ], + "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/casework/runtime/runtime.v1alpha1.schema.json", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "allOf": [ + { + "if": { + "properties": { + "secretProviders": { + "not": { + "required": [ + "environment" + ] + } + } + }, + "required": [ + "secretProviders" + ] + }, + "then": { + "properties": { + "audit": { + "properties": { + "hashKeyRef": { + "not": { + "pattern": "^secret:env/" + } + } + } + }, + "authentication": { + "properties": { + "oidc": { + "properties": { + "jwksSource": { + "properties": { + "documentRef": { + "not": { + "pattern": "^secret:env/" + } + } + } + } + } + } + } + }, + "contextProviders": { + "additionalProperties": { + "properties": { + "clientAssertionKeyRef": { + "not": { + "pattern": "^secret:env/" + } + }, + "clientIdRef": { + "not": { + "pattern": "^secret:env/" + } + }, + "delegatedDisplayExchange": { + "properties": { + "clientAssertionKeyRef": { + "not": { + "pattern": "^secret:env/" + } + }, + "clientIdRef": { + "not": { + "pattern": "^secret:env/" + } + } + } + } + } + } + }, + "database": { + "properties": { + "migrationUrlRef": { + "not": { + "pattern": "^secret:env/" + } + }, + "runtimeUrlRef": { + "not": { + "pattern": "^secret:env/" + } + }, + "trustedRootCertificateRef": { + "not": { + "pattern": "^secret:env/" + } + } + } + }, + "reviewCompletionDestinations": { + "additionalProperties": { + "properties": { + "auth": { + "properties": { + "secretRef": { + "not": { + "pattern": "^secret:env/" + } + } + } + }, + "bearerTokenRef": { + "not": { + "pattern": "^secret:env/" + } + } + } + } + }, + "taskAuthority": { + "properties": { + "signingKeyRef": { + "not": { + "pattern": "^secret:env/" + } + } + } + } + } + } + }, + { + "if": { + "properties": { + "secretProviders": { + "not": { + "required": [ + "file" + ] + } + } + }, + "required": [ + "secretProviders" + ] + }, + "then": { + "properties": { + "audit": { + "properties": { + "hashKeyRef": { + "not": { + "pattern": "^secret:file/" + } + } + } + }, + "authentication": { + "properties": { + "oidc": { + "properties": { + "jwksSource": { + "properties": { + "documentRef": { + "not": { + "pattern": "^secret:file/" + } + } + } + } + } + } + } + }, + "contextProviders": { + "additionalProperties": { + "properties": { + "clientAssertionKeyRef": { + "not": { + "pattern": "^secret:file/" + } + }, + "clientIdRef": { + "not": { + "pattern": "^secret:file/" + } + }, + "delegatedDisplayExchange": { + "properties": { + "clientAssertionKeyRef": { + "not": { + "pattern": "^secret:file/" + } + }, + "clientIdRef": { + "not": { + "pattern": "^secret:file/" + } + } + } + } + } + } + }, + "database": { + "properties": { + "migrationUrlRef": { + "not": { + "pattern": "^secret:file/" + } + }, + "runtimeUrlRef": { + "not": { + "pattern": "^secret:file/" + } + }, + "trustedRootCertificateRef": { + "not": { + "pattern": "^secret:file/" + } + } + } + }, + "reviewCompletionDestinations": { + "additionalProperties": { + "properties": { + "auth": { + "properties": { + "secretRef": { + "not": { + "pattern": "^secret:file/" + } + } + } + }, + "bearerTokenRef": { + "not": { + "pattern": "^secret:file/" + } + } + } + } + }, + "taskAuthority": { + "properties": { + "signingKeyRef": { + "not": { + "pattern": "^secret:file/" + } + } + } + } + } + } + } + ], + "properties": { + "apiVersion": { + "const": "id.registrystack.org/formats/casework/runtime/v1alpha1", + "type": "string" + }, + "audit": { + "$ref": "#/$defs/AuditConfig" + }, + "authentication": { + "$ref": "#/$defs/AuthenticationConfig" + }, + "contextProviders": { + "additionalProperties": { + "$ref": "#/$defs/BregBinding" + }, + "default": {}, + "description": "Provider transport bindings keyed by the deploymentRef `casework.yaml` declares.", + "propertyNames": { + "$ref": "#/$defs/LocalId" + }, + "type": "object" + }, + "database": { + "$ref": "#/$defs/DatabaseConfig" + }, + "identity": { + "$ref": "#/$defs/IdentityConfig" + }, + "kind": { + "const": "CaseworkRuntimeConfig", + "type": "string" + }, + "listener": { + "$ref": "#/$defs/PrivateListenerConfig" + }, + "metricsListener": { + "$ref": "#/$defs/MetricsListenerConfig" + }, + "package": { + "$ref": "#/$defs/RuntimePackageConfig" + }, + "reviewCompletionDestinations": { + "additionalProperties": { + "$ref": "#/$defs/ReviewCompletionRuntimeConfig" + }, + "description": "Completion destinations keyed by the destination id a review producer\nnames in `casework.yaml`, kept as written.", + "propertyNames": { + "$ref": "#/$defs/ExternalId" + }, + "type": "object" + }, + "secretProviders": { + "$ref": "#/$defs/SecretProvidersConfig" + }, + "taskAuthority": { + "$ref": "#/$defs/TaskAuthorityConfig" + } + }, + "required": [ + "apiVersion", + "kind", + "identity", + "package", + "listener", + "secretProviders", + "database", + "authentication", + "audit" + ], + "title": "Registry Casework runtime configuration", + "type": "object" +} diff --git a/src/artifacts/sha256/fd4ef085ef94087f5fa6d846a284957345d5463df44372c5667ea1a8cf643d0d.yaml b/src/artifacts/sha256/fd4ef085ef94087f5fa6d846a284957345d5463df44372c5667ea1a8cf643d0d.yaml new file mode 100644 index 000000000..913e3a2ec --- /dev/null +++ b/src/artifacts/sha256/fd4ef085ef94087f5fa6d846a284957345d5463df44372c5667ea1a8cf643d0d.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 and prunes sealed 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 sealed 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; + 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/catalogs/contexts.json b/src/catalogs/contexts.json index 28be40f61..a9d347089 100644 --- a/src/catalogs/contexts.json +++ b/src/catalogs/contexts.json @@ -8,15 +8,15 @@ "status": "active", "compatibility_line": "v1", "owner": "registry-record", - "source": "src/artifacts/sha256/9b8bf452538214d8559b4e8034446bfade37b5f409cfeaaace650a567423be71.jsonld", + "source": "src/artifacts/sha256/c336506f4dcd7e266155e8cd1ff9710766bc240f395e27b0480b2e193e74e2ee.jsonld", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "products/registry-record/profile/registry-record-v1.md", - "sha256": "f165e62044df2129b5cc533d3199cf81ae23d263617f39437ee37be87d3b37fe" + "sha256": "c8685157d8e2982b00657a2a3b2fe729cf54792d76134cf22aa1be1cc7abf4a8" }, - "artifact_sha256": "9b8bf452538214d8559b4e8034446bfade37b5f409cfeaaace650a567423be71", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/9b8bf452538214d8559b4e8034446bfade37b5f409cfeaaace650a567423be71.jsonld" + "artifact_sha256": "c336506f4dcd7e266155e8cd1ff9710766bc240f395e27b0480b2e193e74e2ee", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/c336506f4dcd7e266155e8cd1ff9710766bc240f395e27b0480b2e193e74e2ee.jsonld" }, { "uri": "https://id.registrystack.org/contexts/registry-relay/provenance/v1.jsonld", diff --git a/src/catalogs/namespaces.json b/src/catalogs/namespaces.json index 4203dce35..fe13d959c 100644 --- a/src/catalogs/namespaces.json +++ b/src/catalogs/namespaces.json @@ -10,9 +10,9 @@ "owner": "registry-manifest", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-manifest-core/src/lib.rs", - "sha256": "e1d4b066f89f5df821aa348bc86e62145593798a7433fc3120ce13914900559f" + "sha256": "707b3d0306d9eab8e4f8148310482ceff7912368c50b147931dceafe54dadc74" } }, { diff --git a/src/catalogs/problems.json b/src/catalogs/problems.json index 47495f1d9..be9039508 100644 --- a/src/catalogs/problems.json +++ b/src/catalogs/problems.json @@ -1,5 +1,5 @@ { - "generated_from": "https://github.com/registrystack/registry-stack/blob/bae18995d0f00eba35d7b96629a56e051ac3d0df/products/identifiers/generated/catalog.v1.json", + "generated_from": "https://github.com/registrystack/registry-stack/blob/e9361a89c02e6dcec0e5f199eb6dd5116eb321be/products/identifiers/generated/catalog.v1.json", "generated_at": "1970-01-01T00:00:00.000Z", "entries": [ { @@ -18,9 +18,9 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -39,9 +39,9 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -60,9 +60,9 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -81,9 +81,9 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -102,9 +102,9 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -144,9 +144,9 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -165,9 +165,9 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -186,9 +186,9 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -207,9 +207,9 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -228,9 +228,9 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -249,9 +249,9 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -270,9 +270,9 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -291,9 +291,9 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -312,9 +312,9 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -333,9 +333,9 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -354,9 +354,9 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -375,9 +375,9 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -396,9 +396,9 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -417,9 +417,9 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -438,9 +438,9 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -459,9 +459,9 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -480,9 +480,9 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -522,9 +522,9 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -543,9 +543,9 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -564,9 +564,9 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -585,9 +585,9 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -606,9 +606,9 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -627,9 +627,9 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -648,9 +648,9 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -669,9 +669,9 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -690,9 +690,9 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -711,9 +711,9 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -732,9 +732,30 @@ "source": "registry-stack/crates/registry-breg/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" + } + }, + { + "product": "registry-breg", + "code": "write.outside-boundary", + "path": "write/outside-boundary", + "title": "Forbidden", + "description": "The resulting record falls outside the selected access profile's row boundary.", + "kind": "problem", + "status": "active", + "compatibility_line": "v1alpha1", + "owner": "breg", + "http_statuses": [ + 403 + ], + "source": "registry-stack/crates/registry-breg/src/problem.rs", + "source_reference": { + "repository": "registry-stack", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", + "path": "crates/registry-breg/src/problem.rs", + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" } }, { @@ -753,9 +774,9 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -774,9 +795,9 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -795,9 +816,9 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -816,9 +837,9 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -837,9 +858,9 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -858,9 +879,9 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -879,9 +900,9 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -900,9 +921,9 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -921,9 +942,9 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -942,9 +963,9 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -963,9 +984,9 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -984,9 +1005,9 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -1005,9 +1026,9 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -1026,9 +1047,9 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -1047,9 +1068,9 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -1068,9 +1089,9 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -1089,9 +1110,9 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -1110,9 +1131,9 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -1131,9 +1152,9 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -1152,9 +1173,9 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -1215,9 +1236,9 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -1236,9 +1257,9 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -1257,9 +1278,9 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -1278,9 +1299,9 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -1299,9 +1320,9 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -1320,9 +1341,9 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -1341,9 +1362,9 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -1362,9 +1383,9 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -1383,9 +1404,9 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -1404,9 +1425,9 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -1425,9 +1446,9 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -1446,9 +1467,9 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -1467,9 +1488,9 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -1488,9 +1509,9 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -1509,9 +1530,9 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -1614,9 +1635,9 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -1635,9 +1656,9 @@ "source": "registry-stack/crates/registry-casework/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" } }, { @@ -1824,9 +1845,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -1845,9 +1866,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -1866,9 +1887,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -1887,9 +1908,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -1908,9 +1929,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -1929,9 +1950,30 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", + "path": "crates/registry-coordinator/src/problem.rs", + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + } + }, + { + "product": "registry-coordinator", + "code": "check.not-waiting", + "path": "check/not-waiting", + "title": "Step is not waiting", + "description": "That step is not waiting.", + "kind": "problem", + "status": "active", + "compatibility_line": "v1alpha1", + "owner": "coordinator", + "http_statuses": [ + 409 + ], + "source": "registry-stack/crates/registry-coordinator/src/problem.rs", + "source_reference": { + "repository": "registry-stack", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -1950,9 +1992,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -1971,9 +2013,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -1992,9 +2034,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -2013,9 +2055,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -2034,9 +2076,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -2055,9 +2097,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -2076,9 +2118,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -2097,9 +2139,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -2118,9 +2160,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -2139,9 +2181,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -2160,9 +2202,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -2181,9 +2223,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -2202,9 +2244,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -2223,9 +2265,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -2244,9 +2286,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -2265,9 +2307,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -2286,9 +2328,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -2307,9 +2349,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -2328,9 +2370,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -2349,9 +2391,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -2370,9 +2412,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -2391,9 +2433,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -2412,9 +2454,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -2433,9 +2475,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -2454,9 +2496,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -2475,9 +2517,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -2496,9 +2538,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -2517,9 +2559,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -2538,9 +2580,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -2559,9 +2601,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -2580,9 +2622,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -2601,9 +2643,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -2622,9 +2664,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -2643,9 +2685,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -2664,9 +2706,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -2685,9 +2727,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -2706,9 +2748,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -2727,9 +2769,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -2748,9 +2790,9 @@ "source": "registry-stack/crates/registry-coordinator/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" } }, { @@ -2769,7 +2811,7 @@ "source": "registry-stack/crates/registry-discovery/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-discovery/src/problem.rs", "sha256": "cd37f4a483c9d29c5ed4cbffa11756ef78207d9df1e6e62b7f93de36a30b43e3" } @@ -2790,7 +2832,7 @@ "source": "registry-stack/crates/registry-discovery/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-discovery/src/problem.rs", "sha256": "cd37f4a483c9d29c5ed4cbffa11756ef78207d9df1e6e62b7f93de36a30b43e3" } @@ -2811,7 +2853,7 @@ "source": "registry-stack/crates/registry-discovery/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-discovery/src/problem.rs", "sha256": "cd37f4a483c9d29c5ed4cbffa11756ef78207d9df1e6e62b7f93de36a30b43e3" } @@ -2832,7 +2874,7 @@ "source": "registry-stack/crates/registry-discovery/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-discovery/src/problem.rs", "sha256": "cd37f4a483c9d29c5ed4cbffa11756ef78207d9df1e6e62b7f93de36a30b43e3" } @@ -2853,7 +2895,7 @@ "source": "registry-stack/crates/registry-documents-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -2874,7 +2916,7 @@ "source": "registry-stack/crates/registry-documents-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -2895,7 +2937,7 @@ "source": "registry-stack/crates/registry-documents-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -2916,7 +2958,7 @@ "source": "registry-stack/crates/registry-documents-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -2937,7 +2979,7 @@ "source": "registry-stack/crates/registry-documents-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -2958,7 +3000,7 @@ "source": "registry-stack/crates/registry-documents-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -2979,7 +3021,7 @@ "source": "registry-stack/crates/registry-documents-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -3000,7 +3042,7 @@ "source": "registry-stack/crates/registry-documents-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -3021,7 +3063,7 @@ "source": "registry-stack/crates/registry-documents-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -3042,7 +3084,7 @@ "source": "registry-stack/crates/registry-documents-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -3063,7 +3105,7 @@ "source": "registry-stack/crates/registry-documents-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -3084,7 +3126,7 @@ "source": "registry-stack/crates/registry-documents-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -3105,7 +3147,7 @@ "source": "registry-stack/crates/registry-documents-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -3126,7 +3168,7 @@ "source": "registry-stack/crates/registry-documents-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -3147,7 +3189,7 @@ "source": "registry-stack/crates/registry-documents-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -3168,7 +3210,7 @@ "source": "registry-stack/crates/registry-documents-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -3189,7 +3231,7 @@ "source": "registry-stack/crates/registry-documents-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -3210,7 +3252,7 @@ "source": "registry-stack/crates/registry-documents-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -3231,7 +3273,7 @@ "source": "registry-stack/crates/registry-documents-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -3252,7 +3294,7 @@ "source": "registry-stack/crates/registry-documents-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -3273,7 +3315,7 @@ "source": "registry-stack/crates/registry-documents-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -3294,7 +3336,7 @@ "source": "registry-stack/crates/registry-documents-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -3315,7 +3357,7 @@ "source": "registry-stack/crates/registry-documents-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -3336,7 +3378,7 @@ "source": "registry-stack/crates/registry-documents-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-documents-core/src/problem.rs", "sha256": "68327ca116e11364be13f8b00388fb6c513e09d91520bd99f5b562d53db61acd" } @@ -3378,7 +3420,7 @@ "source": "registry-stack/crates/registry-evidence/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-evidence/src/problem.rs", "sha256": "09e2898f19ebef1f3bf4699280261a4c7549b05eb9f8d30dba60ab2973bc06f9" } @@ -3399,7 +3441,7 @@ "source": "registry-stack/crates/registry-evidence/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-evidence/src/problem.rs", "sha256": "09e2898f19ebef1f3bf4699280261a4c7549b05eb9f8d30dba60ab2973bc06f9" } @@ -3441,7 +3483,7 @@ "source": "registry-stack/crates/registry-evidence/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-evidence/src/problem.rs", "sha256": "09e2898f19ebef1f3bf4699280261a4c7549b05eb9f8d30dba60ab2973bc06f9" } @@ -3483,7 +3525,7 @@ "source": "registry-stack/crates/registry-evidence/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-evidence/src/problem.rs", "sha256": "09e2898f19ebef1f3bf4699280261a4c7549b05eb9f8d30dba60ab2973bc06f9" } @@ -3504,7 +3546,7 @@ "source": "registry-stack/crates/registry-evidence/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-evidence/src/problem.rs", "sha256": "09e2898f19ebef1f3bf4699280261a4c7549b05eb9f8d30dba60ab2973bc06f9" } @@ -3525,7 +3567,7 @@ "source": "registry-stack/crates/registry-evidence/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-evidence/src/problem.rs", "sha256": "09e2898f19ebef1f3bf4699280261a4c7549b05eb9f8d30dba60ab2973bc06f9" } @@ -3567,7 +3609,7 @@ "source": "registry-stack/crates/registry-evidence/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-evidence/src/problem.rs", "sha256": "09e2898f19ebef1f3bf4699280261a4c7549b05eb9f8d30dba60ab2973bc06f9" } @@ -3609,7 +3651,7 @@ "source": "registry-stack/crates/registry-evidence/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-evidence/src/problem.rs", "sha256": "09e2898f19ebef1f3bf4699280261a4c7549b05eb9f8d30dba60ab2973bc06f9" } @@ -3630,7 +3672,7 @@ "source": "registry-stack/crates/registry-evidence/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-evidence/src/problem.rs", "sha256": "09e2898f19ebef1f3bf4699280261a4c7549b05eb9f8d30dba60ab2973bc06f9" } @@ -3651,7 +3693,7 @@ "source": "registry-stack/crates/registry-evidence/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-evidence/src/problem.rs", "sha256": "09e2898f19ebef1f3bf4699280261a4c7549b05eb9f8d30dba60ab2973bc06f9" } @@ -3672,7 +3714,7 @@ "source": "registry-stack/crates/registry-messaging-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -3693,7 +3735,7 @@ "source": "registry-stack/crates/registry-messaging-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -3714,7 +3756,7 @@ "source": "registry-stack/crates/registry-messaging-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -3735,7 +3777,7 @@ "source": "registry-stack/crates/registry-messaging-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -3756,7 +3798,7 @@ "source": "registry-stack/crates/registry-messaging-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -3777,7 +3819,7 @@ "source": "registry-stack/crates/registry-messaging-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -3798,7 +3840,7 @@ "source": "registry-stack/crates/registry-messaging-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -3819,7 +3861,7 @@ "source": "registry-stack/crates/registry-messaging-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -3840,7 +3882,7 @@ "source": "registry-stack/crates/registry-messaging-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -3861,7 +3903,7 @@ "source": "registry-stack/crates/registry-messaging-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -3882,7 +3924,7 @@ "source": "registry-stack/crates/registry-messaging-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -3903,7 +3945,7 @@ "source": "registry-stack/crates/registry-messaging-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -3924,7 +3966,7 @@ "source": "registry-stack/crates/registry-messaging-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -3945,7 +3987,7 @@ "source": "registry-stack/crates/registry-messaging-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -3966,7 +4008,7 @@ "source": "registry-stack/crates/registry-messaging-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -3987,7 +4029,7 @@ "source": "registry-stack/crates/registry-messaging-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -4008,7 +4050,7 @@ "source": "registry-stack/crates/registry-messaging-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -4029,7 +4071,7 @@ "source": "registry-stack/crates/registry-messaging-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -4050,7 +4092,7 @@ "source": "registry-stack/crates/registry-messaging-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -4071,7 +4113,7 @@ "source": "registry-stack/crates/registry-messaging-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -4092,7 +4134,7 @@ "source": "registry-stack/crates/registry-messaging-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -4113,7 +4155,7 @@ "source": "registry-stack/crates/registry-messaging-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -4134,7 +4176,7 @@ "source": "registry-stack/crates/registry-messaging-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -4155,7 +4197,7 @@ "source": "registry-stack/crates/registry-messaging-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -4176,7 +4218,7 @@ "source": "registry-stack/crates/registry-messaging-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -4197,7 +4239,7 @@ "source": "registry-stack/crates/registry-messaging-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -4218,7 +4260,7 @@ "source": "registry-stack/crates/registry-messaging-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-messaging-core/src/problem.rs", "sha256": "b2c08b13660c7bc99e9865575be322dae315474f708180031d14702ad62acdb7" } @@ -8053,7 +8095,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8074,7 +8116,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8095,7 +8137,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8116,7 +8158,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8137,7 +8179,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8158,7 +8200,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8179,7 +8221,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8200,7 +8242,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8221,7 +8263,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8242,7 +8284,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8263,7 +8305,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8284,7 +8326,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8305,7 +8347,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8326,7 +8368,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8347,7 +8389,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8368,7 +8410,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8389,7 +8431,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8410,7 +8452,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8431,7 +8473,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8452,7 +8494,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8473,7 +8515,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8494,7 +8536,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8515,7 +8557,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8536,7 +8578,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8557,7 +8599,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8578,7 +8620,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8599,7 +8641,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8620,7 +8662,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8641,7 +8683,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8662,7 +8704,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8683,7 +8725,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8704,7 +8746,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } @@ -8725,7 +8767,7 @@ "source": "registry-stack/crates/registry-scheduling-core/src/problem.rs", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/problem.rs", "sha256": "2a84c86a852cfeb47db62acfe2fad5fa7f2eeba199003401022f7bcd1a928691" } diff --git a/src/catalogs/profiles.json b/src/catalogs/profiles.json index 16ef8241e..3a9036280 100644 --- a/src/catalogs/profiles.json +++ b/src/catalogs/profiles.json @@ -1,5 +1,24 @@ { "entries": [ + { + "uri": "https://id.registrystack.org/profiles/breg-odrl/v1", + "title": "BReg partial read-policy export profile", + "description": "Experimental ODRL profile for operator review of a conservative subset of configured BReg read permissions.", + "kind": "profile", + "status": "active", + "compatibility_line": "v1", + "owner": "breg", + "source": "src/artifacts/sha256/24d0950eb2c1a76d5005850e1145f675ad65df5231867907b41d11fdd2979cdc.jsonld", + "source_reference": { + "repository": "registry-stack", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", + "path": "products/breg/contracts/odrl-profile.jsonld", + "sha256": "24d0950eb2c1a76d5005850e1145f675ad65df5231867907b41d11fdd2979cdc" + }, + "artifact_sha256": "24d0950eb2c1a76d5005850e1145f675ad65df5231867907b41d11fdd2979cdc", + "artifact_media_type": "application/ld+json", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/24d0950eb2c1a76d5005850e1145f675ad65df5231867907b41d11fdd2979cdc.jsonld" + }, { "uri": "https://id.registrystack.org/profiles/registry-record/v1", "title": "Registry Record v1 profile", @@ -8,15 +27,15 @@ "status": "active", "compatibility_line": "v1", "owner": "registry-record", - "source": "src/artifacts/sha256/f165e62044df2129b5cc533d3199cf81ae23d263617f39437ee37be87d3b37fe.md", + "source": "src/artifacts/sha256/c8685157d8e2982b00657a2a3b2fe729cf54792d76134cf22aa1be1cc7abf4a8.md", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "products/registry-record/profile/registry-record-v1.md", - "sha256": "f165e62044df2129b5cc533d3199cf81ae23d263617f39437ee37be87d3b37fe" + "sha256": "c8685157d8e2982b00657a2a3b2fe729cf54792d76134cf22aa1be1cc7abf4a8" }, - "artifact_sha256": "f165e62044df2129b5cc533d3199cf81ae23d263617f39437ee37be87d3b37fe", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/f165e62044df2129b5cc533d3199cf81ae23d263617f39437ee37be87d3b37fe.md" + "artifact_sha256": "c8685157d8e2982b00657a2a3b2fe729cf54792d76134cf22aa1be1cc7abf4a8", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/c8685157d8e2982b00657a2a3b2fe729cf54792d76134cf22aa1be1cc7abf4a8.md" } ] } diff --git a/src/catalogs/schemas.json b/src/catalogs/schemas.json index a25540baa..297ded606 100644 --- a/src/catalogs/schemas.json +++ b/src/catalogs/schemas.json @@ -11,13 +11,157 @@ "source": "src/artifacts/sha256/7d694df0140e03e1a4c1e6a564e52d69a7d334b9e0063d8aeded24d28b83d182.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/proposal_hooks.rs", "sha256": "02fe083f3d06c107298847923f42c0036ee98d5ba12347e527e886c0cedd2178" }, "artifact_sha256": "7d694df0140e03e1a4c1e6a564e52d69a7d334b9e0063d8aeded24d28b83d182", "immutable_uri": "https://id.registrystack.org/artifacts/sha256/7d694df0140e03e1a4c1e6a564e52d69a7d334b9e0063d8aeded24d28b83d182.json" }, + { + "uri": "https://id.registrystack.org/schemas/adapter/effective-contract/effective-contract.v1alpha1.schema.json", + "title": "Registry Adapter effective contract", + "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/5bfd55b2ccee480035ee9db13b8fb3a99ac5a2e9cd01645fdda8dfeb593eb688.json", + "source_reference": { + "repository": "registry-stack", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", + "path": "crates/registry-adapterctl/src/schemas.rs", + "sha256": "ee38dfe66d555d580545cec1b5d8e4148d1d108d194d5680c3dca63bbfbfd7c9" + }, + "artifact_sha256": "5bfd55b2ccee480035ee9db13b8fb3a99ac5a2e9cd01645fdda8dfeb593eb688", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/5bfd55b2ccee480035ee9db13b8fb3a99ac5a2e9cd01645fdda8dfeb593eb688.json" + }, + { + "uri": "https://id.registrystack.org/schemas/adapter/fixture/fixture.v1alpha1.schema.json", + "title": "Registry Adapter fixture suite", + "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/ca14df9aafa49fd2018a12869e54f4058e29de07f01c0cbc0dd13f069649bcc9.json", + "source_reference": { + "repository": "registry-stack", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", + "path": "crates/registry-adapterctl/src/schemas.rs", + "sha256": "ee38dfe66d555d580545cec1b5d8e4148d1d108d194d5680c3dca63bbfbfd7c9" + }, + "artifact_sha256": "ca14df9aafa49fd2018a12869e54f4058e29de07f01c0cbc0dd13f069649bcc9", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/ca14df9aafa49fd2018a12869e54f4058e29de07f01c0cbc0dd13f069649bcc9.json" + }, + { + "uri": "https://id.registrystack.org/schemas/adapter/job-runtime/job-runtime.v1alpha1.schema.json", + "title": "Registry Adapter ingestion job runtime configuration", + "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/c1be1e7bc8efa01de429ea5a5cd7c19da49d9766d71839602a0e81cecc447d8b.json", + "source_reference": { + "repository": "registry-stack", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", + "path": "crates/registry-adapterctl/src/schemas.rs", + "sha256": "ee38dfe66d555d580545cec1b5d8e4148d1d108d194d5680c3dca63bbfbfd7c9" + }, + "artifact_sha256": "c1be1e7bc8efa01de429ea5a5cd7c19da49d9766d71839602a0e81cecc447d8b", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/c1be1e7bc8efa01de429ea5a5cd7c19da49d9766d71839602a0e81cecc447d8b.json" + }, + { + "uri": "https://id.registrystack.org/schemas/adapter/job/job.v1alpha1.schema.json", + "title": "Registry Adapter ingestion job", + "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/38818527ae8cf4435485ea3f283af51b41c4d1d1e0e26d04ab3e59c158c150a7.json", + "source_reference": { + "repository": "registry-stack", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", + "path": "crates/registry-adapterctl/src/schemas.rs", + "sha256": "ee38dfe66d555d580545cec1b5d8e4148d1d108d194d5680c3dca63bbfbfd7c9" + }, + "artifact_sha256": "38818527ae8cf4435485ea3f283af51b41c4d1d1e0e26d04ab3e59c158c150a7", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/38818527ae8cf4435485ea3f283af51b41c4d1d1e0e26d04ab3e59c158c150a7.json" + }, + { + "uri": "https://id.registrystack.org/schemas/adapter/pack/pack.v1alpha1.schema.json", + "title": "Registry Adapter pack", + "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/6031baaabca785fe6e0adfed4336fa555839e18ae1a3136cf3e895ad5e6f6dcb.json", + "source_reference": { + "repository": "registry-stack", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", + "path": "crates/registry-adapterctl/src/schemas.rs", + "sha256": "ee38dfe66d555d580545cec1b5d8e4148d1d108d194d5680c3dca63bbfbfd7c9" + }, + "artifact_sha256": "6031baaabca785fe6e0adfed4336fa555839e18ae1a3136cf3e895ad5e6f6dcb", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/6031baaabca785fe6e0adfed4336fa555839e18ae1a3136cf3e895ad5e6f6dcb.json" + }, + { + "uri": "https://id.registrystack.org/schemas/adapter/profile/profile.v1alpha1.schema.json", + "title": "Registry Adapter facade profile", + "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/8032fd67f82f517cade8e55c4d3972bc5481a957b84a4cb70b3f40f82ac970d3.json", + "source_reference": { + "repository": "registry-stack", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", + "path": "crates/registry-adapterctl/src/schemas.rs", + "sha256": "ee38dfe66d555d580545cec1b5d8e4148d1d108d194d5680c3dca63bbfbfd7c9" + }, + "artifact_sha256": "8032fd67f82f517cade8e55c4d3972bc5481a957b84a4cb70b3f40f82ac970d3", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/8032fd67f82f517cade8e55c4d3972bc5481a957b84a4cb70b3f40f82ac970d3.json" + }, + { + "uri": "https://id.registrystack.org/schemas/adapter/project/project.v1alpha1.schema.json", + "title": "Registry Adapter project", + "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/2a31e088e66073cf94b5d3769aebbeef3552cafa59c2281405be83ccd5390435.json", + "source_reference": { + "repository": "registry-stack", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", + "path": "crates/registry-adapterctl/src/schemas.rs", + "sha256": "ee38dfe66d555d580545cec1b5d8e4148d1d108d194d5680c3dca63bbfbfd7c9" + }, + "artifact_sha256": "2a31e088e66073cf94b5d3769aebbeef3552cafa59c2281405be83ccd5390435", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/2a31e088e66073cf94b5d3769aebbeef3552cafa59c2281405be83ccd5390435.json" + }, + { + "uri": "https://id.registrystack.org/schemas/adapter/runtime/runtime.v1alpha1.schema.json", + "title": "Registry Adapter runtime configuration", + "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/169ce8657f2ab5a3140216b6aeeeaaaf7dfcea0f508364a76de142b93c6a0a14.json", + "source_reference": { + "repository": "registry-stack", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", + "path": "crates/registry-adapterctl/src/schemas.rs", + "sha256": "ee38dfe66d555d580545cec1b5d8e4148d1d108d194d5680c3dca63bbfbfd7c9" + }, + "artifact_sha256": "169ce8657f2ab5a3140216b6aeeeaaaf7dfcea0f508364a76de142b93c6a0a14", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/169ce8657f2ab5a3140216b6aeeeaaaf7dfcea0f508364a76de142b93c6a0a14.json" + }, { "uri": "https://id.registrystack.org/schemas/breg/access-explanation/access-explanation.v1alpha4.schema.json", "title": "AccessExplanation", @@ -77,7 +221,7 @@ "title": "AccessExplanation", "description": "Base Registry Engine bregctl explain output JSON Schemas, written by hand and held to bregctl's output by its contract test.", "kind": "schema", - "status": "active", + "status": "deprecated", "compatibility_line": "v1alpha7", "owner": "breg", "source": "src/artifacts/sha256/868846b864b32a31087c4c2fc8b99ef232151641a7fd848f3bca3d516f284544.json", @@ -90,6 +234,24 @@ "artifact_sha256": "868846b864b32a31087c4c2fc8b99ef232151641a7fd848f3bca3d516f284544", "immutable_uri": "https://id.registrystack.org/artifacts/sha256/868846b864b32a31087c4c2fc8b99ef232151641a7fd848f3bca3d516f284544.json" }, + { + "uri": "https://id.registrystack.org/schemas/breg/access-explanation/access-explanation.v1alpha8.schema.json", + "title": "AccessExplanation", + "description": "Base Registry Engine bregctl explain output JSON Schemas, written by hand and held to bregctl's output by its contract test.", + "kind": "schema", + "status": "active", + "compatibility_line": "v1alpha8", + "owner": "breg", + "source": "src/artifacts/sha256/e9bae5707ef92498b162083958fc0af4c1c043e74eec71252259e70bab88b73d.json", + "source_reference": { + "repository": "registry-stack", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", + "path": "products/breg/contracts/explain/AccessExplanation.schema.json", + "sha256": "e9bae5707ef92498b162083958fc0af4c1c043e74eec71252259e70bab88b73d" + }, + "artifact_sha256": "e9bae5707ef92498b162083958fc0af4c1c043e74eec71252259e70bab88b73d", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/e9bae5707ef92498b162083958fc0af4c1c043e74eec71252259e70bab88b73d.json" + }, { "uri": "https://id.registrystack.org/schemas/breg/access-preview/access-preview.v1alpha4.schema.json", "title": "AccessPreview", @@ -101,7 +263,7 @@ "source": "src/artifacts/sha256/18b0b088010cf8ddacae0ffaada4defe030e67eb1fb05c4b282e03ecf62a29a8.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "products/breg/contracts/explain/AccessPreview.schema.json", "sha256": "18b0b088010cf8ddacae0ffaada4defe030e67eb1fb05c4b282e03ecf62a29a8" }, @@ -119,9 +281,9 @@ "source": "src/artifacts/sha256/5e2e840d023549e7184ace57e19928c29c90e5601a84ed1bf86b1a03f0f08948.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/artifacts.rs", - "sha256": "560911be004e83d591163ea1c4a25f577546decd01b3f3d49fbbe92354c380b3" + "sha256": "8e7e1c82cc1ddb3bc1d41866c812c2ff7d0007d0b57b83422260681ff549e795" }, "artifact_sha256": "5e2e840d023549e7184ace57e19928c29c90e5601a84ed1bf86b1a03f0f08948", "immutable_uri": "https://id.registrystack.org/artifacts/sha256/5e2e840d023549e7184ace57e19928c29c90e5601a84ed1bf86b1a03f0f08948.json" @@ -191,7 +353,7 @@ "source": "src/artifacts/sha256/d0263a9335d657c23078e5190210f580db884a0608bd6591daebfcb2447a7bbd.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "products/breg/contracts/explain/ActionsExplanation.schema.json", "sha256": "d0263a9335d657c23078e5190210f580db884a0608bd6591daebfcb2447a7bbd" }, @@ -245,7 +407,7 @@ "source": "src/artifacts/sha256/f52ad0028a6479717062d38de052df5c1d8e1b0c8b63c478980a3897cc2675cd.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-bregctl/src/tool_schema.rs", "sha256": "28567d54120dd29d734ddcd3e10c4c6ee128eb7b2d195e4c77bd1cd6c9bc5cfd" }, @@ -281,7 +443,7 @@ "source": "src/artifacts/sha256/5020d8c8d12191760b03bfd268a0f11a8a88b7bc06982063573b7e48c9950fae.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-bregctl/src/tool_schema.rs", "sha256": "28567d54120dd29d734ddcd3e10c4c6ee128eb7b2d195e4c77bd1cd6c9bc5cfd" }, @@ -299,7 +461,7 @@ "source": "src/artifacts/sha256/52b076a8325b63e0bcaffb71d348e0239cea4d48be094100a018ef8a819fdab5.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "products/breg/contracts/event-record-view/EventRecordView.schema.json", "sha256": "52b076a8325b63e0bcaffb71d348e0239cea4d48be094100a018ef8a819fdab5" }, @@ -335,7 +497,7 @@ "source": "src/artifacts/sha256/13bb8f2e95d3244f368dccb5ea2c9779ad14a7b3f4661f61487cf56f983b2d45.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "products/breg/contracts/explain/EventsExplanation.schema.json", "sha256": "13bb8f2e95d3244f368dccb5ea2c9779ad14a7b3f4661f61487cf56f983b2d45" }, @@ -353,7 +515,7 @@ "source": "src/artifacts/sha256/ea3e859161f961767bc44b463a025feefc17662dd31fa7ba4c67f71b0188f1bc.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-bregctl/src/tool_schema.rs", "sha256": "28567d54120dd29d734ddcd3e10c4c6ee128eb7b2d195e4c77bd1cd6c9bc5cfd" }, @@ -371,7 +533,7 @@ "source": "src/artifacts/sha256/10006d4e4cd3b8ef2d9e742793967293c7bbdca89a8c11676310a7c4f4c1adc8.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-bregctl/src/tool_schema.rs", "sha256": "28567d54120dd29d734ddcd3e10c4c6ee128eb7b2d195e4c77bd1cd6c9bc5cfd" }, @@ -443,7 +605,7 @@ "source": "src/artifacts/sha256/738c5151b6085ee5a5da8d60334f70b179e740bc1af9cb2888325436c338d546.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "products/breg/contracts/explain/LifecycleExplanation.schema.json", "sha256": "738c5151b6085ee5a5da8d60334f70b179e740bc1af9cb2888325436c338d546" }, @@ -461,7 +623,7 @@ "source": "src/artifacts/sha256/34d05bd2adc4b41a65becd76fa288943d2636b7b60e4cfaf17c026dbd962b0f1.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg-mcp/src/schema.rs", "sha256": "3e23892d238d9ae9f0fe5b88af8ff394e07891dec5d9c60fb04026c08edce6c2" }, @@ -476,15 +638,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "breg", - "source": "src/artifacts/sha256/100315e48b363b9f32004f472633a0710816abb6dce52129f2f98513dfd0d8ab.json", + "source": "src/artifacts/sha256/8177563ac1261680db7070b59f8b651d1cfe8c33cb5423891902bab4d5f8173e.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-bregctl/src/tool_schema.rs", "sha256": "28567d54120dd29d734ddcd3e10c4c6ee128eb7b2d195e4c77bd1cd6c9bc5cfd" }, - "artifact_sha256": "100315e48b363b9f32004f472633a0710816abb6dce52129f2f98513dfd0d8ab", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/100315e48b363b9f32004f472633a0710816abb6dce52129f2f98513dfd0d8ab.json" + "artifact_sha256": "8177563ac1261680db7070b59f8b651d1cfe8c33cb5423891902bab4d5f8173e", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/8177563ac1261680db7070b59f8b651d1cfe8c33cb5423891902bab4d5f8173e.json" }, { "uri": "https://id.registrystack.org/schemas/breg/model-explanation/model-explanation.v1alpha4.schema.json", @@ -551,7 +713,7 @@ "source": "src/artifacts/sha256/c5c5461590e22ba0896a312e9235ad707c066b803c14759f34d402c186823797.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "products/breg/contracts/explain/ModelExplanation.schema.json", "sha256": "c5c5461590e22ba0896a312e9235ad707c066b803c14759f34d402c186823797" }, @@ -569,7 +731,7 @@ "source": "src/artifacts/sha256/975478df7cdc216115fcf370f1478ffc3309c6ac6ae47f79be1c8b358c90dd7e.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-bregctl/src/tool_schema.rs", "sha256": "28567d54120dd29d734ddcd3e10c4c6ee128eb7b2d195e4c77bd1cd6c9bc5cfd" }, @@ -584,15 +746,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "breg", - "source": "src/artifacts/sha256/9eff8e027f5900d3fd4a1c88b6cae2c9657fcd9e09e3e07706e6bd1a7823e0e3.json", + "source": "src/artifacts/sha256/9949f5e3a10d4deb0038359d76d1f59b160449472bcd0b6c99e45ad776d20f80.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/schema.rs", - "sha256": "c416a52a4fc41b2d5f371e08182cb9dd0671d90601adc8f87900688d470f3e52" + "sha256": "72890db9bee57302bf2dcca70dd6629c24bcd9634414fc507e218fd52daed9f9" }, - "artifact_sha256": "9eff8e027f5900d3fd4a1c88b6cae2c9657fcd9e09e3e07706e6bd1a7823e0e3", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/9eff8e027f5900d3fd4a1c88b6cae2c9657fcd9e09e3e07706e6bd1a7823e0e3.json" + "artifact_sha256": "9949f5e3a10d4deb0038359d76d1f59b160449472bcd0b6c99e45ad776d20f80", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/9949f5e3a10d4deb0038359d76d1f59b160449472bcd0b6c99e45ad776d20f80.json" }, { "uri": "https://id.registrystack.org/schemas/breg/project/project.v1alpha1.schema.json", @@ -602,15 +764,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "breg", - "source": "src/artifacts/sha256/a9770dec360be9b6ef23c57f12b53cbf24a25b82a318f7f142ead530b65e35f7.json", + "source": "src/artifacts/sha256/4babace1053c7b8446b682ce2db17a220263e669b397a414d98ead9d47af459a.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/schema.rs", - "sha256": "c416a52a4fc41b2d5f371e08182cb9dd0671d90601adc8f87900688d470f3e52" + "sha256": "72890db9bee57302bf2dcca70dd6629c24bcd9634414fc507e218fd52daed9f9" }, - "artifact_sha256": "a9770dec360be9b6ef23c57f12b53cbf24a25b82a318f7f142ead530b65e35f7", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/a9770dec360be9b6ef23c57f12b53cbf24a25b82a318f7f142ead530b65e35f7.json" + "artifact_sha256": "4babace1053c7b8446b682ce2db17a220263e669b397a414d98ead9d47af459a", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/4babace1053c7b8446b682ce2db17a220263e669b397a414d98ead9d47af459a.json" }, { "uri": "https://id.registrystack.org/schemas/breg/proposals-explanation/proposals-explanation.v1alpha1.schema.json", @@ -659,7 +821,7 @@ "source": "src/artifacts/sha256/809cf2a9a47ab9ba73dd108671963982724f8c9852f5c3ff904496704d0c8357.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "products/breg/contracts/explain/ProposalsExplanation.schema.json", "sha256": "809cf2a9a47ab9ba73dd108671963982724f8c9852f5c3ff904496704d0c8357" }, @@ -695,7 +857,7 @@ "source": "src/artifacts/sha256/c30a70ce60b1946e6eb3cd0ebf1267841c97be81115f61e0bbf713262bfd59a3.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "products/breg/contracts/explain/QueriesExplanation.schema.json", "sha256": "c30a70ce60b1946e6eb3cd0ebf1267841c97be81115f61e0bbf713262bfd59a3" }, @@ -713,7 +875,7 @@ "source": "src/artifacts/sha256/1c547522ee09c598590eaa302615aaabb5e5628516f85f2f5558989af25210b1.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg-review/src/schema.rs", "sha256": "88a916f23e3a50eb7f392a708ce6b089ffbb51b98e5cf102eccfc2e753da8814" }, @@ -749,7 +911,7 @@ "source": "src/artifacts/sha256/1d26b2aee434f0e83ef227e9a502912e72f4ce60510852db5b9d6be1554a6f83.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "products/breg/contracts/explain/RoutesExplanation.schema.json", "sha256": "1d26b2aee434f0e83ef227e9a502912e72f4ce60510852db5b9d6be1554a6f83" }, @@ -764,15 +926,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "breg", - "source": "src/artifacts/sha256/3b486d00ae22ddc2cf42d40e5fba33a9de5c2c4ae110ab6a899b16e1261b51c9.json", + "source": "src/artifacts/sha256/55959ae4cc86f1cd393cca382d7cdfd367ccc703c8676a350af4299b59ebb043.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-breg/src/schema.rs", - "sha256": "c416a52a4fc41b2d5f371e08182cb9dd0671d90601adc8f87900688d470f3e52" + "sha256": "72890db9bee57302bf2dcca70dd6629c24bcd9634414fc507e218fd52daed9f9" }, - "artifact_sha256": "3b486d00ae22ddc2cf42d40e5fba33a9de5c2c4ae110ab6a899b16e1261b51c9", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/3b486d00ae22ddc2cf42d40e5fba33a9de5c2c4ae110ab6a899b16e1261b51c9.json" + "artifact_sha256": "55959ae4cc86f1cd393cca382d7cdfd367ccc703c8676a350af4299b59ebb043", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/55959ae4cc86f1cd393cca382d7cdfd367ccc703c8676a350af4299b59ebb043.json" }, { "uri": "https://id.registrystack.org/schemas/breg/schema-test-credentials/schema-test-credentials.v1.schema.json", @@ -785,7 +947,7 @@ "source": "src/artifacts/sha256/598f916ebbe176797484afdd5d55165e6567d39bd0094b6876e5419908e0b78c.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-bregctl/src/tool_schema.rs", "sha256": "28567d54120dd29d734ddcd3e10c4c6ee128eb7b2d195e4c77bd1cd6c9bc5cfd" }, @@ -872,15 +1034,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "casework", - "source": "src/artifacts/sha256/d212936fbb1c87e69b470c1616f7417ab413c8b757ebc62eaeec30995ea92ca3.json", + "source": "src/artifacts/sha256/2481544f84d61d0bd21ba44e31e7bdefcbf9e10b12d3b103fc100ebead1e346e.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-caseworkctl/src/schema.rs", - "sha256": "0410eb375ae9cb9ada7e7cd81bdb897b0843de84972dea876c70d3851c5b76c2" + "sha256": "4f5378799ebb3a0f65b82eff6f654d8323679bf147214eb68c821bbd6c94733a" }, - "artifact_sha256": "d212936fbb1c87e69b470c1616f7417ab413c8b757ebc62eaeec30995ea92ca3", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/d212936fbb1c87e69b470c1616f7417ab413c8b757ebc62eaeec30995ea92ca3.json" + "artifact_sha256": "2481544f84d61d0bd21ba44e31e7bdefcbf9e10b12d3b103fc100ebead1e346e", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/2481544f84d61d0bd21ba44e31e7bdefcbf9e10b12d3b103fc100ebead1e346e.json" }, { "uri": "https://id.registrystack.org/schemas/casework/dev-events-report/dev-events-report.v1alpha3.schema.json", @@ -1019,7 +1181,7 @@ "source": "src/artifacts/sha256/b9158ab194325cbd1a807922d07d35f4616eff823d9b1c76892e73f330443cdd.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework-core/src/schema.rs", "sha256": "1604cf79433172ea4553b2f56365ea9e999a515aa3f16d60959cc652972ae185" }, @@ -1037,7 +1199,7 @@ "source": "src/artifacts/sha256/7131a57da2c495a5f2142ab5e682e6b95cfda65a2e60d743c15c5c0c00b175dd.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework-core/src/schema.rs", "sha256": "1604cf79433172ea4553b2f56365ea9e999a515aa3f16d60959cc652972ae185" }, @@ -1127,7 +1289,7 @@ "source": "src/artifacts/sha256/618dd00144eced267ce239c8412381a555e488af08cb7d6936e63dd963463b0a.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework-core/src/schema.rs", "sha256": "1604cf79433172ea4553b2f56365ea9e999a515aa3f16d60959cc652972ae185" }, @@ -1160,15 +1322,15 @@ "status": "active", "compatibility_line": "v1alpha2", "owner": "casework", - "source": "src/artifacts/sha256/158d1cb317dcc9bbee833684aefff09f215c066ee2f03d61f980088f5c52fc10.json", + "source": "src/artifacts/sha256/9d026bf36a11bc83493f835f028ff52092e0f6c4cd42b471024ead336b6d8a9e.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "products/casework/scripts/generate_cli_schemas.py", "sha256": "1af0958150a6476245c5019f6bc55ae2b3fbe87e88b43900bb75cac4786f0674" }, - "artifact_sha256": "158d1cb317dcc9bbee833684aefff09f215c066ee2f03d61f980088f5c52fc10", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/158d1cb317dcc9bbee833684aefff09f215c066ee2f03d61f980088f5c52fc10.json" + "artifact_sha256": "9d026bf36a11bc83493f835f028ff52092e0f6c4cd42b471024ead336b6d8a9e", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/9d026bf36a11bc83493f835f028ff52092e0f6c4cd42b471024ead336b6d8a9e.json" }, { "uri": "https://id.registrystack.org/schemas/casework/retention-erase-report/retention-erase-report.v1alpha3.schema.json", @@ -1196,15 +1358,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "casework", - "source": "src/artifacts/sha256/6c882b720eddc7f0b3bcdb8d6229fd36bbad82c7f96586c8db99370751af9be0.json", + "source": "src/artifacts/sha256/ef82e91c0f0c3366bd62967be8453e90920341c246a6d05f56e4b4b4b8eb85b0.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-casework/src/schema.rs", - "sha256": "0e260ef7b277b4fbc67ee96a4d24f897c5ca05df5ff85a743792d7173ca677e5" + "sha256": "47d65004647fa541fef411bd213072d25a35384d5e48d03f8fdb51e5569e1bf8" }, - "artifact_sha256": "6c882b720eddc7f0b3bcdb8d6229fd36bbad82c7f96586c8db99370751af9be0", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/6c882b720eddc7f0b3bcdb8d6229fd36bbad82c7f96586c8db99370751af9be0.json" + "artifact_sha256": "ef82e91c0f0c3366bd62967be8453e90920341c246a6d05f56e4b4b4b8eb85b0", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/ef82e91c0f0c3366bd62967be8453e90920341c246a6d05f56e4b4b4b8eb85b0.json" }, { "uri": "https://id.registrystack.org/schemas/casework/simulation-report/simulation-report.v1alpha3.schema.json", @@ -1322,15 +1484,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "coordinator", - "source": "src/artifacts/sha256/c95bb112c47134d9ef0bfad1d03be54623be2a6f7ec1f9f2145f98b8622921f0.json", + "source": "src/artifacts/sha256/472c4861ab27a301f077784e63cd06891ef4b73813aab1dd802c567daac70d16.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/authoring.rs", - "sha256": "a7e41c24afb242567c5a0a42b401a103a6e598426df89c9aa26e89902a5de9fb" + "sha256": "ae097b5904283e2c57ae726020a6376fe02b975391df284e67e08e5b3ddaf64c" }, - "artifact_sha256": "c95bb112c47134d9ef0bfad1d03be54623be2a6f7ec1f9f2145f98b8622921f0", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/c95bb112c47134d9ef0bfad1d03be54623be2a6f7ec1f9f2145f98b8622921f0.json" + "artifact_sha256": "472c4861ab27a301f077784e63cd06891ef4b73813aab1dd802c567daac70d16", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/472c4861ab27a301f077784e63cd06891ef4b73813aab1dd802c567daac70d16.json" }, { "uri": "https://id.registrystack.org/schemas/coordinator/runtime/runtime.v1alpha1.schema.json", @@ -1340,15 +1502,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "coordinator", - "source": "src/artifacts/sha256/07807301acfb80f24e627e13c244aa19b30ce8f3b1b5d7f7bbd51a93b84f456f.json", + "source": "src/artifacts/sha256/bbbc49cc6aa19d2b6329db459ac7d5c8635583e2a0ca63f2d75556840a804202.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/runtime.rs", - "sha256": "1dd7411d02e33448098e778908bd775b3e7dec516a2c1c0f42e0aff671946911" + "sha256": "e544e9afbc39d84d18936d8ea1fffd903ebd94121db10d142394fa5d02ec5916" }, - "artifact_sha256": "07807301acfb80f24e627e13c244aa19b30ce8f3b1b5d7f7bbd51a93b84f456f", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/07807301acfb80f24e627e13c244aa19b30ce8f3b1b5d7f7bbd51a93b84f456f.json" + "artifact_sha256": "bbbc49cc6aa19d2b6329db459ac7d5c8635583e2a0ca63f2d75556840a804202", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/bbbc49cc6aa19d2b6329db459ac7d5c8635583e2a0ca63f2d75556840a804202.json" }, { "uri": "https://id.registrystack.org/schemas/coordinator/scenarios/scenarios.v1alpha1.schema.json", @@ -1361,9 +1523,9 @@ "source": "src/artifacts/sha256/e42e044eb828ff7e12f0a199fc95065c04baeadf91773c2d28ba9a1b0252090e.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-coordinator/src/scenarios.rs", - "sha256": "78c0bc562ac7d32104b9b5a8818ff7a7d4c7a1ca737ab39e8f4c688cf6e14f04" + "sha256": "e20158e5382f690d46879161f32b5adda80385767b2c99b6efb11f166d43a394" }, "artifact_sha256": "e42e044eb828ff7e12f0a199fc95065c04baeadf91773c2d28ba9a1b0252090e", "immutable_uri": "https://id.registrystack.org/artifacts/sha256/e42e044eb828ff7e12f0a199fc95065c04baeadf91773c2d28ba9a1b0252090e.json" @@ -1379,7 +1541,7 @@ "source": "src/artifacts/sha256/47cbeecaaa07a52b0af259faff736b4e32e6a0c1ed674634b4cc6815cb369fd4.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "products/discovery/schemas/evidence-mapping.schema.json", "sha256": "47cbeecaaa07a52b0af259faff736b4e32e6a0c1ed674634b4cc6815cb369fd4" }, @@ -1397,7 +1559,7 @@ "source": "src/artifacts/sha256/97014247dcc83bc148d355a5e56ffaf8ab0a522cd0f462c93a97fda19bcb6ffc.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "products/discovery/schemas/index.schema.json", "sha256": "97014247dcc83bc148d355a5e56ffaf8ab0a522cd0f462c93a97fda19bcb6ffc" }, @@ -1415,7 +1577,7 @@ "source": "src/artifacts/sha256/19f90f5a2f87b250dcd54d16fe1810fbea6bdd58e6ec46891e20b3c5110605d5.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "products/discovery/schemas/origins.schema.json", "sha256": "19f90f5a2f87b250dcd54d16fe1810fbea6bdd58e6ec46891e20b3c5110605d5" }, @@ -1433,7 +1595,7 @@ "source": "src/artifacts/sha256/d4c5894f466ce1683e7d0b3db2b86413fa71cb7cea81843d12dc1ccbafd5cff8.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "products/discovery/schemas/runtime.schema.json", "sha256": "d4c5894f466ce1683e7d0b3db2b86413fa71cb7cea81843d12dc1ccbafd5cff8" }, @@ -1451,7 +1613,7 @@ "source": "src/artifacts/sha256/dc7d339a46f7450b1c158e7c5bce237f3c1c5ea54a03c1b3fa3e53cb54a1c4a1.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-documents/src/schema.rs", "sha256": "9d6fc4ae1e652e78cb3de6410e3fb044ea2883e468db99e10bbb7ac4022a4914" }, @@ -1469,7 +1631,7 @@ "source": "src/artifacts/sha256/d341927b2bb9a139cebe16a2edff9acaf6b069c9863b6f6f12108be6e4cd0731.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-documents/src/schema.rs", "sha256": "9d6fc4ae1e652e78cb3de6410e3fb044ea2883e468db99e10bbb7ac4022a4914" }, @@ -1487,7 +1649,7 @@ "source": "src/artifacts/sha256/02988cabcddaa2560bc4efae9d8ad45bbc800fb2be14abfbb59533112e1c892a.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-documents/src/schema.rs", "sha256": "9d6fc4ae1e652e78cb3de6410e3fb044ea2883e468db99e10bbb7ac4022a4914" }, @@ -1505,7 +1667,7 @@ "source": "src/artifacts/sha256/43d58cc3028e7a97f91929625aeff1ec243f937e16ee455de8f3cb1caa4675b7.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-documents/src/schema.rs", "sha256": "9d6fc4ae1e652e78cb3de6410e3fb044ea2883e468db99e10bbb7ac4022a4914" }, @@ -1523,7 +1685,7 @@ "source": "src/artifacts/sha256/8f4833f26187b81d360edb0849313806ecdc55191a2dc1bbad731023130fa873.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-documents/src/schema.rs", "sha256": "9d6fc4ae1e652e78cb3de6410e3fb044ea2883e468db99e10bbb7ac4022a4914" }, @@ -1541,7 +1703,7 @@ "source": "src/artifacts/sha256/5fd729f00c7942e6422b726a75b02d931218c416a1caffdfb7b129fd8ff22c4c.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-evidence-authoring/src/schema.rs", "sha256": "62464b27cb80552652f785f820ed3655cc9d48aa65dba30dcaea5696c5e79f70" }, @@ -1592,16 +1754,16 @@ "status": "active", "compatibility_line": "v1", "owner": "evidence", - "source": "src/artifacts/sha256/97ca7f9e2c530ed09793286128b3b2a145842dce2cab235d8066790da8f746a0.yaml", + "source": "src/artifacts/sha256/2847a56eda9c8b838d28fde619853c36851acc57b094b74ec2665150f1ace8d4.yaml", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "products/evidence/contracts/bundle.schema.yaml", - "sha256": "97ca7f9e2c530ed09793286128b3b2a145842dce2cab235d8066790da8f746a0" + "sha256": "2847a56eda9c8b838d28fde619853c36851acc57b094b74ec2665150f1ace8d4" }, - "artifact_sha256": "97ca7f9e2c530ed09793286128b3b2a145842dce2cab235d8066790da8f746a0", + "artifact_sha256": "2847a56eda9c8b838d28fde619853c36851acc57b094b74ec2665150f1ace8d4", "artifact_media_type": "application/yaml", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/97ca7f9e2c530ed09793286128b3b2a145842dce2cab235d8066790da8f746a0.yaml" + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/2847a56eda9c8b838d28fde619853c36851acc57b094b74ec2665150f1ace8d4.yaml" }, { "uri": "https://id.registrystack.org/schemas/evidence/client-contracts/client-contracts.v1.schema.json", @@ -1614,7 +1776,7 @@ "source": "src/artifacts/sha256/777f3b0aaf8129b9beacba85c188dce0b7aa841fe459c9ee517253eb49c7dc53.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-evidence-client/src/schema.rs", "sha256": "b28e799ebc6f2da79fb99e53af3b117aef9bc6d544a89c9fac1935572d6f0508" }, @@ -1632,7 +1794,7 @@ "source": "src/artifacts/sha256/67cddb577791407b017c46465860c1a1674b45d3b7ed4005a2ea12cea3bb61d5.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-evidence-client/src/schema.rs", "sha256": "b28e799ebc6f2da79fb99e53af3b117aef9bc6d544a89c9fac1935572d6f0508" }, @@ -1650,9 +1812,9 @@ "source": "src/artifacts/sha256/b131ade304b8fa1e4afbf5ab8be445d72f8117d75cf996a00d9d20d774575ea1.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-evidence/src/schema.rs", - "sha256": "42c9e8cde198b83a32ac493c7723de6a97af4a4b7300a2b4c12a6dd25642ee41" + "sha256": "c598415dc0abd9f1cb985c9bda305aaf6d926ed286732ff5428bda8dc3469b79" }, "artifact_sha256": "b131ade304b8fa1e4afbf5ab8be445d72f8117d75cf996a00d9d20d774575ea1", "immutable_uri": "https://id.registrystack.org/artifacts/sha256/b131ade304b8fa1e4afbf5ab8be445d72f8117d75cf996a00d9d20d774575ea1.json" @@ -1665,15 +1827,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "evidence", - "source": "src/artifacts/sha256/dfd68c8242ca73530057a7b473d668b9904e5a947fceaa80badff7647f127d50.json", + "source": "src/artifacts/sha256/912661673c41c1119a8bd83809c66cc2d38b16e171c963b4988175c74f627664.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-evidence/src/schema.rs", - "sha256": "42c9e8cde198b83a32ac493c7723de6a97af4a4b7300a2b4c12a6dd25642ee41" + "sha256": "c598415dc0abd9f1cb985c9bda305aaf6d926ed286732ff5428bda8dc3469b79" }, - "artifact_sha256": "dfd68c8242ca73530057a7b473d668b9904e5a947fceaa80badff7647f127d50", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/dfd68c8242ca73530057a7b473d668b9904e5a947fceaa80badff7647f127d50.json" + "artifact_sha256": "912661673c41c1119a8bd83809c66cc2d38b16e171c963b4988175c74f627664", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/912661673c41c1119a8bd83809c66cc2d38b16e171c963b4988175c74f627664.json" }, { "uri": "https://id.registrystack.org/schemas/evidence/holder-bound-verification-policy/holder-bound-verification-policy.v1.schema.json", @@ -1686,7 +1848,7 @@ "source": "src/artifacts/sha256/37d6a662a61c9a5730be870e1d202209d0bebeb658968f978f317bb8995c1cb5.yaml", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "products/evidence/contracts/holder-bound-verification-policy.schema.yaml", "sha256": "37d6a662a61c9a5730be870e1d202209d0bebeb658968f978f317bb8995c1cb5" }, @@ -1705,7 +1867,7 @@ "source": "src/artifacts/sha256/761a6a1300c328344666ebacdb7c811deefd80ed293e9bc4c0adea3cd435b9c5.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-evidence-authoring/src/schema.rs", "sha256": "62464b27cb80552652f785f820ed3655cc9d48aa65dba30dcaea5696c5e79f70" }, @@ -1723,7 +1885,7 @@ "source": "src/artifacts/sha256/701ee38be07cd80d8fd73a393abfb243511d3accd7a34124893c39781d883191.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-evidence-oid4vci/src/schema.rs", "sha256": "0cc005a1e55672ce3a11ad5fd0c4e714155ec6e4b003328bd025a88d29d455b3" }, @@ -1738,15 +1900,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "evidence", - "source": "src/artifacts/sha256/3c8a56419f2b6a011463736e94f99c868f78636325dd8d34b3b70c0c693a65f1.json", + "source": "src/artifacts/sha256/62c45846105e0231417e0450568a899ea05f78f41250b450353c074407cc5f26.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-evidence-authoring/src/schema.rs", "sha256": "62464b27cb80552652f785f820ed3655cc9d48aa65dba30dcaea5696c5e79f70" }, - "artifact_sha256": "3c8a56419f2b6a011463736e94f99c868f78636325dd8d34b3b70c0c693a65f1", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/3c8a56419f2b6a011463736e94f99c868f78636325dd8d34b3b70c0c693a65f1.json" + "artifact_sha256": "62c45846105e0231417e0450568a899ea05f78f41250b450353c074407cc5f26", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/62c45846105e0231417e0450568a899ea05f78f41250b450353c074407cc5f26.json" }, { "uri": "https://id.registrystack.org/schemas/evidence/question/question.v1alpha1.schema.json", @@ -1774,16 +1936,16 @@ "status": "active", "compatibility_line": "v1", "owner": "evidence", - "source": "src/artifacts/sha256/1d1ef718bebe3d3deba5fd434579f32a05bb92e87836137e7b729f3fa4c26b4c.yaml", + "source": "src/artifacts/sha256/fd4ef085ef94087f5fa6d846a284957345d5463df44372c5667ea1a8cf643d0d.yaml", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "products/evidence/contracts/runtime.schema.yaml", - "sha256": "1d1ef718bebe3d3deba5fd434579f32a05bb92e87836137e7b729f3fa4c26b4c" + "sha256": "fd4ef085ef94087f5fa6d846a284957345d5463df44372c5667ea1a8cf643d0d" }, - "artifact_sha256": "1d1ef718bebe3d3deba5fd434579f32a05bb92e87836137e7b729f3fa4c26b4c", + "artifact_sha256": "fd4ef085ef94087f5fa6d846a284957345d5463df44372c5667ea1a8cf643d0d", "artifact_media_type": "application/yaml", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/1d1ef718bebe3d3deba5fd434579f32a05bb92e87836137e7b729f3fa4c26b4c.yaml" + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/fd4ef085ef94087f5fa6d846a284957345d5463df44372c5667ea1a8cf643d0d.yaml" }, { "uri": "https://id.registrystack.org/schemas/evidence/selector/selector.v1alpha1.schema.json", @@ -1814,7 +1976,7 @@ "source": "src/artifacts/sha256/8ebfd8d54b92be742595c6bc1d4a71a570ae04ab80e85d0d276522f0967ab7bf.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-evidence-authoring/src/schema.rs", "sha256": "62464b27cb80552652f785f820ed3655cc9d48aa65dba30dcaea5696c5e79f70" }, @@ -1850,7 +2012,7 @@ "source": "src/artifacts/sha256/a1bab27c4778502d75e2041b7d38dd0dc9cfffaa91d52625813b16cf694b9b22.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-evidence-authoring/src/schema.rs", "sha256": "62464b27cb80552652f785f820ed3655cc9d48aa65dba30dcaea5696c5e79f70" }, @@ -1901,15 +2063,15 @@ "status": "active", "compatibility_line": "v1alpha1", "owner": "evidence", - "source": "src/artifacts/sha256/fc7898b8be0e7ac26fd46a4624d37854f4df52eb4a372dac2e6cbc0575b3aed3.json", + "source": "src/artifacts/sha256/bb19696ad1cf4f6c89de72d1b50da9f8897761cd15066c4281500836306ea09e.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-evidence-authoring/src/schema.rs", "sha256": "62464b27cb80552652f785f820ed3655cc9d48aa65dba30dcaea5696c5e79f70" }, - "artifact_sha256": "fc7898b8be0e7ac26fd46a4624d37854f4df52eb4a372dac2e6cbc0575b3aed3", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/fc7898b8be0e7ac26fd46a4624d37854f4df52eb4a372dac2e6cbc0575b3aed3.json" + "artifact_sha256": "bb19696ad1cf4f6c89de72d1b50da9f8897761cd15066c4281500836306ea09e", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/bb19696ad1cf4f6c89de72d1b50da9f8897761cd15066c4281500836306ea09e.json" }, { "uri": "https://id.registrystack.org/schemas/evidence/verification-policy/verification-policy.v1.schema.json", @@ -1922,7 +2084,7 @@ "source": "src/artifacts/sha256/b6a7e7200bf014a4b31dd064aa39bcbdb60fb624ef8c305f4c3431958b47bb12.yaml", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "products/evidence/contracts/verification-policy.schema.yaml", "sha256": "b6a7e7200bf014a4b31dd064aa39bcbdb60fb624ef8c305f4c3431958b47bb12" }, @@ -1941,7 +2103,7 @@ "source": "src/artifacts/sha256/e45632976b2436dc468805b78e6ac35d4cb05340b260370d011eee68fcf28c5d.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "products/identifiers/contracts/catalog.v1.schema.json", "sha256": "e45632976b2436dc468805b78e6ac35d4cb05340b260370d011eee68fcf28c5d" }, @@ -1959,7 +2121,7 @@ "source": "src/artifacts/sha256/b68362a53e0abd42941a79dc6bd280538a5510c9046dc8fb53cbdd29be3d898e.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-manifest-cli/src/schema.rs", "sha256": "19d037ee50b143b70576b4ce50808883e0ccb831373f72d42beed770a67d8eae" }, @@ -1977,7 +2139,7 @@ "source": "src/artifacts/sha256/f8e367082254b713f8347ccb9055d7ac527ddef43b06b33239f8d81d0ed11012.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-manifest-cli/src/schema.rs", "sha256": "19d037ee50b143b70576b4ce50808883e0ccb831373f72d42beed770a67d8eae" }, @@ -1995,7 +2157,7 @@ "source": "src/artifacts/sha256/af3c4d9d5e6da2a07c2d26fc9a06f7bdb3358f6145c54b25d7a045d3066c09e6.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-messaging/src/schema.rs", "sha256": "566657f59c1c8bb5059c0e0e2faa499f559a6fe905d1d8b1aba2eff781f62a09" }, @@ -2013,7 +2175,7 @@ "source": "src/artifacts/sha256/06439b2e8b23831f90676f4103605a1fc7e79e34f9e8935023cf173e122934de.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-messaging/src/schema.rs", "sha256": "566657f59c1c8bb5059c0e0e2faa499f559a6fe905d1d8b1aba2eff781f62a09" }, @@ -2031,7 +2193,7 @@ "source": "src/artifacts/sha256/d2c4ef5c2ca281c720117c95c5b136be7353d1da70a99f9c9455dd6b94dcae7b.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-messaging/src/schema.rs", "sha256": "566657f59c1c8bb5059c0e0e2faa499f559a6fe905d1d8b1aba2eff781f62a09" }, @@ -2049,7 +2211,7 @@ "source": "src/artifacts/sha256/5d99a71fc7fb00d3d4f6f4ffc4f6399570e60497e53a080cd571fc0ef3bd0d42.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-messaging/src/schema.rs", "sha256": "566657f59c1c8bb5059c0e0e2faa499f559a6fe905d1d8b1aba2eff781f62a09" }, @@ -2067,7 +2229,7 @@ "source": "src/artifacts/sha256/3fa0953ce1c3effc0a35c61e5c93d484d5b948e5f64478999c6ea671e588b3d1.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-platform-yaml/src/check_acceptances.rs", "sha256": "9f01dd394d730e590710e430baf1928ee3e02bb52c1d3ab53b41e447ac692fd2" }, @@ -2085,7 +2247,7 @@ "source": "src/artifacts/sha256/c0ceb9cbec8393e03e125d10b4d512107bc120c7b5d31398cfd9256c78a49aee.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-cli-api/src/schema.rs", "sha256": "78e2cceb547c9691ee7636d8d3527aebde5a54570fa69c2fbced8b3583f561b1" }, @@ -2103,13 +2265,31 @@ "source": "src/artifacts/sha256/5ea2b8f0276de7b574efc392e72672179ce8e1ccea923dc62f10cbb115274099.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "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/mcp-runtime/mcp-runtime.v1alpha1.schema.json", + "title": "Registry Stack configurable MCP gateway runtime configuration", + "description": "Configurable Registry Stack MCP gateway runtime configuration JSON Schema.", + "kind": "schema", + "status": "active", + "compatibility_line": "v1alpha1", + "owner": "platform", + "source": "src/artifacts/sha256/28757cb955ea96d628ff2442cc9dd7ce4f11998edada848a834ef9dfbc3c5c3e.json", + "source_reference": { + "repository": "registry-stack", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", + "path": "crates/registry-mcp/src/schema.rs", + "sha256": "92b053026e128997664c3981e09347cb4d2f1bd1c34dd96f646db0b37bdb4d7c" + }, + "artifact_sha256": "28757cb955ea96d628ff2442cc9dd7ce4f11998edada848a834ef9dfbc3c5c3e", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/28757cb955ea96d628ff2442cc9dd7ce4f11998edada848a834ef9dfbc3c5c3e.json" + }, { "uri": "https://id.registrystack.org/schemas/platform/task-connection/task-connection.v1alpha1.schema.json", "title": "Registry Stack task connection", @@ -2121,7 +2301,7 @@ "source": "src/artifacts/sha256/706e5506bf8bb44d7717ff00e841af2f862502437f3502c3eeadde91a0465030.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-thunderid-tooling/src/schema.rs", "sha256": "a0d71d083c0502cd9f9805451c1f80a1f0cf5623df094886cb1a6a140ce8bfe0" }, @@ -2136,15 +2316,15 @@ "status": "active", "compatibility_line": "v1", "owner": "registry-record", - "source": "src/artifacts/sha256/31cae7de9e84904e300d0d77ffbfdfc7a1de6127719a0ccbb3f6a88d7306510e.json", + "source": "src/artifacts/sha256/e9ddb96d7b521da29b033353ffa854e2e003b1c952f9aad847b30ed1e3b8cf2a.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "products/registry-record/schema/registry-record-v1.schema.json", - "sha256": "31cae7de9e84904e300d0d77ffbfdfc7a1de6127719a0ccbb3f6a88d7306510e" + "sha256": "e9ddb96d7b521da29b033353ffa854e2e003b1c952f9aad847b30ed1e3b8cf2a" }, - "artifact_sha256": "31cae7de9e84904e300d0d77ffbfdfc7a1de6127719a0ccbb3f6a88d7306510e", - "immutable_uri": "https://id.registrystack.org/artifacts/sha256/31cae7de9e84904e300d0d77ffbfdfc7a1de6127719a0ccbb3f6a88d7306510e.json" + "artifact_sha256": "e9ddb96d7b521da29b033353ffa854e2e003b1c952f9aad847b30ed1e3b8cf2a", + "immutable_uri": "https://id.registrystack.org/artifacts/sha256/e9ddb96d7b521da29b033353ffa854e2e003b1c952f9aad847b30ed1e3b8cf2a.json" }, { "uri": "https://id.registrystack.org/schemas/registry-relay/aggregate-result/v1.json", @@ -2265,7 +2445,7 @@ "source": "src/artifacts/sha256/48c416e7a409cde355bb7e7a1a1bd8eac6248e65867fd76b55b777d4b6e335d2.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-render/src/schema.rs", "sha256": "187b3c8a7cb457962a2cadc80432af5c81124641ca356f539f634a5c2403a309" }, @@ -2283,7 +2463,7 @@ "source": "src/artifacts/sha256/f511f546980251198954678790b986a5aa2cb4f037bd463f20531b8c9736d28b.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-render/src/schema.rs", "sha256": "187b3c8a7cb457962a2cadc80432af5c81124641ca356f539f634a5c2403a309" }, @@ -2301,7 +2481,7 @@ "source": "src/artifacts/sha256/e853c774b697a8debb56537eb3a14c4e8c32f9fa8771eba1cd05eb397505b3c6.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-render/src/schema.rs", "sha256": "187b3c8a7cb457962a2cadc80432af5c81124641ca356f539f634a5c2403a309" }, @@ -2319,7 +2499,7 @@ "source": "src/artifacts/sha256/dbb4bea390c11e37fee5840aef5eab34e39a4f5d34bb72354fcf38f041bbb974.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/schema.rs", "sha256": "7b0439b0479c783a02f1a2b4bd0633fe8440b8b015ca7c8978668f5a988ca1cc" }, @@ -2337,7 +2517,7 @@ "source": "src/artifacts/sha256/1cb82ae0e7ec13bf7d54b109546a4d68cb2b3b031868941728dba209bea8bf21.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/schema.rs", "sha256": "7b0439b0479c783a02f1a2b4bd0633fe8440b8b015ca7c8978668f5a988ca1cc" }, @@ -2355,7 +2535,7 @@ "source": "src/artifacts/sha256/77ab388672f3d58275b278a94ebdddcf24828565af707f6720646cf1e09608e8.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling-core/src/schema.rs", "sha256": "7b0439b0479c783a02f1a2b4bd0633fe8440b8b015ca7c8978668f5a988ca1cc" }, @@ -2373,7 +2553,7 @@ "source": "src/artifacts/sha256/eaf6f80ebeb9ebb3896982b2b334a1926e30fca4d62615c368d4b69e9c3366af.json", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "crates/registry-scheduling/src/schema.rs", "sha256": "72c9a636e83d70101ef7110c0da9cd257cb8b3789f6df27910890eabbf8ae990" }, diff --git a/src/catalogs/vocabularies.json b/src/catalogs/vocabularies.json index 01aeb74ca..f73205477 100644 --- a/src/catalogs/vocabularies.json +++ b/src/catalogs/vocabularies.json @@ -1,5 +1,20 @@ { "entries": [ + { + "uri": "https://id.registrystack.org/vocab/breg-odrl/", + "title": "BReg partial read-policy vocabulary", + "description": "Experimental BReg ODRL constraint and projection terms, defined by the shipped read-policy export profile.", + "kind": "vocabulary", + "status": "active", + "compatibility_line": "v1", + "owner": "breg", + "source_reference": { + "repository": "registry-stack", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", + "path": "products/breg/contracts/odrl-profile.jsonld", + "sha256": "24d0950eb2c1a76d5005850e1145f675ad65df5231867907b41d11fdd2979cdc" + } + }, { "uri": "https://id.registrystack.org/vocab/core/", "title": "Registry Relay core vocabulary", @@ -40,9 +55,9 @@ "owner": "registry-record", "source_reference": { "repository": "registry-stack", - "commit": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "path": "products/registry-record/context/registry-record-v1.jsonld", - "sha256": "9b8bf452538214d8559b4e8034446bfade37b5f409cfeaaace650a567423be71" + "sha256": "c336506f4dcd7e266155e8cd1ff9710766bc240f395e27b0480b2e193e74e2ee" } } ] diff --git a/src/upstream/catalog.v1.json b/src/upstream/catalog.v1.json index 8d3e2c1f4..201969ea9 100644 --- a/src/upstream/catalog.v1.json +++ b/src/upstream/catalog.v1.json @@ -12,11 +12,11 @@ "description": "Governed JSON-LD terms for the Registry Record v1 base response profile.", "source": { "path": "products/registry-record/profile/registry-record-v1.md", - "sha256": "f165e62044df2129b5cc533d3199cf81ae23d263617f39437ee37be87d3b37fe" + "sha256": "c8685157d8e2982b00657a2a3b2fe729cf54792d76134cf22aa1be1cc7abf4a8" }, "artifact": { "path": "products/registry-record/context/registry-record-v1.jsonld", - "sha256": "9b8bf452538214d8559b4e8034446bfade37b5f409cfeaaace650a567423be71", + "sha256": "c336506f4dcd7e266155e8cd1ff9710766bc240f395e27b0480b2e193e74e2ee", "mediaType": "application/ld+json" } }, @@ -48,7 +48,7 @@ "description": "JSON-LD namespace for Registry Manifest terms.", "source": { "path": "crates/registry-manifest-core/src/lib.rs", - "sha256": "e1d4b066f89f5df821aa348bc86e62145593798a7433fc3120ce13914900559f" + "sha256": "707b3d0306d9eab8e4f8148310482ceff7912368c50b147931dceafe54dadc74" } }, { @@ -61,7 +61,7 @@ "description": "The declared Evidence dependency could not be accepted.", "source": { "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" }, "problem": { "code": "action.evidence_failed", @@ -80,7 +80,7 @@ "description": "The action guard was not satisfied.", "source": { "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" }, "problem": { "code": "action.guard_failed", @@ -99,7 +99,7 @@ "description": "The action handler could not produce an accepted result.", "source": { "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" }, "problem": { "code": "action.handler_failed", @@ -118,7 +118,7 @@ "description": "The action was refused by a declared business rule.", "source": { "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" }, "problem": { "code": "action.refused", @@ -137,7 +137,7 @@ "description": "The bearer credential is missing or refused.", "source": { "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" }, "problem": { "code": "authentication.refused", @@ -156,7 +156,7 @@ "description": "The held response of the idempotency key expired; the key stays spent.", "source": { "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" }, "problem": { "code": "idempotency.expired", @@ -175,7 +175,7 @@ "description": "The idempotency key is bound to another request.", "source": { "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" }, "problem": { "code": "idempotency.key-reused", @@ -194,7 +194,7 @@ "description": "The chunk does not match the expected next chunk.", "source": { "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" }, "problem": { "code": "ingestion.chunk_mismatch", @@ -213,7 +213,7 @@ "description": "The selected access profile does not match the run's bound profile.", "source": { "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" }, "problem": { "code": "ingestion.profile_mismatch", @@ -232,7 +232,7 @@ "description": "The stored receipt of the chunk was erased.", "source": { "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" }, "problem": { "code": "ingestion.receipt_erased", @@ -251,7 +251,7 @@ "description": "The ingestion run is blocked and refuses further chunks.", "source": { "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" }, "problem": { "code": "ingestion.run_blocked", @@ -270,7 +270,7 @@ "description": "The ingestion run is not open for this transition.", "source": { "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" }, "problem": { "code": "ingestion.run_not_open", @@ -289,7 +289,7 @@ "description": "The lookup did not resolve exactly one record.", "source": { "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" }, "problem": { "code": "lookup.unresolved", @@ -308,7 +308,7 @@ "description": "The mutation conflicts with current state.", "source": { "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" }, "problem": { "code": "mutation.conflict", @@ -327,7 +327,7 @@ "description": "The mutation precondition failed.", "source": { "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" }, "problem": { "code": "precondition.failed", @@ -346,7 +346,7 @@ "description": "The mutation precondition is required.", "source": { "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" }, "problem": { "code": "precondition.required", @@ -365,7 +365,7 @@ "description": "The review rejected this Proposal, and a rejection is final. A review result of changes-requested is what lets a Proposal be revised for another attempt.", "source": { "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" }, "problem": { "code": "proposal.rejected", @@ -384,7 +384,7 @@ "description": "The current review result does not match the retained approval.", "source": { "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" }, "problem": { "code": "proposal.review_result_mismatch", @@ -403,7 +403,7 @@ "description": "The review result and application receipt of the submission are no longer retained.", "source": { "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" }, "problem": { "code": "proposal.submission_expired", @@ -422,7 +422,7 @@ "description": "The query cursor is invalid.", "source": { "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" }, "problem": { "code": "query.cursor_invalid", @@ -441,7 +441,7 @@ "description": "The query request is invalid.", "source": { "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" }, "problem": { "code": "query.invalid", @@ -460,7 +460,7 @@ "description": "The request is invalid.", "source": { "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" }, "problem": { "code": "request.invalid", @@ -479,7 +479,7 @@ "description": "The request timed out.", "source": { "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" }, "problem": { "code": "request.timeout", @@ -498,7 +498,7 @@ "description": "The requested resource was not found.", "source": { "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" }, "problem": { "code": "resource.not_found", @@ -517,7 +517,7 @@ "description": "The Registry field-encryption service is unavailable.", "source": { "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" }, "problem": { "code": "runtime.field_encryption.unavailable", @@ -536,7 +536,7 @@ "description": "Registry runtime is not ready.", "source": { "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" }, "problem": { "code": "runtime.not_ready", @@ -555,7 +555,7 @@ "description": "The Registry mutation service is unavailable.", "source": { "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" }, "problem": { "code": "service.unavailable", @@ -574,7 +574,7 @@ "description": "The Registry data service is unavailable.", "source": { "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" }, "problem": { "code": "source.unavailable", @@ -593,7 +593,7 @@ "description": "A statistical dataset contains a code outside its declared domain.", "source": { "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" }, "problem": { "code": "statistical_dataset.domain_violation", @@ -612,7 +612,7 @@ "description": "The statistical dataset release operation is not eligible.", "source": { "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" }, "problem": { "code": "statistical_dataset.release_refused", @@ -631,7 +631,7 @@ "description": "The statistical dataset computation was superseded or its package changed.", "source": { "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" }, "problem": { "code": "statistical_dataset.version_conflict", @@ -650,7 +650,7 @@ "description": "The statistical dataset version was withdrawn.", "source": { "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" }, "problem": { "code": "statistical_dataset.version_withdrawn", @@ -669,7 +669,7 @@ "description": "The request media type is not supported.", "source": { "path": "crates/registry-breg/src/problem.rs", - "sha256": "55e1743252f34c0fa9e5211c1cda059e8f08fe41d85857ebe82fd718cdeab6ef" + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" }, "problem": { "code": "unsupported.media_type", @@ -678,6 +678,25 @@ ] } }, + { + "uri": "https://id.registrystack.org/problems/registry-breg/write/outside-boundary", + "kind": "problem", + "status": "active", + "compatibilityLine": "v1alpha1", + "owner": "breg", + "title": "Forbidden", + "description": "The resulting record falls outside the selected access profile's row boundary.", + "source": { + "path": "crates/registry-breg/src/problem.rs", + "sha256": "ea3600e7289468a622df039523b4a9c6c52829ed8bec6bf3cc0ab8026ce91a20" + }, + "problem": { + "code": "write.outside-boundary", + "httpStatuses": [ + 403 + ] + } + }, { "uri": "https://id.registrystack.org/problems/registry-casework/absence/cover-cycle", "kind": "problem", @@ -688,7 +707,7 @@ "description": "Choose cover assignments that do not return to an earlier person during a shared period.", "source": { "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" }, "problem": { "code": "absence.cover-cycle", @@ -707,7 +726,7 @@ "description": "Set until later than from.", "source": { "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" }, "problem": { "code": "absence.invalid-period", @@ -726,7 +745,7 @@ "description": "Adjust the period so this person has no overlapping absence.", "source": { "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" }, "problem": { "code": "absence.overlap", @@ -745,7 +764,7 @@ "description": "Choose a different staff member as cover.", "source": { "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" }, "problem": { "code": "absence.self-cover", @@ -764,7 +783,7 @@ "description": "The bearer credential is missing, invalid, or expired. Sign in again.", "source": { "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" }, "problem": { "code": "authentication.refused", @@ -783,7 +802,7 @@ "description": "Create a new recompute preview and review it before applying.", "source": { "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" }, "problem": { "code": "clock.recompute-preview-expired", @@ -802,7 +821,7 @@ "description": "This cursor has expired. Start again without a cursor and deduplicate entries by eventId.", "source": { "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" }, "problem": { "code": "cursor.expired", @@ -821,7 +840,7 @@ "description": "The cursor is invalid for this request.", "source": { "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" }, "problem": { "code": "cursor.invalid", @@ -840,7 +859,7 @@ "description": "The stored response for this idempotency key has expired. Reconcile the original operation before choosing a new key.", "source": { "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" }, "problem": { "code": "idempotency.expired", @@ -859,7 +878,7 @@ "description": "This idempotency key was used for a different request.", "source": { "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" }, "problem": { "code": "idempotency.key-reused", @@ -878,7 +897,7 @@ "description": "Your current Casework authority does not allow this operation.", "source": { "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" }, "problem": { "code": "operation.not-authorized", @@ -897,7 +916,7 @@ "description": "The item or directory changed since you loaded it. Reload and try again.", "source": { "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" }, "problem": { "code": "precondition.failed", @@ -916,7 +935,7 @@ "description": "This mutation requires the revision that you loaded.", "source": { "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" }, "problem": { "code": "precondition.required", @@ -935,7 +954,7 @@ "description": "The selected Casework profile does not authorize this request.", "source": { "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" }, "problem": { "code": "profile.not-authorized", @@ -954,7 +973,7 @@ "description": "This action is reserved for a human session.", "source": { "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" }, "problem": { "code": "profile.not-human", @@ -973,7 +992,7 @@ "description": "The request body exceeds the one MiB limit.", "source": { "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" }, "problem": { "code": "request.body-too-large", @@ -992,7 +1011,7 @@ "description": "The Casework request is invalid.", "source": { "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" }, "problem": { "code": "request.invalid", @@ -1011,7 +1030,7 @@ "description": "The limit query parameter must be from 1 to 100, or from 1 to 1000 on the directory absence list. Omit it for the default page size.", "source": { "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" }, "problem": { "code": "request.limit-out-of-range", @@ -1030,7 +1049,7 @@ "description": "This route does not accept that HTTP method.", "source": { "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" }, "problem": { "code": "request.method-not-allowed", @@ -1049,7 +1068,7 @@ "description": "The requested Casework route does not exist.", "source": { "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" }, "problem": { "code": "request.not-found", @@ -1068,7 +1087,7 @@ "description": "The request body does not match the Casework contract.", "source": { "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" }, "problem": { "code": "request.unprocessable", @@ -1087,7 +1106,7 @@ "description": "Send a JSON request body with Content-Type application/json.", "source": { "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" }, "problem": { "code": "request.unsupported-media-type", @@ -1106,7 +1125,7 @@ "description": "Each approval in this stage must be supplied by a different reviewer.", "source": { "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" }, "problem": { "code": "review.distinct-approver-required", @@ -1125,7 +1144,7 @@ "description": "You submitted this request, and this review stage excludes the person who submitted it. Another reviewer must take it.", "source": { "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" }, "problem": { "code": "review.initiator-excluded", @@ -1144,7 +1163,7 @@ "description": "This review policy excludes the person who submitted the request, so the request must name its initiator.", "source": { "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" }, "problem": { "code": "review.initiator-required", @@ -1163,7 +1182,7 @@ "description": "The expected review policy binding does not match the active policy.", "source": { "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" }, "problem": { "code": "review.policy-mismatch", @@ -1182,7 +1201,7 @@ "description": "Narrow the queue or exact subject query to complete it within the configured read budget.", "source": { "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" }, "problem": { "code": "review.query-too-broad", @@ -1201,7 +1220,7 @@ "description": "The retained review result is no longer available. Reconcile through the producer's retained source correlation.", "source": { "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" }, "problem": { "code": "review.result-expired", @@ -1220,7 +1239,7 @@ "description": "The same producer, source subject, version, and policy were already submitted with different canonical content.", "source": { "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" }, "problem": { "code": "review.submission-conflict", @@ -1239,7 +1258,7 @@ "description": "Claim the review task before deciding it, and decide only while the claim remains current.", "source": { "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" }, "problem": { "code": "review.task-not-held", @@ -1258,7 +1277,7 @@ "description": "Casework could not complete the request.", "source": { "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" }, "problem": { "code": "runtime.failure", @@ -1277,7 +1296,7 @@ "description": "Casework storage is unavailable. Try again after the service recovers.", "source": { "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" }, "problem": { "code": "service.unavailable", @@ -1296,7 +1315,7 @@ "description": "Omit the Registry-Source-Profile header for this request.", "source": { "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" }, "problem": { "code": "source-profile.not-applicable", @@ -1315,7 +1334,7 @@ "description": "Send the Registry-Source-Profile header to select the source profile for this request.", "source": { "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" }, "problem": { "code": "source-profile.required", @@ -1334,7 +1353,7 @@ "description": "The source returned a response that does not match its registered contract.", "source": { "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" }, "problem": { "code": "source.bad-gateway", @@ -1353,7 +1372,7 @@ "description": "Deploy the same Registry Stack version for Casework and its source.", "source": { "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" }, "problem": { "code": "source.version-mismatch", @@ -1372,7 +1391,7 @@ "description": "The source did not report its engine version. Deploy matching Registry Stack versions.", "source": { "path": "crates/registry-casework/src/problem.rs", - "sha256": "75ab90463f5a52c121fd0a2afea9fc831d6c3273f3164ac95572c378d535ddba" + "sha256": "8b2aaba85085213b11c8cf01338197b0f78c6a1c1c32a328bcfb9b105b4bd98a" }, "problem": { "code": "source.version-unavailable", @@ -1391,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": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" }, "problem": { "code": "admission.held", @@ -1410,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": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" }, "problem": { "code": "admission.recovery-only", @@ -1429,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": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" }, "problem": { "code": "audit.response-unavailable", @@ -1448,7 +1467,7 @@ "description": "The bearer credential is missing, invalid, or expired.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" }, "problem": { "code": "authentication.refused", @@ -1467,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": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" }, "problem": { "code": "binding.conflict", @@ -1486,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": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" }, "problem": { "code": "binding.live-conflict", @@ -1495,6 +1514,25 @@ ] } }, + { + "uri": "https://id.registrystack.org/problems/registry-coordinator/check/not-waiting", + "kind": "problem", + "status": "active", + "compatibilityLine": "v1alpha1", + "owner": "coordinator", + "title": "Step is not waiting", + "description": "That step is not waiting.", + "source": { + "path": "crates/registry-coordinator/src/problem.rs", + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" + }, + "problem": { + "code": "check.not-waiting", + "httpStatuses": [ + 409 + ] + } + }, { "uri": "https://id.registrystack.org/problems/registry-coordinator/definition/refused", "kind": "problem", @@ -1505,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": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" }, "problem": { "code": "definition.refused", @@ -1524,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": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" }, "problem": { "code": "deployment.activation-changed", @@ -1543,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": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" }, "problem": { "code": "deployment.refused", @@ -1562,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": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" }, "problem": { "code": "evaluation.uncertain", @@ -1581,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": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" }, "problem": { "code": "event.invalid", @@ -1600,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": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" }, "problem": { "code": "event.source-unavailable", @@ -1619,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": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" }, "problem": { "code": "event.too-large", @@ -1638,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": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" }, "problem": { "code": "event.unauthenticated", @@ -1657,7 +1695,7 @@ "description": "Execution is under restore hold until an operator releases it.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" }, "problem": { "code": "execution.held", @@ -1676,7 +1714,7 @@ "description": "Supply an Idempotency-Key header of 1 to 256 bytes.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" }, "problem": { "code": "idempotency.key-invalid", @@ -1695,7 +1733,7 @@ "description": "This idempotency key already started a run with different input.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" }, "problem": { "code": "idempotency.key-reused", @@ -1714,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": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" }, "problem": { "code": "input.invalid", @@ -1733,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": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" }, "problem": { "code": "mutation.uncertain", @@ -1752,7 +1790,7 @@ "description": "The caller's policy does not allow this operation.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" }, "problem": { "code": "operation.not-authorized", @@ -1771,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": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" }, "problem": { "code": "receipt.expired", @@ -1790,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": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" }, "problem": { "code": "reconcile.raced", @@ -1809,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": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" }, "problem": { "code": "reconcile.refused", @@ -1828,7 +1866,7 @@ "description": "The held operation has no original-result lookup.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" }, "problem": { "code": "reconcile.unsupported", @@ -1847,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": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" }, "problem": { "code": "request.body-too-large", @@ -1866,7 +1904,7 @@ "description": "The request could not be read as a Coordinator request.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" }, "problem": { "code": "request.invalid", @@ -1885,7 +1923,7 @@ "description": "The list limit must be between 1 and 100.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" }, "problem": { "code": "request.limit-out-of-range", @@ -1904,7 +1942,7 @@ "description": "The route exists but not for this method.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" }, "problem": { "code": "request.method-not-allowed", @@ -1923,7 +1961,7 @@ "description": "The requested route does not exist.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" }, "problem": { "code": "request.not-found", @@ -1942,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": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" }, "problem": { "code": "request.reason-invalid", @@ -1961,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": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" }, "problem": { "code": "request.retention-invalid", @@ -1980,7 +2018,7 @@ "description": "The request body could not be processed.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" }, "problem": { "code": "request.unprocessable", @@ -1999,7 +2037,7 @@ "description": "The request body is not JSON.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" }, "problem": { "code": "request.unsupported-media-type", @@ -2018,7 +2056,7 @@ "description": "This recovery action requires execution to be under restore hold.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" }, "problem": { "code": "restore.hold-required", @@ -2037,7 +2075,7 @@ "description": "Held work no longer matches its protected definition or prepared command.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" }, "problem": { "code": "restore.lease-incompatible", @@ -2056,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": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" }, "problem": { "code": "restore.review-required", @@ -2075,7 +2113,7 @@ "description": "Held work remains unresolved, so the restore hold cannot be released.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" }, "problem": { "code": "restore.unresolved", @@ -2094,7 +2132,7 @@ "description": "Retry-same applies only to held work before its original deadline.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" }, "problem": { "code": "retry.refused", @@ -2113,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": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" }, "problem": { "code": "run.definition-incompatible", @@ -2132,7 +2170,7 @@ "description": "No run with this identifier is visible to the caller.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" }, "problem": { "code": "run.not-visible", @@ -2151,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": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" }, "problem": { "code": "run.payload-erased", @@ -2170,7 +2208,7 @@ "description": "Coordinator could not complete the request.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" }, "problem": { "code": "runtime.failure", @@ -2189,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": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" }, "problem": { "code": "service.unavailable", @@ -2208,7 +2246,7 @@ "description": "This deployment does not serve the named workflow.", "source": { "path": "crates/registry-coordinator/src/problem.rs", - "sha256": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" }, "problem": { "code": "workflow.not-served", @@ -2227,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": "e2052aba980e8668e68cc8eaf8ca4732c47f2993d5ace90fb8d4d0375c0b2c8a" + "sha256": "035835c5290ab2f174ddc5597eafa9ab0046d2732d8b76049e0003355effe9c6" }, "problem": { "code": "workflow.revision-mismatch", @@ -4098,6 +4136,24 @@ ] } }, + { + "uri": "https://id.registrystack.org/profiles/breg-odrl/v1", + "kind": "profile", + "status": "active", + "compatibilityLine": "v1", + "owner": "breg", + "title": "BReg partial read-policy export profile", + "description": "Experimental ODRL profile for operator review of a conservative subset of configured BReg read permissions.", + "source": { + "path": "products/breg/contracts/odrl-profile.jsonld", + "sha256": "24d0950eb2c1a76d5005850e1145f675ad65df5231867907b41d11fdd2979cdc" + }, + "artifact": { + "path": "products/breg/contracts/odrl-profile.jsonld", + "sha256": "24d0950eb2c1a76d5005850e1145f675ad65df5231867907b41d11fdd2979cdc", + "mediaType": "application/ld+json" + } + }, { "uri": "https://id.registrystack.org/profiles/registry-record/v1", "kind": "profile", @@ -4108,29 +4164,173 @@ "description": "Open base response profile for one Registry record or a homogeneous Registry record collection.", "source": { "path": "products/registry-record/profile/registry-record-v1.md", - "sha256": "f165e62044df2129b5cc533d3199cf81ae23d263617f39437ee37be87d3b37fe" + "sha256": "c8685157d8e2982b00657a2a3b2fe729cf54792d76134cf22aa1be1cc7abf4a8" }, "artifact": { "path": "products/registry-record/profile/registry-record-v1.md", - "sha256": "f165e62044df2129b5cc533d3199cf81ae23d263617f39437ee37be87d3b37fe", + "sha256": "c8685157d8e2982b00657a2a3b2fe729cf54792d76134cf22aa1be1cc7abf4a8", "mediaType": "text/markdown" } }, { - "uri": "https://id.registrystack.org/schemas/breg/access-explanation/access-explanation.v1alpha7.schema.json", + "uri": "https://id.registrystack.org/schemas/adapter/effective-contract/effective-contract.v1alpha1.schema.json", "kind": "schema", "status": "active", - "compatibilityLine": "v1alpha7", + "compatibilityLine": "v1alpha1", + "owner": "adapter", + "title": "Registry Adapter effective contract", + "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" + }, + "artifact": { + "path": "products/adapter/schemas/effective-contract.v1alpha1.schema.json", + "sha256": "5bfd55b2ccee480035ee9db13b8fb3a99ac5a2e9cd01645fdda8dfeb593eb688", + "mediaType": "application/schema+json" + } + }, + { + "uri": "https://id.registrystack.org/schemas/adapter/fixture/fixture.v1alpha1.schema.json", + "kind": "schema", + "status": "active", + "compatibilityLine": "v1alpha1", + "owner": "adapter", + "title": "Registry Adapter fixture suite", + "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" + }, + "artifact": { + "path": "products/adapter/schemas/fixture.v1alpha1.schema.json", + "sha256": "ca14df9aafa49fd2018a12869e54f4058e29de07f01c0cbc0dd13f069649bcc9", + "mediaType": "application/schema+json" + } + }, + { + "uri": "https://id.registrystack.org/schemas/adapter/job-runtime/job-runtime.v1alpha1.schema.json", + "kind": "schema", + "status": "active", + "compatibilityLine": "v1alpha1", + "owner": "adapter", + "title": "Registry Adapter ingestion job runtime configuration", + "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" + }, + "artifact": { + "path": "products/adapter/schemas/job-runtime.v1alpha1.schema.json", + "sha256": "c1be1e7bc8efa01de429ea5a5cd7c19da49d9766d71839602a0e81cecc447d8b", + "mediaType": "application/schema+json" + } + }, + { + "uri": "https://id.registrystack.org/schemas/adapter/job/job.v1alpha1.schema.json", + "kind": "schema", + "status": "active", + "compatibilityLine": "v1alpha1", + "owner": "adapter", + "title": "Registry Adapter ingestion job", + "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" + }, + "artifact": { + "path": "products/adapter/schemas/job.v1alpha1.schema.json", + "sha256": "38818527ae8cf4435485ea3f283af51b41c4d1d1e0e26d04ab3e59c158c150a7", + "mediaType": "application/schema+json" + } + }, + { + "uri": "https://id.registrystack.org/schemas/adapter/pack/pack.v1alpha1.schema.json", + "kind": "schema", + "status": "active", + "compatibilityLine": "v1alpha1", + "owner": "adapter", + "title": "Registry Adapter pack", + "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" + }, + "artifact": { + "path": "products/adapter/schemas/pack.v1alpha1.schema.json", + "sha256": "6031baaabca785fe6e0adfed4336fa555839e18ae1a3136cf3e895ad5e6f6dcb", + "mediaType": "application/schema+json" + } + }, + { + "uri": "https://id.registrystack.org/schemas/adapter/profile/profile.v1alpha1.schema.json", + "kind": "schema", + "status": "active", + "compatibilityLine": "v1alpha1", + "owner": "adapter", + "title": "Registry Adapter facade profile", + "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" + }, + "artifact": { + "path": "products/adapter/schemas/profile.v1alpha1.schema.json", + "sha256": "8032fd67f82f517cade8e55c4d3972bc5481a957b84a4cb70b3f40f82ac970d3", + "mediaType": "application/schema+json" + } + }, + { + "uri": "https://id.registrystack.org/schemas/adapter/project/project.v1alpha1.schema.json", + "kind": "schema", + "status": "active", + "compatibilityLine": "v1alpha1", + "owner": "adapter", + "title": "Registry Adapter project", + "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" + }, + "artifact": { + "path": "products/adapter/schemas/project.v1alpha1.schema.json", + "sha256": "2a31e088e66073cf94b5d3769aebbeef3552cafa59c2281405be83ccd5390435", + "mediaType": "application/schema+json" + } + }, + { + "uri": "https://id.registrystack.org/schemas/adapter/runtime/runtime.v1alpha1.schema.json", + "kind": "schema", + "status": "active", + "compatibilityLine": "v1alpha1", + "owner": "adapter", + "title": "Registry Adapter runtime configuration", + "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" + }, + "artifact": { + "path": "products/adapter/schemas/runtime.v1alpha1.schema.json", + "sha256": "169ce8657f2ab5a3140216b6aeeeaaaf7dfcea0f508364a76de142b93c6a0a14", + "mediaType": "application/schema+json" + } + }, + { + "uri": "https://id.registrystack.org/schemas/breg/access-explanation/access-explanation.v1alpha8.schema.json", + "kind": "schema", + "status": "active", + "compatibilityLine": "v1alpha8", "owner": "breg", "title": "AccessExplanation", "description": "Base Registry Engine bregctl explain output JSON Schemas, written by hand and held to bregctl's output by its contract test.", "source": { "path": "products/breg/contracts/explain/AccessExplanation.schema.json", - "sha256": "868846b864b32a31087c4c2fc8b99ef232151641a7fd848f3bca3d516f284544" + "sha256": "e9bae5707ef92498b162083958fc0af4c1c043e74eec71252259e70bab88b73d" }, "artifact": { "path": "products/breg/contracts/explain/AccessExplanation.schema.json", - "sha256": "868846b864b32a31087c4c2fc8b99ef232151641a7fd848f3bca3d516f284544", + "sha256": "e9bae5707ef92498b162083958fc0af4c1c043e74eec71252259e70bab88b73d", "mediaType": "application/schema+json" } }, @@ -4162,7 +4362,7 @@ "description": "Base Registry Engine portable Action contract export schema, reproduced from the canonical compiled project.", "source": { "path": "crates/registry-breg/src/artifacts.rs", - "sha256": "560911be004e83d591163ea1c4a25f577546decd01b3f3d49fbbe92354c380b3" + "sha256": "8e7e1c82cc1ddb3bc1d41866c812c2ff7d0007d0b57b83422260681ff549e795" }, "artifact": { "path": "products/breg/generated/facility/generated/action-contracts.schema.json", @@ -4346,7 +4546,7 @@ }, "artifact": { "path": "products/breg/generated/tools/migration-descriptor.v1alpha1.schema.json", - "sha256": "100315e48b363b9f32004f472633a0710816abb6dce52129f2f98513dfd0d8ab", + "sha256": "8177563ac1261680db7070b59f8b651d1cfe8c33cb5423891902bab4d5f8173e", "mediaType": "application/schema+json" } }, @@ -4396,11 +4596,11 @@ "description": "Base Registry Engine project authoring JSON Schema.", "source": { "path": "crates/registry-breg/src/schema.rs", - "sha256": "c416a52a4fc41b2d5f371e08182cb9dd0671d90601adc8f87900688d470f3e52" + "sha256": "72890db9bee57302bf2dcca70dd6629c24bcd9634414fc507e218fd52daed9f9" }, "artifact": { "path": "products/breg/generated/authoring/registry-module.schema.json", - "sha256": "9eff8e027f5900d3fd4a1c88b6cae2c9657fcd9e09e3e07706e6bd1a7823e0e3", + "sha256": "9949f5e3a10d4deb0038359d76d1f59b160449472bcd0b6c99e45ad776d20f80", "mediaType": "application/schema+json" } }, @@ -4414,11 +4614,11 @@ "description": "Base Registry Engine project authoring JSON Schema.", "source": { "path": "crates/registry-breg/src/schema.rs", - "sha256": "c416a52a4fc41b2d5f371e08182cb9dd0671d90601adc8f87900688d470f3e52" + "sha256": "72890db9bee57302bf2dcca70dd6629c24bcd9634414fc507e218fd52daed9f9" }, "artifact": { "path": "products/breg/generated/authoring/registry-project.schema.json", - "sha256": "a9770dec360be9b6ef23c57f12b53cbf24a25b82a318f7f142ead530b65e35f7", + "sha256": "4babace1053c7b8446b682ce2db17a220263e669b397a414d98ead9d47af459a", "mediaType": "application/schema+json" } }, @@ -4504,11 +4704,11 @@ "description": "Base Registry Engine runtime configuration JSON Schema.", "source": { "path": "crates/registry-breg/src/schema.rs", - "sha256": "c416a52a4fc41b2d5f371e08182cb9dd0671d90601adc8f87900688d470f3e52" + "sha256": "72890db9bee57302bf2dcca70dd6629c24bcd9634414fc507e218fd52daed9f9" }, "artifact": { "path": "products/breg/generated/runtime/runtime.schema.json", - "sha256": "3b486d00ae22ddc2cf42d40e5fba33a9de5c2c4ae110ab6a899b16e1261b51c9", + "sha256": "55959ae4cc86f1cd393cca382d7cdfd367ccc703c8676a350af4299b59ebb043", "mediaType": "application/schema+json" } }, @@ -4540,11 +4740,11 @@ "description": "Registry Casework development clients JSON Schema.", "source": { "path": "crates/registry-caseworkctl/src/schema.rs", - "sha256": "0410eb375ae9cb9ada7e7cd81bdb897b0843de84972dea876c70d3851c5b76c2" + "sha256": "4f5378799ebb3a0f65b82eff6f654d8323679bf147214eb68c821bbd6c94733a" }, "artifact": { "path": "products/casework/generated/dev-clients/dev-clients.schema.json", - "sha256": "d212936fbb1c87e69b470c1616f7417ab413c8b757ebc62eaeec30995ea92ca3", + "sha256": "2481544f84d61d0bd21ba44e31e7bdefcbf9e10b12d3b103fc100ebead1e346e", "mediaType": "application/schema+json" } }, @@ -4616,7 +4816,7 @@ }, "artifact": { "path": "products/casework/contracts/cli/report.schema.json", - "sha256": "158d1cb317dcc9bbee833684aefff09f215c066ee2f03d61f980088f5c52fc10", + "sha256": "9d026bf36a11bc83493f835f028ff52092e0f6c4cd42b471024ead336b6d8a9e", "mediaType": "application/schema+json" } }, @@ -4630,11 +4830,11 @@ "description": "Registry Casework runtime configuration JSON Schema.", "source": { "path": "crates/registry-casework/src/schema.rs", - "sha256": "0e260ef7b277b4fbc67ee96a4d24f897c5ca05df5ff85a743792d7173ca677e5" + "sha256": "47d65004647fa541fef411bd213072d25a35384d5e48d03f8fdb51e5569e1bf8" }, "artifact": { "path": "products/casework/generated/runtime/runtime.schema.json", - "sha256": "6c882b720eddc7f0b3bcdb8d6229fd36bbad82c7f96586c8db99370751af9be0", + "sha256": "ef82e91c0f0c3366bd62967be8453e90920341c246a6d05f56e4b4b4b8eb85b0", "mediaType": "application/schema+json" } }, @@ -4648,11 +4848,11 @@ "description": "Registry Coordinator portable project authoring JSON Schema.", "source": { "path": "crates/registry-coordinator/src/authoring.rs", - "sha256": "a7e41c24afb242567c5a0a42b401a103a6e598426df89c9aa26e89902a5de9fb" + "sha256": "ae097b5904283e2c57ae726020a6376fe02b975391df284e67e08e5b3ddaf64c" }, "artifact": { "path": "products/coordinator/generated/project/project.schema.json", - "sha256": "c95bb112c47134d9ef0bfad1d03be54623be2a6f7ec1f9f2145f98b8622921f0", + "sha256": "472c4861ab27a301f077784e63cd06891ef4b73813aab1dd802c567daac70d16", "mediaType": "application/schema+json" } }, @@ -4666,11 +4866,11 @@ "description": "Registry Coordinator runtime configuration JSON Schema.", "source": { "path": "crates/registry-coordinator/src/runtime.rs", - "sha256": "1dd7411d02e33448098e778908bd775b3e7dec516a2c1c0f42e0aff671946911" + "sha256": "e544e9afbc39d84d18936d8ea1fffd903ebd94121db10d142394fa5d02ec5916" }, "artifact": { "path": "products/coordinator/generated/runtime/runtime.schema.json", - "sha256": "07807301acfb80f24e627e13c244aa19b30ce8f3b1b5d7f7bbd51a93b84f456f", + "sha256": "bbbc49cc6aa19d2b6329db459ac7d5c8635583e2a0ca63f2d75556840a804202", "mediaType": "application/schema+json" } }, @@ -4684,7 +4884,7 @@ "description": "Registry Coordinator deterministic scenario authoring JSON Schema.", "source": { "path": "crates/registry-coordinator/src/scenarios.rs", - "sha256": "78c0bc562ac7d32104b9b5a8818ff7a7d4c7a1ca737ab39e8f4c688cf6e14f04" + "sha256": "e20158e5382f690d46879161f32b5adda80385767b2c99b6efb11f166d43a394" }, "artifact": { "path": "products/coordinator/generated/scenarios/scenarios.schema.json", @@ -4882,11 +5082,11 @@ "description": "Evidence frozen Version 1 contract and configuration schemas, written as YAML.", "source": { "path": "products/evidence/contracts/bundle.schema.yaml", - "sha256": "97ca7f9e2c530ed09793286128b3b2a145842dce2cab235d8066790da8f746a0" + "sha256": "2847a56eda9c8b838d28fde619853c36851acc57b094b74ec2665150f1ace8d4" }, "artifact": { "path": "products/evidence/contracts/bundle.schema.yaml", - "sha256": "97ca7f9e2c530ed09793286128b3b2a145842dce2cab235d8066790da8f746a0", + "sha256": "2847a56eda9c8b838d28fde619853c36851acc57b094b74ec2665150f1ace8d4", "mediaType": "application/yaml" } }, @@ -4936,7 +5136,7 @@ "description": "Evidence code list JSON Schema.", "source": { "path": "crates/registry-evidence/src/schema.rs", - "sha256": "42c9e8cde198b83a32ac493c7723de6a97af4a4b7300a2b4c12a6dd25642ee41" + "sha256": "c598415dc0abd9f1cb985c9bda305aaf6d926ed286732ff5428bda8dc3469b79" }, "artifact": { "path": "products/evidence/generated/codelist/codelist.schema.json", @@ -4954,11 +5154,11 @@ "description": "Evidence fixture JSON Schema.", "source": { "path": "crates/registry-evidence/src/schema.rs", - "sha256": "42c9e8cde198b83a32ac493c7723de6a97af4a4b7300a2b4c12a6dd25642ee41" + "sha256": "c598415dc0abd9f1cb985c9bda305aaf6d926ed286732ff5428bda8dc3469b79" }, "artifact": { "path": "products/evidence/generated/fixture/fixture.schema.json", - "sha256": "dfd68c8242ca73530057a7b473d668b9904e5a947fceaa80badff7647f127d50", + "sha256": "912661673c41c1119a8bd83809c66cc2d38b16e171c963b4988175c74f627664", "mediaType": "application/schema+json" } }, @@ -5030,7 +5230,7 @@ }, "artifact": { "path": "crates/registry-evidencectl/schemas/authoring/project.schema.json", - "sha256": "3c8a56419f2b6a011463736e94f99c868f78636325dd8d34b3b70c0c693a65f1", + "sha256": "62c45846105e0231417e0450568a899ea05f78f41250b450353c074407cc5f26", "mediaType": "application/schema+json" } }, @@ -5044,11 +5244,11 @@ "description": "Evidence frozen Version 1 contract and configuration schemas, written as YAML.", "source": { "path": "products/evidence/contracts/runtime.schema.yaml", - "sha256": "1d1ef718bebe3d3deba5fd434579f32a05bb92e87836137e7b729f3fa4c26b4c" + "sha256": "fd4ef085ef94087f5fa6d846a284957345d5463df44372c5667ea1a8cf643d0d" }, "artifact": { "path": "products/evidence/contracts/runtime.schema.yaml", - "sha256": "1d1ef718bebe3d3deba5fd434579f32a05bb92e87836137e7b729f3fa4c26b4c", + "sha256": "fd4ef085ef94087f5fa6d846a284957345d5463df44372c5667ea1a8cf643d0d", "mediaType": "application/yaml" } }, @@ -5102,7 +5302,7 @@ }, "artifact": { "path": "crates/registry-evidencectl/schemas/authoring/target.schema.json", - "sha256": "fc7898b8be0e7ac26fd46a4624d37854f4df52eb4a372dac2e6cbc0575b3aed3", + "sha256": "bb19696ad1cf4f6c89de72d1b50da9f8897761cd15066c4281500836306ea09e", "mediaType": "application/schema+json" } }, @@ -5304,6 +5504,24 @@ "mediaType": "application/schema+json" } }, + { + "uri": "https://id.registrystack.org/schemas/platform/mcp-runtime/mcp-runtime.v1alpha1.schema.json", + "kind": "schema", + "status": "active", + "compatibilityLine": "v1alpha1", + "owner": "platform", + "title": "Registry Stack configurable MCP gateway runtime configuration", + "description": "Configurable Registry Stack MCP gateway runtime configuration JSON Schema.", + "source": { + "path": "crates/registry-mcp/src/schema.rs", + "sha256": "92b053026e128997664c3981e09347cb4d2f1bd1c34dd96f646db0b37bdb4d7c" + }, + "artifact": { + "path": "products/platform/generated/mcp-runtime/mcp-runtime.schema.json", + "sha256": "28757cb955ea96d628ff2442cc9dd7ce4f11998edada848a834ef9dfbc3c5c3e", + "mediaType": "application/schema+json" + } + }, { "uri": "https://id.registrystack.org/schemas/platform/task-connection/task-connection.v1alpha1.schema.json", "kind": "schema", @@ -5332,11 +5550,11 @@ "description": "Registry Record base response profile JSON Schema.", "source": { "path": "products/registry-record/schema/registry-record-v1.schema.json", - "sha256": "31cae7de9e84904e300d0d77ffbfdfc7a1de6127719a0ccbb3f6a88d7306510e" + "sha256": "e9ddb96d7b521da29b033353ffa854e2e003b1c952f9aad847b30ed1e3b8cf2a" }, "artifact": { "path": "products/registry-record/schema/registry-record-v1.schema.json", - "sha256": "31cae7de9e84904e300d0d77ffbfdfc7a1de6127719a0ccbb3f6a88d7306510e", + "sha256": "e9ddb96d7b521da29b033353ffa854e2e003b1c952f9aad847b30ed1e3b8cf2a", "mediaType": "application/schema+json" } }, @@ -5466,6 +5684,19 @@ "mediaType": "application/schema+json" } }, + { + "uri": "https://id.registrystack.org/vocab/breg-odrl/", + "kind": "vocabulary", + "status": "active", + "compatibilityLine": "v1", + "owner": "breg", + "title": "BReg partial read-policy vocabulary", + "description": "Experimental BReg ODRL constraint and projection terms, defined by the shipped read-policy export profile.", + "source": { + "path": "products/breg/contracts/odrl-profile.jsonld", + "sha256": "24d0950eb2c1a76d5005850e1145f675ad65df5231867907b41d11fdd2979cdc" + } + }, { "uri": "https://id.registrystack.org/vocab/registry-record/", "kind": "vocabulary", @@ -5476,7 +5707,7 @@ "description": "Vocabulary base for Registry Record v1 response-profile terms.", "source": { "path": "products/registry-record/context/registry-record-v1.jsonld", - "sha256": "9b8bf452538214d8559b4e8034446bfade37b5f409cfeaaace650a567423be71" + "sha256": "c336506f4dcd7e266155e8cd1ff9710766bc240f395e27b0480b2e193e74e2ee" } } ] diff --git a/src/upstream/source.json b/src/upstream/source.json index 6e5136d90..128b59208 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": "bae18995d0f00eba35d7b96629a56e051ac3d0df", + "commit": "e9361a89c02e6dcec0e5f199eb6dd5116eb321be", "catalog_path": "products/identifiers/generated/catalog.v1.json", - "catalog_sha256": "6069692453c446e525e7c680312db1369824bc8ec719b6404305f5b3d0a603fa" + "catalog_sha256": "e4e81cbe34aa3c76f13ee1aafb8f1144001ac8ccf08243fdea068fa57adc6f0a" }
IdentifierTitleStatus
https://id.registrystack.org/vocab/breg-odrl/BReg partial read-policy vocabularyactive
https://id.registrystack.org/vocab/core/Registry Relay core vocabularydeprecated
https://id.registrystack.org/vocab/handlingRegistry Relay handling vocabularydeprecated
https://id.registrystack.org/vocab/registry-record/Registry Record vocabularyactive